Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
zope.interface / docs / _build / doctrees / api.doctree
Size: Mime:
€cdocutils.nodes
document
q)q}q(U
autofootnotesq]qUtransformerqNUsubstitution_namesq}qU
citation_refsq	}q
Usymbol_footnotesq]qUreporterq
NU	rawsourceqUUtagnameqUdocumentqUautofootnote_startqKU	footnotesq]qUsubstitution_defsq}qUrefidsq}qU
attributesq}q(Udupnamesq]UsourceX:/home/tseaver/projects/Zope/Z3/zope.interface/docs/api.rstqUclassesq]Uidsq]Unamesq]Ubackrefsq]uUchildrenq ]q!cdocutils.nodes
section
q")q#}q$(Ulineq%KUsourceq&hh}q'(h]h]q(U zope-interface-api-documentationq)ah]h]q*X zope.interface api documentationq+ah]uh ]q,(cdocutils.nodes
title
q-)q.}q/(h%Kh&hh}q0(h]h]h]h]h]uh ]q1(csphinx.addnodes
pending_xref
q2)q3}q4(h%Kh&hh}q5(h]U	py:moduleq6Nh]h]U	refdomainXpyq7Upy:classq8NUreftypeXmodU	reftargetq9Xzope.interfaceUrefwarnq:‰h]h]Urefexplicit‰Urefdocq;Xapiq<uh ]q=cdocutils.nodes
literal
q>)q?}q@(h ]qAcdocutils.nodes
Text
qBXzope.interfaceqC…qD}qE(hUUparentqFh?ubahUliteralqGhX:mod:`zope.interface`qHhFh3h}qI(h]h]h]h]h]qJ(UxrefqKh7Xpy-modqLeuubahUpending_xrefqMhhHhFh.ubhBX API DocumentationqN…qO}qP(hX API DocumentationqQhFh.ubehUtitleqRhhhX':mod:`zope.interface` API DocumentationqShFh#ubh")qT}qU(h%Kh&hh}qV(h]h]qWU&zope-interface-interface-specificationqXah]h]qYX&zope.interface.interface.specificationqZah]uh ]q[(h-)q\}q](h%Kh&hh}q^(h]h]h]h]h]uh ]q_h2)q`}qa(h%Kh&hh}qb(h]h6Nh]h]U	refdomainXpyqch8NUreftypeXclassh9X&zope.interface.interface.Specificationh:‰h]h]Urefexplicit‰h;h<uh ]qdh>)qe}qf(h ]qghBX&zope.interface.interface.Specificationqh…qi}qj(hUhFheubahhGhX/:class:`zope.interface.interface.Specification`qkhFh`h}ql(h]h]h]h]h]qm(hKhcXpy-classqneuubahhMhhkhFh\ubahhRhhhhkhFhTubh")qo}qp(h%K	h&hh}qq(h]qrXapiqsah]qtUapiquah]h]h]uh ]qv(h-)qw}qx(h%K	h&hh}qy(h]h]h]h]h]uh ]qzhBXAPIq{…q|}q}(hXAPIq~hFhwubahhRhhhh~hFhoubcdocutils.nodes
paragraph
q)q€}q(h%Kh&hh}q‚(h]h]h]h]h]uh ]qƒ(hBX3Specification objects implement the API defined by
q„…q…}q†(hX3Specification objects implement the API defined by
hFh€ubh2)q‡}qˆ(h%Kh&hh}q‰(h]h6Nh]h]U	refdomainXpyqŠh8NUreftypeXclassh9X(zope.interface.interfaces.ISpecificationh:‰h]h]Urefexplicit‰h;h<uh ]q‹h>)qŒ}q(h ]qŽhBX(zope.interface.interfaces.ISpecificationq…q}q‘(hUhFhŒubahhGhX1:class:`zope.interface.interfaces.ISpecification`q’hFh‡h}q“(h]h]h]h]h]q”(hKhŠXpy-classq•euubahhMhh’hFh€ubhBX:…q–}q—(hX:hFh€ubehU	paragraphq˜hhhXeSpecification objects implement the API defined by
:class:`zope.interface.interfaces.ISpecification`:hFhoubcsphinx.addnodes
index
q™)qš}q›(h%Nh&Nh}qœ(h]h]h]Uentries]q(UsingleqžX7ISpecification (interface in zope.interface.interfaces)X(zope.interface.interfaces.ISpecificationqŸUtq ah]h]uh ]hUindexq¡hhhUhFhoubcsphinx.addnodes
desc
q¢)q£}q¤(h%Nh&Nh}q¥(h]Udomainq¦Xpyh]h]Udesctypeq§X	interfaceq¨Uobjtypeq©h¨Unoindexqª‰h]h]uh ]q«(csphinx.addnodes
desc_signature
q¬)q­}q®(h%Nh&U	<autodoc>q¯h}q°(h]h]h]q±hŸaUfirstq²‰Uclassq³Uh]q´hŸaUmoduleqµcdocutils.nodes
reprunicode
q¶Xzope.interface.interfacesq·…q¸}q¹bh]UfullnameqºXISpecificationq»uh ]q¼(csphinx.addnodes
desc_annotation
q½)q¾}q¿(h%Nh&h¯h}qÀ(h]h]h]h]h]uh ]qÁhBX
interface q…qÃ}qÄ(hUhFh¾ubahUdesc_annotationqÅhhhX
interface hFh­ubcsphinx.addnodes
desc_addname
qÆ)qÇ}qÈ(h%Nh&h¯h}qÉ(h]h]h]h]h]uh ]qÊhBXzope.interface.interfaces.q˅qÌ}qÍ(hUhFhÇubahUdesc_addnameqÎhhhXzope.interface.interfaces.hFh­ubcsphinx.addnodes
desc_name
qÏ)qÐ}qÑ(h%Nh&h¯h}qÒ(h]h]h]h]h]uh ]qÓhBXISpecificationqԅqÕ}qÖ(hUhFhÐubahU	desc_nameq×hhhh»hFh­ubcsphinx.addnodes
only
qØ)qÙ}qÚ(h%Nh&Nh}qÛ(h]UexprUhtmlqÜh]h]h]h]uh ]qÝh2)qÞ}qß(h ]qàcdocutils.nodes
inline
qá)qâ}qã(h ]qähBX[source]q允qæ}qç(hUhFhâubahUinlineqèhUhFhÞh}qé(h]h]h]h]h]qêU
viewcode-linkqëauubahhMhUhFhÙh}qì(h]Urefidh»h]U	refdomainUstdqíh]UreftypeUviewcodeqîUrefdoch<h]h]Urefexplicit‰U	reftargetU"_modules/zope/interface/interfacesuubahUonlyqïhhhUhFh­ubehUdesc_signatureqðhhhh»hFh£ubcsphinx.addnodes
desc_content
qñ)qò}qó(h%Nh&h¯h}qô(h]h]h]h]h]uh ]qõ(h)qö}q÷(h%Kh&X¦/home/tseaver/projects/Zope/Z3/zope.interface/.tox/docs/lib/python2.7/site-packages/zope/interface/interfaces.py:docstring of zope.interface.interfaces.ISpecificationh}qø(h]h]h]h]h]uh ]qùhBX Object Behavioral specificationsqú…qû}qü(hX Object Behavioral specificationsqýhFhöubahh˜hhhhýhFhòubh™)qþ}qÿ(h%Nh&X@docstring of zope.interface.interfaces.ISpecification.providedByrh}r(h]h]h]Uentries]r(hžX$providedBy() (ISpecification method)XISpecification.providedByrUtrah]h]uh ]hh¡hhhUhFhòubh¢)r}r(h%Nh&jh}r(h]h¦Xpyh]h]h§Xmethodrh©jhª‰h]h]uh ]r	(h¬)r
}r(h%Kh&U<autointerface>rh}r
(h]h]h]rjah²‰h³h»h]rjahµNh]hºjuh ]r(hÏ)r}r(h%Kh&jh}r(h]h]h]h]h]uh ]rhBX
providedByr…r}r(hUhFjubahh×hhhX
providedByhFj
ubcsphinx.addnodes
desc_parameterlist
r)r}r(h%Kh&jh}r(h]h]h]h]h]uh ]rcsphinx.addnodes
desc_parameter
r)r}r(h ]r hBXobjectr!…r"}r#(hUhFjubahUdesc_parameterr$hXobjecthFjh}r%(h]h]h]h]h]uubahUdesc_parameterlistr&hhhUhFj
ubehhðhhhXprovidedBy(object)hFjubhñ)r'}r((h%Kh&jh}r)(h]h]h]h]h]uh ]r*(h)r+}r,(h%Kh&jh}r-(h]h]h]h]h]uh ]r.hBX7Test whether the interface is implemented by the objectr/…r0}r1(hX7Test whether the interface is implemented by the objectr2hFj+ubahh˜hhhj2hFj'ubh)r3}r4(h%Kh&jh}r5(h]h]h]h]h]uh ]r6hBXReturn true of the object asserts that it implements the
interface, including asserting that it implements an extended
interface.r7…r8}r9(hXReturn true of the object asserts that it implements the
interface, including asserting that it implements an extended
interface.r:hFj3ubahh˜hhhj:hFj'ubehUdesc_contentr;hhhUhFjubehUdescr<hhhUhFhòubh™)r=}r>(h%Nh&XCdocstring of zope.interface.interfaces.ISpecification.implementedByr?h}r@(h]h]h]Uentries]rA(hžX'implementedBy() (ISpecification method)XISpecification.implementedByrBUtrCah]h]uh ]hh¡hhhUhFhòubh¢)rD}rE(h%Nh&j?h}rF(h]h¦Xpyh]h]h§XmethodrGh©jGhª‰h]h]uh ]rH(h¬)rI}rJ(h%Kh&jh}rK(h]h]h]rLjBah²‰h³h»h]rMjBahµNh]hºjBuh ]rN(hÏ)rO}rP(h%Kh&jh}rQ(h]h]h]h]h]uh ]rRhBX
implementedByrS…rT}rU(hUhFjOubahh×hhhX
implementedByhFjIubj)rV}rW(h%Kh&jh}rX(h]h]h]h]h]uh ]rYj)rZ}r[(h ]r\hBXclass_r]…r^}r_(hUhFjZubahj$hXclass_hFjVh}r`(h]h]h]h]h]uubahj&hhhUhFjIubehhðhhhXimplementedBy(class_)hFjDubhñ)ra}rb(h%Kh&jh}rc(h]h]h]h]h]uh ]rd(h)re}rf(h%Kh&j?h}rg(h]h]h]h]h]uh ]rhhBXCTest whether the interface is implemented by instances of the classri…rj}rk(hXCTest whether the interface is implemented by instances of the classrlhFjeubahh˜hhhjlhFjaubh)rm}rn(h%Kh&j?h}ro(h]h]h]h]h]uh ]rphBX‹Return true of the class asserts that its instances implement the
interface, including asserting that they implement an extended
interface.rq…rr}rs(hX‹Return true of the class asserts that its instances implement the
interface, including asserting that they implement an extended
interface.rthFjmubahh˜hhhjthFjaubehj;hhhUhFjDubehj<hhhUhFhòubh™)ru}rv(h%Nh&XAdocstring of zope.interface.interfaces.ISpecification.isOrExtendsrwh}rx(h]h]h]Uentries]ry(hžX%isOrExtends() (ISpecification method)XISpecification.isOrExtendsrzUtr{ah]h]uh ]hh¡hhhUhFhòubh¢)r|}r}(h%Nh&jwh}r~(h]h¦Xpyh]h]h§Xmethodrh©jhª‰h]h]uh ]r€(h¬)r}r‚(h%Kh&jh}rƒ(h]h]h]r„jzah²‰h³h»h]r…jzahµNh]hºjzuh ]r†(hÏ)r‡}rˆ(h%Kh&jh}r‰(h]h]h]h]h]uh ]rŠhBXisOrExtendsr‹…rŒ}r(hUhFj‡ubahh×hhhXisOrExtendshFjubj)rŽ}r(h%Kh&jh}r(h]h]h]h]h]uh ]r‘j)r’}r“(h ]r”hBXotherr•…r–}r—(hUhFj’ubahj$hXotherhFjŽh}r˜(h]h]h]h]h]uubahj&hhhUhFjubehhðhhhXisOrExtends(other)hFj|ubhñ)r™}rš(h%Kh&jh}r›(h]h]h]h]h]uh ]rœh)r}rž(h%Kh&jwh}rŸ(h]h]h]h]h]uh ]r hBX4Test whether the specification is or extends anotherr¡…r¢}r£(hX4Test whether the specification is or extends anotherr¤hFjubahh˜hhhj¤hFj™ubahj;hhhUhFj|ubehj<hhhUhFhòubh™)r¥}r¦(h%Nh&X=docstring of zope.interface.interfaces.ISpecification.extendsr§h}r¨(h]h]h]Uentries]r©(hžX!extends() (ISpecification method)XISpecification.extendsrªUtr«ah]h]uh ]hh¡hhhUhFhòubh¢)r¬}r­(h%Nh&j§h}r®(h]h¦Xpyh]h]h§Xmethodr¯h©j¯hª‰h]h]uh ]r°(h¬)r±}r²(h%Kh&jh}r³(h]h]h]r´jªah²‰h³h»h]rµjªahµNh]hºjªuh ]r¶(hÏ)r·}r¸(h%Kh&jh}r¹(h]h]h]h]h]uh ]rºhBXextendsr»…r¼}r½(hUhFj·ubahh×hhhXextendshFj±ubj)r¾}r¿(h%Kh&jh}rÀ(h]h]h]h]h]uh ]rÁ(j)rÂ}rÃ(h ]rÄhBXotherrÅ…rÆ}rÇ(hUhFjÂubahj$hXotherhFj¾h}rÈ(h]h]h]h]h]uubj)rÉ}rÊ(h ]rËhBXstrict=TruerÌ…rÍ}rÎ(hUhFjÉubahj$hXstrict=TruehFj¾h}rÏ(h]h]h]h]h]uubehj&hhhUhFj±ubehhðhhhXextends(other, strict=True)hFj¬ubhñ)rÐ}rÑ(h%Kh&jh}rÒ(h]h]h]h]h]uh ]rÓ(h)rÔ}rÕ(h%Kh&j§h}rÖ(h]h]h]h]h]uh ]r×hBX,Test whether a specification extends anotherrØ…rÙ}rÚ(hX,Test whether a specification extends anotherrÛhFjÔubahh˜hhhjÛhFjÐubh)rÜ}rÝ(h%Kh&j§h}rÞ(h]h]h]h]h]uh ]rßhBXjThe specification extends other if it has other as a base
interface or if one of it's bases extends other.rà…rá}râ(hXjThe specification extends other if it has other as a base
interface or if one of it's bases extends other.rãhFjÜubahh˜hhhjãhFjÐubh)rä}rå(h%Kh&j§h}ræ(h]h]h]h]h]uh ]rçhBX:If strict is false, then the specification extends itself.r腁ré}rê(hX:If strict is false, then the specification extends itself.rëhFjäubahh˜hhhjëhFjÐubehj;hhhUhFj¬ubehj<hhhUhFhòubh™)rì}rí(h%Nh&X=docstring of zope.interface.interfaces.ISpecification.weakrefrîh}rï(h]h]h]Uentries]rð(hžX!weakref() (ISpecification method)XISpecification.weakrefrñUtròah]h]uh ]hh¡hhhUhFhòubh¢)ró}rô(h%Nh&jîh}rõ(h]h¦Xpyh]h]h§Xmethodröh©jöhª‰h]h]uh ]r÷(h¬)rø}rù(h%Kh&jh}rú(h]h]h]rûjñah²‰h³h»h]rüjñahµNh]hºjñuh ]rý(hÏ)rþ}rÿ(h%Kh&jh}r(h]h]h]h]h]uh ]rhBXweakrefr…r}r(hUhFjþubahh×hhhXweakrefhFjøubj)r}r(h%Kh&jh}r(h]h]h]h]h]uh ]rj)r	}r
(h ]rhBX
callback=Noner…r
}r(hUhFj	ubahj$hX
callback=NonehFjh}r(h]h]h]h]h]uubahj&hhhUhFjøubehhðhhhXweakref(callback=None)hFjóubhñ)r}r(h%Kh&jh}r(h]h]h]h]h]uh ]r(h)r}r(h%Kh&jîh}r(h]h]h]h]h]uh ]rhBX%Return a weakref to the specificationr…r}r(hX%Return a weakref to the specificationrhFjubahh˜hhhjhFjubh)r}r(h%Kh&jîh}r(h]h]h]h]h]uh ]rhBXÞThis method is, regrettably, needed to allow weakrefs to be
computed to security-proxied specifications.  While the
zope.interface package does not require zope.security or
zope.proxy, it has to be able to coexist with it.r …r!}r"(hXÞThis method is, regrettably, needed to allow weakrefs to be
computed to security-proxied specifications.  While the
zope.interface package does not require zope.security or
zope.proxy, it has to be able to coexist with it.r#hFjubahh˜hhhj#hFjubehj;hhhUhFjóubehj<hhhUhFhòubh™)r$}r%(h%Nh&X?docstring of zope.interface.interfaces.ISpecification.__bases__r&h}r'(h]h]h]Uentries]r((hžX$__bases__ (ISpecification attribute)XISpecification.__bases__r)Utr*ah]h]uh ]hh¡hhhUhFhòubh¢)r+}r,(h%Nh&j&h}r-(h]h¦Xpyh]h]h§X	attributer.h©j.hª‰h]h]uh ]r/(h¬)r0}r1(h%Kh&jh}r2(h]h]h]r3j)ah²‰h³h»h]r4j)ahµNh]hºj)uh ]r5hÏ)r6}r7(h%Kh&jh}r8(h]h]h]h]h]uh ]r9hBX	__bases__r:…r;}r<(hUhFj6ubahh×hhhX	__bases__r=hFj0ubahhðhhhj=hFj+ubhñ)r>}r?(h%Kh&jh}r@(h]h]h]h]h]uh ]rA(h)rB}rC(h%Kh&j&h}rD(h]h]h]h]h]uh ]rEhBXBase specificationsrF…rG}rH(hXBase specificationsrIhFjBubahh˜hhhjIhFj>ubh)rJ}rK(h%Kh&j&h}rL(h]h]h]h]h]uh ]rMhBXLA tuple if specifications from which this specification is
directly derived.rN…rO}rP(hXLA tuple if specifications from which this specification is
directly derived.rQhFjJubahh˜hhhjQhFj>ubehj;hhhUhFj+ubehj<hhhUhFhòubh™)rR}rS(h%Nh&X=docstring of zope.interface.interfaces.ISpecification.__sro__rTh}rU(h]h]h]Uentries]rV(hžX"__sro__ (ISpecification attribute)XISpecification.__sro__rWUtrXah]h]uh ]hh¡hhhUhFhòubh¢)rY}rZ(h%Nh&jTh}r[(h]h¦Xpyh]h]h§X	attributer\h©j\hª‰h]h]uh ]r](h¬)r^}r_(h%Kh&jh}r`(h]h]h]rajWah²‰h³h»h]rbjWahµNh]hºjWuh ]rchÏ)rd}re(h%Kh&jh}rf(h]h]h]h]h]uh ]rghBX__sro__rh…ri}rj(hUhFjdubahh×hhhX__sro__rkhFj^ubahhðhhhjkhFjYubhñ)rl}rm(h%Kh&jh}rn(h]h]h]h]h]uh ]ro(h)rp}rq(h%Kh&jTh}rr(h]h]h]h]h]uh ]rshBXSpecification-resolution orderrt…ru}rv(hXSpecification-resolution orderrwhFjpubahh˜hhhjwhFjlubh)rx}ry(h%Kh&jTh}rz(h]h]h]h]h]uh ]r{hBXjA tuple of the specification and all of it's ancestor
specifications from most specific to least specific.r|…r}}r~(hXjA tuple of the specification and all of it's ancestor
specifications from most specific to least specific.rhFjxubahh˜hhhjhFjlubh)r€}r(h%Kh&jTh}r‚(h]h]h]h]h]uh ]rƒhBXG(This is similar to the method-resolution order for new-style classes.)r„…r…}r†(hXG(This is similar to the method-resolution order for new-style classes.)r‡hFj€ubahh˜hhhj‡hFjlubehj;hhhUhFjYubehj<hhhUhFhòubh™)rˆ}r‰(h%Nh&X=docstring of zope.interface.interfaces.ISpecification.__iro__rŠh}r‹(h]h]h]Uentries]rŒ(hžX"__iro__ (ISpecification attribute)XISpecification.__iro__rUtrŽah]h]uh ]hh¡hhhUhFhòubh¢)r}r(h%Nh&jŠh}r‘(h]h¦Xpyh]h]h§X	attributer’h©j’hª‰h]h]uh ]r“(h¬)r”}r•(h%Kh&jh}r–(h]h]h]r—jah²‰h³h»h]r˜jahµNh]hºjuh ]r™hÏ)rš}r›(h%Kh&jh}rœ(h]h]h]h]h]uh ]rhBX__iro__rž…rŸ}r (hUhFjšubahh×hhhX__iro__r¡hFj”ubahhðhhhj¡hFjubhñ)r¢}r£(h%Kh&jh}r¤(h]h]h]h]h]uh ]r¥(h)r¦}r§(h%Kh&jŠh}r¨(h]h]h]h]h]uh ]r©hBXInterface-resolution orderrª…r«}r¬(hXInterface-resolution orderr­hFj¦ubahh˜hhhj­hFj¢ubh)r®}r¯(h%Kh&jŠh}r°(h]h]h]h]h]uh ]r±hBXœA tuple of the of the specification's ancestor interfaces from
most specific to least specific.  The specification itself is
included if it is an interface.r²…r³}r´(hXœA tuple of the of the specification's ancestor interfaces from
most specific to least specific.  The specification itself is
included if it is an interface.rµhFj®ubahh˜hhhjµhFj¢ubh)r¶}r·(h%Kh&jŠh}r¸(h]h]h]h]h]uh ]r¹hBXG(This is similar to the method-resolution order for new-style classes.)rº…r»}r¼(hXG(This is similar to the method-resolution order for new-style classes.)r½hFj¶ubahh˜hhhj½hFj¢ubehj;hhhUhFjubehj<hhhUhFhòubh™)r¾}r¿(h%Nh&X9docstring of zope.interface.interfaces.ISpecification.getrÀh}rÁ(h]h]h]Uentries]rÂ(hžXget() (ISpecification method)XISpecification.getrÃUtrÄah]h]uh ]hh¡hhhUhFhòubh¢)rÅ}rÆ(h%Nh&jÀh}rÇ(h]h¦Xpyh]h]h§XmethodrÈh©jÈhª‰h]h]uh ]rÉ(h¬)rÊ}rË(h%Kh&jÀh}rÌ(h]h]h]rÍjÃah²‰h³h»h]rÎjÃahµNh]hºjÃuh ]rÏ(hÏ)rÐ}rÑ(h%Kh&jÀh}rÒ(h]h]h]h]h]uh ]rÓhBXgetrÔ…rÕ}rÖ(hUhFjÐubahh×hhhXgethFjÊubj)r×}rØ(h%Kh&jÀh}rÙ(h]h]h]h]h]uh ]rÚ(j)rÛ}rÜ(h ]rÝhBXnamerÞ…rß}rà(hUhFjÛubahj$hXnamehFj×h}rá(h]h]h]h]h]uubj)râ}rã(h ]rähBXdefault=Noner允ræ}rç(hUhFjâubahj$hXdefault=NonehFj×h}rè(h]h]h]h]h]uubehj&hhhUhFjÊubehhðhhhXget(name, default=None)hFjÅubhñ)ré}rê(h%Kh&jÀh}rë(h]h]h]h]h]uh ]rì(h)rí}rî(h%Kh&jÀh}rï(h]h]h]h]h]uh ]rðhBX"Look up the description for a namerñ…rò}ró(hX"Look up the description for a namerôhFjíubahh˜hhhjôhFjéubh)rõ}rö(h%Kh&jÀh}r÷(h]h]h]h]h]uh ]røhBX?If the named attribute is not defined, the default is
returned.rù…rú}rû(hX?If the named attribute is not defined, the default is
returned.rühFjõubahh˜hhhjühFjéubehj;hhhUhFjÅubehj<hhhUhFhòubehj;hhhUhFh£ubehj<hhhUhFhoubehUsectionrýhhhUhFhTU
referencedrþKubh")rÿ}r(h%Kh&hh}r(h]rXusagerah]rUusagerah]h]h]uh ]r(h-)r}r(h%Kh&hh}r	(h]h]h]h]h]uh ]r
hBXUsager…r}r
(hXUsagerhFjubahhRhhhjhFjÿubh)r}r(h%Kh&hh}r(h]h]h]h]h]uh ]rhBXFor example:r…r}r(hXFor example:rhFjubahh˜hhhjhFjÿubcdocutils.nodes
literal_block
r)r}r(h%Kh&hh}r(h]U	xml:spacerUpreserverh]h]UtestnodetypeXdoctestUgroups]rUdefaultrah]h]Uoptionsr}uh ]r hBX­>>> from zope.interface.interface import Specification
>>> from zope.interface import Interface
>>> class I1(Interface):
...     pass
>>> class I2(I1):
...     pass
>>> class I3(I2):
...     pass
>>> [i.__name__ for i in I1.__bases__]
['Interface']
>>> [i.__name__ for i in I2.__bases__]
['I1']
>>> I3.extends(I1)
True
>>> I2.__bases__ = (Interface, )
>>> [i.__name__ for i in I2.__bases__]
['Interface']
>>> I3.extends(I1)
Falser!…r"}r#(hUhFjubahU
literal_blockr$hhhX­>>> from zope.interface.interface import Specification
>>> from zope.interface import Interface
>>> class I1(Interface):
...     pass
>>> class I2(I1):
...     pass
>>> class I3(I2):
...     pass
>>> [i.__name__ for i in I1.__bases__]
['Interface']
>>> [i.__name__ for i in I2.__bases__]
['I1']
>>> I3.extends(I1)
True
>>> I2.__bases__ = (Interface, )
>>> [i.__name__ for i in I2.__bases__]
['Interface']
>>> I3.extends(I1)
FalsehFjÿubh)r%}r&(h%K.h&hh}r'(h]h]h]h]h]uh ]r((hBXExmples for r)…r*}r+(hXExmples for hFj%ubh2)r,}r-(h%K.h&hh}r.(h]h6Nh]h]U	refdomainXpyr/h8NUreftypeXmethh9XSpecification.providedByh:‰h]h]Urefexplicit‰h;h<uh ]r0h>)r1}r2(h ]r3hBXSpecification.providedBy()r4…r5}r6(hUhFj1ubahhGhX :meth:`Specification.providedBy`r7hFj,h}r8(h]h]h]h]h]r9(hKj/Xpy-methr:euubahhMhj7hFj%ubhBX:…r;}r<(hX:hFj%ubehh˜hhhX-Exmples for :meth:`Specification.providedBy`:r=hFjÿubj)r>}r?(h%K0h&hh}r@(h]jjh]h]UtestnodetypeXdoctestUgroups]rAjah]h]j}uh ]rBhBXh>>> from zope.interface import *
>>> class I1(Interface):
...     pass
>>> class C(object):
...     implements(I1)
>>> c = C()
>>> class X(object):
...     pass
>>> x = X()
>>> I1.providedBy(x)
False
>>> I1.providedBy(C)
False
>>> I1.providedBy(c)
True
>>> directlyProvides(x, I1)
>>> I1.providedBy(x)
True
>>> directlyProvides(C, I1)
>>> I1.providedBy(C)
TruerC…rD}rE(hUhFj>ubahj$hhhXh>>> from zope.interface import *
>>> class I1(Interface):
...     pass
>>> class C(object):
...     implements(I1)
>>> c = C()
>>> class X(object):
...     pass
>>> x = X()
>>> I1.providedBy(x)
False
>>> I1.providedBy(C)
False
>>> I1.providedBy(c)
True
>>> directlyProvides(x, I1)
>>> I1.providedBy(x)
True
>>> directlyProvides(C, I1)
>>> I1.providedBy(C)
TruehFjÿubh)rF}rG(h%KHh&hh}rH(h]h]h]h]h]uh ]rI(hBX
Examples for rJ…rK}rL(hX
Examples for hFjFubh2)rM}rN(h%KHh&hh}rO(h]h6Nh]h]U	refdomainXpyrPh8NUreftypeXmethh9XSpecification.isOrExtendsh:‰h]h]Urefexplicit‰h;h<uh ]rQh>)rR}rS(h ]rThBXSpecification.isOrExtends()rU…rV}rW(hUhFjRubahhGhX!:meth:`Specification.isOrExtends`rXhFjMh}rY(h]h]h]h]h]rZ(hKjPXpy-methr[euubahhMhjXhFjFubhBX:…r\}r](hX:hFjFubehh˜hhhX/Examples for :meth:`Specification.isOrExtends`:r^hFjÿubj)r_}r`(h%KJh&hh}ra(h]jjh]h]UtestnodetypeXdoctestUgroups]rbjah]h]j}uh ]rchBXÄ>>> from zope.interface import Interface
>>> from zope.interface.declarations import Declaration
>>> class I1(Interface): pass
...
>>> class I2(I1): pass
...
>>> class I3(Interface): pass
...
>>> class I4(I3): pass
...
>>> spec = Declaration()
>>> int(spec.extends(Interface))
1
>>> spec = Declaration(I2)
>>> int(spec.extends(Interface))
1
>>> int(spec.extends(I1))
1
>>> int(spec.extends(I2))
1
>>> int(spec.extends(I3))
0
>>> int(spec.extends(I4))
0rd…re}rf(hUhFj_ubahj$hhhXÄ>>> from zope.interface import Interface
>>> from zope.interface.declarations import Declaration
>>> class I1(Interface): pass
...
>>> class I2(I1): pass
...
>>> class I3(Interface): pass
...
>>> class I4(I3): pass
...
>>> spec = Declaration()
>>> int(spec.extends(Interface))
1
>>> spec = Declaration(I2)
>>> int(spec.extends(Interface))
1
>>> int(spec.extends(I1))
1
>>> int(spec.extends(I2))
1
>>> int(spec.extends(I3))
0
>>> int(spec.extends(I4))
0hFjÿubh)rg}rh(h%Keh&hh}ri(h]h]h]h]h]uh ]rj(hBX
Examples for rk…rl}rm(hX
Examples for hFjgubh2)rn}ro(h%Keh&hh}rp(h]h6Nh]h]U	refdomainXpyrqh8NUreftypeXmethh9XSpecification.interfacesh:‰h]h]Urefexplicit‰h;h<uh ]rrh>)rs}rt(h ]ruhBXSpecification.interfaces()rv…rw}rx(hUhFjsubahhGhX :meth:`Specification.interfaces`ryhFjnh}rz(h]h]h]h]h]r{(hKjqXpy-methr|euubahhMhjyhFjgubhBX:…r}}r~(hX:hFjgubehh˜hhhX.Examples for :meth:`Specification.interfaces`:rhFjÿubj)r€}r(h%Kgh&hh}r‚(h]jjh]h]UtestnodetypeXdoctestUgroups]rƒjah]h]j}uh ]r„hBXC>>> from zope.interface import Interface
>>> class I1(Interface): pass
...
>>> class I2(I1): pass
...
>>> class I3(Interface): pass
...
>>> class I4(I3): pass
...
>>> spec = Specification((I2, I3))
>>> spec = Specification((I4, spec))
>>> i = spec.interfaces()
>>> [x.getName() for x in i]
['I4', 'I2', 'I3']
>>> list(i)
[]r……r†}r‡(hUhFj€ubahj$hhhXC>>> from zope.interface import Interface
>>> class I1(Interface): pass
...
>>> class I2(I1): pass
...
>>> class I3(Interface): pass
...
>>> class I4(I3): pass
...
>>> spec = Specification((I2, I3))
>>> spec = Specification((I4, spec))
>>> i = spec.interfaces()
>>> [x.getName() for x in i]
['I4', 'I2', 'I3']
>>> list(i)
[]hFjÿubh)rˆ}r‰(h%Kzh&hh}rŠ(h]h]h]h]h]uh ]r‹(hBXExmples for rŒ…r}rŽ(hXExmples for hFjˆubh2)r}r(h%Kzh&hh}r‘(h]h6Nh]h]U	refdomainXpyr’h8NUreftypeXmethh9XSpecification.extendsh:‰h]h]Urefexplicit‰h;h<uh ]r“h>)r”}r•(h ]r–hBXSpecification.extends()r—…r˜}r™(hUhFj”ubahhGhX:meth:`Specification.extends`ršhFjh}r›(h]h]h]h]h]rœ(hKj’Xpy-methreuubahhMhjšhFjˆubhBX:…rž}rŸ(hX:hFjˆubehh˜hhhX*Exmples for :meth:`Specification.extends`:r hFjÿubj)r¡}r¢(h%K|h&hh}r£(h]jjh]h]UtestnodetypeXdoctestUgroups]r¤jah]h]j}uh ]r¥hBX">>> from zope.interface import Interface
>>> from zope.interface.declarations import Declaration
>>> class I1(Interface): pass
...
>>> class I2(I1): pass
...
>>> class I3(Interface): pass
...
>>> class I4(I3): pass
...
>>> spec = Declaration()
>>> int(spec.extends(Interface))
1
>>> spec = Declaration(I2)
>>> int(spec.extends(Interface))
1
>>> int(spec.extends(I1))
1
>>> int(spec.extends(I2))
1
>>> int(spec.extends(I3))
0
>>> int(spec.extends(I4))
0
>>> I2.extends(I2)
False
>>> I2.extends(I2, False)
True
>>> I2.extends(I2, strict=False)
Truer¦…r§}r¨(hUhFj¡ubahj$hhhX">>> from zope.interface import Interface
>>> from zope.interface.declarations import Declaration
>>> class I1(Interface): pass
...
>>> class I2(I1): pass
...
>>> class I3(Interface): pass
...
>>> class I4(I3): pass
...
>>> spec = Declaration()
>>> int(spec.extends(Interface))
1
>>> spec = Declaration(I2)
>>> int(spec.extends(Interface))
1
>>> int(spec.extends(I1))
1
>>> int(spec.extends(I2))
1
>>> int(spec.extends(I3))
0
>>> int(spec.extends(I4))
0
>>> I2.extends(I2)
False
>>> I2.extends(I2, False)
True
>>> I2.extends(I2, strict=False)
TruehFjÿubehjýhhhUhFhTjþKubehjýhhhUhFh#ubh")r©}rª(h%KŸh&hh}r«(h]h]r¬U'zope-interface-interface-interfaceclassr­ah]h]r®X'zope.interface.interface.interfaceclassr¯ah]uh ]r°(h-)r±}r²(h%KŸh&hh}r³(h]h]h]h]h]uh ]r´h2)rµ}r¶(h%Kžh&hh}r·(h]h6Nh]h]U	refdomainXpyr¸h8NUreftypeXclassh9X'zope.interface.interface.InterfaceClassh:‰h]h]Urefexplicit‰h;h<uh ]r¹h>)rº}r»(h ]r¼hBX'zope.interface.interface.InterfaceClassr½…r¾}r¿(hUhFjºubahhGhX0:class:`zope.interface.interface.InterfaceClass`rÀhFjµh}rÁ(h]h]h]h]h]rÂ(hKj¸Xpy-classrÃeuubahhMhjÀhFj±ubahhRhhhjÀhFj©ubh")rÄ}rÅ(h%K¢h&hh}rÆ(h]rÇhsah]rÈUid1rÉah]h]h]uh ]rÊ(h-)rË}rÌ(h%K¢h&hh}rÍ(h]h]h]h]h]uh ]rÎhBXAPIrÏ…rÐ}rÑ(hXAPIrÒhFjËubahhRhhhjÒhFjÄubh)rÓ}rÔ(h%K¤h&hh}rÕ(h]h]h]h]h]uh ]rÖ(hBX3Specification objects implement the API defined by
r×…rØ}rÙ(hX3Specification objects implement the API defined by
hFjÓubh2)rÚ}rÛ(h%K¤h&hh}rÜ(h]h6Nh]h]U	refdomainXpyrÝh8NUreftypeXclassh9X$zope.interface.interfaces.IInterfaceh:‰h]h]Urefexplicit‰h;h<uh ]rÞh>)rß}rà(h ]ráhBX$zope.interface.interfaces.IInterfacer⅁rã}rä(hUhFjßubahhGhX-:class:`zope.interface.interfaces.IInterface`råhFjÚh}ræ(h]h]h]h]h]rç(hKjÝXpy-classrèeuubahhMhjåhFjÓubhBX:…ré}rê(hX:hFjÓubehh˜hhhXaSpecification objects implement the API defined by
:class:`zope.interface.interfaces.IInterface`:hFjÄubh™)rë}rì(h%Nh&Nh}rí(h]h]h]Uentries]rî(hžX3IInterface (interface in zope.interface.interfaces)X$zope.interface.interfaces.IInterfacerïUtrðah]h]uh ]hh¡hhhUhFjÄubh¢)rñ}rò(h%Nh&Nh}ró(h]h¦Xpyh]h]h§X	interfacerôh©jôhª‰h]h]uh ]rõ(h¬)rö}r÷(h%Nh&h¯h}rø(h]h]h]rùjïah²‰h³Uh]rújïahµh¶Xzope.interface.interfacesrû…rü}rýbh]hºX
IInterfacerþuh ]rÿ(h½)r}r(h%Nh&h¯h}r(h]h]h]h]h]uh ]rhBX
interface r…r}r(hUhFjubahhÅhhhX
interface hFjöubhÆ)r}r(h%Nh&h¯h}r	(h]h]h]h]h]uh ]r
hBXzope.interface.interfaces.r…r}r
(hUhFjubahhÎhhhXzope.interface.interfaces.hFjöubhÏ)r}r(h%Nh&h¯h}r(h]h]h]h]h]uh ]rhBX
IInterfacer…r}r(hUhFjubahh×hhhjþhFjöubhØ)r}r(h%Nh&Nh}r(h]UexprhÜh]h]h]h]uh ]rh2)r}r(h ]rhá)r}r(h ]rhBX[source]r…r }r!(hUhFjubahhèhUhFjh}r"(h]h]h]h]h]r#hëauubahhMhUhFjh}r$(h]Urefidjþh]U	refdomainhíh]UreftypehîUrefdoch<h]h]Urefexplicit‰U	reftargetU"_modules/zope/interface/interfacesuubahhïhhhUhFjöubehhðhhhjþhFjñubhñ)r%}r&(h%Nh&h¯h}r'(h]h]h]h]h]uh ]r((h)r)}r*(h%Kh&U	<autodoc>r+h}r,(h]h]h]h]h]uh ]r-(hBX	Extends: r.…r/}r0(hX	Extends: hFj)ubh2)r1}r2(h%Kh&hh}r3(h]h6Nh]h]U	refdomainXpyr4h8jþUreftypeXclassh9X(zope.interface.interfaces.ISpecificationh:‰h]h]Urefexplicit‰h;h<uh ]r5h>)r6}r7(h ]r8hBX(zope.interface.interfaces.ISpecificationr9…r:}r;(hUhFj6ubahhGhX1:class:`zope.interface.interfaces.ISpecification`r<hFj1h}r=(h]h]h]h]h]r>(hKj4Xpy-classr?euubahhMhj<hFj)ubhBX, r@…rA}rB(hX, hFj)ubh2)rC}rD(h%Kh&hh}rE(h]h6Nh]h]U	refdomainXpyrFh8jþUreftypeXclassh9X"zope.interface.interfaces.IElementh:‰h]h]Urefexplicit‰h;h<uh ]rGh>)rH}rI(h ]rJhBX"zope.interface.interfaces.IElementrK…rL}rM(hUhFjHubahhGhX+:class:`zope.interface.interfaces.IElement`rNhFjCh}rO(h]h]h]h]h]rP(hKjFXpy-classrQeuubahhMhjNhFj)ubehh˜hhhXgExtends: :class:`zope.interface.interfaces.ISpecification`, :class:`zope.interface.interfaces.IElement`rRhFj%ubh)rS}rT(h%Kh&X¢/home/tseaver/projects/Zope/Z3/zope.interface/.tox/docs/lib/python2.7/site-packages/zope/interface/interfaces.py:docstring of zope.interface.interfaces.IInterfacerUh}rV(h]h]h]h]h]uh ]rWhBXInterface objectsrX…rY}rZ(hXInterface objectsr[hFjSubahh˜hhhj[hFj%ubh)r\}r](h%Kh&jUh}r^(h]h]h]h]h]uh ]r_hBXƒInterface objects describe the behavior of an object by containing
useful information about the object.  This information includes:r`…ra}rb(hXƒInterface objects describe the behavior of an object by containing
useful information about the object.  This information includes:rchFj\ubahh˜hhhjchFj%ubcdocutils.nodes
block_quote
rd)re}rf(h%Nh&Nh}rg(h]h]h]h]h]uh ]rh(cdocutils.nodes
definition_list
ri)rj}rk(h ]rl(cdocutils.nodes
definition_list_item
rm)rn}ro(h%K	h&jUh}rp(h]h]h]h]h]uh ]rq(cdocutils.nodes
term
rr)rs}rt(h%K	h&jUh}ru(h]h]h]h]h]uh ]rvhBX>o Prose documentation about the object.  In Python terms, thisrw…rx}ry(hX>o Prose documentation about the object.  In Python terms, thisrzhFjsubahUtermr{hjzhFjnubcdocutils.nodes
definition
r|)r}}r~(h ]rh)r€}r(h%Kh&jUh}r‚(h]h]h]h]h]uh ]rƒhBX¥is called the "doc string" of the interface.  In this element,
you describe how the object works in prose language and any
other useful information about the object.r„…r…}r†(hX¥is called the "doc string" of the interface.  In this element,
you describe how the object works in prose language and any
other useful information about the object.r‡hFj€ubahh˜hj‡hFj}ubahU
definitionrˆhUhFjnh}r‰(h]h]h]h]h]uubehUdefinition_list_itemrŠhXåo Prose documentation about the object.  In Python terms, this
is called the "doc string" of the interface.  In this element,
you describe how the object works in prose language and any
other useful information about the object.
hFjjubjm)r‹}rŒ(h%K
h&jUh}r(h]h]h]h]h]uh ]rŽ(jr)r}r(h%K
h&jUh}r‘(h]h]h]h]h]uh ]r’hBX=o Descriptions of attributes.  Attribute descriptions includer“…r”}r•(hX=o Descriptions of attributes.  Attribute descriptions includer–hFjubahj{hj–hFj‹ubj|)r—}r˜(h ]r™h)rš}r›(h%Kh&jUh}rœ(h]h]h]h]h]uh ]rhBXRthe name of the attribute and prose documentation describing
the attributes usage.rž…rŸ}r (hXRthe name of the attribute and prose documentation describing
the attributes usage.r¡hFjšubahh˜hj¡hFj—ubahjˆhUhFj‹h}r¢(h]h]h]h]h]uubehjŠhX‘o Descriptions of attributes.  Attribute descriptions include
the name of the attribute and prose documentation describing
the attributes usage.
hFjjubehUdefinition_listr£hUhFjeh}r¤(h]h]h]h]h]uubh)r¥}r¦(h%Kh&jUh}r§(h]h]h]h]h]uh ]r¨hBX<o Descriptions of methods.  Method descriptions can include:r©…rª}r«(hX<o Descriptions of methods.  Method descriptions can include:r¬hFj¥ubahh˜hj¬hFjeubjd)r­}r®(h ]r¯cdocutils.nodes
bullet_list
r°)r±}r²(h ]r³(cdocutils.nodes
list_item
r´)rµ}r¶(h ]r·h)r¸}r¹(h%Kh&jUh}rº(h]h]h]h]h]uh ]r»hBX@Prose "doc string" documentation about the method and its
usage.r¼…r½}r¾(hX@Prose "doc string" documentation about the method and its
usage.r¿hFj¸ubahh˜hj¿hFjµubahU	list_itemrÀhXAProse "doc string" documentation about the method and its
usage.
hFj±h}rÁ(h]h]h]h]h]uubj´)rÂ}rÃ(h ]rÄh)rÅ}rÆ(h%Kh&jUh}rÇ(h]h]h]h]h]uh ]rÈhBXA description of the methods arguments; how many arguments
are expected, optional arguments and their default values,
the position or arguments in the signature, whether the
method accepts arbitrary arguments and whether the method
accepts arbitrary keyword arguments.rÉ…rÊ}rË(hXA description of the methods arguments; how many arguments
are expected, optional arguments and their default values,
the position or arguments in the signature, whether the
method accepts arbitrary arguments and whether the method
accepts arbitrary keyword arguments.rÌhFjÅubahh˜hjÌhFjÂubahjÀhX
A description of the methods arguments; how many arguments
are expected, optional arguments and their default values,
the position or arguments in the signature, whether the
method accepts arbitrary arguments and whether the method
accepts arbitrary keyword arguments.
hFj±h}rÍ(h]h]h]h]h]uubehUbullet_listrÎhUhFj­h}rÏ(h]h]h]UbulletrÐX-h]h]uubahUblock_quoterÑhUhFjeh}rÒ(h]h]h]h]h]uubji)rÓ}rÔ(h ]rÕjm)rÖ}r×(h%Kh&jUh}rØ(h]h]h]h]h]uh ]rÙ(jr)rÚ}rÛ(h%Kh&jUh}rÜ(h]h]h]h]h]uh ]rÝhBXDo Optional tagged data.  Interface objects (and their attributes andrÞ…rß}rà(hXDo Optional tagged data.  Interface objects (and their attributes andráhFjÚubahj{hjáhFjÖubj|)râ}rã(h ]räh)rå}ræ(h%Kh&jUh}rç(h]h]h]h]h]uh ]rèhBXmethods) can have optional, application specific tagged data
associated with them.  Examples uses for this are examples,
security assertions, pre/post conditions, and other possible
information you may want to associate with an Interface or its
attributes.r酁rê}rë(hXmethods) can have optional, application specific tagged data
associated with them.  Examples uses for this are examples,
security assertions, pre/post conditions, and other possible
information you may want to associate with an Interface or its
attributes.rìhFjåubahh˜hjìhFjâubahjˆhUhFjÖh}rí(h]h]h]h]h]uubehjŠhXFo Optional tagged data.  Interface objects (and their attributes and
methods) can have optional, application specific tagged data
associated with them.  Examples uses for this are examples,
security assertions, pre/post conditions, and other possible
information you may want to associate with an Interface or its
attributes.
hFjÓubahj£hUhFjeh}rî(h]h]h]h]h]uubehjÑhhhUhFj%ubh)rï}rð(h%K!h&jUh}rñ(h]h]h]h]h]uh ]ròhBXNot all of this information is mandatory.  For example, you may
only want the methods of your interface to have prose
documentation and not describe the arguments of the method in
exact detail.  Interface objects are flexible and let you give or
take any of these components.ró…rô}rõ(hXNot all of this information is mandatory.  For example, you may
only want the methods of your interface to have prose
documentation and not describe the arguments of the method in
exact detail.  Interface objects are flexible and let you give or
take any of these components.röhFjïubahh˜hhhjöhFj%ubh)r÷}rø(h%K'h&jUh}rù(h]h]h]h]h]uh ]rúhBXtInterfaces are created with the Python class statement using
either Interface.Interface or another interface, as in:rû…rü}rý(hXtInterfaces are created with the Python class statement using
either Interface.Interface or another interface, as in:hFj÷ubahh˜hhhXuInterfaces are created with the Python class statement using
either Interface.Interface or another interface, as in::hFj%ubj)rþ}rÿ(h%K0h&jUh}r(h]h]h]jjh]h]uh ]rhBXL from zope.interface import Interface

 class IMyInterface(Interface):
   '''Interface documentation'''

   def meth(arg1, arg2):
       '''Documentation for meth'''

   # Note that there is no self argument

