mirror of https://github.com/pallets/flask.git
fix docs build
This commit is contained in:
parent
f7e7f2ab11
commit
8b567fea23
169
docs/conf.py
169
docs/conf.py
|
@ -1,168 +1,99 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
from __future__ import print_function
|
from __future__ import print_function
|
||||||
|
|
||||||
import inspect
|
from pallets_sphinx_themes import ProjectLink, get_version
|
||||||
import re
|
|
||||||
|
|
||||||
from pallets_sphinx_themes import DocVersion, ProjectLink, get_version
|
|
||||||
|
|
||||||
# Project --------------------------------------------------------------
|
# Project --------------------------------------------------------------
|
||||||
|
|
||||||
project = 'Flask'
|
project = "Flask"
|
||||||
copyright = '2010 Pallets Team'
|
copyright = "2010 Pallets Team"
|
||||||
author = 'Pallets Team'
|
author = "Pallets Team"
|
||||||
release, version = get_version('Flask')
|
release, version = get_version("Flask")
|
||||||
|
|
||||||
# General --------------------------------------------------------------
|
# General --------------------------------------------------------------
|
||||||
|
|
||||||
master_doc = 'index'
|
master_doc = "index"
|
||||||
|
|
||||||
extensions = [
|
extensions = [
|
||||||
'sphinx.ext.autodoc',
|
"sphinx.ext.autodoc",
|
||||||
'sphinx.ext.intersphinx',
|
"sphinx.ext.intersphinx",
|
||||||
'sphinxcontrib.log_cabinet',
|
"sphinxcontrib.log_cabinet",
|
||||||
|
"pallets_sphinx_themes",
|
||||||
]
|
]
|
||||||
|
|
||||||
intersphinx_mapping = {
|
intersphinx_mapping = {
|
||||||
'python': ('https://docs.python.org/3/', None),
|
"python": ("https://docs.python.org/3/", None),
|
||||||
'werkzeug': ('http://werkzeug.pocoo.org/docs/', None),
|
"werkzeug": ("http://werkzeug.pocoo.org/docs/", None),
|
||||||
'click': ('http://click.pocoo.org/', None),
|
"click": ("https://click.palletsprojects.com/", None),
|
||||||
'jinja': ('http://jinja.pocoo.org/docs/', None),
|
"jinja": ("http://jinja.pocoo.org/docs/", None),
|
||||||
'itsdangerous': ('https://pythonhosted.org/itsdangerous', None),
|
"itsdangerous": ("https://itsdangerous.palletsprojects.com/", None),
|
||||||
'sqlalchemy': ('https://docs.sqlalchemy.org/en/latest/', None),
|
"sqlalchemy": ("https://docs.sqlalchemy.org/", None),
|
||||||
'wtforms': ('https://wtforms.readthedocs.io/en/latest/', None),
|
"wtforms": ("https://wtforms.readthedocs.io/en/stable/", None),
|
||||||
'blinker': ('https://pythonhosted.org/blinker/', None),
|
"blinker": ("https://pythonhosted.org/blinker/", None),
|
||||||
}
|
}
|
||||||
|
|
||||||
# HTML -----------------------------------------------------------------
|
# HTML -----------------------------------------------------------------
|
||||||
|
|
||||||
html_theme = 'flask'
|
html_theme = "flask"
|
||||||
|
html_theme_options = {"index_sidebar_logo": False}
|
||||||
html_context = {
|
html_context = {
|
||||||
'project_links': [
|
"project_links": [
|
||||||
ProjectLink('Donate to Pallets', 'https://psfmember.org/civicrm/contribute/transact?reset=1&id=20'),
|
ProjectLink("Donate to Pallets", "https://palletsprojects.com/donate"),
|
||||||
ProjectLink('Flask Website', 'https://palletsprojects.com/p/flask/'),
|
ProjectLink("Flask Website", "https://palletsprojects.com/p/flask/"),
|
||||||
ProjectLink('PyPI releases', 'https://pypi.org/project/Flask/'),
|
ProjectLink("PyPI releases", "https://pypi.org/project/Flask/"),
|
||||||
ProjectLink('Source Code', 'https://github.com/pallets/flask/'),
|
ProjectLink("Source Code", "https://github.com/pallets/flask/"),
|
||||||
ProjectLink(
|
ProjectLink("Issue Tracker", "https://github.com/pallets/flask/issues/"),
|
||||||
'Issue Tracker', 'https://github.com/pallets/flask/issues/'),
|
|
||||||
],
|
|
||||||
'versions': [
|
|
||||||
DocVersion('dev', 'Development', 'unstable'),
|
|
||||||
DocVersion('1.0', 'Flask 1.0', 'stable'),
|
|
||||||
DocVersion('0.12', 'Flask 0.12'),
|
|
||||||
],
|
|
||||||
'canonical_url': 'http://flask.pocoo.org/docs/{}/'.format(version),
|
|
||||||
'carbon_ads_args': 'zoneid=1673&serve=C6AILKT&placement=pocooorg',
|
|
||||||
}
|
|
||||||
html_sidebars = {
|
|
||||||
'index': [
|
|
||||||
'project.html',
|
|
||||||
'versions.html',
|
|
||||||
'carbon_ads.html',
|
|
||||||
'searchbox.html',
|
|
||||||
],
|
|
||||||
'**': [
|
|
||||||
'localtoc.html',
|
|
||||||
'relations.html',
|
|
||||||
'versions.html',
|
|
||||||
'carbon_ads.html',
|
|
||||||
'searchbox.html',
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
html_static_path = ['_static']
|
html_sidebars = {
|
||||||
html_favicon = '_static/flask-favicon.ico'
|
"index": ["project.html", "localtoc.html", "searchbox.html"],
|
||||||
html_logo = '_static/flask.png'
|
"**": ["localtoc.html", "relations.html", "searchbox.html"],
|
||||||
html_additional_pages = {
|
|
||||||
'404': '404.html',
|
|
||||||
}
|
}
|
||||||
|
singlehtml_sidebars = {"index": ["project.html", "localtoc.html"]}
|
||||||
|
html_static_path = ["_static"]
|
||||||
|
html_favicon = "_static/flask-favicon.ico"
|
||||||
|
html_logo = "_static/flask.png"
|
||||||
|
html_title = "Flask Documentation ({})".format(version)
|
||||||
html_show_sourcelink = False
|
html_show_sourcelink = False
|
||||||
|
|
||||||
# LaTeX ----------------------------------------------------------------
|
# LaTeX ----------------------------------------------------------------
|
||||||
|
|
||||||
latex_documents = [
|
latex_documents = [
|
||||||
(master_doc, 'Flask.tex', 'Flask Documentation', 'Pallets Team', 'manual'),
|
(master_doc, "Flask.tex", "Flask Documentation", "Pallets Team", "manual")
|
||||||
]
|
]
|
||||||
latex_use_modindex = False
|
latex_use_modindex = False
|
||||||
latex_elements = {
|
latex_elements = {
|
||||||
'papersize': 'a4paper',
|
"papersize": "a4paper",
|
||||||
'pointsize': '12pt',
|
"pointsize": "12pt",
|
||||||
'fontpkg': r'\usepackage{mathpazo}',
|
"fontpkg": r"\usepackage{mathpazo}",
|
||||||
'preamble': r'\usepackage{flaskstyle}',
|
"preamble": r"\usepackage{flaskstyle}",
|
||||||
}
|
}
|
||||||
latex_use_parts = True
|
latex_use_parts = True
|
||||||
latex_additional_files = ['flaskstyle.sty', 'logo.pdf']
|
latex_additional_files = ["flaskstyle.sty", "logo.pdf"]
|
||||||
|
|
||||||
# linkcheck ------------------------------------------------------------
|
|
||||||
|
|
||||||
linkcheck_anchors = False
|
|
||||||
|
|
||||||
# Local Extensions -----------------------------------------------------
|
# Local Extensions -----------------------------------------------------
|
||||||
|
|
||||||
def unwrap_decorators():
|
|
||||||
import sphinx.util.inspect as inspect
|
|
||||||
import functools
|
|
||||||
|
|
||||||
old_getargspec = inspect.getargspec
|
def github_link(name, rawtext, text, lineno, inliner, options=None, content=None):
|
||||||
def getargspec(x):
|
|
||||||
return old_getargspec(getattr(x, '_original_function', x))
|
|
||||||
inspect.getargspec = getargspec
|
|
||||||
|
|
||||||
old_update_wrapper = functools.update_wrapper
|
|
||||||
def update_wrapper(wrapper, wrapped, *a, **kw):
|
|
||||||
rv = old_update_wrapper(wrapper, wrapped, *a, **kw)
|
|
||||||
rv._original_function = wrapped
|
|
||||||
return rv
|
|
||||||
functools.update_wrapper = update_wrapper
|
|
||||||
|
|
||||||
|
|
||||||
unwrap_decorators()
|
|
||||||
del unwrap_decorators
|
|
||||||
|
|
||||||
|
|
||||||
_internal_mark_re = re.compile(r'^\s*:internal:\s*$(?m)', re.M)
|
|
||||||
|
|
||||||
|
|
||||||
def skip_internal(app, what, name, obj, skip, options):
|
|
||||||
docstring = inspect.getdoc(obj) or ''
|
|
||||||
|
|
||||||
if skip or _internal_mark_re.search(docstring) is not None:
|
|
||||||
return True
|
|
||||||
|
|
||||||
|
|
||||||
def cut_module_meta(app, what, name, obj, options, lines):
|
|
||||||
"""Remove metadata from autodoc output."""
|
|
||||||
if what != 'module':
|
|
||||||
return
|
|
||||||
|
|
||||||
lines[:] = [
|
|
||||||
line for line in lines
|
|
||||||
if not line.startswith((':copyright:', ':license:'))
|
|
||||||
]
|
|
||||||
|
|
||||||
|
|
||||||
def github_link(
|
|
||||||
name, rawtext, text, lineno, inliner, options=None, content=None
|
|
||||||
):
|
|
||||||
app = inliner.document.settings.env.app
|
app = inliner.document.settings.env.app
|
||||||
release = app.config.release
|
release = app.config.release
|
||||||
base_url = 'https://github.com/pallets/flask/tree/'
|
base_url = "https://github.com/pallets/flask/tree/"
|
||||||
|
|
||||||
if text.endswith('>'):
|
if text.endswith(">"):
|
||||||
words, text = text[:-1].rsplit('<', 1)
|
words, text = text[:-1].rsplit("<", 1)
|
||||||
words = words.strip()
|
words = words.strip()
|
||||||
else:
|
else:
|
||||||
words = None
|
words = None
|
||||||
|
|
||||||
if release.endswith('dev'):
|
if release.endswith("dev"):
|
||||||
url = '{0}master/{1}'.format(base_url, text)
|
url = "{0}master/{1}".format(base_url, text)
|
||||||
else:
|
else:
|
||||||
url = '{0}{1}/{2}'.format(base_url, release, text)
|
url = "{0}{1}/{2}".format(base_url, release, text)
|
||||||
|
|
||||||
if words is None:
|
if words is None:
|
||||||
words = url
|
words = url
|
||||||
|
|
||||||
from docutils.nodes import reference
|
from docutils.nodes import reference
|
||||||
from docutils.parsers.rst.roles import set_classes
|
from docutils.parsers.rst.roles import set_classes
|
||||||
|
|
||||||
options = options or {}
|
options = options or {}
|
||||||
set_classes(options)
|
set_classes(options)
|
||||||
node = reference(rawtext, words, refuri=url, **options)
|
node = reference(rawtext, words, refuri=url, **options)
|
||||||
|
@ -170,6 +101,4 @@ def github_link(
|
||||||
|
|
||||||
|
|
||||||
def setup(app):
|
def setup(app):
|
||||||
app.connect('autodoc-skip-member', skip_internal)
|
app.add_role("gh", github_link)
|
||||||
app.connect('autodoc-process-docstring', cut_module_meta)
|
|
||||||
app.add_role('gh', github_link)
|
|
||||||
|
|
|
@ -1,11 +1,12 @@
|
||||||
:orphan:
|
.. rst-class:: hide-header
|
||||||
|
|
||||||
Welcome to Flask
|
Welcome to Flask
|
||||||
================
|
================
|
||||||
|
|
||||||
.. image:: _static/logo-full.png
|
.. image:: _static/logo-full.png
|
||||||
:alt: Flask: web development, one drop at a time
|
:alt: Flask: web development, one drop at a time
|
||||||
:align: right
|
:align: center
|
||||||
|
:target: https://palletsprojects.com/p/flask/
|
||||||
|
|
||||||
Welcome to Flask's documentation. Get started with :ref:`installation`
|
Welcome to Flask's documentation. Get started with :ref:`installation`
|
||||||
and then get an overview with the :ref:`quickstart`. There is also a
|
and then get an overview with the :ref:`quickstart`. There is also a
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
Sphinx~=1.8.0
|
||||||
|
Pallets-Sphinx-Themes~=1.1.0
|
||||||
|
sphinxcontrib-log-cabinet~=1.0.0
|
11
tox.ini
11
tox.ini
|
@ -39,18 +39,9 @@ commands =
|
||||||
|
|
||||||
[testenv:docs-html]
|
[testenv:docs-html]
|
||||||
deps =
|
deps =
|
||||||
sphinx
|
-r docs/requirements.txt
|
||||||
pallets-sphinx-themes
|
|
||||||
sphinxcontrib-log-cabinet
|
|
||||||
commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs {envtmpdir}/html
|
commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs {envtmpdir}/html
|
||||||
|
|
||||||
[testenv:docs-linkcheck]
|
|
||||||
deps =
|
|
||||||
sphinx
|
|
||||||
pallets-sphinx-themes
|
|
||||||
sphinxcontrib-log-cabinet
|
|
||||||
commands = sphinx-build -W -b linkcheck -d {envtmpdir}/doctrees docs {envtmpdir}/linkcheck
|
|
||||||
|
|
||||||
[testenv:coverage-report]
|
[testenv:coverage-report]
|
||||||
deps = coverage
|
deps = coverage
|
||||||
skip_install = true
|
skip_install = true
|
||||||
|
|
Loading…
Reference in New Issue