summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2014-12-16 13:24:41 -0500
committerMike Bayer <mike_mp@zzzcomputing.com>2014-12-16 13:24:41 -0500
commitfa195b6e6488f49845166a4cd1b087b8b336a993 (patch)
treeb8380609f795e968bf72559e1a87a681e4c41dba
parent3e55a0bf107143031fd183aef1028aef842c7d3f (diff)
downloadsqlalchemy-fa195b6e6488f49845166a4cd1b087b8b336a993.tar.gz
- export the whole theme out to zzzeeksphinx. let's see if we can get RTD to build it.
-rw-r--r--doc/build/builder/__init__.py0
-rw-r--r--doc/build/builder/autodoc_mods.py98
-rw-r--r--doc/build/builder/dialect_info.py180
-rw-r--r--doc/build/builder/mako.py77
-rw-r--r--doc/build/builder/scss.py46
-rw-r--r--doc/build/builder/sqlformatter.py132
-rw-r--r--doc/build/builder/toc.py141
-rw-r--r--doc/build/builder/util.py12
-rw-r--r--doc/build/builder/viewsource.py209
-rw-r--r--doc/build/conf.py9
-rw-r--r--doc/build/requirements.txt2
-rw-r--r--doc/build/static/detectmobile.js7
-rw-r--r--doc/build/static/docs.scss663
-rw-r--r--doc/build/static/init.js44
-rw-r--r--doc/build/templates/genindex.mako77
-rw-r--r--doc/build/templates/layout.mako252
-rw-r--r--doc/build/templates/page.mako2
-rw-r--r--doc/build/templates/search.mako21
-rw-r--r--doc/build/templates/static_base.mako29
19 files changed, 3 insertions, 1998 deletions
diff --git a/doc/build/builder/__init__.py b/doc/build/builder/__init__.py
deleted file mode 100644
index e69de29bb..000000000
--- a/doc/build/builder/__init__.py
+++ /dev/null
diff --git a/doc/build/builder/autodoc_mods.py b/doc/build/builder/autodoc_mods.py
deleted file mode 100644
index 78c94b615..000000000
--- a/doc/build/builder/autodoc_mods.py
+++ /dev/null
@@ -1,98 +0,0 @@
-import re
-
-def autodoc_skip_member(app, what, name, obj, skip, options):
- if what == 'class' and skip and \
- name in ('__init__', '__eq__', '__ne__', '__lt__',
- '__le__', '__call__') and \
- obj.__doc__:
- return False
- else:
- return skip
-
-
-def _adjust_rendered_mod_name(config, modname, objname):
- if (modname, objname) in config.autodocmods_convert_modname_w_class:
- return config.autodocmods_convert_modname_w_class[(modname, objname)]
- elif modname in config.autodocmods_convert_modname:
- return config.autodocmods_convert_modname[modname]
- else:
- return modname
-
-# im sure this is in the app somewhere, but I don't really
-# know where, so we're doing it here.
-_track_autodoced = {}
-_inherited_names = set()
-def autodoc_process_docstring(app, what, name, obj, options, lines):
- if what == "class":
- _track_autodoced[name] = obj
-
- # need to translate module names for bases, others
- # as we document lots of symbols in namespace modules
- # outside of their source
- bases = []
- for base in obj.__bases__:
- if base is not object:
- bases.append(":class:`%s.%s`" % (
- _adjust_rendered_mod_name(
- app.env.config, base.__module__, base.__name__),
- base.__name__))
-
- if bases:
- lines[:0] = [
- "Bases: %s" % (", ".join(bases)),
- ""
- ]
-
-
- elif what in ("attribute", "method") and \
- options.get("inherited-members"):
- m = re.match(r'(.*?)\.([\w_]+)$', name)
- if m:
- clsname, attrname = m.group(1, 2)
- if clsname in _track_autodoced:
- cls = _track_autodoced[clsname]
- for supercls in cls.__mro__:
- if attrname in supercls.__dict__:
- break
- if supercls is not cls:
- _inherited_names.add(
- "%s.%s" % (supercls.__module__, supercls.__name__))
- _inherited_names.add(
- "%s.%s.%s" %
- (supercls.__module__, supercls.__name__, attrname))
- lines[:0] = [
- ".. container:: inherited_member",
- "",
- " *inherited from the* "
- ":%s:`~%s.%s.%s` *%s of* :class:`~%s.%s`" % (
- "attr" if what == "attribute"
- else "meth",
- _adjust_rendered_mod_name(
- app.env.config,
- supercls.__module__,
- supercls.__name__),
- supercls.__name__,
- attrname,
- what,
- _adjust_rendered_mod_name(app.env.config,
- supercls.__module__,
- supercls.__name__),
- supercls.__name__
- ),
- ""
- ]
-
-def missing_reference(app, env, node, contnode):
- if node.attributes['reftarget'] in _inherited_names:
- return node.children[0]
- else:
- return None
-
-
-def setup(app):
- app.connect('autodoc-skip-member', autodoc_skip_member)
- app.connect('autodoc-process-docstring', autodoc_process_docstring)
- app.add_config_value("autodocmods_convert_modname", {}, 'env')
- app.add_config_value("autodocmods_convert_modname_w_class", {}, 'env')
-
- app.connect('missing-reference', missing_reference)
diff --git a/doc/build/builder/dialect_info.py b/doc/build/builder/dialect_info.py
deleted file mode 100644
index eec4cb6dc..000000000
--- a/doc/build/builder/dialect_info.py
+++ /dev/null
@@ -1,180 +0,0 @@
-import re
-from sphinx.util.compat import Directive
-from docutils import nodes
-
-class DialectDirective(Directive):
- has_content = True
-
- _dialects = {}
-
- def _parse_content(self):
- d = {}
- d['default'] = self.content[0]
- d['text'] = []
- idx = 0
- for line in self.content[1:]:
- idx += 1
- m = re.match(r'\:(.+?)\: +(.+)', line)
- if m:
- attrname, value = m.group(1, 2)
- d[attrname] = value
- else:
- break
- d["text"] = self.content[idx + 1:]
- return d
-
- def _dbapi_node(self):
-
- dialect_name, dbapi_name = self.dialect_name.split("+")
-
- try:
- dialect_directive = self._dialects[dialect_name]
- except KeyError:
- raise Exception(
- "No .. dialect:: %s directive has been established"
- % dialect_name)
-
- output = []
-
- content = self._parse_content()
-
- parent_section_ref = self.state.parent.children[0]['ids'][0]
- self._append_dbapi_bullet(dialect_name, dbapi_name,
- content['name'], parent_section_ref)
-
- p = nodes.paragraph('', '',
- nodes.Text(
- "Support for the %s database via the %s driver." % (
- dialect_directive.database_name,
- content['name']
- ),
- "Support for the %s database via the %s driver." % (
- dialect_directive.database_name,
- content['name']
- )
- ),
- )
-
- self.state.nested_parse(content['text'], 0, p)
- output.append(p)
-
- if "url" in content or "driverurl" in content:
- sec = nodes.section(
- '',
- nodes.title("DBAPI", "DBAPI"),
- ids=["dialect-%s-%s-url" % (dialect_name, dbapi_name)]
- )
- if "url" in content:
- text = "Documentation and download information "\
- "(if applicable) "\
- "for %s is available at:\n" % content["name"]
- uri = content['url']
- sec.append(
- nodes.paragraph('', '',
- nodes.Text(text, text),
- nodes.reference('', '',
- nodes.Text(uri, uri),
- refuri=uri,
- )
- )
- )
- if "driverurl" in content:
- text = "Drivers for this database are available at:\n"
- sec.append(
- nodes.paragraph('', '',
- nodes.Text(text, text),
- nodes.reference('', '',
- nodes.Text(content['driverurl'],
- content['driverurl']),
- refuri=content['driverurl']
- )
- )
- )
- output.append(sec)
-
-
- if "connectstring" in content:
- sec = nodes.section(
- '',
- nodes.title("Connecting", "Connecting"),
- nodes.paragraph('', '',
- nodes.Text("Connect String:", "Connect String:"),
- nodes.literal_block(content['connectstring'],
- content['connectstring'])
- ),
- ids=["dialect-%s-%s-connect" % (dialect_name, dbapi_name)]
- )
- output.append(sec)
-
- return output
-
- def _dialect_node(self):
- self._dialects[self.dialect_name] = self
-
- content = self._parse_content()
- self.database_name = content['name']
-
- self.bullets = nodes.bullet_list()
- text = "The following dialect/DBAPI options are available. "\
- "Please refer to individual DBAPI sections "\
- "for connect information."
- sec = nodes.section('',
- nodes.paragraph('', '',
- nodes.Text(
- "Support for the %s database." % content['name'],
- "Support for the %s database." % content['name']
- ),
- ),
- nodes.title("DBAPI Support", "DBAPI Support"),
- nodes.paragraph('', '',
- nodes.Text(text, text),
- self.bullets
- ),
- ids=["dialect-%s" % self.dialect_name]
- )
-
- return [sec]
-
- def _append_dbapi_bullet(self, dialect_name, dbapi_name, name, idname):
- env = self.state.document.settings.env
- dialect_directive = self._dialects[dialect_name]
- try:
- relative_uri = env.app.builder.get_relative_uri(
- dialect_directive.docname, self.docname)
- except:
- relative_uri = ""
- list_node = nodes.list_item('',
- nodes.paragraph('', '',
- nodes.reference('', '',
- nodes.Text(name, name),
- refdocname=self.docname,
- refuri= relative_uri + "#" + idname
- ),
- #nodes.Text(" ", " "),
- #nodes.reference('', '',
- # nodes.Text("(connectstring)", "(connectstring)"),
- # refdocname=self.docname,
- # refuri=env.app.builder.get_relative_uri(
- # dialect_directive.docname, self.docname) +
- ## "#" + ("dialect-%s-%s-connect" %
- # (dialect_name, dbapi_name))
- # )
- )
- )
- dialect_directive.bullets.append(list_node)
-
- def run(self):
- env = self.state.document.settings.env
- self.docname = env.docname
-
- self.dialect_name = dialect_name = self.content[0]
-
- has_dbapi = "+" in dialect_name
- if has_dbapi:
- return self._dbapi_node()
- else:
- return self._dialect_node()
-
-def setup(app):
- app.add_directive('dialect', DialectDirective)
-
diff --git a/doc/build/builder/mako.py b/doc/build/builder/mako.py
deleted file mode 100644
index 770fcae55..000000000
--- a/doc/build/builder/mako.py
+++ /dev/null
@@ -1,77 +0,0 @@
-from __future__ import absolute_import
-
-from sphinx.application import TemplateBridge
-from sphinx.jinja2glue import BuiltinTemplateLoader
-from mako.lookup import TemplateLookup
-from .toc import TOCMixin
-import os
-
-rtd = os.environ.get('READTHEDOCS', None) == 'True'
-
-class MakoBridge(TOCMixin, TemplateBridge):
- def init(self, builder, *args, **kw):
- self.jinja2_fallback = BuiltinTemplateLoader()
- self.jinja2_fallback.init(builder, *args, **kw)
-
- builder.config.html_context['release_date'] = builder.config['release_date']
- builder.config.html_context['site_base'] = builder.config['site_base']
-
- self.app = builder.app
-
- self.lookup = TemplateLookup(directories=builder.config.templates_path,
- #format_exceptions=True,
- imports=[
- "from builder import util"
- ]
- )
-
- if rtd and builder.config['site_base']:
- import urllib2
- if builder_config['site_adapter_file']:
- # remote site layout / startup files
- template_name = builder_config['site_adapter_template']
-
- template = urllib2.urlopen(
- builder.config['site_base'] + "/" + template_name).read()
- self.lookup.put_string(template_name, template)
-
- py_name = builder_config['site_adapter_py']
- if py_name:
- setup_ctx = urllib2.urlopen(
- builder.config['site_base'] + "/", py_name).read()
- lcls = {}
- exec(setup_ctx, lcls)
- self.setup_ctx = lcls['setup_context']
-
- def setup_ctx(self, context):
- pass
-
- def render(self, template, context):
- template = template.replace(".html", ".mako")
- context['prevtopic'] = context.pop('prev', None)
- context['nexttopic'] = context.pop('next', None)
- context['app'] = self.app
- # local docs layout
- context['rtd'] = False
- context['toolbar'] = False
- context['base'] = "static_base.mako"
- context['parent_toc'] = self.get_current_subtoc
- context['bridge'] = self
- # override context attributes
- self.setup_ctx(context)
- context.setdefault('_', lambda x: x)
- return self.lookup.get_template(template).render_unicode(**context)
-
- def render_string(self, template, context):
- # this is used for .js, .css etc. and we don't have
- # local copies of that stuff here so use the jinja render.
- return self.jinja2_fallback.render_string(template, context)
-
-def setup(app):
- app.config['template_bridge'] = "builder.mako.MakoBridge"
- app.add_config_value('release_date', "", 'env')
- app.add_config_value('site_base', "", 'env')
- app.add_config_value('site_adapter_template', "", 'env')
- app.add_config_value('site_adapter_py', "", 'env')
- app.add_config_value('build_number', "", 'env')
-
diff --git a/doc/build/builder/scss.py b/doc/build/builder/scss.py
deleted file mode 100644
index ea7247096..000000000
--- a/doc/build/builder/scss.py
+++ /dev/null
@@ -1,46 +0,0 @@
-from __future__ import absolute_import
-
-import os
-from scss import Scss
-
-# these docs aren't super accurate
-# http://pyscss.readthedocs.org/en/latest/
-
-def add_stylesheet(app):
- to_gen = []
- for static_path in app.env.config.html_static_path:
- path = os.path.join(app.env.srcdir, static_path)
- for fname in os.listdir(path):
- name, ext = os.path.splitext(fname)
- if ext != ".scss":
- continue
- to_gen.append((path, name))
-
- # sphinx doesn't really have a "temp" area that will persist
- # down into build-finished (env.temp_data gets emptied).
- # So make our own!
- app._builder_scss = to_gen
-
- for path, name in to_gen:
- app.add_stylesheet('%s.css' % name)
-
-def generate_stylesheet(app, exception):
- to_gen = app._builder_scss
-
- compiler = Scss(scss_opts={"style": "expanded"})
- for static_path, name in to_gen:
-
- css = compiler.compile(
- open(os.path.join(static_path, "%s.scss" % name)).read())
-
- dest = os.path.join(app.builder.outdir, '_static', '%s.css' % name)
- #copyfile(os.path.join(source, "%s.css" % name), dest)
-
- with open(dest, "w") as out:
- out.write(css)
-
-
-def setup(app):
- app.connect('builder-inited', add_stylesheet)
- app.connect('build-finished', generate_stylesheet)
-
diff --git a/doc/build/builder/sqlformatter.py b/doc/build/builder/sqlformatter.py
deleted file mode 100644
index 2d8074900..000000000
--- a/doc/build/builder/sqlformatter.py
+++ /dev/null
@@ -1,132 +0,0 @@
-from pygments.lexer import RegexLexer, bygroups, using
-from pygments.token import Token
-from pygments.filter import Filter
-from pygments.filter import apply_filters
-from pygments.lexers import PythonLexer, PythonConsoleLexer
-from sphinx.highlighting import PygmentsBridge
-from pygments.formatters import HtmlFormatter, LatexFormatter
-
-import re
-
-
-def _strip_trailing_whitespace(iter_):
- buf = list(iter_)
- if buf:
- buf[-1] = (buf[-1][0], buf[-1][1].rstrip())
- for t, v in buf:
- yield t, v
-
-
-class StripDocTestFilter(Filter):
- def filter(self, lexer, stream):
- for ttype, value in stream:
- if ttype is Token.Comment and re.match(r'#\s*doctest:', value):
- continue
- yield ttype, value
-
-class PyConWithSQLLexer(RegexLexer):
- name = 'PyCon+SQL'
- aliases = ['pycon+sql']
-
- flags = re.IGNORECASE | re.DOTALL
-
- tokens = {
- 'root': [
- (r'{sql}', Token.Sql.Link, 'sqlpopup'),
- (r'{opensql}', Token.Sql.Open, 'opensqlpopup'),
- (r'.*?\n', using(PythonConsoleLexer))
- ],
- 'sqlpopup': [
- (
- r'(.*?\n)((?:PRAGMA|BEGIN|SELECT|INSERT|DELETE|ROLLBACK|'
- 'COMMIT|ALTER|UPDATE|CREATE|DROP|PRAGMA'
- '|DESCRIBE).*?(?:{stop}\n?|$))',
- bygroups(using(PythonConsoleLexer), Token.Sql.Popup),
- "#pop"
- )
- ],
- 'opensqlpopup': [
- (
- r'.*?(?:{stop}\n*|$)',
- Token.Sql,
- "#pop"
- )
- ]
- }
-
-
-class PythonWithSQLLexer(RegexLexer):
- name = 'Python+SQL'
- aliases = ['pycon+sql']
-
- flags = re.IGNORECASE | re.DOTALL
-
- tokens = {
- 'root': [
- (r'{sql}', Token.Sql.Link, 'sqlpopup'),
- (r'{opensql}', Token.Sql.Open, 'opensqlpopup'),
- (r'.*?\n', using(PythonLexer))
- ],
- 'sqlpopup': [
- (
- r'(.*?\n)((?:PRAGMA|BEGIN|SELECT|INSERT|DELETE|ROLLBACK'
- '|COMMIT|ALTER|UPDATE|CREATE|DROP'
- '|PRAGMA|DESCRIBE).*?(?:{stop}\n?|$))',
- bygroups(using(PythonLexer), Token.Sql.Popup),
- "#pop"
- )
- ],
- 'opensqlpopup': [
- (
- r'.*?(?:{stop}\n*|$)',
- Token.Sql,
- "#pop"
- )
- ]
- }
-
-class PopupSQLFormatter(HtmlFormatter):
- def _format_lines(self, tokensource):
- buf = []
- for ttype, value in apply_filters(tokensource, [StripDocTestFilter()]):
- if ttype in Token.Sql:
- for t, v in HtmlFormatter._format_lines(self, iter(buf)):
- yield t, v
- buf = []
-
- if ttype is Token.Sql:
- yield 1, "<div class='show_sql'>%s</div>" % \
- re.sub(r'(?:[{stop}|\n]*)$', '', value)
- elif ttype is Token.Sql.Link:
- yield 1, "<a href='#' class='sql_link'>sql</a>"
- elif ttype is Token.Sql.Popup:
- yield 1, "<div class='popup_sql'>%s</div>" % \
- re.sub(r'(?:[{stop}|\n]*)$', '', value)
- else:
- buf.append((ttype, value))
-
- for t, v in _strip_trailing_whitespace(
- HtmlFormatter._format_lines(self, iter(buf))):
- yield t, v
-
-class PopupLatexFormatter(LatexFormatter):
- def _filter_tokens(self, tokensource):
- for ttype, value in apply_filters(tokensource, [StripDocTestFilter()]):
- if ttype in Token.Sql:
- if ttype is not Token.Sql.Link and ttype is not Token.Sql.Open:
- yield Token.Literal, re.sub(r'{stop}', '', value)
- else:
- continue
- else:
- yield ttype, value
-
- def format(self, tokensource, outfile):
- LatexFormatter.format(self, self._filter_tokens(tokensource), outfile)
-
-def setup(app):
- app.add_lexer('pycon+sql', PyConWithSQLLexer())
- app.add_lexer('python+sql', PythonWithSQLLexer())
-
- PygmentsBridge.html_formatter = PopupSQLFormatter
- PygmentsBridge.latex_formatter = PopupLatexFormatter
-
diff --git a/doc/build/builder/toc.py b/doc/build/builder/toc.py
deleted file mode 100644
index 89b6dec51..000000000
--- a/doc/build/builder/toc.py
+++ /dev/null
@@ -1,141 +0,0 @@
-class TOCMixin(object):
- def get_current_subtoc(self, current_page_name, current_page_title):
- """Return a TOC for sub-files and sub-elements of the current file.
-
- This is to provide a "contextual" navbar that shows the current page
- in context of all of its siblings, not just the immediate "previous"
- and "next".
-
- This allows a very long page with many sections to be broken
- into smaller pages while not losing the navigation of the overall
- section, with the added bonus that only the page-level bullets for
- the current subsection are expanded, thus making for a much shorter,
- "drill-down" style navigation.
-
- """
-
- raw_tree = self.app.env.get_toctree_for(
- current_page_name, self.app.builder, True, maxdepth=0)
- local_tree = self.app.env.get_toc_for(
- current_page_name, self.app.builder)
-
-
- def _locate_nodes(nodes, level, outer=True):
- # this is a lazy way of getting at all the info in a
- # series of docutils nodes, with an absolute mimimal
- # reliance on the actual structure of the nodes.
- # we just look for refuris and the fact that a node
- # is dependent on another somehow, that's it, then we
- # flatten it out into a clean "tree" later.
- # An official Sphinx feature/extension
- # here would probably make much more use of direct
- # knowledge of the structure
- for elem in nodes:
-
- if hasattr(elem, 'attributes'):
- refuri = elem.attributes.get('refuri', None)
- else:
- refuri = None
-
- name = None
- if refuri is not None:
- name = elem.children[0].rawsource
- remainders = elem.children[1:]
- # a little bit of extra filtering of when/where
- # we want internal nodes vs. page-level nodes,
- # this is usually not needed except in a certain
- # edge case
- if (
- not outer and refuri.startswith("#")
- ) or (
- outer and "#" not in refuri
- ):
- yield level, refuri, name
- else:
- remainders = elem.children
-
- # try to embed the item-level get_toc_for() inside
- # the file-level get_toctree_for(), otherwise if we
- # just get the full get_toctree_for(), it's enormous.
- if outer and name == current_page_title:
- for ent in _locate_nodes([local_tree], level + 1, False):
- yield ent
- else:
- for ent in _locate_nodes(
- remainders, level + 1, outer):
- yield ent
-
- def _organize_nodes(nodes):
- stack = []
- levels = []
- for level, refuri, name in nodes:
- if not levels or levels[-1] < level:
- levels.append(level)
- new_collection = []
- if stack:
- stack[-1].append(new_collection)
- stack.append(new_collection)
- elif level < levels[-1]:
- while levels and level < levels[-1]:
- levels.pop(-1)
- if level > levels[-1]:
- levels.append(level)
- else:
- stack.pop(-1)
-
- stack[-1].append((refuri, name))
- return stack
-
- def _render_nodes(stack, searchfor, level=0, nested_element=False):
- # this is me being lazy about dealing with docutils renderers,
- # and just programmatically rendering out. A real Sphinx
- # extension / feature would obviously need to use the idiomatic
- # docutils renderers.
- if stack:
- indent = " " * level
- printing = nested_element or searchfor in stack
- if printing:
- yield (" " * level) + "<ul>"
- while stack:
- elem = stack.pop(0)
- as_links = searchfor != elem
- if isinstance(elem, tuple):
- if not stack or isinstance(stack[0], tuple):
- if printing:
- if as_links:
- yield "%s<li><a href='%s'>%s</a></li>" % (
- (indent,) + elem)
- else:
- yield "%s<li><strong>%s</strong></li>" % (
- indent, elem[1])
- elif isinstance(stack[0], list):
- if printing:
- if as_links:
- yield "%s<li><a href='%s'>%s</a>" % (
- (indent,) + elem)
- else:
- yield "%s<li><strong>%s</strong>" % (
- indent, elem[1])
- for sub in _render_nodes(
- stack[0], searchfor,
- level=level + 1,
- nested_element=nested_element or
- searchfor == elem):
- yield sub
- if printing:
- yield (" " * level) + "</li>"
- elif isinstance(elem, list):
- for sub in _render_nodes(
- elem, searchfor,
- level=level + 1,
- nested_element=nested_element):
- yield sub
- if printing:
- yield (" " * level) + "</ul>"
-
- return "\n".join(
- _render_nodes(
- _organize_nodes(_locate_nodes([raw_tree], 0)),
- ('', current_page_title)
- )
- )
diff --git a/doc/build/builder/util.py b/doc/build/builder/util.py
deleted file mode 100644
index a9dcff001..000000000
--- a/doc/build/builder/util.py
+++ /dev/null
@@ -1,12 +0,0 @@
-import re
-
-def striptags(text):
- return re.compile(r'<[^>]*>').sub('', text)
-
-def go(m):
- # .html with no anchor if present, otherwise "#" for top of page
- return m.group(1) or '#'
-
-def strip_toplevel_anchors(text):
- return re.compile(r'(\.html)?#[-\w]+-toplevel').sub(go, text)
-
diff --git a/doc/build/builder/viewsource.py b/doc/build/builder/viewsource.py
deleted file mode 100644
index 088cef2c2..000000000
--- a/doc/build/builder/viewsource.py
+++ /dev/null
@@ -1,209 +0,0 @@
-from docutils import nodes
-from sphinx.ext.viewcode import collect_pages
-from sphinx.pycode import ModuleAnalyzer
-import imp
-from sphinx import addnodes
-import re
-from sphinx.util.compat import Directive
-import os
-from docutils.statemachine import StringList
-from sphinx.environment import NoUri
-
-import sys
-
-py2k = sys.version_info < (3, 0)
-if py2k:
- text_type = unicode
-else:
- text_type = str
-
-def view_source(name, rawtext, text, lineno, inliner,
- options={}, content=[]):
-
- env = inliner.document.settings.env
-
- node = _view_source_node(env, text, None)
- return [node], []
-
-def _view_source_node(env, text, state):
- # pretend we're using viewcode fully,
- # install the context it looks for
- if not hasattr(env, '_viewcode_modules'):
- env._viewcode_modules = {}
-
- modname = text
- text = modname.split(".")[-1] + ".py"
-
- # imitate sphinx .<modname> syntax
- if modname.startswith("."):
- # see if the modname needs to be corrected in terms
- # of current module context
- base_module = env.temp_data.get('autodoc:module')
- if base_module is None:
- base_module = env.temp_data.get('py:module')
-
- if base_module:
- modname = base_module + modname
-
- urito = env.app.builder.get_relative_uri
-
- # we're showing code examples which may have dependencies
- # which we really don't want to have required so load the
- # module by file, not import (though we are importing)
- # the top level module here...
- pathname = None
- for token in modname.split("."):
- file_, pathname, desc = imp.find_module(token, [pathname] if pathname else None)
- if file_:
- file_.close()
-
- # unlike viewcode which silently traps exceptions,
- # I want this to totally barf if the file can't be loaded.
- # a failed build better than a complete build missing
- # key content
- analyzer = ModuleAnalyzer.for_file(pathname, modname)
- # copied from viewcode
- analyzer.find_tags()
- if not isinstance(analyzer.code, text_type):
- code = analyzer.code.decode(analyzer.encoding)
- else:
- code = analyzer.code
-
- if state is not None:
- docstring = _find_mod_docstring(analyzer)
- if docstring:
- # get rid of "foo.py" at the top
- docstring = re.sub(r"^[a-zA-Z_0-9]+\.py", "", docstring)
-
- # strip
- docstring = docstring.strip()
-
- # yank only first paragraph
- docstring = docstring.split("\n\n")[0].strip()
- else:
- docstring = None
-
- entry = code, analyzer.tags, {}
- env._viewcode_modules[modname] = entry
- pagename = '_modules/' + modname.replace('.', '/')
-
- try:
- refuri = urito(env.docname, pagename)
- except NoUri:
- # if we're in the latex builder etc., this seems
- # to be what we get
- refuri = None
-
-
- if docstring:
- # embed the ref with the doc text so that it isn't
- # a separate paragraph
- if refuri:
- docstring = "`%s <%s>`_ - %s" % (text, refuri, docstring)
- else:
- docstring = "``%s`` - %s" % (text, docstring)
- para = nodes.paragraph('', '')
- state.nested_parse(StringList([docstring]), 0, para)
- return_node = para
- else:
- if refuri:
- refnode = nodes.reference('', '',
- nodes.Text(text, text),
- refuri=urito(env.docname, pagename)
- )
- else:
- refnode = nodes.Text(text, text)
-
- if state:
- return_node = nodes.paragraph('', '', refnode)
- else:
- return_node = refnode
-
- return return_node
-
-from sphinx.pycode.pgen2 import token
-
-def _find_mod_docstring(analyzer):
- """attempt to locate the module-level docstring.
-
- Note that sphinx autodoc just uses ``__doc__``. But we don't want
- to import the module, so we need to parse for it.
-
- """
- analyzer.tokenize()
- for type_, parsed_line, start_pos, end_pos, raw_line in analyzer.tokens:
- if type_ == token.COMMENT:
- continue
- elif type_ == token.STRING:
- return eval(parsed_line)
- else:
- return None
-
-def _parse_content(content):
- d = {}
- d['text'] = []
- idx = 0
- for line in content:
- idx += 1
- m = re.match(r' *\:(.+?)\:(?: +(.+))?', line)
- if m:
- attrname, value = m.group(1, 2)
- d[attrname] = value or ''
- else:
- break
- d["text"] = content[idx:]
- return d
-
-def _comma_list(text):
- return re.split(r"\s*,\s*", text.strip())
-
-class AutoSourceDirective(Directive):
- has_content = True
-
- def run(self):
- content = _parse_content(self.content)
-
-
- env = self.state.document.settings.env
- self.docname = env.docname
-
- sourcefile = self.state.document.current_source.split(os.pathsep)[0]
- dir_ = os.path.dirname(sourcefile)
- files = [
- f for f in os.listdir(dir_) if f.endswith(".py")
- and f != "__init__.py"
- ]
-
- if "files" in content:
- # ordered listing of files to include
- files = [fname for fname in _comma_list(content["files"])
- if fname in set(files)]
-
- node = nodes.paragraph('', '',
- nodes.Text("Listing of files:", "Listing of files:")
- )
-
- bullets = nodes.bullet_list()
- for fname in files:
- modname, ext = os.path.splitext(fname)
- # relative lookup
- modname = "." + modname
-
- link = _view_source_node(env, modname, self.state)
-
- list_node = nodes.list_item('',
- link
- )
- bullets += list_node
-
- node += bullets
-
- return [node]
-
-def setup(app):
- app.add_role('viewsource', view_source)
-
- app.add_directive('autosource', AutoSourceDirective)
-
- # from sphinx.ext.viewcode
- app.connect('html-collect-pages', collect_pages)
diff --git a/doc/build/conf.py b/doc/build/conf.py
index 32955f68a..7e17fcd59 100644
--- a/doc/build/conf.py
+++ b/doc/build/conf.py
@@ -34,14 +34,9 @@ import sqlalchemy
extensions = [
'sphinx.ext.autodoc',
'sphinx.ext.intersphinx',
- 'builder.autodoc_mods',
+ 'zzzeeksphinx',
'changelog',
'sphinx_paramlinks',
- 'builder.dialect_info',
- 'builder.mako',
- 'builder.sqlformatter',
- 'builder.viewsource',
- 'builder.scss'
]
# Add any paths that contain templates here, relative to this directory.
@@ -162,7 +157,7 @@ gettext_compact = False
# The theme to use for HTML and HTML Help pages. See the documentation for
# a list of builtin themes.
-html_theme = 'default'
+html_theme = 'zzzeeksphinx'
# 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
diff --git a/doc/build/requirements.txt b/doc/build/requirements.txt
index 34f031b0b..2c7bf0c01 100644
--- a/doc/build/requirements.txt
+++ b/doc/build/requirements.txt
@@ -1,3 +1,3 @@
-mako
changelog>=0.3.4
sphinx-paramlinks>=0.2.2
+zzzeeksphinx
diff --git a/doc/build/static/detectmobile.js b/doc/build/static/detectmobile.js
deleted file mode 100644
index f86b2d650..000000000
--- a/doc/build/static/detectmobile.js
+++ /dev/null
@@ -1,7 +0,0 @@
-/**
- * jQuery.browser.mobile (http://detectmobilebrowser.com/)
- *
- * jQuery.browser.mobile will be true if the browser is a mobile device
- *
- **/
-(function(a){(jQuery.browser=jQuery.browser||{}).mobile=/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0,4))})(navigator.userAgent||navigator.vendor||window.opera); \ No newline at end of file
diff --git a/doc/build/static/docs.scss b/doc/build/static/docs.scss
deleted file mode 100644
index 8597a993f..000000000
--- a/doc/build/static/docs.scss
+++ /dev/null
@@ -1,663 +0,0 @@
-$primary-font-family: Verdana, sans-serif;
-$header-font-family: Helvetica, Arial, sans-serif;
-$top-header-font-family: Tahoma,Geneva,sans-serif;
-$primary-background-color: #FDFBFC;
-$topmost-header-color: #EBEBEE;
-$popout-color: #FBFBEE;
-$sidebar-color: #EFEFEF;
-$sidebar-header-background-color: #DDDDDD;
-$sidebar-header-color: #222222;
-$notebox-background-color: #EEFFEF;
-$border-style: 1px solid #CCC;
-
-/* global */
-
-.body-background {
- background-color: $primary-background-color;
-}
-
-body {
- background-color: $primary-background-color;
- margin:0 38px;
- color:#333333;
-}
-
-a {
- font-weight:normal;
- text-decoration:none;
-}
-
-form {
- display:inline;
-}
-
-/* hyperlinks */
-
-a:link, a:visited, a:active {
- color: #990000;
-}
-a:hover {
- color: #FF0000;
- text-decoration:underline;
-}
-
-/* paragraph links after sections.
- These aren't visible until hovering
- over the <h> tag, then have a
- "reverse video" effect over the actual
- link
- */
-
-a.headerlink {
- font-size: 0.8em;
- padding: 0 4px 0 4px;
- text-decoration: none;
- visibility: hidden;
-}
-
-h1:hover > a.headerlink,
-h2:hover > a.headerlink,
-h3:hover > a.headerlink,
-h4:hover > a.headerlink,
-h5:hover > a.headerlink,
-h6:hover > a.headerlink,
-dt:hover > a.headerlink {
- visibility: visible;
-}
-
-a.headerlink:hover {
- background-color: #990000;
- color: white;
-}
-
-
-/* Container setup */
-
-#docs-container {
- max-width:1000px;
- margin: 0 auto;
- position: relative;
-}
-
-
-/* header/footer elements */
-
-#docs-header {
- font-family: $primary-font-family;
-
- font-size:.9em;
- position: relative;
-
- h1 {
- font-size: 20px;
- color: #222222;
- margin: 4px 0px;
- padding: 5px 5px;
- background-color: $topmost-header-color;
- border: $border-style;
- }
-}
-
-#docs-sidebar-popout,
-#docs-bottom-navigation,
-#index-nav {
- font-family: $primary-font-family;
- background-color: $popout-color;
- border: $border-style;
- font-size:.8em;
-}
-
-#docs-bottom-navigation,
-#index-nav {
- padding:10px;
-}
-
-#docs-sidebar-popout {
- font-size:.75em;
-}
-
-#docs-sidebar-popout p,
-#docs-sidebar-popout form {
- margin:5px 0 5px 0px;
-}
-
-#docs-sidebar-popout h3 {
- margin:0 0 10px 0;
-}
-
-
-#docs-version-header {
- position: absolute;
- right: 8px;
- bottom: 8px;
-}
-
-.docs-navigation-links {
- font-family: $primary-font-family;
-}
-
-#docs-bottom-navigation {
- float:right;
- margin: 1em 0 1em 5px;
-}
-
-#docs-copyright {
- font-size:.85em;
- padding:5px 0px;
-}
-
-#docs-header h1,
-#docs-top-navigation h1,
-#docs-top-navigation h2 {
- font-family: $top-header-font-family;
- font-weight:normal;
-}
-
-#docs-top-navigation h2 {
- margin:16px 4px 7px 5px;
- font-size:1.6em;
-}
-
-#docs-top-page-control {
- position: absolute;
- right: 20px;
- bottom: 14px;
-}
-
-#docs-top-page-control ul {
- padding:0;
- margin:0;
-}
-
-#docs-top-page-control li {
- font-size:.9em;
- list-style-type:none;
- padding:1px 8px;
-}
-
-
-#docs-container .version-num {
- font-weight: bold;
-}
-
-
-/* content container, sidebar */
-
-#docs-body-container {
-}
-
-#docs-body,
-#docs-sidebar,
-#index-nav
- {
- font-family: $primary-font-family;
- font-size:.85em;
- line-height:1.5em;
-
-}
-
-#docs-body {
- min-height: 700px;
-}
-
-#docs-sidebar > ul {
- font-size:.85em;
-}
-
-#fixed-sidebar {
- position: relative;
-}
-
-#fixed-sidebar.withsidebar {
- float: left;
- width:224px;
-}
-
-#fixed-sidebar.preautomated {
- position: fixed;
- float: none;
- top:0;
- bottom: 0;
-}
-
-#fixed-sidebar.automated {
- position: fixed;
- float: none;
- top: 120px;
- min-height: 0;
-}
-
-
-#docs-sidebar {
- font-size:.85em;
-
- border: $border-style;
-
- z-index: 3;
- background-color: $sidebar-color;
-}
-
-#index-nav {
- position: relative;
- margin-top:10px;
- padding:0 10px;
-}
-
-#index-nav form {
- padding-top:10px;
- float:right;
-}
-
-#sidebar-paginate {
- position: absolute;
- bottom: 4.5em;
- left: 10px;
-}
-
-#sidebar-topnav {
- position: absolute;
- bottom: 3em;
- left: 10px;
-}
-
-#sidebar-search {
- position: absolute;
- bottom: 1em;
- left: 10px;
-}
-
-#docs-sidebar {
- top: 132px;
- bottom: 0;
- min-height: 0;
- overflow-y: auto;
- margin-top:5px;
- width:212px;
- padding-left:10px;
-}
-
-#docs-sidebar-popout {
- height:120px;
- max-height: 120px;
- width:212px;
- padding-left:10px;
- padding-top:10px;
- position: relative;
-}
-
-
-#fixed-sidebar.preautomated #docs-sidebar,
-#fixed-sidebar.preautomated #docs-sidebar-popout {
- position:absolute;
-}
-
-#fixed-sidebar.preautomated #docs-sidebar:after {
- content: " ";
- display:block;
- height: 150px;
-}
-
-
-#docs-sidebar.preautomated {
- position: fixed;
-}
-
-#docs-sidebar.automated {
- position: fixed;
- float: none;
- top: 120px;
- min-height: 0;
-}
-
-
-#docs-sidebar h3, #docs-sidebar h4 {
- background-color: $sidebar-header-background-color;
- color: $sidebar-header-color;
- font-family: $primary-font-family;
- font-size: 1.1em;
- font-weight: normal;
- margin: 10px 0 0 -15px;
- padding: 5px 10px 5px 15px;
- text-shadow: 1px 1px 0 white;
- /*width:210px;*/
-}
-
-#docs-sidebar h3:first-child {
- margin-top: 0px;
-}
-
-#docs-sidebar h3 a, #docs-sidebar h4 a {
- color: $sidebar-header-color;
-}
-#docs-sidebar ul {
- margin: 10px 10px 10px 0px;
- padding: 0;
- list-style: none outside none;
-}
-
-
-#docs-sidebar ul ul {
- margin-bottom: 0;
- margin-top: 0;
- list-style: square outside none;
- margin-left: 20px;
-}
-
-
-
-
-#docs-body {
- background-color:#FFFFFF;
- padding:1px 10px 10px 10px;
-
- border: $border-style;
- margin-top:10px;
-}
-
-#docs-body.withsidebar {
- margin-left: 230px;
-}
-
-
-#docs-body h1,
-#docs-body h2,
-#docs-body h3,
-#docs-body h4 {
- font-family: $header-font-family;
-}
-
-#docs-body #sqlalchemy-documentation h1 {
- /* hide the <h1> for each content section. */
- display:none;
- font-size:2.0em;
-}
-
-
-#docs-body h2 {
- font-size:1.8em;
- border-top:1px solid;
- /*border-bottom:1px solid;*/
- padding-top:20px;
-}
-
-#sqlalchemy-documentation h2 {
- border-top:none;
- padding-top:0;
-}
-#docs-body h3 {
- font-size:1.4em;
-}
-
-/* SQL popup, code styles */
-
-.highlight {
- background:none;
-}
-
-#docs-container pre {
- font-size:1.2em;
-}
-
-#docs-container .pre {
- font-size:1.1em;
-}
-
-#docs-container pre {
- background-color: #f0f0f0;
- border: $border-style;
- box-shadow: 2px 2px 3px #DFDFDF;
- padding:10px;
- margin: 5px 0px 5px 0px;
- overflow:auto;
- line-height:1.3em;
-}
-
-.popup_sql, .show_sql
-{
- background-color: $popout-color;
- padding:5px 10px;
- margin:10px -5px;
- border:1px dashed;
-}
-
-/* the [SQL] links used to display SQL */
-#docs-container .sql_link
-{
- font-weight:normal;
- font-family: helvetica, arial, sans-serif;
- font-size:.9em;
- text-transform: uppercase;
- color:#990000;
- border:1px solid;
- padding:1px 2px 1px 2px;
- margin:0px 10px 0px 15px;
- float:right;
- line-height:1.2em;
-}
-
-#docs-container a.sql_link,
-#docs-container .sql_link
-{
- text-decoration: none;
- padding:1px 2px;
-}
-
-#docs-container a.sql_link:hover {
- text-decoration: none;
- color:#fff;
- border:1px solid #900;
- background-color: #900;
-}
-
-/* changeset stuff */
-
-#docs-container a.changeset-link {
- font-size: 0.8em;
- padding: 0 4px 0 4px;
- text-decoration: none;
-}
-
-/* docutils-specific elements */
-
-th.field-name {
- text-align:right;
-}
-
-div.section {
-}
-
-div.note, div.warning, p.deprecated, div.topic, div.admonition {
- background-color:$notebox-background-color;
-}
-
-.footnote {
- font-size: .95em;
-}
-
-div.faq {
- background-color: #EFEFEF;
-}
-
-div.faq ul {
- list-style: square outside none;
-}
-
-div.admonition, div.topic, .deprecated, .versionadded, .versionchanged {
- border: $border-style;
- padding:5px 10px;
- font-size:.9em;
- margin-top:5px;
- box-shadow: 2px 2px 3px #DFDFDF;
-}
-
-div.sidebar {
- background-color: #FFFFEE;
- border: 1px solid #DDDDBB;
- float: right;
- margin: 10px 0 10px 1em;
- padding: 7px 7px 0;
- width: 40%;
- font-size:.9em;
-}
-
-p.sidebar-title {
- font-weight: bold;
-}
-
-/* grrr sphinx changing your document structures, removing classes.... */
-
-.versionadded .versionmodified,
-.versionchanged .versionmodified,
-.deprecated .versionmodified,
-.versionadded > p:first-child > span:first-child,
-.versionchanged > p:first-child > span:first-child,
-.deprecated > p:first-child > span:first-child
-{
- background-color: #ECF0F3;
- color: #990000;
- font-style: italic;
-}
-
-
-div.inherited-member {
- border: $border-style;
- padding:5px 5px;
- font-size:.9em;
- box-shadow: 2px 2px 3px #DFDFDF;
-}
-
-div.warning .admonition-title {
- color:#FF0000;
-}
-
-div.admonition .admonition-title, div.topic .topic-title {
- font-weight:bold;
-}
-
-.viewcode-back, .viewcode-link {
- float:right;
-}
-
-dl.function > dt,
-dl.attribute > dt,
-dl.classmethod > dt,
-dl.method > dt,
-dl.class > dt,
-dl.exception > dt
-{
- background-color: #EFEFEF;
- margin:25px -10px 10px 10px;
- padding: 0px 10px;
-}
-
-
-dl.glossary > dt {
- font-weight:bold;
- font-size:1.1em;
- padding-top:10px;
-}
-
-
-dt:target, span.highlight {
- background-color:#FBE54E;
-}
-
-a.headerlink {
- font-size: 0.8em;
- padding: 0 4px 0 4px;
- text-decoration: none;
- visibility: hidden;
-}
-
-h1:hover > a.headerlink,
-h2:hover > a.headerlink,
-h3:hover > a.headerlink,
-h4:hover > a.headerlink,
-h5:hover > a.headerlink,
-h6:hover > a.headerlink,
-dt:hover > a.headerlink {
- visibility: visible;
-}
-
-a.headerlink:hover {
- background-color: #00f;
- color: white;
-}
-
-.clearboth {
- clear:both;
-}
-
-tt.descname {
- background-color:transparent;
- font-size:1.2em;
- font-weight:bold;
-}
-
-tt.descclassname {
- background-color:transparent;
-}
-
-tt {
- background-color:#ECF0F3;
- padding:0 1px;
-}
-
-/* syntax highlighting overrides */
-.k, .kn {color:#0908CE;}
-.o {color:#BF0005;}
-.go {color:#804049;}
-
-
-/* special "index page" sections
- with specific formatting
-*/
-
-div#sqlalchemy-documentation {
- font-size:.95em;
-}
-div#sqlalchemy-documentation em {
- font-style:normal;
-}
-div#sqlalchemy-documentation .rubric{
- font-size:14px;
- background-color:#EEFFEF;
- padding:5px;
- border:1px solid #BFBFBF;
-}
-div#sqlalchemy-documentation a, div#sqlalchemy-documentation li {
- padding:5px 0px;
-}
-
-div#getting-started {
- border-bottom:1px solid;
-}
-
-div#sqlalchemy-documentation div#sqlalchemy-orm {
- float:left;
- width:48%;
-}
-
-div#sqlalchemy-documentation div#sqlalchemy-core {
- float:left;
- width:48%;
- margin:0;
- padding-left:10px;
- border-left:1px solid;
-}
-
-div#dialect-documentation {
- border-top:1px solid;
- /*clear:left;*/
-}
-
-div .versionwarning,
-div .version-warning {
- font-size:12px;
- font-color:red;
- border:1px solid;
- padding:4px 4px;
- margin:8px 0px 2px 0px;
- background:#FFBBBB;
-}
-
diff --git a/doc/build/static/init.js b/doc/build/static/init.js
deleted file mode 100644
index 4bcb4411d..000000000
--- a/doc/build/static/init.js
+++ /dev/null
@@ -1,44 +0,0 @@
-
-function initSQLPopups() {
- $('div.popup_sql').hide();
- $('a.sql_link').click(function() {
- $(this).nextAll('div.popup_sql:first').toggle();
- return false;
- });
-}
-
-var automatedBreakpoint = -1;
-
-function initFloatyThings() {
-
- automatedBreakpoint = $("#docs-container").position().top + $("#docs-top-navigation-container").height();
-
- $("#fixed-sidebar.withsidebar").addClass("preautomated");
-
-
- function setScroll() {
-
- var scrolltop = $(window).scrollTop();
- if (scrolltop >= automatedBreakpoint) {
- $("#fixed-sidebar.withsidebar").css("top", 5);
- }
- else {
- $("#fixed-sidebar.withsidebar").css(
- "top", $("#docs-body").offset().top - Math.max(scrolltop, 0));
- }
-
-
- }
- $(window).scroll(setScroll)
-
- setScroll();
-}
-
-
-$(document).ready(function() {
- initSQLPopups();
- if (!$.browser.mobile) {
- initFloatyThings();
- }
-});
-
diff --git a/doc/build/templates/genindex.mako b/doc/build/templates/genindex.mako
deleted file mode 100644
index 9ea6795bc..000000000
--- a/doc/build/templates/genindex.mako
+++ /dev/null
@@ -1,77 +0,0 @@
-<%inherit file="layout.mako"/>
-
-<%block name="show_title" filter="util.striptags">
- ${_('Index')}
-</%block>
-
- <h1 id="index">${_('Index')}</h1>
-
- % for i, (key, dummy) in enumerate(genindexentries):
- ${i != 0 and '| ' or ''}<a href="#${key}"><strong>${key}</strong></a>
- % endfor
-
- <hr />
-
- % for i, (key, entries) in enumerate(genindexentries):
-<h2 id="${key}">${key}</h2>
-<table width="100%" class="indextable genindextable"><tr><td width="33%" valign="top">
-<dl>
- <%
- breakat = genindexcounts[i] // 2
- numcols = 1
- numitems = 0
- %>
-% for entryname, (links, subitems) in entries:
-
-<dt>
- % if links:
- <a href="${links[0][1]}">${entryname|h}</a>
- % for unknown, link in links[1:]:
- , <a href="${link}">[${i}]</a>
- % endfor
- % else:
- ${entryname|h}
- % endif
-</dt>
-
- % if subitems:
- <dd><dl>
- % for subentryname, subentrylinks in subitems:
- <dt><a href="${subentrylinks[0][1]}">${subentryname|h}</a>
- % for j, (unknown, link) in enumerate(subentrylinks[1:]):
- <a href="${link}">[${j}]</a>
- % endfor
- </dt>
- % endfor
- </dl></dd>
- % endif
-
- <%
- numitems = numitems + 1 + len(subitems)
- %>
- % if numcols <2 and numitems > breakat:
- <%
- numcols = numcols + 1
- %>
- </dl></td><td width="33%" valign="top"><dl>
- % endif
-
-% endfor
-<dt></dt></dl>
-</td></tr></table>
-% endfor
-
-<%def name="sidebarrel()">
-% if split_index:
- <h4>${_('Index')}</h4>
- <p>
- % for i, (key, dummy) in enumerate(genindexentries):
- ${i > 0 and '| ' or ''}
- <a href="${pathto('genindex-' + key)}"><strong>${key}</strong></a>
- % endfor
- </p>
-
- <p><a href="${pathto('genindex-all')}"><strong>${_('Full index on one page')}</strong></a></p>
-% endif
- ${parent.sidebarrel()}
-</%def>
diff --git a/doc/build/templates/layout.mako b/doc/build/templates/layout.mako
deleted file mode 100644
index 4520a43cc..000000000
--- a/doc/build/templates/layout.mako
+++ /dev/null
@@ -1,252 +0,0 @@
-## coding: utf-8
-
-<%!
- local_script_files = []
-
- default_css_files = [
- '_static/pygments.css',
- '_static/docs.css',
- ]
-%>
-
-
-<%doc>
- Structural elements are all prefixed with "docs-"
- to prevent conflicts when the structure is integrated into the
- main site.
-
- docs-container ->
- docs-top-navigation-container ->
- docs-header ->
- docs-version-header
- docs-top-navigation
- docs-top-page-control
- docs-navigation-banner
- docs-body-container ->
- docs-sidebar
- docs-body
- docs-bottom-navigation
- docs-copyright
-</%doc>
-
-<%inherit file="${context['base']}"/>
-
-<%
- if builder == 'epub':
- next.body()
- return
-%>
-
-
-<%
-withsidebar = bool(toc) and current_page_name != 'index'
-%>
-
-<%block name="head_title">
- % if current_page_name != 'index':
- ${capture(self.show_title) | util.striptags} &mdash;
- % endif
- ${docstitle|h}
-</%block>
-
-
-<div id="docs-container">
-
-
-<%block name="headers">
-
- ${parent.headers()}
-
- <!-- begin layout.mako headers -->
-
- <script type="text/javascript">
- var DOCUMENTATION_OPTIONS = {
- URL_ROOT: '${pathto("", 1)}',
- VERSION: '${release|h}',
- COLLAPSE_MODINDEX: false,
- FILE_SUFFIX: '${file_suffix}'
- };
- </script>
-
- <!-- begin iterate through sphinx environment script_files -->
- % for scriptfile in script_files + self.attr.local_script_files:
- <script type="text/javascript" src="${pathto(scriptfile, 1)}"></script>
- % endfor
- <!-- end iterate through sphinx environment script_files -->
-
- <script type="text/javascript" src="${pathto('_static/detectmobile.js', 1)}"></script>
- <script type="text/javascript" src="${pathto('_static/init.js', 1)}"></script>
- % if hasdoc('about'):
- <link rel="author" title="${_('About these documents')}" href="${pathto('about')}" />
- % endif
- <link rel="index" title="${_('Index')}" href="${pathto('genindex')}" />
- <link rel="search" title="${_('Search')}" href="${pathto('search')}" />
- % if hasdoc('copyright'):
- <link rel="copyright" title="${_('Copyright')}" href="${pathto('copyright')}" />
- % endif
- <link rel="top" title="${docstitle|h}" href="${pathto('index')}" />
- % if parents:
- <link rel="up" title="${parents[-1]['title']|util.striptags}" href="${parents[-1]['link']|h}" />
- % endif
- % if nexttopic:
- <link rel="next" title="${nexttopic['title']|util.striptags}" href="${nexttopic['link']|h}" />
- % endif
- % if prevtopic:
- <link rel="prev" title="${prevtopic['title']|util.striptags}" href="${prevtopic['link']|h}" />
- % endif
- <!-- end layout.mako headers -->
-
-</%block>
-
-
-<div id="docs-top-navigation-container" class="body-background">
-<div id="docs-header">
- <div id="docs-version-header">
- Release: <span class="version-num">${release}</span> | Release Date: ${release_date}
- </div>
-
- <h1>${docstitle|h}</h1>
-
-</div>
-</div>
-
-<div id="docs-body-container">
-
- <div id="fixed-sidebar" class="${'withsidebar' if withsidebar else ''}">
-
- % if not withsidebar:
- <div id="index-nav">
- <form class="search" action="${pathto('search')}" method="get">
- <input type="text" name="q" size="12" /> <input type="submit" value="${_('Search')}" />
- <input type="hidden" name="check_keywords" value="yes" />
- <input type="hidden" name="area" value="default" />
- </form>
-
- <p>
- <a href="${pathto('index')}">Contents</a> |
- <a href="${pathto('genindex')}">Index</a>
- % if pdf_url:
- | <a href="${pdf_url}">Download as PDF</a>
- % endif
- </p>
-
- </div>
- % endif
-
- % if withsidebar:
- <div id="docs-sidebar-popout">
- <h3><a href="${pathto('index')}">${docstitle|h}</a></h3>
-
- <p id="sidebar-paginate">
- % if parents:
- <a href="${parents[-1]['link']|h}" title="${parents[-1]['title']}">Up</a> |
- % else:
- <a href="${pathto('index')}" title="${docstitle|h}">Up</a> |
- % endif
-
- % if prevtopic:
- <a href="${prevtopic['link']|h}" title="${prevtopic['title']}">Prev</a> |
- % endif
- % if nexttopic:
- <a href="${nexttopic['link']|h}" title="${nexttopic['title']}">Next</a>
- % endif
- </p>
-
- <p id="sidebar-topnav">
- <a href="${pathto('index')}">Contents</a> |
- <a href="${pathto('genindex')}">Index</a>
- % if pdf_url:
- | <a href="${pdf_url}">PDF</a>
- % endif
- </p>
-
- <div id="sidebar-search">
- <form class="search" action="${pathto('search')}" method="get">
- <input type="text" name="q" size="12" /> <input type="submit" value="${_('Search')}" />
- <input type="hidden" name="check_keywords" value="yes" />
- <input type="hidden" name="area" value="default" />
- </form>
- </div>
-
- </div>
-
- <div id="docs-sidebar">
-
- <h3><a href="${parents[-1]['link'] if parents else '#'}">\
- <%block name="show_title">
- % if parents:
- ${parents[-1]['title']}
- % else:
- ${title}
- % endif
- </%block>
- </a></h3>
-
- % if parents:
- ${parent_toc(current_page_name, title)}
- % else:
- ${toc}
- % endif
-
- % if rtd:
- <h4>Project Versions</h4>
- <ul class="version-listing">
- </ul>
- % endif
-
-
- </div>
- % endif
-
- </div>
-
- <%doc>
- <div id="docs-top-navigation">
- <a href="${pathto('index')}">${docstitle|h}</a>
- % if parents:
- % for parent in parents:
- » <a href="${parent['link']|h}" title="${parent['title']}">${parent['title']}</a>
- % endfor
- % endif
- % if current_page_name != 'index':
- » ${self.show_title()}
- % endif
-
- <h2>
- <%block name="show_title">
- ${title}
- </%block>
- </h2>
-
- </div>
- </%doc>
-
- <div id="docs-body" class="${'withsidebar' if withsidebar else ''}" >
- ${next.body()}
- </div>
-
-</div>
-
-<div id="docs-bottom-navigation" class="docs-navigation-links">
- % if prevtopic:
- Previous:
- <a href="${prevtopic['link']|h}" title="${_('previous chapter')}">${prevtopic['title']}</a>
- % endif
- % if nexttopic:
- Next:
- <a href="${nexttopic['link']|h}" title="${_('next chapter')}">${nexttopic['title']}</a>
- % endif
-
- <div id="docs-copyright">
- % if hasdoc('copyright'):
- &copy; <a href="${pathto('copyright')}">Copyright</a> ${copyright|h}.
- % else:
- &copy; Copyright ${copyright|h}.
- % endif
- % if show_sphinx:
- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> ${sphinx_version|h}.
- % endif
- </div>
-</div>
-
-</div>
diff --git a/doc/build/templates/page.mako b/doc/build/templates/page.mako
deleted file mode 100644
index e0f98cf64..000000000
--- a/doc/build/templates/page.mako
+++ /dev/null
@@ -1,2 +0,0 @@
-<%inherit file="layout.mako"/>
-${body| util.strip_toplevel_anchors} \ No newline at end of file
diff --git a/doc/build/templates/search.mako b/doc/build/templates/search.mako
deleted file mode 100644
index d0aa3d825..000000000
--- a/doc/build/templates/search.mako
+++ /dev/null
@@ -1,21 +0,0 @@
-<%inherit file="layout.mako"/>
-
-<%!
- local_script_files = ['_static/searchtools.js']
-%>
-<%block name="show_title">
- ${_('Search')}
-</%block>
-
-<%block name="headers">
- ${parent.headers()}
- <script type="text/javascript">
- jQuery(function() { Search.loadIndex("searchindex.js"); });
- </script>
-</%block>
-
-<div id="search-results"></div>
-
-<%block name="footer">
- ${parent.footer()}
-</%block>
diff --git a/doc/build/templates/static_base.mako b/doc/build/templates/static_base.mako
deleted file mode 100644
index 9eb5ec046..000000000
--- a/doc/build/templates/static_base.mako
+++ /dev/null
@@ -1,29 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-<html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- ${metatags and metatags or ''}
- <title>
- <%block name="head_title">
- </%block>
- </title>
-
- <%block name="css">
- <!-- begin iterate through SQLA + sphinx environment css_files -->
- % for cssfile in self.attr.default_css_files + css_files:
- <link rel="stylesheet" href="${pathto(cssfile, 1)}" type="text/css" />
- % endfor
- <!-- end iterate through SQLA + sphinx environment css_files -->
- </%block>
-
- <%block name="headers"/>
- </head>
- <body>
- ${next.body()}
- <%block name="footer"/>
- </body>
-</html>
-
-