|
|
|
@ -1,164 +1,100 @@
|
|
|
|
|
# -*- coding: utf-8 -*- |
|
|
|
|
from __future__ import print_function |
|
|
|
|
|
|
|
|
|
import inspect |
|
|
|
|
import re |
|
|
|
|
|
|
|
|
|
from pallets_sphinx_themes import ProjectLink, get_version |
|
|
|
|
from pallets_sphinx_themes import get_version |
|
|
|
|
from pallets_sphinx_themes import ProjectLink |
|
|
|
|
|
|
|
|
|
# Project -------------------------------------------------------------- |
|
|
|
|
|
|
|
|
|
project = 'Flask' |
|
|
|
|
copyright = '2010 Pallets Team' |
|
|
|
|
author = 'Pallets Team' |
|
|
|
|
release, version = get_version('Flask') |
|
|
|
|
project = "Flask" |
|
|
|
|
copyright = "2010 Pallets Team" |
|
|
|
|
author = "Pallets Team" |
|
|
|
|
release, version = get_version("Flask") |
|
|
|
|
|
|
|
|
|
# General -------------------------------------------------------------- |
|
|
|
|
|
|
|
|
|
master_doc = 'index' |
|
|
|
|
|
|
|
|
|
master_doc = "index" |
|
|
|
|
extensions = [ |
|
|
|
|
'sphinx.ext.autodoc', |
|
|
|
|
'sphinx.ext.intersphinx', |
|
|
|
|
'sphinxcontrib.log_cabinet', |
|
|
|
|
'pallets_sphinx_themes', |
|
|
|
|
"sphinx.ext.autodoc", |
|
|
|
|
"sphinx.ext.intersphinx", |
|
|
|
|
"sphinxcontrib.log_cabinet", |
|
|
|
|
"pallets_sphinx_themes", |
|
|
|
|
] |
|
|
|
|
|
|
|
|
|
intersphinx_mapping = { |
|
|
|
|
'python': ('https://docs.python.org/3/', None), |
|
|
|
|
'werkzeug': ('http://werkzeug.pocoo.org/docs/', None), |
|
|
|
|
'click': ('http://click.pocoo.org/', None), |
|
|
|
|
'jinja': ('http://jinja.pocoo.org/docs/', None), |
|
|
|
|
'itsdangerous': ('https://pythonhosted.org/itsdangerous', None), |
|
|
|
|
'sqlalchemy': ('https://docs.sqlalchemy.org/en/latest/', None), |
|
|
|
|
'wtforms': ('https://wtforms.readthedocs.io/en/latest/', None), |
|
|
|
|
'blinker': ('https://pythonhosted.org/blinker/', None), |
|
|
|
|
"python": ("https://docs.python.org/3/", None), |
|
|
|
|
"werkzeug": ("http://werkzeug.pocoo.org/docs/", None), |
|
|
|
|
"click": ("http://click.pocoo.org/", None), |
|
|
|
|
"jinja": ("http://jinja.pocoo.org/docs/", None), |
|
|
|
|
"itsdangerous": ("https://pythonhosted.org/itsdangerous", None), |
|
|
|
|
"sqlalchemy": ("https://docs.sqlalchemy.org/en/latest/", None), |
|
|
|
|
"wtforms": ("https://wtforms.readthedocs.io/en/latest/", None), |
|
|
|
|
"blinker": ("https://pythonhosted.org/blinker/", None), |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
# HTML ----------------------------------------------------------------- |
|
|
|
|
|
|
|
|
|
html_theme = 'flask' |
|
|
|
|
html_theme = "flask" |
|
|
|
|
html_theme_options = {"index_sidebar_logo": False} |
|
|
|
|
html_context = { |
|
|
|
|
'project_links': [ |
|
|
|
|
ProjectLink('Donate to Pallets', 'https://psfmember.org/civicrm/contribute/transact?reset=1&id=20'), |
|
|
|
|
ProjectLink('Flask Website', 'https://palletsprojects.com/p/flask/'), |
|
|
|
|
ProjectLink('PyPI releases', 'https://pypi.org/project/Flask/'), |
|
|
|
|
ProjectLink('Source Code', 'https://github.com/pallets/flask/'), |
|
|
|
|
ProjectLink( |
|
|
|
|
'Issue Tracker', 'https://github.com/pallets/flask/issues/'), |
|
|
|
|
], |
|
|
|
|
'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', |
|
|
|
|
"project_links": [ |
|
|
|
|
ProjectLink("Donate to Pallets", "https://palletsprojects.com/donate"), |
|
|
|
|
ProjectLink("Flask Website", "https://palletsprojects.com/p/flask/"), |
|
|
|
|
ProjectLink("PyPI releases", "https://pypi.org/project/Flask/"), |
|
|
|
|
ProjectLink("Source Code", "https://github.com/pallets/flask/"), |
|
|
|
|
ProjectLink("Issue Tracker", "https://github.com/pallets/flask/issues/"), |
|
|
|
|
] |
|
|
|
|
} |
|
|
|
|
html_static_path = ['_static'] |
|
|
|
|
html_favicon = '_static/flask-favicon.ico' |
|
|
|
|
html_logo = '_static/flask.png' |
|
|
|
|
html_additional_pages = { |
|
|
|
|
'404': '404.html', |
|
|
|
|
html_sidebars = { |
|
|
|
|
"index": ["project.html", "localtoc.html", "versions.html", "searchbox.html"], |
|
|
|
|
"**": ["localtoc.html", "relations.html", "versions.html", "searchbox.html"], |
|
|
|
|
} |
|
|
|
|
singlehtml_sidebars = {"index": ["project.html", "versions.html", "localtoc.html"]} |
|
|
|
|
html_static_path = ["_static"] |
|
|
|
|
html_favicon = "_static/flask-icon.png" |
|
|
|
|
html_logo = "_static/flask-logo-sidebar.png" |
|
|
|
|
html_title = "Flask Documentation ({})".format(version) |
|
|
|
|
html_show_sourcelink = False |
|
|
|
|
html_domain_indices = False |
|
|
|
|
|
|
|
|
|
# LaTeX ---------------------------------------------------------------- |
|
|
|
|
|
|
|
|
|
latex_documents = [ |
|
|
|
|
(master_doc, 'Flask.tex', 'Flask Documentation', 'Pallets Team', 'manual'), |
|
|
|
|
(master_doc, "Flask-{}.tex".format(version), html_title, author, "manual") |
|
|
|
|
] |
|
|
|
|
latex_use_modindex = False |
|
|
|
|
latex_elements = { |
|
|
|
|
'papersize': 'a4paper', |
|
|
|
|
'pointsize': '12pt', |
|
|
|
|
'fontpkg': r'\usepackage{mathpazo}', |
|
|
|
|
'preamble': r'\usepackage{flaskstyle}', |
|
|
|
|
"papersize": "a4paper", |
|
|
|
|
"pointsize": "12pt", |
|
|
|
|
"fontpkg": r"\usepackage{mathpazo}", |
|
|
|
|
"preamble": r"\usepackage{flaskstyle}", |
|
|
|
|
} |
|
|
|
|
latex_use_parts = True |
|
|
|
|
latex_additional_files = ['flaskstyle.sty', 'logo.pdf'] |
|
|
|
|
|
|
|
|
|
# linkcheck ------------------------------------------------------------ |
|
|
|
|
|
|
|
|
|
linkcheck_anchors = False |
|
|
|
|
latex_additional_files = ["flaskstyle.sty", "logo.pdf"] |
|
|
|
|
|
|
|
|
|
# Local Extensions ----------------------------------------------------- |
|
|
|
|
|
|
|
|
|
def unwrap_decorators(): |
|
|
|
|
import sphinx.util.inspect as inspect |
|
|
|
|
import functools |
|
|
|
|
|
|
|
|
|
old_getargspec = inspect.getargspec |
|
|
|
|
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 |
|
|
|
|
): |
|
|
|
|
def github_link(name, rawtext, text, lineno, inliner, options=None, content=None): |
|
|
|
|
app = inliner.document.settings.env.app |
|
|
|
|
release = app.config.release |
|
|
|
|
base_url = 'https://github.com/pallets/flask/tree/' |
|
|
|
|
base_url = "https://github.com/pallets/flask/tree/" |
|
|
|
|
|
|
|
|
|
if text.endswith('>'): |
|
|
|
|
words, text = text[:-1].rsplit('<', 1) |
|
|
|
|
if text.endswith(">"): |
|
|
|
|
words, text = text[:-1].rsplit("<", 1) |
|
|
|
|
words = words.strip() |
|
|
|
|
else: |
|
|
|
|
words = None |
|
|
|
|
|
|
|
|
|
if release.endswith('dev'): |
|
|
|
|
url = '{0}master/{1}'.format(base_url, text) |
|
|
|
|
if release.endswith("dev"): |
|
|
|
|
url = "{0}master/{1}".format(base_url, text) |
|
|
|
|
else: |
|
|
|
|
url = '{0}{1}/{2}'.format(base_url, release, text) |
|
|
|
|
url = "{0}{1}/{2}".format(base_url, release, text) |
|
|
|
|
|
|
|
|
|
if words is None: |
|
|
|
|
words = url |
|
|
|
|
|
|
|
|
|
from docutils.nodes import reference |
|
|
|
|
from docutils.parsers.rst.roles import set_classes |
|
|
|
|
|
|
|
|
|
options = options or {} |
|
|
|
|
set_classes(options) |
|
|
|
|
node = reference(rawtext, words, refuri=url, **options) |
|
|
|
@ -166,6 +102,4 @@ def github_link(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def setup(app): |
|
|
|
|
app.connect('autodoc-skip-member', skip_internal) |
|
|
|
|
app.connect('autodoc-process-docstring', cut_module_meta) |
|
|
|
|
app.add_role('gh', github_link) |
|
|
|
|
app.add_role("gh", github_link) |
|
|
|
|