[Python-checkins] devguide: Issue #23951: remove devguide_theme_revised.patch
victor.stinner
python-checkins at python.org
Wed Jul 20 18:59:21 EDT 2016
https://hg.python.org/devguide/rev/7d8f988522ed
changeset: 819:7d8f988522ed
user: Victor Stinner <victor.stinner at gmail.com>
date: Thu Jul 21 00:59:02 2016 +0200
summary:
Issue #23951: remove devguide_theme_revised.patch
File pushed by mistake.
files:
devguide_theme_revised.patch | 875 -----------------------
1 files changed, 0 insertions(+), 875 deletions(-)
diff --git a/devguide_theme_revised.patch b/devguide_theme_revised.patch
deleted file mode 100644
--- a/devguide_theme_revised.patch
+++ /dev/null
@@ -1,875 +0,0 @@
-diff -r 128b45caba5b Makefile
---- a/Makefile Sun Jun 26 09:01:18 2016 +0300
-+++ b/Makefile Tue Jul 19 22:05:55 2016 -0700
-@@ -32,6 +32,7 @@
- @echo " changes to make an overview of all changed/added/deprecated items"
- @echo " linkcheck to check all external links for integrity"
- @echo " doctest to run all doctests embedded in the documentation (if enabled)"
-+ @echo " check to run a check for frequent markup errors"
-
- clean:
- -rm -rf $(BUILDDIR)/*
-@@ -128,3 +129,6 @@
- $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
- @echo "Testing of doctests in the sources finished, look at the " \
- "results in $(BUILDDIR)/doctest/output.txt."
-+
-+check:
-+ $(PYTHON) tools/rstlint.py -i tools -i venv
-diff -r 128b45caba5b conf.py
---- a/conf.py Sun Jun 26 09:01:18 2016 +0300
-+++ b/conf.py Tue Jul 19 22:05:55 2016 -0700
-@@ -20,6 +20,8 @@
- # documentation root, use os.path.abspath to make it absolute, like shown here.
- #sys.path.insert(0, os.path.abspath('.'))
-
-+sys.path.append(os.path.abspath('tools'))
-+
- # -- General configuration -----------------------------------------------------
-
- # If your documentation needs a minimal Sphinx version, state it here.
-@@ -93,22 +95,28 @@
-
- # -- 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 = 'nature'
-+# Use our custom theme. Previously used builtin 'nature' theme.
-+#html_theme = 'nature'
-+html_theme = 'pydoctheme'
-+html_theme_path = ['tools']
-+html_theme_options = {'collapsiblesidebar': True}
-
--# Theme options are theme-specific and customize the look and feel of a theme
--# further. For a list of options available for each theme, see the
--# documentation.
--#html_theme_options = {}
--
--# Add any paths that contain custom themes here, relative to this directory.
--#html_theme_path = []
-
- # The name for this set of Sphinx documents. If None, it defaults to
- # "<project> v<release> documentation".
- html_title = "%s %s" % (project, release)
-
-+# Path to find HTML templates.
-+templates_path = ['tools/templates']
-+
-+# Custom sidebar templates, filenames relative to this file.
-+#html_sidebars = {
-+# 'index': 'indexsidebar.html',
-+#}
-+
-+# Additional static files.
-+html_static_path = ['tools/static']
-+
- # A shorter title for the navigation bar. Default is the same as html_title.
- #html_short_title = None
-
-diff -r 128b45caba5b make.bat
---- a/make.bat Sun Jun 26 09:01:18 2016 +0300
-+++ b/make.bat Tue Jul 19 22:05:55 2016 -0700
-@@ -12,6 +12,7 @@
- )
-
- if "%1" == "" goto help
-+if "%1" == "check" goto check
-
- if "%1" == "help" (
- :help
-@@ -31,6 +32,7 @@
- echo. changes to make an overview over all changed/added/deprecated items
- echo. linkcheck to check all external links for integrity
- echo. doctest to run all doctests embedded in the documentation if enabled
-+ echo. check
- goto end
- )
-
-@@ -167,4 +169,17 @@
- goto end
- )
-
-+if "%1" == "rstlint" (
-+ %SPHINXBUILD% -b rstlint %ALLSPHINXOPTS% %BUILDDIR%/rstlint
-+ if errorlevel 1 exit /b 1
-+ echo.
-+ echo.Testing of rst and py files in the documentation finished, look at the ^
-+results in %BUILDDIR%/rstlint/output.txt.
-+ goto end
-+)
-+
-+:check
-+cmd /C %PYTHON% tools\rstlint.py -i tools
-+goto end
-+
- :end
-diff -r 128b45caba5b tools/pydoctheme/static/pydoctheme.css
---- /dev/null Thu Jan 01 00:00:00 1970 +0000
-+++ b/tools/pydoctheme/static/pydoctheme.css Tue Jul 19 22:05:55 2016 -0700
-@@ -0,0 +1,189 @@
-+ at import url("default.css");
-+
-+body {
-+ background-color: white;
-+ margin-left: 16px;
-+ margin-right: 16px;
-+}
-+
-+div.related {
-+ margin-bottom: 1.2em;
-+ line-height: 32px;
-+ color: #fff;
-+ text-shadow: 0px 1px 0 #444;
-+ font-size: 0.9em;
-+ background-color: #6BA81E;
-+}
-+
-+div.related a {
-+ color: #fff;
-+}
-+
-+div.related a:hover {
-+ color: #0095C4;
-+}
-+
-+div.related:first-child {
-+ border-top: 0;
-+ border-bottom: 1px solid #ccc;
-+}
-+
-+div.sphinxsidebar {
-+ background-color: #eeeeee;
-+ border-radius: 5px;
-+ line-height: 130%;
-+ font-size: smaller;
-+}
-+
-+div.sphinxsidebar h3, div.sphinxsidebar h4 {
-+ margin-top: 1.5em;
-+}
-+
-+div.sphinxsidebarwrapper > h3:first-child {
-+ margin-top: 0.2em;
-+}
-+
-+div.sphinxsidebarwrapper > ul > li > ul > li {
-+ margin-bottom: 0.4em;
-+}
-+
-+div.sphinxsidebar a:hover {
-+ color: #0095C4;
-+}
-+
-+div.sphinxsidebar input {
-+ font-family: 'Lucida Grande',Arial,sans-serif;
-+ border: 1px solid #999999;
-+ font-size: smaller;
-+ border-radius: 3px;
-+}
-+
-+div.sphinxsidebar input[type=text] {
-+ max-width: 150px;
-+}
-+
-+div.body {
-+ padding: 0 0 0 1.2em;
-+}
-+
-+div.body p {
-+ line-height: 140%;
-+}
-+
-+div.body h1, div.body h2, div.body h3, div.body h4, div.body h5, div.body h6 {
-+ margin: 0;
-+ border: 0;
-+ padding: 0.3em 0;
-+}
-+
-+div.body hr {
-+ border: 0;
-+ background-color: #ccc;
-+ height: 1px;
-+}
-+
-+div.body pre {
-+ border-radius: 3px;
-+ border: 1px solid #ac9;
-+}
-+
-+div.body div.admonition, div.body div.impl-detail {
-+ border-radius: 3px;
-+}
-+
-+div.body div.impl-detail > p {
-+ margin: 0;
-+}
-+
-+div.body div.seealso {
-+ border: 1px solid #dddd66;
-+}
-+
-+div.body a {
-+ color: #0072aa;
-+}
-+
-+div.body a:visited {
-+ color: #6363bb;
-+}
-+
-+div.body a:hover {
-+ color: #00B0E4;
-+}
-+
-+tt, code, pre {
-+ font-family: monospace, sans-serif;
-+ font-size: 96.5%;
-+}
-+
-+div.body tt, div.body code {
-+ border-radius: 3px;
-+}
-+
-+div.body tt.descname, div.body code.descname {
-+ font-size: 120%;
-+}
-+
-+div.body tt.xref, div.body a tt, div.body code.xref, div.body a code {
-+ font-weight: normal;
-+}
-+
-+.deprecated {
-+ border-radius: 3px;
-+}
-+
-+table.docutils {
-+ border: 1px solid #ddd;
-+ min-width: 20%;
-+ border-radius: 3px;
-+ margin-top: 10px;
-+ margin-bottom: 10px;
-+}
-+
-+table.docutils td, table.docutils th {
-+ border: 1px solid #ddd !important;
-+ border-radius: 3px;
-+}
-+
-+table p, table li {
-+ text-align: left !important;
-+}
-+
-+table.docutils th {
-+ background-color: #eee;
-+ padding: 0.3em 0.5em;
-+}
-+
-+table.docutils td {
-+ background-color: white;
-+ padding: 0.3em 0.5em;
-+}
-+
-+table.footnote, table.footnote td {
-+ border: 0 !important;
-+}
-+
-+div.footer {
-+ line-height: 150%;
-+ margin-top: -2em;
-+ text-align: right;
-+ width: auto;
-+ margin-right: 10px;
-+}
-+
-+div.footer a:hover {
-+ color: #0095C4;
-+}
-+
-+.refcount {
-+ color: #060;
-+}
-+
-+.stableabi {
-+ color: #229;
-+}
-+
-+.highlight {
-+ background: none !important;
-+}
-+
-diff -r 128b45caba5b tools/pydoctheme/theme.conf
---- /dev/null Thu Jan 01 00:00:00 1970 +0000
-+++ b/tools/pydoctheme/theme.conf Tue Jul 19 22:05:55 2016 -0700
-@@ -0,0 +1,23 @@
-+[theme]
-+inherit = default
-+stylesheet = pydoctheme.css
-+pygments_style = sphinx
-+
-+[options]
-+bodyfont = 'Lucida Grande', Arial, sans-serif
-+headfont = 'Lucida Grande', Arial, sans-serif
-+footerbgcolor = white
-+footertextcolor = #555555
-+relbarbgcolor = white
-+relbartextcolor = #666666
-+relbarlinkcolor = #444444
-+sidebarbgcolor = white
-+sidebartextcolor = #444444
-+sidebarlinkcolor = #444444
-+bgcolor = white
-+textcolor = #222222
-+linkcolor = #0090c0
-+visitedlinkcolor = #00608f
-+headtextcolor = #1a1a1a
-+headbgcolor = white
-+headlinkcolor = #aaaaaa
-diff -r 128b45caba5b tools/rstlint.py
---- /dev/null Thu Jan 01 00:00:00 1970 +0000
-+++ b/tools/rstlint.py Tue Jul 19 22:05:55 2016 -0700
-@@ -0,0 +1,230 @@
-+#!/usr/bin/env python3
-+# -*- coding: utf-8 -*-
-+
-+# Check for stylistic and formal issues in .rst and .py
-+# files included in the documentation.
-+#
-+# 01/2009, Georg Brandl
-+
-+# TODO: - wrong versions in versionadded/changed
-+# - wrong markup after versionchanged directive
-+
-+from __future__ import with_statement
-+
-+import os
-+import re
-+import sys
-+import getopt
-+from os.path import join, splitext, abspath, exists
-+from collections import defaultdict
-+
-+directives = [
-+ # standard docutils ones
-+ 'admonition', 'attention', 'caution', 'class', 'compound', 'container',
-+ 'contents', 'csv-table', 'danger', 'date', 'default-role', 'epigraph',
-+ 'error', 'figure', 'footer', 'header', 'highlights', 'hint', 'image',
-+ 'important', 'include', 'line-block', 'list-table', 'meta', 'note',
-+ 'parsed-literal', 'pull-quote', 'raw', 'replace',
-+ 'restructuredtext-test-directive', 'role', 'rubric', 'sectnum', 'sidebar',
-+ 'table', 'target-notes', 'tip', 'title', 'topic', 'unicode', 'warning',
-+ # Sphinx and Python docs custom ones
-+ 'acks', 'attribute', 'autoattribute', 'autoclass', 'autodata',
-+ 'autoexception', 'autofunction', 'automethod', 'automodule', 'centered',
-+ 'cfunction', 'class', 'classmethod', 'cmacro', 'cmdoption', 'cmember',
-+ 'code-block', 'confval', 'cssclass', 'ctype', 'currentmodule', 'cvar',
-+ 'data', 'decorator', 'decoratormethod', 'deprecated-removed',
-+ 'deprecated(?!-removed)', 'describe', 'directive', 'doctest', 'envvar',
-+ 'event', 'exception', 'function', 'glossary', 'highlight', 'highlightlang',
-+ 'impl-detail', 'index', 'literalinclude', 'method', 'miscnews', 'module',
-+ 'moduleauthor', 'opcode', 'pdbcommand', 'productionlist',
-+ 'program', 'role', 'sectionauthor', 'seealso', 'sourcecode', 'staticmethod',
-+ 'tabularcolumns', 'testcode', 'testoutput', 'testsetup', 'toctree', 'todo',
-+ 'todolist', 'versionadded', 'versionchanged'
-+]
-+
-+all_directives = '(' + '|'.join(directives) + ')'
-+seems_directive_re = re.compile(r'(?<!\.)\.\. %s([^a-z:]|:(?!:))' % all_directives)
-+default_role_re = re.compile(r'(^| )`\w([^`]*?\w)?`($| )')
-+leaked_markup_re = re.compile(r'[a-z]::\s|`|\.\.\s*\w+:')
-+
-+
-+checkers = {}
-+
-+checker_props = {'severity': 1, 'falsepositives': False}
-+
-+
-+def checker(*suffixes, **kwds):
-+ """Decorator to register a function as a checker."""
-+ def deco(func):
-+ for suffix in suffixes:
-+ checkers.setdefault(suffix, []).append(func)
-+ for prop in checker_props:
-+ setattr(func, prop, kwds.get(prop, checker_props[prop]))
-+ return func
-+ return deco
-+
-+
-+ at checker('.py', severity=4)
-+def check_syntax(fn, lines):
-+ """Check Python examples for valid syntax."""
-+ code = ''.join(lines)
-+ if '\r' in code:
-+ if os.name != 'nt':
-+ yield 0, '\\r in code file'
-+ code = code.replace('\r', '')
-+ try:
-+ compile(code, fn, 'exec')
-+ except SyntaxError as err:
-+ yield err.lineno, 'not compilable: %s' % err
-+
-+
-+ at checker('.rst', severity=2)
-+def check_suspicious_constructs(fn, lines):
-+ """Check for suspicious reST constructs."""
-+ inprod = False
-+ for lno, line in enumerate(lines):
-+ if seems_directive_re.search(line):
-+ yield lno+1, 'comment seems to be intended as a directive'
-+ if '.. productionlist::' in line:
-+ inprod = True
-+ elif not inprod and default_role_re.search(line):
-+ yield lno+1, 'default role used'
-+ elif inprod and not line.strip():
-+ inprod = False
-+
-+
-+ at checker('.py', '.rst')
-+def check_whitespace(fn, lines):
-+ """Check for whitespace and line length issues."""
-+ for lno, line in enumerate(lines):
-+ if '\r' in line:
-+ yield lno+1, '\\r in line'
-+ if '\t' in line:
-+ yield lno+1, 'OMG TABS!!!1'
-+ if line[:-1].rstrip(' \t') != line[:-1]:
-+ yield lno+1, 'trailing whitespace'
-+
-+
-+ at checker('.rst', severity=0)
-+def check_line_length(fn, lines):
-+ """Check for line length; this checker is not run by default."""
-+ for lno, line in enumerate(lines):
-+ if len(line) > 81:
-+ # don't complain about tables, links and function signatures
-+ if line.lstrip()[0] not in '+|' and \
-+ 'http://' not in line and \
-+ not line.lstrip().startswith(('.. function',
-+ '.. method',
-+ '.. cfunction')):
-+ yield lno+1, "line too long"
-+
-+
-+ at checker('.html', severity=2, falsepositives=True)
-+def check_leaked_markup(fn, lines):
-+ """Check HTML files for leaked reST markup; this only works if
-+ the HTML files have been built.
-+ """
-+ for lno, line in enumerate(lines):
-+ if leaked_markup_re.search(line):
-+ yield lno+1, 'possibly leaked markup: %r' % line
-+
-+
-+def main(argv):
-+ usage = '''\
-+Usage: %s [-v] [-f] [-s sev] [-i path]* [path]
-+
-+Options: -v verbose (print all checked file names)
-+ -f enable checkers that yield many false positives
-+ -s sev only show problems with severity >= sev
-+ -i path ignore subdir or file path
-+'''% argv[0]
-+ try:
-+ gopts, args = getopt.getopt(argv[1:], 'vfs:i:')
-+ except getopt.GetoptError:
-+ print(usage)
-+ return 2
-+
-+ verbose = False
-+ severity = 1
-+ ignore = []
-+ falsepos = False
-+ for opt, val in gopts:
-+ if opt == '-v':
-+ verbose = True
-+ elif opt == '-f':
-+ falsepos = True
-+ elif opt == '-s':
-+ severity = int(val)
-+ elif opt == '-i':
-+ ignore.append(abspath(val))
-+
-+ if len(args) == 0:
-+ path = '.'
-+ elif len(args) == 1:
-+ path = args[0]
-+ else:
-+ print(usage)
-+ return 2
-+
-+ if not exists(path):
-+ print('Error: path %s does not exist' % path)
-+ return 2
-+
-+ count = defaultdict(int)
-+
-+ for root, dirs, files in os.walk(path):
-+ # ignore subdirs in ignore list
-+ if abspath(root) in ignore:
-+ del dirs[:]
-+ continue
-+
-+ for fn in files:
-+ fn = join(root, fn)
-+ if fn[:2] == './':
-+ fn = fn[2:]
-+
-+ # ignore files in ignore list
-+ if abspath(fn) in ignore:
-+ continue
-+
-+ ext = splitext(fn)[1]
-+ checkerlist = checkers.get(ext, None)
-+ if not checkerlist:
-+ continue
-+
-+ if verbose:
-+ print('Checking %s...' % fn)
-+
-+ try:
-+ with open(fn, 'r', encoding='utf-8') as f:
-+ lines = list(f)
-+ except (IOError, OSError) as err:
-+ print('%s: cannot open: %s' % (fn, err))
-+ count[4] += 1
-+ continue
-+
-+ for checker in checkerlist:
-+ if checker.falsepositives and not falsepos:
-+ continue
-+ csev = checker.severity
-+ if csev >= severity:
-+ for lno, msg in checker(fn, lines):
-+ print('[%d] %s:%d: %s' % (csev, fn, lno, msg))
-+ count[csev] += 1
-+ if verbose:
-+ print()
-+ if not count:
-+ if severity > 1:
-+ print('No problems with severity >= %d found.' % severity)
-+ else:
-+ print('No problems found.')
-+ else:
-+ for severity in sorted(count):
-+ number = count[severity]
-+ print('%d problem%s with severity %d found.' %
-+ (number, number > 1 and 's' or '', severity))
-+ return int(bool(count))
-+
-+
-+if __name__ == '__main__':
-+ sys.exit(main(sys.argv))
-diff -r 128b45caba5b tools/static/copybutton.js
---- /dev/null Thu Jan 01 00:00:00 1970 +0000
-+++ b/tools/static/copybutton.js Tue Jul 19 22:05:55 2016 -0700
-@@ -0,0 +1,62 @@
-+$(document).ready(function() {
-+ /* Add a [>>>] button on the top-right corner of code samples to hide
-+ * the >>> and ... prompts and the output and thus make the code
-+ * copyable. */
-+ var div = $('.highlight-python .highlight,' +
-+ '.highlight-python3 .highlight')
-+ var pre = div.find('pre');
-+
-+ // get the styles from the current theme
-+ pre.parent().parent().css('position', 'relative');
-+ var hide_text = 'Hide the prompts and output';
-+ var show_text = 'Show the prompts and output';
-+ var border_width = pre.css('border-top-width');
-+ var border_style = pre.css('border-top-style');
-+ var border_color = pre.css('border-top-color');
-+ var button_styles = {
-+ 'cursor':'pointer', 'position': 'absolute', 'top': '0', 'right': '0',
-+ 'border-color': border_color, 'border-style': border_style,
-+ 'border-width': border_width, 'color': border_color, 'text-size': '75%',
-+ 'font-family': 'monospace', 'padding-left': '0.2em', 'padding-right': '0.2em',
-+ 'border-radius': '0 3px 0 0'
-+ }
-+
-+ // create and add the button to all the code blocks that contain >>>
-+ div.each(function(index) {
-+ var jthis = $(this);
-+ if (jthis.find('.gp').length > 0) {
-+ var button = $('<span class="copybutton">>>></span>');
-+ button.css(button_styles)
-+ button.attr('title', hide_text);
-+ button.data('hidden', 'false');
-+ jthis.prepend(button);
-+ }
-+ // tracebacks (.gt) contain bare text elements that need to be
-+ // wrapped in a span to work with .nextUntil() (see later)
-+ jthis.find('pre:has(.gt)').contents().filter(function() {
-+ return ((this.nodeType == 3) && (this.data.trim().length > 0));
-+ }).wrap('<span>');
-+ });
-+
-+ // define the behavior of the button when it's clicked
-+ $('.copybutton').click(function(e){
-+ e.preventDefault();
-+ var button = $(this);
-+ if (button.data('hidden') === 'false') {
-+ // hide the code output
-+ button.parent().find('.go, .gp, .gt').hide();
-+ button.next('pre').find('.gt').nextUntil('.gp, .go').css('visibility', 'hidden');
-+ button.css('text-decoration', 'line-through');
-+ button.attr('title', show_text);
-+ button.data('hidden', 'true');
-+ } else {
-+ // show the code output
-+ button.parent().find('.go, .gp, .gt').show();
-+ button.next('pre').find('.gt').nextUntil('.gp, .go').css('visibility', 'visible');
-+ button.css('text-decoration', 'none');
-+ button.attr('title', hide_text);
-+ button.data('hidden', 'false');
-+ }
-+ });
-+});
-+
-diff -r 128b45caba5b tools/static/py.png
-Binary file tools/static/py.png has changed
-diff -r 128b45caba5b tools/static/sidebar.js
---- /dev/null Thu Jan 01 00:00:00 1970 +0000
-+++ b/tools/static/sidebar.js Tue Jul 19 22:05:55 2016 -0700
-@@ -0,0 +1,193 @@
-+/*
-+ * sidebar.js
-+ * ~~~~~~~~~~
-+ *
-+ * This script makes the Sphinx sidebar collapsible and implements intelligent
-+ * scrolling.
-+ *
-+ * .sphinxsidebar contains .sphinxsidebarwrapper. This script adds in
-+ * .sphixsidebar, after .sphinxsidebarwrapper, the #sidebarbutton used to
-+ * collapse and expand the sidebar.
-+ *
-+ * When the sidebar is collapsed the .sphinxsidebarwrapper is hidden and the
-+ * width of the sidebar and the margin-left of the document are decreased.
-+ * When the sidebar is expanded the opposite happens. This script saves a
-+ * per-browser/per-session cookie used to remember the position of the sidebar
-+ * among the pages. Once the browser is closed the cookie is deleted and the
-+ * position reset to the default (expanded).
-+ *
-+ * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
-+ * :license: BSD, see LICENSE for details.
-+ *
-+ */
-+
-+$(function() {
-+ // global elements used by the functions.
-+ // the 'sidebarbutton' element is defined as global after its
-+ // creation, in the add_sidebar_button function
-+ var jwindow = $(window);
-+ var jdocument = $(document);
-+ var bodywrapper = $('.bodywrapper');
-+ var sidebar = $('.sphinxsidebar');
-+ var sidebarwrapper = $('.sphinxsidebarwrapper');
-+
-+ // original margin-left of the bodywrapper and width of the sidebar
-+ // with the sidebar expanded
-+ var bw_margin_expanded = bodywrapper.css('margin-left');
-+ var ssb_width_expanded = sidebar.width();
-+
-+ // margin-left of the bodywrapper and width of the sidebar
-+ // with the sidebar collapsed
-+ var bw_margin_collapsed = '.8em';
-+ var ssb_width_collapsed = '.8em';
-+
-+ // colors used by the current theme
-+ var dark_color = '#AAAAAA';
-+ var light_color = '#CCCCCC';
-+
-+ function get_viewport_height() {
-+ if (window.innerHeight)
-+ return window.innerHeight;
-+ else
-+ return jwindow.height();
-+ }
-+
-+ function sidebar_is_collapsed() {
-+ return sidebarwrapper.is(':not(:visible)');
-+ }
-+
-+ function toggle_sidebar() {
-+ if (sidebar_is_collapsed())
-+ expand_sidebar();
-+ else
-+ collapse_sidebar();
-+ // adjust the scrolling of the sidebar
-+ scroll_sidebar();
-+ }
-+
-+ function collapse_sidebar() {
-+ sidebarwrapper.hide();
-+ sidebar.css('width', ssb_width_collapsed);
-+ bodywrapper.css('margin-left', bw_margin_collapsed);
-+ sidebarbutton.css({
-+ 'margin-left': '0',
-+ 'height': bodywrapper.height(),
-+ 'border-radius': '5px'
-+ });
-+ sidebarbutton.find('span').text('»');
-+ sidebarbutton.attr('title', _('Expand sidebar'));
-+ document.cookie = 'sidebar=collapsed';
-+ }
-+
-+ function expand_sidebar() {
-+ bodywrapper.css('margin-left', bw_margin_expanded);
-+ sidebar.css('width', ssb_width_expanded);
-+ sidebarwrapper.show();
-+ sidebarbutton.css({
-+ 'margin-left': ssb_width_expanded-12,
-+ 'height': bodywrapper.height(),
-+ 'border-radius': '0 5px 5px 0'
-+ });
-+ sidebarbutton.find('span').text('«');
-+ sidebarbutton.attr('title', _('Collapse sidebar'));
-+ //sidebarwrapper.css({'padding-top':
-+ // Math.max(window.pageYOffset - sidebarwrapper.offset().top, 10)});
-+ document.cookie = 'sidebar=expanded';
-+ }
-+
-+ function add_sidebar_button() {
-+ sidebarwrapper.css({
-+ 'float': 'left',
-+ 'margin-right': '0',
-+ 'width': ssb_width_expanded - 28
-+ });
-+ // create the button
-+ sidebar.append(
-+ '<div id="sidebarbutton"><span>«</span></div>'
-+ );
-+ var sidebarbutton = $('#sidebarbutton');
-+ // find the height of the viewport to center the '<<' in the page
-+ var viewport_height = get_viewport_height();
-+ var sidebar_offset = sidebar.offset().top;
-+ var sidebar_height = Math.max(bodywrapper.height(), sidebar.height());
-+ sidebarbutton.find('span').css({
-+ 'display': 'block',
-+ 'position': 'fixed',
-+ 'top': Math.min(viewport_height/2, sidebar_height/2 + sidebar_offset) - 10
-+ });
-+
-+ sidebarbutton.click(toggle_sidebar);
-+ sidebarbutton.attr('title', _('Collapse sidebar'));
-+ sidebarbutton.css({
-+ 'border-radius': '0 5px 5px 0',
-+ 'color': '#444444',
-+ 'background-color': '#CCCCCC',
-+ 'font-size': '1.2em',
-+ 'cursor': 'pointer',
-+ 'height': sidebar_height,
-+ 'padding-top': '1px',
-+ 'padding-left': '1px',
-+ 'margin-left': ssb_width_expanded - 12
-+ });
-+
-+ sidebarbutton.hover(
-+ function () {
-+ $(this).css('background-color', dark_color);
-+ },
-+ function () {
-+ $(this).css('background-color', light_color);
-+ }
-+ );
-+ }
-+
-+ function set_position_from_cookie() {
-+ if (!document.cookie)
-+ return;
-+ var items = document.cookie.split(';');
-+ for(var k=0; k<items.length; k++) {
-+ var key_val = items[k].split('=');
-+ var key = key_val[0];
-+ if (key == 'sidebar') {
-+ var value = key_val[1];
-+ if ((value == 'collapsed') && (!sidebar_is_collapsed()))
-+ collapse_sidebar();
-+ else if ((value == 'expanded') && (sidebar_is_collapsed()))
-+ expand_sidebar();
-+ }
-+ }
-+ }
-+
-+ add_sidebar_button();
-+ var sidebarbutton = $('#sidebarbutton');
-+ set_position_from_cookie();
-+
-+
-+ /* intelligent scrolling */
-+ function scroll_sidebar() {
-+ var sidebar_height = sidebarwrapper.height();
-+ var viewport_height = get_viewport_height();
-+ var offset = sidebar.position()['top'];
-+ var wintop = jwindow.scrollTop();
-+ var winbot = wintop + viewport_height;
-+ var curtop = sidebarwrapper.position()['top'];
-+ var curbot = curtop + sidebar_height;
-+ // does sidebar fit in window?
-+ if (sidebar_height < viewport_height) {
-+ // yes: easy case -- always keep at the top
-+ sidebarwrapper.css('top', $u.min([$u.max([0, wintop - offset - 10]),
-+ jdocument.height() - sidebar_height - 200]));
-+ }
-+ else {
-+ // no: only scroll if top/bottom edge of sidebar is at
-+ // top/bottom edge of window
-+ if (curtop > wintop && curbot > winbot) {
-+ sidebarwrapper.css('top', $u.max([wintop - offset - 10, 0]));
-+ }
-+ else if (curtop < wintop && curbot < winbot) {
-+ sidebarwrapper.css('top', $u.min([winbot - sidebar_height - offset - 20,
-+ jdocument.height() - sidebar_height - 200]));
-+ }
-+ }
-+ }
-+ jwindow.scroll(scroll_sidebar);
-+});
-diff -r 128b45caba5b tools/templates/layout.html
---- /dev/null Thu Jan 01 00:00:00 1970 +0000
-+++ b/tools/templates/layout.html Tue Jul 19 22:05:55 2016 -0700
-@@ -0,0 +1,38 @@
-+{% extends "!layout.html" %}
-+{% block rootrellink %}
-+ <li><img src="{{ pathto('_static/py.png', 1) }}" alt=""
-+ style="vertical-align: middle; margin-top: -1px"/></li>
-+ <li><a href="https://www.python.org/">Python</a>{{ reldelim1 }}</li>
-+ <li>
-+ <a href="{{ pathto('index') }}">{{ shorttitle }}</a>{{ reldelim1 }}
-+ </li>
-+{% endblock %}
-+{% block relbar1 %} {% if builder != 'qthelp' %} {{ relbar() }} {% endif %} {% endblock %}
-+{% block relbar2 %} {% if builder != 'qthelp' %} {{ relbar() }} {% endif %} {% endblock %}
-+{% block extrahead %}
-+ <link rel="shortcut icon" type="image/png" href="{{ pathto('_static/py.png', 1) }}" />
-+ {% if not embedded %}<script type="text/javascript" src="{{ pathto('_static/copybutton.js', 1) }}"></script>{% endif %}
-+
-+{{ super() }}
-+{% endblock %}
-+{% block footer %}
-+ <div class="footer">
-+ © <a href="{{ pathto('copyright') }}">{% trans %}Copyright{% endtrans %}</a> {{ copyright|e }}.
-+ <br />
-+ {% trans %}The Python Software Foundation is a non-profit corporation.{% endtrans %}
-+ <a href="https://www.python.org/psf/donations/">{% trans %}Please donate.{% endtrans %}</a>
-+ <br />
-+ {% trans last_updated=last_updated|e %}Last updated on {{ last_updated }}.{% endtrans %}
-+ <br />
-+ {% trans sphinx_version=sphinx_version|e %}Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> {{ sphinx_version }}.{% endtrans %}
-+ </div>
-+{% endblock %}
-+{% block sidebarsourcelink %}
-+{%- if show_source and has_source and sourcename %}
-+<h3>{{ _('This Page') }}</h3>
-+<ul class="this-page-menu">
-+ <li><a href="{{ pathto('_sources/' + sourcename, true)|e }}"
-+ rel="nofollow">{% trans %}Show Source{% endtrans %}</a></li>
-+</ul>
-+{%- endif %}
-+{% endblock %}
-diff -r 128b45caba5b tools/templates/opensearch.xml
---- /dev/null Thu Jan 01 00:00:00 1970 +0000
-+++ b/tools/templates/opensearch.xml Tue Jul 19 22:05:55 2016 -0700
-@@ -0,0 +1,4 @@
-+{% extends "!opensearch.xml" %}
-+{% block extra -%}
-+<Image height="16" width="16" type="image/x-icon">https://www.python.org/images/favicon16x16.ico</Image>
-+{%- endblock %}
--
Repository URL: https://hg.python.org/devguide
More information about the Python-checkins
mailing list