summaryrefslogtreecommitdiff
path: root/doc/build
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2012-09-09 14:39:05 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2012-09-09 14:39:05 -0400
commitb96250d0063cd7ce9cc1f95abade68e6656d6acb (patch)
tree74d44bfe83ab92ce098c561db9130d63d5d9d55c /doc/build
parenta10ea71125e0f873683831bfc736edfd8a5a8b1a (diff)
downloadsqlalchemy-b96250d0063cd7ce9cc1f95abade68e6656d6acb.tar.gz
- add new sphinx handlers to render method and attribute inheritance
for inherited members
Diffstat (limited to 'doc/build')
-rw-r--r--doc/build/builder/builders.py36
-rw-r--r--doc/build/static/docs.css18
2 files changed, 48 insertions, 6 deletions
diff --git a/doc/build/builder/builders.py b/doc/build/builder/builders.py
index be684f039..586eff458 100644
--- a/doc/build/builder/builders.py
+++ b/doc/build/builder/builders.py
@@ -193,11 +193,44 @@ class PopupLatexFormatter(LatexFormatter):
LatexFormatter.format(self, self._filter_tokens(tokensource), outfile)
def autodoc_skip_member(app, what, name, obj, skip, options):
- if what == 'class' and skip and name in ('__init__', '__eq__', '__ne__', '__lt__', '__le__') and obj.__doc__:
+ if what == 'class' and skip and \
+ name in ('__init__', '__eq__', '__ne__', '__lt__', '__le__') and \
+ obj.__doc__:
return False
else:
return skip
+# im sure this is in the app somewhere, but I don't really
+# know where, so we're doing it here.
+_track_autodoced = {}
+def autodoc_process_docstring(app, what, name, obj, options, lines):
+ if what == "class":
+ _track_autodoced[name] = obj
+ 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:
+ lines[:0] = [
+ ".. container:: inherited_member",
+ "",
+ " *inherited from the* :%s:`.%s.%s` *%s of* :class:`.%s`" % (
+ "attr" if what == "attribute"
+ else "meth",
+ supercls.__name__,
+ attrname,
+ what,
+ supercls.__name__
+ ),
+ ""
+ ]
+
def setup(app):
app.add_lexer('pycon+sql', PyConWithSQLLexer())
app.add_lexer('python+sql', PythonWithSQLLexer())
@@ -205,6 +238,7 @@ def setup(app):
app.add_config_value('site_base', "", True)
app.add_config_value('build_number', "", 1)
app.connect('autodoc-skip-member', autodoc_skip_member)
+ app.connect('autodoc-process-docstring', autodoc_process_docstring)
PygmentsBridge.html_formatter = PopupSQLFormatter
PygmentsBridge.latex_formatter = PopupLatexFormatter
diff --git a/doc/build/static/docs.css b/doc/build/static/docs.css
index 33f715af1..b8e334616 100644
--- a/doc/build/static/docs.css
+++ b/doc/build/static/docs.css
@@ -7,7 +7,7 @@ body {
}
a {
- font-weight:normal;
+ font-weight:normal;
text-decoration:none;
}
@@ -29,7 +29,7 @@ a:hover {
/* paragraph links after sections.
These aren't visible until hovering
- over the <h> tag, then have a
+ over the <h> tag, then have a
"reverse video" effect over the actual
link
*/
@@ -252,7 +252,7 @@ a.headerlink:hover {
}
#docs-container pre {
- background-color: #f0f0f0;
+ background-color: #f0f0f0;
border: solid 1px #ccc;
box-shadow: 2px 2px 3px #DFDFDF;
padding:10px;
@@ -284,7 +284,7 @@ a.headerlink:hover {
line-height:1.2em;
}
-#docs-container a.sql_link,
+#docs-container a.sql_link,
#docs-container .sql_link
{
text-decoration: none;
@@ -316,6 +316,13 @@ div.admonition, div.topic, p.deprecated, p.versionadded, p.versionchanged {
box-shadow: 2px 2px 3px #DFDFDF;
}
+div.inherited-member {
+ border:1px solid #CCCCCC;
+ padding:5px 5px;
+ font-size:.9em;
+ box-shadow: 2px 2px 3px #DFDFDF;
+}
+
p.versionadded span.versionmodified,
p.versionchanged span.versionmodified,
p.deprecated span.versionmodified {
@@ -349,6 +356,7 @@ dl.exception > dt
}
+
dt:target, span.highlight {
background-color:#FBE54E;
}
@@ -400,7 +408,7 @@ tt {
.go {color:#804049;}
-/* special "index page" sections
+/* special "index page" sections
with specific formatting
*/