summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Howitz <mh@gocept.com>2022-04-20 09:03:52 +0200
committerMichael Howitz <mh@gocept.com>2022-04-22 15:57:15 +0200
commit24d7309e12a059ba5a23c627d9a7debc838d1fbd (patch)
tree46b40056fa241cd99e6941902209b95b9af4824b
parent7ff3c054f483768dab1ebb56b59a1f7db7830864 (diff)
downloadzope-security-24d7309e12a059ba5a23c627d9a7debc838d1fbd.tar.gz
Apply isort rules
-rw-r--r--setup.cfg11
-rw-r--r--setup.py5
-rw-r--r--src/zope/security/__init__.py6
-rw-r--r--src/zope/security/_compat.py3
-rw-r--r--src/zope/security/_definitions.py2
-rw-r--r--src/zope/security/adapter.py4
-rw-r--r--src/zope/security/checker.py34
-rw-r--r--src/zope/security/decorator.py4
-rw-r--r--src/zope/security/examples/sandbox.py5
-rw-r--r--src/zope/security/examples/sandbox_security.py7
-rw-r--r--src/zope/security/i18n.py2
-rw-r--r--src/zope/security/interfaces.py13
-rw-r--r--src/zope/security/management.py4
-rw-r--r--src/zope/security/metaconfigure.py6
-rw-r--r--src/zope/security/metadirectives.py6
-rw-r--r--src/zope/security/permission.py2
-rw-r--r--src/zope/security/proxy.py3
-rw-r--r--src/zope/security/simplepolicies.py2
-rw-r--r--src/zope/security/testing.py9
-rw-r--r--src/zope/security/tests/test_adapter.py5
-rw-r--r--src/zope/security/tests/test_checker.py149
-rw-r--r--src/zope/security/tests/test_decorator.py7
-rw-r--r--src/zope/security/tests/test_location.py3
-rw-r--r--src/zope/security/tests/test_management.py16
-rw-r--r--src/zope/security/tests/test_metaconfigure.py18
-rw-r--r--src/zope/security/tests/test_permission.py18
-rw-r--r--src/zope/security/tests/test_protectclass.py8
-rw-r--r--src/zope/security/tests/test_proxy.py14
-rw-r--r--src/zope/security/tests/test_simpleinteraction.py2
-rw-r--r--src/zope/security/tests/test_simplepolicies.py2
-rw-r--r--src/zope/security/tests/test_zcml.py6
-rw-r--r--src/zope/security/tests/test_zcml_functest.py23
-rw-r--r--src/zope/security/zcml.py7
-rw-r--r--tox.ini2
34 files changed, 272 insertions, 136 deletions
diff --git a/setup.cfg b/setup.cfg
index 3aa3064..5d7fd75 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -19,3 +19,14 @@ ignore =
docs/_build/html/_sources/*
docs/_build/doctest/*
docs/_build/html/_sources/api/*
+
+[isort]
+force_single_line = True
+combine_as_imports = True
+sections = FUTURE,STDLIB,THIRDPARTY,ZOPE,FIRSTPARTY,LOCALFOLDER
+known_third_party = six, docutils, pkg_resources
+known_zope =
+known_first_party =
+default_section = ZOPE
+line_length = 79
+lines_after_imports = 2
diff --git a/setup.py b/setup.py
index bd750ee..cd3e62e 100644
--- a/setup.py
+++ b/setup.py
@@ -21,17 +21,14 @@
import os
import platform
import sys
-
-
from distutils.errors import CCompilerError
from distutils.errors import DistutilsExecError
from distutils.errors import DistutilsPlatformError
-
from setuptools import Extension
-from setuptools.command.build_ext import build_ext
from setuptools import find_packages
from setuptools import setup
+from setuptools.command.build_ext import build_ext
class optional_build_ext(build_ext):
diff --git a/src/zope/security/__init__.py b/src/zope/security/__init__.py
index d6f39f4..ca44b1f 100644
--- a/src/zope/security/__init__.py
+++ b/src/zope/security/__init__.py
@@ -14,10 +14,10 @@
"""Base security system
"""
-from zope.security.management import checkPermission
-from zope.security.checker import canWrite, canAccess
-
# We need the injection of DecoratedSecurityCheckerDescriptor into
# zope.location's LocationProxy as soon someone uses security proxies by
# importing zope.security.proxy:
import zope.security.decorator
+from zope.security.checker import canAccess
+from zope.security.checker import canWrite
+from zope.security.management import checkPermission
diff --git a/src/zope/security/_compat.py b/src/zope/security/_compat.py
index 6f7dc0a..99f0d75 100644
--- a/src/zope/security/_compat.py
+++ b/src/zope/security/_compat.py
@@ -13,11 +13,12 @@
##############################################################################
""" Python 2 / 3 compatibility
"""
-import platform
import os
+import platform
import sys
import types
+
py_impl = getattr(platform, 'python_implementation', lambda: None)
PYPY = py_impl() == 'PyPy'
PURE_PYTHON = os.environ.get('PURE_PYTHON', PYPY)
diff --git a/src/zope/security/_definitions.py b/src/zope/security/_definitions.py
index 070a345..f1d0176 100644
--- a/src/zope/security/_definitions.py
+++ b/src/zope/security/_definitions.py
@@ -14,10 +14,12 @@
"""Common definitions to avoid circular imports
"""
import threading
+
import zope.interface
from zope.security import interfaces
+
thread_local = threading.local()
diff --git a/src/zope/security/adapter.py b/src/zope/security/adapter.py
index c8c44b6..0f5bc84 100644
--- a/src/zope/security/adapter.py
+++ b/src/zope/security/adapter.py
@@ -14,9 +14,11 @@
"""Support for taking security into account in adaptation
"""
+from zope.location import ILocation
+from zope.location import LocationProxy
+
from zope.security.checker import ProxyFactory
from zope.security.proxy import removeSecurityProxy
-from zope.location import ILocation, LocationProxy
def assertLocation(adapter, parent):
diff --git a/src/zope/security/checker.py b/src/zope/security/checker.py
index fbc0b2a..ae8ab5a 100644
--- a/src/zope/security/checker.py
+++ b/src/zope/security/checker.py
@@ -58,36 +58,37 @@ API
.. autofunction:: selectChecker
"""
import abc
+import datetime
+import decimal
import os
import sys
import types
-import datetime
-import decimal
import weakref
-from zope.i18nmessageid import Message
+import zope.interface.declarations
import zope.interface.interface
import zope.interface.interfaces
-import zope.interface.declarations
+from zope.i18nmessageid import Message
from zope.interface import Interface
from zope.interface import directlyProvides
from zope.interface import implementer
from zope.interface.interfaces import IDeclaration
from zope.interface.interfaces import IInterface
+from zope.security._compat import CLASS_TYPES
+from zope.security._compat import PURE_PYTHON
+from zope.security._compat import PYTHON2
+from zope.security._compat import implementer_if_needed
+from zope.security._definitions import thread_local
+from zope.security.interfaces import ForbiddenAttribute
from zope.security.interfaces import IChecker
from zope.security.interfaces import INameBasedChecker
from zope.security.interfaces import ISecurityProxyFactory
-from zope.security.interfaces import ForbiddenAttribute
from zope.security.interfaces import Unauthorized
-from zope.security._definitions import thread_local
-from zope.security._compat import CLASS_TYPES
-from zope.security._compat import PYTHON2
-from zope.security._compat import PURE_PYTHON
-from zope.security._compat import implementer_if_needed
from zope.security.proxy import Proxy
from zope.security.proxy import getChecker
+
try:
from zope.exceptions import DuplicationError
except ImportError: # pragma: no cover
@@ -136,6 +137,8 @@ directlyProvides(ProxyFactory, ISecurityProxyFactory)
# This import represents part of the API for the proxy module
from . import proxy # noqa: E402 module level import not at top
+
+
proxy.ProxyFactory = ProxyFactory
@@ -514,10 +517,12 @@ if _c_available: # pragma: no cover
_c_available = False
if _c_available: # pragma: no cover
- from zope.security._zope_security_checker import _checkers, selectChecker
- from zope.security._zope_security_checker import NoProxy, Checker
- from zope.security._zope_security_checker import _defaultChecker
+ from zope.security._zope_security_checker import Checker
+ from zope.security._zope_security_checker import NoProxy
from zope.security._zope_security_checker import _available_by_default
+ from zope.security._zope_security_checker import _checkers
+ from zope.security._zope_security_checker import _defaultChecker
+ from zope.security._zope_security_checker import selectChecker
zope.interface.classImplements(Checker, INameBasedChecker)
@@ -940,6 +945,7 @@ def _fixup_odict():
# uses view classes) and CPython 3.5+ (implemented in C). These should
# all be iterable.
from collections import OrderedDict
+
# The `_fixup_dictlike` is detected as undefined because it is deleted
# later on but this function is called beforehand:
_fixup_dictlike(OrderedDict) # noqa: F821 undefined name '_fixup_dictlike'
@@ -992,8 +998,8 @@ def _fixup_zope_interface():
# checking process at all, much like BTrees, so NoProxy is necessary for
# compatibility. On Python 3, prior to this, iteration was simply not
# allowed.
- from zope.interface import providedBy
from zope.interface import alsoProvides
+ from zope.interface import providedBy
class I1(Interface):
pass
diff --git a/src/zope/security/decorator.py b/src/zope/security/decorator.py
index 0f9f2f4..18751d8 100644
--- a/src/zope/security/decorator.py
+++ b/src/zope/security/decorator.py
@@ -17,8 +17,8 @@ Decorators are proxies that are mostly transparent but that may provide
additional features.
"""
-from zope.proxy import getProxiedObject
from zope.proxy import ProxyBase
+from zope.proxy import getProxiedObject
from zope.proxy.decorator import SpecificationDecoratorBase
from zope.security.checker import CombinedChecker
@@ -75,5 +75,7 @@ class DecoratorBase(SpecificationDecoratorBase, SecurityCheckerDecoratorBase):
# This is the only sane place we found for doing it: it kicks in as soon
# as someone starts using security proxies.
import zope.location.location # noqa: E402 module level import not at top
+
+
zope.location.location.LocationProxy.__Security_checker__ = (
DecoratedSecurityCheckerDescriptor())
diff --git a/src/zope/security/examples/sandbox.py b/src/zope/security/examples/sandbox.py
index eb6499f..70dd5a8 100644
--- a/src/zope/security/examples/sandbox.py
+++ b/src/zope/security/examples/sandbox.py
@@ -13,10 +13,11 @@
##############################################################################
"""A small sandbox application.
"""
-import time
import random
+import time
-from zope.interface import Interface, implementer
+from zope.interface import Interface
+from zope.interface import implementer
class IAgent(Interface):
diff --git a/src/zope/security/examples/sandbox_security.py b/src/zope/security/examples/sandbox_security.py
index 5115ca7..d102c5f 100644
--- a/src/zope/security/examples/sandbox_security.py
+++ b/src/zope/security/examples/sandbox_security.py
@@ -27,10 +27,13 @@ secure mode. There are several steps that are taken to set up the security
5. proxy wrap as necessary
"""
import sandbox
-from zope.security.interfaces import IParticipation
-from zope.security import checker, management, simplepolicies
from zope.interface import implementer
+from zope.security import checker
+from zope.security import management
+from zope.security import simplepolicies
+from zope.security.interfaces import IParticipation
+
# Define all permissions that will be available
NotAllowed = 'Not Allowed'
diff --git a/src/zope/security/i18n.py b/src/zope/security/i18n.py
index fc47f88..0db0317 100644
--- a/src/zope/security/i18n.py
+++ b/src/zope/security/i18n.py
@@ -17,4 +17,6 @@ __docformat__ = 'restructuredtext'
# import this as _ to create i18n messages in the zope domain
from zope.i18nmessageid import MessageFactory
+
+
ZopeMessageFactory = MessageFactory('zope')
diff --git a/src/zope/security/interfaces.py b/src/zope/security/interfaces.py
index 890e6fc..c1cb155 100644
--- a/src/zope/security/interfaces.py
+++ b/src/zope/security/interfaces.py
@@ -51,11 +51,18 @@ means the name of the permission, or the special object
:class:`zope.security.checker.CheckerPublic`.
"""
-from zope.interface import Interface, Attribute, implementer
-from zope.interface.common.interfaces import IException, IAttributeError
-from zope.schema import Text, TextLine, NativeStringLine
+from zope.interface import Attribute
+from zope.interface import Interface
+from zope.interface import implementer
+from zope.interface.common.interfaces import IAttributeError
+from zope.interface.common.interfaces import IException
+from zope.schema import NativeStringLine
+from zope.schema import Text
+from zope.schema import TextLine
+
from zope.security.i18n import ZopeMessageFactory as _
+
#: The name (id) of the registered :class:`IPermission` utility that signifies
#: that the protected attribute is public.
#:
diff --git a/src/zope/security/management.py b/src/zope/security/management.py
index 2daf0ce..bf79f28 100644
--- a/src/zope/security/management.py
+++ b/src/zope/security/management.py
@@ -20,13 +20,13 @@ Note that this module itself provides those interfaces.
from zope.interface import moduleProvides
+from zope.security._definitions import system_user
+from zope.security._definitions import thread_local
from zope.security.checker import CheckerPublic
from zope.security.interfaces import IInteractionManagement
from zope.security.interfaces import ISecurityManagement
from zope.security.interfaces import NoInteraction
from zope.security.simplepolicies import ParanoidSecurityPolicy
-from zope.security._definitions import thread_local
-from zope.security._definitions import system_user
__all__ = [
diff --git a/src/zope/security/metaconfigure.py b/src/zope/security/metaconfigure.py
index ee437da..b09c725 100644
--- a/src/zope/security/metaconfigure.py
+++ b/src/zope/security/metaconfigure.py
@@ -17,22 +17,22 @@ __docformat__ = 'restructuredtext'
from types import ModuleType
-from zope.component.interfaces import IFactory
from zope.component.factory import Factory
from zope.component.interface import provideInterface
+from zope.component.interfaces import IFactory
from zope.component.zcml import utility
+from zope.configuration.exceptions import ConfigurationError
from zope.interface import classImplements
from zope.schema.interfaces import IField
-from zope.configuration.exceptions import ConfigurationError
from zope.security.checker import Checker
from zope.security.checker import CheckerPublic
from zope.security.checker import defineChecker
from zope.security.checker import moduleChecker
+from zope.security.interfaces import PUBLIC_PERMISSION_NAME as PublicPermission
from zope.security.protectclass import protectLikeUnto
from zope.security.protectclass import protectName
from zope.security.protectclass import protectSetAttribute
-from zope.security.interfaces import PUBLIC_PERMISSION_NAME as PublicPermission
def dottedName(klass):
diff --git a/src/zope/security/metadirectives.py b/src/zope/security/metadirectives.py
index 3e85cfd..c7e82e2 100644
--- a/src/zope/security/metadirectives.py
+++ b/src/zope/security/metadirectives.py
@@ -16,10 +16,12 @@
__docformat__ = 'restructuredtext'
import zope.configuration.fields
-from zope.configuration.fields import GlobalObject, GlobalInterface
-from zope.configuration.fields import Tokens, PythonIdentifier
import zope.interface
import zope.schema
+from zope.configuration.fields import GlobalInterface
+from zope.configuration.fields import GlobalObject
+from zope.configuration.fields import PythonIdentifier
+from zope.configuration.fields import Tokens
from zope.interface import Interface
import zope.security.zcml
diff --git a/src/zope/security/permission.py b/src/zope/security/permission.py
index da0dd40..8fc2837 100644
--- a/src/zope/security/permission.py
+++ b/src/zope/security/permission.py
@@ -26,8 +26,8 @@ from zope.schema.vocabulary import SimpleTerm
from zope.schema.vocabulary import SimpleVocabulary
from zope.security.checker import CheckerPublic
-from zope.security.interfaces import IPermission
from zope.security.interfaces import PUBLIC_PERMISSION_NAME as zope_Public
+from zope.security.interfaces import IPermission
@implementer(IPermission)
diff --git a/src/zope/security/proxy.py b/src/zope/security/proxy.py
index 1f4281c..52a7189 100644
--- a/src/zope/security/proxy.py
+++ b/src/zope/security/proxy.py
@@ -20,8 +20,9 @@ import functools
import sys
from zope.proxy import PyProxyBase
-from zope.security._compat import PURE_PYTHON
+
from zope.security._compat import _BUILTINS
+from zope.security._compat import PURE_PYTHON
def _check_name(meth, wrap_result=True):
diff --git a/src/zope/security/simplepolicies.py b/src/zope/security/simplepolicies.py
index d1617ce..feaa104 100644
--- a/src/zope/security/simplepolicies.py
+++ b/src/zope/security/simplepolicies.py
@@ -21,10 +21,10 @@ that the classes themselves are implementations of
"""
import zope.interface
+from zope.security._definitions import system_user
from zope.security.checker import CheckerPublic
from zope.security.interfaces import IInteraction
from zope.security.interfaces import ISecurityPolicy
-from zope.security._definitions import system_user
@zope.interface.implementer(IInteraction)
diff --git a/src/zope/security/testing.py b/src/zope/security/testing.py
index 792813f..be551ce 100644
--- a/src/zope/security/testing.py
+++ b/src/zope/security/testing.py
@@ -19,15 +19,16 @@ This module provides some helper/stub objects for setting up interactions.
import contextlib
import re
-from zope import interface, component
+from zope.testing import renormalizing
-from zope.security import interfaces
-from zope.security.permission import Permission
import zope.security.management
+from zope import component
+from zope import interface
+from zope.security import interfaces
from zope.security._compat import PYTHON2 as PY2
from zope.security.interfaces import PUBLIC_PERMISSION_NAME
+from zope.security.permission import Permission
-from zope.testing import renormalizing
_str_prefix = 'b' if PY2 else 'u'
diff --git a/src/zope/security/tests/test_adapter.py b/src/zope/security/tests/test_adapter.py
index 2d68b0e..20a3975 100644
--- a/src/zope/security/tests/test_adapter.py
+++ b/src/zope/security/tests/test_adapter.py
@@ -19,6 +19,7 @@ from zope.location import ILocation
from zope.location import LocationProxy
from zope.proxy import getProxiedObject
+
# pylint:disable=attribute-defined-outside-init,protected-access
@@ -217,8 +218,8 @@ class LocatingTrustedAdapterFactoryTests(unittest.TestCase):
self.assertEqual(after, before) # no added attrs
def test__call__w_ILocation_w_spacesuit(self):
- from zope.security.proxy import getObject
from zope.security.proxy import ProxyFactory
+ from zope.security.proxy import getObject
from zope.security.proxy import removeSecurityProxy
factory = self._makeFactory()
factory.__parent__ = factory.__name__ = None
@@ -244,8 +245,8 @@ class LocatingTrustedAdapterFactoryTests(unittest.TestCase):
self.assertEqual(after, before) # no added attrs
def test__call__w_ILocation_w_spacesuit_w_existing_parent(self):
- from zope.security.proxy import getObject
from zope.security.proxy import ProxyFactory
+ from zope.security.proxy import getObject
from zope.security.proxy import removeSecurityProxy
factory = self._makeFactory()
factory.__name__ = None
diff --git a/src/zope/security/tests/test_checker.py b/src/zope/security/tests/test_checker.py
index a8b3990..a102ad6 100644
--- a/src/zope/security/tests/test_checker.py
+++ b/src/zope/security/tests/test_checker.py
@@ -16,9 +16,9 @@
import unittest
from zope.security import checker as sec_checker
-from zope.security.tests import QuietWatchingChecker
-from zope.security._compat import PYTHON3 as PY3
from zope.security._compat import PYTHON2 as PY2
+from zope.security._compat import PYTHON3 as PY3
+from zope.security.tests import QuietWatchingChecker
# pylint:disable=protected-access,inherit-non-class,no-method-argument,old-style-class
@@ -31,7 +31,8 @@ class Test_ProxyFactory(unittest.TestCase):
return ProxyFactory(obj, checker)
def test_w_already_proxied_no_checker(self):
- from zope.security.proxy import Proxy, getChecker
+ from zope.security.proxy import Proxy
+ from zope.security.proxy import getChecker
obj = object()
def _check(*x):
@@ -42,7 +43,8 @@ class Test_ProxyFactory(unittest.TestCase):
self.assertIs(getChecker(returned), _check)
def test_w_already_proxied_same_checker(self):
- from zope.security.proxy import Proxy, getChecker
+ from zope.security.proxy import Proxy
+ from zope.security.proxy import getChecker
obj = object()
def _check(*x):
@@ -80,7 +82,8 @@ class Test_ProxyFactory(unittest.TestCase):
self.assertIs(returned, obj)
def test_no_checker_w_dunder(self):
- from zope.security.proxy import getChecker, getObject
+ from zope.security.proxy import getChecker
+ from zope.security.proxy import getObject
_check = object() # don't use a func, due to bound method
class _WithChecker(object):
@@ -95,7 +98,8 @@ class Test_ProxyFactory(unittest.TestCase):
from zope.security.checker import Checker
from zope.security.checker import _checkers
from zope.security.checker import _clear
- from zope.security.proxy import getChecker, getObject
+ from zope.security.proxy import getChecker
+ from zope.security.proxy import getObject
class _Obj(object):
pass
@@ -221,11 +225,13 @@ class CheckerTestsBase(QuietWatchingChecker):
def test_class_conforms_to_IChecker(self):
from zope.interface.verify import verifyClass
+
from zope.security.interfaces import IChecker
verifyClass(IChecker, self._getTargetClass())
def test_instance_conforms_to_IChecker(self):
from zope.interface.verify import verifyObject
+
from zope.security.interfaces import IChecker
verifyObject(IChecker, self._makeOne())
@@ -290,8 +296,8 @@ class CheckerTestsBase(QuietWatchingChecker):
del thread_local.interaction
def test_check_setattr_w_interaction_denies(self):
- from zope.security.interfaces import Unauthorized
from zope.security._definitions import thread_local
+ from zope.security.interfaces import Unauthorized
class _Interaction(object):
def checkPermission(self, obj, perm):
@@ -338,8 +344,8 @@ class CheckerTestsBase(QuietWatchingChecker):
del thread_local.interaction
def test_check_non_public_w_interaction_denies(self):
- from zope.security.interfaces import Unauthorized
from zope.security._definitions import thread_local
+ from zope.security.interfaces import Unauthorized
class _Interaction(object):
def checkPermission(self, obj, perm):
@@ -354,7 +360,8 @@ class CheckerTestsBase(QuietWatchingChecker):
del thread_local.interaction
def test_proxy_already_proxied(self):
- from zope.security.proxy import Proxy, getChecker
+ from zope.security.proxy import Proxy
+ from zope.security.proxy import getChecker
obj = object()
def _check(*x):
@@ -372,7 +379,8 @@ class CheckerTestsBase(QuietWatchingChecker):
self.assertIs(returned, obj)
def test_proxy_no_checker_w_dunder(self):
- from zope.security.proxy import getChecker, getObject
+ from zope.security.proxy import getChecker
+ from zope.security.proxy import getObject
_check = object() # don't use a func, due to bound method
class _WithChecker(object):
@@ -388,7 +396,8 @@ class CheckerTestsBase(QuietWatchingChecker):
from zope.security.checker import Checker
from zope.security.checker import _checkers
from zope.security.checker import _clear
- from zope.security.proxy import getChecker, getObject
+ from zope.security.proxy import getChecker
+ from zope.security.proxy import getObject
class _Obj(object):
pass
@@ -408,11 +417,12 @@ class CheckerTestsBase(QuietWatchingChecker):
_clear()
def test_Decimal_operations(self):
- from zope.security.proxy import Proxy
- from zope.security.checker import _default_checkers
from decimal import Decimal
from decimal import DecimalTuple
+ from zope.security.checker import _default_checkers
+ from zope.security.proxy import Proxy
+
checker = _default_checkers[Decimal]
value = Decimal('1.1')
@@ -450,8 +460,8 @@ class CheckerTestsBase(QuietWatchingChecker):
self.assertEqual(proxy.quantize(Decimal('1.10')), Decimal('1.10'))
def _check_iteration_of_dict_like(self, dict_like):
- from zope.security.proxy import Proxy
from zope.security.checker import _default_checkers
+ from zope.security.proxy import Proxy
checker = _default_checkers[dict]
@@ -492,12 +502,12 @@ class CheckerTestsBase(QuietWatchingChecker):
def test_iteration_of_interface_implementedBy(self):
# Iteration of implementedBy is allowed by default
# See https://github.com/zopefoundation/zope.security/issues/27
- from zope.security.proxy import Proxy
- from zope.security.checker import Checker
-
- from zope.interface import providedBy
- from zope.interface import implementer
from zope.interface import Interface
+ from zope.interface import implementer
+ from zope.interface import providedBy
+
+ from zope.security.checker import Checker
+ from zope.security.proxy import Proxy
class I1(Interface):
pass
@@ -521,13 +531,13 @@ class CheckerTestsBase(QuietWatchingChecker):
def test_iteration_of_interface_providesBy(self):
# Iteration of zope.interface.Provides is allowed by default
# See https://github.com/zopefoundation/zope.security/issues/27
- from zope.security.proxy import Proxy
- from zope.security.checker import Checker
-
- from zope.interface import providedBy
+ from zope.interface import Interface
from zope.interface import alsoProvides
from zope.interface import implementer
- from zope.interface import Interface
+ from zope.interface import providedBy
+
+ from zope.security.checker import Checker
+ from zope.security.proxy import Proxy
class I1(Interface):
pass
@@ -558,8 +568,8 @@ class CheckerTestsBase(QuietWatchingChecker):
# __length_hint__ method to be defined on iterators. It should
# be allowed by default. See
# https://github.com/zopefoundation/zope.security/issues/27
- from zope.security.proxy import Proxy
from zope.security.checker import _iteratorChecker
+ from zope.security.proxy import Proxy
class Iter(object):
__Security_checker__ = _iteratorChecker
@@ -607,10 +617,10 @@ class CheckerTestsBase(QuietWatchingChecker):
def test_iteration_of_itertools_groupby(self):
# itertools.groupby is a custom iterator type.
# The groups it returns are also custom.
- from zope.security.checker import ProxyFactory
-
from itertools import groupby
+ from zope.security.checker import ProxyFactory
+
group = groupby([0])
list_group = list(group)
self.assertEqual(1, len(list_group))
@@ -732,6 +742,7 @@ class Test_NamesChecker(unittest.TestCase):
def test_empty_names_no_kw(self):
from zope.interface.verify import verifyObject
+
from zope.security.interfaces import IChecker
checker = self._callFUT()
verifyObject(IChecker, checker)
@@ -780,6 +791,7 @@ class Test_InterfaceChecker(unittest.TestCase):
def test_simple_iface_wo_kw(self):
from zope.interface import Attribute
from zope.interface import Interface
+
from zope.security.checker import CheckerPublic
class IFoo(Interface):
@@ -801,6 +813,7 @@ class Test_InterfaceChecker(unittest.TestCase):
def test_simple_iface_w_kw(self):
from zope.interface import Attribute
from zope.interface import Interface
+
from zope.security.checker import CheckerPublic
class IFoo(Interface):
@@ -814,6 +827,7 @@ class Test_InterfaceChecker(unittest.TestCase):
def test_derived_iface(self):
from zope.interface import Attribute
from zope.interface import Interface
+
from zope.security.checker import CheckerPublic
class IFoo(Interface):
@@ -829,6 +843,7 @@ class Test_InterfaceChecker(unittest.TestCase):
def test_w_clash(self):
from zope.interface import Attribute
from zope.interface import Interface
+
from zope.security.checker import DuplicationError
class IFoo(Interface):
@@ -847,6 +862,7 @@ class Test_MultiChecker(unittest.TestCase):
def test_empty(self):
from zope.interface.verify import verifyObject
+
from zope.security.interfaces import IChecker
checker = self._callFUT([])
verifyObject(IChecker, checker)
@@ -874,6 +890,7 @@ class Test_MultiChecker(unittest.TestCase):
def test_w_spec_as_names_and_iface(self):
from zope.interface import Attribute
from zope.interface import Interface
+
from zope.security.checker import CheckerPublic
class IFoo(Interface):
@@ -889,6 +906,7 @@ class Test_MultiChecker(unittest.TestCase):
def test_w_spec_as_names_and_iface_clash(self):
from zope.interface import Attribute
from zope.interface import Interface
+
from zope.security.checker import CheckerPublic
from zope.security.checker import DuplicationError
@@ -938,6 +956,7 @@ class _SelectCheckerBase(object):
def test_w_basic_types_NoProxy(self):
import datetime
+
from zope.i18nmessageid import Message
msg = Message('msg')
for obj in [object(),
@@ -1018,9 +1037,10 @@ class _SelectCheckerBase(object):
self.assertIs(self._callFUT(Foo()), checker)
def test_itertools_checkers(self):
- from zope.security.checker import _iteratorChecker
import itertools
+ from zope.security.checker import _iteratorChecker
+
def pred(x):
return x
iterable = (1, 2, 3)
@@ -1139,6 +1159,7 @@ class Test_defineChecker(unittest.TestCase):
def test_w_duplicate(self):
from zope.exceptions import DuplicationError
+
from zope.security.checker import _checkers
class Foo(object):
@@ -1158,6 +1179,7 @@ class Test_defineChecker(unittest.TestCase):
def test_w_module(self):
import zope.interface
+
from zope.security.checker import _checkers
checker = object()
self._callFUT(zope.interface, checker)
@@ -1226,17 +1248,19 @@ class TestCombinedChecker(QuietWatchingChecker,
def test_class_conforms_to_IChecker(self):
from zope.interface.verify import verifyClass
+
from zope.security.interfaces import IChecker
verifyClass(IChecker, self._getTargetClass())
def test_instance_conforms_to_IChecker(self):
from zope.interface.verify import verifyObject
+
from zope.security.interfaces import IChecker
verifyObject(IChecker, self._makeOne())
def test_check_lhs_ok_rhs_not_called(self):
- from zope.security.checker import CheckerPublic
from zope.security.checker import Checker
+ from zope.security.checker import CheckerPublic
class _NeverCalled(Checker):
def check(self, object, name): # pylint:disable=redefined-builtin
@@ -1248,8 +1272,8 @@ class TestCombinedChecker(QuietWatchingChecker,
combined.check(object(), 'name') # no raise
def test_check_lhs_unauth_rhs_ok(self):
- from zope.security.checker import CheckerPublic
from zope.security._definitions import thread_local
+ from zope.security.checker import CheckerPublic
class _Interaction(object):
def checkPermission(self, obj, perm):
@@ -1265,8 +1289,8 @@ class TestCombinedChecker(QuietWatchingChecker,
del thread_local.interaction
def test_check_lhs_unauth_rhs_forbidden(self):
- from zope.security.interfaces import Unauthorized
from zope.security._definitions import thread_local
+ from zope.security.interfaces import Unauthorized
class _Interaction(object):
def checkPermission(self, obj, perm):
@@ -1283,8 +1307,8 @@ class TestCombinedChecker(QuietWatchingChecker,
del thread_local.interaction
def test_check_lhs_unauth_rhs_unauth(self):
- from zope.security.interfaces import Unauthorized
from zope.security._definitions import thread_local
+ from zope.security.interfaces import Unauthorized
class _Interaction(object):
def checkPermission(self, obj, perm):
@@ -1318,8 +1342,8 @@ class TestCombinedChecker(QuietWatchingChecker,
combined.check, object(), 'name')
def test_check_lhs_forbidden_rhs_unauth(self):
- from zope.security.interfaces import Unauthorized
from zope.security._definitions import thread_local
+ from zope.security.interfaces import Unauthorized
class _Interaction(object):
def checkPermission(self, obj, perm):
@@ -1336,8 +1360,8 @@ class TestCombinedChecker(QuietWatchingChecker,
del thread_local.interaction
def test_check_setattr_lhs_ok_rhs_not_called(self):
- from zope.security.checker import CheckerPublic
from zope.security.checker import Checker
+ from zope.security.checker import CheckerPublic
class _NeverCalled(Checker):
def check_setattr(self, object, name):
@@ -1349,8 +1373,8 @@ class TestCombinedChecker(QuietWatchingChecker,
combined.check_setattr(object(), 'name') # no raise
def test_check_setattr_lhs_unauth_rhs_ok(self):
- from zope.security.checker import CheckerPublic
from zope.security._definitions import thread_local
+ from zope.security.checker import CheckerPublic
class _Interaction(object):
def checkPermission(self, obj, perm):
@@ -1366,8 +1390,8 @@ class TestCombinedChecker(QuietWatchingChecker,
del thread_local.interaction
def test_check_setattr_lhs_unauth_rhs_forbidden(self):
- from zope.security.interfaces import Unauthorized
from zope.security._definitions import thread_local
+ from zope.security.interfaces import Unauthorized
class _Interaction(object):
def checkPermission(self, obj, perm):
@@ -1384,8 +1408,8 @@ class TestCombinedChecker(QuietWatchingChecker,
del thread_local.interaction
def test_check_setattr_lhs_unauth_rhs_unauth(self):
- from zope.security.interfaces import Unauthorized
from zope.security._definitions import thread_local
+ from zope.security.interfaces import Unauthorized
class _Interaction(object):
def checkPermission(self, obj, perm):
@@ -1419,8 +1443,8 @@ class TestCombinedChecker(QuietWatchingChecker,
combined.check_setattr, object(), 'name')
def test_check_setattr_lhs_forbidden_rhs_unauth(self):
- from zope.security.interfaces import Unauthorized
from zope.security._definitions import thread_local
+ from zope.security.interfaces import Unauthorized
class _Interaction(object):
def checkPermission(self, obj, perm):
@@ -1662,6 +1686,7 @@ class Test_moduleChecker(unittest.TestCase):
def test_hit(self):
from zope.interface import verify
+
from zope.security.checker import _checkers
checker = _checkers[verify] = object()
self.assertIs(self._callFUT(verify), checker)
@@ -1700,6 +1725,7 @@ class TestSecurityPolicy(QuietWatchingChecker,
def _makeSecurityPolicy(self):
from zope.interface import implementer
+
from zope.security.interfaces import ISecurityPolicy
@implementer(ISecurityPolicy)
@@ -1709,8 +1735,8 @@ class TestSecurityPolicy(QuietWatchingChecker,
return SecurityPolicy
def test_defineChecker_oldstyle_class(self):
- from zope.security.checker import defineChecker
from zope.security.checker import NamesChecker
+ from zope.security.checker import defineChecker
old_type = self._get_old_class_type()
class ClassicClass:
@@ -1720,8 +1746,8 @@ class TestSecurityPolicy(QuietWatchingChecker,
defineChecker(ClassicClass, NamesChecker())
def test_defineChecker_newstyle_class(self):
- from zope.security.checker import defineChecker
from zope.security.checker import NamesChecker
+ from zope.security.checker import defineChecker
class NewStyleClass(object):
pass
@@ -1730,13 +1756,13 @@ class TestSecurityPolicy(QuietWatchingChecker,
def test_defineChecker_module(self):
import zope.security
- from zope.security.checker import defineChecker
from zope.security.checker import NamesChecker
+ from zope.security.checker import defineChecker
defineChecker(zope.security, NamesChecker())
def test_defineChecker_error(self):
- from zope.security.checker import defineChecker
from zope.security.checker import NamesChecker
+ from zope.security.checker import defineChecker
not_a_type = object()
self.assertRaises(TypeError,
defineChecker, not_a_type, NamesChecker())
@@ -1783,10 +1809,10 @@ class TestSecurityPolicy(QuietWatchingChecker,
# - allow and disallow by permission
def test_check_getattr(self):
# pylint:disable=attribute-defined-outside-init
+ from zope.security.checker import CheckerPublic
+ from zope.security.checker import NamesChecker
from zope.security.interfaces import Forbidden
from zope.security.interfaces import Unauthorized
- from zope.security.checker import NamesChecker
- from zope.security.checker import CheckerPublic
OldInst, NewInst = self._makeClasses()
@@ -1834,10 +1860,10 @@ class TestSecurityPolicy(QuietWatchingChecker,
def test_check_setattr(self):
# pylint:disable=attribute-defined-outside-init
- from zope.security.interfaces import Forbidden
- from zope.security.interfaces import Unauthorized
from zope.security.checker import Checker
from zope.security.checker import CheckerPublic
+ from zope.security.interfaces import Forbidden
+ from zope.security.interfaces import Unauthorized
OldInst, NewInst = self._makeClasses()
@@ -1874,11 +1900,11 @@ class TestSecurityPolicy(QuietWatchingChecker,
self.assertRaises(Forbidden, checker.check_setattr, inst, 'f')
def test_proxy(self):
- from zope.security.proxy import getChecker
- from zope.security.proxy import removeSecurityProxy
from zope.security.checker import BasicTypes_examples
from zope.security.checker import CheckerPublic
from zope.security.checker import NamesChecker
+ from zope.security.proxy import getChecker
+ from zope.security.proxy import removeSecurityProxy
OldInst, NewInst = self._makeClasses()
@@ -1917,9 +1943,10 @@ class TestSecurityPolicy(QuietWatchingChecker,
def testLayeredProxies(self):
# Test that a Proxy will not be re-proxied.
- from zope.security.proxy import Proxy, getObject
from zope.security.checker import Checker
from zope.security.checker import NamesChecker
+ from zope.security.proxy import Proxy
+ from zope.security.proxy import getObject
class Base:
__Security_checker__ = NamesChecker(['__Security_checker__'])
@@ -2007,8 +2034,8 @@ class TestSecurityPolicy(QuietWatchingChecker,
self.assertEqual(checker.check(C, '__parent__'), None)
def test_setattr(self):
- from zope.security.interfaces import Forbidden
from zope.security.checker import NamesChecker
+ from zope.security.interfaces import Forbidden
OldInst, NewInst = self._makeClasses()
@@ -2025,12 +2052,12 @@ class TestSecurityPolicy(QuietWatchingChecker,
def test_ProxyFactory(self):
# pylint:disable=attribute-defined-outside-init
- from zope.security.checker import _defaultChecker
- from zope.security.checker import defineChecker
from zope.security.checker import NamesChecker
from zope.security.checker import ProxyFactory
- from zope.security.proxy import getChecker
+ from zope.security.checker import _defaultChecker
+ from zope.security.checker import defineChecker
from zope.security.proxy import Proxy
+ from zope.security.proxy import getChecker
class SomeClass(object):
pass
@@ -2061,8 +2088,8 @@ class TestSecurityPolicy(QuietWatchingChecker,
self.assertIs(getChecker(proxy), specific_checker)
def test_define_and_undefineChecker(self):
- from zope.security.checker import defineChecker
from zope.security.checker import NamesChecker
+ from zope.security.checker import defineChecker
from zope.security.checker import undefineChecker
class SomeClass(object):
@@ -2070,7 +2097,8 @@ class TestSecurityPolicy(QuietWatchingChecker,
obj = SomeClass()
checker = NamesChecker()
- from zope.security.checker import _defaultChecker, selectChecker
+ from zope.security.checker import _defaultChecker
+ from zope.security.checker import selectChecker
self.assertIs(selectChecker(obj), _defaultChecker)
defineChecker(SomeClass, checker)
self.assertIs(selectChecker(obj), checker)
@@ -2078,8 +2106,8 @@ class TestSecurityPolicy(QuietWatchingChecker,
self.assertIs(selectChecker(obj), _defaultChecker)
def test_ProxyFactory_using_proxy(self):
- from zope.security.checker import ProxyFactory
from zope.security.checker import NamesChecker
+ from zope.security.checker import ProxyFactory
class SomeClass(object):
pass
@@ -2109,11 +2137,11 @@ class TestSecurityPolicy(QuietWatchingChecker,
# and call access to methods.
# For example, consider this humble pair of class and object.
- from zope.security.interfaces import Forbidden
from zope.security.checker import Checker
from zope.security.checker import canAccess
from zope.security.checker import canWrite
from zope.security.checker import defineChecker
+ from zope.security.interfaces import Forbidden
class SomeClass(object):
pass
@@ -2185,13 +2213,14 @@ class TestCheckerPublic(unittest.TestCase):
def test_that_pickling_CheckerPublic_retains_identity(self):
import pickle
+
from zope.security.checker import CheckerPublic
self.assertIs(pickle.loads(pickle.dumps(CheckerPublic)),
CheckerPublic)
def test_that_CheckerPublic_identity_works_even_when_proxied(self):
- from zope.security.checker import ProxyFactory
from zope.security.checker import CheckerPublic
+ from zope.security.checker import ProxyFactory
self.assertIs(ProxyFactory(CheckerPublic), CheckerPublic)
@@ -2224,6 +2253,7 @@ class TestMixinDecoratedChecker(unittest.TestCase):
def _makeSecurityPolicy(self):
from zope.interface import implementer
+
from zope.security.interfaces import ISecurityPolicy
@implementer(ISecurityPolicy)
@@ -2297,8 +2327,8 @@ class TestCombinedCheckerMixin(QuietWatchingChecker,
super(TestCombinedCheckerMixin, self).tearDown()
def test_checking(self):
- from zope.security.interfaces import Unauthorized
from zope.security.checker import CombinedChecker
+ from zope.security.interfaces import Unauthorized
cc = CombinedChecker(self.overridingChecker, self.originalChecker)
self.check_checking_impl(cc)
@@ -2319,6 +2349,7 @@ class TestCombinedCheckerMixin(QuietWatchingChecker,
def test_interface(self):
from zope.interface.verify import verifyObject
+
from zope.security.checker import CombinedChecker
from zope.security.interfaces import IChecker
dc = CombinedChecker(self.overridingChecker, self.originalChecker)
diff --git a/src/zope/security/tests/test_decorator.py b/src/zope/security/tests/test_decorator.py
index 285f7ef..756177a 100644
--- a/src/zope/security/tests/test_decorator.py
+++ b/src/zope/security/tests/test_decorator.py
@@ -14,6 +14,7 @@
"""Test zope.security.decorator
"""
import unittest
+
from zope.security.tests import QuietWatchingChecker
@@ -39,6 +40,7 @@ class DecoratedSecurityCheckerDescriptorTests(QuietWatchingChecker,
def test_neither_wrapper_nor_object_has_checker(self):
from zope.proxy import ProxyBase
+
from zope.security.checker import NoProxy
from zope.security.checker import defineChecker
@@ -57,6 +59,7 @@ class DecoratedSecurityCheckerDescriptorTests(QuietWatchingChecker,
def test_both_wrapper_and_object_have_checkers_not_security_proxied(self):
from zope.proxy import ProxyBase
+
from zope.security.checker import CombinedChecker
from zope.security.checker import NamesChecker
from zope.security.checker import defineChecker
@@ -88,6 +91,7 @@ class DecoratedSecurityCheckerDescriptorTests(QuietWatchingChecker,
def test_only_wrapper_has_checker(self):
from zope.proxy import ProxyBase
+
from zope.security.checker import NamesChecker
from zope.security.checker import NoProxy
from zope.security.checker import defineChecker
@@ -107,6 +111,7 @@ class DecoratedSecurityCheckerDescriptorTests(QuietWatchingChecker,
def test_only_object_has_checker(self):
from zope.proxy import ProxyBase
+
from zope.security.checker import NamesChecker
from zope.security.checker import NoProxy
from zope.security.checker import defineChecker
@@ -126,6 +131,7 @@ class DecoratedSecurityCheckerDescriptorTests(QuietWatchingChecker,
def test_both_wrapper_and_object_have_checkers_security_proxied(self):
from zope.proxy import ProxyBase
+
from zope.security.checker import CombinedChecker
from zope.security.checker import NamesChecker
from zope.security.checker import defineChecker
@@ -152,6 +158,7 @@ class DecoratedSecurityCheckerDescriptorTests(QuietWatchingChecker,
def test_cannot_overwrite(self):
from zope.proxy import ProxyBase
+
from zope.security.checker import NoProxy
from zope.security.checker import defineChecker
diff --git a/src/zope/security/tests/test_location.py b/src/zope/security/tests/test_location.py
index 194fc52..a620605 100644
--- a/src/zope/security/tests/test_location.py
+++ b/src/zope/security/tests/test_location.py
@@ -16,6 +16,7 @@
import unittest
from zope.location.location import LocationProxy
+
from zope.security.tests import QuietWatchingChecker
@@ -23,8 +24,8 @@ class LocationSecurityProxyTests(QuietWatchingChecker,
unittest.TestCase):
def test_locationproxy_security(self):
- from zope.security.checker import defineChecker
from zope.security.checker import NamesChecker
+ from zope.security.checker import defineChecker
from zope.security.proxy import ProxyFactory
class Unlocated(object):
diff --git a/src/zope/security/tests/test_management.py b/src/zope/security/tests/test_management.py
index 78dd78d..6fb62cf7 100644
--- a/src/zope/security/tests/test_management.py
+++ b/src/zope/security/tests/test_management.py
@@ -32,16 +32,17 @@ class Test(unittest.TestCase):
def test_import(self):
from zope.interface.verify import verifyObject
+
from zope.security import management
- from zope.security.interfaces import ISecurityManagement
from zope.security.interfaces import IInteractionManagement
+ from zope.security.interfaces import ISecurityManagement
verifyObject(ISecurityManagement, management)
verifyObject(IInteractionManagement, management)
def test_securityPolicy(self):
- from zope.security.management import setSecurityPolicy
from zope.security.management import getSecurityPolicy
+ from zope.security.management import setSecurityPolicy
from zope.security.simplepolicies import PermissiveSecurityPolicy
policy = PermissiveSecurityPolicy
@@ -110,9 +111,9 @@ class Test(unittest.TestCase):
self.assertTrue(queryInteraction() is None)
def test_restoreInteraction_after_neither(self):
+ from zope.security._definitions import thread_local
from zope.security.management import queryInteraction
from zope.security.management import restoreInteraction
- from zope.security._definitions import thread_local
try:
del thread_local.interaction
except AttributeError:
@@ -125,17 +126,17 @@ class Test(unittest.TestCase):
self.assertTrue(queryInteraction() is None)
def test_checkPermission_w_no_interaction(self):
- from zope.security.management import checkPermission
from zope.security.interfaces import NoInteraction
+ from zope.security.management import checkPermission
permission = 'zope.Test'
obj = object()
self.assertRaises(NoInteraction, checkPermission, permission, obj)
def test_checkPermission_w_interaction(self):
from zope.security.management import checkPermission
- from zope.security.management import setSecurityPolicy
- from zope.security.management import queryInteraction
from zope.security.management import newInteraction
+ from zope.security.management import queryInteraction
+ from zope.security.management import setSecurityPolicy
permission = 'zope.Test'
obj = object()
@@ -155,8 +156,8 @@ class Test(unittest.TestCase):
def test_checkPermission_forbidden_policy(self):
from zope.security import checkPermission
from zope.security.checker import CheckerPublic
- from zope.security.management import setSecurityPolicy
from zope.security.management import newInteraction
+ from zope.security.management import setSecurityPolicy
obj = object()
@@ -172,6 +173,7 @@ class Test(unittest.TestCase):
def test_system_user(self):
from zope.interface.verify import verifyObject
+
from zope.security.interfaces import IPrincipal
from zope.security.interfaces import ISystemPrincipal
from zope.security.management import system_user
diff --git a/src/zope/security/tests/test_metaconfigure.py b/src/zope/security/tests/test_metaconfigure.py
index c8631e9..a446b72 100644
--- a/src/zope/security/tests/test_metaconfigure.py
+++ b/src/zope/security/tests/test_metaconfigure.py
@@ -14,6 +14,7 @@
"""Test ZCML directives
"""
import unittest
+
from zope.security.interfaces import PUBLIC_PERMISSION_NAME as zope_Public
@@ -132,6 +133,7 @@ class ClassDirectiveTests(unittest.TestCase):
from zope.component.interface import provideInterface
from zope.interface import Attribute
from zope.interface import Interface
+
from zope.security.protectclass import protectName
class IFoo(Interface):
@@ -158,6 +160,7 @@ class ClassDirectiveTests(unittest.TestCase):
from zope.component.interface import provideInterface
from zope.interface import Attribute
from zope.interface import Interface
+
from zope.security.protectclass import protectName
class IFoo(Interface):
@@ -221,8 +224,9 @@ class ClassDirectiveTests(unittest.TestCase):
def test_require_w_set_schema_normal_fields(self):
from zope.component.interface import provideInterface
- from zope.schema import Field
from zope.interface import Interface
+ from zope.schema import Field
+
from zope.security.protectclass import protectSetAttribute
class IFoo(Interface):
@@ -263,8 +267,8 @@ class ClassDirectiveTests(unittest.TestCase):
def test_require_w_set_schema_ignores_readonly_fields(self):
from zope.component.interface import provideInterface
- from zope.schema import Field
from zope.interface import Interface
+ from zope.schema import Field
class IFoo(Interface):
bar = Field(u"Bar", readonly=True)
@@ -287,6 +291,7 @@ class ClassDirectiveTests(unittest.TestCase):
from zope.component.interface import provideInterface
from zope.interface import Attribute
from zope.interface import Interface
+
from zope.security.protectclass import protectName
class IFoo(Interface):
@@ -315,6 +320,7 @@ class ClassDirectiveTests(unittest.TestCase):
from zope.component.interface import provideInterface
from zope.interface import Attribute
from zope.interface import Interface
+
from zope.security.protectclass import protectName
class IFoo(Interface):
@@ -368,8 +374,8 @@ class ClassDirectiveTests(unittest.TestCase):
self.assertEqual(directive(), ())
def test_factory_wo_explicit_id(self):
- from zope.component.interfaces import IFactory
from zope.component.interface import provideInterface
+ from zope.component.interfaces import IFactory
from zope.component.zcml import handler
context = DummyZCMLContext()
context.info = 'INFO'
@@ -394,8 +400,8 @@ class ClassDirectiveTests(unittest.TestCase):
self.assertEqual(context._actions[1]['args'], ('', IFactory))
def test_factory_w_explicit_id(self):
- from zope.component.interfaces import IFactory
from zope.component.interface import provideInterface
+ from zope.component.interfaces import IFactory
from zope.component.zcml import handler
context = DummyZCMLContext()
context.info = 'INFO'
@@ -503,6 +509,7 @@ class Test_allow(unittest.TestCase):
def test_w_interface(self):
from zope.interface import Attribute
from zope.interface import Interface
+
from zope.security.metaconfigure import protectModule
class IFoo(Interface):
@@ -521,6 +528,7 @@ class Test_allow(unittest.TestCase):
def test_w_both(self):
from zope.interface import Attribute
from zope.interface import Interface
+
from zope.security.metaconfigure import protectModule
class IFoo(Interface):
@@ -602,6 +610,7 @@ class Test_requre(unittest.TestCase):
def test_w_interface(self):
from zope.interface import Attribute
from zope.interface import Interface
+
from zope.security.metaconfigure import protectModule
class IFoo(Interface):
@@ -621,6 +630,7 @@ class Test_requre(unittest.TestCase):
def test_w_both(self):
from zope.interface import Attribute
from zope.interface import Interface
+
from zope.security.metaconfigure import protectModule
class IFoo(Interface):
diff --git a/src/zope/security/tests/test_permission.py b/src/zope/security/tests/test_permission.py
index 9e03496..075aed0 100644
--- a/src/zope/security/tests/test_permission.py
+++ b/src/zope/security/tests/test_permission.py
@@ -14,7 +14,9 @@
"""Test permissions
"""
import unittest
+
from zope.component.testing import PlacelessSetup
+
from zope.security.interfaces import PUBLIC_PERMISSION_NAME as zope_Public
@@ -30,13 +32,15 @@ class PermissionTests(unittest.TestCase):
def test_class_conforms_to_IPermission(self):
from zope.interface.verify import verifyClass
+
from zope.security.interfaces import IPermission
verifyClass(IPermission, self._getTargetClass())
def test_instance_conforms_to_IPermission(self):
from zope.interface.verify import verifyObject
- from zope.security.interfaces import IPermission
from zope.schema import getValidationErrors
+
+ from zope.security.interfaces import IPermission
verifyObject(IPermission, self._makeOne('testing'))
self.assertEqual([],
getValidationErrors(IPermission,
@@ -70,6 +74,7 @@ class Test_checkPermission(PlacelessSetup, unittest.TestCase):
def test_hit(self):
from zope.component import provideUtility
+
from zope.security.interfaces import IPermission
permission = object()
provideUtility(permission, IPermission, 'testing')
@@ -88,6 +93,7 @@ class Test_allPermissions(PlacelessSetup, unittest.TestCase):
def test_w_registration(self):
self.assertEqual(list(self._callFUT()), [])
from zope.component import provideUtility
+
from zope.security.interfaces import IPermission
permission = object()
provideUtility(permission, IPermission, 'testing')
@@ -96,6 +102,7 @@ class Test_allPermissions(PlacelessSetup, unittest.TestCase):
def test_skips_zope_Public(self):
self.assertEqual(list(self._callFUT()), [])
from zope.component import provideUtility
+
from zope.security.checker import CheckerPublic
from zope.security.interfaces import IPermission
permission = object()
@@ -119,6 +126,7 @@ class Test_PermissionsVocabulary(PlacelessSetup, unittest.TestCase):
def test_w_registration(self):
self.assertEqual(list(self._callFUT()), [])
from zope.component import provideUtility
+
from zope.security.interfaces import IPermission
permission = object()
provideUtility(permission, IPermission, 'testing')
@@ -128,6 +136,7 @@ class Test_PermissionsVocabulary(PlacelessSetup, unittest.TestCase):
def test_includes_zope_Public(self):
self.assertEqual(list(self._callFUT()), [])
from zope.component import provideUtility
+
from zope.security.checker import CheckerPublic
from zope.security.interfaces import IPermission
permission = object()
@@ -139,11 +148,12 @@ class Test_PermissionsVocabulary(PlacelessSetup, unittest.TestCase):
def test_zcml_valid(self):
from zope.configuration import xmlconfig
- import zope.security
from zope.interface.verify import verifyObject
- from zope.security.interfaces import IPermission
from zope.schema import getValidationErrors
+ import zope.security
+ from zope.security.interfaces import IPermission
+
xmlconfig.file('configure.zcml', zope.security)
vocabulary = self._callFUT()
vocabulary = sorted(vocabulary, key=lambda term: term.token)
@@ -171,6 +181,7 @@ class Test_PermissionIdsVocabulary(PlacelessSetup, unittest.TestCase):
def test_w_registration(self):
self.assertEqual(list(self._callFUT()), [])
from zope.component import provideUtility
+
from zope.security.interfaces import IPermission
permission = object()
provideUtility(permission, IPermission, 'testing')
@@ -181,6 +192,7 @@ class Test_PermissionIdsVocabulary(PlacelessSetup, unittest.TestCase):
def test_includes_zope_Public(self):
self.assertEqual(list(self._callFUT()), [])
from zope.component import provideUtility
+
from zope.security.checker import CheckerPublic
from zope.security.interfaces import IPermission
permission = object()
diff --git a/src/zope/security/tests/test_protectclass.py b/src/zope/security/tests/test_protectclass.py
index 16999e5..c1cdc09 100644
--- a/src/zope/security/tests/test_protectclass.py
+++ b/src/zope/security/tests/test_protectclass.py
@@ -14,6 +14,7 @@
"""Test handler for 'protectClass' directive
"""
import unittest
+
from zope.security.interfaces import PUBLIC_PERMISSION_NAME as zope_Public
@@ -101,8 +102,8 @@ class Test_protectLikeUnto(unittest.TestCase):
def test_w_existing_like_unto_checker_wo_existing_checker(self):
from zope.security.checker import Checker
from zope.security.checker import CheckerPublic
- from zope.security.checker import defineChecker
from zope.security.checker import _checkers
+ from zope.security.checker import defineChecker
permission = object()
foo_checker = Checker({'bar': CheckerPublic}, {'bar': permission})
defineChecker(Foo, foo_checker)
@@ -116,8 +117,8 @@ class Test_protectLikeUnto(unittest.TestCase):
def test_w_existing_like_unto_checker_w_existing_checker(self):
from zope.security.checker import Checker
from zope.security.checker import CheckerPublic
- from zope.security.checker import defineChecker
from zope.security.checker import _checkers
+ from zope.security.checker import defineChecker
permission1, permission2 = object(), object()
foo_checker = Checker({'bar': CheckerPublic}, {'bar': permission2})
defineChecker(Foo, foo_checker)
@@ -142,6 +143,7 @@ class Bar(Foo):
def test_suite():
return unittest.TestSuite((
unittest.defaultTestLoader.loadTestsFromTestCase(Test_protectName),
- unittest.defaultTestLoader.loadTestsFromTestCase(Test_protectSetAttribute),
+ unittest.defaultTestLoader.loadTestsFromTestCase(
+ Test_protectSetAttribute),
unittest.defaultTestLoader.loadTestsFromTestCase(Test_protectLikeUnto),
))
diff --git a/src/zope/security/tests/test_proxy.py b/src/zope/security/tests/test_proxy.py
index d646f54..3570cad 100644
--- a/src/zope/security/tests/test_proxy.py
+++ b/src/zope/security/tests/test_proxy.py
@@ -15,7 +15,8 @@
"""
import unittest
-from zope.security._compat import PYTHON2, PURE_PYTHON
+from zope.security._compat import PURE_PYTHON
+from zope.security._compat import PYTHON2
def _skip_if_not_Py2(testfunc):
@@ -189,8 +190,8 @@ class AbstractProxyTestBase(object):
self.assertEqual(str(proxy), str(target))
def test___str___checker_forbids_str(self):
- from zope.security.interfaces import ForbiddenAttribute
from zope.security._compat import _BUILTINS
+ from zope.security.interfaces import ForbiddenAttribute
from zope.security.proxy import _fmt_address
target = object()
checker = DummyChecker(ForbiddenAttribute)
@@ -222,8 +223,8 @@ class AbstractProxyTestBase(object):
self.assertEqual(repr(proxy), repr(target))
def test___repr___checker_forbids_str(self):
- from zope.security.interfaces import ForbiddenAttribute
from zope.security._compat import _BUILTINS
+ from zope.security.interfaces import ForbiddenAttribute
from zope.security.proxy import _fmt_address
target = object()
checker = DummyChecker(ForbiddenAttribute)
@@ -1583,7 +1584,9 @@ class ProxyPyTests(AbstractProxyTestBase,
self.assertIs(checker, sub.get_checker())
def test_ctor_w_checker(self):
- from zope.security.proxy import getObjectPy, getCheckerPy
+ from zope.security.proxy import getCheckerPy
+ from zope.security.proxy import getObjectPy
+
# Can't access '_wrapped' / '_checker' in C version
target = object()
checker = object()
@@ -2161,6 +2164,7 @@ class ProxyFactoryTests(unittest.TestCase):
# This used to work on Python 2, but fail on Python 3.
# See https://github.com/zopefoundation/zope.interface/issues/141
from zope.interface import Interface
+
from zope.security.proxy import ProxyFactory
class IFoo(Interface):
@@ -2253,7 +2257,9 @@ class LocationProxySecurityCheckerTests(unittest.TestCase):
# Regression test for a problem introduced in 3.8.1 and fixed in
# 3.8.3. For details see change log.
import sys
+
from zope.location.location import LocationProxy
+
import zope.security
try:
from importlib import reload as _reload
diff --git a/src/zope/security/tests/test_simpleinteraction.py b/src/zope/security/tests/test_simpleinteraction.py
index 3135027..b5b5c4a 100644
--- a/src/zope/security/tests/test_simpleinteraction.py
+++ b/src/zope/security/tests/test_simpleinteraction.py
@@ -27,6 +27,7 @@ class TestInteraction(unittest.TestCase):
def test(self):
from zope.interface.verify import verifyObject
+
from zope.security.interfaces import IInteraction
from zope.security.simplepolicies import ParanoidSecurityPolicy
interaction = ParanoidSecurityPolicy()
@@ -61,6 +62,7 @@ class TestInteraction(unittest.TestCase):
def testCreateInteraction(self):
from zope.interface.verify import verifyObject
+
from zope.security.interfaces import IInteraction
from zope.security.simplepolicies import ParanoidSecurityPolicy
i1 = ParanoidSecurityPolicy()
diff --git a/src/zope/security/tests/test_simplepolicies.py b/src/zope/security/tests/test_simplepolicies.py
index fcbc8de..e55d0e3 100644
--- a/src/zope/security/tests/test_simplepolicies.py
+++ b/src/zope/security/tests/test_simplepolicies.py
@@ -24,11 +24,13 @@ class ConformsToIInteraction(object):
def test_class_conforms_to_IInteraction(self):
from zope.interface.verify import verifyClass
+
from zope.security.interfaces import IInteraction
verifyClass(IInteraction, self._getTargetClass())
def test_instance_conforms_to_IInteraction(self):
from zope.interface.verify import verifyObject
+
from zope.security.interfaces import IInteraction
verifyObject(IInteraction, self._makeOne())
diff --git a/src/zope/security/tests/test_zcml.py b/src/zope/security/tests/test_zcml.py
index 0cf9616..db04952 100644
--- a/src/zope/security/tests/test_zcml.py
+++ b/src/zope/security/tests/test_zcml.py
@@ -12,6 +12,7 @@
#
##############################################################################
import unittest
+
from zope.security.interfaces import PUBLIC_PERMISSION_NAME as zope_Public
@@ -100,6 +101,7 @@ class Test_permission(unittest.TestCase):
def test_wo_description(self):
from zope.component.interface import provideInterface
from zope.component.zcml import handler
+
from zope.security.interfaces import IPermission
context = DummyZCMLContext()
context.info = 'INFO'
@@ -121,6 +123,7 @@ class Test_permission(unittest.TestCase):
def test_w_description(self):
from zope.component.interface import provideInterface
from zope.component.zcml import handler
+
from zope.security.interfaces import IPermission
context = DummyZCMLContext()
context.info = 'INFO'
@@ -196,5 +199,6 @@ def test_suite():
unittest.defaultTestLoader.loadTestsFromTestCase(PermissionTests),
unittest.defaultTestLoader.loadTestsFromTestCase(Test_securityPolicy),
unittest.defaultTestLoader.loadTestsFromTestCase(Test_permission),
- unittest.defaultTestLoader.loadTestsFromTestCase(Test_redefinePermission),
+ unittest.defaultTestLoader.loadTestsFromTestCase(
+ Test_redefinePermission),
))
diff --git a/src/zope/security/tests/test_zcml_functest.py b/src/zope/security/tests/test_zcml_functest.py
index 2486af6..3f5991a 100644
--- a/src/zope/security/tests/test_zcml_functest.py
+++ b/src/zope/security/tests/test_zcml_functest.py
@@ -13,8 +13,8 @@
##############################################################################
"""Directives Tests
"""
-import unittest
import io
+import unittest
def configfile(s):
@@ -49,6 +49,7 @@ class TestClassDirective(unittest.TestCase):
def _meta(self):
from zope.configuration.xmlconfig import XMLConfig
+
import zope.security
XMLConfig('meta.zcml', zope.security)()
@@ -64,6 +65,7 @@ class TestClassDirective(unittest.TestCase):
def testImplements(self):
from zope.component.interface import queryInterface
from zope.configuration.xmlconfig import xmlconfig
+
from zope.security.tests.exampleclass import ExampleClass
from zope.security.tests.exampleclass import IExample
self._meta()
@@ -84,6 +86,7 @@ class TestClassDirective(unittest.TestCase):
def testMulImplements(self):
from zope.component.interface import queryInterface
from zope.configuration.xmlconfig import xmlconfig
+
from zope.security.tests.exampleclass import ExampleClass
from zope.security.tests.exampleclass import IExample
from zope.security.tests.exampleclass import IExample2
@@ -156,6 +159,7 @@ class TestFactorySubdirective(unittest.TestCase):
def _meta(self):
from zope.configuration.xmlconfig import XMLConfig
+
import zope.security
XMLConfig('meta.zcml', zope.security)()
@@ -183,8 +187,8 @@ class TestFactorySubdirective(unittest.TestCase):
def testFactoryNoId(self):
from zope.component import getUtility
from zope.component.interfaces import IFactory
- from zope.interface.interfaces import ComponentLookupError
from zope.configuration.xmlconfig import xmlconfig
+ from zope.interface.interfaces import ComponentLookupError
self._meta()
f = configfile("""
<permission id="zope.Foo" title="Zope Foo Permission" />
@@ -242,13 +246,15 @@ class TestFactoryDirective(unittest.TestCase):
tearDown()
def meta(self):
- import zope.security
from zope.configuration.xmlconfig import XMLConfig
+
+ import zope.security
XMLConfig('meta.zcml', zope.security)()
def testFactory(self):
from zope.component import createObject
from zope.configuration.xmlconfig import xmlconfig
+
from zope.security import proxy
from zope.security.tests import exampleclass
self.meta()
@@ -274,6 +280,7 @@ def _pfx(name):
def defineDirectives():
from zope.configuration.xmlconfig import XMLConfig
from zope.configuration.xmlconfig import xmlconfig
+
import zope.security
XMLConfig('meta.zcml', zope.security)()
xmlconfig(io.StringIO(u"""<configure
@@ -293,9 +300,10 @@ P2 = "zope.Paltry"
class TestRequireDirective(unittest.TestCase):
def setUp(self):
+ from zope.component.testing import setUp
from zope.interface import implementer
+
from zope.security.tests import module
- from zope.component.testing import setUp
setUp()
defineDirectives()
@@ -344,6 +352,7 @@ class TestRequireDirective(unittest.TestCase):
def test_wo_any_attributes(self):
from zope.configuration.exceptions import ConfigurationError
+
from zope.security.tests import module
declaration = ('''<class class="%s">
<require
@@ -383,6 +392,7 @@ class TestRequireDirective(unittest.TestCase):
def test_set_schema(self):
from zope.component.interface import queryInterface
+
from zope.security.checker import selectChecker
from zope.security.tests import module
self.assertEqual(queryInterface(_pfx("S")), None)
@@ -407,6 +417,7 @@ class TestRequireDirective(unittest.TestCase):
def test_multiple_set_schema(self):
from zope.component.interface import queryInterface
+
from zope.security.checker import selectChecker
from zope.security.tests import module
self.assertEqual(queryInterface(_pfx("S")), None)
@@ -435,6 +446,7 @@ class TestRequireDirective(unittest.TestCase):
def testSimpleInterface(self):
from zope.component.interface import queryInterface
+
from zope.security.tests import module
self.assertEqual(queryInterface(_pfx("I")), None)
@@ -452,6 +464,7 @@ class TestRequireDirective(unittest.TestCase):
def testMultipleInterface(self):
from zope.component.interface import queryInterface
+
from zope.security.tests import module
self.assertEqual(queryInterface(_pfx("I3")), None)
self.assertEqual(queryInterface(_pfx("I4")), None)
@@ -559,6 +572,7 @@ def apply_declaration(declaration):
def make_dummy():
from zope.interface import Interface
+
import zope.security.zcml
global IDummy
@@ -587,6 +601,7 @@ class DirectivesTest(unittest.TestCase):
def testRedefinePermission(self):
from zope.configuration import xmlconfig
+
from zope.security import tests
make_dummy()
xmlconfig.file("redefineperms.zcml", tests)
diff --git a/src/zope/security/zcml.py b/src/zope/security/zcml.py
index 4e3c17c..1f48138 100644
--- a/src/zope/security/zcml.py
+++ b/src/zope/security/zcml.py
@@ -22,9 +22,9 @@ from zope.schema import Id
from zope.schema.interfaces import IFromUnicode
from zope.security._compat import implementer_if_needed
-from zope.security.permission import checkPermission
-from zope.security.management import setSecurityPolicy
from zope.security.interfaces import PUBLIC_PERMISSION_NAME as zope_Public
+from zope.security.management import setSecurityPolicy
+from zope.security.permission import checkPermission
@implementer_if_needed(IFromUnicode)
@@ -94,9 +94,10 @@ class IPermissionDirective(Interface):
def permission(_context, id, title, description=u''):
+ from zope.component.zcml import utility
+
from zope.security.interfaces import IPermission
from zope.security.permission import Permission
- from zope.component.zcml import utility
permission = Permission(id, title, description)
utility(_context, IPermission, permission, name=id)
diff --git a/tox.ini b/tox.ini
index 8931aaa..76501b1 100644
--- a/tox.ini
+++ b/tox.ini
@@ -52,6 +52,8 @@ commands =
basepython = python3
skip_install = true
commands =
+ isort --check-only --diff {toxinidir}/src {toxinidir}/setup.py
+ flake8 src setup.py
check-manifest
check-python-versions
deps =