class IMySubInterface(IMyInterface):
   '''Interface documentation'''

   def meth2():
       '''Documentation for meth2'''r…r}r(hUhFjþubahj$hhhXL from zope.interface import Interface

 class IMyInterface(Interface):
   '''Interface documentation'''

   def meth(arg1, arg2):
       '''Documentation for meth'''

   # Note that there is no self argument

class IMySubInterface(IMyInterface):
   '''Interface documentation'''

   def meth2():
       '''Documentation for meth2'''hFj%ubh)r}r(h%K:h&jUh}r(h]h]h]h]h]uh ]rhBXYou use interfaces in two ways:r	…r
}r(hXYou use interfaces in two ways:rhFjubahh˜hhhjhFj%ubh)r
}r(h%K<h&jUh}r(h]h]h]h]h]uh ]rhBX7o You assert that your object implement the interfaces.r…r}r(hX7o You assert that your object implement the interfaces.rhFj
ubahh˜hhhjhFj%ubjd)r}r(h%Nh&Nh}r(h]h]h]h]h]uh ]r(h)r}r(h%K>h&jUh}r(h]h]h]h]h]uh ]rhBXRThere are several ways that you can assert that an object
implements an interface:r…r}r(hXRThere are several ways that you can assert that an object
implements an interface:r hFjubahh˜hj hFjubcdocutils.nodes
enumerated_list
r!)r"}r#(h ]r$(j´)r%}r&(h ]r'h)r(}r)(h%KAh&jUh}r*(h]h]h]h]h]uh ]r+hBX8Call zope.interface.implements in your class definition.r,…r-}r.(hX8Call zope.interface.implements in your class definition.r/hFj(ubahh˜hj/hFj%ubahjÀhX9Call zope.interface.implements in your class definition.
hFj"h}r0(h]h]h]h]h]uubj´)r1}r2(h ]r3h)r4}r5(h%KCh&jUh}r6(h]h]h]h]h]uh ]r7hBX5Call zope.interfaces.directlyProvides on your object.r8…r9}r:(hX5Call zope.interfaces.directlyProvides on your object.r;hFj4ubahh˜hj;hFj1ubahjÀhX6Call zope.interfaces.directlyProvides on your object.
hFj"h}r<(h]h]h]h]h]uubj´)r=}r>(h ]r?(h)r@}rA(h%KEh&jUh}rB(h]h]h]h]h]uh ]rChBXaCall 'zope.interface.classImplements' to assert that instances
of a class implement an interface.rD…rE}rF(hXaCall 'zope.interface.classImplements' to assert that instances
of a class implement an interface.rGhFj@ubahh˜hjGhFj=ubh)rH}rI(h%KHh&jUh}rJ(h]h]h]h]h]uh ]rKhBXFor example:rL…rM}rN(hXFor example:hFjHubahh˜hX
For example::rOhFj=ubj)rP}rQ(h%KPh}rR(h]h]h]jjh]h]uh ]rShBXWfrom zope.interface import classImplements

