From dea3d4757390d04f6a5b53e696f08d0cab5f6023 Mon Sep 17 00:00:00 2001 From: Michael Howitz Date: Thu, 4 Aug 2022 08:42:01 +0200 Subject: [PATCH] Fix tox lint run + isort imports. --- .github/workflows/tests.yml | 3 +- .gitignore | 1 + .meta.toml | 2 +- setup.cfg | 11 +++++ setup.py | 4 +- src/zope/publisher/_compat.py | 5 +- src/zope/publisher/base.py | 21 +++++--- src/zope/publisher/browser.py | 37 +++++++------- src/zope/publisher/contenttype.py | 2 +- src/zope/publisher/defaultview.py | 4 +- src/zope/publisher/ftp.py | 8 +++- src/zope/publisher/http.py | 37 ++++++++------ src/zope/publisher/interfaces/__init__.py | 10 ++-- src/zope/publisher/interfaces/browser.py | 13 +++-- src/zope/publisher/interfaces/http.py | 2 +- src/zope/publisher/interfaces/xmlrpc.py | 3 +- src/zope/publisher/paste.py | 2 + src/zope/publisher/principallogging.py | 3 +- src/zope/publisher/publish.py | 8 +++- src/zope/publisher/testing.py | 6 ++- .../tests/basetestiapplicationrequest.py | 7 ++- .../tests/basetestipublicationrequest.py | 8 +++- .../tests/basetestipublisherrequest.py | 1 + src/zope/publisher/tests/publication.py | 3 +- src/zope/publisher/tests/test_baserequest.py | 27 ++++++----- src/zope/publisher/tests/test_baseresponse.py | 8 +++- src/zope/publisher/tests/test_browser.py | 1 + .../publisher/tests/test_browserlanguages.py | 1 + .../publisher/tests/test_browserrequest.py | 28 +++++------ .../publisher/tests/test_browserresponse.py | 11 +++-- src/zope/publisher/tests/test_defaultview.py | 1 + src/zope/publisher/tests/test_ftp.py | 5 +- src/zope/publisher/tests/test_http.py | 48 +++++++++++-------- src/zope/publisher/tests/test_ipublication.py | 4 +- src/zope/publisher/tests/test_mapply.py | 2 +- src/zope/publisher/tests/test_paste.py | 2 +- .../publisher/tests/test_principallogging.py | 1 + src/zope/publisher/tests/test_publisher.py | 23 +++++---- .../tests/test_requestdataproperty.py | 12 +++-- src/zope/publisher/tests/test_skinnable.py | 2 +- src/zope/publisher/tests/test_testing.py | 5 +- src/zope/publisher/tests/test_xmlrpc.py | 6 ++- src/zope/publisher/tests/test_zcml.py | 21 ++++---- src/zope/publisher/tests/views.py | 1 + src/zope/publisher/tests/xmlrpcviews.py | 4 +- src/zope/publisher/xmlrpc.py | 14 ++++-- src/zope/publisher/zcml.py | 8 ++-- tox.ini | 18 +++++-- 48 files changed, 283 insertions(+), 171 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 4f1959e4..f9f622df 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -28,12 +28,13 @@ jobs: - ["3.8", "py38"] - ["3.9", "py39"] - ["3.10", "py310"] - - ["pypy2", "pypy"] + - ["pypy-2.7", "pypy"] - ["pypy-3.7", "pypy3"] - ["3.9", "docs"] - ["3.9", "coverage"] runs-on: ${{ matrix.os }}-latest + if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name name: ${{ matrix.config[1] }} steps: - uses: actions/checkout@v2 diff --git a/.gitignore b/.gitignore index c724a76f..1f321f52 100644 --- a/.gitignore +++ b/.gitignore @@ -28,4 +28,5 @@ lib64 log/ parts/ pyvenv.cfg +testing.log var/ diff --git a/.meta.toml b/.meta.toml index 63cbc10e..4aeac633 100644 --- a/.meta.toml +++ b/.meta.toml @@ -2,7 +2,7 @@ # https://github.com/zopefoundation/meta/tree/master/config/pure-python [meta] template = "pure-python" -commit-id = "15807bd13de45b79c7da560a377fe3f22cbc4338" +commit-id = "ae61f414cfef4e129d275679c6a76dc67b1a2c11" [python] with-pypy = true diff --git a/setup.cfg b/setup.cfg index 264b78c1..1ecf58c5 100644 --- a/setup.cfg +++ b/setup.cfg @@ -11,3 +11,14 @@ ignore = .editorconfig .meta.toml docs/_build/html/_sources/* + +[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 4e1ac06c..5f68a178 100644 --- a/setup.py +++ b/setup.py @@ -17,7 +17,9 @@ # Zope Toolkit policies as described by this documentation. ############################################################################## import os -from setuptools import setup, find_packages + +from setuptools import find_packages +from setuptools import setup def read(*rnames): diff --git a/src/zope/publisher/_compat.py b/src/zope/publisher/_compat.py index e0388ccf..4c61feca 100644 --- a/src/zope/publisher/_compat.py +++ b/src/zope/publisher/_compat.py @@ -19,14 +19,17 @@ The intention is to let xmlrpclib names to be importable from zcml. """ import sys + + PYTHON2 = sys.version_info[0] == 2 PYTHON3 = sys.version_info[0] == 3 if PYTHON2: def to_unicode(s): return unicode(s, 'unicode_escape') # noqa: F405 may be undefined - from xmlrpclib import * # noqa: F403 unable to detect undefined names import types + + from xmlrpclib import * # noqa: F403 unable to detect undefined names CLASS_TYPES = (type, types.ClassType) else: def to_unicode(s): diff --git a/src/zope/publisher/base.py b/src/zope/publisher/base.py index 80772031..6d971ffb 100644 --- a/src/zope/publisher/base.py +++ b/src/zope/publisher/base.py @@ -16,19 +16,26 @@ Specifically, 'BaseRequest', 'BaseResponse', and 'DefaultPublication' are specified here. """ -from io import BytesIO, StringIO +from io import BytesIO +from io import StringIO -from zope.interface import implementer -from zope.interface.common.mapping import IReadMapping, IEnumerableMapping from zope.exceptions.exceptionformatter import print_exception +from zope.interface import implementer +from zope.interface.common.mapping import IEnumerableMapping +from zope.interface.common.mapping import IReadMapping from zope.security.proxy import removeSecurityProxy -from zope.publisher.interfaces import IPublication, IHeld -from zope.publisher.interfaces import NotFound, DebugError, Unauthorized -from zope.publisher.interfaces import IRequest, IResponse, IDebugFlags +from zope.publisher._compat import PYTHON2 +from zope.publisher.interfaces import DebugError +from zope.publisher.interfaces import IDebugFlags +from zope.publisher.interfaces import IHeld +from zope.publisher.interfaces import IPublication +from zope.publisher.interfaces import IRequest +from zope.publisher.interfaces import IResponse +from zope.publisher.interfaces import NotFound +from zope.publisher.interfaces import Unauthorized from zope.publisher.publish import mapply -from zope.publisher._compat import PYTHON2 _marker = object() diff --git a/src/zope/publisher/browser.py b/src/zope/publisher/browser.py index f36c299c..c70284d8 100644 --- a/src/zope/publisher/browser.py +++ b/src/zope/publisher/browser.py @@ -18,40 +18,41 @@ HTML form data and convert them into a Python-native format. Even file data is packaged into a nice, Python-friendly 'FileUpload' object. """ -from email.message import Message import re +from email.message import Message -import multipart import six from six.moves.urllib.parse import parse_qsl + +import multipart import zope.component import zope.interface -from zope.interface import implementer, directlyProvides -from zope.i18n.interfaces import IUserPreferredLanguages -from zope.i18n.interfaces import IUserPreferredCharsets from zope.i18n.interfaces import IModifiableUserPreferredLanguages +from zope.i18n.interfaces import IUserPreferredCharsets +from zope.i18n.interfaces import IUserPreferredLanguages +from zope.interface import directlyProvides +from zope.interface import implementer from zope.location import Location -from zope.publisher.interfaces import IHeld, NotFound -from zope.publisher.interfaces.browser import IBrowserRequest -from zope.publisher.interfaces.browser import IDefaultBrowserLayer -from zope.publisher.interfaces.browser import IBrowserApplicationRequest -from zope.publisher.interfaces.browser import IBrowserView -from zope.publisher.interfaces.browser import IBrowserPage -from zope.publisher.interfaces.http import IHTTPRequest +from zope.publisher._compat import PYTHON2 from zope.publisher.http import HTTPRequest from zope.publisher.http import HTTPResponse from zope.publisher.http import getCharsetUsingRequest - # BBB imports, these components got moved from this module -from zope.publisher.interfaces import ISkinType # noqa: F401 import unused +from zope.publisher.interfaces import IHeld from zope.publisher.interfaces import ISkinChangedEvent # noqa: F401 +from zope.publisher.interfaces import ISkinType # noqa: F401 import unused +from zope.publisher.interfaces import NotFound +from zope.publisher.interfaces.browser import IBrowserApplicationRequest +from zope.publisher.interfaces.browser import IBrowserPage +from zope.publisher.interfaces.browser import IBrowserRequest +from zope.publisher.interfaces.browser import IBrowserView +from zope.publisher.interfaces.browser import IDefaultBrowserLayer +from zope.publisher.interfaces.http import IHTTPRequest +from zope.publisher.skinnable import SkinChangedEvent # noqa: F401 +from zope.publisher.skinnable import applySkin # noqa: F401 from zope.publisher.skinnable import getDefaultSkin # noqa: F401 from zope.publisher.skinnable import setDefaultSkin # noqa: F401 -from zope.publisher.skinnable import applySkin # noqa: F401 -from zope.publisher.skinnable import SkinChangedEvent # noqa: F401 - -from zope.publisher._compat import PYTHON2 __ArrayTypes = (list, tuple) diff --git a/src/zope/publisher/contenttype.py b/src/zope/publisher/contenttype.py index 60fc3737..e556b677 100644 --- a/src/zope/publisher/contenttype.py +++ b/src/zope/publisher/contenttype.py @@ -18,6 +18,6 @@ """ # BBB +from zope.contenttype.parse import join # noqa: F401 import unused from zope.contenttype.parse import parse # noqa: F401 import unused from zope.contenttype.parse import parseOrdered # noqa: F401 import unused -from zope.contenttype.parse import join # noqa: F401 import unused diff --git a/src/zope/publisher/defaultview.py b/src/zope/publisher/defaultview.py index 2ef97e10..ce78cb9c 100644 --- a/src/zope/publisher/defaultview.py +++ b/src/zope/publisher/defaultview.py @@ -13,10 +13,10 @@ ############################################################################## """Default view name API """ -from zope.interface.interfaces import ComponentLookupError +import zope.interface from zope.component import getSiteManager +from zope.interface.interfaces import ComponentLookupError -import zope.interface from zope.publisher.interfaces import IDefaultViewName diff --git a/src/zope/publisher/ftp.py b/src/zope/publisher/ftp.py index 7f686fc1..401605cd 100644 --- a/src/zope/publisher/ftp.py +++ b/src/zope/publisher/ftp.py @@ -14,9 +14,13 @@ """FTP Publisher """ import six + from zope.interface import implementer -from zope.publisher.interfaces.ftp import IFTPCredentials, IFTPRequest -from zope.publisher.base import BaseResponse, BaseRequest + +from zope.publisher.base import BaseRequest +from zope.publisher.base import BaseResponse +from zope.publisher.interfaces.ftp import IFTPCredentials +from zope.publisher.interfaces.ftp import IFTPRequest class FTPResponse(BaseResponse): diff --git a/src/zope/publisher/http.py b/src/zope/publisher/http.py index dec92138..7ef3b906 100644 --- a/src/zope/publisher/http.py +++ b/src/zope/publisher/http.py @@ -13,15 +13,29 @@ ############################################################################## """HTTP Publisher """ -import re import base64 +import logging +import re +import tempfile from io import BytesIO + +import zope.component +import zope.contenttype.parse +import zope.event +import zope.interface from zope.i18n.interfaces import IUserPreferredCharsets from zope.i18n.interfaces import IUserPreferredLanguages -from zope.i18n.locales import locales, LoadLocaleError -from zope.publisher.base import BaseRequest, BaseResponse +from zope.i18n.locales import LoadLocaleError +from zope.i18n.locales import locales + +from zope.publisher._compat import CLASS_TYPES +from zope.publisher._compat import PYTHON2 +from zope.publisher._compat import to_unicode +from zope.publisher.base import BaseRequest +from zope.publisher.base import BaseResponse from zope.publisher.base import RequestDataGetter -from zope.publisher.base import RequestDataProperty, RequestDataMapper +from zope.publisher.base import RequestDataMapper +from zope.publisher.base import RequestDataProperty from zope.publisher.interfaces import ISkinnable from zope.publisher.interfaces import Redirect from zope.publisher.interfaces.http import IHTTPApplicationRequest @@ -33,24 +47,19 @@ from zope.publisher.interfaces.http import IResult from zope.publisher.interfaces.logginginfo import ILoggingInfo from zope.publisher.skinnable import setDefaultSkin -import logging -import tempfile -import zope.component -import zope.contenttype.parse -import zope.event -import zope.interface -from zope.publisher._compat import PYTHON2, CLASS_TYPES, to_unicode if PYTHON2: - import Cookie as cookies + from cgi import escape from urllib import quote + + import Cookie as cookies from urlparse import urlsplit - from cgi import escape else: import http.cookies as cookies - from urllib.parse import quote, urlsplit from html import escape + from urllib.parse import quote + from urllib.parse import urlsplit unicode = str basestring = (str, bytes) diff --git a/src/zope/publisher/interfaces/__init__.py b/src/zope/publisher/interfaces/__init__.py index 87486135..4fa5dc20 100644 --- a/src/zope/publisher/interfaces/__init__.py +++ b/src/zope/publisher/interfaces/__init__.py @@ -14,16 +14,16 @@ """Interfaces for the publisher. """ # BBB -from zope.browser.interfaces import IView # noqa: F401 import unused -from zope.interface import Interface +from zope.browser.interfaces import IView # noqa: F401 import unused from zope.interface import Attribute +from zope.interface import Interface from zope.interface import implementer -from zope.interface.interfaces import IInterface -from zope.interface.common.mapping import IEnumerableMapping from zope.interface.common.interfaces import IException from zope.interface.common.interfaces import ILookupError -from zope.security.interfaces import IParticipation +from zope.interface.common.mapping import IEnumerableMapping +from zope.interface.interfaces import IInterface # BBB: +from zope.security.interfaces import IParticipation from zope.security.interfaces import Unauthorized # noqa: F401 import unused diff --git a/src/zope/publisher/interfaces/browser.py b/src/zope/publisher/interfaces/browser.py index b6a24788..0eebe130 100644 --- a/src/zope/publisher/interfaces/browser.py +++ b/src/zope/publisher/interfaces/browser.py @@ -13,22 +13,21 @@ ############################################################################## """Browser Interfaces """ +from zope.browser.interfaces import IBrowserView # BBB import from zope.interface import Attribute from zope.interface import alsoProvides -from zope.browser.interfaces import IBrowserView # BBB import +# BBB moved to zope.publisher.interfaces since not only browser request +# can use the skin pattern +from zope.publisher.interfaces import IDefaultSkin # noqa: F401 import unused from zope.publisher.interfaces import IPublication from zope.publisher.interfaces import IPublishTraverse -from zope.publisher.interfaces import ISkinType +from zope.publisher.interfaces import ISkinChangedEvent # noqa: F401 from zope.publisher.interfaces import ISkinnable +from zope.publisher.interfaces import ISkinType from zope.publisher.interfaces.http import IHTTPApplicationRequest from zope.publisher.interfaces.http import IHTTPRequest -# BBB moved to zope.publisher.interfaces since not only browser request -# can use the skin pattern -from zope.publisher.interfaces import IDefaultSkin # noqa: F401 import unused -from zope.publisher.interfaces import ISkinChangedEvent # noqa: F401 - class IBrowserApplicationRequest(IHTTPApplicationRequest): """Browser-specific requests diff --git a/src/zope/publisher/interfaces/http.py b/src/zope/publisher/interfaces/http.py index 371b732b..43a2ed33 100644 --- a/src/zope/publisher/interfaces/http.py +++ b/src/zope/publisher/interfaces/http.py @@ -13,8 +13,8 @@ ############################################################################## """HTTP-related publisher interfaces. """ -from zope.interface import Interface from zope.interface import Attribute +from zope.interface import Interface from zope.interface import implementer from zope.interface.common.interfaces import IException diff --git a/src/zope/publisher/interfaces/xmlrpc.py b/src/zope/publisher/interfaces/xmlrpc.py index 817cefab..75649814 100644 --- a/src/zope/publisher/interfaces/xmlrpc.py +++ b/src/zope/publisher/interfaces/xmlrpc.py @@ -18,8 +18,9 @@ from zope.interface import Interface -from zope.publisher.interfaces import IPublication, IView +from zope.publisher.interfaces import IPublication from zope.publisher.interfaces import IPublishTraverse +from zope.publisher.interfaces import IView from zope.publisher.interfaces.http import IHTTPRequest diff --git a/src/zope/publisher/paste.py b/src/zope/publisher/paste.py index dc0f7479..af9ac843 100644 --- a/src/zope/publisher/paste.py +++ b/src/zope/publisher/paste.py @@ -13,10 +13,12 @@ ############################################################################## import pkg_resources + import zope.publisher.browser import zope.publisher.http import zope.publisher.publish + browser_methods = set(('GET', 'HEAD', 'POST')) diff --git a/src/zope/publisher/principallogging.py b/src/zope/publisher/principallogging.py index 3860865e..e1addcf5 100644 --- a/src/zope/publisher/principallogging.py +++ b/src/zope/publisher/principallogging.py @@ -18,9 +18,10 @@ """ from zope.component import adapter from zope.interface import implementer -from zope.publisher.interfaces.logginginfo import ILoggingInfo from zope.security.interfaces import IPrincipal +from zope.publisher.interfaces.logginginfo import ILoggingInfo + @adapter(IPrincipal) @implementer(ILoggingInfo) diff --git a/src/zope/publisher/publish.py b/src/zope/publisher/publish.py index 81d73903..8e5c1979 100644 --- a/src/zope/publisher/publish.py +++ b/src/zope/publisher/publish.py @@ -18,11 +18,15 @@ import sys import six -from zope import component + from zope.interface import implementer -from zope.publisher.interfaces import Retry, IReRaiseException from zope.proxy import removeAllProxies +from zope import component +from zope.publisher.interfaces import IReRaiseException +from zope.publisher.interfaces import Retry + + _marker = object() # Create a new marker object. diff --git a/src/zope/publisher/testing.py b/src/zope/publisher/testing.py index ac364027..5bb76d54 100644 --- a/src/zope/publisher/testing.py +++ b/src/zope/publisher/testing.py @@ -12,15 +12,17 @@ # ############################################################################## -import re import contextlib -import zope.publisher.browser +import re + import zope.security.management import zope.security.testing from zope.testing import renormalizing +import zope.publisher.browser from zope.publisher._compat import PYTHON2 + if PYTHON2: rules = [(re.compile("b('.*?')"), r"\1"), (re.compile('b(".*?")'), r"\1"), diff --git a/src/zope/publisher/tests/basetestiapplicationrequest.py b/src/zope/publisher/tests/basetestiapplicationrequest.py index 77165bf4..18505709 100644 --- a/src/zope/publisher/tests/basetestiapplicationrequest.py +++ b/src/zope/publisher/tests/basetestiapplicationrequest.py @@ -13,12 +13,11 @@ ############################################################################## """IApplicationRequest Base Test """ -from zope.interface.verify import verifyObject -from zope.publisher.interfaces import IApplicationRequest - from zope.interface.common.tests.basemapping import BaseTestIEnumerableMapping - from zope.interface.common.tests.basemapping import testIReadMapping +from zope.interface.verify import verifyObject + +from zope.publisher.interfaces import IApplicationRequest class BaseTestIApplicationRequest(BaseTestIEnumerableMapping): diff --git a/src/zope/publisher/tests/basetestipublicationrequest.py b/src/zope/publisher/tests/basetestipublicationrequest.py index 24b1bdb7..4215ca9a 100644 --- a/src/zope/publisher/tests/basetestipublicationrequest.py +++ b/src/zope/publisher/tests/basetestipublicationrequest.py @@ -15,9 +15,13 @@ """ import sys -from zope.interface import Interface, directlyProvides, implementer +from zope.interface import Interface +from zope.interface import directlyProvides +from zope.interface import implementer from zope.interface.verify import verifyObject -from zope.publisher.interfaces import IPublicationRequest, IHeld + +from zope.publisher.interfaces import IHeld +from zope.publisher.interfaces import IPublicationRequest from zope.publisher.interfaces.browser import IBrowserSkinType diff --git a/src/zope/publisher/tests/basetestipublisherrequest.py b/src/zope/publisher/tests/basetestipublisherrequest.py index 65b0d6df..3948644c 100644 --- a/src/zope/publisher/tests/basetestipublisherrequest.py +++ b/src/zope/publisher/tests/basetestipublisherrequest.py @@ -15,6 +15,7 @@ """ from zope.interface.verify import verifyObject + from zope.publisher.interfaces import IPublisherRequest diff --git a/src/zope/publisher/tests/publication.py b/src/zope/publisher/tests/publication.py index 5cf56772..efa48747 100644 --- a/src/zope/publisher/tests/publication.py +++ b/src/zope/publisher/tests/publication.py @@ -14,9 +14,10 @@ """Publication test """ -from zope.publisher.interfaces import IPublication from zope.interface import implementer +from zope.publisher.interfaces import IPublication + @implementer(IPublication) class TestPublication(object): diff --git a/src/zope/publisher/tests/test_baserequest.py b/src/zope/publisher/tests/test_baserequest.py index 4ea698fc..a88c82f9 100644 --- a/src/zope/publisher/tests/test_baserequest.py +++ b/src/zope/publisher/tests/test_baserequest.py @@ -13,20 +13,20 @@ ############################################################################## """baserequest tests """ -from unittest import TestCase, makeSuite - -from zope.publisher.tests.basetestipublicationrequest \ - import BaseTestIPublicationRequest - -from zope.publisher.tests.basetestipublisherrequest \ - import BaseTestIPublisherRequest - -from zope.publisher.tests.basetestiapplicationrequest \ - import BaseTestIApplicationRequest - from io import BytesIO -from zope.interface import Interface, alsoProvides +from unittest import TestCase +from unittest import makeSuite + from zope.component import provideAdapter +from zope.interface import Interface +from zope.interface import alsoProvides + +from zope.publisher.tests.basetestiapplicationrequest import \ + BaseTestIApplicationRequest +from zope.publisher.tests.basetestipublicationrequest import \ + BaseTestIPublicationRequest +from zope.publisher.tests.basetestipublisherrequest import \ + BaseTestIPublisherRequest class TestBaseRequest(BaseTestIPublicationRequest, @@ -96,10 +96,11 @@ def test_SetRequestInResponse(self): def test_retry_keeps_everything(self): """lowlevel test for retry (see #98440)""" from zope.publisher.browser import TestRequest - from zope.publisher.skinnable import setDefaultSkin from zope.publisher.interfaces import IDefaultSkin from zope.publisher.interfaces.browser import IBrowserRequest from zope.publisher.interfaces.browser import IBrowserSkinType + from zope.publisher.skinnable import setDefaultSkin + # create a retryable request request = TestRequest() self.assertTrue(request.supportsRetry()) diff --git a/src/zope/publisher/tests/test_baseresponse.py b/src/zope/publisher/tests/test_baseresponse.py index 6dc5fadd..f4cc365d 100644 --- a/src/zope/publisher/tests/test_baseresponse.py +++ b/src/zope/publisher/tests/test_baseresponse.py @@ -14,10 +14,14 @@ """Tests for BaseResponse """ -from unittest import TestCase, TestSuite, makeSuite +from unittest import TestCase +from unittest import TestSuite +from unittest import makeSuite + +from zope.interface.verify import verifyObject + from zope.publisher.base import BaseResponse from zope.publisher.interfaces import IResponse -from zope.interface.verify import verifyObject class TestBaseResponse(TestCase): diff --git a/src/zope/publisher/tests/test_browser.py b/src/zope/publisher/tests/test_browser.py index 7af9d6f3..b91913d8 100644 --- a/src/zope/publisher/tests/test_browser.py +++ b/src/zope/publisher/tests/test_browser.py @@ -19,6 +19,7 @@ from zope.testing.renormalizing import RENormalizing + __docformat__ = "reStructuredText" diff --git a/src/zope/publisher/tests/test_browserlanguages.py b/src/zope/publisher/tests/test_browserlanguages.py index 150cab96..60fdfd97 100644 --- a/src/zope/publisher/tests/test_browserlanguages.py +++ b/src/zope/publisher/tests/test_browserlanguages.py @@ -20,6 +20,7 @@ from zope.publisher.browser import ModifiableBrowserLanguages from zope.publisher.browser import NotCompatibleAdapterError + # Note: The expected output is in order of preference, # empty 'q=' means 'q=1', and if theres more than one # empty, we assume they are in order of preference. diff --git a/src/zope/publisher/tests/test_browserrequest.py b/src/zope/publisher/tests/test_browserrequest.py index 2575b54d..d3611328 100644 --- a/src/zope/publisher/tests/test_browserrequest.py +++ b/src/zope/publisher/tests/test_browserrequest.py @@ -20,26 +20,24 @@ from zope.interface import implementer from zope.interface.verify import verifyObject -from zope.publisher.publish import publish as publish_ -from zope.publisher.http import HTTPCharsets +from zope.publisher._compat import PYTHON2 +from zope.publisher.base import DefaultPublication from zope.publisher.browser import BrowserRequest -from zope.publisher.interfaces import NotFound +from zope.publisher.http import HTTPCharsets from zope.publisher.interfaces import ISkinnable +from zope.publisher.interfaces import NotFound from zope.publisher.interfaces.browser import IBrowserApplicationRequest -from zope.publisher.interfaces.browser import IBrowserRequest from zope.publisher.interfaces.browser import IBrowserPublication -from zope.publisher.base import DefaultPublication - -from zope.publisher._compat import PYTHON2 -from zope.publisher.tests.test_http import HTTPTests +from zope.publisher.interfaces.browser import IBrowserRequest +from zope.publisher.publish import publish as publish_ +from zope.publisher.tests.basetestiapplicationrequest import \ + BaseTestIApplicationRequest +from zope.publisher.tests.basetestipublicationrequest import \ + BaseTestIPublicationRequest +from zope.publisher.tests.basetestipublisherrequest import \ + BaseTestIPublisherRequest from zope.publisher.tests.publication import TestPublication - -from zope.publisher.tests.basetestipublicationrequest \ - import BaseTestIPublicationRequest -from zope.publisher.tests.basetestipublisherrequest \ - import BaseTestIPublisherRequest -from zope.publisher.tests.basetestiapplicationrequest \ - import BaseTestIApplicationRequest +from zope.publisher.tests.test_http import HTTPTests EMPTY_FILE_BODY = b"""-----------------------------1 diff --git a/src/zope/publisher/tests/test_browserresponse.py b/src/zope/publisher/tests/test_browserresponse.py index 5afbee34..d4b7304b 100644 --- a/src/zope/publisher/tests/test_browserresponse.py +++ b/src/zope/publisher/tests/test_browserresponse.py @@ -15,13 +15,16 @@ """ import sys -from unittest import TestCase, TestSuite, makeSuite -from zope.publisher.browser import BrowserResponse +from unittest import TestCase +from unittest import TestSuite +from unittest import makeSuite + from zope.interface.verify import verifyObject -from zope.publisher.interfaces.http import IHTTPResponse -from zope.publisher.interfaces.http import IHTTPApplicationResponse +from zope.publisher.browser import BrowserResponse from zope.publisher.interfaces import IResponse +from zope.publisher.interfaces.http import IHTTPApplicationResponse +from zope.publisher.interfaces.http import IHTTPResponse # TODO: Waaa need more tests diff --git a/src/zope/publisher/tests/test_defaultview.py b/src/zope/publisher/tests/test_defaultview.py index 6b6adca4..ad56ae92 100644 --- a/src/zope/publisher/tests/test_defaultview.py +++ b/src/zope/publisher/tests/test_defaultview.py @@ -14,6 +14,7 @@ """Default View Tests """ from doctest import DocTestSuite + from zope.testing.cleanup import cleanUp diff --git a/src/zope/publisher/tests/test_ftp.py b/src/zope/publisher/tests/test_ftp.py index 30b01428..4cd6ffb3 100644 --- a/src/zope/publisher/tests/test_ftp.py +++ b/src/zope/publisher/tests/test_ftp.py @@ -15,7 +15,10 @@ """ import sys from io import BytesIO -from unittest import TestCase, TestSuite, makeSuite +from unittest import TestCase +from unittest import TestSuite +from unittest import makeSuite + import zope.publisher.ftp diff --git a/src/zope/publisher/tests/test_http.py b/src/zope/publisher/tests/test_http.py index 18239d1d..999205a7 100644 --- a/src/zope/publisher/tests/test_http.py +++ b/src/zope/publisher/tests/test_http.py @@ -17,35 +17,40 @@ import sys import tempfile import unittest +from doctest import DocFileSuite +from doctest import DocTestSuite from io import BytesIO -from doctest import DocFileSuite, DocTestSuite import zope.event from zope.component import provideAdapter from zope.i18n.interfaces.locales import ILocale +from zope.interface import implementer from zope.interface.verify import verifyObject from zope.security.checker import ProxyFactory from zope.security.proxy import removeSecurityProxy -from zope.interface import implementer -from zope.publisher.interfaces.logginginfo import ILoggingInfo -from zope.publisher.http import HTTPRequest, HTTPResponse -from zope.publisher.http import HTTPInputStream, DirectResult, HTTPCharsets -from zope.publisher.publish import publish from zope.publisher.base import DefaultPublication +from zope.publisher.http import DirectResult +from zope.publisher.http import HTTPCharsets +from zope.publisher.http import HTTPInputStream +from zope.publisher.http import HTTPRequest +from zope.publisher.http import HTTPResponse +from zope.publisher.interfaces import IResponse from zope.publisher.interfaces import NotFound -from zope.publisher.interfaces.http import IHTTPRequest, IHTTPResponse from zope.publisher.interfaces.http import IHTTPApplicationResponse -from zope.publisher.interfaces import IResponse +from zope.publisher.interfaces.http import IHTTPRequest +from zope.publisher.interfaces.http import IHTTPResponse +from zope.publisher.interfaces.logginginfo import ILoggingInfo +from zope.publisher.publish import publish +from zope.publisher.testing import output_checker +from zope.publisher.tests.basetestiapplicationrequest import \ + BaseTestIApplicationRequest +from zope.publisher.tests.basetestipublicationrequest import \ + BaseTestIPublicationRequest +from zope.publisher.tests.basetestipublisherrequest import \ + BaseTestIPublisherRequest from zope.publisher.tests.publication import TestPublication -from zope.publisher.tests.basetestipublicationrequest \ - import BaseTestIPublicationRequest -from zope.publisher.tests.basetestipublisherrequest \ - import BaseTestIPublisherRequest -from zope.publisher.tests.basetestiapplicationrequest \ - import BaseTestIApplicationRequest -from zope.publisher.testing import output_checker if sys.version_info[0] > 2: from http.cookies import CookieError @@ -397,9 +402,10 @@ def testRequestLocale(self): eq = self.assertEqual unless = self.assertTrue + from zope.i18n.interfaces import IUserPreferredLanguages + from zope.publisher.browser import BrowserLanguages from zope.publisher.interfaces.http import IHTTPRequest - from zope.i18n.interfaces import IUserPreferredLanguages provideAdapter(BrowserLanguages, [IHTTPRequest], IUserPreferredLanguages) @@ -529,8 +535,9 @@ def testHeaders(self): 'another') def testBasicAuth(self): - from zope.publisher.interfaces.http import IHTTPCredentials import base64 + + from zope.publisher.interfaces.http import IHTTPCredentials req = self._createRequest() verifyObject(IHTTPCredentials, req) lpq = req._authUserPW() @@ -654,8 +661,8 @@ def traverseName(self, request, ob, name, check_auth=1): self.assertEqual(len(hooks), 3) def testInterface(self): - from zope.publisher.interfaces.http import IHTTPCredentials from zope.publisher.interfaces.http import IHTTPApplicationRequest + from zope.publisher.interfaces.http import IHTTPCredentials rq = self._createRequest() verifyObject(IHTTPRequest, rq) verifyObject(IHTTPCredentials, rq) @@ -760,8 +767,9 @@ def getPreferredCharsets(self): call_log.append(None) return ['utf-8q=0'] - from zope.publisher.interfaces.http import IHTTPRequest from zope.i18n.interfaces import IUserPreferredCharsets + + from zope.publisher.interfaces.http import IHTTPRequest provideAdapter(MyCharsets, [IHTTPRequest], IUserPreferredCharsets) @@ -798,7 +806,7 @@ def _parseResult(self, response): def _getResultFromResponse(self, body, charset='utf-8', headers=None): response = self._createResponse() - assert(charset == 'utf-8') + assert charset == 'utf-8' if headers is not None: for hdr, val in headers.items(): response.setHeader(hdr, val) diff --git a/src/zope/publisher/tests/test_ipublication.py b/src/zope/publisher/tests/test_ipublication.py index 4f87b2ee..eeafe7d5 100644 --- a/src/zope/publisher/tests/test_ipublication.py +++ b/src/zope/publisher/tests/test_ipublication.py @@ -15,8 +15,10 @@ """ import sys -from unittest import TestCase, makeSuite from io import BytesIO +from unittest import TestCase +from unittest import makeSuite + from zope.interface.verify import verifyObject from zope.publisher.interfaces import IPublication diff --git a/src/zope/publisher/tests/test_mapply.py b/src/zope/publisher/tests/test_mapply.py index 468c1fb1..df3b91ae 100644 --- a/src/zope/publisher/tests/test_mapply.py +++ b/src/zope/publisher/tests/test_mapply.py @@ -15,8 +15,8 @@ """ import unittest -from zope.publisher.publish import mapply from zope.publisher._compat import PYTHON2 +from zope.publisher.publish import mapply class AncientMethodCode(object): diff --git a/src/zope/publisher/tests/test_paste.py b/src/zope/publisher/tests/test_paste.py index 218ddb32..bb0a884f 100644 --- a/src/zope/publisher/tests/test_paste.py +++ b/src/zope/publisher/tests/test_paste.py @@ -11,8 +11,8 @@ # FOR A PARTICULAR PURPOSE. # ############################################################################## -import unittest import doctest +import unittest class SamplePublication(object): diff --git a/src/zope/publisher/tests/test_principallogging.py b/src/zope/publisher/tests/test_principallogging.py index 25c987ba..d36969f9 100644 --- a/src/zope/publisher/tests/test_principallogging.py +++ b/src/zope/publisher/tests/test_principallogging.py @@ -14,6 +14,7 @@ """Test for PrincipalLogging adapter. """ import unittest + from zope.interface.verify import verifyObject diff --git a/src/zope/publisher/tests/test_publisher.py b/src/zope/publisher/tests/test_publisher.py index 511d055e..0c42a3b5 100644 --- a/src/zope/publisher/tests/test_publisher.py +++ b/src/zope/publisher/tests/test_publisher.py @@ -14,19 +14,22 @@ """Test Publisher """ import unittest +from io import BytesIO -from zope import component -from zope.publisher.publish import publish, DoNotReRaiseException -from zope.publisher.base import TestRequest -from zope.publisher.base import DefaultPublication -from zope.publisher.interfaces import Unauthorized, NotFound, DebugError -from zope.publisher.interfaces import IPublication, IReRaiseException, \ - Retry - -from zope.interface.verify import verifyClass from zope.interface import implementedBy +from zope.interface.verify import verifyClass -from io import BytesIO +from zope import component +from zope.publisher.base import DefaultPublication +from zope.publisher.base import TestRequest +from zope.publisher.interfaces import DebugError +from zope.publisher.interfaces import IPublication +from zope.publisher.interfaces import IReRaiseException +from zope.publisher.interfaces import NotFound +from zope.publisher.interfaces import Retry +from zope.publisher.interfaces import Unauthorized +from zope.publisher.publish import DoNotReRaiseException +from zope.publisher.publish import publish class ErrorToRetry(Exception): diff --git a/src/zope/publisher/tests/test_requestdataproperty.py b/src/zope/publisher/tests/test_requestdataproperty.py index b92a5510..227587ad 100644 --- a/src/zope/publisher/tests/test_requestdataproperty.py +++ b/src/zope/publisher/tests/test_requestdataproperty.py @@ -13,13 +13,15 @@ ############################################################################## """Request Data-Property Tests """ -from unittest import TestCase, makeSuite +from unittest import TestCase +from unittest import makeSuite -from zope.interface.common.tests.basemapping \ - import testIEnumerableMapping, testIReadMapping +from zope.interface.common.tests.basemapping import testIEnumerableMapping +from zope.interface.common.tests.basemapping import testIReadMapping -from zope.publisher.base \ - import RequestDataProperty, RequestDataGetter, RequestDataMapper +from zope.publisher.base import RequestDataGetter +from zope.publisher.base import RequestDataMapper +from zope.publisher.base import RequestDataProperty class TestDataGettr(RequestDataGetter): diff --git a/src/zope/publisher/tests/test_skinnable.py b/src/zope/publisher/tests/test_skinnable.py index 041c434d..4c031181 100644 --- a/src/zope/publisher/tests/test_skinnable.py +++ b/src/zope/publisher/tests/test_skinnable.py @@ -14,9 +14,9 @@ ############################################################################## """HTTP Publisher Tests """ +import doctest import re import unittest -import doctest import zope.testing from zope.testing.renormalizing import RENormalizing diff --git a/src/zope/publisher/tests/test_testing.py b/src/zope/publisher/tests/test_testing.py index 531e0bde..5ef5d349 100644 --- a/src/zope/publisher/tests/test_testing.py +++ b/src/zope/publisher/tests/test_testing.py @@ -13,10 +13,13 @@ ############################################################################## from __future__ import with_statement + import unittest -import zope.publisher.testing + import zope.security.management +import zope.publisher.testing + class InteractionHelperTest(unittest.TestCase): diff --git a/src/zope/publisher/tests/test_xmlrpc.py b/src/zope/publisher/tests/test_xmlrpc.py index f016ae03..10fed036 100644 --- a/src/zope/publisher/tests/test_xmlrpc.py +++ b/src/zope/publisher/tests/test_xmlrpc.py @@ -17,8 +17,12 @@ import unittest import zope.component.testing +from zope.security.checker import Checker +from zope.security.checker import CheckerPublic +from zope.security.checker import defineChecker + from zope.publisher import xmlrpc -from zope.security.checker import defineChecker, Checker, CheckerPublic + try: import xmlrpclib diff --git a/src/zope/publisher/tests/test_zcml.py b/src/zope/publisher/tests/test_zcml.py index 92ebae35..67c23ec3 100644 --- a/src/zope/publisher/tests/test_zcml.py +++ b/src/zope/publisher/tests/test_zcml.py @@ -13,21 +13,26 @@ ############################################################################## """Tests for browser:defaultSkin and browser:defaultView directives """ -from io import BytesIO import doctest import unittest +from io import BytesIO +from zope.configuration.xmlconfig import XMLConfig +from zope.configuration.xmlconfig import xmlconfig +from zope.interface import Interface +from zope.interface import directlyProvides +from zope.interface import implementer +from zope.interface import providedBy from zope.testing import cleanup -from zope import component -from zope.configuration.xmlconfig import XMLConfig, xmlconfig -from zope.publisher.browser import TestRequest, BrowserView +import zope.publisher +from zope import component +from zope.publisher.browser import BrowserView +from zope.publisher.browser import TestRequest from zope.publisher.defaultview import getDefaultViewName -from zope.publisher.interfaces import IDefaultViewName, IDefaultSkin +from zope.publisher.interfaces import IDefaultSkin +from zope.publisher.interfaces import IDefaultViewName from zope.publisher.interfaces.browser import IBrowserRequest -from zope.interface import Interface, implementer, providedBy, directlyProvides - -import zope.publisher class IOb(Interface): diff --git a/src/zope/publisher/tests/views.py b/src/zope/publisher/tests/views.py index 77537bec..c528c0b4 100644 --- a/src/zope/publisher/tests/views.py +++ b/src/zope/publisher/tests/views.py @@ -15,6 +15,7 @@ """ from zope.interface import Interface + from zope.publisher.browser import BrowserView diff --git a/src/zope/publisher/tests/xmlrpcviews.py b/src/zope/publisher/tests/xmlrpcviews.py index bcac25ec..0ba3d880 100644 --- a/src/zope/publisher/tests/xmlrpcviews.py +++ b/src/zope/publisher/tests/xmlrpcviews.py @@ -13,7 +13,9 @@ ############################################################################## """XML-RPC Views test objects """ -from zope.interface import Interface, implementer +from zope.interface import Interface +from zope.interface import implementer + from zope.publisher.interfaces.xmlrpc import IXMLRPCPublisher diff --git a/src/zope/publisher/xmlrpc.py b/src/zope/publisher/xmlrpc.py index 1cc51922..03b08adf 100644 --- a/src/zope/publisher/xmlrpc.py +++ b/src/zope/publisher/xmlrpc.py @@ -15,19 +15,23 @@ This module contains the XMLRPCRequest and XMLRPCResponse """ -import sys import datetime +import sys from io import BytesIO import zope.component import zope.interface from zope.interface import implementer -from zope.publisher.interfaces.xmlrpc import \ - IXMLRPCRequest, IXMLRPCPremarshaller, IXMLRPCView - -from zope.publisher.http import HTTPRequest, HTTPResponse, DirectResult from zope.security.proxy import isinstance +from zope.publisher.http import DirectResult +from zope.publisher.http import HTTPRequest +from zope.publisher.http import HTTPResponse +from zope.publisher.interfaces.xmlrpc import IXMLRPCPremarshaller +from zope.publisher.interfaces.xmlrpc import IXMLRPCRequest +from zope.publisher.interfaces.xmlrpc import IXMLRPCView + + if sys.version_info[0] == 2: import xmlrpclib else: diff --git a/src/zope/publisher/zcml.py b/src/zope/publisher/zcml.py index 8ef66b04..c8b5025e 100644 --- a/src/zope/publisher/zcml.py +++ b/src/zope/publisher/zcml.py @@ -13,16 +13,18 @@ ############################################################################## """Default view and default skin ZCML configuration feature. """ -from zope import component from zope.component.interface import provideInterface from zope.component.zcml import handler -from zope.configuration.fields import GlobalObject, GlobalInterface +from zope.configuration.fields import GlobalInterface +from zope.configuration.fields import GlobalObject from zope.interface import Interface +from zope.schema import TextLine + +from zope import component from zope.publisher.interfaces import IDefaultViewName from zope.publisher.interfaces.browser import IBrowserRequest from zope.publisher.interfaces.browser import IBrowserSkinType from zope.publisher.interfaces.browser import IDefaultSkin -from zope.schema import TextLine class IDefaultSkinDirective(Interface): diff --git a/tox.ini b/tox.ini index 78ad9e2c..e39b2cc4 100644 --- a/tox.ini +++ b/tox.ini @@ -29,15 +29,25 @@ setenv = [testenv:lint] 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 = - flake8 check-manifest check-python-versions >= 0.19.1 wheel + flake8 + isort + +[testenv:isort-apply] +basepython = python3 +commands_pre = +deps = + isort commands = - flake8 src setup.py - check-manifest - check-python-versions + isort {toxinidir}/src {toxinidir}/setup.py [] [testenv:docs] basepython = python3