[Checkins] SVN: zope.proxy/trunk/ Add Sphinx documentation
Tres Seaver
cvs-admin at zope.org
Wed Jun 6 20:12:25 UTC 2012
Log message for revision 126609:
Add Sphinx documentation
Move doctest examples to API reference.
Changed:
_U zope.proxy/trunk/
U zope.proxy/trunk/CHANGES.txt
A zope.proxy/trunk/docs/api.rst
U zope.proxy/trunk/docs/conf.py
U zope.proxy/trunk/docs/index.rst
U zope.proxy/trunk/src/zope/proxy/decorator.py
-=-
Modified: zope.proxy/trunk/CHANGES.txt
===================================================================
--- zope.proxy/trunk/CHANGES.txt 2012-06-06 20:12:18 UTC (rev 126608)
+++ zope.proxy/trunk/CHANGES.txt 2012-06-06 20:12:22 UTC (rev 126609)
@@ -5,6 +5,8 @@
4.0.0 (unreleased)
------------------
+- Added Sphinx documentation: moved doctest examples to API reference.
+
- Added 'setup.py docs' alias (installs ``Sphinx`` and dependencies).
- Added 'setup.py dev' alias (runs ``setup.py develop`` plus installs
Added: zope.proxy/trunk/docs/api.rst
===================================================================
--- zope.proxy/trunk/docs/api.rst (rev 0)
+++ zope.proxy/trunk/docs/api.rst 2012-06-06 20:12:22 UTC (rev 126609)
@@ -0,0 +1,94 @@
+:mod:`zope.proxy` API
+=====================
+
+:mod:`zope.proxy.interfaces`
+----------------------------
+
+.. automodule:: zope.proxy.interfaces
+
+ .. autointerface:: IProxyIntrospection
+ :members:
+ :member-order: bysource
+
+
+:mod:`zope.proxy`
+-----------------
+
+.. automodule:: zope.proxy
+ :members:
+
+:mod:`zope.proxy.decorator`
+---------------------------
+
+.. automodule:: zope.proxy.decorator
+
+ .. doctest::
+
+ >>> from zope.interface import Interface
+ >>> from zope.interface import directlyProvides
+ >>> from zope.interface import implementer
+ >>> class I1(Interface):
+ ... pass
+ >>> class I2(Interface):
+ ... pass
+ >>> class I3(Interface):
+ ... pass
+ >>> class I4(Interface):
+ ... pass
+ >>> from zope.proxy.decorator import SpecificationDecoratorBase
+ >>> @implementer(I1)
+ ... class D1(SpecificationDecoratorBase):
+ ... pass
+ >>> @implementer(I2)
+ ... class D2(SpecificationDecoratorBase):
+ ... pass
+ >>> @implementer(I3)
+ ... class X(object):
+ ... pass
+ >>> x = X()
+ >>> directlyProvides(x, I4)
+
+ Interfaces of X are ordered with the directly-provided interfaces first.
+
+ .. doctest::
+
+ >>> from zope.interface import providedBy
+ >>> [interface.getName() for interface in list(providedBy(x))]
+ ['I4', 'I3']
+
+ When we decorate objects, what order should the interfaces come
+ in? One could argue that decorators are less specific, so they
+ should come last.
+
+ .. doctest::
+
+ >>> [interface.getName() for interface in list(providedBy(D1(x)))]
+ ['I4', 'I3', 'I1']
+
+ >>> [interface.getName() for interface in list(providedBy(D2(D1(x))))]
+ ['I4', 'I3', 'I1', 'I2']
+
+ SpecificationDecorators also work with old-style classes:
+
+ .. doctest::
+
+ >>> @implementer(I3)
+ ... class X:
+ ... pass
+
+ >>> x = X()
+ >>> directlyProvides(x, I4)
+
+ >>> [interface.getName() for interface in list(providedBy(x))]
+ ['I4', 'I3']
+
+ >>> [interface.getName() for interface in list(providedBy(D1(x)))]
+ ['I4', 'I3', 'I1']
+
+ >>> [interface.getName() for interface in list(providedBy(D2(D1(x))))]
+ ['I4', 'I3', 'I1', 'I2']
+
+ .. autoclass:: DecoratorSpecificationDescriptor
+ :members:
+
+ .. autoclass:: SpecificationDecoratorBase
Modified: zope.proxy/trunk/docs/conf.py
===================================================================
--- zope.proxy/trunk/docs/conf.py 2012-06-06 20:12:18 UTC (rev 126608)
+++ zope.proxy/trunk/docs/conf.py 2012-06-06 20:12:22 UTC (rev 126609)
@@ -25,7 +25,14 @@
# Add any Sphinx extension module names here, as strings. They can be extensions
# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
-extensions = ['sphinx.ext.autodoc', 'sphinx.ext.doctest', 'sphinx.ext.todo', 'sphinx.ext.ifconfig', 'sphinx.ext.viewcode']
+extensions = [
+ 'sphinx.ext.autodoc',
+ 'sphinx.ext.doctest',
+ 'sphinx.ext.todo',
+ 'sphinx.ext.ifconfig',
+ 'sphinx.ext.viewcode',
+ 'repoze.sphinx.autointerface',
+]
# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']
Modified: zope.proxy/trunk/docs/index.rst
===================================================================
--- zope.proxy/trunk/docs/index.rst 2012-06-06 20:12:18 UTC (rev 126608)
+++ zope.proxy/trunk/docs/index.rst 2012-06-06 20:12:22 UTC (rev 126609)
@@ -6,6 +6,7 @@
.. toctree::
:maxdepth: 2
+ api
Indices and tables
Modified: zope.proxy/trunk/src/zope/proxy/decorator.py
===================================================================
--- zope.proxy/trunk/src/zope/proxy/decorator.py 2012-06-06 20:12:18 UTC (rev 126608)
+++ zope.proxy/trunk/src/zope/proxy/decorator.py 2012-06-06 20:12:22 UTC (rev 126609)
@@ -26,67 +26,6 @@
class DecoratorSpecificationDescriptor(ObjectSpecificationDescriptor):
"""Support for interface declarations on decorators
-
- >>> from zope.interface import Interface
- >>> from zope.interface import directlyProvides
- >>> from zope.interface import implementer
- >>> class I1(Interface):
- ... pass
- >>> class I2(Interface):
- ... pass
- >>> class I3(Interface):
- ... pass
- >>> class I4(Interface):
- ... pass
-
- >>> @implementer(I1)
- ... class D1(SpecificationDecoratorBase):
- ... pass
-
-
- >>> @implementer(I2)
- ... class D2(SpecificationDecoratorBase):
- ... pass
-
- >>> @implementer(I3)
- ... class X(object):
- ... pass
-
- >>> x = X()
- >>> directlyProvides(x, I4)
-
- Interfaces of X are ordered with the directly-provided interfaces first
-
- >>> [interface.getName() for interface in list(providedBy(x))]
- ['I4', 'I3']
-
- When we decorate objects, what order should the interfaces come
- in? One could argue that decorators are less specific, so they
- should come last.
-
- >>> [interface.getName() for interface in list(providedBy(D1(x)))]
- ['I4', 'I3', 'I1']
-
- >>> [interface.getName() for interface in list(providedBy(D2(D1(x))))]
- ['I4', 'I3', 'I1', 'I2']
-
- SpecificationDecorators also work with old-style classes:
-
- >>> @implementer(I3)
- ... class X:
- ... pass
-
- >>> x = X()
- >>> directlyProvides(x, I4)
-
- >>> [interface.getName() for interface in list(providedBy(x))]
- ['I4', 'I3']
-
- >>> [interface.getName() for interface in list(providedBy(D1(x)))]
- ['I4', 'I3', 'I1']
-
- >>> [interface.getName() for interface in list(providedBy(D2(D1(x))))]
- ['I4', 'I3', 'I1', 'I2']
"""
def __get__(self, inst, cls=None):
if inst is None:
More information about the checkins
mailing list