[Checkins] SVN: zope.pluggableauth/trunk/ Drop support for Python 2.4 and 2.5.

Tres Seaver cvs-admin at zope.org
Fri May 18 15:20:42 UTC 2012


Log message for revision 126130:
  Drop support for Python 2.4 and 2.5.
  
  Replace deprecated 'zope.component.adapts' usage with equivalent
  'zope.component.adapter' decorator.
  
  Replace deprecated 'zope.interface.implements' usage with equivalent
  'zope.interface.implementer' decorator.
  
  

Changed:
  U   zope.pluggableauth/trunk/CHANGES.txt
  U   zope.pluggableauth/trunk/setup.py
  U   zope.pluggableauth/trunk/src/zope/pluggableauth/README.txt
  U   zope.pluggableauth/trunk/src/zope/pluggableauth/authentication.py
  U   zope.pluggableauth/trunk/src/zope/pluggableauth/factories.py
  U   zope.pluggableauth/trunk/src/zope/pluggableauth/interfaces.py
  U   zope.pluggableauth/trunk/src/zope/pluggableauth/plugins/ftpplugins.py
  U   zope.pluggableauth/trunk/src/zope/pluggableauth/plugins/generic.py
  U   zope.pluggableauth/trunk/src/zope/pluggableauth/plugins/groupfolder.py
  U   zope.pluggableauth/trunk/src/zope/pluggableauth/plugins/groupfolder.txt
  U   zope.pluggableauth/trunk/src/zope/pluggableauth/plugins/httpplugins.py
  U   zope.pluggableauth/trunk/src/zope/pluggableauth/plugins/principalfolder.py
  U   zope.pluggableauth/trunk/src/zope/pluggableauth/plugins/session.py
  U   zope.pluggableauth/trunk/src/zope/pluggableauth/tests.py

-=-
Modified: zope.pluggableauth/trunk/CHANGES.txt
===================================================================
--- zope.pluggableauth/trunk/CHANGES.txt	2012-05-18 15:17:00 UTC (rev 126129)
+++ zope.pluggableauth/trunk/CHANGES.txt	2012-05-18 15:20:38 UTC (rev 126130)
@@ -2,12 +2,18 @@
 Changes
 =======
 
-1.4 (unreleased)
+2.0 (unreleased)
 ----------------
 
-- Nothing changed yet.
+- Replaced deprecated ``zope.component.adapts`` usage with equivalent
+  ``zope.component.adapter`` decorator.
 
+- Replaced deprecated ``zope.interface.implements`` usage with equivalent
+  ``zope.interface.implementer`` decorator.
 
+- Dropped support for Python 2.4 and 2.5.
+
+
 1.3 (2011-02-08)
 ----------------
 