classImplements(some_class, some_interface)rT…rU}rV(hUhFjPubahj$hXWfrom zope.interface import classImplements

classImplements(some_class, some_interface)hFj=ubh)rW}rX(h%KNh&jUh}rY(h]h]h]h]h]uh ]rZhBX´This approach is useful when it is not an option to modify
the class source.  Note that this doesn't affect what the
class itself implements, but only what its instances
implement.r[…r\}r](hX´This approach is useful when it is not an option to modify
the class source.  Note that this doesn't affect what the
class itself implements, but only what its instances
implement.r^hFjWubahh˜hj^hFj=ubehjÀhX„Call 'zope.interface.classImplements' to assert that instances
of a class implement an interface.

For example::

  from zope.interface import classImplements

  classImplements(some_class, some_interface)

This approach is useful when it is not an option to modify
the class source.  Note that this doesn't affect what the
class itself implements, but only what its instances
implement.
hFj"h}r_(h]h]h]h]h]uubehUenumerated_listr`hUhFjh}ra(h]UprefixrbUUenumtypercUarabicrdh]h]h]h]UsuffixreU.uubehjÑhhhUhFj%ubji)rf}rg(h%Nh&jh}rh(h]h]h]h]h]uh ]rijm)rj}rk(h%KVh&jUh}rl(h]h]h]h]h]uh ]rm(jr)rn}ro(h%KVh&jUh}rp(h]h]h]h]h]uh ]rqhBX?o You query interface meta-data. See the IInterface methods andrr…rs}rt(hX?o You query interface meta-data. See the IInterface methods andruhFjnubahj{hjuhFjjubj|)rv}rw(h ]rxh)ry}rz(h%KTh&jUh}r{(h]h]h]h]h]uh ]r|hBXattributes for details.r}…r~}r(hXattributes for details.r€hFjyubahh˜hj€hFjvubahjˆhUhFjjh}r(h]h]h]h]h]uubehjŠhXZo You query interface meta-data. See the IInterface methods and
attributes for details.


hFjfubahj£hhhUhFj%ubh™)r‚}rƒ(h%Nh&X7docstring of zope.interface.interfaces.IInterface.namesr„h}r…(h]h]h]Uentries]r†(hžXnames() (IInterface method)XIInterface.namesr‡Utrˆah]h]uh ]hh¡hhhUhFj%ubh¢)r‰}rŠ(h%Nh&j„h}r‹(h]h¦Xpyh]h]h§XmethodrŒh©jŒhª‰h]h]uh ]r(h¬)rŽ}r(h%Kh&jh}r(h]h]h]r‘j‡ah²‰h³jþh]r’j‡ahµNh]hºj‡uh ]r“(hÏ)r”}r•(h%Kh&jh}r–(h]h]h]h]h]uh ]r—hBXnamesr˜…r™}rš(hUhFj”ubahh×hhhXnameshFjŽubj)r›}rœ(h%Kh&jh}r(h]h]h]h]h]uh ]ržj)rŸ}r (h ]r¡hBX	all=Falser¢…r£}r¤(hUhFjŸubahj$hX	all=FalsehFj›h}r¥(h]h]h]h]h]uubahj&hhhUhFjŽubehhðhhhXnames(all=False)hFj‰ubhñ)r¦}r§(h%Kh&jh}r¨(h]h]h]h]h]uh ]r©(h)rª}r«(h%Kh&j„h}r¬(h]h]h]h]h]uh ]r­hBX!Get the interface attribute namesr®…r¯}r°(hX!Get the interface attribute namesr±hFjªubahh˜hhhj±hFj¦ubh)r²}r³(h%Kh&j„h}r´(h]h]h]h]h]uh ]rµhBXjReturn a sequence of the names of the attributes, including
methods, included in the interface definition.r¶…r·}r¸(hXjReturn a sequence of the names of the attributes, including
methods, included in the interface definition.r¹hFj²ubahh˜hhhj¹hFj¦ubh)rº}r»(h%Kh&j„h}r¼(h]h]h]h]h]uh ]r½hBX¥Normally, only directly defined attributes are included. If
a true positional or keyword argument is given, then
attributes defined by base classes will be included.r¾…r¿}rÀ(hX¥Normally, only directly defined attributes are included. If
a true positional or keyword argument is given, then
attributes defined by base classes will be included.rÁhFjºubahh˜hhhjÁhFj¦ubehj;hhhUhFj‰ubehj<hhhUhFj%ubh™)rÂ}rÃ(h%Nh&XFdocstring of zope.interface.interfaces.IInterface.namesAndDescriptionsrÄh}rÅ(h]h]h]Uentries]rÆ(hžX*namesAndDescriptions() (IInterface method)XIInterface.namesAndDescriptionsrÇUtrÈah]h]uh ]hh¡hhhUhFj%ubh¢)rÉ}rÊ(h%Nh&jÄh}rË(h]h¦Xpyh]h]h§XmethodrÌh©jÌhª‰h]h]uh ]rÍ(h¬)rÎ}rÏ(h%Kh&jh}rÐ(h]h]h]rÑjÇah²‰h³jþh]rÒjÇahµNh]hºjÇuh ]rÓ(hÏ)rÔ}rÕ(h%Kh&jh}rÖ(h]h]h]h]h]uh ]r×hBXnamesAndDescriptionsrØ…rÙ}rÚ(hUhFjÔubahh×hhhXnamesAndDescriptionshFjÎubj)rÛ}rÜ(h%Kh&jh}rÝ(h]h]h]h]h]uh ]rÞj)rß}rà(h ]ráhBX	all=Falser⅁rã}rä(hUhFjßubahj$hX	all=FalsehFjÛh}rå(h]h]h]h]h]uubahj&hhhUhFjÎubehhðhhhXnamesAndDescriptions(all=False)hFjÉubhñ)ræ}rç(h%Kh&jh}rè(h]h]h]h]h]uh ]ré(h)rê}rë(h%Kh&jÄh}rì(h]h]h]h]h]uh ]ríhBX2Get the interface attribute names and descriptionsrrï}rð(hX2Get the interface attribute names and descriptionsrñhFjêubahh˜hhhjñhFjæubh)rò}ró(h%Kh&jÄh}rô(h]h]h]h]h]uh ]rõhBXReturn a sequence of the names and descriptions of the
attributes, including methods, as name-value pairs, included
in the interface definition.rö…r÷}rø(hXReturn a sequence of the names and descriptions of the
attributes, including methods, as name-value pairs, included
in the interface definition.rùhFjòubahh˜hhhjùhFjæubh)rú}rû(h%Kh&jÄh}rü(h]h]h]h]h]uh ]rýhBX¥Normally, only directly defined attributes are included. If
a true positional or keyword argument is given, then
attributes defined by base classes will be included.rþ…rÿ}r(hX¥Normally, only directly defined attributes are included. If
a true positional or keyword argument is given, then
attributes defined by base classes will be included.rhFjúubahh˜hhhjhFjæubehj;hhhUhFjÉubehj<hhhUhFj%ubh™)r}r(h%Nh&X=docstring of zope.interface.interfaces.IInterface.__getitem__rh}r(h]h]h]Uentries]r(hžX!__getitem__() (IInterface method)XIInterface.__getitem__rUtrah]h]uh ]hh¡hhhUhFj%ubh¢)r	}r
(h%Nh&jh}r(h]h¦Xpyh]h]h§Xmethodrh©jhª‰h]h]uh ]r
(h¬)r}r(h%Kh&jh}r(h]h]h]rjah²‰h³jþh]rjahµNh]hºjuh ]r(hÏ)r}r(h%Kh&jh}r(h]h]h]h]h]uh ]rhBX__getitem__r…r}r(hUhFjubahh×hhhX__getitem__hFjubj)r}r(h%Kh&jh}r(h]h]h]h]h]uh ]rj)r}r (h ]r!hBXnamer"…r#}r$(hUhFjubahj$hXnamehFjh}r%(h]h]h]h]h]uubahj&hhhUhFjubehhðhhhX__getitem__(name)hFj	ubhñ)r&}r'(h%Kh&jh}r((h]h]h]h]h]uh ]r)(h)r*}r+(h%Kh&jh}r,(h]h]h]h]h]uh ]r-hBXGet the description for a namer.…r/}r0(hXGet the description for a namer1hFj*ubahh˜hhhj1hFj&ubh)r2}r3(h%Kh&jh}r4(h]h]h]h]h]uh ]r5hBX<If the named attribute is not defined, a KeyError is raised.r6…r7}r8(hX<If the named attribute is not defined, a KeyError is raised.r9hFj2ubahh˜hhhj9hFj&ubehj;hhhUhFj	ubehj<hhhUhFj%ubh™)r:}r;(h%Nh&X8docstring of zope.interface.interfaces.IInterface.directr<h}r=(h]h]h]Uentries]r>(hžXdirect() (IInterface method)XIInterface.directr?Utr@ah]h]uh ]hh¡hhhUhFj%ubh¢)rA}rB(h%Nh&j<h}rC(h]h¦Xpyh]h]h§XmethodrDh©jDhª‰h]h]uh ]rE(h¬)rF}rG(h%Kh&jh}rH(h]h]h]rIj?ah²‰h³jþh]rJj?ahµNh]hºj?uh ]rK(hÏ)rL}rM(h%Kh&jh}rN(h]h]h]h]h]uh ]rOhBXdirectrP…rQ}rR(hUhFjLubahh×hhhXdirecthFjFubj)rS}rT(h%Kh&jh}rU(h]h]h]h]h]uh ]rVj)rW}rX(h ]rYhBXnamerZ…r[}r\(hUhFjWubahj$hXnamehFjSh}r](h]h]h]h]h]uubahj&hhhUhFjFubehhðhhhXdirect(name)hFjAubhñ)r^}r_(h%Kh&jh}r`(h]h]h]h]h]uh ]ra(h)rb}rc(h%Kh&j<h}rd(h]h]h]h]h]uh ]rehBXCGet the description for the name if it was defined by the interfacerf…rg}rh(hXCGet the description for the name if it was defined by the interfacerihFjbubahh˜hhhjihFj^ubh)rj}rk(h%Kh&j<h}rl(h]h]h]h]h]uh ]rmhBX7If the interface doesn't define the name, returns None.rn…ro}rp(hX7If the interface doesn't define the name, returns None.rqhFjjubahh˜hhhjqhFj^ubehj;hhhUhFjAubehj<hhhUhFj%ubh™)rr}rs(h%Nh&XDdocstring of zope.interface.interfaces.IInterface.validateInvariantsrth}ru(h]h]h]Uentries]rv(hžX(validateInvariants() (IInterface method)XIInterface.validateInvariantsrwUtrxah]h]uh ]hh¡hhhUhFj%ubh¢)ry}rz(h%Nh&jth}r{(h]h¦Xpyh]h]h§Xmethodr|h©j|hª‰h]h]uh ]r}(h¬)r~}r(h%Kh&jh}r€(h]h]h]rjwah²‰h³jþh]r‚jwahµNh]hºjwuh ]rƒ(hÏ)r„}r…(h%Kh&jh}r†(h]h]h]h]h]uh ]r‡hBXvalidateInvariantsrˆ…r‰}rŠ(hUhFj„ubahh×hhhXvalidateInvariantshFj~ubj)r‹}rŒ(h%Kh&jh}r(h]h]h]h]h]uh ]rŽ(j)r}r(h ]r‘hBXobjr’…r“}r”(hUhFjubahj$hXobjhFj‹h}r•(h]h]h]h]h]uubj)r–}r—(h ]r˜hBXerrors=Noner™…rš}r›(hUhFj–ubahj$hXerrors=NonehFj‹h}rœ(h]h]h]h]h]uubehj&hhhUhFj~ubehhðhhhX$validateInvariants(obj, errors=None)hFjyubhñ)r}rž(h%Kh&jh}rŸ(h]h]h]h]h]uh ]r (h)r¡}r¢(h%Kh&jth}r£(h]h]h]h]h]uh ]r¤hBXValidate invariantsr¥…r¦}r§(hXValidate invariantsr¨hFj¡ubahh˜hhhj¨hFjubh)r©}rª(h%Kh&jth}r«(h]h]h]h]h]uh ]r¬hBXÕValidate object to defined invariants.  If errors is None,
raises first Invalid error; if errors is a list, appends all errors
to list, then raises Invalid with the errors as the first element
of the "args" tuple.r­…r®}r¯(hXÕValidate object to defined invariants.  If errors is None,
raises first Invalid error; if errors is a list, appends all errors
to list, then raises Invalid with the errors as the first element
of the "args" tuple.r°hFj©ubahh˜hhhj°hFjubehj;hhhUhFjyubehj<hhhUhFj%ubh™)r±}r²(h%Nh&X>docstring of zope.interface.interfaces.IInterface.__contains__r³h}r´(h]h]h]Uentries]rµ(hžX"__contains__() (IInterface method)XIInterface.__contains__r¶Utr·ah]h]uh ]hh¡hhhUhFj%ubh¢)r¸}r¹(h%Nh&j³h}rº(h]h¦Xpyh]h]h§Xmethodr»h©j»hª‰h]h]uh ]r¼(h¬)r½}r¾(h%Kh&jh}r¿(h]h]h]rÀj¶ah²‰h³jþh]rÁj¶ahµNh]hºj¶uh ]rÂ(hÏ)rÃ}rÄ(h%Kh&jh}rÅ(h]h]h]h]h]uh ]rÆhBX__contains__rÇ…rÈ}rÉ(hUhFjÃubahh×hhhX__contains__hFj½ubj)rÊ}rË(h%Kh&jh}rÌ(h]h]h]h]h]uh ]rÍj)rÎ}rÏ(h ]rÐhBXnamerÑ…rÒ}rÓ(hUhFjÎubahj$hXnamehFjÊh}rÔ(h]h]h]h]h]uubahj&hhhUhFj½ubehhðhhhX__contains__(name)hFj¸ubhñ)rÕ}rÖ(h%Kh&jh}r×(h]h]h]h]h]uh ]rØh)rÙ}rÚ(h%Kh&j³h}rÛ(h]h]h]h]h]uh ]rÜhBX1Test whether the name is defined by the interfacerÝ…rÞ}rß(hX1Test whether the name is defined by the interfaceràhFjÙubahh˜hhhjàhFjÕubahj;hhhUhFj¸ubehj<hhhUhFj%ubh™)rá}râ(h%Nh&X:docstring of zope.interface.interfaces.IInterface.__iter__rãh}rä(h]h]h]Uentries]rå(hžX__iter__() (IInterface method)XIInterface.__iter__ræUtrçah]h]uh ]hh¡hhhUhFj%ubh¢)rè}ré(h%Nh&jãh}rê(h]h¦Xpyh]h]h§Xmethodrëh©jëhª‰h]h]uh ]rì(h¬)rí}rî(h%Kh&jh}rï(h]h]h]rðjæah²‰h³jþh]rñjæahµNh]hºjæuh ]rò(hÏ)ró}rô(h%Kh&jh}rõ(h]h]h]h]h]uh ]röhBX__iter__r÷…rø}rù(hUhFjóubahh×hhhX__iter__hFjíubj)rú}rû(h%Kh&jh}rü(h]h]h]h]h]uh ]hj&hhhUhFjíubehhðhhhX
__iter__()hFjèubhñ)rý}rþ(h%Kh&jh}rÿ(h]h]h]h]h]uh ]r(h)r}r(h%Kh&jãh}r(h]h]h]h]h]uh ]rhBX:Return an iterator over the names defined by the interfacer…r}r(hX:Return an iterator over the names defined by the interfacerhFjubahh˜hhhjhFjýubh)r	}r
(h%Kh&jãh}r(h]h]h]h]h]uh ]rhBXpThe names iterated include all of the names defined by the
interface directly and indirectly by base interfaces.r
…r}r(hXpThe names iterated include all of the names defined by the
interface directly and indirectly by base interfaces.rhFj	ubahh˜hhhjhFjýubehj;hhhUhFjèubehj<hhhUhFj%ubh™)r}r(h%Nh&X<docstring of zope.interface.interfaces.IInterface.__module__rh}r(h]h]h]Uentries]r(hžX!__module__ (IInterface attribute)XIInterface.__module__rUtrah]h]uh ]hh¡hhhUhFj%ubh¢)r}r(h%Nh&jh}r(h]h¦Xpyh]h]h§X	attributerh©jhª‰h]h]uh ]r(h¬)r}r(h%Kh&jh}r(h]h]h]r jah²‰h³jþh]r!jahµNh]hºjuh ]r"hÏ)r#}r$(h%Kh&jh}r%(h]h]h]h]h]uh ]r&hBX
__module__r'…r(}r)(hUhFj#ubahh×hhhX
__module__r*hFjubahhðhhhj*hFjubhñ)r+}r,(h%Kh&jh}r-(h]h]h]h]h]uh ]r.h)r/}r0(h%Kh&jh}r1(h]h]h]h]h]uh ]r2hBX-The name of the module defining the interfacer3…r4}r5(hX-The name of the module defining the interfacer6hFj/ubahh˜hhhj6hFj+ubahj;hhhUhFjubehj<hhhUhFj%ubehj;hhhUhFjñubehj<hhhUhFjÄubehjýhhhUhFj©jþKubh")r7}r8(h%K­h&hh}r9(h]r:jah]r;Uid2r<ah]h]h]uh ]r=(h-)r>}r?(h%K­h&hh}r@(h]h]h]h]h]uh ]rAhBXUsagerB…rC}rD(hXUsagerEhFj>ubahhRhhhjEhFj7ubh)rF}rG(h%K¯h&hh}rH(h]h]h]h]h]uh ]rI(hBXExmples for rJ…rK}rL(hXExmples for hFjFubh2)rM}rN(h%K¯h&hh}rO(h]h6Nh]h]U	refdomainXpyrPh8NUreftypeXmethh9XInterfaceClass.extendsh:‰h]h]Urefexplicit‰h;h<uh ]rQh>)rR}rS(h ]rThBXInterfaceClass.extends()rU…rV}rW(hUhFjRubahhGhX:meth:`InterfaceClass.extends`rXhFjMh}rY(h]h]h]h]h]rZ(hKjPXpy-methr[euubahhMhjXhFjFubhBX:…r\}r](hX:hFjFubehh˜hhhX+Exmples for :meth:`InterfaceClass.extends`:r^hFj7ubj)r_}r`(h%K±h&hh}ra(h]jjh]h]UtestnodetypeXdoctestUgroups]rbjah]h]j}uh ]rchBX™>>> from zope.interface import Interface
>>> class I1(Interface): pass
...
>>>
>>> i = I1.interfaces()
>>> [x.getName() for x in i]
['I1']
>>> list(i)
[]rd…re}rf(hUhFj_ubahj$hhhX™>>> from zope.interface import Interface
>>> class I1(Interface): pass
...
>>>
>>> i = I1.interfaces()
>>> [x.getName() for x in i]
['I1']
>>> list(i)
[]hFj7ubehjýhhhUhFj©jþKubehjýhhhUhFh#ubh")rg}rh(h%K¿h&hh}ri(h]h]rjU'zope-interface-declarations-declarationrkah]h]rlX'zope.interface.declarations.declarationrmah]uh ]rn(h-)ro}rp(h%K¿h&hh}rq(h]h]h]h]h]uh ]rrh2)rs}rt(h%K¾h&hh}ru(h]h6Nh]h]U	refdomainXpyrvh8NUreftypeXclassh9X'zope.interface.declarations.Declarationh:‰h]h]Urefexplicit‰h;h<uh ]rwh>)rx}ry(h ]rzhBX'zope.interface.declarations.Declarationr{…r|}r}(hUhFjxubahhGhX0:class:`zope.interface.declarations.Declaration`r~hFjsh}r(h]h]h]h]h]r€(hKjvXpy-classreuubahhMhj~hFjoubahhRhhhj~hFjgubh")r‚}rƒ(h%KÂh&hh}r„(h]r…Xapir†ah]r‡Uid3rˆah]h]h]uh ]r‰(h-)rŠ}r‹(h%KÂh&hh}rŒ(h]h]h]h]h]uh ]rhBXAPIrŽ…r}r(hXAPIr‘hFjŠubahhRhhhj‘hFj‚ubh)r’}r“(h%KÄh&hh}r”(h]h]h]h]h]uh ]r•(hBX3Specification objects implement the API defined by
r–…r—}r˜(hX3Specification objects implement the API defined by
hFj’ubh2)r™}rš(h%KÄh&hh}r›(h]h6Nh]h]U	refdomainXpyrœh8NUreftypeXclassh9X&zope.interface.interfaces.IDeclarationh:‰h]h]Urefexplicit‰h;h<uh ]rh>)rž}rŸ(h ]r hBX&zope.interface.interfaces.IDeclarationr¡…r¢}r£(hUhFjžubahhGhX/:class:`zope.interface.interfaces.IDeclaration`r¤hFj™h}r¥(h]h]h]h]h]r¦(hKjœXpy-classr§euubahhMhj¤hFj’ubhBX:…r¨}r©(hX:hFj’ubehh˜hhhXcSpecification objects implement the API defined by
:class:`zope.interface.interfaces.IDeclaration`:hFj‚ubh™)rª}r«(h%Nh&Nh}r¬(h]h]h]Uentries]r­(hžX5IDeclaration (interface in zope.interface.interfaces)X&zope.interface.interfaces.IDeclarationr®Utr¯ah]h]uh ]hh¡hhhUhFj‚ubh¢)r°}r±(h%Nh&Nh}r²(h]h¦Xpyh]h]h§X	interfacer³h©j³hª‰h]h]uh ]r´(h¬)rµ}r¶(h%Nh&h¯h}r·(h]h]h]r¸j®ah²‰h³Uh]r¹j®ahµh¶Xzope.interface.interfacesrº…r»}r¼bh]hºXIDeclarationr½uh ]r¾(h½)r¿}rÀ(h%Nh&h¯h}rÁ(h]h]h]h]h]uh ]rÂhBX
interface rÃ…rÄ}rÅ(hUhFj¿ubahhÅhhhX
interface hFjµubhÆ)rÆ}rÇ(h%Nh&h¯h}rÈ(h]h]h]h]h]uh ]rÉhBXzope.interface.interfaces.rÊ…rË}rÌ(hUhFjÆubahhÎhhhXzope.interface.interfaces.hFjµubhÏ)rÍ}rÎ(h%Nh&h¯h}rÏ(h]h]h]h]h]uh ]rÐhBXIDeclarationrÑ…rÒ}rÓ(hUhFjÍubahh×hhhj½hFjµubhØ)rÔ}rÕ(h%Nh&Nh}rÖ(h]UexprhÜh]h]h]h]uh ]r×h2)rØ}rÙ(h ]rÚhá)rÛ}rÜ(h ]rÝhBX[source]rÞ…rß}rà(hUhFjÛubahhèhUhFjØh}rá(h]h]h]h]h]râhëauubahhMhUhFjÔh}rã(h]Urefidj½h]U	refdomainhíh]UreftypehîUrefdoch<h]h]Urefexplicit‰U	reftargetU"_modules/zope/interface/interfacesuubahhïhhhUhFjµubehhðhhhj½hFj°ubhñ)rä}rå(h%Nh&h¯h}ræ(h]h]h]h]h]uh ]rç(h)rè}ré(h%Kh&j+h}rê(h]h]h]h]h]uh ]rë(hBX	Extends: r셁rí}rî(hX	Extends: hFjèubh2)rï}rð(h%Kh&hh}rñ(h]h6Nh]h]U	refdomainXpyròh8j½UreftypeXclassh9X(zope.interface.interfaces.ISpecificationh:‰h]h]Urefexplicit‰h;h<uh ]róh>)rô}rõ(h ]röhBX(zope.interface.interfaces.ISpecificationr÷…rø}rù(hUhFjôubahhGhX1:class:`zope.interface.interfaces.ISpecification`rúhFjïh}rû(h]h]h]h]h]rü(hKjòXpy-classrýeuubahhMhjúhFjèubehh˜hhhX:Extends: :class:`zope.interface.interfaces.ISpecification`rþhFjäubh)rÿ}r(h%Kh&X¤/home/tseaver/projects/Zope/Z3/zope.interface/.tox/docs/lib/python2.7/site-packages/zope/interface/interfaces.py:docstring of zope.interface.interfaces.IDeclarationrh}r(h]h]h]h]h]uh ]rhBXInterface declarationr…r}r(hXInterface declarationrhFjÿubahh˜hhhjhFjäubh)r}r	(h%Kh&jh}r
(h]h]h]h]h]uh ]rhBX^Declarations are used to express the interfaces implemented by
classes or provided by objects.r…r
}r(hX^Declarations are used to express the interfaces implemented by
classes or provided by objects.rhFjubahh˜hhhjhFjäubh™)r}r(h%Nh&X@docstring of zope.interface.interfaces.IDeclaration.__contains__rh}r(h]h]h]Uentries]r(hžX$__contains__() (IDeclaration method)XIDeclaration.__contains__rUtrah]h]uh ]hh¡hhhUhFjäubh¢)r}r(h%Nh&jh}r(h]h¦Xpyh]h]h§Xmethodrh©jhª‰h]h]uh ]r(h¬)r}r(h%Kh&jh}r(h]h]h]rjah²‰h³j½h]r jahµNh]hºjuh ]r!(hÏ)r"}r#(h%Kh&jh}r$(h]h]h]h]h]uh ]r%hBX__contains__r&…r'}r((hUhFj"ubahh×hhhX__contains__hFjubj)r)}r*(h%Kh&jh}r+(h]h]h]h]h]uh ]r,j)r-}r.(h ]r/hBX	interfacer0…r1}r2(hUhFj-ubahj$hX	interfacehFj)h}r3(h]h]h]h]h]uubahj&hhhUhFjubehhðhhhX__contains__(interface)hFjubhñ)r4}r5(h%Kh&jh}r6(h]h]h]h]h]uh ]r7(h)r8}r9(h%Kh&jh}r:(h]h]h]h]h]uh ]r;hBX1Test whether an interface is in the specificationr<…r=}r>(hX1Test whether an interface is in the specificationr?hFj8ubahh˜hhhj?hFj4ubh)r@}rA(h%Kh&jh}rB(h]h]h]h]h]uh ]rChBXeReturn true if the given interface is one of the interfaces in
the specification and false otherwise.rD…rE}rF(hXeReturn true if the given interface is one of the interfaces in
the specification and false otherwise.rGhFj@ubahh˜hhhjGhFj4ubehj;hhhUhFjubehj<hhhUhFjäubh™)rH}rI(h%Nh&X<docstring of zope.interface.interfaces.IDeclaration.__iter__rJh}rK(h]h]h]Uentries]rL(hžX __iter__() (IDeclaration method)XIDeclaration.__iter__rMUtrNah]h]uh ]hh¡hhhUhFjäubh¢)rO}rP(h%Nh&jJh}rQ(h]h¦Xpyh]h]h§XmethodrRh©jRhª‰h]h]uh ]rS(h¬)rT}rU(h%Kh&jh}rV(h]h]h]rWjMah²‰h³j½h]rXjMahµNh]hºjMuh ]rY(hÏ)rZ}r[(h%Kh&jh}r\(h]h]h]h]h]uh ]r]hBX__iter__r^…r_}r`(hUhFjZubahh×hhhX__iter__hFjTubj)ra}rb(h%Kh&jh}rc(h]h]h]h]h]uh ]hj&hhhUhFjTubehhðhhhX
__iter__()hFjOubhñ)rd}re(h%Kh&jh}rf(h]h]h]h]h]uh ]rgh)rh}ri(h%Kh&jJh}rj(h]h]h]h]h]uh ]rkhBX:Return an iterator for the interfaces in the specificationrl…rm}rn(hX:Return an iterator for the interfaces in the specificationrohFjhubahh˜hhhjohFjdubahj;hhhUhFjOubehj<hhhUhFjäubh™)rp}rq(h%Nh&X=docstring of zope.interface.interfaces.IDeclaration.flattenedrrh}rs(h]h]h]Uentries]rt(hžX!flattened() (IDeclaration method)XIDeclaration.flattenedruUtrvah]h]uh ]hh¡hhhUhFjäubh¢)rw}rx(h%Nh&jrh}ry(h]h¦Xpyh]h]h§Xmethodrzh©jzhª‰h]h]uh ]r{(h¬)r|}r}(h%Kh&jh}r~(h]h]h]rjuah²‰h³j½h]r€juahµNh]hºjuuh ]r(hÏ)r‚}rƒ(h%Kh&jh}r„(h]h]h]h]h]uh ]r…hBX	flattenedr†…r‡}rˆ(hUhFj‚ubahh×hhhX	flattenedhFj|ubj)r‰}rŠ(h%Kh&jh}r‹(h]h]h]h]h]uh ]hj&hhhUhFj|ubehhðhhhXflattened()hFjwubhñ)rŒ}r(h%Kh&jh}rŽ(h]h]h]h]h]uh ]r(h)r}r‘(h%Kh&jrh}r’(h]h]h]h]h]uh ]r“hBX:Return an iterator of all included and extended interfacesr”…r•}r–(hX:Return an iterator of all included and extended interfacesr—hFjubahh˜hhhj—hFjŒubh)r˜}r™(h%Kh&jrh}rš(h]h]h]h]h]uh ]r›hBX‰An iterator is returned for all interfaces either included in
or extended by interfaces included in the specifications
without duplicates. The interfaces are in "interface
resolution order". The interface resolution order is such that
base interfaces are listed after interfaces that extend them
and, otherwise, interfaces are included in the order that they
were defined in the specification.rœ…r}rž(hX‰An iterator is returned for all interfaces either included in
or extended by interfaces included in the specifications
without duplicates. The interfaces are in "interface
resolution order". The interface resolution order is such that
base interfaces are listed after interfaces that extend them
and, otherwise, interfaces are included in the order that they
were defined in the specification.rŸhFj˜ubahh˜hhhjŸhFjŒubehj;hhhUhFjwubehj<hhhUhFjäubh™)r }r¡(h%Nh&X;docstring of zope.interface.interfaces.IDeclaration.__sub__r¢h}r£(h]h]h]Uentries]r¤(hžX__sub__() (IDeclaration method)XIDeclaration.__sub__r¥Utr¦ah]h]uh ]hh¡hhhUhFjäubh¢)r§}r¨(h%Nh&j¢h}r©(h]h¦Xpyh]h]h§Xmethodrªh©jªhª‰h]h]uh ]r«(h¬)r¬}r­(h%Kh&jh}r®(h]h]h]r¯j¥ah²‰h³j½h]r°j¥ahµNh]hºj¥uh ]r±(hÏ)r²}r³(h%Kh&jh}r´(h]h]h]h]h]uh ]rµhBX__sub__r¶…r·}r¸(hUhFj²ubahh×hhhX__sub__hFj¬ubj)r¹}rº(h%Kh&jh}r»(h]h]h]h]h]uh ]r¼j)r½}r¾(h ]r¿hBX
interfacesrÀ…rÁ}rÂ(hUhFj½ubahj$hX
interfaceshFj¹h}rÃ(h]h]h]h]h]uubahj&hhhUhFj¬ubehhðhhhX__sub__(interfaces)hFj§ubhñ)rÄ}rÅ(h%Kh&jh}rÆ(h]h]h]h]h]uh ]rÇ(h)rÈ}rÉ(h%Kh&j¢h}rÊ(h]h]h]h]h]uh ]rËhBX?Create an interface specification with some interfaces excludedrÌ…rÍ}rÎ(hX?Create an interface specification with some interfaces excludedrÏhFjÈubahh˜hhhjÏhFjÄubh)rÐ}rÑ(h%Kh&j¢h}rÒ(h]h]h]h]h]uh ]rÓhBX§The argument can be an interface or an interface
specifications.  The interface or interfaces given in a
specification are subtracted from the interface specification.rÔ…rÕ}rÖ(hX§The argument can be an interface or an interface
specifications.  The interface or interfaces given in a
specification are subtracted from the interface specification.r×hFjÐubahh˜hhhj×hFjÄubh)rØ}rÙ(h%Kh&j¢h}rÚ(h]h]h]h]h]uh ]rÛhBXgRemoving an interface that is not in the specification does
not raise an error. Doing so has no effect.rÜ…rÝ}rÞ(hXgRemoving an interface that is not in the specification does
not raise an error. Doing so has no effect.rßhFjØubahh˜hhhjßhFjÄubh)rà}rá(h%K
h&j¢h}râ(h]h]h]h]h]uh ]rãhBXCRemoving an interface also removes sub-interfaces of the interface.r䅁rå}ræ(hXCRemoving an interface also removes sub-interfaces of the interface.rçhFjàubahh˜hhhjçhFjÄubehj;hhhUhFj§ubehj<hhhUhFjäubh™)rè}ré(h%Nh&X;docstring of zope.interface.interfaces.IDeclaration.__add__rêh}rë(h]h]h]Uentries]rì(hžX__add__() (IDeclaration method)XIDeclaration.__add__ríUtrîah]h]uh ]hh¡hhhUhFjäubh¢)rï}rð(h%Nh&jêh}rñ(h]h¦Xpyh]h]h§Xmethodròh©jòhª‰h]h]uh ]ró(h¬)rô}rõ(h%Kh&jh}rö(h]h]h]r÷jíah²‰h³j½h]røjíahµNh]hºjíuh ]rù(hÏ)rú}rû(h%Kh&jh}rü(h]h]h]h]h]uh ]rýhBX__add__rþ…rÿ}r	(hUhFjúubahh×hhhX__add__hFjôubj)r	}r	(h%Kh&jh}r	(h]h]h]h]h]uh ]r	j)r	}r	(h ]r	hBX
interfacesr	…r		}r
	(hUhFj	ubahj$hX
interfaceshFj	h}r	(h]h]h]h]h]uubahj&hhhUhFjôubehhðhhhX__add__(interfaces)hFjïubhñ)r	}r
	(h%Kh&jh}r	(h]h]h]h]h]uh ]r	(h)r	}r	(h%Kh&jêh}r	(h]h]h]h]h]uh ]r	hBX<Create an interface specification with some interfaces addedr	…r	}r	(hX<Create an interface specification with some interfaces addedr	hFj	ubahh˜hhhj	hFj	ubh)r	}r	(h%Kh&jêh}r	(h]h]h]h]h]uh ]r	hBX The argument can be an interface or an interface
specifications.  The interface or interfaces given in a
specification are added to the interface specification.r	…r	}r	(hX The argument can be an interface or an interface
specifications.  The interface or interfaces given in a
specification are added to the interface specification.r	hFj	ubahh˜hhhj	hFj	ubh)r 	}r!	(h%Kh&jêh}r"	(h]h]h]h]h]uh ]r#	hBXiAdding an interface that is already in the specification does
not raise an error. Doing so has no effect.r$	…r%	}r&	(hXiAdding an interface that is already in the specification does
not raise an error. Doing so has no effect.r'	hFj 	ubahh˜hhhj'	hFj	ubehj;hhhUhFjïubehj<hhhUhFjäubh™)r(	}r)	(h%Nh&X?docstring of zope.interface.interfaces.IDeclaration.__nonzero__r*	h}r+	(h]h]h]Uentries]r,	(hžX#__nonzero__() (IDeclaration method)XIDeclaration.__nonzero__r-	Utr.	ah]h]uh ]hh¡hhhUhFjäubh¢)r/	}r0	(h%Nh&j*	h}r1	(h]h¦Xpyh]h]h§Xmethodr2	h©j2	hª‰h]h]uh ]r3	(h¬)r4	}r5	(h%Kh&j*	h}r6	(h]h]h]r7	j-	ah²‰h³j½h]r8	j-	ahµNh]hºj-	uh ]r9	(hÏ)r:	}r;	(h%Kh&j*	h}r<	(h]h]h]h]h]uh ]r=	hBX__nonzero__r>	…r?	}r@	(hUhFj:	ubahh×hhhX__nonzero__hFj4	ubj)rA	}rB	(h%Kh&j*	h}rC	(h]h]h]h]h]uh ]hj&hhhUhFj4	ubehhðhhhX
__nonzero__()rD	hFj/	ubhñ)rE	}rF	(h%Kh&j*	h}rG	(h]h]h]h]h]uh ]rH	h)rI	}rJ	(h%Kh&j*	h}rK	(h]h]h]h]h]uh ]rL	hBX?Return a true value of the interface specification is non-emptyrM	…rN	}rO	(hX?Return a true value of the interface specification is non-emptyrP	hFjI	ubahh˜hhhjP	hFjE	ubahj;hhhUhFj/	ubehj<hhhUhFjäubehj;hhhUhFj°ubehj<hhhUhFj‚ubehjýhhhUhFjgjþKubh")rQ	}rR	(h%KÍh&hh}rS	(h]rT	XusagerU	ah]rV	Uid4rW	ah]h]h]uh ]rX	(h-)rY	}rZ	(h%KÍh&hh}r[	(h]h]h]h]h]uh ]r\	hBXUsager]	…r^	}r_	(hXUsager`	hFjY	ubahhRhhhj`	hFjQ	ubh)ra	}rb	(h%KÏh&hh}rc	(h]h]h]h]h]uh ]rd	(hBXExmples for re	…rf	}rg	(hXExmples for hFja	ubh2)rh	}ri	(h%KÏh&hh}rj	(h]h6Nh]h]U	refdomainXpyrk	h8NUreftypeXmethh9XDeclaration.__contains__h:‰h]h]Urefexplicit‰h;h<uh ]rl	h>)rm	}rn	(h ]ro	hBXDeclaration.__contains__()rp	…rq	}rr	(hUhFjm	ubahhGhX :meth:`Declaration.__contains__`rs	hFjh	h}rt	(h]h]h]h]h]ru	(hKjk	Xpy-methrv	euubahhMhjs	hFja	ubhBX:…rw	}rx	(hX:hFja	ubehh˜hhhX-Exmples for :meth:`Declaration.__contains__`:ry	hFjQ	ubj)rz	}r{	(h%KÑh&hh}r|	(h]jjh]h]UtestnodetypeXdoctestUgroups]r}	jah]h]j}uh ]r~	hBX:>>> from zope.interface import Interface
>>> class I1(Interface): pass
...
>>> class I2(I1): pass
...
>>> class I3(Interface): pass
...
>>> class I4(I3): pass
...
>>> spec = Declaration(I2, I3)
>>> spec = Declaration(I4, spec)
>>> int(I1 in spec)
0
>>> int(I2 in spec)
1
>>> int(I3 in spec)
1
>>> int(I4 in spec)
1r	…r€	}r	(hUhFjz	ubahj$hhhX:>>> from zope.interface import Interface
>>> class I1(Interface): pass
...
>>> class I2(I1): pass
...
>>> class I3(Interface): pass
...
>>> class I4(I3): pass
...
>>> spec = Declaration(I2, I3)
>>> spec = Declaration(I4, spec)
>>> int(I1 in spec)
0
>>> int(I2 in spec)
1
>>> int(I3 in spec)
1
>>> int(I4 in spec)
1hFjQ	ubh)r‚	}rƒ	(h%Kçh&hh}r„	(h]h]h]h]h]uh ]r…	(hBXExmples for r†	…r‡	}rˆ	(hXExmples for hFj‚	ubh2)r‰	}rŠ	(h%Kçh&hh}r‹	(h]h6Nh]h]U	refdomainXpyrŒ	h8NUreftypeXmethh9XDeclaration.__iter__h:‰h]h]Urefexplicit‰h;h<uh ]r	h>)rŽ	}r	(h ]r	hBXDeclaration.__iter__()r‘	…r’	}r“	(hUhFjŽ	ubahhGhX:meth:`Declaration.__iter__`r”	hFj‰	h}r•	(h]h]h]h]h]r–	(hKjŒ	Xpy-methr—	euubahhMhj”	hFj‚	ubhBX:…r˜	}r™	(hX:hFj‚	ubehh˜hhhX)Exmples for :meth:`Declaration.__iter__`:rš	hFjQ	ubj)r›	}rœ	(h%Kéh&hh}r	(h]jjh]h]UtestnodetypeXdoctestUgroups]rž	jah]h]j}uh ]rŸ	hBX4>>> from zope.interface import Interface
>>> class I1(Interface): pass
...
>>> class I2(I1): pass
...
>>> class I3(Interface): pass
...
>>> class I4(I3): pass
...
>>> spec = Declaration(I2, I3)
>>> spec = Declaration(I4, spec)
>>> i = iter(spec)
>>> [x.getName() for x in i]
['I4', 'I2', 'I3']
>>> list(i)
[]r 	…r¡	}r¢	(hUhFj›	ubahj$hhhX4>>> from zope.interface import Interface
>>> class I1(Interface): pass
...
>>> class I2(I1): pass
...
>>> class I3(Interface): pass
...
>>> class I4(I3): pass
...
>>> spec = Declaration(I2, I3)
>>> spec = Declaration(I4, spec)
>>> i = iter(spec)
>>> [x.getName() for x in i]
['I4', 'I2', 'I3']
>>> list(i)
[]hFjQ	ubh)r£	}r¤	(h%Küh&hh}r¥	(h]h]h]h]h]uh ]r¦	(hBXExmples for r§	…r¨	}r©	(hXExmples for hFj£	ubh2)rª	}r«	(h%Küh&hh}r¬	(h]h6Nh]h]U	refdomainXpyr­	h8NUreftypeXmethh9XDeclaration.flattenedh:‰h]h]Urefexplicit‰h;h<uh ]r®	h>)r¯	}r°	(h ]r±	hBXDeclaration.flattened()r²	…r³	}r´	(hUhFj¯	ubahhGhX:meth:`Declaration.flattened`rµ	hFjª	h}r¶	(h]h]h]h]h]r·	(hKj­	Xpy-methr¸	euubahhMhjµ	hFj£	ubhBX:…r¹	}rº	(hX:hFj£	ubehh˜hhhX*Exmples for :meth:`Declaration.flattened`:r»	hFjQ	ubj)r¼	}r½	(h%Kþh&hh}r¾	(h]jjh]h]UtestnodetypeXdoctestUgroups]r¿	jah]h]j}uh ]rÀ	hBXM>>> from zope.interface import Interface
>>> class I1(Interface): pass
...
>>> class I2(I1): pass
...
>>> class I3(Interface): pass
...
>>> class I4(I3): pass
...
>>> spec = Declaration(I2, I3)
>>> spec = Declaration(I4, spec)
>>> i = spec.flattened()
>>> [x.getName() for x in i]
['I4', 'I2', 'I1', 'I3', 'Interface']
>>> list(i)
[]rÁ	…rÂ	}rÃ	(hUhFj¼	ubahj$hhhXM>>> from zope.interface import Interface
>>> class I1(Interface): pass
...
>>> class I2(I1): pass
...
>>> class I3(Interface): pass
...
>>> class I4(I3): pass
...
>>> spec = Declaration(I2, I3)
>>> spec = Declaration(I4, spec)
>>> i = spec.flattened()
>>> [x.getName() for x in i]
['I4', 'I2', 'I1', 'I3', 'Interface']
>>> list(i)
[]hFjQ	ubh)rÄ	}rÅ	(h%Mh&hh}rÆ	(h]h]h]h]h]uh ]rÇ	(hBXExmples for rÈ	…rÉ	}rÊ	(hXExmples for hFjÄ	ubh2)rË	}rÌ	(h%Mh&hh}rÍ	(h]h6Nh]h]U	refdomainXpyrÎ	h8NUreftypeXmethh9XDeclaration.__sub__h:‰h]h]Urefexplicit‰h;h<uh ]rÏ	h>)rÐ	}rÑ	(h ]rÒ	hBXDeclaration.__sub__()rÓ	…rÔ	}rÕ	(hUhFjÐ	ubahhGhX:meth:`Declaration.__sub__`rÖ	hFjË	h}r×	(h]h]h]h]h]rØ	(hKjÎ	Xpy-methrÙ	euubahhMhjÖ	hFjÄ	ubhBX:…rÚ	}rÛ	(hX:hFjÄ	ubehh˜hhhX(Exmples for :meth:`Declaration.__sub__`:rÜ	hFjQ	ubj)rÝ	}rÞ	(h%Mh&hh}rß	(h]jjh]h]UtestnodetypeXdoctestUgroups]rà	jah]h]j}uh ]rá	hBXq>>> from zope.interface import Interface
>>> class I1(Interface): pass
...
>>> class I2(I1): pass
...
>>> class I3(Interface): pass
...
>>> class I4(I3): pass
...
>>> spec = Declaration()
>>> [iface.getName() for iface in spec]
[]
>>> spec -= I1
>>> [iface.getName() for iface in spec]
[]
>>> spec -= Declaration(I1, I2)
>>> [iface.getName() for iface in spec]
[]
>>> spec = Declaration(I2, I4)
>>> [iface.getName() for iface in spec]
['I2', 'I4']
>>> [iface.getName() for iface in spec - I4]
['I2']
>>> [iface.getName() for iface in spec - I1]
['I4']
>>> [iface.getName() for iface
...  in spec - Declaration(I3, I4)]
['I2']râ	…rã	}rä	(hUhFjÝ	ubahj$hhhXq>>> from zope.interface import Interface
>>> class I1(Interface): pass
...
>>> class I2(I1): pass
...
>>> class I3(Interface): pass
...
>>> class I4(I3): pass
...
>>> spec = Declaration()
>>> [iface.getName() for iface in spec]
[]
>>> spec -= I1
>>> [iface.getName() for iface in spec]
[]
>>> spec -= Declaration(I1, I2)
>>> [iface.getName() for iface in spec]
[]
>>> spec = Declaration(I2, I4)
>>> [iface.getName() for iface in spec]
['I2', 'I4']
>>> [iface.getName() for iface in spec - I4]
['I2']
>>> [iface.getName() for iface in spec - I1]
['I4']
>>> [iface.getName() for iface
...  in spec - Declaration(I3, I4)]
['I2']hFjQ	ubh)rå	}ræ	(h%M2h&hh}rç	(h]h]h]h]h]uh ]rè	(hBXExmples for ré	…rê	}rë	(hXExmples for hFjå	ubh2)rì	}rí	(h%M2h&hh}rî	(h]h6Nh]h]U	refdomainXpyrï	h8NUreftypeXmethh9XDeclaration.__add__h:‰h]h]Urefexplicit‰h;h<uh ]rð	h>)rñ	}rò	(h ]ró	hBXDeclaration.__add__()rô	…rõ	}rö	(hUhFjñ	ubahhGhX:meth:`Declaration.__add__`r÷	hFjì	h}rø	(h]h]h]h]h]rù	(hKjï	Xpy-methrú	euubahhMhj÷	hFjå	ubhBX:…rû	}rü	(hX:hFjå	ubehh˜hhhX(Exmples for :meth:`Declaration.__add__`:rý	hFjQ	ubj)rþ	}rÿ	(h%M4h&hh}r
(h]jjh]h]UtestnodetypeXdoctestUgroups]r
jah]h]j}uh ]r
hBXž>>> from zope.interface import Interface
>>> class I1(Interface): pass
...
>>> class I2(I1): pass
...
>>> class I3(Interface): pass
...
>>> class I4(I3): pass
...
>>> spec = Declaration()
>>> [iface.getName() for iface in spec]
[]
>>> [iface.getName() for iface in spec+I1]
['I1']
>>> [iface.getName() for iface in I1+spec]
['I1']
>>> spec2 = spec
>>> spec += I1
>>> [iface.getName() for iface in spec]
['I1']
>>> [iface.getName() for iface in spec2]
[]
>>> spec2 += Declaration(I3, I4)
>>> [iface.getName() for iface in spec2]
['I3', 'I4']
>>> [iface.getName() for iface in spec+spec2]
['I1', 'I3', 'I4']
>>> [iface.getName() for iface in spec2+spec]
['I3', 'I4', 'I1']r
…r
}r
(hUhFjþ	ubahj$hhhXž>>> from zope.interface import Interface
>>> class I1(Interface): pass
...
>>> class I2(I1): pass
...
>>> class I3(Interface): pass
...
>>> class I4(I3): pass
...
>>> spec = Declaration()
>>> [iface.getName() for iface in spec]
[]
>>> [iface.getName() for iface in spec+I1]
['I1']
>>> [iface.getName() for iface in I1+spec]
['I1']
>>> spec2 = spec
>>> spec += I1
>>> [iface.getName() for iface in spec]
['I1']
>>> [iface.getName() for iface in spec2]
[]
>>> spec2 += Declaration(I3, I4)
>>> [iface.getName() for iface in spec2]
['I3', 'I4']
>>> [iface.getName() for iface in spec+spec2]
['I1', 'I3', 'I4']
>>> [iface.getName() for iface in spec2+spec]
['I3', 'I4', 'I1']hFjQ	ubehjýhhhUhFjgjþKubehjýhhhUhFh#ubh")r
}r
(h%MVh&hh}r
(h]h]r	
U)zope-interface-declarations-implementedbyr

ah]h]r
X+zope.interface.declarations.implementedby()r
ah]uh ]r
(h-)r
}r
(h%MVh&hh}r
(h]h]h]h]h]uh ]r
h2)r
}r
(h%MUh&hh}r
(h]h6Nh]h]U	refdomainXpyr
h8NUreftypeXfunch9X)zope.interface.declarations.implementedByh:‰h]h]Urefexplicit‰h;h<uh ]r
h>)r
}r
(h ]r
hBX+zope.interface.declarations.implementedBy()r
…r
}r
(hUhFj
ubahhGhX1:func:`zope.interface.declarations.implementedBy`r
hFj
h}r
(h]h]h]h]h]r
(hKj
Xpy-funcr 
euubahhMhj
hFj
ubahhRhhhj
hFj
ubh")r!
}r"
(h%MYh&hh}r#
(h]r$
Xapir%
ah]r&
Uid5r'
ah]h]h]uh ]r(
(h-)r)
}r*
(h%MYh&hh}r+
(h]h]h]h]h]uh ]r,
hBXAPIr-
…r.
}r/
(hXAPIr0
hFj)
ubahhRhhhj0
hFj!
ubh™)r1
}r2
(h%Nh&X±/home/tseaver/projects/Zope/Z3/zope.interface/.tox/docs/lib/python2.7/site-packages/zope/interface/declarations.py:docstring of zope.interface.declarations.implementedByFallbackr3
h}r4
(h]h]h]Uentries]r5
(hžX?implementedByFallback() (in module zope.interface.declarations)X1zope.interface.declarations.implementedByFallbackr6
Utr7
ah]h]uh ]hh¡hhhUhFj!
ubh¢)r8
}r9
(h%Nh&j3
h}r:
(h]h¦Xpyh]h]h§Xfunctionr;
h©j;
hª‰h]h]uh ]r<
(h¬)r=
}r>
(h%Nh&h¯h}r?
(h]h]h]r@
j6
ah²‰h³Uh]rA
j6
ahµh¶Xzope.interface.declarationsrB
…rC
}rD
bh]hºXimplementedByFallbackrE
uh ]rF
(hÆ)rG
}rH
(h%Nh&h¯h}rI
(h]h]h]h]h]uh ]rJ
hBXzope.interface.declarations.rK
…rL
}rM
(hUhFjG
ubahhÎhhhXzope.interface.declarations.hFj=
ubhÏ)rN
}rO
(h%Nh&h¯h}rP
(h]h]h]h]h]uh ]rQ
hBXimplementedByFallbackrR
…rS
}rT
(hUhFjN
ubahh×hhhjE
hFj=
ubj)rU
}rV
(h%Nh&h¯h}rW
(h]h]h]h]h]uh ]rX
j)rY
}rZ
(h ]r[
hBXclsr\
…r]
}r^
(hUhFjY
ubahj$hXclshFjU
h}r_
(h]h]h]h]h]uubahj&hhhUhFj=
ubhØ)r`
}ra
(h%Nh&Nh}rb
(h]UexprhÜh]h]h]h]uh ]rc
h2)rd
}re
(h ]rf
há)rg
}rh
(h ]ri
hBX[source]rj
…rk
}rl
(hUhFjg
ubahhèhUhFjd
h}rm
(h]h]h]h]h]rn
hëauubahhMhUhFj`
h}ro
(h]UrefidjE
h]U	refdomainhíh]UreftypehîUrefdoch<h]h]Urefexplicit‰U	reftargetU$_modules/zope/interface/declarationsuubahhïhhhUhFj=
ubehhðhhhXimplementedByFallback(cls)hFj8
ubhñ)rp
}rq
(h%Nh&h¯h}rr
(h]h]h]h]h]uh ]rs
(h)rt
}ru
(h%Kh&j3
h}rv
(h]h]h]h]h]uh ]rw
hBX8Return the interfaces implemented for a class' instancesrx
…ry
}rz
(hX8Return the interfaces implemented for a class' instancesr{
hFjt
ubahh˜hhhj{
hFjp
ubh)r|
}r}
(h%Kh&j3
h}r~
(h]h]h]h]h]uh ]r
hBX&The value returned is an IDeclaration.r€
…r
}r‚
(hX&The value returned is an IDeclaration.rƒ
hFj|
ubahh˜hhhjƒ
hFjp
ubehj;hhhUhFj8
ubehj<hhhUhFj!
ubehjýhhhUhFj
jþKubh")r„
}r…
(h%M_h&hh}r†
(h]r‡
Xusagerˆ
ah]r‰
Uid6rŠ
ah]h]h]uh ]r‹
(h-)rŒ
}r
(h%M_h&hh}rŽ
(h]h]h]h]h]uh ]r
hBXUsager
…r‘
}r’
(hXUsager“
hFjŒ
ubahhRhhhj“
hFj„
ubh)r”
}r•
(h%Mah&hh}r–
(h]h]h]h]h]uh ]r—
hBXConsider the following example:r˜
…r™
}rš
(hXConsider the following example:r›
hFj”
ubahh˜hhhj›
hFj„
ubj)rœ
}r
(h%Mch&hh}rž
(h]jjh]h]UtestnodetypeXdoctestUgroups]rŸ
jah]h]j}uh ]r 
hBX~>>> from zope.interface import Interface
>>> class I1(Interface): pass
...
>>> class I2(Interface): pass
...
>>> class I3(Interface): pass
...
>>> class I4(Interface): pass
...
>>> class A(object):
...   implements(I3)
>>> class B(object):
...   implements(I4)
>>> class C(A, B):
...   pass
>>> classImplementsOnly(C, I1, I2)
>>> [i.getName() for i in implementedBy(C)]
['I1', 'I2']r¡
…r¢
}r£
(hUhFjœ
ubahj$hhhX~>>> from zope.interface import Interface
>>> class I1(Interface): pass
...
>>> class I2(Interface): pass
...
>>> class I3(Interface): pass
...
>>> class I4(Interface): pass
...
>>> class A(object):
...   implements(I3)
>>> class B(object):
...   implements(I4)
>>> class C(A, B):
...   pass
>>> classImplementsOnly(C, I1, I2)
>>> [i.getName() for i in implementedBy(C)]
['I1', 'I2']hFj„
ubh)r¤
}r¥
(h%Mxh&hh}r¦
(h]h]h]h]h]uh ]r§
(hBX
Instances of r¨
…r©
}rª
(hX
Instances of hFj¤
ubh>)r«
}r¬
(h ]r­
hBXC…r®
}r¯
(hUhFj«
ubahhGhX``C``hFj¤
h}r°
(h]h]h]h]h]uubhBX provide only r±
…r²
}r³
(hX provide only hFj¤
ubh>)r´
}rµ
(h ]r¶
hBXI1r·
…r¸
}r¹
(hUhFj´
ubahhGhX``I1``hFj¤
h}rº
(h]h]h]h]h]uubhBX, r»
…r¼
}r½
(hX, hFj¤
ubh>)r¾
}r¿
(h ]rÀ
hBXI2rÁ
…rÂ
}rÃ
(hUhFj¾
ubahhGhX``I2``hFj¤
h}rÄ
(h]h]h]h]h]uubhBX5, and regardless of
whatever interfaces instances of rÅ
…rÆ
}rÇ
(hX5, and regardless of
whatever interfaces instances of hFj¤
ubh>)rÈ
}rÉ
(h ]rÊ
hBXA…rË
}rÌ
(hUhFjÈ
ubahhGhX``A``hFj¤
h}rÍ
(h]h]h]h]h]uubhBX and rÎ
…rÏ
}rÐ
(hX and hFj¤
ubh>)rÑ
}rÒ
(h ]rÓ
hBXB…rÔ
}rÕ
(hUhFjÑ
ubahhGhX``B``hFj¤
h}rÖ
(h]h]h]h]h]uubhBX implement.r×
…rØ
}rÙ
(hX implement.hFj¤
ubehh˜hhhX}Instances of ``C`` provide only ``I1``, ``I2``, and regardless of
whatever interfaces instances of ``A`` and ``B`` implement.hFj„
ubh)rÚ
}rÛ
(h%M{h&hh}rÜ
(h]h]h]h]h]uh ]rÝ
hBXAnother example:rÞ
…rß
}rà
(hXAnother example:rá
hFjÚ
ubahh˜hhhjá
hFj„
ubj)râ
}rã
(h%M}h&hh}rä
(h]jjh]h]UtestnodetypeXdoctestUgroups]rå
jah]h]j}uh ]ræ
hBX.>>> from zope.interface import Interface
>>> class I1(Interface): pass
...
>>> class I2(I1): pass
...
>>> class I3(Interface): pass
...
>>> class I4(I3): pass
...
>>> class C1(object):
...   implements(I2)
>>> class C2(C1):
...   implements(I3)
>>> [i.getName() for i in implementedBy(C2)]
['I3', 'I2']rç
…rè
}ré
(hUhFjâ
ubahj$hhhX.>>> from zope.interface import Interface
>>> class I1(Interface): pass
...
>>> class I2(I1): pass
...
>>> class I3(Interface): pass
...
>>> class I4(I3): pass
...
>>> class C1(object):
...   implements(I2)
>>> class C2(C1):
...   implements(I3)
>>> [i.getName() for i in implementedBy(C2)]
['I3', 'I2']hFj„
ubh)rê
}rë
(h%Mh&hh}rì
(h]h]h]h]h]uh ]rí
hBXSReally, any object should be able to receive a successful answer, even
an instance:rî
…rï
}rð
(hXSReally, any object should be able to receive a successful answer, even
an instance:rñ
hFjê
ubahh˜hhhjñ
hFj„
ubj)rò
}ró
(h%M’h&hh}rô
(h]jjh]h]UtestnodetypeXdoctestUgroups]rõ
jah]h]j}uh ]rö
hBX‹>>> class Callable(object):
...     def __call__(self):
...         return self
>>> implementedBy(Callable())
<implementedBy __builtin__.?>r÷
…rø
}rù
(hUhFjò
ubahj$hhhX‹>>> class Callable(object):
...     def __call__(self):
...         return self
>>> implementedBy(Callable())
<implementedBy __builtin__.?>hFj„
ubh)rú
}rû
(h%Mšh&hh}rü
(h]h]h]h]h]uh ]rý
(hBX<Note that the name of the spec ends with a '?', because the rþ
…rÿ
}r(hX<Note that the name of the spec ends with a '?', because the hFjú
ubcdocutils.nodes
title_reference
r)r}r(h ]rhBXCallabler…r}r(hUhFjubahUtitle_referencerhX
`Callable`hFjú
h}r	(h]h]h]h]h]uubhBX
instance does not have a r
…r}r(hX
instance does not have a hFjú
ubj)r
}r(h ]rhBX__name__r…r}r(hUhFj
ubahjhX
`__name__`hFjú
h}r(h]h]h]h]h]uubhBX attribute.r…r}r(hX attribute.hFjú
ubehh˜hhhXuNote that the name of the spec ends with a '?', because the `Callable`
instance does not have a `__name__` attribute.hFj„
ubh)r}r(h%Mh&hh}r(h]h]h]h]h]uh ]rhBX:This also manages storage of implementation specificationsr…r}r(hX:This also manages storage of implementation specificationsrhFjubahh˜hhhjhFj„
ubehjýhhhUhFj
jþKubehjýhhhUhFh#ubh")r}r (h%M¡h&hh}r!(h]h]r"U/zope-interface-declarations-classimplementsonlyr#ah]h]r$X1zope.interface.declarations.classimplementsonly()r%ah]uh ]r&(h-)r'}r((h%M¡h&hh}r)(h]h]h]h]h]uh ]r*h2)r+}r,(h%M h&hh}r-(h]h6Nh]h]U	refdomainXpyr.h8NUreftypeXfunch9X/zope.interface.declarations.classImplementsOnlyh:‰h]h]Urefexplicit‰h;h<uh ]r/h>)r0}r1(h ]r2hBX1zope.interface.declarations.classImplementsOnly()r3…r4}r5(hUhFj0ubahhGhX7:func:`zope.interface.declarations.classImplementsOnly`r6hFj+h}r7(h]h]h]h]h]r8(hKj.Xpy-funcr9euubahhMhj6hFj'ubahhRhhhj6hFjubh")r:}r;(h%M¤h&hh}r<(h]r=Xapir>ah]r?Uid7r@ah]h]h]uh ]rA(h-)rB}rC(h%M¤h&hh}rD(h]h]h]h]h]uh ]rEhBXAPIrF…rG}rH(hXAPIrIhFjBubahhRhhhjIhFj:ubh™)rJ}rK(h%Nh&X¯/home/tseaver/projects/Zope/Z3/zope.interface/.tox/docs/lib/python2.7/site-packages/zope/interface/declarations.py:docstring of zope.interface.declarations.classImplementsOnlyrLh}rM(h]h]h]Uentries]rN(hžX=classImplementsOnly() (in module zope.interface.declarations)X/zope.interface.declarations.classImplementsOnlyrOUtrPah]h]uh ]hh¡hhhUhFj:ubh¢)rQ}rR(h%Nh&jLh}rS(h]h¦Xpyh]h]h§XfunctionrTh©jThª‰h]h]uh ]rU(h¬)rV}rW(h%Nh&h¯h}rX(h]h]h]rYjOah²‰h³Uh]rZjOahµh¶Xzope.interface.declarationsr[…r\}r]bh]hºXclassImplementsOnlyr^uh ]r_(hÆ)r`}ra(h%Nh&h¯h}rb(h]h]h]h]h]uh ]rchBXzope.interface.declarations.rd…re}rf(hUhFj`ubahhÎhhhXzope.interface.declarations.hFjVubhÏ)rg}rh(h%Nh&h¯h}ri(h]h]h]h]h]uh ]rjhBXclassImplementsOnlyrk…rl}rm(hUhFjgubahh×hhhj^hFjVubj)rn}ro(h%Nh&h¯h}rp(h]h]h]h]h]uh ]rq(j)rr}rs(h ]rthBXclsru…rv}rw(hUhFjrubahj$hXclshFjnh}rx(h]h]h]h]h]uubj)ry}rz(h ]r{hBX*interfacesr|…r}}r~(hUhFjyubahj$hX*interfaceshFjnh}r(h]h]h]h]h]uubehj&hhhUhFjVubhØ)r€}r(h%Nh&Nh}r‚(h]UexprhÜh]h]h]h]uh ]rƒh2)r„}r…(h ]r†há)r‡}rˆ(h ]r‰hBX[source]rŠ…r‹}rŒ(hUhFj‡ubahhèhUhFj„h}r(h]h]h]h]h]rŽhëauubahhMhUhFj€h}r(h]Urefidj^h]U	refdomainhíh]UreftypehîUrefdoch<h]h]Urefexplicit‰U	reftargetU$_modules/zope/interface/declarationsuubahhïhhhUhFjVubehhðhhhX%classImplementsOnly(cls, *interfaces)hFjQubhñ)r}r‘(h%Nh&h¯h}r’(h]h]h]h]h]uh ]r“(h)r”}r•(h%Kh&jLh}r–(h]h]h]h]h]uh ]r—hBX?Declare the only interfaces implemented by instances of a classr˜…r™}rš(hX?Declare the only interfaces implemented by instances of a classr›hFj”ubahh˜hhhj›hFjubh)rœ}r(h%Kh&jLh}rž(h]h]h]h]h]uh ]rŸ(hBXVThe arguments after the class are one or more interfaces or interface
specifications (r …r¡}r¢(hXVThe arguments after the class are one or more interfaces or interface
specifications (hFjœubh>)r£}r¤(h ]r¥hBXIDeclarationr¦…r§}r¨(hUhFj£ubahhGhX``IDeclaration``hFjœh}r©(h]h]h]h]h]uubhBX
 objects).rª…r«}r¬(hX
 objects).hFjœubehh˜hhhXpThe arguments after the class are one or more interfaces or interface
specifications (``IDeclaration`` objects).hFjubh)r­}r®(h%Kh&jLh}r¯(h]h]h]h]h]uh ]r°hBXhThe interfaces given (including the interfaces in the specifications)
replace any previous declarations.r±…r²}r³(hXhThe interfaces given (including the interfaces in the specifications)
replace any previous declarations.r´hFj­ubahh˜hhhj´hFjubehj;hhhUhFjQubehj<hhhUhFj:ubehjýhhhUhFjjþKubh")rµ}r¶(h%Mªh&hh}r·(h]r¸Xusager¹ah]rºUid8r»ah]h]h]uh ]r¼(h-)r½}r¾(h%Mªh&hh}r¿(h]h]h]h]h]uh ]rÀhBXUsagerÁ…rÂ}rÃ(hXUsagerÄhFj½ubahhRhhhjÄhFjµubh)rÅ}rÆ(h%M¬h&hh}rÇ(h]h]h]h]h]uh ]rÈhBXConsider the following example:rÉ…rÊ}rË(hXConsider the following example:rÌhFjÅubahh˜hhhjÌhFjµubj)rÍ}rÎ(h%M®h&hh}rÏ(h]jjh]h]UtestnodetypeXdoctestUgroups]rÐjah]h]j}uh ]rÑhBX~>>> from zope.interface import Interface
>>> class I1(Interface): pass
...
>>> class I2(Interface): pass
...
>>> class I3(Interface): pass
...
>>> class I4(Interface): pass
...
>>> class A(object):
...   implements(I3)
>>> class B(object):
...   implements(I4)
>>> class C(A, B):
...   pass
>>> classImplementsOnly(C, I1, I2)
>>> [i.getName() for i in implementedBy(C)]
['I1', 'I2']rÒ…rÓ}rÔ(hUhFjÍubahj$hhhX~>>> from zope.interface import Interface
>>> class I1(Interface): pass
...
>>> class I2(Interface): pass
...
>>> class I3(Interface): pass
...
>>> class I4(Interface): pass
...
>>> class A(object):
...   implements(I3)
>>> class B(object):
...   implements(I4)
>>> class C(A, B):
...   pass
>>> classImplementsOnly(C, I1, I2)
>>> [i.getName() for i in implementedBy(C)]
['I1', 'I2']hFjµubh)rÕ}rÖ(h%MÃh&hh}r×(h]h]h]h]h]uh ]rØ(hBX
Instances of rÙ…rÚ}rÛ(hX
Instances of hFjÕubh>)rÜ}rÝ(h ]rÞhBXC…rß}rà(hUhFjÜubahhGhX``C``hFjÕh}rá(h]h]h]h]h]uubhBX provide only r⅁rã}rä(hX provide only hFjÕubh>)rå}ræ(h ]rçhBXI1r腁ré}rê(hUhFjåubahhGhX``I1``hFjÕh}rë(h]h]h]h]h]uubhBX, r셁rí}rî(hX, hFjÕubh>)rï}rð(h ]rñhBXI2rò…ró}rô(hUhFjïubahhGhX``I2``hFjÕh}rõ(h]h]h]h]h]uubhBX5, and regardless of
whatever interfaces instances of rö…r÷}rø(hX5, and regardless of
whatever interfaces instances of hFjÕubh>)rù}rú(h ]rûhBXA…rü}rý(hUhFjùubahhGhX``A``hFjÕh}rþ(h]h]h]h]h]uubhBX and rÿ…r}r(hX and hFjÕubh>)r}r(h ]rhBXB…r}r(hUhFjubahhGhX``B``hFjÕh}r(h]h]h]h]h]uubhBX implement.r…r	}r
(hX implement.hFjÕubehh˜hhhX}Instances of ``C`` provide only ``I1``, ``I2``, and regardless of
whatever interfaces instances of ``A`` and ``B`` implement.hFjµubehjýhhhUhFjjþKubehjýhhhUhFh#ubh")r}r(h%MÈh&hh}r
(h]h]rU+zope-interface-declarations-classimplementsrah]h]rX-zope.interface.declarations.classimplements()rah]uh ]r(h-)r}r(h%MÈh&hh}r(h]h]h]h]h]uh ]rh2)r}r(h%MÇh&hh}r(h]h6Nh]h]U	refdomainXpyrh8NUreftypeXfunch9X+zope.interface.declarations.classImplementsh:‰h]h]Urefexplicit‰h;h<uh ]rh>)r}r(h ]rhBX-zope.interface.declarations.classImplements()r…r }r!(hUhFjubahhGhX3:func:`zope.interface.declarations.classImplements`r"hFjh}r#(h]h]h]h]h]r$(hKjXpy-funcr%euubahhMhj"hFjubahhRhhhj"hFjubh")r&}r'(h%MËh&hh}r((h]r)Xapir*ah]r+Uid9r,ah]h]h]uh ]r-(h-)r.}r/(h%MËh&hh}r0(h]h]h]h]h]uh ]r1hBXAPIr2…r3}r4(hXAPIr5hFj.ubahhRhhhj5hFj&ubh™)r6}r7(h%Nh&X«/home/tseaver/projects/Zope/Z3/zope.interface/.tox/docs/lib/python2.7/site-packages/zope/interface/declarations.py:docstring of zope.interface.declarations.classImplementsr8h}r9(h]h]h]Uentries]r:(hžX9classImplements() (in module zope.interface.declarations)X+zope.interface.declarations.classImplementsr;Utr<ah]h]uh ]hh¡hhhUhFj&ubh¢)r=}r>(h%Nh&j8h}r?(h]h¦Xpyh]h]h§Xfunctionr@h©j@hª‰h]h]uh ]rA(h¬)rB}rC(h%Nh&h¯h}rD(h]h]h]rEj;ah²‰h³Uh]rFj;ahµh¶Xzope.interface.declarationsrG…rH}rIbh]hºXclassImplementsrJuh ]rK(hÆ)rL}rM(h%Nh&h¯h}rN(h]h]h]h]h]uh ]rOhBXzope.interface.declarations.rP…rQ}rR(hUhFjLubahhÎhhhXzope.interface.declarations.hFjBubhÏ)rS}rT(h%Nh&h¯h}rU(h]h]h]h]h]uh ]rVhBXclassImplementsrW…rX}rY(hUhFjSubahh×hhhjJhFjBubj)rZ}r[(h%Nh&h¯h}r\(h]h]h]h]h]uh ]r](j)r^}r_(h ]r`hBXclsra…rb}rc(hUhFj^ubahj$hXclshFjZh}rd(h]h]h]h]h]uubj)re}rf(h ]rghBX*interfacesrh…ri}rj(hUhFjeubahj$hX*interfaceshFjZh}rk(h]h]h]h]h]uubehj&hhhUhFjBubhØ)rl}rm(h%Nh&Nh}rn(h]UexprhÜh]h]h]h]uh ]roh2)rp}rq(h ]rrhá)rs}rt(h ]ruhBX[source]rv…rw}rx(hUhFjsubahhèhUhFjph}ry(h]h]h]h]h]rzhëauubahhMhUhFjlh}r{(h]UrefidjJh]U	refdomainhíh]UreftypehîUrefdoch<h]h]Urefexplicit‰U	reftargetU$_modules/zope/interface/declarationsuubahhïhhhUhFjBubehhðhhhX!classImplements(cls, *interfaces)hFj=ubhñ)r|}r}(h%Nh&h¯h}r~(h]h]h]h]h]uh ]r(h)r€}r(h%Kh&j8h}r‚(h]h]h]h]h]uh ]rƒhBXBDeclare additional interfaces implemented for instances of a classr„…r…}r†(hXBDeclare additional interfaces implemented for instances of a classr‡hFj€ubahh˜hhhj‡hFj|ubh)rˆ}r‰(h%Kh&j8h}rŠ(h]h]h]h]h]uh ]r‹(hBXVThe arguments after the class are one or more interfaces or
interface specifications (rŒ…r}rŽ(hXVThe arguments after the class are one or more interfaces or
interface specifications (hFjˆubh>)r}r(h ]r‘hBXIDeclarationr’…r“}r”(hUhFjubahhGhX``IDeclaration``hFjˆh}r•(h]h]h]h]h]uubhBX
 objects).r–…r—}r˜(hX
 objects).hFjˆubehh˜hhhXpThe arguments after the class are one or more interfaces or
