From 9b170e24879881397f5d3843bf1bafb6cb33b2c9 Mon Sep 17 00:00:00 2001 From: Hanno Schlichting Date: Tue, 2 May 2017 16:09:40 +0200 Subject: [PATCH] flake8 :)) --- .coveragerc | 2 +- .travis.yml | 20 +----- src/AccessControl/AuthEncoding.py | 18 ++--- src/AccessControl/ImplPython.py | 37 +++++----- src/AccessControl/PermissionMapping.py | 10 +-- src/AccessControl/SecurityInfo.py | 9 +-- src/AccessControl/SecurityManagement.py | 2 +- src/AccessControl/User.py | 5 +- src/AccessControl/ZopeGuards.py | 22 +++--- src/AccessControl/ZopeSecurityPolicy.py | 4 +- src/AccessControl/class_init.py | 4 +- src/AccessControl/metaconfigure.py | 7 +- src/AccessControl/owner.py | 13 ++-- src/AccessControl/requestmethod.py | 5 +- src/AccessControl/rolemanager.py | 17 +++-- src/AccessControl/security.py | 7 +- .../tests/testClassSecurityInfo.py | 12 ++-- src/AccessControl/tests/testImplementation.py | 4 +- src/AccessControl/tests/testOwned.py | 5 +- src/AccessControl/tests/testPermissionRole.py | 5 +- src/AccessControl/tests/testZCML.py | 3 +- .../tests/testZopeSecurityPolicy.py | 14 ++-- src/AccessControl/tests/test_safeiter.py | 4 +- src/AccessControl/userfolder.py | 20 +++--- src/AccessControl/users.py | 20 +++--- tox.ini | 72 ++----------------- 26 files changed, 138 insertions(+), 203 deletions(-) diff --git a/.coveragerc b/.coveragerc index a2ed8ec..44f1fa4 100644 --- a/.coveragerc +++ b/.coveragerc @@ -1,6 +1,6 @@ [run] branch = True -source = RestrictedPython +source = AccessControl omit = src/AccessControl/tests src/AccessControl/tests/*.py diff --git a/.travis.yml b/.travis.yml index e4f2c35..5dd6592 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,32 +6,16 @@ python: - 3.4 - 3.5 - 3.6 - - pypy-5.4 - -env: - - ENVIRON=py - - ENVIORN=isort,flake8,docs - -matrix: - exclude: - - env: ENVIRON=isort,flake8,docs - include: - - python: "3.6" - env: ENVIRON=isort,flake8,docs + - pypy + - pypy3.3-5.2-alpha1 install: - - pip install tox coveralls coverage - python bootstrap.py - bin/buildout script: - - tox -e $ENVIRON - bin/test -v1 -after_sucess: - - coverage combine - - coveralls - notifications: email: false diff --git a/src/AccessControl/AuthEncoding.py b/src/AccessControl/AuthEncoding.py index be79e07..614d4f9 100644 --- a/src/AccessControl/AuthEncoding.py +++ b/src/AccessControl/AuthEncoding.py @@ -12,21 +12,15 @@ ############################################################################## from __future__ import absolute_import -from AuthEncoding.AuthEncoding import constant_time_compare -from AuthEncoding.AuthEncoding import is_encrypted -from AuthEncoding.AuthEncoding import listSchemes -from AuthEncoding.AuthEncoding import MySQLDigestScheme -from AuthEncoding.AuthEncoding import PasswordEncryptionScheme -from AuthEncoding.AuthEncoding import pw_encode -from AuthEncoding.AuthEncoding import pw_encrypt -from AuthEncoding.AuthEncoding import pw_validate -from AuthEncoding.AuthEncoding import registerScheme -from AuthEncoding.AuthEncoding import SHADigestScheme -from AuthEncoding.AuthEncoding import SSHADigestScheme +# BBB +from AuthEncoding.AuthEncoding import ( # NOQA + constant_time_compare, PasswordEncryptionScheme, registerScheme, + listSchemes, SSHADigestScheme, SHADigestScheme, MySQLDigestScheme, + pw_validate, is_encrypted, pw_encrypt, pw_encode) # Bogosity on various platforms due to ITAR restrictions try: - from AuthEncoding.AuthEncoding import CryptDigestScheme + from AuthEncoding.AuthEncoding import CryptDigestScheme # NOQA except ImportError: pass diff --git a/src/AccessControl/ImplPython.py b/src/AccessControl/ImplPython.py index 3af6c6b..a998010 100644 --- a/src/AccessControl/ImplPython.py +++ b/src/AccessControl/ImplPython.py @@ -13,21 +13,8 @@ """Python implementation of the access control machinery.""" -from AccessControl.interfaces import ISecurityManager -from AccessControl.interfaces import ISecurityPolicy -from AccessControl.Permission import getPermissionIdentifier -from AccessControl.SecurityManagement import getSecurityManager -from AccessControl.SimpleObjectPolicies import _noroles -from AccessControl.SimpleObjectPolicies import Containers -from AccessControl.unauthorized import Unauthorized -from AccessControl.ZopeGuards import guarded_getitem -# AccessControl.ZopeSecurityPolicy -# -------------------------------- -# -# TODO: implement this in cAccessControl, and have Implementation -# do the indirection. -# -from AccessControl.ZopeSecurityPolicy import getRoles # XXX +import os + from Acquisition import aq_acquire from Acquisition import aq_base from Acquisition import aq_inContextOf @@ -37,10 +24,6 @@ from logging import getLogger from zope.interface import implementer -import os -import string - - # This is used when a permission maps explicitly to no permission. We # try and get this from cAccessControl first to make sure that if both # security implementations exist, we can switch between them later. @@ -49,6 +32,22 @@ except ImportError: _what_not_even_god_should_do = [] +from AccessControl.interfaces import ISecurityManager +from AccessControl.interfaces import ISecurityPolicy +from AccessControl.Permission import getPermissionIdentifier +from AccessControl.SecurityManagement import getSecurityManager +from AccessControl.SimpleObjectPolicies import _noroles +from AccessControl.SimpleObjectPolicies import Containers +from AccessControl.unauthorized import Unauthorized +from AccessControl.ZopeGuards import guarded_getitem # NOQA +# AccessControl.ZopeSecurityPolicy +# -------------------------------- +# +# TODO: implement this in cAccessControl, and have Implementation +# do the indirection. +# +from AccessControl.ZopeSecurityPolicy import getRoles # XXX + LOG = getLogger('ImplPython') diff --git a/src/AccessControl/PermissionMapping.py b/src/AccessControl/PermissionMapping.py index 15ca29d..1191130 100644 --- a/src/AccessControl/PermissionMapping.py +++ b/src/AccessControl/PermissionMapping.py @@ -17,15 +17,17 @@ need the object's ordinary permissions intact so we can manage it. """ +from cgi import escape + +from Acquisition import ImplicitAcquisitionWrapper +from ExtensionClass import Base +from zope.interface import implementer + from AccessControl.class_init import InitializeClass from AccessControl.interfaces import IPermissionMappingSupport from AccessControl.owner import UnownableOwner from AccessControl.Permission import getPermissionIdentifier from AccessControl.requestmethod import requestmethod -from Acquisition import ImplicitAcquisitionWrapper -from cgi import escape -from ExtensionClass import Base -from zope.interface import implementer @implementer(IPermissionMappingSupport) diff --git a/src/AccessControl/SecurityInfo.py b/src/AccessControl/SecurityInfo.py index 23b911f..74cdd79 100644 --- a/src/AccessControl/SecurityInfo.py +++ b/src/AccessControl/SecurityInfo.py @@ -38,13 +38,14 @@ """ -from AccessControl.class_init import InitializeClass -from AccessControl.ImplPython import _what_not_even_god_should_do -from Acquisition import Implicit from logging import getLogger +import sys + +from Acquisition import Implicit from Persistence import Persistent -import sys +from AccessControl.class_init import InitializeClass +from AccessControl.ImplPython import _what_not_even_god_should_do # always patch Persistent before ClassSecurityInfo is used diff --git a/src/AccessControl/SecurityManagement.py b/src/AccessControl/SecurityManagement.py index b09c5fe..4a771e6 100644 --- a/src/AccessControl/SecurityManagement.py +++ b/src/AccessControl/SecurityManagement.py @@ -12,8 +12,8 @@ ############################################################################## """Security management """ -from . import SpecialUsers from __future__ import absolute_import +from . import SpecialUsers def getSecurityManager(): diff --git a/src/AccessControl/User.py b/src/AccessControl/User.py index 1d30f52..0298cce 100644 --- a/src/AccessControl/User.py +++ b/src/AccessControl/User.py @@ -13,9 +13,11 @@ """Access control package. """ +from zope.deferredimport import deprecated + +# BBB from .users import emergency_user as super from .users import UnrestrictedUser as Super -# BBB from .users import _remote_user_mode from .users import absattr from .users import addr_match @@ -31,7 +33,6 @@ from .users import SpecialUser from .users import system from .users import User -from zope.deferredimport import deprecated deprecated("User folders are no longer part of AccessControl, please depend " diff --git a/src/AccessControl/ZopeGuards.py b/src/AccessControl/ZopeGuards.py index 0433c3f..51d3898 100644 --- a/src/AccessControl/ZopeGuards.py +++ b/src/AccessControl/ZopeGuards.py @@ -12,23 +12,25 @@ ############################################################################## from __future__ import absolute_import -from AccessControl.SecurityInfo import secureModule -from AccessControl.SecurityManagement import getSecurityManager -from AccessControl.SimpleObjectPolicies import ContainerAssertions -from AccessControl.SimpleObjectPolicies import Containers + from functools import reduce +import math +import random +import string +import sys +import warnings + +import RestrictedPython from RestrictedPython.Eval import RestrictionCapableEval from RestrictedPython.Guards import full_write_guard from RestrictedPython.Guards import safe_builtins from RestrictedPython.Utilities import utility_builtins from zExceptions import Unauthorized -import math -import random -import RestrictedPython -import string -import sys -import warnings +from AccessControl.SecurityInfo import secureModule +from AccessControl.SecurityManagement import getSecurityManager +from AccessControl.SimpleObjectPolicies import ContainerAssertions +from AccessControl.SimpleObjectPolicies import Containers _marker = [] # Create a new marker object. diff --git a/src/AccessControl/ZopeSecurityPolicy.py b/src/AccessControl/ZopeSecurityPolicy.py index 6a1bf61..310cc33 100644 --- a/src/AccessControl/ZopeSecurityPolicy.py +++ b/src/AccessControl/ZopeSecurityPolicy.py @@ -13,10 +13,12 @@ """Define Zope's default security policy """ from __future__ import absolute_import + +from types import MethodType + # AccessControl.Implementation inserts: # ZopeSecurityPolicy, getRoles, rolesForPermissionOn from AccessControl.SimpleObjectPolicies import _noroles -from types import MethodType rolesForPermissionOn = None # XXX: avoid import loop diff --git a/src/AccessControl/class_init.py b/src/AccessControl/class_init.py index 3f01229..6cefb79 100644 --- a/src/AccessControl/class_init.py +++ b/src/AccessControl/class_init.py @@ -13,10 +13,10 @@ """Class initialization. """ -from AccessControl.Permission import ApplicationDefaultPermissions - import logging +from AccessControl.Permission import ApplicationDefaultPermissions + def InitializeClass(self): from AccessControl.Permission import registerPermissions diff --git a/src/AccessControl/metaconfigure.py b/src/AccessControl/metaconfigure.py index 3b0f6a2..b454c1f 100644 --- a/src/AccessControl/metaconfigure.py +++ b/src/AccessControl/metaconfigure.py @@ -12,11 +12,12 @@ # ############################################################################## -from AccessControl.class_init import InitializeClass -from AccessControl.security import protectName +import warnings + from zope.security import metaconfigure -import warnings +from AccessControl.class_init import InitializeClass +from AccessControl.security import protectName class ClassDirective(metaconfigure.ClassDirective): diff --git a/src/AccessControl/owner.py b/src/AccessControl/owner.py index e3662ac..c94aed5 100644 --- a/src/AccessControl/owner.py +++ b/src/AccessControl/owner.py @@ -13,6 +13,13 @@ """Support for owned objects """ +from Acquisition import aq_base +from Acquisition import aq_get +from Acquisition import aq_inner +from Acquisition import aq_parent +from ExtensionClass import Base +from zope.interface import implementer + from AccessControl import SpecialUsers as SU from AccessControl.class_init import InitializeClass from AccessControl.interfaces import IOwned @@ -20,12 +27,6 @@ from AccessControl.Permissions import view_management_screens from AccessControl.SecurityInfo import ClassSecurityInfo from AccessControl.SecurityManagement import getSecurityManager -from Acquisition import aq_base -from Acquisition import aq_get -from Acquisition import aq_inner -from Acquisition import aq_parent -from ExtensionClass import Base -from zope.interface import implementer UnownableOwner=[] diff --git a/src/AccessControl/requestmethod.py b/src/AccessControl/requestmethod.py index 3a1ba97..1429336 100644 --- a/src/AccessControl/requestmethod.py +++ b/src/AccessControl/requestmethod.py @@ -11,14 +11,15 @@ # ############################################################################## +import inspect + from zExceptions import Forbidden from zope.publisher.interfaces.browser import IBrowserRequest -import inspect - _default = [] + def _buildFacade(name, spec, docstring): """Build a facade function, matching the decorated method in signature. diff --git a/src/AccessControl/rolemanager.py b/src/AccessControl/rolemanager.py index 22f9606..152f9d4 100644 --- a/src/AccessControl/rolemanager.py +++ b/src/AccessControl/rolemanager.py @@ -12,6 +12,16 @@ ############################################################################## """Access control support """ + +from base64 import urlsafe_b64encode +from cgi import escape + +from Acquisition import Acquired +from Acquisition import aq_base +from Acquisition import aq_get +from ExtensionClass import Base +from zope.interface import implementer + from AccessControl import ClassSecurityInfo from AccessControl.class_init import InitializeClass from AccessControl.interfaces import IRoleManager @@ -20,13 +30,6 @@ from AccessControl.PermissionMapping import RoleManager from AccessControl.Permissions import change_permissions from AccessControl.SecurityManagement import newSecurityManager -from Acquisition import Acquired -from Acquisition import aq_base -from Acquisition import aq_get -from base64 import urlsafe_b64encode -from cgi import escape -from ExtensionClass import Base -from zope.interface import implementer DEFAULTMAXLISTUSERS = 250 diff --git a/src/AccessControl/security.py b/src/AccessControl/security.py index f4b461e..c43ee0e 100644 --- a/src/AccessControl/security.py +++ b/src/AccessControl/security.py @@ -14,9 +14,6 @@ """Security handling """ -from AccessControl.Permission import addPermission -from AccessControl.SecurityInfo import ClassSecurityInfo -from AccessControl.SecurityManagement import getSecurityManager from zope.component import getUtility from zope.component import queryUtility from zope.component.zcml import utility @@ -35,6 +32,10 @@ from zope.security.simplepolicies import ParanoidSecurityPolicy from zope.security.zcml import IPermissionDirective +from AccessControl.Permission import addPermission +from AccessControl.SecurityInfo import ClassSecurityInfo +from AccessControl.SecurityManagement import getSecurityManager + CheckerPublicId = 'zope.Public' CheckerPrivateId = 'zope2.Private' diff --git a/src/AccessControl/tests/testClassSecurityInfo.py b/src/AccessControl/tests/testClassSecurityInfo.py index e7e1931..a7fd0c9 100644 --- a/src/AccessControl/tests/testClassSecurityInfo.py +++ b/src/AccessControl/tests/testClassSecurityInfo.py @@ -61,15 +61,15 @@ class Test(Base): ('Manager', 'Role A', 'Role B', 'Role C') ) - @security.declarePublic('public') + security.declarePublic('public') def public(self, REQUEST=None): """ """ - @security.declarePrivate('private') + security.declarePrivate('private') def private(self, REQUEST=None): """ """ - @security.declareProtected('Test permission', 'protected') + security.declareProtected('Test permission', 'protected') def protected(self, REQUEST=None): """ """ @@ -136,11 +136,13 @@ class Test(Base): security = ClassSecurityInfo() - @security.protected('Test permission 1') + # security not used as a decorator, so does not protect + security.protected('Test permission 1') def unprotected1(self, REQUEST=None): """ """ - @security.protected('Test permission 2') + # see above + security.protected('Test permission 2') def unprotected2(self, REQUEST=None): """ """ diff --git a/src/AccessControl/tests/testImplementation.py b/src/AccessControl/tests/testImplementation.py index 1ec4947..9bd4890 100644 --- a/src/AccessControl/tests/testImplementation.py +++ b/src/AccessControl/tests/testImplementation.py @@ -13,11 +13,11 @@ ############################################################################## """Test of the implementation selection support.""" +import unittest + from AccessControl.Implementation import getImplementationName from AccessControl.Implementation import setImplementation -import unittest - class AccessControlImplementationTest(unittest.TestCase): diff --git a/src/AccessControl/tests/testOwned.py b/src/AccessControl/tests/testOwned.py index 449d3bf..a777e8e 100644 --- a/src/AccessControl/tests/testOwned.py +++ b/src/AccessControl/tests/testOwned.py @@ -1,12 +1,13 @@ """Unit tests for AccessControl.Owned """ -from AccessControl.owner import Owned +import unittest + from Acquisition import aq_inner from Acquisition import Implicit from persistent import Persistent -import unittest +from AccessControl.owner import Owned class FauxUser(Implicit): diff --git a/src/AccessControl/tests/testPermissionRole.py b/src/AccessControl/tests/testPermissionRole.py index 66303fb..a40d5aa 100644 --- a/src/AccessControl/tests/testPermissionRole.py +++ b/src/AccessControl/tests/testPermissionRole.py @@ -13,12 +13,13 @@ """Tests of PermissionRole """ -from AccessControl.PermissionRole import PermissionRole +import unittest + from Acquisition import aq_base from Acquisition import Explicit from Acquisition import Implicit -import unittest +from AccessControl.PermissionRole import PermissionRole ViewPermission = 'View' diff --git a/src/AccessControl/tests/testZCML.py b/src/AccessControl/tests/testZCML.py index 839ce7d..e8d7b6f 100644 --- a/src/AccessControl/tests/testZCML.py +++ b/src/AccessControl/tests/testZCML.py @@ -14,11 +14,12 @@ """Test security induced by ZCML """ -from AccessControl.SecurityInfo import ClassSecurityInfo from zope.interface import implementer from zope.interface import Interface from zope.schema import TextLine +from AccessControl.SecurityInfo import ClassSecurityInfo + class ISuperDummy(Interface): """ diff --git a/src/AccessControl/tests/testZopeSecurityPolicy.py b/src/AccessControl/tests/testZopeSecurityPolicy.py index cc6db06..7193a95 100644 --- a/src/AccessControl/tests/testZopeSecurityPolicy.py +++ b/src/AccessControl/tests/testZopeSecurityPolicy.py @@ -11,20 +11,20 @@ # ############################################################################## -from AccessControl.SecurityManagement import SecurityContext -from AccessControl.userfolder import UserFolder +from doctest import DocTestSuite +import sys +import unittest + from Acquisition import Explicit from Acquisition import Implicit -from doctest import DocTestSuite from MethodObject import Method from zExceptions import Unauthorized -import sys -import unittest - +from AccessControl.SecurityManagement import SecurityContext +from AccessControl.userfolder import UserFolder try: - import _thread as thread + import _thread as thread # Py3 except ImportError: import thread diff --git a/src/AccessControl/tests/test_safeiter.py b/src/AccessControl/tests/test_safeiter.py index bbdba81..795cb1d 100644 --- a/src/AccessControl/tests/test_safeiter.py +++ b/src/AccessControl/tests/test_safeiter.py @@ -14,10 +14,10 @@ """Tests for the guarded iterartor. """ -from AccessControl import ZopeGuards - import unittest +from AccessControl import ZopeGuards + class SafeIterTestCase(unittest.TestCase): diff --git a/src/AccessControl/userfolder.py b/src/AccessControl/userfolder.py index 62bc0fc..f7f4bfd 100644 --- a/src/AccessControl/userfolder.py +++ b/src/AccessControl/userfolder.py @@ -13,6 +13,17 @@ """User folders. """ +from base64 import decodestring + +from Acquisition import aq_base +from Acquisition import aq_parent +from Acquisition import Implicit +from Persistence import Persistent +from Persistence import PersistentMapping +from zExceptions import BadRequest +from zExceptions import Unauthorized +from zope.interface import implementer + from AccessControl import AuthEncoding from AccessControl import ClassSecurityInfo from AccessControl.class_init import InitializeClass @@ -30,15 +41,6 @@ from AccessControl.users import nobody from AccessControl.users import User from AccessControl.ZopeSecurityPolicy import _noroles -from Acquisition import aq_base -from Acquisition import aq_parent -from Acquisition import Implicit -from base64 import decodestring -from Persistence import Persistent -from Persistence import PersistentMapping -from zExceptions import BadRequest -from zExceptions import Unauthorized -from zope.interface import implementer class BasicUserFolder(Implicit, Persistent, RoleManager): diff --git a/src/AccessControl/users.py b/src/AccessControl/users.py index 33046f4..7d43b7f 100644 --- a/src/AccessControl/users.py +++ b/src/AccessControl/users.py @@ -13,23 +13,23 @@ """Access control package. """ -from AccessControl import AuthEncoding -from AccessControl import SpecialUsers -from AccessControl.interfaces import IUser -from AccessControl.PermissionRole import _what_not_even_god_should_do -from AccessControl.PermissionRole import rolesForPermissionOn +import os +import re +import socket + from Acquisition import aq_inContextOf from Acquisition import aq_parent from Acquisition import Implicit from Persistence import Persistent from zope.interface import implementer -import os -import re -import socket - +from AccessControl import AuthEncoding +from AccessControl import SpecialUsers +from AccessControl.interfaces import IUser +from AccessControl.PermissionRole import _what_not_even_god_should_do +from AccessControl.PermissionRole import rolesForPermissionOn -_marker=[] +_marker = [] @implementer(IUser) diff --git a/tox.ini b/tox.ini index a9bba24..649f195 100644 --- a/tox.ini +++ b/tox.ini @@ -1,77 +1,13 @@ [tox] -envlist = - flake8, - coverage-clean, - py27, - py34, - py35, - py36, - pypy, - docs, - isort, - coverage-report, -skip_missing_interpreters = False +envlist = py27,py34,py35,py36,pypy,pypy3 [testenv] -usedevelop = True -extras = - develop - test +install_command = pip install --no-cache-dir --no-binary=:all: {opts} {packages} commands = - zope-testrunner --test-path=src --coverage=.coverage.zope-testrunner.{envname} {posargs:-pvc} - py.test --cov=src --cov-report=xml --html=report-{envname}.html --self-contained-html {posargs} + zope-testrunner --test-path=src {posargs:-pvc} deps = - ./develop/RestrictedPython zope.testrunner - pytest - pytest-cov - pytest-remove-stale-bytecode - pytest-mock - pytest-html + ./develop/RestrictedPython setenv = PIP_NO_CACHE = 1 - COVERAGE_FILE=.coverage.{envname} - - -[testenv:coverage-clean] -deps = coverage -skip_install = true -commands = coverage erase - -[testenv:coverage-report] -basepython = python2.7 -deps = coverage -setenv = - COVERAGE_FILE=.coverage -skip_install = true -commands = - coverage combine - coverage html - coverage xml - coverage report - -[testenv:isort] -basepython = python2.7 -deps = isort -commands = - isort --check-only --recursive {toxinidir}/src {toxinidir}/tests {posargs} - -[testenv:isort-apply] -basepython = python2.7 -deps = isort -commands = - isort --apply --recursive {toxinidir}/src {toxinidir}/tests {posargs} - -[testenv:flake8] -basepython = python2.7 -deps = flake8 -commands = flake8 --doctests src tests setup.py - -[testenv:docs] -basepython = python2.7 -commands = - sphinx-build -b html -d build/docs/doctrees docs build/docs/html - sphinx-build -b doctest docs build/docs/doctrees -deps = - .[docs]