Modified: zope.pluggableauth/trunk/setup.py
===================================================================
--- zope.pluggableauth/trunk/setup.py	2012-05-18 15:17:00 UTC (rev 126129)
+++ zope.pluggableauth/trunk/setup.py	2012-05-18 15:20:38 UTC (rev 126130)
@@ -28,7 +28,7 @@
     return open(os.path.join(os.path.dirname(__file__), *rnames)).read()
 
 setup(name='zope.pluggableauth',
-      version='1.4dev',
+      version='2.0dev',
       author='Zope Foundation and Contributors',
       author_email='zope-dev at zope.org',
       description='Pluggable Authentication Utility',
@@ -70,6 +70,9 @@
           'Intended Audience :: Developers',
           'License :: OSI Approved :: Zope Public License',
           'Programming Language :: Python',
+          'Programming Language :: Python :: 2',
+          'Programming Language :: Python :: 2.6',
+          'Programming Language :: Python :: 2.7',
           'Natural Language :: English',
           'Operating System :: OS Independent',
           'Topic :: Internet :: WWW/HTTP',

Modified: zope.pluggableauth/trunk/src/zope/pluggableauth/README.txt
===================================================================
--- zope.pluggableauth/trunk/src/zope/pluggableauth/README.txt	2012-05-18 15:17:00 UTC (rev 126129)
+++ zope.pluggableauth/trunk/src/zope/pluggableauth/README.txt	2012-05-18 15:20:38 UTC (rev 126130)
@@ -50,10 +50,9 @@
   >>> from zope import interface
   >>> from zope.pluggableauth.authentication import interfaces
 
-  >>> class MyCredentialsPlugin(object):
+  >>> @interface.implementer(interfaces.ICredentialsPlugin)
+  ... class MyCredentialsPlugin(object):
   ...
-  ...     interface.implements(interfaces.ICredentialsPlugin)
-  ...
   ...     def extractCredentials(self, request):
   ...         return request.get('credentials')
   ...
@@ -74,10 +73,9 @@
 Next we'll create a simple authenticator plugin. For our plugin, we'll need
 an implementation of IPrincipalInfo::
 
-  >>> class PrincipalInfo(object):
+  >>> @interface.implementer(interfaces.IPrincipalInfo)
+  ... class PrincipalInfo(object):
   ...
-  ...     interface.implements(interfaces.IPrincipalInfo)
-  ...
   ...     def __init__(self, id, title, description):
   ...         self.id = id
   ...         self.title = title
@@ -88,10 +86,9 @@
 
 Our authenticator uses this type when it creates a principal info::
 
-  >>> class MyAuthenticatorPlugin(object):
+  >>> @interface.implementer(interfaces.IAuthenticatorPlugin)
+  ... class MyAuthenticatorPlugin(object):
   ...
-  ...     interface.implements(interfaces.IAuthenticatorPlugin)
-  ...
   ...     def authenticateCredentials(self, credentials):
   ...         if credentials == 'secretcode':
   ...             return PrincipalInfo('bob', 'Bob', '')
@@ -203,10 +200,9 @@
 illustrate, we'll create a credentials plugin that extracts credentials from
 a request form::
 
-  >>> class FormCredentialsPlugin:
+  >>> @interface.implementer(interfaces.ICredentialsPlugin)
+  ... class FormCredentialsPlugin:
   ...
-  ...     interface.implements(interfaces.ICredentialsPlugin)
-  ...
   ...     def extractCredentials(self, request):
   ...         return request.form.get('my_credentials')
   ...
@@ -301,10 +297,9 @@
 find a principal. If the first authenticator plugin can't find the requested
 principal, the next plugin is used, and so on.
 
-  >>> class AnotherAuthenticatorPlugin:
+  >>> @interface.implementer(interfaces.IAuthenticatorPlugin)
+  ... class AnotherAuthenticatorPlugin:
   ...
-  ...     interface.implements(interfaces.IAuthenticatorPlugin)
-  ...
   ...     def __init__(self):
   ...         self.infos = {}
   ...         self.ids = {}

Modified: zope.pluggableauth/trunk/src/zope/pluggableauth/authentication.py
===================================================================
--- zope.pluggableauth/trunk/src/zope/pluggableauth/authentication.py	2012-05-18 15:17:00 UTC (rev 126129)
+++ zope.pluggableauth/trunk/src/zope/pluggableauth/authentication.py	2012-05-18 15:20:38 UTC (rev 126130)
@@ -17,18 +17,17 @@
 from zope.authentication.interfaces import (
     IAuthentication, PrincipalLookupError)
 from zope.container.btree import BTreeContainer
-from zope.interface import implements
+from zope.interface import implementer
 from zope.pluggableauth import interfaces
 from zope.schema.interfaces import ISourceQueriables
 from zope.site.next import queryNextUtility
 
 
-class PluggableAuthentication(BTreeContainer):
-
-    implements(
+ at implementer(
         IAuthentication,
         interfaces.IPluggableAuthentication,
         ISourceQueriables)
+class PluggableAuthentication(BTreeContainer):
 
     authenticatorPlugins = ()
     credentialsPlugins = ()

Modified: zope.pluggableauth/trunk/src/zope/pluggableauth/factories.py
===================================================================
--- zope.pluggableauth/trunk/src/zope/pluggableauth/factories.py	2012-05-18 15:17:00 UTC (rev 126129)
+++ zope.pluggableauth/trunk/src/zope/pluggableauth/factories.py	2012-05-18 15:20:38 UTC (rev 126130)
@@ -24,6 +24,7 @@
 from zope.publisher.interfaces import IRequest
 
 
+ at interface.implementer(interfaces.IPrincipalInfo)
 class PrincipalInfo(object):
     """An implementation of IPrincipalInfo used by the principal folder.
 
@@ -42,7 +43,6 @@
       'An over-used term.'
 
     """
-    interface.implements(interfaces.IPrincipalInfo)
 
     def __init__(self, id, login, title, description):
         self.id = id
@@ -54,6 +54,7 @@
         return 'PrincipalInfo(%r)' % self.id
 
 
+ at interface.implementer(IPrincipal)
 class Principal(object):
     """A group-aware implementation of zope.security.interfaces.IPrincipal.
 
@@ -117,8 +118,8 @@
       >>> group_data = dict((p.id, p) for p in (
       ...     editor, creator, reviewer, usermanager, contentAdmin,
       ...     zope3Dev, zope3ListAdmin, listAdmin, zpugMember, martians))
-      >>> class DemoAuth(object):
-      ...     interface.implements(IAuthentication)
+      >>> @interface.implementer(IAuthentication)
+      ... class DemoAuth(object):
       ...     def getPrincipal(self, id):
       ...         return group_data[id]
       ...
@@ -147,7 +148,6 @@
        'user_managers', 'zope_3_project', 'list_administrators',
        'zope_3_list_admin', 'zpug']
     """
-    interface.implements(IPrincipal)
 
     def __init__(self, id, title=u'', description=u''):
         self.id = id
@@ -177,6 +177,8 @@
                         stack.append(iter(group.groups))
 
 
+ at component.adapter(interfaces.IPrincipalInfo, IRequest)
+ at interface.implementer(interfaces.IAuthenticatedPrincipalFactory)
 class AuthenticatedPrincipalFactory(object):
     """Creates 'authenticated' principals.
 
@@ -226,10 +228,7 @@
     For information on how factories are used in the authentication process,
     see README.txt.
     """
-    component.adapts(interfaces.IPrincipalInfo, IRequest)
 
-    interface.implements(interfaces.IAuthenticatedPrincipalFactory)
-
     def __init__(self, info, request):
         self.info = info
         self.request = request
@@ -243,6 +242,8 @@
         return principal
 
 
+ at component.adapter(interfaces.IPrincipalInfo)
+ at interface.implementer(interfaces.IFoundPrincipalFactory)
 class FoundPrincipalFactory(object):
     """Creates 'found' principals.
 
@@ -287,10 +288,7 @@
     For information on how factories are used in the authentication process,
     see README.txt.
     """
-    component.adapts(interfaces.IPrincipalInfo)
 
-    interface.implements(interfaces.IFoundPrincipalFactory)
-
     def __init__(self, info):
         self.info = info
 

Modified: zope.pluggableauth/trunk/src/zope/pluggableauth/interfaces.py
===================================================================
--- zope.pluggableauth/trunk/src/zope/pluggableauth/interfaces.py	2012-05-18 15:17:00 UTC (rev 126129)
+++ zope.pluggableauth/trunk/src/zope/pluggableauth/interfaces.py	2012-05-18 15:20:38 UTC (rev 126130)
@@ -206,6 +206,7 @@
         "The request the user was authenticated against")
 
 
+ at zope.interface.implementer(IAuthenticatedPrincipalCreated)
 class AuthenticatedPrincipalCreated:
     """
     >>> from zope.interface.verify import verifyObject
@@ -215,8 +216,6 @@
     True
     """
 
-    zope.interface.implements(IAuthenticatedPrincipalCreated)
-
     def __init__(self, authentication, principal, info, request):
         self.authentication = authentication
         self.principal = principal
@@ -228,6 +227,7 @@
     """A principal has been created by way of a search operation."""
 
 
+ at zope.interface.implementer(IFoundPrincipalCreated)
 class FoundPrincipalCreated:
     """
     >>> from zope.interface.verify import verifyObject
@@ -237,8 +237,6 @@
     True
     """
 
-    zope.interface.implements(IFoundPrincipalCreated)
-
     def __init__(self, authentication, principal, info):
         self.authentication = authentication
         self.principal = principal

Modified: zope.pluggableauth/trunk/src/zope/pluggableauth/plugins/ftpplugins.py
===================================================================
--- zope.pluggableauth/trunk/src/zope/pluggableauth/plugins/ftpplugins.py	2012-05-18 15:17:00 UTC (rev 126129)
+++ zope.pluggableauth/trunk/src/zope/pluggableauth/plugins/ftpplugins.py	2012-05-18 15:20:38 UTC (rev 126130)
@@ -15,15 +15,14 @@
 """
 __docformat__ = 'restructuredtext'
 
-from zope.interface import implements
+from zope.interface import implementer
 from zope.pluggableauth import interfaces
 from zope.publisher.interfaces.ftp import IFTPRequest
 
 
+ at implementer(interfaces.ICredentialsPlugin)
 class FTPCredentialsPlugin(object):
 
-    implements(interfaces.ICredentialsPlugin)
-
     def extractCredentials(self, request):
         """Extracts the FTP credentials from a request.
 

Modified: zope.pluggableauth/trunk/src/zope/pluggableauth/plugins/generic.py
===================================================================
--- zope.pluggableauth/trunk/src/zope/pluggableauth/plugins/generic.py	2012-05-18 15:17:00 UTC (rev 126129)
+++ zope.pluggableauth/trunk/src/zope/pluggableauth/plugins/generic.py	2012-05-18 15:20:38 UTC (rev 126130)
@@ -16,10 +16,11 @@
 __docformat__ = "reStructuredText"
 
 from zope.authentication.interfaces import IUnauthenticatedPrincipal
-from zope.interface import implements
+from zope.interface import implementer
 from zope.pluggableauth import interfaces
 
 
+ at implementer(interfaces.ICredentialsPlugin)
 class NoChallengeCredentialsPlugin(object):
     """A plugin that doesn't challenge if the principal is authenticated.
 
@@ -62,8 +63,9 @@
 
     On the other hand, if the user is unauthenticated:
 
-      >>> class Principal(object):
-      ...     implements(IUnauthenticatedPrincipal)
+      >>> @implementer(IUnauthenticatedPrincipal)
+      ... class Principal(object):
+      ...     pass
       >>> request.setPrincipal(Principal())
       >>> IUnauthenticatedPrincipal.providedBy(request.principal)
       True
@@ -77,7 +79,6 @@
     the PAU is configured properly, the user will receive a challenge and be
     allowed to provide different credentials.
     """
-    implements(interfaces.ICredentialsPlugin)
 
     def extractCredentials(self, request):
         return None

Modified: zope.pluggableauth/trunk/src/zope/pluggableauth/plugins/groupfolder.py
===================================================================
--- zope.pluggableauth/trunk/src/zope/pluggableauth/plugins/groupfolder.py	2012-05-18 15:17:00 UTC (rev 126129)
+++ zope.pluggableauth/trunk/src/zope/pluggableauth/plugins/groupfolder.py	2012-05-18 15:20:38 UTC (rev 126130)
@@ -20,7 +20,7 @@
 import persistent
 
 from zope import interface, event, schema, component
-from zope.interface import alsoProvides, implements
+from zope.interface import alsoProvides, implementer
 from zope.security.interfaces import (
     IGroup, IGroupAwarePrincipal, IMemberAwareGroup)
 
@@ -95,13 +95,14 @@
 class IGroupPrincipalInfo(IPrincipalInfo):
     members = interface.Attribute('an iterable of members of the group')
 
+ at interface.implementer(IGroupPrincipalInfo)
 class GroupInfo(object):
     """An implementation of IPrincipalInfo used by the group folder.
 
     A group info is created with id, title, and description:
 
-      >>> class DemoGroupInformation(object):
-      ...     interface.implements(IGroupInformation)
+      >>> @interface.implementer(IGroupInformation)
+      ... class DemoGroupInformation(object):
       ...     def __init__(self, title, description, principals):
       ...         self.title = title
       ...         self.description = description
@@ -126,7 +127,6 @@
       ('joe', 'jane', 'jaime')
 
     """
-    interface.implements(IGroupPrincipalInfo)
 
     def __init__(self, id, information):
         self.id = id
@@ -152,11 +152,9 @@
         return 'GroupInfo(%r)' % self.id
 
 
+ at interface.implementer(IAuthenticatorPlugin, IQuerySchemaSearch, IGroupFolder)
 class GroupFolder(BTreeContainer):
 
-    interface.implements(
-        IAuthenticatorPlugin, IQuerySchemaSearch, IGroupFolder)
-
     schema = IGroupSearchCriteria
 
     def __init__(self, prefix=u''):
@@ -263,10 +261,9 @@
         nocycles(principal.groups, seen, getPrincipal)
         seen.pop()
 
+ at interface.implementer(IGroupInformation, IGroupContained)
 class GroupInformation(persistent.Persistent):
 
-    interface.implements(IGroupInformation, IGroupContained)
-
     __parent__ = __name__ = None
 
     _principals = ()
@@ -369,6 +366,7 @@
         alsoProvides(principal, IMemberAwareGroup)
 
 
+ at zope.interface.implementer(IGroupAdded)
 class GroupAdded:
     """
     >>> from zope.interface.verify import verifyObject
@@ -377,8 +375,6 @@
     True
     """
 
-    zope.interface.implements(IGroupAdded)
-
     def __init__(self, group):
         self.group = group
 
@@ -397,9 +393,11 @@
             self.__class__.__name__, sorted(self.principal_ids), self.group_id)
 
 