interface specifications (``IDeclaration`` objects).hFj|ubh)r™}rš(h%Kh&j8h}r›(h]h]h]h]h]uh ]rœhBXvThe interfaces given (including the interfaces in the specifications)
are added to any interfaces previously declared.r…rž}rŸ(hXvThe interfaces given (including the interfaces in the specifications)
are added to any interfaces previously declared.r hFj™ubahh˜hhhj hFj|ubehj;hhhUhFj=ubehj<hhhUhFj&ubehjýhhhUhFjjþKubh")r¡}r¢(h%MÑh&hh}r£(h]r¤Xusager¥ah]r¦Uid10r§ah]h]h]uh ]r¨(h-)r©}rª(h%MÑh&hh}r«(h]h]h]h]h]uh ]r¬hBXUsager­…r®}r¯(hXUsager°hFj©ubahhRhhhj°hFj¡ubh)r±}r²(h%MÓh&hh}r³(h]h]h]h]h]uh ]r´hBXConsider the following example:rµ…r¶}r·(hXConsider the following example:r¸hFj±ubahh˜hhhj¸hFj¡ubj)r¹}rº(h%MÕh&hh}r»(h]jjh]h]UtestnodetypeXdoctestUgroups]r¼jah]h]j}uh ]r½hBX>>> from zope.interface import Interface
>>> class I1(Interface): pass
...
>>> class I2(Interface): pass
...
>>> class I3(Interface): pass
...
>>> class I4(Interface): pass
...
>>> class I5(Interface): pass
...
>>> class A(object):
...   implements(I3)
>>> class B(object):
...   implements(I4)
>>> class C(A, B):
...   pass
>>> classImplements(C, I1, I2)
>>> [i.getName() for i in implementedBy(C)]
['I1', 'I2', 'I3', 'I4']
>>> classImplements(C, I5)
>>> [i.getName() for i in implementedBy(C)]
['I1', 'I2', 'I5', 'I3', 'I4']r¾…r¿}rÀ(hUhFj¹ubahj$hhhX>>> from zope.interface import Interface
>>> class I1(Interface): pass
...
>>> class I2(Interface): pass
...
>>> class I3(Interface): pass
...
>>> class I4(Interface): pass
...
>>> class I5(Interface): pass
...
>>> class A(object):
...   implements(I3)
>>> class B(object):
...   implements(I4)
>>> class C(A, B):
...   pass
>>> classImplements(C, I1, I2)
>>> [i.getName() for i in implementedBy(C)]
['I1', 'I2', 'I3', 'I4']
>>> classImplements(C, I5)
>>> [i.getName() for i in implementedBy(C)]
['I1', 'I2', 'I5', 'I3', 'I4']hFj¡ubh)rÁ}rÂ(h%Mïh&hh}rÃ(h]h]h]h]h]uh ]rÄ(hBX
Instances of rÅ…rÆ}rÇ(hX
Instances of hFjÁubh>)rÈ}rÉ(h ]rÊhBXC…rË}rÌ(hUhFjÈubahhGhX``C``hFjÁh}rÍ(h]h]h]h]h]uubhBX	 provide rÎ…rÏ}rÐ(hX	 provide hFjÁubh>)rÑ}rÒ(h ]rÓhBXI1rÔ…rÕ}rÖ(hUhFjÑubahhGhX``I1``hFjÁh}r×(h]h]h]h]h]uubhBX, rØ…rÙ}rÚ(hX, hFjÁubh>)rÛ}rÜ(h ]rÝhBXI2rÞ…rß}rà(hUhFjÛubahhGhX``I2``hFjÁh}rá(h]h]h]h]h]uubhBX, râ…rã}rä(hX, hFjÁubh>)rå}ræ(h ]rçhBXI5rè…ré}rê(hUhFjåubahhGhX``I5``hFjÁh}rë(h]h]h]h]h]uubhBX', and whatever
interfaces instances of rì…rí}rî(hX', and whatever
interfaces instances of hFjÁubh>)rï}rð(h ]rñhBXA…rò}ró(hUhFjïubahhGhX``A``hFjÁh}rô(h]h]h]h]h]uubhBX and rõ…rö}r÷(hX and hFjÁubh>)rø}rù(h ]rúhBXB…rû}rü(hUhFjøubahhGhX``B``hFjÁh}rý(h]h]h]h]h]uubhBX	 provide.rþ…rÿ}r
(hX	 provide.hFjÁubehh˜hhhXpInstances of ``C`` provide ``I1``, ``I2``, ``I5``, and whatever
interfaces instances of ``A`` and ``B`` provide.hFj¡ubehjýhhhUhFjjþKubehjýhhhUhFh#ubh")r
}r
(h%Môh&hh}r
(h]r
X'zope.interface.declarations.implementerr
ah]r
U'zope-interface-declarations-implementerr
ah]h]h]uh ]r
(h-)r	
}r

