From ea8fad0de6520f4495702a925d35733641cfe9a5 Mon Sep 17 00:00:00 2001 From: Georg Brandl Date: Sat, 12 Oct 2013 19:27:49 +0200 Subject: [PATCH] Removed the ``sphinx.ext.refcounting`` extension -- it is very specific to CPython and has no place in the main distribution. --- CHANGES | 10 ++++ doc/ext/refcounting.rst | 7 --- doc/extensions.rst | 1 - sphinx/ext/refcounting.py | 101 -------------------------------------- 4 files changed, 10 insertions(+), 109 deletions(-) delete mode 100644 doc/ext/refcounting.rst delete mode 100644 sphinx/ext/refcounting.py diff --git a/CHANGES b/CHANGES index cb80bd7d8..0871cb147 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,13 @@ +Release 1.2 (in development) +============================ + +Incompatible changes +-------------------- + +* Removed the ``sphinx.ext.refcounting`` extension -- it is very specific to + CPython and has no place in the main distribution. + + Release 1.2 beta3 (released Oct 3, 2013) ======================================== diff --git a/doc/ext/refcounting.rst b/doc/ext/refcounting.rst deleted file mode 100644 index e2f338710..000000000 --- a/doc/ext/refcounting.rst +++ /dev/null @@ -1,7 +0,0 @@ -:mod:`sphinx.ext.refcounting` -- Keep track of reference counting behavior -========================================================================== - -.. module:: sphinx.ext.refcounting - :synopsis: Keep track of reference counting behavior. - -.. todo:: Write this section. diff --git a/doc/extensions.rst b/doc/extensions.rst index 07bc7fe4b..b2ac37918 100644 --- a/doc/extensions.rst +++ b/doc/extensions.rst @@ -47,7 +47,6 @@ These extensions are built in and can be activated by respective entries in the ext/math ext/graphviz ext/inheritance - ext/refcounting ext/ifconfig ext/coverage ext/todo diff --git a/sphinx/ext/refcounting.py b/sphinx/ext/refcounting.py deleted file mode 100644 index 918e64f33..000000000 --- a/sphinx/ext/refcounting.py +++ /dev/null @@ -1,101 +0,0 @@ -# -*- coding: utf-8 -*- -""" - sphinx.ext.refcounting - ~~~~~~~~~~~~~~~~~~~~~~ - - Supports reference count annotations for C API functions. Based on - refcount.py and anno-api.py in the old Python documentation tools. - - Usage: Set the `refcount_file` config value to the path to the reference - count data file. - - :copyright: Copyright 2007-2013 by the Sphinx team, see AUTHORS. - :license: BSD, see LICENSE for details. -""" - -from os import path -from docutils import nodes - -from sphinx import addnodes -from sphinx.locale import _ - - -# refcount annotation -class refcount(nodes.emphasis): pass - - -class RCEntry: - def __init__(self, name): - self.name = name - self.args = [] - self.result_type = '' - self.result_refs = None - - -class Refcounts(dict): - @classmethod - def fromfile(cls, filename): - d = cls() - fp = open(filename, 'r') - try: - for line in fp: - line = line.strip() - if line[:1] in ("", "#"): - # blank lines and comments - continue - parts = line.split(":", 4) - if len(parts) != 5: - raise ValueError("Wrong field count in %r" % line) - function, type, arg, refcount, comment = parts - # Get the entry, creating it if needed: - try: - entry = d[function] - except KeyError: - entry = d[function] = RCEntry(function) - if not refcount or refcount == "null": - refcount = None - else: - refcount = int(refcount) - # Update the entry with the new parameter or the result - # information. - if arg: - entry.args.append((arg, type, refcount)) - else: - entry.result_type = type - entry.result_refs = refcount - finally: - fp.close() - return d - - def add_refcount_annotations(self, app, doctree): - for node in doctree.traverse(addnodes.desc_content): - par = node.parent - if par['domain'] != 'c' or par['objtype'] != 'function': - continue - if not par[0].has_key('names') or not par[0]['names']: - continue - entry = self.get(par[0]['names'][0]) - if not entry: - continue - elif entry.result_type not in ("PyObject*", "PyVarObject*"): - continue - if entry.result_refs is None: - rc = _('Return value: Always NULL.') - elif entry.result_refs: - rc = _('Return value: New reference.') - else: - rc = _('Return value: Borrowed reference.') - node.insert(0, refcount(rc, rc)) - - -def init_refcounts(app): - if app.config.refcount_file: - refcounts = Refcounts.fromfile( - path.join(app.srcdir, app.config.refcount_file)) - app.connect('doctree-read', refcounts.add_refcount_annotations) - - -def setup(app): - app.add_node(refcount) - app.add_config_value('refcount_file', '', True) - app.connect('builder-inited', init_refcounts)