+ at implementer(IPrincipalsAddedToGroup)
 class PrincipalsAddedToGroup(AbstractMembersChanged):
-    implements(IPrincipalsAddedToGroup)
+    pass
 
 
+ at implementer(IPrincipalsRemovedFromGroup)
 class PrincipalsRemovedFromGroup(AbstractMembersChanged):
-    implements(IPrincipalsRemovedFromGroup)
+    pass

Modified: zope.pluggableauth/trunk/src/zope/pluggableauth/plugins/groupfolder.txt
===================================================================
--- zope.pluggableauth/trunk/src/zope/pluggableauth/plugins/groupfolder.txt	2012-05-18 15:17:00 UTC (rev 126129)
+++ zope.pluggableauth/trunk/src/zope/pluggableauth/plugins/groupfolder.txt	2012-05-18 15:20:38 UTC (rev 126130)
@@ -36,8 +36,8 @@
   >>> from zope.security.interfaces import IGroupAwarePrincipal
   >>> from zope.pluggableauth.plugins.groupfolder import setGroupsForPrincipal
 
-  >>> class Principal:
-  ...     interface.implements(IGroupAwarePrincipal)
+  >>> @interface.implementer(IGroupAwarePrincipal)
+  ... class Principal:
   ...     def __init__(self, id, title='', description=''):
   ...         self.id, self.title, self.description = id, title, description
   ...         self.groups = []
