summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorg Brandl <georg@python.org>2009-12-23 11:53:19 +0100
committerGeorg Brandl <georg@python.org>2009-12-23 11:53:19 +0100
commit2d64562350dbc4079f045f534b0a204e12fb21c9 (patch)
tree9219d12a8129d370ca9ca9a86c354cccbe274bc9
parentbcea1a1d1c70120884905572066769a2c06c5aa8 (diff)
downloadsphinx-2d64562350dbc4079f045f534b0a204e12fb21c9.tar.gz
Fix some nits after pulling from http://bitbucket.org/howthebodyworks/sphinx/ and add changelog and authors entries.
-rw-r--r--AUTHORS1
-rw-r--r--CHANGES3
-rw-r--r--sphinx/environment.py6
-rw-r--r--tests/test_metadata.py53
4 files changed, 35 insertions, 28 deletions
diff --git a/AUTHORS b/AUTHORS
index 259c0949..09be7533 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -13,6 +13,7 @@ Other contributors, listed alphabetically, are:
* Martin Hans -- autodoc improvements
* Dave Kuhlman -- original LaTeX writer
* Thomas Lamb -- linkcheck builder
+* Dan MacKinlay -- metadata fixes
* Will Maier -- directory HTML builder
* Christopher Perkins -- autosummary integration
* Benjamin Peterson -- unittests
diff --git a/CHANGES b/CHANGES
index 8d4e4f86..66d1ab08 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,6 +1,9 @@
Release 1.0 (in development)
============================
+* All docinfo metadata is now put into the document metadata, not just
+ the author.
+
* Added new HTML theme ``agogo``, created by Andi Albrecht.
* Added new minimal theme called scrolls, created by Armin Ronacher.
diff --git a/sphinx/environment.py b/sphinx/environment.py
index 64c745a7..426d78c2 100644
--- a/sphinx/environment.py
+++ b/sphinx/environment.py
@@ -12,12 +12,10 @@
import re
import os
import time
-import heapq
import types
import codecs
import imghdr
import string
-import difflib
import cPickle as pickle
from os import path
from glob import glob
@@ -757,7 +755,7 @@ class BuildEnvironment:
def process_metadata(self, docname, doctree):
"""
Process the docinfo part of the doctree as metadata.
- Keep processing minimal - just return what docutils says.
+ Keep processing minimal -- just return what docutils says.
"""
self.metadata[docname] = md = {}
try:
@@ -772,7 +770,7 @@ class BuildEnvironment:
# nodes are multiply inherited...
if isinstance(node, nodes.authors):
md['authors'] = [author.astext() for author in node]
- elif isinstance(node, nodes.TextElement): #e.g. author
+ elif isinstance(node, nodes.TextElement): # e.g. author
md[node.__class__.__name__] = node.astext()
else:
name, body = node
diff --git a/tests/test_metadata.py b/tests/test_metadata.py
index ea41fc11..9675947a 100644
--- a/tests/test_metadata.py
+++ b/tests/test_metadata.py
@@ -3,23 +3,20 @@
test_metadata
~~~~~~~~~~~~~
- Test our ahndling of metadata in files with bibliographic metadata
+ Test our handling of metadata in files with bibliographic metadata.
:copyright: Copyright 2007-2009 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details.
"""
-
-
-# adapted from an example of bibliographic metadata at http://docutils.sourceforge.net/docs/user/rst/demo.txt
+# adapted from an example of bibliographic metadata at
+# http://docutils.sourceforge.net/docs/user/rst/demo.txt
from util import *
from nose.tools import assert_equals
from sphinx.environment import BuildEnvironment
-from sphinx.builders.html import StandaloneHTMLBuilder
-from sphinx.builders.latex import LaTeXBuilder
app = env = None
warnings = []
@@ -30,7 +27,7 @@ def setup_module():
app = TestApp(srcdir='(temp)')
env = BuildEnvironment(app.srcdir, app.doctreedir, app.config)
# Huh. Why do I need to do this?
- env.set_warnfunc(lambda *args: warnings.append(args))
+ env.set_warnfunc(lambda *args: warnings.append(args))
msg, num, it = env.update(app.config, app.srcdir, app.doctreedir, app)
for docname in it:
pass
@@ -40,28 +37,36 @@ def teardown_module():
def test_docinfo():
"""
- inspect the 'docinfo' metadata stored in the first node of the document.
+ Inspect the 'docinfo' metadata stored in the first node of the document.
Note this doesn't give us access to data stored in subsequence blocks
that might be considered document metadata, such as 'abstract' or
'dedication' blocks, or the 'meta' role. Doing otherwise is probably more
messing with the internals of sphinx than this rare use case merits.
"""
exampledocinfo = env.metadata['metadata']
- expected_metadata = {
- 'author': u'David Goodger',
- 'authors': [u'Me', u'Myself', u'I'],
- 'address': u'123 Example Street\nExample, EX Canada\nA1B 2C3',
- 'field name': u'This is a generic bibliographic field.',
- 'field name 2': u'Generic bibliographic fields may contain multiple body elements.\n\nLike this.',
- 'status': u'This is a "work in progress"',
- 'version': u'1',
- 'copyright': u"This document has been placed in the public domain. You\nmay do with it as you wish. You may copy, modify,\nredistribute, reattribute, sell, buy, rent, lease,\ndestroy, or improve it, quote it at length, excerpt,\nincorporate, collate, fold, staple, or mutilate it, or do\nanything else to it that your or anyone else's heart\ndesires.",
- 'contact': u'goodger@python.org',
- 'date': u'2006-05-21',
- 'organization': u'humankind',
- 'revision': u'4564'}
+ expecteddocinfo = {
+ 'author': u'David Goodger',
+ 'authors': [u'Me', u'Myself', u'I'],
+ 'address': u'123 Example Street\nExample, EX Canada\nA1B 2C3',
+ 'field name': u'This is a generic bibliographic field.',
+ 'field name 2': (u'Generic bibliographic fields may contain multiple '
+ u'body elements.\n\nLike this.'),
+ 'status': u'This is a "work in progress"',
+ 'version': u'1',
+ 'copyright': (u'This document has been placed in the public domain. '
+ u'You\nmay do with it as you wish. You may copy, modify,'
+ u'\nredistribute, reattribute, sell, buy, rent, lease,\n'
+ u'destroy, or improve it, quote it at length, excerpt,\n'
+ u'incorporate, collate, fold, staple, or mutilate it, or '
+ u'do\nanything else to it that your or anyone else\'s '
+ u'heart\ndesires.'),
+ 'contact': u'goodger@python.org',
+ 'date': u'2006-05-21',
+ 'organization': u'humankind',
+ 'revision': u'4564',
+ }
# I like this way of comparing dicts - easier to see the error.
for key in exampledocinfo:
- yield assert_equals, exampledocinfo.get(key), expected_metadata.get(key)
- #but then we still have to check for missing keys
- yield assert_equals, set(expected_metadata.keys()), set(exampledocinfo.keys())
+ yield assert_equals, exampledocinfo.get(key), expecteddocinfo.get(key)
+ # but then we still have to check for missing keys
+ yield assert_equals, set(expecteddocinfo.keys()), set(exampledocinfo.keys())