(h%Môh&hh}r
(h]h]h]h]h]uh ]r
h2)r

}r
(h%Móh&hh}r
(h]h6Nh]h]U	refdomainXpyr
h8NUreftypeXclassh9X'zope.interface.declarations.implementerh:‰h]h]Urefexplicit‰h;h<uh ]r
h>)r
}r
(h ]r
hBX'zope.interface.declarations.implementerr
…r
}r
(hUhFj
ubahhGhX0:class:`zope.interface.declarations.implementer`r
hFj

h}r
(h]h]h]h]h]r
(hKj
Xpy-classr
euubahhMhj
hFj	
ubahhRhhhj
hFj
ubh")r
}r
(h%M÷h&hh}r
(h]r
Xapir 
ah]r!
Uid11r"
ah]h]h]uh ]r#
(h-)r$
}r%
(h%M÷h&hh}r&
(h]h]h]h]h]uh ]r'
hBXAPIr(
…r)
}r*
(hXAPIr+
hFj$
ubahhRhhhj+
hFj
ubh™)r,
}r-
(h%Nh&X§/home/tseaver/projects/Zope/Z3/zope.interface/.tox/docs/lib/python2.7/site-packages/zope/interface/declarations.py:docstring of zope.interface.declarations.implementerr.
h}r/
(h]h]h]Uentries]r0
(hžX2implementer (class in zope.interface.declarations)j
Utr1
ah]h]uh ]hh¡hhhUhFj
ubh¢)r2
}r3
(h%Nh&j.
h}r4
(h]h¦Xpyh]h]h§Xclassr5
h©j5
hª‰h]h]uh ]r6
(h¬)r7
}r8
(h%Nh&h¯h}r9
(h]h]h]r:
j
ah²‰h³Uh]r;
j
ahµh¶Xzope.interface.declarationsr<
…r=
}r>
bh]hºXimplementerr?
uh ]r@
(h½)rA
}rB
(h%Nh&h¯h}rC
(h]h]h]h]h]uh ]rD
hBXclass rE
…rF
}rG
(hUhFjA
ubahhÅhhhXclass hFj7
ubhÆ)rH
}rI
(h%Nh&h¯h}rJ
(h]h]h]h]h]uh ]rK
hBXzope.interface.declarations.rL
…rM
}rN
(hUhFjH
ubahhÎhhhXzope.interface.declarations.hFj7
ubhÏ)rO
}rP
(h%Nh&h¯h}rQ
(h]h]h]h]h]uh ]rR
hBXimplementerrS
…rT
}rU
(hUhFjO
ubahh×hhhj?
hFj7
ubj)rV
}rW
(h%Nh&h¯h}rX
(h]h]h]h]h]uh ]rY
j)rZ
}r[
(h ]r\
hBX*interfacesr]
…r^
}r_
(hUhFjZ
ubahj$hX*interfaceshFjV
h}r`
(h]h]h]h]h]uubahj&hhhUhFj7
ubhØ)ra
}rb
(h%Nh&Nh}rc
(h]UexprhÜh]h]h]h]uh ]rd
h2)re
}rf
(h ]rg
há)rh
}ri
(h ]rj
hBX[source]rk
…rl
}rm
(hUhFjh
ubahhèhUhFje
h}rn
(h]h]h]h]h]ro
hëauubahhMhUhFja
h}rp
(h]Urefidj?
h]U	refdomainhíh]UreftypehîUrefdoch<h]h]Urefexplicit‰U	reftargetU$_modules/zope/interface/declarationsuubahhïhhhUhFj7
ubehhðhhhXimplementer(*interfaces)hFj2
ubhñ)rq
}rr
(h%Nh&h¯h}rs
(h]h]h]h]h]uh ]rt
(h)ru
}rv
(h%Kh&j.
h}rw
(h]h]h]h]h]uh ]rx
hBX;Declare the interfaces implemented by instances of a class.ry
…rz
}r{
(hX;Declare the interfaces implemented by instances of a class.r|
hFju
ubahh˜hhhj|
hFjq
ubh)r}
}r~
(h%Kh&j.
h}r
(h]h]h]h]h]uh ]r€
hBX-This function is called as a class decorator.r
…r‚
}rƒ
(hX-This function is called as a class decorator.r„
hFj}
ubahh˜hhhj„
hFjq
ubh)r…
}r†
(h%Kh&j.
h}r‡
(h]h]h]h]h]uh ]rˆ
hBX\The arguments are one or more interfaces or interface
specifications (IDeclaration objects).r‰
…rŠ
}r‹
(hX\The arguments are one or more interfaces or interface
specifications (IDeclaration objects).rŒ
hFj…
ubahh˜hhhjŒ
hFjq
ubh)r
}rŽ
(h%Kh&j.
h}r
(h]h]h]h]h]uh ]r
hBXvThe interfaces given (including the interfaces in the
specifications) are added to any interfaces previously
declared.r‘
…r’
}r“
(hXvThe interfaces given (including the interfaces in the
specifications) are added to any interfaces previously
declared.r”
hFj
ubahh˜hhhj”
hFjq
ubh)r•
}r–
(h%Kh&j.
h}r—
(h]h]h]h]h]uh ]r˜
hBX[Previous declarations include declarations for base classes
unless implementsOnly was used.r™
…rš
}r›
(hX[Previous declarations include declarations for base classes
unless implementsOnly was used.rœ
hFj•
ubahh˜hhhjœ
hFjq
ubh)r
}rž
(h%Kh&j.
h}rŸ
(h]h]h]h]h]uh ]r 
hBXrThis function is provided for convenience. It provides a more
convenient way to call classImplements. For example:r¡
…r¢
}r£
(hXrThis function is provided for convenience. It provides a more
convenient way to call classImplements. For example:hFj
ubahh˜hhhXsThis function is provided for convenience. It provides a more
convenient way to call classImplements. For example::hFjq
ubj)r¤
}r¥
(h%Kh&j.
h}r¦
(h]h]h]jjh]h]uh ]r§
hBX*@implementer(I1)
class C(object):
    passr¨
…r©
}rª
(hUhFj¤
ubahj$hhhX*@implementer(I1)
class C(object):
    passhFjq
ubh)r«
}r¬
(h%Kh&j.
h}r­
(h]h]h]h]h]uh ]r®
hBXis equivalent to calling:r¯
…r°
}r±
(hXis equivalent to calling:hFj«
ubahh˜hhhXis equivalent to calling::hFjq
ubj)r²
}r³
(h%Kh&j.
h}r´
(h]h]h]jjh]h]uh ]rµ
hBXclassImplements(C, I1)r¶
…r·
}r¸
(hUhFj²
ubahj$hhhXclassImplements(C, I1)hFjq
ubh)r¹
}rº
(h%Kh&j.
h}r»
(h]h]h]h]h]uh ]r¼
hBX!after the class has been created.r½
…r¾
}r¿
(hX!after the class has been created.rÀ
hFj¹
ubahh˜hhhjÀ
hFjq
ubehj;hhhUhFj2
ubehj<hhhUhFj
ubehjýhhhUhFj
jþKubehjýhhhUhFh#jþKubh")rÁ
}rÂ
(h%Mÿh&hh}rÃ
(h]rÄ
X,zope.interface.declarations.implementer_onlyrÅ
ah]rÆ
U,zope-interface-declarations-implementer-onlyrÇ
ah]h]h]uh ]rÈ
(h-)rÉ
}rÊ
(h%Mÿh&hh}rË
(h]h]h]h]h]uh ]rÌ
h2)rÍ
}rÎ
(h%Mþh&hh}rÏ
(h]h6Nh]h]U	refdomainXpyrÐ
h8NUreftypeXclassh9X,zope.interface.declarations.implementer_onlyh:‰h]h]Urefexplicit‰h;h<uh ]rÑ
h>)rÒ
}rÓ
(h ]rÔ
hBX,zope.interface.declarations.implementer_onlyrÕ
…rÖ
}r×
(hUhFjÒ
ubahhGhX5:class:`zope.interface.declarations.implementer_only`rØ
hFjÍ
h}rÙ
(h]h]h]h]h]rÚ
(hKjÐ
Xpy-classrÛ
euubahhMhjØ
hFjÉ
ubahhRhhhjØ
hFjÁ
ubh")rÜ
}rÝ
(h%Mh&hh}rÞ
(h]rß
Xapirà
ah]rá
Uid12râ
ah]h]h]uh ]rã
(h-)rä
}rå
(h%Mh&hh}ræ
(h]h]h]h]h]uh ]rç
hBXAPIrè
…ré
}rê
(hXAPIrë
hFjä
ubahhRhhhjë
hFjÜ
ubh™)rì
}rí
(h%Nh&X¬/home/tseaver/projects/Zope/Z3/zope.interface/.tox/docs/lib/python2.7/site-packages/zope/interface/declarations.py:docstring of zope.interface.declarations.implementer_onlyrî
h}rï
(h]h]h]Uentries]rð
(hžX7implementer_only (class in zope.interface.declarations)jÅ
Utrñ
ah]h]uh ]hh¡hhhUhFjÜ
ubh¢)rò
}ró
(h%Nh&jî
h}rô
(h]h¦Xpyh]h]h§Xclassrõ
h©jõ
hª‰h]h]uh ]rö
(h¬)r÷
}rø
(h%Nh&h¯h}rù
(h]h]h]rú
jÅ
ah²‰h³Uh]rû
jÅ
ahµh¶Xzope.interface.declarationsrü
…rý
}rþ
bh]hºXimplementer_onlyrÿ
uh ]r(h½)r}r(h%Nh&h¯h}r(h]h]h]h]h]uh ]rhBXclass r…r}r(hUhFjubahhÅhhhXclass hFj÷
ubhÆ)r}r	(h%Nh&h¯h}r
(h]h]h]h]h]uh ]rhBXzope.interface.declarations.r…r
}r(hUhFjubahhÎhhhXzope.interface.declarations.hFj÷
ubhÏ)r}r(h%Nh&h¯h}r(h]h]h]h]h]uh ]rhBXimplementer_onlyr…r}r(hUhFjubahh×hhhjÿ
hFj÷
ubj)r}r(h%Nh&h¯h}r(h]h]h]h]h]uh ]rj)r}r(h ]rhBX*interfacesr…r}r(hUhFjubahj$hX*interfaceshFjh}r (h]h]h]h]h]uubahj&hhhUhFj÷
ubhØ)r!}r"(h%Nh&Nh}r#(h]UexprhÜh]h]h]h]uh ]r$h2)r%}r&(h ]r'há)r(}r)(h ]r*hBX[source]r+…r,}r-(hUhFj(ubahhèhUhFj%h}r.(h]h]h]h]h]r/hëauubahhMhUhFj!h}r0(h]Urefidjÿ
h]U	refdomainhíh]UreftypehîUrefdoch<h]h]Urefexplicit‰U	reftargetU$_modules/zope/interface/declarationsuubahhïhhhUhFj÷
ubehhðhhhXimplementer_only(*interfaces)hFjò
ubhñ)r1}r2(h%Nh&h¯h}r3(h]h]h]h]h]uh ]r4(h)r5}r6(h%Kh&jî
h}r7(h]h]h]h]h]uh ]r8hBX?Declare the only interfaces implemented by instances of a classr9…r:}r;(hX?Declare the only interfaces implemented by instances of a classr<hFj5ubahh˜hhhj<hFj1ubh)r=}r>(h%Kh&jî
h}r?(h]h]h]h]h]uh ]r@hBX-This function is called as a class decorator.rA…rB}rC(hX-This function is called as a class decorator.rDhFj=ubahh˜hhhjDhFj1ubh)rE}rF(h%Kh&jî
h}rG(h]h]h]h]h]uh ]rHhBX\The arguments are one or more interfaces or interface
specifications (IDeclaration objects).rI…rJ}rK(hX\The arguments are one or more interfaces or interface
specifications (IDeclaration objects).rLhFjEubahh˜hhhjLhFj1ubh)rM}rN(h%Kh&jî
h}rO(h]h]h]h]h]uh ]rPhBXMPrevious declarations including declarations for base classes
are overridden.rQ…rR}rS(hXMPrevious declarations including declarations for base classes
are overridden.rThFjMubahh˜hhhjThFj1ubh)rU}rV(h%Kh&jî
h}rW(h]h]h]h]h]uh ]rXhBXvThis function is provided for convenience. It provides a more
convenient way to call classImplementsOnly. For example:rY…rZ}r[(hXvThis function is provided for convenience. It provides a more
convenient way to call classImplementsOnly. For example:hFjUubahh˜hhhXwThis function is provided for convenience. It provides a more
convenient way to call classImplementsOnly. For example::hFj1ubj)r\}r](h%Kh&jî
h}r^(h]h]h]jjh]h]uh ]r_hBX+@implementer_only(I1)
class C(object): passr`…ra}rb(hUhFj\ubahj$hhhX+@implementer_only(I1)
class C(object): passhFj1ubh)rc}rd(h%Kh&jî
h}re(h]h]h]h]h]uh ]rfhBXis equivalent to calling:rg…rh}ri(hXis equivalent to calling:hFjcubahh˜hhhXis equivalent to calling::hFj1ubj)rj}rk(h%Kh&jî
h}rl(h]h]h]jjh]h]uh ]rmhBXclassImplementsOnly(I1)rn…ro}rp(hUhFjjubahj$hhhXclassImplementsOnly(I1)hFj1ubh)rq}rr(h%Kh&jî
h}rs(h]h]h]h]h]uh ]rthBX!after the class has been created.ru…rv}rw(hX!after the class has been created.rxhFjqubahh˜hhhjxhFj1ubehj;hhhUhFjò
ubehj<hhhUhFjÜ
ubehjýhhhUhFjÁ
jþKubehjýhhhUhFh#jþKubh")ry}rz(h%M
h&hh}r{(h]h]r|U&zope-interface-declarations-implementsr}ah]h]r~X(zope.interface.declarations.implements()rah]uh ]r€(h-)r}r‚(h%M
h&hh}rƒ(h]h]h]h]h]uh ]r„h2)r…}r†(h%M	h&hh}r‡(h]h6Nh]h]U	refdomainXpyrˆh8NUreftypeXfunch9X&zope.interface.declarations.implementsh:‰h]h]Urefexplicit‰h;h<uh ]r‰h>)rŠ}r‹(h ]rŒhBX(zope.interface.declarations.implements()r…rŽ}r(hUhFjŠubahhGhX.:func:`zope.interface.declarations.implements`rhFj…h}r‘(h]h]h]h]h]r’(hKjˆXpy-funcr“euubahhMhjhFjubahhRhhhjhFjyubh")r”}r•(h%M
h&hh}r–(h]r—Xapir˜ah]r™Uid13ršah]h]h]uh ]r›(h-)rœ}r(h%M
h&hh}rž(h]h]h]h]h]uh ]rŸhBXAPIr …r¡}r¢(hXAPIr£hFjœubahhRhhhj£hFj”ubh™)r¤}r¥(h%Nh&X¦/home/tseaver/projects/Zope/Z3/zope.interface/.tox/docs/lib/python2.7/site-packages/zope/interface/declarations.py:docstring of zope.interface.declarations.implementsr¦h}r§(h]h]h]Uentries]r¨(hžX4implements() (in module zope.interface.declarations)X&zope.interface.declarations.implementsr©Utrªah]h]uh ]hh¡hhhUhFj”ubh¢)r«}r¬(h%Nh&j¦h}r­(h]h¦Xpyh]h]h§Xfunctionr®h©j®hª‰h]h]uh ]r¯(h¬)r°}r±(h%Nh&h¯h}r²(h]h]h]r³j©ah²‰h³Uh]r´j©ahµh¶Xzope.interface.declarationsrµ…r¶}r·bh]hºX
implementsr¸uh ]r¹(hÆ)rº}r»(h%Nh&h¯h}r¼(h]h]h]h]h]uh ]r½hBXzope.interface.declarations.r¾…r¿}rÀ(hUhFjºubahhÎhhhXzope.interface.declarations.hFj°ubhÏ)rÁ}rÂ(h%Nh&h¯h}rÃ(h]h]h]h]h]uh ]rÄhBX
implementsrÅ…rÆ}rÇ(hUhFjÁubahh×hhhj¸hFj°ubj)rÈ}rÉ(h%Nh&h¯h}rÊ(h]h]h]h]h]uh ]rËj)rÌ}rÍ(h ]rÎhBX*interfacesrÏ…rÐ}rÑ(hUhFjÌubahj$hX*interfaceshFjÈh}rÒ(h]h]h]h]h]uubahj&hhhUhFj°ubhØ)rÓ}rÔ(h%Nh&Nh}rÕ(h]UexprhÜh]h]h]h]uh ]rÖh2)r×}rØ(h ]rÙhá)rÚ}rÛ(h ]rÜhBX[source]rÝ…rÞ}rß(hUhFjÚubahhèhUhFj×h}rà(h]h]h]h]h]ráhëauubahhMhUhFjÓh}râ(h]Urefidj¸h]U	refdomainhíh]UreftypehîUrefdoch<h]h]Urefexplicit‰U	reftargetU$_modules/zope/interface/declarationsuubahhïhhhUhFj°ubehhðhhhXimplements(*interfaces)hFj«ubhñ)rã}rä(h%Nh&h¯h}rå(h]h]h]h]h]uh ]ræ(h)rç}rè(h%Kh&j¦h}ré(h]h]h]h]h]uh ]rêhBX6Declare interfaces implemented by instances of a classr녁rì}rí(hX6Declare interfaces implemented by instances of a classrîhFjçubahh˜hhhjîhFjãubh)rï}rð(h%Kh&j¦h}rñ(h]h]h]h]h]uh ]ròhBX.This function is called in a class definition.ró…rô}rõ(hX.This function is called in a class definition.röhFjïubahh˜hhhjöhFjãubh)r÷}rø(h%Kh&j¦h}rù(h]h]h]h]h]uh ]rúhBX\The arguments are one or more interfaces or interface
specifications (IDeclaration objects).rû…rü}rý(hX\The arguments are one or more interfaces or interface
specifications (IDeclaration objects).rþhFj÷ubahh˜hhhjþhFjãubh)rÿ}r(h%Kh&j¦h}r(h]h]h]h]h]uh ]rhBXvThe interfaces given (including the interfaces in the
specifications) are added to any interfaces previously
declared.r…r}r(hXvThe interfaces given (including the interfaces in the
specifications) are added to any interfaces previously
declared.rhFjÿubahh˜hhhjhFjãubh)r}r(h%Kh&j¦h}r	(h]h]h]h]h]uh ]r
hBX[Previous declarations include declarations for base classes
unless implementsOnly was used.r…r}r
(hX[Previous declarations include declarations for base classes
unless implementsOnly was used.rhFjubahh˜hhhjhFjãubh)r}r(h%Kh&j¦h}r(h]h]h]h]h]uh ]rhBXrThis function is provided for convenience. It provides a more
convenient way to call classImplements. For example:r…r}r(hXrThis function is provided for convenience. It provides a more
convenient way to call classImplements. For example:hFjubahh˜hhhXsThis function is provided for convenience. It provides a more
convenient way to call classImplements. For example::hFjãubj)r}r(h%Kh&j¦h}r(h]h]h]jjh]h]uh ]rhBXimplements(I1)r…r}r(hUhFjubahj$hhhXimplements(I1)hFjãubh)r}r(h%Kh&j¦h}r(h]h]h]h]h]uh ]r hBXis equivalent to calling:r!…r"}r#(hXis equivalent to calling:hFjubahh˜hhhXis equivalent to calling::hFjãubj)r$}r%(h%Kh&j¦h}r&(h]h]h]jjh]h]uh ]r'hBXclassImplements(C, I1)r(…r)}r*(hUhFj$ubahj$hhhXclassImplements(C, I1)hFjãubh)r+}r,(h%Kh&j¦h}r-(h]h]h]h]h]uh ]r.hBX!after the class has been created.r/…r0}r1(hX!after the class has been created.r2hFj+ubahh˜hhhj2hFjãubehj;hhhUhFj«ubehj<hhhUhFj”ubehjýhhhUhFjyjþKubehjýhhhUhFh#ubh")r3}r4(h%Mh&hh}r5(h]h]r6U*zope-interface-declarations-implementsonlyr7ah]h]r8X,zope.interface.declarations.implementsonly()r9ah]uh ]r:(h-)r;}r<(h%Mh&hh}r=(h]h]h]h]h]uh ]r>h2)r?}r@(h%Mh&hh}rA(h]h6Nh]h]U	refdomainXpyrBh8NUreftypeXfunch9X*zope.interface.declarations.implementsOnlyh:‰h]h]Urefexplicit‰h;h<uh ]rCh>)rD}rE(h ]rFhBX,zope.interface.declarations.implementsOnly()rG…rH}rI(hUhFjDubahhGhX2:func:`zope.interface.declarations.implementsOnly`rJhFj?h}rK(h]h]h]h]h]rL(hKjBXpy-funcrMeuubahhMhjJhFj;ubahhRhhhjJhFj3ubh")rN}rO(h%Mh&hh}rP(h]rQXapirRah]rSUid14rTah]h]h]uh ]rU(h-)rV}rW(h%Mh&hh}rX(h]h]h]h]h]uh ]rYhBXAPIrZ…r[}r\(hXAPIr]hFjVubahhRhhhj]hFjNubh™)r^}r_(h%Nh&Xª/home/tseaver/projects/Zope/Z3/zope.interface/.tox/docs/lib/python2.7/site-packages/zope/interface/declarations.py:docstring of zope.interface.declarations.implementsOnlyr`h}ra(h]h]h]Uentries]rb(hžX8implementsOnly() (in module zope.interface.declarations)X*zope.interface.declarations.implementsOnlyrcUtrdah]h]uh ]hh¡hhhUhFjNubh¢)re}rf(h%Nh&j`h}rg(h]h¦Xpyh]h]h§Xfunctionrhh©jhhª‰h]h]uh ]ri(h¬)rj}rk(h%Nh&h¯h}rl(h]h]h]rmjcah²‰h³Uh]rnjcahµh¶Xzope.interface.declarationsro…rp}rqbh]hºXimplementsOnlyrruh ]rs(hÆ)rt}ru(h%Nh&h¯h}rv(h]h]h]h]h]uh ]rwhBXzope.interface.declarations.rx…ry}rz(hUhFjtubahhÎhhhXzope.interface.declarations.hFjjubhÏ)r{}r|(h%Nh&h¯h}r}(h]h]h]h]h]uh ]r~hBXimplementsOnlyr…r€}r(hUhFj{ubahh×hhhjrhFjjubj)r‚}rƒ(h%Nh&h¯h}r„(h]h]h]h]h]uh ]r…j)r†}r‡(h ]rˆhBX*interfacesr‰…rŠ}r‹(hUhFj†ubahj$hX*interfaceshFj‚h}rŒ(h]h]h]h]h]uubahj&hhhUhFjjubhØ)r}rŽ(h%Nh&Nh}r(h]UexprhÜh]h]h]h]uh ]rh2)r‘}r’(h ]r“há)r”}r•(h ]r–hBX[source]r—…r˜}r™(hUhFj”ubahhèhUhFj‘h}rš(h]h]h]h]h]r›hëauubahhMhUhFjh}rœ(h]Urefidjrh]U	refdomainhíh]UreftypehîUrefdoch<h]h]Urefexplicit‰U	reftargetU$_modules/zope/interface/declarationsuubahhïhhhUhFjjubehhðhhhXimplementsOnly(*interfaces)hFjeubhñ)r}rž(h%Nh&h¯h}rŸ(h]h]h]h]h]uh ]r (h)r¡}r¢(h%Kh&j`h}r£(h]h]h]h]h]uh ]r¤hBX?Declare the only interfaces implemented by instances of a classr¥…r¦}r§(hX?Declare the only interfaces implemented by instances of a classr¨hFj¡ubahh˜hhhj¨hFjubh)r©}rª(h%Kh&j`h}r«(h]h]h]h]h]uh ]r¬hBX.This function is called in a class definition.r­…r®}r¯(hX.This function is called in a class definition.r°hFj©ubahh˜hhhj°hFjubh)r±}r²(h%Kh&j`h}r³(h]h]h]h]h]uh ]r´hBX\The arguments are one or more interfaces or interface
specifications (IDeclaration objects).rµ…r¶}r·(hX\The arguments are one or more interfaces or interface
specifications (IDeclaration objects).r¸hFj±ubahh˜hhhj¸hFjubh)r¹}rº(h%Kh&j`h}r»(h]h]h]h]h]uh ]r¼hBXMPrevious declarations including declarations for base classes
are overridden.r½…r¾}r¿(hXMPrevious declarations including declarations for base classes
are overridden.rÀhFj¹ubahh˜hhhjÀhFjubh)rÁ}rÂ(h%Kh&j`h}rÃ(h]h]h]h]h]uh ]rÄhBXvThis function is provided for convenience. It provides a more
convenient way to call classImplementsOnly. For example:rÅ…rÆ}rÇ(hXvThis function is provided for convenience. It provides a more
convenient way to call classImplementsOnly. For example:hFjÁubahh˜hhhXwThis function is provided for convenience. It provides a more
convenient way to call classImplementsOnly. For example::hFjubj)rÈ}rÉ(h%Kh&j`h}rÊ(h]h]h]jjh]h]uh ]rËhBXimplementsOnly(I1)rÌ…rÍ}rÎ(hUhFjÈubahj$hhhXimplementsOnly(I1)hFjubh)rÏ}rÐ(h%Kh&j`h}rÑ(h]h]h]h]h]uh ]rÒhBXis equivalent to calling:rÓ…rÔ}rÕ(hXis equivalent to calling:hFjÏubahh˜hhhXis equivalent to calling::hFjubj)rÖ}r×(h%Kh&j`h}rØ(h]h]h]jjh]h]uh ]rÙhBXclassImplementsOnly(I1)rÚ…rÛ}rÜ(hUhFjÖubahj$hhhXclassImplementsOnly(I1)hFjubh)rÝ}rÞ(h%Kh&j`h}rß(h]h]h]h]h]uh ]ràhBX!after the class has been created.rᅁrâ}rã(hX!after the class has been created.rähFjÝubahh˜hhhjähFjubehj;hhhUhFjeubehj<hhhUhFjNubehjýhhhUhFj3jþKubehjýhhhUhFh#ubh")rå}ræ(h%Mh&hh}rç(h]h]rèU)zope-interface-declarations-providesclassréah]h]rêX)zope.interface.declarations.providesclassrëah]uh ]rì(h-)rí}rî(h%Mh&hh}rï(h]h]h]h]h]uh ]rðh2)rñ}rò(h%Mh&hh}ró(h]h6Nh]h]U	refdomainXpyrôh8NUreftypeXclassh9X)zope.interface.declarations.ProvidesClassh:‰h]h]Urefexplicit‰h;h<uh ]rõh>)rö}r÷(h ]røhBX)zope.interface.declarations.ProvidesClassrù…rú}rû(hUhFjöubahhGhX2:class:`zope.interface.declarations.ProvidesClass`rühFjñh}rý(h]h]h]h]h]rþ(hKjôXpy-classrÿeuubahhMhjühFjíubahhRhhhjühFjåubh")r}r(h%M!h&hh}r(h]rXapirah]rUid15rah]h]h]uh ]r(h-)r}r	(h%M!h&hh}r
(h]h]h]h]h]uh ]rhBXAPIr…r
}r(hXAPIrhFjubahhRhhhjhFjubh™)r}r(h%Nh&Uh}r(h]h]h]Uentries]r(hžX5ProvidesClass (in module zope.interface.declarations)X)zope.interface.declarations.ProvidesClassrUtrah]h]uh ]hh¡hhhUhFjubh¢)r}r(h%Nh&Uh}r(h]h¦Xpyh]h]h§X	attributerh©jhª‰h]h]uh ]r(h¬)r}r(h%Nh&h¯h}r(h]h]h]rjah²‰h³Uh]rjahµh¶Xzope.interface.declarationsr …r!}r"bh]hºX
ProvidesClassr#uh ]r$(hÆ)r%}r&(h%Nh&h¯h}r'(h]h]h]h]h]uh ]r(hBXzope.interface.declarations.r)…r*}r+(hUhFj%ubahhÎhhhXzope.interface.declarations.hFjubhÏ)r,}r-(h%Nh&h¯h}r.(h]h]h]h]h]uh ]r/hBX
ProvidesClassr0…r1}r2(hUhFj,ubahh×hhhj#hFjubehhðhhhj#hFjubhñ)r3}r4(h%Nh&h¯h}r5(h]h]h]h]h]uh ]r6h)r7}r8(h%Kh&Uh}r9(h]h]h]h]h]uh ]r:(hBX	alias of r;…r<}r=(hX	alias of hFj7ubh2)r>}r?(h%Kh&hh}r@(h]h6Nh]h]U	refdomainXpyrAh8NUreftypeXclassh9XProvidesh:‰h]h]Urefexplicit‰h;h<uh ]rBh>)rC}rD(h ]rEhBXProvidesrF…rG}rH(hUhFjCubahhGhX:class:`Provides`rIhFj>h}rJ(h]h]h]h]h]rK(hKjAXpy-classrLeuubahhMhjIhFj7ubehh˜hhhXalias of :class:`Provides`hFj3ubahj;hhhUhFjubehj<hhhUhFjubehjýhhhUhFjåjþKubh")rM}rN(h%M)h&hh}rO(h]rPXusagerQah]rRUid16rSah]h]h]uh ]rT(h-)rU}rV(h%M)h&hh}rW(h]h]h]h]h]uh ]rXhBXUsagerY…rZ}r[(hXUsager\hFjUubahhRhhhj\hFjMubh)r]}r^(h%M+h&hh}r_(h]h]h]h]h]uh ]r`(hBXDescriptor semantics (via ra…rb}rc(hXDescriptor semantics (via hFj]ubh>)rd}re(h ]rfhBXProvides.__get__rg…rh}ri(hUhFjdubahhGhX``Provides.__get__``hFj]h}rj(h]h]h]h]h]uubhBX):rk…rl}rm(hX):hFj]ubehh˜hhhX0Descriptor semantics (via ``Provides.__get__``):rnhFjMubj)ro}rp(h%M-h&hh}rq(h]jjh]h]UtestnodetypeXdoctestUgroups]rrjah]h]j}uh ]rshBX@>>> from zope.interface import Interface
>>> class IFooFactory(Interface): pass
...
>>> class C(object):
...   pass
>>> from zope.interface.declarations import ProvidesClass
>>> C.__provides__ = ProvidesClass(C, IFooFactory)
>>> [i.getName() for i in C.__provides__]
['IFooFactory']
>>> getattr(C(), '__provides__', 0)
0rt…ru}rv(hUhFjoubahj$hhhX@>>> from zope.interface import Interface
>>> class IFooFactory(Interface): pass
...
>>> class C(object):
...   pass
>>> from zope.interface.declarations import ProvidesClass
>>> C.__provides__ = ProvidesClass(C, IFooFactory)
>>> [i.getName() for i in C.__provides__]
['IFooFactory']
>>> getattr(C(), '__provides__', 0)
0hFjMubehjýhhhUhFjåjþKubehjýhhhUhFh#ubh")rw}rx(h%M>h&hh}ry(h]h]rzU$zope-interface-declarations-providesr{ah]h]r|X&zope.interface.declarations.provides()r}ah]uh ]r~(h-)r}r€(h%M>h&hh}r(h]h]h]h]h]uh ]r‚h2)rƒ}r„(h%M=h&hh}r…(h]h6Nh]h]U	refdomainXpyr†h8NUreftypeXfunch9X$zope.interface.declarations.Providesh:‰h]h]Urefexplicit‰h;h<uh ]r‡h>)rˆ}r‰(h ]rŠhBX&zope.interface.declarations.Provides()r‹…rŒ}r(hUhFjˆubahhGhX,:func:`zope.interface.declarations.Provides`rŽhFjƒh}r(h]h]h]h]h]r(hKj†Xpy-funcr‘euubahhMhjŽhFjubahhRhhhjŽhFjwubh")r’}r“(h%MAh&hh}r”(h]r•Xapir–ah]r—Uid17r˜ah]h]h]uh ]r™(h-)rš}r›(h%MAh&hh}rœ(h]h]h]h]h]uh ]rhBXAPIrž…rŸ}r (hXAPIr¡hFjšubahhRhhhj¡hFj’ubh™)r¢}r£(h%Nh&X¤/home/tseaver/projects/Zope/Z3/zope.interface/.tox/docs/lib/python2.7/site-packages/zope/interface/declarations.py:docstring of zope.interface.declarations.Providesr¤h}r¥(h]h]h]Uentries]r¦(hžX2Provides() (in module zope.interface.declarations)X$zope.interface.declarations.Providesr§Utr¨ah]h]uh ]hh¡hhhUhFj’ubh¢)r©}rª(h%Nh&j¤h}r«(h]h¦Xpyh]h]h§Xfunctionr¬h©j¬hª‰h]h]uh ]r­(h¬)r®}r¯(h%Nh&h¯h}r°(h]h]h]r±j§ah²‰h³Uh]r²j§ahµh¶Xzope.interface.declarationsr³…r´}rµbh]hºXProvidesr¶uh ]r·(hÆ)r¸}r¹(h%Nh&h¯h}rº(h]h]h]h]h]uh ]r»hBXzope.interface.declarations.r¼…r½}r¾(hUhFj¸ubahhÎhhhXzope.interface.declarations.hFj®ubhÏ)r¿}rÀ(h%Nh&h¯h}rÁ(h]h]h]h]h]uh ]rÂhBXProvidesrÃ…rÄ}rÅ(hUhFj¿ubahh×hhhj¶hFj®ubj)rÆ}rÇ(h%Nh&h¯h}rÈ(h]h]h]h]h]uh ]rÉj)rÊ}rË(h ]rÌhBX*interfacesrÍ…rÎ}rÏ(hUhFjÊubahj$hX*interfaceshFjÆh}rÐ(h]h]h]h]h]uubahj&hhhUhFj®ubhØ)rÑ}rÒ(h%Nh&Nh}rÓ(h]UexprhÜh]h]h]h]uh ]rÔh2)rÕ}rÖ(h ]r×há)rØ}rÙ(h ]rÚhBX[source]rÛ…rÜ}rÝ(hUhFjØubahhèhUhFjÕh}rÞ(h]h]h]h]h]rßhëauubahhMhUhFjÑh}rà(h]Urefidj¶h]U	refdomainhíh]UreftypehîUrefdoch<h]h]Urefexplicit‰U	reftargetU$_modules/zope/interface/declarationsuubahhïhhhUhFj®ubehhðhhhXProvides(*interfaces)hFj©ubhñ)rá}râ(h%Nh&h¯h}rã(h]h]h]h]h]uh ]rä(h)rå}ræ(h%Kh&j¤h}rç(h]h]h]h]h]uh ]rèhBXCache instance declarationsr酁rê}rë(hXCache instance declarationsrìhFjåubahh˜hhhjìhFjáubh)rí}rî(h%Kh&j¤h}rï(h]h]h]h]h]uh ]rðhBXˆInstance declarations are shared among instances that have the same
declaration. The declarations are cached in a weak value dictionary.rñ…rò}ró(hXˆInstance declarations are shared among instances that have the same
declaration. The declarations are cached in a weak value dictionary.rôhFjíubahh˜hhhjôhFjáubehj;hhhUhFj©ubehj<hhhUhFj’ubehjýhhhUhFjwjþKubh")rõ}rö(h%MGh&hh}r÷(h]røXusagerùah]rúUid18rûah]h]h]uh ]rü(h-)rý}rþ(h%MGh&hh}rÿ(h]h]h]h]h]uh ]rhBXUsager…r}r(hXUsagerhFjýubahhRhhhjhFjõubh)r}r(h%MIh&hh}r(h]h]h]h]h]uh ]rhBXpIn the examples below, we are going to make assertions about
the size of the weakvalue dictionary.  For the assertions to be
meaningful, we need to force garbage collection to make sure garbage
objects are, indeed, removed from the system. Depending on how Python
is run, we may need to make multiple calls to be sure.  We provide a
collect function to help with this:r	…r
}r(hXpIn the examples below, we are going to make assertions about
the size of the weakvalue dictionary.  For the assertions to be
meaningful, we need to force garbage collection to make sure garbage
objects are, indeed, removed from the system. Depending on how Python
is run, we may need to make multiple calls to be sure.  We provide a
collect function to help with this:rhFjubahh˜hhhjhFjõubj)r
}r(h%MPh&hh}r(h]jjh]h]UtestnodetypeXdoctestUgroups]rjah]h]j}uh ]rhBX©>>> import gc
>>> def collect():
...     for i in range(4):
...         gc.collect()
>>> collect()
>>> from zope.interface.declarations import InstanceDeclarations
>>> before = len(InstanceDeclarations)
>>> class C(object):
...    pass
>>> from zope.interface import Interface
>>> class I(Interface):
...    pass
>>> c1 = C()
>>> c2 = C()
>>> len(InstanceDeclarations) == before
True
>>> directlyProvides(c1, I)
>>> len(InstanceDeclarations) == before + 1
True
>>> directlyProvides(c2, I)
>>> len(InstanceDeclarations) == before + 1
True
>>> del c1
>>> collect()
>>> len(InstanceDeclarations) == before + 1
True
>>> del c2
>>> collect()
>>> len(InstanceDeclarations) == before
Truer…r}r(hUhFj
ubahj$hhhX©>>> import gc
>>> def collect():
...     for i in range(4):
...         gc.collect()
>>> collect()
>>> from zope.interface.declarations import InstanceDeclarations
>>> before = len(InstanceDeclarations)
>>> class C(object):
...    pass
>>> from zope.interface import Interface
>>> class I(Interface):
...    pass
>>> c1 = C()
>>> c2 = C()
>>> len(InstanceDeclarations) == before
True
>>> directlyProvides(c1, I)
>>> len(InstanceDeclarations) == before + 1
True
>>> directlyProvides(c2, I)
>>> len(InstanceDeclarations) == before + 1
True
>>> del c1
>>> collect()
>>> len(InstanceDeclarations) == before + 1
True
>>> del c2
>>> collect()
>>> len(InstanceDeclarations) == before
TruehFjõubehjýhhhUhFjwjþKubehjýhhhUhFh#ubh")r}r(h%Msh&hh}r(h]h]rU,zope-interface-declarations-directlyprovidesrah]h]rX.zope.interface.declarations.directlyprovides()rah]uh ]r(h-)r}r(h%Msh&hh}r(h]h]h]h]h]uh ]r h2)r!}r"(h%Mrh&hh}r#(h]h6Nh]h]U	refdomainXpyr$h8NUreftypeXfunch9X,zope.interface.declarations.directlyProvidesh:‰h]h]Urefexplicit‰h;h<uh ]r%h>)r&}r'(h ]r(hBX.zope.interface.declarations.directlyProvides()r)…r*}r+(hUhFj&ubahhGhX4:func:`zope.interface.declarations.directlyProvides`r,hFj!h}r-(h]h]h]h]h]r.(hKj$Xpy-funcr/euubahhMhj,hFjubahhRhhhj,hFjubh")r0}r1(h%Mvh&hh}r2(h]r3Xapir4ah]r5Uid19r6ah]h]h]uh ]r7(h-)r8}r9(h%Mvh&hh}r:(h]h]h]h]h]uh ]r;hBXAPIr<…r=}r>(hXAPIr?hFj8ubahhRhhhj?hFj0ubh™)r@}rA(h%Nh&X¬/home/tseaver/projects/Zope/Z3/zope.interface/.tox/docs/lib/python2.7/site-packages/zope/interface/declarations.py:docstring of zope.interface.declarations.directlyProvidesrBh}rC(h]h]h]Uentries]rD(hžX:directlyProvides() (in module zope.interface.declarations)X,zope.interface.declarations.directlyProvidesrEUtrFah]h]uh ]hh¡hhhUhFj0ubh¢)rG}rH(h%Nh&jBh}rI(h]h¦Xpyh]h]h§XfunctionrJh©jJhª‰h]h]uh ]rK(h¬)rL}rM(h%Nh&h¯h}rN(h]h]h]rOjEah²‰h³Uh]rPjEahµh¶Xzope.interface.declarationsrQ…rR}rSbh]hºXdirectlyProvidesrTuh ]rU(hÆ)rV}rW(h%Nh&h¯h}rX(h]h]h]h]h]uh ]rYhBXzope.interface.declarations.rZ…r[}r\(hUhFjVubahhÎhhhXzope.interface.declarations.hFjLubhÏ)r]}r^(h%Nh&h¯h}r_(h]h]h]h]h]uh ]r`hBXdirectlyProvidesra…rb}rc(hUhFj]ubahh×hhhjThFjLubj)rd}re(h%Nh&h¯h}rf(h]h]h]h]h]uh ]rg(j)rh}ri(h ]rjhBXobjectrk…rl}rm(hUhFjhubahj$hXobjecthFjdh}rn(h]h]h]h]h]uubj)ro}rp(h ]rqhBX*interfacesrr…rs}rt(hUhFjoubahj$hX*interfaceshFjdh}ru(h]h]h]h]h]uubehj&hhhUhFjLubhØ)rv}rw(h%Nh&Nh}rx(h]UexprhÜh]h]h]h]uh ]ryh2)rz}r{(h ]r|há)r}}r~(h ]rhBX[source]r€…r}r‚(hUhFj}ubahhèhUhFjzh}rƒ(h]h]h]h]h]r„hëauubahhMhUhFjvh}r…(h]UrefidjTh]U	refdomainhíh]UreftypehîUrefdoch<h]h]Urefexplicit‰U	reftargetU$_modules/zope/interface/declarationsuubahhïhhhUhFjLubehhðhhhX%directlyProvides(object, *interfaces)hFjGubhñ)r†}r‡(h%Nh&h¯h}rˆ(h]h]h]h]h]uh ]r‰(h)rŠ}r‹(h%Kh&jBh}rŒ(h]h]h]h]h]uh ]rhBX2Declare interfaces declared directly for an objectrŽ…r}r(hX2Declare interfaces declared directly for an objectr‘hFjŠubahh˜hhhj‘hFj†ubh)r’}r“(h%Kh&jBh}r”(h]h]h]h]h]uh ]r•(hBXWThe arguments after the object are one or more interfaces or interface
specifications (r–…r—}r˜(hXWThe arguments after the object are one or more interfaces or interface
specifications (hFj’ubh>)r™}rš(h ]r›hBXIDeclarationrœ…r}rž(hUhFj™ubahhGhX``IDeclaration``hFj’h}rŸ(h]h]h]h]h]uubhBX
 objects).r …r¡}r¢(hX
 objects).hFj’ubehh˜hhhXqThe arguments after the object are one or more interfaces or interface