@@ -49,10 +49,8 @@
 
   >>> from zope.pluggableauth.plugins import principalfolder
 
-  >>> class Principals:
-  ...
-  ...     interface.implements(IAuthentication)
-  ...
+  >>> @interface.implementer(IAuthentication)
+  ... class Principals:
   ...     def __init__(self, groups, prefix='auth.'):
   ...         self.prefix = prefix
   ...         self.principals = {
@@ -278,8 +276,8 @@
 Lets define a group-aware principal:
 
   >>> import zope.security.interfaces
-  >>> class GroupAwarePrincipal(Principal):
-  ...     interface.implements(zope.security.interfaces.IGroupAwarePrincipal)
+  >>> @interface.implementer(zope.security.interfaces.IGroupAwarePrincipal)
+  ... class GroupAwarePrincipal(Principal):
   ...     def __init__(self, id):
   ...         Principal.__init__(self, id)
   ...         self.groups = []
@@ -296,8 +294,9 @@
 Now, if we define the Everybody group:
 
   >>> import zope.authentication.interfaces
-  >>> class EverybodyGroup(Principal):
-  ...     interface.implements(zope.authentication.interfaces.IEveryoneGroup)
+  >>> @interface.implementer(zope.authentication.interfaces.IEveryoneGroup)
+  ... class EverybodyGroup(Principal):
+  ...     pass
 
   >>> everybody = EverybodyGroup('all')
   >>> provideUtility(everybody, zope.authentication.interfaces.IEveryoneGroup)
@@ -310,9 +309,10 @@
 
 Similarly for the authenticated group:
 
-  >>> class AuthenticatedGroup(Principal):
-  ...     interface.implements(
+  >>> @interface.implementer(
   ...         zope.authentication.interfaces.IAuthenticatedGroup)
+  ... class AuthenticatedGroup(Principal):
+  ...     pass
 
   >>> authenticated = AuthenticatedGroup('auth')
   >>> provideUtility(authenticated, zope.authentication.interfaces.IAuthenticatedGroup)
@@ -335,8 +335,8 @@
 
 And they are only added to group aware principals:
 
-  >>> class SolitaryPrincipal:
-  ...     interface.implements(zope.security.interfaces.IPrincipal)
+  >>> @interface.implementer(zope.security.interfaces.IPrincipal)
+  ... class SolitaryPrincipal:
   ...     id = title = description = ''
 
   >>> event = interfaces.FoundPrincipalCreated(42, SolitaryPrincipal(), {})
@@ -352,9 +352,9 @@
 
 Given an info object and a group...
 
-    >>> class DemoGroupInformation(object):
-    ...     interface.implements(
+    >>> @interface.implementer(
     ...         zope.pluggableauth.plugins.groupfolder.IGroupInformation)
+    ... class DemoGroupInformation(object):
     ...     def __init__(self, title, description, principals):
     ...         self.title = title
     ...         self.description = description
@@ -365,8 +365,8 @@
     ...
     >>> info = zope.pluggableauth.plugins.groupfolder.GroupInfo(
     ...     'groups.managers', i)
-    >>> class DummyGroup(object):
-    ...     interface.implements(IGroupAwarePrincipal)
+    >>> @interface.implementer(IGroupAwarePrincipal)
+    ... class DummyGroup(object):
     ...     def __init__(self, id, title=u'', description=u''):
     ...         self.id = id
     ...         self.title = title

Modified: zope.pluggableauth/trunk/src/zope/pluggableauth/plugins/httpplugins.py
===================================================================
--- zope.pluggableauth/trunk/src/zope/pluggableauth/plugins/httpplugins.py	2012-05-18 15:17:00 UTC (rev 126129)
+++ zope.pluggableauth/trunk/src/zope/pluggableauth/plugins/httpplugins.py	2012-05-18 15:20:38 UTC (rev 126130)
@@ -16,7 +16,7 @@
 __docformat__ = "reStructuredText"
 
 import base64
-from zope.interface import implements, Interface
+from zope.interface import implementer, Interface
 from zope.publisher.interfaces.http import IHTTPRequest
 from zope.schema import TextLine
 from zope.pluggableauth import interfaces
@@ -34,10 +34,9 @@
                      default=u'Zope')
 
 
+ at implementer(interfaces.ICredentialsPlugin, IHTTPBasicAuthRealm)
 class HTTPBasicAuthCredentialsPlugin(object):
 
-    implements(interfaces.ICredentialsPlugin, IHTTPBasicAuthRealm)
-
     realm = 'Zope'
 
     protocol = 'http auth'

Modified: zope.pluggableauth/trunk/src/zope/pluggableauth/plugins/principalfolder.py
===================================================================
--- zope.pluggableauth/trunk/src/zope/pluggableauth/plugins/principalfolder.py	2012-05-18 15:17:00 UTC (rev 126129)
+++ zope.pluggableauth/trunk/src/zope/pluggableauth/plugins/principalfolder.py	2012-05-18 15:20:38 UTC (rev 126130)
@@ -24,7 +24,7 @@
 from zope.container.contained import Contained
 from zope.container.interfaces import DuplicateIDError
 from zope.i18nmessageid import MessageFactory
-from zope.interface import implements, Interface
+from zope.interface import implementer, Interface
 from zope.password.interfaces import IPasswordManager
 from zope.schema import Text, TextLine, Password, Choice
 from zope.pluggableauth.interfaces import (
@@ -113,11 +113,10 @@
         missing_value=u'')
 
 
+ at implementer(IInternalPrincipal, IInternalPrincipalContained)
 class InternalPrincipal(Persistent, Contained):
     """An internal principal for Persistent Principal Folder."""
 
-    implements(IInternalPrincipal, IInternalPrincipalContained)
-
     # If you're searching for self._passwordManagerName, or self._password
     # probably you just need to evolve the database to new generation
     # at /++etc++process/@@generations.html
@@ -172,16 +171,15 @@
     login = property(getLogin, setLogin)
 
 
+ at implementer(IAuthenticatorPlugin,
+             IQuerySchemaSearch,
+             IInternalPrincipalContainer)
 class PrincipalFolder(BTreeContainer):
     """A Persistent Principal Folder and Authentication plugin.
 
     See principalfolder.txt for details.
     """
 
-    implements(IAuthenticatorPlugin,
-               IQuerySchemaSearch,
-               IInternalPrincipalContainer)
-
     schema = ISearchSchema
 
     def __init__(self, prefix=''):

Modified: zope.pluggableauth/trunk/src/zope/pluggableauth/plugins/session.py
===================================================================
--- zope.pluggableauth/trunk/src/zope/pluggableauth/plugins/session.py	2012-05-18 15:17:00 UTC (rev 126129)
+++ zope.pluggableauth/trunk/src/zope/pluggableauth/plugins/session.py	2012-05-18 15:20:38 UTC (rev 126130)
@@ -20,7 +20,7 @@
 import zope.container.contained
 from urllib import urlencode
 
-from zope.interface import implements, Interface
+from zope.interface import implementer, Interface
 from zope.schema import TextLine
 from zope.publisher.interfaces.http import IHTTPRequest
 from zope.session.interfaces import ISession
@@ -47,6 +47,7 @@
         """Return password."""
 
 
+ at implementer(ISessionCredentials)
 class SessionCredentials(object):
     """Credentials class for use with sessions.
 
@@ -64,7 +65,6 @@
       'tiger'
 
     """
-    implements(ISessionCredentials)
 
     def __init__(self, login, password):
         self.login = login
@@ -102,6 +102,7 @@
         default=u"password")
 
 
+ at implementer(ICredentialsPlugin, IBrowserFormChallenger)
 class SessionCredentialsPlugin(persistent.Persistent,
                                zope.container.contained.Contained):
     """A credentials plugin that uses Zope sessions to get/store credentials.
@@ -195,7 +196,6 @@
       True
 
     """
-    implements(ICredentialsPlugin, IBrowserFormChallenger)
 
     loginpagename = 'loginForm.html'
     loginfield = 'login'

Modified: zope.pluggableauth/trunk/src/zope/pluggableauth/tests.py
===================================================================
--- zope.pluggableauth/trunk/src/zope/pluggableauth/tests.py	2012-05-18 15:17:00 UTC (rev 126129)
+++ zope.pluggableauth/trunk/src/zope/pluggableauth/tests.py	2012-05-18 15:20:38 UTC (rev 126130)
@@ -21,7 +21,7 @@
 from zope.component.interfaces import IComponentLookup
 from zope.container.interfaces import ISimpleReadContainer
 from zope.container.traversal import ContainerTraversable
-from zope.interface import implements
+from zope.interface import implementer
 from zope.interface import Interface
 from zope.pluggableauth.plugins.session import SessionCredentialsPlugin
 from zope.publisher import base
@@ -39,8 +39,8 @@
     ClientId, Session, PersistentSessionDataContainer)
 
 
+ at implementer(IClientId)
 class TestClientId(object):
-    implements(IClientId)
 
     def __new__(cls, request):
         return 'dummyclientidfortesting'



More information about the checkins mailing list