Change zope's classProvides to be a class decorator.

When attempting to import any module that uses
zope.interface.classProvides in Python 3, a TypeError is raised; it
reads:

    TypeError: Class advice impossible in Python3.  Use the @provider
    class decorator instead.

Following the listed advice seems to function in Python 3.
This commit is contained in:
Roy Wellington Ⅳ
2016-02-20 00:41:01 -08:00
parent b6142c13d6
commit e9d981aceb
8 changed files with 10 additions and 10 deletions
+2 -2
View File
@@ -34,8 +34,8 @@ hostname_regex = re.compile(
@zope.interface.implementer(interfaces.IPlugin)
class Plugin(object):
"""Generic plugin."""
# classProvides is not inherited, subclasses must define it on their own
#zope.interface.classProvides(interfaces.IPluginFactory)
# provider is not inherited, subclasses must define it on their own
# @zope.interface.provider(interfaces.IPluginFactory)
def __init__(self, config, name):
self.config = config
+1 -1
View File
@@ -24,6 +24,7 @@ logger = logging.getLogger(__name__)
@zope.interface.implementer(interfaces.IAuthenticator)
@zope.interface.provider(interfaces.IPluginFactory)
class Authenticator(common.Plugin):
"""Manual Authenticator.
@@ -35,7 +36,6 @@ class Authenticator(common.Plugin):
.. todo:: Support for `~.challenges.TLSSNI01`.
"""
zope.interface.classProvides(interfaces.IPluginFactory)
hidden = True
description = "Manually configure an HTTP server"
+1 -1
View File
@@ -12,9 +12,9 @@ logger = logging.getLogger(__name__)
@zope.interface.implementer(interfaces.IInstaller)
@zope.interface.provider(interfaces.IPluginFactory)
class Installer(common.Plugin):
"""Null installer."""
zope.interface.classProvides(interfaces.IPluginFactory)
description = "Null Installer"
hidden = True
+1 -1
View File
@@ -136,6 +136,7 @@ def supported_challenges_validator(data):
@zope.interface.implementer(interfaces.IAuthenticator)
@zope.interface.provider(interfaces.IPluginFactory)
class Authenticator(common.Plugin):
"""Standalone Authenticator.
@@ -144,7 +145,6 @@ class Authenticator(common.Plugin):
challenges from the certificate authority. Therefore, it does not
rely on any existing server program.
"""
zope.interface.classProvides(interfaces.IPluginFactory)
description = "Automatically use a temporary webserver"
+1 -1
View File
@@ -18,9 +18,9 @@ logger = logging.getLogger(__name__)
@zope.interface.implementer(interfaces.IAuthenticator)
@zope.interface.provider(interfaces.IPluginFactory)
class Authenticator(common.Plugin):
"""Webroot Authenticator."""
zope.interface.classProvides(interfaces.IPluginFactory)
description = "Webroot Authenticator"