specifications (``IDeclaration`` objects).hFj†ubh)r£}r¤(h%Kh&jBh}r¥(h]h]h]h]h]uh ]r¦hBX|The interfaces given (including the interfaces in the specifications)
replace interfaces previously declared for the object.r§…r¨}r©(hX|The interfaces given (including the interfaces in the specifications)
replace interfaces previously declared for the object.rªhFj£ubahh˜hhhjªhFj†ubehj;hhhUhFjGubehj<hhhUhFj0ubehjýhhhUhFjjþKubh")r«}r¬(h%M|h&hh}r­(h]r®Xusager¯ah]r°Uid20r±ah]h]h]uh ]r²(h-)r³}r´(h%M|h&hh}rµ(h]h]h]h]h]uh ]r¶hBXUsager·…r¸}r¹(hXUsagerºhFj³ubahhRhhhjºhFj«ubh)r»}r¼(h%M~h&hh}r½(h]h]h]h]h]uh ]r¾hBXConsider the following example:r¿…rÀ}rÁ(hXConsider the following example:rÂhFj»ubahh˜hhhjÂhFj«ubj)rÃ}rÄ(h%M€h&hh}rÅ(h]jjh]h]UtestnodetypeXdoctestUgroups]rÆjah]h]j}uh ]rÇhBXm>>> from zope.interface import Interface
>>> class I1(Interface): pass
...
>>> class I2(Interface): pass
...
>>> class IA1(Interface): pass
...
>>> class IA2(Interface): pass
...
>>> class IB(Interface): pass
...
>>> class IC(Interface): pass
...
>>> class A(object):
...     implements(IA1, IA2)
>>> class B(object):
...     implements(IB)
>>> class C(A, B):
...    implements(IC)
>>> ob = C()
>>> directlyProvides(ob, I1, I2)
>>> int(I1 in providedBy(ob))
1
>>> int(I2 in providedBy(ob))
1
>>> int(IA1 in providedBy(ob))
1
>>> int(IA2 in providedBy(ob))
1
>>> int(IB in providedBy(ob))
1
>>> int(IC in providedBy(ob))
1rÈ…rÉ}rÊ(hUhFjÃubahj$hhhXm>>> from zope.interface import Interface
>>> class I1(Interface): pass
...
>>> class I2(Interface): pass
...
>>> class IA1(Interface): pass
...
>>> class IA2(Interface): pass
...
>>> class IB(Interface): pass
...
>>> class IC(Interface): pass
...
>>> class A(object):
...     implements(IA1, IA2)
>>> class B(object):
...     implements(IB)
>>> class C(A, B):
...    implements(IC)
>>> ob = C()
>>> directlyProvides(ob, I1, I2)
>>> int(I1 in providedBy(ob))
1
>>> int(I2 in providedBy(ob))
1
>>> int(IA1 in providedBy(ob))
1
>>> int(IA2 in providedBy(ob))
1
>>> int(IB in providedBy(ob))
1
>>> int(IC in providedBy(ob))
1hFj«ubh)rË}rÌ(h%M¤h&hh}rÍ(h]h]h]h]h]uh ]rÎ(hBXThe object, rÏ…rÐ}rÑ(hXThe object, hFjËubh>)rÒ}rÓ(h ]rÔhBXobrÕ…rÖ}r×(hUhFjÒubahhGhX``ob``hFjËh}rØ(h]h]h]h]h]uubhBX
 provides rÙ…rÚ}rÛ(hX
 provides hFjËubh>)rÜ}rÝ(h ]rÞhBXI1rß…rà}rá(hUhFjÜubahhGhX``I1``hFjËh}râ(h]h]h]h]h]uubhBX, rㅁrä}rå(hX, hFjËubh>)ræ}rç(h ]rèhBXI2r酁rê}rë(hUhFjæubahhGhX``I2``hFjËh}rì(h]h]h]h]h]uubhBXH, and whatever interfaces
instances have been declared for instances of r텁rî}rï(hXH, and whatever interfaces
instances have been declared for instances of hFjËubh>)rð}rñ(h ]ròhBXC…ró}rô(hUhFjðubahhGhX``C``hFjËh}rõ(h]h]h]h]h]uubhBX.…rö}r÷(hX.hFjËubehh˜hhhXxThe object, ``ob`` provides ``I1``, ``I2``, and whatever interfaces
instances have been declared for instances of ``C``.hFj«ubh)rø}rù(h%M§h&hh}rú(h]h]h]h]h]uh ]rû(hBX,To remove directly provided interfaces, use rü…rý}rþ(hX,To remove directly provided interfaces, use hFjøubh>)rÿ}r(h ]rhBXdirectlyProvidedByr…r}r(hUhFjÿubahhGhX``directlyProvidedBy``hFjøh}r(h]h]h]h]h]uubhBX3 and
subtract the unwanted interfaces. For example:r…r}r(hX3 and
subtract the unwanted interfaces. For example:hFjøubehh˜hhhXuTo remove directly provided interfaces, use ``directlyProvidedBy`` and
subtract the unwanted interfaces. For example:hFj«ubj)r	}r
(h%Mªh&hh}r(h]jjh]h]UtestnodetypeXdoctestUgroups]rjah]h]j}uh ]r
hBXs>>> directlyProvides(ob, directlyProvidedBy(ob)-I2)
>>> int(I1 in providedBy(ob))
1
>>> int(I2 in providedBy(ob))
0r…r}r(hUhFj	ubahj$hhhXs>>> directlyProvides(ob, directlyProvidedBy(ob)-I2)
>>> int(I1 in providedBy(ob))
1
>>> int(I2 in providedBy(ob))
0hFj«ubh)r}r(h%M²h&hh}r(h]h]h]h]h]uh ]r(hBX4removes I2 from the interfaces directly provided by r…r}r(hX4removes I2 from the interfaces directly provided by hFjubh>)r}r(h ]rhBXobr…r}r(hUhFjubahhGhX``ob``hFjh}r(h]h]h]h]h]uubhBX. The object,
r…r }r!(hX. The object,
hFjubh>)r"}r#(h ]r$hBXobr%…r&}r'(hUhFj"ubahhGhX``ob``hFjh}r((h]h]h]h]h]uubhBX no longer directly provides r)…r*}r+(hX no longer directly provides hFjubh>)r,}r-(h ]r.hBXI2r/…r0}r1(hUhFj,ubahhGhX``I2``hFjh}r2(h]h]h]h]h]uubhBX", although it might still
provide r3…r4}r5(hX", although it might still
provide hFjubh>)r6}r7(h ]r8hBXI2r9…r:}r;(hUhFj6ubahhGhX``I2``hFjh}r<(h]h]h]h]h]uubhBX if it's class implements r=…r>}r?(hX if it's class implements hFjubh>)r@}rA(h ]rBhBXI2rC…rD}rE(hUhFj@ubahhGhX``I2``hFjh}rF(h]h]h]h]h]uubhBX.…rG}rH(hX.hFjubehh˜hhhXºremoves I2 from the interfaces directly provided by ``ob``. The object,
``ob`` no longer directly provides ``I2``, although it might still
provide ``I2`` if it's class implements ``I2``.hFj«ubh)rI}rJ(h%M¶h&hh}rK(h]h]h]h]h]uh ]rL(hBX)To add directly provided interfaces, use rM…rN}rO(hX)To add directly provided interfaces, use hFjIubh>)rP}rQ(h ]rRhBXdirectlyProvidedByrS…rT}rU(hUhFjPubahhGhX``directlyProvidedBy``hFjIh}rV(h]h]h]h]h]uubhBX1 and
include additional interfaces.  For example:rW…rX}rY(hX1 and
include additional interfaces.  For example:hFjIubehh˜hhhXpTo add directly provided interfaces, use ``directlyProvidedBy`` and
include additional interfaces.  For example:hFj«ubj)rZ}r[(h%M¹h&hh}r\(h]jjh]h]UtestnodetypeXdoctestUgroups]r]jah]h]j}uh ]r^hBXT>>> int(I2 in providedBy(ob))
0
>>> directlyProvides(ob, directlyProvidedBy(ob), I2)r_…r`}ra(hUhFjZubahj$hhhXT>>> int(I2 in providedBy(ob))
0
>>> directlyProvides(ob, directlyProvidedBy(ob), I2)hFj«ubh)rb}rc(h%M¿h&hh}rd(h]h]h]h]h]uh ]re(hBXadds rf…rg}rh(hXadds hFjbubh>)ri}rj(h ]rkhBXI2rl…rm}rn(hUhFjiubahhGhX``I2``hFjbh}ro(h]h]h]h]h]uubhBX+ to the interfaces directly provided by ob:rp…rq}rr(hX+ to the interfaces directly provided by ob:hFjbubehh˜hhhX6adds ``I2`` to the interfaces directly provided by ob:rshFj«ubj)rt}ru(h%MÁh&hh}rv(h]jjh]h]UtestnodetypeXdoctestUgroups]rwjah]h]j}uh ]rxhBX>>> int(I2 in providedBy(ob))
1ry…rz}r{(hUhFjtubahj$hhhX>>> int(I2 in providedBy(ob))
1hFj«ubh)r|}r}(h%MÆh&hh}r~(h]h]h]h]h]uh ]rhBXWWe need to avoid setting this attribute on meta classes that
don't support descriptors.r€…r}r‚(hXWWe need to avoid setting this attribute on meta classes that
don't support descriptors.rƒhFj|ubahh˜hhhjƒhFj«ubh)r„}r…(h%MÉh&hh}r†(h]h]h]h]h]uh ]r‡hBX<We can do away with this check when we get rid of the old ECrˆ…r‰}rŠ(hX<We can do away with this check when we get rid of the old ECr‹hFj„ubahh˜hhhj‹hFj«ubehjýhhhUhFjjþKubehjýhhhUhFh#ubh")rŒ}r(h%MÍh&hh}rŽ(h]h]rU(zope-interface-declarations-alsoprovidesrah]h]r‘X*zope.interface.declarations.alsoprovides()r’ah]uh ]r“(h-)r”}r•(h%MÍh&hh}r–(h]h]h]h]h]uh ]r—h2)r˜}r™(h%MÌh&hh}rš(h]h6Nh]h]U	refdomainXpyr›h8NUreftypeXfunch9X(zope.interface.declarations.alsoProvidesh:‰h]h]Urefexplicit‰h;h<uh ]rœh>)r}rž(h ]rŸhBX*zope.interface.declarations.alsoProvides()r …r¡}r¢(hUhFjubahhGhX0:func:`zope.interface.declarations.alsoProvides`r£hFj˜h}r¤(h]h]h]h]h]r¥(hKj›Xpy-funcr¦euubahhMhj£hFj”ubahhRhhhj£hFjŒubh")r§}r¨(h%MÐh&hh}r©(h]rªXapir«ah]r¬Uid21r­ah]h]h]uh ]r®(h-)r¯}r°(h%MÐh&hh}r±(h]h]h]h]h]uh ]r²hBXAPIr³…r´}rµ(hXAPIr¶hFj¯ubahhRhhhj¶hFj§ubh™)r·}r¸(h%Nh&X¨/home/tseaver/projects/Zope/Z3/zope.interface/.tox/docs/lib/python2.7/site-packages/zope/interface/declarations.py:docstring of zope.interface.declarations.alsoProvidesr¹h}rº(h]h]h]Uentries]r»(hžX6alsoProvides() (in module zope.interface.declarations)X(zope.interface.declarations.alsoProvidesr¼Utr½ah]h]uh ]hh¡hhhUhFj§ubh¢)r¾}r¿(h%Nh&j¹h}rÀ(h]h¦Xpyh]h]h§XfunctionrÁh©jÁhª‰h]h]uh ]rÂ(h¬)rÃ}rÄ(h%Nh&h¯h}rÅ(h]h]h]rÆj¼ah²‰h³Uh]rÇj¼ahµh¶Xzope.interface.declarationsrÈ…rÉ}rÊbh]hºXalsoProvidesrËuh ]rÌ(hÆ)rÍ}rÎ(h%Nh&h¯h}rÏ(h]h]h]h]h]uh ]rÐhBXzope.interface.declarations.rÑ…rÒ}rÓ(hUhFjÍubahhÎhhhXzope.interface.declarations.hFjÃubhÏ)rÔ}rÕ(h%Nh&h¯h}rÖ(h]h]h]h]h]uh ]r×hBXalsoProvidesrØ…rÙ}rÚ(hUhFjÔubahh×hhhjËhFjÃubj)rÛ}rÜ(h%Nh&h¯h}rÝ(h]h]h]h]h]uh ]rÞ(j)rß}rà(h ]ráhBXobjectr⅁rã}rä(hUhFjßubahj$hXobjecthFjÛh}rå(h]h]h]h]h]uubj)ræ}rç(h ]rèhBX*interfacesr酁rê}rë(hUhFjæubahj$hX*interfaceshFjÛh}rì(h]h]h]h]h]uubehj&hhhUhFjÃubhØ)rí}rî(h%Nh&Nh}rï(h]UexprhÜh]h]h]h]uh ]rðh2)rñ}rò(h ]róhá)rô}rõ(h ]röhBX[source]r÷…rø}rù(hUhFjôubahhèhUhFjñh}rú(h]h]h]h]h]rûhëauubahhMhUhFjíh}rü(h]UrefidjËh]U	refdomainhíh]UreftypehîUrefdoch<h]h]Urefexplicit‰U	reftargetU$_modules/zope/interface/declarationsuubahhïhhhUhFjÃubehhðhhhX!alsoProvides(object, *interfaces)hFj¾ubhñ)rý}rþ(h%Nh&h¯h}rÿ(h]h]h]h]h]uh ]r(h)r}r(h%Kh&j¹h}r(h]h]h]h]h]uh ]rhBX2Declare interfaces declared directly for an objectr…r}r(hX2Declare interfaces declared directly for an objectrhFjubahh˜hhhjhFjýubh)r	}r
(h%Kh&j¹h}r(h]h]h]h]h]uh ]r(hBXWThe arguments after the object are one or more interfaces or interface
specifications (r
…r}r(hXWThe arguments after the object are one or more interfaces or interface
specifications (hFj	ubh>)r}r(h ]rhBXIDeclarationr…r}r(hUhFjubahhGhX``IDeclaration``hFj	h}r(h]h]h]h]h]uubhBX
 objects).r…r}r(hX
 objects).hFj	ubehh˜hhhXqThe arguments after the object are one or more interfaces or interface
specifications (``IDeclaration`` objects).hFjýubh)r}r(h%Kh&j¹h}r(h]h]h]h]h]uh ]rhBX…The interfaces given (including the interfaces in the specifications) are
added to the interfaces previously declared for the object.r…r}r (hX…The interfaces given (including the interfaces in the specifications) are
added to the interfaces previously declared for the object.r!hFjubahh˜hhhj!hFjýubehj;hhhUhFj¾ubehj<hhhUhFj§ubehjýhhhUhFjŒjþKubh")r"}r#(h%MÖh&hh}r$(h]r%Xusager&ah]r'Uid22r(ah]h]h]uh ]r)(h-)r*}r+(h%MÖh&hh}r,(h]h]h]h]h]uh ]r-hBXUsager.…r/}r0(hXUsager1hFj*ubahhRhhhj1hFj"ubh)r2}r3(h%MØh&hh}r4(h]h]h]h]h]uh ]r5hBXConsider the following example:r6…r7}r8(hXConsider the following example:r9hFj2ubahh˜hhhj9hFj"ubj)r:}r;(h%MÚh&hh}r<(h]jjh]h]UtestnodetypeXdoctestUgroups]r=jah]h]j}uh ]r>hBXD>>> from zope.interface import Interface
>>> class I1(Interface): pass
...
>>> class I2(Interface): pass
...
>>> class IA1(Interface): pass
...
>>> class IA2(Interface): pass
...
>>> class IB(Interface): pass
...
>>> class IC(Interface): pass
...
>>> class A(object):
...     implements(IA1, IA2)
>>> class B(object):
...     implements(IB)
>>> class C(A, B):
...    implements(IC)
>>> ob = C()
>>> directlyProvides(ob, I1)
>>> int(I1 in providedBy(ob))
1
>>> int(I2 in providedBy(ob))
0
>>> int(IA1 in providedBy(ob))
1
>>> int(IA2 in providedBy(ob))
1
>>> int(IB in providedBy(ob))
1
>>> int(IC in providedBy(ob))
1
>>> alsoProvides(ob, I2)
>>> int(I1 in providedBy(ob))
1
>>> int(I2 in providedBy(ob))
1
>>> int(IA1 in providedBy(ob))
1
>>> int(IA2 in providedBy(ob))
1
>>> int(IB in providedBy(ob))
1
>>> int(IC in providedBy(ob))
1r?…r@}rA(hUhFj:ubahj$hhhXD>>> from zope.interface import Interface
>>> class I1(Interface): pass
...
>>> class I2(Interface): pass
...
>>> class IA1(Interface): pass
...
>>> class IA2(Interface): pass
...
>>> class IB(Interface): pass
...
>>> class IC(Interface): pass
...
>>> class A(object):
...     implements(IA1, IA2)
>>> class B(object):
...     implements(IB)
>>> class C(A, B):
...    implements(IC)
>>> ob = C()
>>> directlyProvides(ob, I1)
>>> int(I1 in providedBy(ob))
1
>>> int(I2 in providedBy(ob))
0
>>> int(IA1 in providedBy(ob))
1
>>> int(IA2 in providedBy(ob))
1
>>> int(IB in providedBy(ob))
1
>>> int(IC in providedBy(ob))
1
>>> alsoProvides(ob, I2)
>>> int(I1 in providedBy(ob))
1
>>> int(I2 in providedBy(ob))
1
>>> int(IA1 in providedBy(ob))
1
>>> int(IA2 in providedBy(ob))
1
>>> int(IB in providedBy(ob))
1
>>> int(IC in providedBy(ob))
1hFj"ubh)rB}rC(h%Mh&hh}rD(h]h]h]h]h]uh ]rE(hBXThe object, rF…rG}rH(hXThe object, hFjBubh>)rI}rJ(h ]rKhBXobrL…rM}rN(hUhFjIubahhGhX``ob``hFjBh}rO(h]h]h]h]h]uubhBX
 provides rP…rQ}rR(hX
 provides hFjBubh>)rS}rT(h ]rUhBXI1rV…rW}rX(hUhFjSubahhGhX``I1``hFjBh}rY(h]h]h]h]h]uubhBX, rZ…r[}r\(hX, hFjBubh>)r]}r^(h ]r_hBXI2r`…ra}rb(hUhFj]ubahhGhX``I2``hFjBh}rc(h]h]h]h]h]uubhBXH, and whatever interfaces
instances have been declared for instances of rd…re}rf(hXH, and whatever interfaces
instances have been declared for instances of hFjBubh>)rg}rh(h ]rihBXC…rj}rk(hUhFjgubahhGhX``C``hFjBh}rl(h]h]h]h]h]uubhBXD. Notice that the
alsoProvides just extends the provided interfaces.rm…rn}ro(hXD. Notice that the
alsoProvides just extends the provided interfaces.hFjBubehh˜hhhX»The object, ``ob`` provides ``I1``, ``I2``, and whatever interfaces
instances have been declared for instances of ``C``. Notice that the
alsoProvides just extends the provided interfaces.hFj"ubehjýhhhUhFjŒjþKubehjýhhhUhFh#ubh")rp}rq(h%Mh&hh}rr(h]h]rsU,zope-interface-declarations-nolongerprovidesrtah]h]ruX.zope.interface.declarations.nolongerprovides()rvah]uh ]rw(h-)rx}ry(h%Mh&hh}rz(h]h]h]h]h]uh ]r{h2)r|}r}(h%Mh&hh}r~(h]h6Nh]h]U	refdomainXpyrh8NUreftypeXfunch9X,zope.interface.declarations.noLongerProvidesh:‰h]h]Urefexplicit‰h;h<uh ]r€h>)r}r‚(h ]rƒhBX.zope.interface.declarations.noLongerProvides()r„…r…}r†(hUhFjubahhGhX4:func:`zope.interface.declarations.noLongerProvides`r‡hFj|h}rˆ(h]h]h]h]h]r‰(hKjXpy-funcrŠeuubahhMhj‡hFjxubahhRhhhj‡hFjpubh")r‹}rŒ(h%Mh&hh}r(h]rŽXapirah]rUid23r‘ah]h]h]uh ]r’(h-)r“}r”(h%Mh&hh}r•(h]h]h]h]h]uh ]r–hBXAPIr—…r˜}r™(hXAPIršhFj“ubahhRhhhjšhFj‹ubh™)r›}rœ(h%Nh&X¬/home/tseaver/projects/Zope/Z3/zope.interface/.tox/docs/lib/python2.7/site-packages/zope/interface/declarations.py:docstring of zope.interface.declarations.noLongerProvidesrh}rž(h]h]h]Uentries]rŸ(hžX:noLongerProvides() (in module zope.interface.declarations)X,zope.interface.declarations.noLongerProvidesr Utr¡ah]h]uh ]hh¡hhhUhFj‹ubh¢)r¢}r£(h%Nh&jh}r¤(h]h¦Xpyh]h]h§Xfunctionr¥h©j¥hª‰h]h]uh ]r¦(h¬)r§}r¨(h%Nh&h¯h}r©(h]h]h]rªj ah²‰h³Uh]r«j ahµh¶Xzope.interface.declarationsr¬…r­}r®bh]hºXnoLongerProvidesr¯uh ]r°(hÆ)r±}r²(h%Nh&h¯h}r³(h]h]h]h]h]uh ]r´hBXzope.interface.declarations.rµ…r¶}r·(hUhFj±ubahhÎhhhXzope.interface.declarations.hFj§ubhÏ)r¸}r¹(h%Nh&h¯h}rº(h]h]h]h]h]uh ]r»hBXnoLongerProvidesr¼…r½}r¾(hUhFj¸ubahh×hhhj¯hFj§ubj)r¿}rÀ(h%Nh&h¯h}rÁ(h]h]h]h]h]uh ]rÂ(j)rÃ}rÄ(h ]rÅhBXobjectrÆ…rÇ}rÈ(hUhFjÃubahj$hXobjecthFj¿h}rÉ(h]h]h]h]h]uubj)rÊ}rË(h ]rÌhBX	interfacerÍ…rÎ}rÏ(hUhFjÊubahj$hX	interfacehFj¿h}rÐ(h]h]h]h]h]uubehj&hhhUhFj§ubhØ)rÑ}rÒ(h%Nh&Nh}rÓ(h]UexprhÜh]h]h]h]uh ]rÔh2)rÕ}rÖ(h ]r×há)rØ}rÙ(h ]rÚhBX[source]rÛ…rÜ}rÝ(hUhFjØubahhèhUhFjÕh}rÞ(h]h]h]h]h]rßhëauubahhMhUhFjÑh}rà(h]Urefidj¯h]U	refdomainhíh]UreftypehîUrefdoch<h]h]Urefexplicit‰U	reftargetU$_modules/zope/interface/declarationsuubahhïhhhUhFj§ubehhðhhhX#noLongerProvides(object, interface)hFj¢ubhñ)rá}râ(h%Nh&h¯h}rã(h]h]h]h]h]uh ]räh)rå}ræ(h%Kh&jh}rç(h]h]h]h]h]uh ]rèhBX5Removes a directly provided interface from an object.r酁rê}rë(hX5Removes a directly provided interface from an object.rìhFjåubahh˜hhhjìhFjáubahj;hhhUhFj¢ubehj<hhhUhFj‹ubehjýhhhUhFjpjþKubh")rí}rî(h%Mh&hh}rï(h]rðXusagerñah]ròUid24róah]h]h]uh ]rô(h-)rõ}rö(h%Mh&hh}r÷(h]h]h]h]h]uh ]røhBXUsagerù…rú}rû(hXUsagerühFjõubahhRhhhjühFjíubh)rý}rþ(h%Mh&hh}rÿ(h]h]h]h]h]uh ]rhBX&Consider the following two interfaces:r…r}r(hX&Consider the following two interfaces:rhFjýubahh˜hhhjhFjíubj)r}r(h%Mh&hh}r(h]jjh]h]UtestnodetypeXdoctestUgroups]rjah]h]j}uh ]r	hBXl>>> from zope.interface import Interface
>>> class I1(Interface): pass
...
>>> class I2(Interface): pass
...r
…r}r(hUhFjubahj$hhhXl>>> from zope.interface import Interface
>>> class I1(Interface): pass
...
>>> class I2(Interface): pass
...hFjíubh)r
}r(h%M&h&hh}r(h]h]h]h]h]uh ]r(h>)r}r(h ]rhBXI1r…r}r(hUhFjubahhGhX``I1``hFj
h}r(h]h]h]h]h]uubhBX  is provided through the class, r…r}r(hX  is provided through the class, hFj
ubh>)r}r(h ]rhBXI2r…r}r (hUhFjubahhGhX``I2``hFj
h}r!(h]h]h]h]h]uubhBX$ is directly provided
by the object:r"…r#}r$(hX$ is directly provided
by the object:hFj
ubehh˜hhhXP``I1`` is provided through the class, ``I2`` is directly provided
by the object:hFjíubj)r%}r&(h%M)h&hh}r'(h]jjh]h]UtestnodetypeXdoctestUgroups]r(jah]h]j}uh ]r)hBXh>>> class C(object):
...    implements(I1)
>>> c = C()
>>> alsoProvides(c, I2)
>>> I2.providedBy(c)
Truer*…r+}r,(hUhFj%ubahj$hhhXh>>> class C(object):
...    implements(I1)
>>> c = C()
>>> alsoProvides(c, I2)
>>> I2.providedBy(c)
TruehFjíubh)r-}r.(h%M2h&hh}r/(h]h]h]h]h]uh ]r0hBXRemove I2 from c again:r1…r2}r3(hXRemove I2 from c again:r4hFj-ubahh˜hhhj4hFjíubj)r5}r6(h%M4h&hh}r7(h]jjh]h]UtestnodetypeXdoctestUgroups]r8jah]h]j}uh ]r9hBX6>>> noLongerProvides(c, I2)
>>> I2.providedBy(c)
Falser:…r;}r<(hUhFj5ubahj$hhhX6>>> noLongerProvides(c, I2)
>>> I2.providedBy(c)
FalsehFjíubh)r=}r>(h%M:h&hh}r?(h]h]h]h]h]uh ]r@hBXIRemoving an interface that is provided through the class is not possible:rA…rB}rC(hXIRemoving an interface that is provided through the class is not possible:rDhFj=ubahh˜hhhjDhFjíubj)rE}rF(h%M<h&hh}rG(h]jjh]h]UtestnodetypeXdoctestUgroups]rHjah]h]j}uh ]rIhBX|>>> noLongerProvides(c, I1)
Traceback (most recent call last):
...
ValueError: Can only remove directly provided interfaces.rJ…rK}rL(hUhFjEubahj$hhhX|>>> noLongerProvides(c, I1)
Traceback (most recent call last):
...
ValueError: Can only remove directly provided interfaces.hFjíubehjýhhhUhFjpjþKubehjýhhhUhFh#ubh")rM}rN(h%MEh&hh}rO(h]h]rPU.zope-interface-declarations-directlyprovidedbyrQah]h]rRX0zope.interface.declarations.directlyprovidedby()rSah]uh ]rT(h-)rU}rV(h%MEh&hh}rW(h]h]h]h]h]uh ]rXh2)rY}rZ(h%MDh&hh}r[(h]h6Nh]h]U	refdomainXpyr\h8NUreftypeXfunch9X.zope.interface.declarations.directlyProvidedByh:‰h]h]Urefexplicit‰h;h<uh ]r]h>)r^}r_(h ]r`hBX0zope.interface.declarations.directlyProvidedBy()ra…rb}rc(hUhFj^ubahhGhX6:func:`zope.interface.declarations.directlyProvidedBy`rdhFjYh}re(h]h]h]h]h]rf(hKj\Xpy-funcrgeuubahhMhjdhFjUubahhRhhhjdhFjMubh")rh}ri(h%MHh&hh}rj(h]rkXapirlah]rmUid25rnah]h]h]uh ]ro(h-)rp}rq(h%MHh&hh}rr(h]h]h]h]h]uh ]rshBXAPIrt…ru}rv(hXAPIrwhFjpubahhRhhhjwhFjhubh™)rx}ry(h%Nh&X®/home/tseaver/projects/Zope/Z3/zope.interface/.tox/docs/lib/python2.7/site-packages/zope/interface/declarations.py:docstring of zope.interface.declarations.directlyProvidedByrzh}r{(h]h]h]Uentries]r|(hžX<directlyProvidedBy() (in module zope.interface.declarations)X.zope.interface.declarations.directlyProvidedByr}Utr~ah]h]uh ]hh¡hhhUhFjhubh¢)r}r€(h%Nh&jzh}r(h]h¦Xpyh]h]h§Xfunctionr‚h©j‚hª‰h]h]uh ]rƒ(h¬)r„}r…(h%Nh&h¯h}r†(h]h]h]r‡j}ah²‰h³Uh]rˆj}ahµh¶Xzope.interface.declarationsr‰…rŠ}r‹bh]hºXdirectlyProvidedByrŒuh ]r(hÆ)rŽ}r(h%Nh&h¯h}r(h]h]h]h]h]uh ]r‘hBXzope.interface.declarations.r’…r“}r”(hUhFjŽubahhÎhhhXzope.interface.declarations.hFj„ubhÏ)r•}r–(h%Nh&h¯h}r—(h]h]h]h]h]uh ]r˜hBXdirectlyProvidedByr™…rš}r›(hUhFj•ubahh×hhhjŒhFj„ubj)rœ}r(h%Nh&h¯h}rž(h]h]h]h]h]uh ]rŸj)r }r¡(h ]r¢hBXobjectr£…r¤}r¥(hUhFj ubahj$hXobjecthFjœh}r¦(h]h]h]h]h]uubahj&hhhUhFj„ubhØ)r§}r¨(h%Nh&Nh}r©(h]UexprhÜh]h]h]h]uh ]rªh2)r«}r¬(h ]r­há)r®}r¯(h ]r°hBX[source]r±…r²}r³(hUhFj®ubahhèhUhFj«h}r´(h]h]h]h]h]rµhëauubahhMhUhFj§h}r¶(h]UrefidjŒh]U	refdomainhíh]UreftypehîUrefdoch<h]h]Urefexplicit‰U	reftargetU$_modules/zope/interface/declarationsuubahhïhhhUhFj„ubehhðhhhXdirectlyProvidedBy(object)hFjubhñ)r·}r¸(h%Nh&h¯h}r¹(h]h]h]h]h]uh ]rº(h)r»}r¼(h%Kh&jzh}r½(h]h]h]h]h]uh ]r¾hBX;Return the interfaces directly provided by the given objectr¿…rÀ}rÁ(hX;Return the interfaces directly provided by the given objectrÂhFj»ubahh˜hhhjÂhFj·ubh)rÃ}rÄ(h%Kh&jzh}rÅ(h]h]h]h]h]uh ]rÆ(hBXThe value returned is an rÇ…rÈ}rÉ(hXThe value returned is an hFjÃubh>)rÊ}rË(h ]rÌhBXIDeclarationrÍ…rÎ}rÏ(hUhFjÊubahhGhX``IDeclaration``hFjÃh}rÐ(h]h]h]h]h]uubhBX.…rÑ}rÒ(hX.hFjÃubehh˜hhhX*The value returned is an ``IDeclaration``.hFj·ubehj;hhhUhFjubehj<hhhUhFjhubehjýhhhUhFjMjþKubehjýhhhUhFh#ubh")rÓ}rÔ(h%MNh&hh}rÕ(h]h]rÖU)zope-interface-declarations-classprovidesr×ah]h]rØX+zope.interface.declarations.classprovides()rÙah]uh ]rÚ(h-)rÛ}rÜ(h%MNh&hh}rÝ(h]h]h]h]h]uh ]rÞh2)rß}rà(h%MMh&hh}rá(h]h6Nh]h]U	refdomainXpyrâh8NUreftypeXfunch9X)zope.interface.declarations.classProvidesh:‰h]h]Urefexplicit‰h;h<uh ]rãh>)rä}rå(h ]ræhBX+zope.interface.declarations.classProvides()r煁rè}ré(hUhFjäubahhGhX1:func:`zope.interface.declarations.classProvides`rêhFjßh}rë(h]h]h]h]h]rì(hKjâXpy-funcríeuubahhMhjêhFjÛubahhRhhhjêhFjÓubh")rî}rï(h%MQh&hh}rð(h]rñXapiròah]róUid26rôah]h]h]uh ]rõ(h-)rö}r÷(h%MQh&hh}rø(h]h]h]h]h]uh ]rùhBXAPIrú…rû}rü(hXAPIrýhFjöubahhRhhhjýhFjîubh™)rþ}rÿ(h%Nh&X©/home/tseaver/projects/Zope/Z3/zope.interface/.tox/docs/lib/python2.7/site-packages/zope/interface/declarations.py:docstring of zope.interface.declarations.classProvidesrh}r(h]h]h]Uentries]r(hžX7classProvides() (in module zope.interface.declarations)X)zope.interface.declarations.classProvidesrUtrah]h]uh ]hh¡hhhUhFjîubh¢)r}r(h%Nh&jh}r(h]h¦Xpyh]h]h§Xfunctionrh©jhª‰h]h]uh ]r	(h¬)r
}r(h%Nh&h¯h}r(h]h]h]r
jah²‰h³Uh]rjahµh¶Xzope.interface.declarationsr…r}rbh]hºX
classProvidesruh ]r(hÆ)r}r(h%Nh&h¯h}r(h]h]h]h]h]uh ]rhBXzope.interface.declarations.r…r}r(hUhFjubahhÎhhhXzope.interface.declarations.hFj
ubhÏ)r}r(h%Nh&h¯h}r(h]h]h]h]h]uh ]rhBX
classProvidesr…r }r!(hUhFjubahh×hhhjhFj
ubj)r"}r#(h%Nh&h¯h}r$(h]h]h]h]h]uh ]r%j)r&}r'(h ]r(hBX*interfacesr)…r*}r+(hUhFj&ubahj$hX*interfaceshFj"h}r,(h]h]h]h]h]uubahj&hhhUhFj
ubhØ)r-}r.(h%Nh&Nh}r/(h]UexprhÜh]h]h]h]uh ]r0h2)r1}r2(h ]r3há)r4}r5(h ]r6hBX[source]r7…r8}r9(hUhFj4ubahhèhUhFj1h}r:(h]h]h]h]h]r;hëauubahhMhUhFj-h}r<(h]Urefidjh]U	refdomainhíh]UreftypehîUrefdoch<h]h]Urefexplicit‰U	reftargetU$_modules/zope/interface/declarationsuubahhïhhhUhFj
ubehhðhhhXclassProvides(*interfaces)hFjubhñ)r=}r>(h%Nh&h¯h}r?(h]h]h]h]h]uh ]r@(h)rA}rB(h%Kh&jh}rC(h]h]h]h]h]uh ]rDhBX/Declare interfaces provided directly by a classrE…rF}rG(hX/Declare interfaces provided directly by a classrHhFjAubahh˜hhhjHhFj=ubh)rI}rJ(h%Kh&jh}rK(h]h]h]h]h]uh ]rLhBX.This function is called in a class definition.rM…rN}rO(hX.This function is called in a class definition.rPhFjIubahh˜hhhjPhFj=ubh)rQ}rR(h%Kh&jh}rS(h]h]h]h]h]uh ]rT(hBXFThe arguments are one or more interfaces or interface specifications
(rU…rV}rW(hXFThe arguments are one or more interfaces or interface specifications
(hFjQubh>)rX}rY(h ]rZhBXIDeclarationr[…r\}r](hUhFjXubahhGhX``IDeclaration``hFjQh}r^(h]h]h]h]h]uubhBX
 objects).r_…r`}ra(hX
 objects).hFjQubehh˜hhhX`The arguments are one or more interfaces or interface specifications
(``IDeclaration`` objects).hFj=ubh)rb}rc(h%Kh&jh}rd(h]h]h]h]h]uh ]rehBX9The given interfaces (including the interfaces in the specifications)
are used to create the class's direct-object interface specification.
An error will be raised if the module class has an direct interface
specification. In other words, it is an error to call this function more
than once in a class definition.rf…rg}rh(hX9The given interfaces (including the interfaces in the specifications)
are used to create the class's direct-object interface specification.
An error will be raised if the module class has an direct interface
specification. In other words, it is an error to call this function more
than once in a class definition.rihFjbubahh˜hhhjihFj=ubh)rj}rk(h%Kh&jh}rl(h]h]h]h]h]uh ]rmhBXlNote that the given interfaces have nothing to do with the interfaces
implemented by instances of the class.rn…ro}rp(hXlNote that the given interfaces have nothing to do with the interfaces
implemented by instances of the class.rqhFjjubahh˜hhhjqhFj=ubh)rr}rs(h%Kh&jh}rt(h]h]h]h]h]uh ]ruhBXThis function is provided for convenience. It provides a more convenient
way to call directlyProvides for a class. For example:rv…rw}rx(hXThis function is provided for convenience. It provides a more convenient
way to call directlyProvides for a class. For example:hFjrubahh˜hhhX€This function is provided for convenience. It provides a more convenient
way to call directlyProvides for a class. For example::hFj=ubj)ry}rz(h%Kh&jh}r{(h]h]h]jjh]h]uh ]r|hBXclassProvides(I1)r}…r~}r(hUhFjyubahj$hhhXclassProvides(I1)hFj=ubh)r€}r(h%Kh&jh}r‚(h]h]h]h]h]uh ]rƒhBXis equivalent to calling:r„…r…}r†(hXis equivalent to calling:hFj€ubahh˜hhhXis equivalent to calling::hFj=ubj)r‡}rˆ(h%Kh&jh}r‰(h]h]h]jjh]h]uh ]rŠhBXdirectlyProvides(theclass, I1)r‹…rŒ}r(hUhFj‡ubahj$hhhXdirectlyProvides(theclass, I1)hFj=ubh)rŽ}r(h%Kh&jh}r(h]h]h]h]h]uh ]r‘hBX!after the class has been created.r’…r“}r”(hX!after the class has been created.r•hFjŽubahh˜hhhj•hFj=ubehj;hhhUhFjubehj<hhhUhFjîubehjýhhhUhFjÓjþKubh")r–}r—(h%MWh&hh}r˜(h]r™Xusageršah]r›Uid27rœah]h]h]uh ]r(h-)rž}rŸ(h%MWh&hh}r (h]h]h]h]h]uh ]r¡hBXUsager¢…r£}r¤(hXUsager¥hFjžubahhRhhhj¥hFj–ubh)r¦}r§(h%MYh&hh}r¨(h]h]h]h]h]uh ]r©hBXFor example:rª…r«}r¬(hXFor example:r­hFj¦ubahh˜hhhj­hFj–ubj)r®}r¯(h%M[h&hh}r°(h]jjh]h]UtestnodetypeXdoctestUgroups]r±jah]h]j}uh ]r²hBXu>>> from zope.interface import Interface
>>> from zope.interface.declarations import implementer
>>> class IFooFactory(Interface):
...     pass
>>> class IFoo(Interface):
...     pass
>>> @implementer(IFoo)
... class C(object):
...     classProvides(IFooFactory)
>>> [i.getName() for i in C.__provides__]
['IFooFactory']
>>> [i.getName() for i in C().__provides__]
['IFoo']r³…r´}rµ(hUhFj®ubahj$hhhXu>>> from zope.interface import Interface
>>> from zope.interface.declarations import implementer
>>> class IFooFactory(Interface):
...     pass
>>> class IFoo(Interface):
...     pass
>>> @implementer(IFoo)
... class C(object):
...     classProvides(IFooFactory)
>>> [i.getName() for i in C.__provides__]
['IFooFactory']
>>> [i.getName() for i in C().__provides__]
['IFoo']hFj–ubh)r¶}r·(h%Mkh&hh}r¸(h]h]h]h]h]uh ]r¹hBXWhich is equivalent to:rº…r»}r¼(hXWhich is equivalent to:r½hFj¶ubahh˜hhhj½hFj–ubj)r¾}r¿(h%Mmh&hh}rÀ(h]jjh]h]UtestnodetypeXdoctestUgroups]rÁjah]h]j}uh ]rÂhBXF>>> from zope.interface import Interface
>>> class IFoo(Interface): pass
...
>>> class IFooFactory(Interface): pass
...
>>> @implementer(IFoo)
... class C(object):
...   pass
>>> directlyProvides(C, IFooFactory)
>>> [i.getName() for i in C.__providedBy__]
['IFooFactory']
>>> [i.getName() for i in C().__providedBy__]
['IFoo']rÃ…rÄ}rÅ(hUhFj¾ubahj$hhhXF>>> from zope.interface import Interface
>>> class IFoo(Interface): pass
...
>>> class IFooFactory(Interface): pass
...
>>> @implementer(IFoo)
... class C(object):
...   pass
>>> directlyProvides(C, IFooFactory)
>>> [i.getName() for i in C.__providedBy__]
['IFooFactory']
>>> [i.getName() for i in C().__providedBy__]
['IFoo']hFj–ubehjýhhhUhFjÓjþKubehjýhhhUhFh#ubh")rÆ}rÇ(h%Mh&hh}rÈ(h]rÉX$zope.interface.declarations.providerrÊah]rËU$zope-interface-declarations-providerrÌah]h]h]uh ]rÍ(h-)rÎ}rÏ(h%Mh&hh}rÐ(h]h]h]h]h]uh ]rÑh2)rÒ}rÓ(h%M~h&hh}rÔ(h]h6Nh]h]U	refdomainXpyrÕh8NUreftypeXclassh9X$zope.interface.declarations.providerh:‰h]h]Urefexplicit‰h;h<uh ]rÖh>)r×}rØ(h ]rÙhBX$zope.interface.declarations.providerrÚ…rÛ}rÜ(hUhFj×ubahhGhX-:class:`zope.interface.declarations.provider`rÝhFjÒh}rÞ(h]h]h]h]h]rß(hKjÕXpy-classràeuubahhMhjÝhFjÎubahhRhhhjÝhFjÆubh")rá}râ(h%M‚h&hh}rã(h]räXapiråah]ræUid28rçah]h]h]uh ]rè(h-)ré}rê(h%M‚h&hh}rë(h]h]h]h]h]uh ]rìhBXAPIr텁rî}rï(hXAPIrðhFjéubahhRhhhjðhFjáubh™)rñ}rò(h%Nh&X¤/home/tseaver/projects/Zope/Z3/zope.interface/.tox/docs/lib/python2.7/site-packages/zope/interface/declarations.py:docstring of zope.interface.declarations.providerróh}rô(h]h]h]Uentries]rõ(hžX/provider (class in zope.interface.declarations)jÊUtröah]h]uh ]hh¡hhhUhFjáubh¢)r÷}rø(h%Nh&jóh}rù(h]h¦Xpyh]h]h§Xclassrúh©júhª‰h]h]uh ]rû(h¬)rü}rý(h%Nh&h¯h}rþ(h]h]h]rÿjÊah²‰h³Uh]rjÊahµh¶Xzope.interface.declarationsr…r}rbh]hºXproviderruh ]r(h½)r}r(h%Nh&h¯h}r(h]h]h]h]h]uh ]r	hBXclass r
…r}r(hUhFjubahhÅhhhXclass hFjüubhÆ)r
}r(h%Nh&h¯h}r(h]h]h]h]h]uh ]rhBXzope.interface.declarations.r…r}r(hUhFj
ubahhÎhhhXzope.interface.declarations.hFjüubhÏ)r}r(h%Nh&h¯h}r(h]h]h]h]h]uh ]rhBXproviderr…r}r(hUhFjubahh×hhhjhFjüubj)r}r(h%Nh&h¯h}r(h]h]h]h]h]uh ]rj)r}r (h ]r!hBX*interfacesr"…r#}r$(hUhFjubahj$hX*interfaceshFjh}r%(h]h]h]h]h]uubahj&hhhUhFjüubhØ)r&}r'(h%Nh&Nh}r((h]UexprhÜh]h]h]h]uh ]r)h2)r*}r+(h ]r,há)r-}r.(h ]r/hBX[source]r0…r1}r2(hUhFj-ubahhèhUhFj*h}r3(h]h]h]h]h]r4hëauubahhMhUhFj&h}r5(h]Urefidjh]U	refdomainhíh]UreftypehîUrefdoch<h]h]Urefexplicit‰U	reftargetU$_modules/zope/interface/declarationsuubahhïhhhUhFjüubehhðhhhXprovider(*interfaces)hFj÷ubhñ)r6}r7(h%Nh&h¯h}r8(h]h]h]h]h]uh ]r9h)r:}r;(h%Kh&jóh}r<(h]h]h]h]h]uh ]r=hBX(Class decorator version of classProvidesr>…r?}r@(hX(Class decorator version of classProvidesrAhFj:ubahh˜hhhjAhFj6ubahj;hhhUhFj÷ubehj<hhhUhFjáubehjýhhhUhFjÆjþKubehjýhhhUhFh#jþKubh")rB}rC(h%MŠh&hh}rD(h]h]rEU*zope-interface-declarations-moduleprovidesrFah]h]rGX,zope.interface.declarations.moduleprovides()rHah]uh ]rI(h-)rJ}rK(h%MŠh&hh}rL(h]h]h]h]h]uh ]rMh2)rN}rO(h%M‰h&hh}rP(h]h6Nh]h]U	refdomainXpyrQh8NUreftypeXfunch9X*zope.interface.declarations.moduleProvidesh:‰h]h]Urefexplicit‰h;h<uh ]rRh>)rS}rT(h ]rUhBX,zope.interface.declarations.moduleProvides()rV…rW}rX(hUhFjSubahhGhX2:func:`zope.interface.declarations.moduleProvides`rYhFjNh}rZ(h]h]h]h]h]r[(hKjQXpy-funcr\euubahhMhjYhFjJubahhRhhhjYhFjBubh")r]}r^(h%Mh&hh}r_(h]r`Xapiraah]rbUid29rcah]h]h]uh ]rd(h-)re}rf(h%Mh&hh}rg(h]h]h]h]h]uh ]rhhBXAPIri…rj}rk(hXAPIrlhFjeubahhRhhhjlhFj]ubh™)rm}rn(h%Nh&Xª/home/tseaver/projects/Zope/Z3/zope.interface/.tox/docs/lib/python2.7/site-packages/zope/interface/declarations.py:docstring of zope.interface.declarations.moduleProvidesroh}rp(h]h]h]Uentries]rq(hžX8moduleProvides() (in module zope.interface.declarations)X*zope.interface.declarations.moduleProvidesrrUtrsah]h]uh ]hh¡hhhUhFj]ubh¢)rt}ru(h%Nh&joh}rv(h]h¦Xpyh]h]h§Xfunctionrwh©jwhª‰h]h]uh ]rx(h¬)ry}rz(h%Nh&h¯h}r{(h]h]h]r|jrah²‰h³Uh]r}jrahµh¶Xzope.interface.declarationsr~…r}r€bh]hºXmoduleProvidesruh ]r‚(hÆ)rƒ}r„(h%Nh&h¯h}r…(h]h]h]h]h]uh ]r†hBXzope.interface.declarations.r‡…rˆ}r‰(hUhFjƒubahhÎhhhXzope.interface.declarations.hFjyubhÏ)rŠ}r‹(h%Nh&h¯h}rŒ(h]h]h]h]h]uh ]rhBXmoduleProvidesrŽ…r}r(hUhFjŠubahh×hhhjhFjyubj)r‘}r’(h%Nh&h¯h}r“(h]h]h]h]h]uh ]r”j)r•}r–(h ]r—hBX*interfacesr˜…r™}rš(hUhFj•ubahj$hX*interfaceshFj‘h}r›(h]h]h]h]h]uubahj&hhhUhFjyubhØ)rœ}r(h%Nh&Nh}rž(h]UexprhÜh]h]h]h]uh ]rŸh2)r }r¡(h ]r¢há)r£}r¤(h ]r¥hBX[source]r¦…r§}r¨(hUhFj£ubahhèhUhFj h}r©(h]h]h]h]h]rªhëauubahhMhUhFjœh}r«(h]Urefidjh]U	refdomainhíh]UreftypehîUrefdoch<h]h]Urefexplicit‰U	reftargetU$_modules/zope/interface/declarationsuubahhïhhhUhFjyubehhðhhhXmoduleProvides(*interfaces)hFjtubhñ)r¬}r­(h%Nh&h¯h}r®(h]h]h]h]h]uh ]r¯(h)r°}r±(h%Kh&joh}r²(h]h]h]h]h]uh ]r³hBX'Declare interfaces provided by a moduler´…rµ}r¶(hX'Declare interfaces provided by a moduler·hFj°ubahh˜hhhj·hFj¬ubh)r¸}r¹(h%Kh&joh}rº(h]h]h]h]h]uh ]r»hBX-This function is used in a module definition.r¼…r½}r¾(hX-This function is used in a module definition.r¿hFj¸ubahh˜hhhj¿hFj¬ubh)rÀ}rÁ(h%Kh&joh}rÂ(h]h]h]h]h]uh ]rÃ(hBXFThe arguments are one or more interfaces or interface specifications
(rÄ…rÅ}rÆ(hXFThe arguments are one or more interfaces or interface specifications
(hFjÀubh>)rÇ}rÈ(h ]rÉhBXIDeclarationrÊ…rË}rÌ(hUhFjÇubahhGhX``IDeclaration``hFjÀh}rÍ(h]h]h]h]h]uubhBX
 objects).rÎ…rÏ}rÐ(hX
 objects).hFjÀubehh˜hhhX`The arguments are one or more interfaces or interface specifications
(``IDeclaration`` objects).hFj¬ubh)rÑ}rÒ(h%Kh&joh}rÓ(h]h]h]h]h]uh ]rÔhBX7The given interfaces (including the interfaces in the specifications) are
used to create the module's direct-object interface specification.  An
error will be raised if the module already has an interface specification.
In other words, it is an error to call this function more than once in a
module definition.rÕ…rÖ}r×(hX7The given interfaces (including the interfaces in the specifications) are
used to create the module's direct-object interface specification.  An
error will be raised if the module already has an interface specification.
In other words, it is an error to call this function more than once in a
module definition.rØhFjÑubahh˜hhhjØhFj¬ubh)rÙ}rÚ(h%Kh&joh}rÛ(h]h]h]h]h]uh ]rÜhBXsThis function is provided for convenience. It provides a more convenient
way to call directlyProvides. For example:rÝ…rÞ}rß(hXsThis function is provided for convenience. It provides a more convenient
way to call directlyProvides. For example:hFjÙubahh˜hhhXtThis function is provided for convenience. It provides a more convenient
way to call directlyProvides. For example::hFj¬ubj)rà}rá(h%Kh&joh}râ(h]h]h]jjh]h]uh ]rãhBXmoduleImplements(I1)r䅁rå}ræ(hUhFjàubahj$hhhXmoduleImplements(I1)hFj¬ubh)rç}rè(h%Kh&joh}ré(h]h]h]h]h]uh ]rêhBXis equivalent to:r녁rì}rí(hXis equivalent to:hFjçubahh˜hhhXis equivalent to::hFj¬ubj)rî}rï(h%Kh&joh}rð(h]h]h]jjh]h]uh ]rñhBX+directlyProvides(sys.modules[__name__], I1)rò…ró}rô(hUhFjîubahj$hhhX+directlyProvides(sys.modules[__name__], I1)hFj¬ubehj;hhhUhFjtubehj<hhhUhFj]ubehjýhhhUhFjBjþKubehjýhhhUhFh#ubh")rõ}rö(h%M”h&hh}r÷(h]h]røU/zope-interface-declarations-objectspecificationrùah]h]rúX1zope.interface.declarations.objectspecification()rûah]uh ]rü(h-)rý}rþ(h%M”h&hh}rÿ(h]h]h]h]h]uh ]rh2)r}r(h%M“h&hh}r(h]h6Nh]h]U	refdomainXpyrh8NUreftypeXfunch9X/zope.interface.declarations.ObjectSpecificationh:‰h]h]Urefexplicit‰h;h<uh ]rh>)r}r(h ]rhBX1zope.interface.declarations.ObjectSpecification()r	…r
}r(hUhFjubahhGhX7:func:`zope.interface.declarations.ObjectSpecification`rhFjh}r
(h]h]h]h]h]r(hKjXpy-funcreuubahhMhjhFjýubahhRhhhjhFjõubh")r}r(h%M—h&hh}r(h]rXapirah]rUid30rah]h]h]uh ]r(h-)r}r(h%M—h&hh}r(h]h]h]h]h]uh ]rhBXAPIr…r}r(hXAPIrhFjubahhRhhhjhFjubh™)r }r!(h%Nh&X¯/home/tseaver/projects/Zope/Z3/zope.interface/.tox/docs/lib/python2.7/site-packages/zope/interface/declarations.py:docstring of zope.interface.declarations.ObjectSpecificationr"h}r#(h]h]h]Uentries]r$(hžX=ObjectSpecification() (in module zope.interface.declarations)X/zope.interface.declarations.ObjectSpecificationr%Utr&ah]h]uh ]hh¡hhhUhFjubh¢)r'}r((h%Nh&j"h}r)(h]h¦Xpyh]h]h§Xfunctionr*h©j*hª‰h]h]uh ]r+(h¬)r,}r-(h%Nh&h¯h}r.(h]h]h]r/j%ah²‰h³Uh]r0j%ahµh¶Xzope.interface.declarationsr1…r2}r3bh]hºXObjectSpecificationr4uh ]r5(hÆ)r6}r7(h%Nh&h¯h}r8(h]h]h]h]h]uh ]r9hBXzope.interface.declarations.r:…r;}r<(hUhFj6ubahhÎhhhXzope.interface.declarations.hFj,ubhÏ)r=}r>(h%Nh&h¯h}r?(h]h]h]h]h]uh ]r@hBXObjectSpecificationrA…rB}rC(hUhFj=ubahh×hhhj4hFj,ubj)rD}rE(h%Nh&h¯h}rF(h]h]h]h]h]uh ]rG(j)rH}rI(h ]rJhBXdirectrK…rL}rM(hUhFjHubahj$hXdirecthFjDh}rN(h]h]h]h]h]uubj)rO}rP(h ]rQhBXclsrR…rS}rT(hUhFjOubahj$hXclshFjDh}rU(h]h]h]h]h]uubehj&hhhUhFj,ubhØ)rV}rW(h%Nh&Nh}rX(h]UexprhÜh]h]h]h]uh ]rYh2)rZ}r[(h ]r\há)r]}r^(h ]r_hBX[source]r`…ra}rb(hUhFj]ubahhèhUhFjZh}rc(h]h]h]h]h]rdhëauubahhMhUhFjVh}re(h]Urefidj4h]U	refdomainhíh]UreftypehîUrefdoch<h]h]Urefexplicit‰U	reftargetU$_modules/zope/interface/declarationsuubahhïhhhUhFj,ubehhðhhhX ObjectSpecification(direct, cls)hFj'ubhñ)rf}rg(h%Nh&h¯h}rh(h]h]h]h]h]uh ]ri(h)rj}rk(h%Kh&j"h}rl(h]h]h]h]h]uh ]rmhBXProvide object specificationsrn…ro}rp(hXProvide object specificationsrqhFjjubahh˜hhhjqhFjfubh)rr}rs(h%Kh&j"h}rt(h]h]h]h]h]uh ]ruhBX>These combine information for the object and for it's classes.rv…rw}rx(hX>These combine information for the object and for it's classes.ryhFjrubahh˜hhhjyhFjfubehj;hhhUhFj'ubehj<hhhUhFjubehjýhhhUhFjõjþKubh")rz}r{(h%Mh&hh}r|(h]r}Xusager~ah]rUid31r€ah]h]h]uh ]r(h-)r‚}rƒ(h%Mh&hh}r„(h]h]h]h]h]uh ]r…hBXUsager†…r‡}rˆ(hXUsager‰hFj‚ubahhRhhhj‰hFjzubh)rŠ}r‹(h%MŸh&hh}rŒ(h]h]h]h]h]uh ]rhBXFor example:rŽ…r}r(hXFor example:r‘hFjŠubahh˜hhhj‘hFjzubj)r’}r“(h%M¡h&hh}r”(h]jjh]h]UtestnodetypeXdoctestUgroups]r•jah]h]j}uh ]r–hBXà>>> from zope.interface import Interface
>>> class I1(Interface): pass
...
>>> class I2(Interface): pass
...
>>> class I3(Interface): pass
...
>>> class I31(I3): pass
...
>>> class I4(Interface): pass
...
>>> class I5(Interface): pass
...
>>> class A(object):
...     implements(I1)
>>> class B(object): __implemented__ = I2
...
>>> class C(A, B):
...     implements(I31)
>>> c = C()
>>> directlyProvides(c, I4)
>>> [i.getName() for i in providedBy(c)]
['I4', 'I31', 'I1', 'I2']
>>> [i.getName() for i in providedBy(c).flattened()]
['I4', 'I31', 'I3', 'I1', 'I2', 'Interface']
>>> int(I1 in providedBy(c))
1
>>> int(I3 in providedBy(c))
0
>>> int(providedBy(c).extends(I3))
1
>>> int(providedBy(c).extends(I31))
1
>>> int(providedBy(c).extends(I5))
0
>>> class COnly(A, B):
...     implementsOnly(I31)
>>> class D(COnly):
...     implements(I5)
>>> c = D()
>>> directlyProvides(c, I4)
>>> [i.getName() for i in providedBy(c)]
['I4', 'I5', 'I31']
>>> [i.getName() for i in providedBy(c).flattened()]
['I4', 'I5', 'I31', 'I3', 'Interface']
>>> int(I1 in providedBy(c))
0
>>> int(I3 in providedBy(c))
0
>>> int(providedBy(c).extends(I3))
1
>>> int(providedBy(c).extends(I1))
0
>>> int(providedBy(c).extends(I31))
1
>>> int(providedBy(c).extends(I5))
1r—…r˜}r™(hUhFj’ubahj$hhhXà>>> from zope.interface import Interface
>>> class I1(Interface): pass
...
>>> class I2(Interface): pass
...
>>> class I3(Interface): pass
...
>>> class I31(I3): pass
...
>>> class I4(Interface): pass
...
>>> class I5(Interface): pass
...
>>> class A(object):
...     implements(I1)
>>> class B(object): __implemented__ = I2
...
>>> class C(A, B):
...     implements(I31)
>>> c = C()
>>> directlyProvides(c, I4)
>>> [i.getName() for i in providedBy(c)]
['I4', 'I31', 'I1', 'I2']
>>> [i.getName() for i in providedBy(c).flattened()]
['I4', 'I31', 'I3', 'I1', 'I2', 'Interface']
>>> int(I1 in providedBy(c))
1
>>> int(I3 in providedBy(c))
0
>>> int(providedBy(c).extends(I3))
1
>>> int(providedBy(c).extends(I31))
1
>>> int(providedBy(c).extends(I5))
0
>>> class COnly(A, B):
...     implementsOnly(I31)
>>> class D(COnly):
...     implements(I5)
>>> c = D()
>>> directlyProvides(c, I4)
>>> [i.getName() for i in providedBy(c)]
['I4', 'I5', 'I31']
>>> [i.getName() for i in providedBy(c).flattened()]
['I4', 'I5', 'I31', 'I3', 'Interface']
>>> int(I1 in providedBy(c))
0
>>> int(I3 in providedBy(c))
0
>>> int(providedBy(c).extends(I3))
1
>>> int(providedBy(c).extends(I1))
0
>>> int(providedBy(c).extends(I31))
1
>>> int(providedBy(c).extends(I5))
1hFjzubehjýhhhUhFjõjþKubehjýhhhUhFh#ubh")rš}r›(h%Mßh&hh}rœ(h]h]rU&zope-interface-declarations-providedbyržah]h]rŸX(zope.interface.declarations.providedby()r ah]uh ]r¡(h-)r¢}r£(h%Mßh&hh}r¤(h]h]h]h]h]uh ]r¥h2)r¦}r§(h%MÞh&hh}r¨(h]h6Nh]h]U	refdomainXpyr©h8NUreftypeXfunch9X&zope.interface.declarations.providedByh:‰h]h]Urefexplicit‰h;h<uh ]rªh>)r«}r¬(h ]r­hBX(zope.interface.declarations.providedBy()r®…r¯}r°(hUhFj«ubahhGhX.:func:`zope.interface.declarations.providedBy`r±hFj¦h}r²(h]h]h]h]h]r³(hKj©Xpy-funcr´euubahhMhj±hFj¢ubahhRhhhj±hFjšubh")rµ}r¶(h%Mâh&hh}r·(h]r¸Xapir¹ah]rºUid32r»ah]h]h]uh ]r¼(h-)r½}r¾(h%Mâh&hh}r¿(h]h]h]h]h]uh ]rÀhBXAPIrÁ…rÂ}rÃ(hXAPIrÄhFj½ubahhRhhhjÄhFjµubh™)rÅ}rÆ(h%Nh&X3docstring of zope.interface.declarations.providedByrÇh}rÈ(h]h]h]Uentries]rÉ(hžX4providedBy() (in module zope.interface.declarations)X&zope.interface.declarations.providedByrÊUtrËah]h]uh ]hh¡hhhUhFjµubh¢)rÌ}rÍ(h%Nh&jÇh}rÎ(h]h¦Xpyh]h]h§XfunctionrÏh©jÏhª‰h]h]uh ]rÐ(h¬)rÑ}rÒ(h%Nh&h¯h}rÓ(h]h]h]rÔjÊah²‰h³Uh]rÕjÊahµh¶Xzope.interface.declarationsrÖ…r×}rØbh]hºX
providedByrÙuh ]rÚ(hÆ)rÛ}rÜ(h%Nh&h¯h}rÝ(h]h]h]h]h]uh ]rÞhBXzope.interface.declarations.rß…rà}rá(hUhFjÛubahhÎhhhXzope.interface.declarations.hFjÑubhÏ)râ}rã(h%Nh&h¯h}rä(h]h]h]h]h]uh ]råhBX
providedByr慁rç}rè(hUhFjâubahh×hhhjÙhFjÑubj)ré}rê(h%Nh&h¯h}rë(h]h]h]h]h]uh ]hj&hhhUhFjÑubehhðhhhjÙhFjÌubhñ)rì}rí(h%Nh&h¯h}rî(h]h]h]h]h]uh ]rïh)rð}rñ(h%Kh&jÇh}rò(h]h]h]h]h]uh ]róhBXGet an object's interfacesrô…rõ}rö(hXGet an object's interfacesr÷hFjðubahh˜hhhj÷hFjìubahj;hhhUhFjÌubehj<hhhUhFjµubehjýhhhUhFjšjþKubehjýhhhUhFh#ubh")rø}rù(h%Mèh&hh}rú(h]h]rûU9zope-interface-declarations-objectspecificationdescriptorrüah]h]rýX9zope.interface.declarations.objectspecificationdescriptorrþah]uh ]rÿ(h-)r}r(h%Mèh&hh}r(h]h]h]h]h]uh ]rh2)r}r(h%Mçh&hh}r(h]h6Nh]h]U	refdomainXpyrh8NUreftypeXclassh9X9zope.interface.declarations.ObjectSpecificationDescriptorh:‰h]h]Urefexplicit‰h;h<uh ]rh>)r	}r
(h ]rhBX9zope.interface.declarations.ObjectSpecificationDescriptorr…r
}r(hUhFj	ubahhGhXB:class:`zope.interface.declarations.ObjectSpecificationDescriptor`rhFjh}r(h]h]h]h]h]r(hKjXpy-classreuubahhMhjhFjubahhRhhhjhFjøubh")r}r(h%Mëh&hh}r(h]rXapirah]rUid33rah]h]h]uh ]r(h-)r}r(h%Mëh&hh}r(h]h]h]h]h]uh ]rhBXAPIr…r }r!(hXAPIr"hFjubahhRhhhj"hFjubh™)r#}r$(h%Nh&XFdocstring of zope.interface.declarations.ObjectSpecificationDescriptorr%h}r&(h]h]h]Uentries]r'(hžXDObjectSpecificationDescriptor (class in zope.interface.declarations)X9zope.interface.declarations.ObjectSpecificationDescriptorr(Utr)ah]h]uh ]hh¡hhhUhFjubh¢)r*}r+(h%Nh&j%h}r,(h]h¦Xpyh]h]h§Xclassr-h©j-hª‰h]h]uh ]r.(h¬)r/}r0(h%Nh&h¯h}r1(h]h]h]r2j(ah²‰h³Uh]r3j(ahµh¶Xzope.interface.declarationsr4…r5}r6bh]hºXObjectSpecificationDescriptorr7uh ]r8(h½)r9}r:(h%Nh&h¯h}r;(h]h]h]h]h]uh ]r<hBXclass r=…r>}r?(hUhFj9ubahhÅhhhXclass hFj/ubhÆ)r@}rA(h%Nh&h¯h}rB(h]h]h]h]h]uh ]rChBXzope.interface.declarations.rD…rE}rF(hUhFj@ubahhÎhhhXzope.interface.declarations.hFj/ubhÏ)rG}rH(h%Nh&h¯h}rI(h]h]h]h]h]uh ]rJhBXObjectSpecificationDescriptorrK…rL}rM(hUhFjGubahh×hhhj7hFj/ubehhðhhhj7hFj*ubhñ)rN}rO(h%Nh&h¯h}rP(h]h]h]h]h]uh ]rQh)rR}rS(h%Kh&j%h}rT(h]h]h]h]h]uh ]rUhBXObject Specification DescriptorrV…rW}rX(hXObject Specification DescriptorrYhFjRubahh˜hhhjYhFjNubahj;hhhUhFj*ubehj<hhhUhFjubehjýhhhUhFjøjþKubh")rZ}r[(h%Mòh&hh}r\(h]r]Xusager^ah]r_Uid34r`ah]h]h]uh ]ra(h-)rb}rc(h%Mòh&hh}rd(h]h]h]h]h]uh ]rehBXUsagerf…rg}rh(hXUsagerihFjbubahhRhhhjihFjZubh)rj}rk(h%Môh&hh}rl(h]h]h]h]h]uh ]rmhBXFor example:rn…ro}rp(hXFor example:rqhFjjubahh˜hhhjqhFjZubj)rr}rs(h%Möh&hh}rt(h]jjh]h]UtestnodetypeXdoctestUgroups]rujah]h]j}uh ]rvhBX7>>> from zope.interface import Interface
>>> class IFoo(Interface): pass
...
>>> class IFooFactory(Interface): pass
...
>>> @implementer(IFoo)
... class C(object):
...   classProvides(IFooFactory)
>>> [i.getName() for i in C.__providedBy__]
['IFooFactory']
>>> [i.getName() for i in C().__providedBy__]
['IFoo']rw…rx}ry(hUhFjrubahj$hhhX7>>> from zope.interface import Interface
>>> class IFoo(Interface): pass
...
>>> class IFooFactory(Interface): pass
...
>>> @implementer(IFoo)
... class C(object):
...   classProvides(IFooFactory)
>>> [i.getName() for i in C.__providedBy__]
['IFooFactory']
>>> [i.getName() for i in C().__providedBy__]
['IFoo']hFjZubh)rz}r{(h%Mh&hh}r|(h]h]h]h]h]uh ]r}hBXeGet an ObjectSpecification bound to either an instance or a class,
depending on how we were accessed.r~…r}r€(hXeGet an ObjectSpecification bound to either an instance or a class,
depending on how we were accessed.rhFjzubahh˜hhhjhFjZubehjýhhhUhFjøjþKubehjýhhhUhFh#ubh")r‚}rƒ(h%M
h&hh}r„(h]r…X!zope.interface.declarations.namedr†ah]r‡U!zope-interface-declarations-namedrˆah]h]h]uh ]r‰(h-)rŠ}r‹(h%M
h&hh}rŒ(h]h]h]h]h]uh ]rh2)rŽ}r(h%M	h&hh}r(h]h6Nh]h]U	refdomainXpyr‘h8NUreftypeXclassh9X!zope.interface.declarations.namedh:‰h]h]Urefexplicit‰h;h<uh ]r’h>)r“}r”(h ]r•hBX!zope.interface.declarations.namedr–…r—}r˜(hUhFj“ubahhGhX*:class:`zope.interface.declarations.named`r™hFjŽh}rš(h]h]h]h]h]r›(hKj‘Xpy-classrœeuubahhMhj™hFjŠubahhRhhhj™hFj‚ubh")r}rž(h%M
h&hh}rŸ(h]r Xapir¡ah]r¢Uid35r£ah]h]h]uh ]r¤(h-)r¥}r¦(h%M
h&hh}r§(h]h]h]h]h]uh ]r¨hBXAPIr©…rª}r«(hXAPIr¬hFj¥ubahhRhhhj¬hFjubh™)r­}r®(h%Nh&Nh}r¯(h]h]h]Uentries]r°(hžX,named (class in zope.interface.declarations)j†Utr±ah]h]uh ]hh¡hhhUhFjubh¢)r²}r³(h%Nh&Nh}r´(h]h¦Xpyh]h]h§Xclassrµh©jµhª‰h]h]uh ]r¶(h¬)r·}r¸(h%Nh&h¯h}r¹(h]h]h]rºj†ah²‰h³Uh]r»j†ahµh¶Xzope.interface.declarationsr¼…r½}r¾bh]hºXnamedr¿uh ]rÀ(h½)rÁ}rÂ(h%Nh&h¯h}rÃ(h]h]h]h]h]uh ]rÄhBXclass rÅ…rÆ}rÇ(hUhFjÁubahhÅhhhXclass hFj·ubhÆ)rÈ}rÉ(h%Nh&h¯h}rÊ(h]h]h]h]h]uh ]rËhBXzope.interface.declarations.rÌ…rÍ}rÎ(hUhFjÈubahhÎhhhXzope.interface.declarations.hFj·ubhÏ)rÏ}rÐ(h%Nh&h¯h}rÑ(h]h]h]h]h]uh ]rÒhBXnamedrÓ…rÔ}rÕ(hUhFjÏubahh×hhhj¿hFj·ubj)rÖ}r×(h%Nh&h¯h}rØ(h]h]h]h]h]uh ]rÙj)rÚ}rÛ(h ]rÜhBXnamerÝ…rÞ}rß(hUhFjÚubahj$hXnamehFjÖh}rà(h]h]h]h]h]uubahj&hhhUhFj·ubhØ)rá}râ(h%Nh&Nh}rã(h]UexprhÜh]h]h]h]uh ]räh2)rå}ræ(h ]rçhá)rè}ré(h ]rêhBX[source]r녁rì}rí(hUhFjèubahhèhUhFjåh}rî(h]h]h]h]h]rïhëauubahhMhUhFjáh}rð(h]Urefidj¿h]U	refdomainhíh]UreftypehîUrefdoch<h]h]Urefexplicit‰U	reftargetU$_modules/zope/interface/declarationsuubahhïhhhUhFj·ubehhðhhhXnamed(name)rñhFj²ubhñ)rò}ró(h%Nh&h¯h}rô(h]h]h]h]h]uh ]hj;hhhUhFj²ubehj<hhhUhFjubehjýhhhUhFj‚jþKubh")rõ}rö(h%Mh&hh}r÷(h]røXusagerùah]rúUid36rûah]h]h]uh ]rü(h-)rý}rþ(h%Mh&hh}rÿ(h]h]h]h]h]uh ]rhBXUsager…r}r(hXUsagerhFjýubahhRhhhjhFjõubh)r}r(h%Mh&hh}r(h]h]h]h]h]uh ]rhBXFor example:r	…r
}r(hXFor example:rhFjubahh˜hhhjhFjõubj)r
}r(h%Mh&hh}r(h]jjh]h]UtestnodetypeXdoctestUgroups]rjah]h]j}uh ]rhBXŠ>>> from zope.interface.declarations import named

>>> @named('foo')
... class Foo(object):
...     pass

>>> Foo.__component_name__
'foo'r…r}r(hUhFj
ubahj$hhhXŠ>>> from zope.interface.declarations import named

>>> @named('foo')
... class Foo(object):
...     pass

>>> Foo.__component_name__
'foo'hFjõubh)r}r(h%M#h&hh}r(h]h]h]h]h]uh ]r(hBXMWhen registering an adapter or utility component, the registry looks for the
r…r}r(hXMWhen registering an adapter or utility component, the registry looks for the
hFjubj)r}r(h ]rhBX__component_name__r…r }r!(hUhFjubahjhX`__component_name__`hFjh}r"(h]h]h]h]h]uubhBX; attribute and uses it, if no name was explicitly
provided.r#…r$}r%(hX; attribute and uses it, if no name was explicitly
provided.hFjubehh˜hhhXœWhen registering an adapter or utility component, the registry looks for the
`__component_name__` attribute and uses it, if no name was explicitly
provided.hFjõubehjýhhhUhFj‚jþKubehjýhhhUhFh#jþKubehjýhhhUhFhubaU	citationsr&]r'Usymbol_footnote_startr(KU
footnote_refsr)}r*Uidsr+}r,(jæjíj©j°j%j,jÊjüjjjQjMjíjôjcjjj¼jÃhŸh­jÇjÎj®jµjwj~j;jBj»jµjjŒjˆj‚jFjBjjj¶j½jïjöj-	j4	j­j©j¥j¬j#jjMjTj§j®j‡jŽj
j7
j}j„jzjjÃjÊjójíjôjîjÌjÆj{jwj»jµj,j&j)j0j‘j‹j<j7jˆj‚jÉjÄjŠ
j„
j@j:jW	jQ	j'
j!
jûjõj`jZj£jjéjåjjjjj€jzj
j
j×jÓj}jyjjjžjšjñjøjüjøjtjpjuj|jkjgjùjõj(j/jÇ
jÁ
h)h#jjjOjVhuhojjÿjj
jjj

j
jÊjÑjWj^jj
jBjIjEjLjûjõj6j0jrjyjj”j§j¡j"
j
jâ
jÜ
jšj”jTjNjjjSjMj˜j’j6
j=
j j§jjjnjhjÅ
j÷
jœj–jªj±j­j§j±j«hXhTj(j"jcj]jçjáj?jFj7j3j†j·uUsymbol_footnote_refsr-]r.Urefnamesr/}r0Uautofootnote_refsr1]r2Ucurrent_sourcer3NUcurrent_liner4NhhU	nametypesr5}r6(jˆj©ˆj)ˆjæˆjHNh+NjWˆjˆj¶ˆjOˆjNjBˆj-	ˆjˆjëNj¼ˆj¯NjvNjíˆjNjrˆjˆj’NX!zope.interface.declarations.namedr7ˆj(ˆjcˆhZNjMˆjÙNj§ˆjEˆj}NjSNjˆj6
ˆj Nj‡ˆhŸˆj ˆjˆj;ˆjûNj®ˆjuˆX'zope.interface.declarations.implementerr8ˆj}ˆX,zope.interface.declarations.implementer_onlyr9ˆjªˆjmNjzˆj9NX$zope.interface.declarations.providerr:ˆjLjj%NjÈjʈj?ˆj
NXapir;NjñˆXusager<Nj¥ˆjwˆjˆj%ˆjþNjNjïˆuUtransform_messagesr=]r>Uid_startr?K%Unameidsr@}rA(jjj©j©j)j)jæjæjHjFh+h)jWjWjjj¶j¶jOjOjj}jBjBj-	j-	jjjëjéj¼j¼j¯j­jvjtjíjíjjjrjrjjj’jj7j†j(j(jcjchZhXjMjMjÙj×j§j§jEjEj}j{jSjQjjj6
j6
j jžj‡j‡hŸhŸj j jjj;j;jûjùj®j®jujuj8j
j}j}j9jÅ
jªjªjmjkjzjzj9j7j:jÊjÇjÇj%j#jÃjÃjÊjÊj?j?j
j

j;Njñjñj<Nj¥j¥jwjwjjj%j%jþjüjjjïjïuU
decorationrBNUindirect_targetsrC]rDUsettingsrE(cdocutils.frontend
Values
rForG}rH(Uoutput_encodingrIUutf-8rJUdump_internalsrKNU_destinationrLNUstrip_commentsrMNU
halt_levelrNKU
strip_classesrONUexpose_internalsrPNUauto_id_prefixrQUidrRUrecord_dependenciesrSNUpep_base_urlrTU https://www.python.org/dev/peps/rUUdebugrVNUinput_encodingrWU	utf-8-sigrXUexit_status_levelrYKUpep_file_url_templaterZUpep-%04dr[Usectsubtitle_xformr\‰U
sectnum_xformr]KU
language_coder^Uenr_Ugettext_compactr`ˆUraw_enabledraKUreport_levelrbKU
toc_backlinksrcUentryrdU
source_urlreNUrfc_base_urlrfUhttps://tools.ietf.org/html/rgUerror_encodingrhUUTF-8riU_disable_configrjNUembed_stylesheetrk‰Uwarning_streamrlNUrfc_referencesrmNU
dump_settingsrnNUconfigroNU	datestamprpNUpep_referencesrqNUdump_transformsrrNUenvrsNUerror_encoding_error_handlerrtUbackslashreplaceruUfootnote_backlinksrvKU
docinfo_xformrwKUoutput_encoding_error_handlerrxUstrictryUcloak_email_addressesrzˆUdump_pseudo_xmlr{NUdoctitle_xformr|‰U	id_prefixr}UU	tracebackr~ˆUsmart_quotesr‰U	generatorr€NUtrim_footnote_reference_spacer‰hRNU
_config_filesr‚]U_sourcerƒhUsource_linkr„NU	tab_widthr…KUstrict_visitorr†NUstrip_elements_with_classesr‡NUsyntax_highlightrˆUlongr‰Ufile_insertion_enabledrŠˆUinput_encoding_error_handlerr‹jyubUparse_messagesrŒ]r(cdocutils.nodes
system_message
rŽ)r}r(h%K¢h&hh}r‘(h]UlineK¢UlevelKUsourcehh]h]UtypeUINFOr’h]h]r“jÉauh ]r”h)r•}r–(h ]r—hBX&Duplicate implicit target name: "api".r˜…r™}rš(hUhFj•ubahh˜hUhFjh}r›(h]h]h]h]h]uubahUsystem_messagerœhhhUhFjÄubjŽ)r}rž(h%K­h&hh}rŸ(h]UlineK­UlevelKUsourcehh]h]Utypej’h]h]r j<auh ]r¡h)r¢}r£(h ]r¤hBX(Duplicate implicit target name: "usage".r¥…r¦}r§(hUhFj¢ubahh˜hUhFjh}r¨(h]h]h]h]h]uubahjœhhhUhFj7ubjŽ)r©}rª(h%KÂh&hh}r«(h]UlineKÂUlevelKUsourcehh]h]Utypej’h]h]r¬jˆauh ]r­h)r®}r¯(h ]r°hBX&Duplicate implicit target name: "api".r±…r²}r³(hUhFj®ubahh˜hUhFj©h}r´(h]h]h]h]h]uubahjœhhhUhFj‚ubjŽ)rµ}r¶(h%KÍh&hh}r·(h]UlineKÍUlevelKUsourcehh]h]Utypej’h]h]r¸jW	auh ]r¹h)rº}r»(h ]r¼hBX(Duplicate implicit target name: "usage".r½…r¾}r¿(hUhFjºubahh˜hUhFjµh}rÀ(h]h]h]h]h]uubahjœhhhUhFjQ	ubjŽ)rÁ}rÂ(h%MYh&hh}rÃ(h]UlineMYUlevelKUsourcehh]h]Utypej’h]h]rÄj'
auh ]rÅh)rÆ}rÇ(h ]rÈhBX&Duplicate implicit target name: "api".rÉ…rÊ}rË(hUhFjÆubahh˜hUhFjÁh}rÌ(h]h]h]h]h]uubahjœhhhUhFj!
ubjŽ)rÍ}rÎ(h%M_h&hh}rÏ(h]UlineM_UlevelKUsourcehh]h]Utypej’h]h]rÐjŠ
auh ]rÑh)rÒ}rÓ(h ]rÔhBX(Duplicate implicit target name: "usage".rÕ…rÖ}r×(hUhFjÒubahh˜hUhFjÍh}rØ(h]h]h]h]h]uubahjœhhhUhFj„
ubjŽ)rÙ}rÚ(h%M¤h&hh}rÛ(h]UlineM¤UlevelKUsourcehh]h]Utypej’h]h]rÜj@auh ]rÝh)rÞ}rß(h ]ràhBX&Duplicate implicit target name: "api".rᅁrâ}rã(hUhFjÞubahh˜hUhFjÙh}rä(h]h]h]h]h]uubahjœhhhUhFj:ubjŽ)rå}ræ(h%Mªh&hh}rç(h]UlineMªUlevelKUsourcehh]h]Utypej’h]h]rèj»auh ]réh)rê}rë(h ]rìhBX(Duplicate implicit target name: "usage".r텁rî}rï(hUhFjêubahh˜hUhFjåh}rð(h]h]h]h]h]uubahjœhhhUhFjµubjŽ)rñ}rò(h%MËh&hh}ró(h]UlineMËUlevelKUsourcehh]h]Utypej’h]h]rôj,auh ]rõh)rö}r÷(h ]røhBX&Duplicate implicit target name: "api".rù…rú}rû(hUhFjöubahh˜hUhFjñh}rü(h]h]h]h]h]uubahjœhhhUhFj&ubjŽ)rý}rþ(h%MÑh&hh}rÿ(h]UlineMÑUlevelKUsourcehh]h]Utypej’h]h]rj§auh ]rh)r}r(h ]rhBX(Duplicate implicit target name: "usage".r…r}r(hUhFjubahh˜hUhFjýh}r(h]h]h]h]h]uubahjœhhhUhFj¡ubjŽ)r	}r
(h%M÷h&hh}r(h]UlineM÷UlevelKUsourcehh]h]Utypej’h]h]rj"
auh ]r
h)r}r(h ]rhBX&Duplicate implicit target name: "api".r…r}r(hUhFjubahh˜hUhFj	h}r(h]h]h]h]h]uubahjœhhhUhFj
ubjŽ)r}r(h ]rh)r}r(h ]rhBXJDuplicate implicit target name: "zope.interface.declarations.implementer".r…r}r(hUhFjubahh˜hUhFjh}r(h]h]h]h]h]uubahjœhUh}r(h]UlevelKUsourceh¯h]h]Utypej’h]h]r j
auubjŽ)r!}r"(h%Mh&hh}r#(h]UlineMUlevelKUsourcehh]h]Utypej’h]h]r$jâ
auh ]r%h)r&}r'(h ]r(hBX&Duplicate implicit target name: "api".r)…r*}r+(hUhFj&ubahh˜hUhFj!h}r,(h]h]h]h]h]uubahjœhhhUhFjÜ
ubjŽ)r-}r.(h ]r/h)r0}r1(h ]r2hBXODuplicate implicit target name: "zope.interface.declarations.implementer_only".r3…r4}r5(hUhFj0ubahh˜hUhFj-h}r6(h]h]h]h]h]uubahjœhUh}r7(h]UlevelKUsourceh¯h]h]Utypej’h]h]r8jÅ
auubjŽ)r9}r:(h%M
h&hh}r;(h]UlineM
UlevelKUsourcehh]h]Utypej’h]h]r<jšauh ]r=h)r>}r?(h ]r@hBX&Duplicate implicit target name: "api".rA…rB}rC(hUhFj>ubahh˜hUhFj9h}rD(h]h]h]h]h]uubahjœhhhUhFj”ubjŽ)rE}rF(h%Mh&hh}rG(h]UlineMUlevelKUsourcehh]h]Utypej’h]h]rHjTauh ]rIh)rJ}rK(h ]rLhBX&Duplicate implicit target name: "api".rM…rN}rO(hUhFjJubahh˜hUhFjEh}rP(h]h]h]h]h]uubahjœhhhUhFjNubjŽ)rQ}rR(h%M!h&hh}rS(h]UlineM!UlevelKUsourcehh]h]Utypej’h]h]rTjauh ]rUh)rV}rW(h ]rXhBX&Duplicate implicit target name: "api".rY…rZ}r[(hUhFjVubahh˜hUhFjQh}r\(h]h]h]h]h]uubahjœhhhUhFjubjŽ)r]}r^(h%M)h&hh}r_(h]UlineM)UlevelKUsourcehh]h]Utypej’h]h]r`jSauh ]rah)rb}rc(h ]rdhBX(Duplicate implicit target name: "usage".re…rf}rg(hUhFjbubahh˜hUhFj]h}rh(h]h]h]h]h]uubahjœhhhUhFjMubjŽ)ri}rj(h%MAh&hh}rk(h]UlineMAUlevelKUsourcehh]h]Utypej’h]h]rlj˜auh ]rmh)rn}ro(h ]rphBX&Duplicate implicit target name: "api".rq…rr}rs(hUhFjnubahh˜hUhFjih}rt(h]h]h]h]h]uubahjœhhhUhFj’ubjŽ)ru}rv(h%MGh&hh}rw(h]UlineMGUlevelKUsourcehh]h]Utypej’h]h]rxjûauh ]ryh)rz}r{(h ]r|hBX(Duplicate implicit target name: "usage".r}…r~}r(hUhFjzubahh˜hUhFjuh}r€(h]h]h]h]h]uubahjœhhhUhFjõubjŽ)r}r‚(h%Mvh&hh}rƒ(h]UlineMvUlevelKUsourcehh]h]Utypej’h]h]r„j6auh ]r…h)r†}r‡(h ]rˆhBX&Duplicate implicit target name: "api".r‰…rŠ}r‹(hUhFj†ubahh˜hUhFjh}rŒ(h]h]h]h]h]uubahjœhhhUhFj0ubjŽ)r}rŽ(h%M|h&hh}r(h]UlineM|UlevelKUsourcehh]h]Utypej’h]h]rj±auh ]r‘h)r’}r“(h ]r”hBX(Duplicate implicit target name: "usage".r•…r–}r—(hUhFj’ubahh˜hUhFjh}r˜(h]h]h]h]h]uubahjœhhhUhFj«ubjŽ)r™}rš(h%MÐh&hh}r›(h]UlineMÐUlevelKUsourcehh]h]Utypej’h]h]rœj­auh ]rh)rž}rŸ(h ]r hBX&Duplicate implicit target name: "api".r¡…r¢}r£(hUhFjžubahh˜hUhFj™h}r¤(h]h]h]h]h]uubahjœhhhUhFj§ubjŽ)r¥}r¦(h%MÖh&hh}r§(h]UlineMÖUlevelKUsourcehh]h]Utypej’h]h]r¨j(auh ]r©h)rª}r«(h ]r¬hBX(Duplicate implicit target name: "usage".r­…r®}r¯(hUhFjªubahh˜hUhFj¥h}r°(h]h]h]h]h]uubahjœhhhUhFj"ubjŽ)r±}r²(h%Mh&hh}r³(h]UlineMUlevelKUsourcehh]h]Utypej’h]h]r´j‘auh ]rµh)r¶}r·(h ]r¸hBX&Duplicate implicit target name: "api".r¹…rº}r»(hUhFj¶ubahh˜hUhFj±h}r¼(h]h]h]h]h]uubahjœhhhUhFj‹ubjŽ)r½}r¾(h%Mh&hh}r¿(h]UlineMUlevelKUsourcehh]h]Utypej’h]h]rÀjóauh ]rÁh)rÂ}rÃ(h ]rÄhBX(Duplicate implicit target name: "usage".rÅ…rÆ}rÇ(hUhFjÂubahh˜hUhFj½h}rÈ(h]h]h]h]h]uubahjœhhhUhFjíubjŽ)rÉ}rÊ(h%MHh&hh}rË(h]UlineMHUlevelKUsourcehh]h]Utypej’h]h]rÌjnauh ]rÍh)rÎ}rÏ(h ]rÐhBX&Duplicate implicit target name: "api".rÑ…rÒ}rÓ(hUhFjÎubahh˜hUhFjÉh}rÔ(h]h]h]h]h]uubahjœhhhUhFjhubjŽ)rÕ}rÖ(h%MQh&hh}r×(h]UlineMQUlevelKUsourcehh]h]Utypej’h]h]rØjôauh ]rÙh)rÚ}rÛ(h ]rÜhBX&Duplicate implicit target name: "api".rÝ…rÞ}rß(hUhFjÚubahh˜hUhFjÕh}rà(h]h]h]h]h]uubahjœhhhUhFjîubjŽ)rá}râ(h%MWh&hh}rã(h]UlineMWUlevelKUsourcehh]h]Utypej’h]h]räjœauh ]råh)ræ}rç(h ]rèhBX(Duplicate implicit target name: "usage".r酁rê}rë(hUhFjæubahh˜hUhFjáh}rì(h]h]h]h]h]uubahjœhhhUhFj–ubjŽ)rí}rî(h%M‚h&hh}rï(h]UlineM‚UlevelKUsourcehh]h]Utypej’h]h]rðjçauh ]rñh)rò}ró(h ]rôhBX&Duplicate implicit target name: "api".rõ…rö}r÷(hUhFjòubahh˜hUhFjíh}rø(h]h]h]h]h]uubahjœhhhUhFjáubjŽ)rù}rú(h ]rûh)rü}rý(h ]rþhBXGDuplicate implicit target name: "zope.interface.declarations.provider".rÿ…r}r(hUhFjüubahh˜hUhFjùh}r(h]h]h]h]h]uubahjœhUh}r(h]UlevelKUsourceh¯h]h]Utypej’h]h]rjÊauubjŽ)r}r(h%Mh&hh}r(h]UlineMUlevelKUsourcehh]h]Utypej’h]h]rjcauh ]r	h)r
}r(h ]rhBX&Duplicate implicit target name: "api".r
…r}r(hUhFj
ubahh˜hUhFjh}r(h]h]h]h]h]uubahjœhhhUhFj]ubjŽ)r}r(h%M—h&hh}r(h]UlineM—UlevelKUsourcehh]h]Utypej’h]h]rjauh ]rh)r}r(h ]rhBX&Duplicate implicit target name: "api".r…r}r(hUhFjubahh˜hUhFjh}r(h]h]h]h]h]uubahjœhhhUhFjubjŽ)r}r(h%Mh&hh}r(h]UlineMUlevelKUsourcehh]h]Utypej’h]h]r j€auh ]r!h)r"}r#(h ]r$hBX(Duplicate implicit target name: "usage".r%…r&}r'(hUhFj"ubahh˜hUhFjh}r((h]h]h]h]h]uubahjœhhhUhFjzubjŽ)r)}r*(h%Mâh&hh}r+(h]UlineMâUlevelKUsourcehh]h]Utypej’h]h]r,j»auh ]r-h)r.}r/(h ]r0hBX&Duplicate implicit target name: "api".r1…r2}r3(hUhFj.ubahh˜hUhFj)h}r4(h]h]h]h]h]uubahjœhhhUhFjµubjŽ)r5}r6(h%Mëh&hh}r7(h]UlineMëUlevelKUsourcehh]h]Utypej’h]h]r8jauh ]r9h)r:}r;(h ]r<hBX&Duplicate implicit target name: "api".r=…r>}r?(hUhFj:ubahh˜hUhFj5h}r@(h]h]h]h]h]uubahjœhhhUhFjubjŽ)rA}rB(h%Mòh&hh}rC(h]UlineMòUlevelKUsourcehh]h]Utypej’h]h]rDj`auh ]rEh)rF}rG(h ]rHhBX(Duplicate implicit target name: "usage".rI…rJ}rK(hUhFjFubahh˜hUhFjAh}rL(h]h]h]h]h]uubahjœhhhUhFjZubjŽ)rM}rN(h%M
h&hh}rO(h]UlineM
UlevelKUsourcehh]h]Utypej’h]h]rPj£auh ]rQh)rR}rS(h ]rThBX&Duplicate implicit target name: "api".rU…rV}rW(hUhFjRubahh˜hUhFjMh}rX(h]h]h]h]h]uubahjœhhhUhFjubjŽ)rY}rZ(h ]r[h)r\}r](h ]r^hBXDDuplicate implicit target name: "zope.interface.declarations.named".r_…r`}ra(hUhFj\ubahh˜hUhFjYh}rb(h]h]h]h]h]uubahjœhUh}rc(h]UlevelKUsourceh¯h]h]Utypej’h]h]rdj†auubjŽ)re}rf(h%Mh&hh}rg(h]UlineMUlevelKUsourcehh]h]Utypej’h]h]rhjûauh ]rih)rj}rk(h ]rlhBX(Duplicate implicit target name: "usage".rm…rn}ro(hUhFjjubahh˜hUhFjeh}rp(h]h]h]h]h]uubahjœhhhUhFjõubeub.