summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--HACKING.txt7
-rw-r--r--pyproject.toml8
-rw-r--r--src/pyramid/asset.py2
-rw-r--r--src/pyramid/authentication.py20
-rw-r--r--src/pyramid/authorization.py3
-rw-r--r--src/pyramid/config/__init__.py60
-rw-r--r--src/pyramid/config/actions.py3
-rw-r--r--src/pyramid/config/adapters.py10
-rw-r--r--src/pyramid/config/assets.py7
-rw-r--r--src/pyramid/config/factories.py9
-rw-r--r--src/pyramid/config/i18n.py6
-rw-r--r--src/pyramid/config/predicates.py6
-rw-r--r--src/pyramid/config/rendering.py3
-rw-r--r--src/pyramid/config/routes.py11
-rw-r--r--src/pyramid/config/security.py16
-rw-r--r--src/pyramid/config/testing.py7
-rw-r--r--src/pyramid/config/tweens.py12
-rw-r--r--src/pyramid/config/views.py70
-rw-r--r--src/pyramid/csrf.py4
-rw-r--r--src/pyramid/encode.py3
-rw-r--r--src/pyramid/events.py9
-rw-r--r--src/pyramid/exceptions.py2
-rw-r--r--src/pyramid/httpexceptions.py5
-rw-r--r--src/pyramid/i18n.py14
-rw-r--r--src/pyramid/path.py1
-rw-r--r--src/pyramid/predicates.py4
-rw-r--r--src/pyramid/registry.py5
-rw-r--r--src/pyramid/renderers.py8
-rw-r--r--src/pyramid/request.py13
-rw-r--r--src/pyramid/response.py3
-rw-r--r--src/pyramid/router.py26
-rw-r--r--src/pyramid/scripting.py5
-rw-r--r--src/pyramid/scripts/pdistreport.py6
-rw-r--r--src/pyramid/scripts/prequest.py5
-rw-r--r--src/pyramid/scripts/proutes.py14
-rw-r--r--src/pyramid/scripts/pserve.py6
-rw-r--r--src/pyramid/scripts/pshell.py12
-rw-r--r--src/pyramid/scripts/ptweens.py7
-rw-r--r--src/pyramid/scripts/pviews.py3
-rw-r--r--src/pyramid/security.py5
-rw-r--r--src/pyramid/session.py8
-rw-r--r--src/pyramid/static.py12
-rw-r--r--src/pyramid/testing.py23
-rw-r--r--src/pyramid/traversal.py10
-rw-r--r--src/pyramid/url.py10
-rw-r--r--src/pyramid/urldispatch.py7
-rw-r--r--src/pyramid/view.py29
-rw-r--r--src/pyramid/viewderivers.py19
-rw-r--r--src/pyramid/wsgi.py1
-rw-r--r--tests/pkgs/conflictapp/__init__.py2
-rw-r--r--tests/pkgs/defpermbugapp/__init__.py1
-rw-r--r--tests/pkgs/eventonly/__init__.py2
-rw-r--r--tests/pkgs/exceptionviewapp/views.py4
-rw-r--r--tests/pkgs/fixtureapp/views.py3
-rw-r--r--tests/pkgs/forbiddenapp/__init__.py1
-rw-r--r--tests/pkgs/forbiddenview/__init__.py4
-rw-r--r--tests/pkgs/legacysecurityapp/__init__.py2
-rw-r--r--tests/pkgs/notfoundview/__init__.py2
-rw-r--r--tests/pkgs/permbugapp/__init__.py3
-rw-r--r--tests/test_asset.py2
-rw-r--r--tests/test_authentication.py3
-rw-r--r--tests/test_config/__init__.py3
-rw-r--r--tests/test_config/pkgs/scannable/__init__.py2
-rw-r--r--tests/test_config/pkgs/scannable/another.py2
-rw-r--r--tests/test_config/pkgs/scannable/pod/notinit.py2
-rw-r--r--tests/test_config/pkgs/scannable/subpackage/__init__.py2
-rw-r--r--tests/test_config/pkgs/scannable/subpackage/notinit.py2
-rw-r--r--tests/test_config/pkgs/scannable/subpackage/subsubpackage/__init__.py2
-rw-r--r--tests/test_config/test_actions.py7
-rw-r--r--tests/test_config/test_assets.py1
-rw-r--r--tests/test_config/test_init.py21
-rw-r--r--tests/test_config/test_routes.py4
-rw-r--r--tests/test_config/test_security.py3
-rw-r--r--tests/test_config/test_testing.py3
-rw-r--r--tests/test_config/test_tweens.py5
-rw-r--r--tests/test_config/test_views.py13
-rw-r--r--tests/test_encode.py1
-rw-r--r--tests/test_events.py1
-rw-r--r--tests/test_i18n.py1
-rw-r--r--tests/test_location.py1
-rw-r--r--tests/test_paster.py1
-rw-r--r--tests/test_path.py2
-rw-r--r--tests/test_predicates.py1
-rw-r--r--tests/test_registry.py3
-rw-r--r--tests/test_request.py6
-rw-r--r--tests/test_response.py1
-rw-r--r--tests/test_scripts/dummy.py1
-rw-r--r--tests/test_scripts/test_prequest.py1
-rw-r--r--tests/test_scripts/test_proutes.py1
-rw-r--r--tests/test_scripts/test_pserve.py2
-rw-r--r--tests/test_scripts/test_pshell.py1
-rw-r--r--tests/test_scripts/test_ptweens.py1
-rw-r--r--tests/test_scripts/test_pviews.py1
-rw-r--r--tests/test_session.py1
-rw-r--r--tests/test_testing.py4
-rw-r--r--tests/test_threadlocal.py3
-rw-r--r--tests/test_traversal.py1
-rw-r--r--tests/test_tweens.py1
-rw-r--r--tests/test_url.py1
-rw-r--r--tests/test_urldispatch.py1
-rw-r--r--tests/test_util.py3
-rw-r--r--tests/test_view.py8
-rw-r--r--tests/test_viewderivers.py2
-rw-r--r--tox.ini6
104 files changed, 292 insertions, 405 deletions
diff --git a/HACKING.txt b/HACKING.txt
index 492b8675b..dc9ac008c 100644
--- a/HACKING.txt
+++ b/HACKING.txt
@@ -48,11 +48,10 @@ In order to add a feature to Pyramid:
Coding Style
------------
-- Pyramid uses Black for code formatting style.
- https://pypi.org/project/black/
- To run Black:
+- Pyramid uses Black (https://pypi.org/project/black/) and isort (https://pypi.org/project/black/) for code formatting style.
+ To run formatters:
- $ tox -e black
+ $ tox -e format
Running Tests
diff --git a/pyproject.toml b/pyproject.toml
index d8ec559df..6e28b2347 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -23,6 +23,12 @@ exclude = '''
[tool.isort]
multi_line_output = 3
include_trailing_comma = true
-force_grid_wrap = 0
+force_grid_wrap = false
combine_as_imports = true
+use_parenthesis = true
line_length = 79
+force_sort_within_sections = true
+no_lines_before = "THIRDPARTY"
+sections = "FUTURE,THIRDPARTY,FIRSTPARTY,LOCALFOLDER"
+default_section = "THIRDPARTY"
+known_first_party = "pyramid"
diff --git a/src/pyramid/asset.py b/src/pyramid/asset.py
index a32babe6c..b657bf68f 100644
--- a/src/pyramid/asset.py
+++ b/src/pyramid/asset.py
@@ -1,7 +1,7 @@
import os
import pkg_resources
-from pyramid.path import package_path, package_name
+from pyramid.path import package_name, package_path
def resolve_asset_spec(spec, pname='__main__'):
diff --git a/src/pyramid/authentication.py b/src/pyramid/authentication.py
index 500a84646..0ccc646c3 100644
--- a/src/pyramid/authentication.py
+++ b/src/pyramid/authentication.py
@@ -1,24 +1,24 @@
+import base64
import binascii
-from codecs import utf_8_decode
-from codecs import utf_8_encode
+from codecs import utf_8_decode, utf_8_encode
from collections import namedtuple
import hashlib
-import base64
import re
import time as time_mod
from urllib.parse import quote, unquote
import warnings
-
-from zope.interface import implementer
-
from webob.cookies import CookieProfile
+from zope.interface import implementer
from pyramid.interfaces import IAuthenticationPolicy, IDebugLogger
-
from pyramid.security import Authenticated, Everyone
-
-from pyramid.util import strings_differ, bytes_, ascii_, text_
-from pyramid.util import SimpleSerializer
+from pyramid.util import (
+ SimpleSerializer,
+ ascii_,
+ bytes_,
+ strings_differ,
+ text_,
+)
VALID_TOKEN = re.compile(r"^[A-Za-z][A-Za-z0-9+_-]*$")
diff --git a/src/pyramid/authorization.py b/src/pyramid/authorization.py
index 498938fd5..b7c5834f9 100644
--- a/src/pyramid/authorization.py
+++ b/src/pyramid/authorization.py
@@ -1,11 +1,8 @@
from zope.interface import implementer
from pyramid.interfaces import IAuthorizationPolicy
-
from pyramid.location import lineage
-
from pyramid.security import ACLAllowed, ACLDenied, Allow, Deny, Everyone
-
from pyramid.util import is_nonstr_iter
diff --git a/src/pyramid/config/__init__.py b/src/pyramid/config/__init__.py
index 4e22b946e..3d05617ca 100644
--- a/src/pyramid/config/__init__.py
+++ b/src/pyramid/config/__init__.py
@@ -3,49 +3,20 @@ import logging
import os
import threading
import venusian
-
from webob.exc import WSGIHTTPException as WebobWSGIHTTPException
-from pyramid.interfaces import (
- IDebugLogger,
- IExceptionResponse,
- PHASE0_CONFIG,
- PHASE1_CONFIG,
- PHASE2_CONFIG,
- PHASE3_CONFIG,
-)
-
from pyramid.asset import resolve_asset_spec
-
from pyramid.authorization import ACLAuthorizationPolicy
-
-from pyramid.events import ApplicationCreated
-
-from pyramid.exceptions import ConfigurationError
-
-from pyramid.httpexceptions import default_exceptionresponse_view
-
-from pyramid.path import caller_package, package_of
-
-from pyramid.registry import Introspectable, Introspector, Registry
-
-from pyramid.router import Router
-
-from pyramid.settings import aslist
-
-from pyramid.threadlocal import manager
-
-from pyramid.util import WeakOrderedSet, get_callable_name, object_description
-
-from pyramid.config.actions import action_method, ActionState
-from pyramid.config.predicates import not_
-
-from pyramid.config.actions import ActionConfiguratorMixin
+from pyramid.config.actions import (
+ ActionConfiguratorMixin,
+ ActionState,
+ action_method,
+)
from pyramid.config.adapters import AdaptersConfiguratorMixin
from pyramid.config.assets import AssetsConfiguratorMixin
from pyramid.config.factories import FactoriesConfiguratorMixin
from pyramid.config.i18n import I18NConfiguratorMixin
-from pyramid.config.predicates import PredicateConfiguratorMixin
+from pyramid.config.predicates import PredicateConfiguratorMixin, not_
from pyramid.config.rendering import RenderingConfiguratorMixin
from pyramid.config.routes import RoutesConfiguratorMixin
from pyramid.config.security import SecurityConfiguratorMixin
@@ -54,8 +25,23 @@ from pyramid.config.testing import TestingConfiguratorMixin
from pyramid.config.tweens import TweensConfiguratorMixin
from pyramid.config.views import ViewsConfiguratorMixin
from pyramid.config.zca import ZCAConfiguratorMixin
-
-from pyramid.path import DottedNameResolver
+from pyramid.events import ApplicationCreated
+from pyramid.exceptions import ConfigurationError
+from pyramid.httpexceptions import default_exceptionresponse_view
+from pyramid.interfaces import (
+ PHASE0_CONFIG,
+ PHASE1_CONFIG,
+ PHASE2_CONFIG,
+ PHASE3_CONFIG,
+ IDebugLogger,
+ IExceptionResponse,
+)
+from pyramid.path import DottedNameResolver, caller_package, package_of
+from pyramid.registry import Introspectable, Introspector, Registry
+from pyramid.router import Router
+from pyramid.settings import aslist
+from pyramid.threadlocal import manager
+from pyramid.util import WeakOrderedSet, get_callable_name, object_description
_marker = object()
diff --git a/src/pyramid/config/actions.py b/src/pyramid/config/actions.py
index 29d06d716..7a0ec500a 100644
--- a/src/pyramid/config/actions.py
+++ b/src/pyramid/config/actions.py
@@ -12,8 +12,7 @@ from pyramid.exceptions import (
)
from pyramid.interfaces import IActionInfo
from pyramid.registry import undefer
-from pyramid.util import is_nonstr_iter
-from pyramid.util import reraise
+from pyramid.util import is_nonstr_iter, reraise
class ActionConfiguratorMixin(object):
diff --git a/src/pyramid/config/adapters.py b/src/pyramid/config/adapters.py
index 54c239ab3..867b5d33f 100644
--- a/src/pyramid/config/adapters.py
+++ b/src/pyramid/config/adapters.py
@@ -1,14 +1,10 @@
-from webob import Response as WebobResponse
-
from functools import update_wrapper
-
+from webob import Response as WebobResponse
from zope.interface import Interface
-from pyramid.interfaces import IResponse, ITraverser, IResourceURL
-
-from pyramid.util import takes_one_arg
-
from pyramid.config.actions import action_method
+from pyramid.interfaces import IResourceURL, IResponse, ITraverser
+from pyramid.util import takes_one_arg
class AdaptersConfiguratorMixin(object):
diff --git a/src/pyramid/config/assets.py b/src/pyramid/config/assets.py
index e505fd204..8257a34a7 100644
--- a/src/pyramid/config/assets.py
+++ b/src/pyramid/config/assets.py
@@ -1,16 +1,13 @@
import os
import pkg_resources
import sys
-
from zope.interface import implementer
-from pyramid.interfaces import IPackageOverrides, PHASE1_CONFIG
-
+from pyramid.config.actions import action_method
from pyramid.exceptions import ConfigurationError
+from pyramid.interfaces import PHASE1_CONFIG, IPackageOverrides
from pyramid.threadlocal import get_current_registry
-from pyramid.config.actions import action_method
-
class OverrideProvider(pkg_resources.DefaultProvider):
def __init__(self, module):
diff --git a/src/pyramid/config/factories.py b/src/pyramid/config/factories.py
index 16211989f..ad64f5aaf 100644
--- a/src/pyramid/config/factories.py
+++ b/src/pyramid/config/factories.py
@@ -1,21 +1,18 @@
from zope.interface import implementer
+from pyramid.config.actions import action_method
from pyramid.interfaces import (
IDefaultRootFactory,
IExecutionPolicy,
+ IRequestExtensions,
IRequestFactory,
IResponseFactory,
- IRequestExtensions,
IRootFactory,
ISessionFactory,
)
-
from pyramid.router import default_execution_policy
from pyramid.traversal import DefaultRootFactory
-
-from pyramid.util import get_callable_name, InstancePropertyHelper
-
-from pyramid.config.actions import action_method
+from pyramid.util import InstancePropertyHelper, get_callable_name
class FactoriesConfiguratorMixin(object):
diff --git a/src/pyramid/config/i18n.py b/src/pyramid/config/i18n.py
index 92c324ff7..3db0d1bf5 100644
--- a/src/pyramid/config/i18n.py
+++ b/src/pyramid/config/i18n.py
@@ -1,10 +1,8 @@
-from pyramid.interfaces import ILocaleNegotiator, ITranslationDirectories
-
+from pyramid.config.actions import action_method
from pyramid.exceptions import ConfigurationError
+from pyramid.interfaces import ILocaleNegotiator, ITranslationDirectories
from pyramid.path import AssetResolver
-from pyramid.config.actions import action_method
-
class I18NConfiguratorMixin(object):
@action_method
diff --git a/src/pyramid/config/predicates.py b/src/pyramid/config/predicates.py
index ffdff5c21..2868ea580 100644
--- a/src/pyramid/config/predicates.py
+++ b/src/pyramid/config/predicates.py
@@ -2,12 +2,10 @@ from hashlib import md5
from webob.acceptparse import Accept
from pyramid.exceptions import ConfigurationError
-from pyramid.interfaces import IPredicateList, PHASE1_CONFIG
+from pyramid.interfaces import PHASE1_CONFIG, IPredicateList
from pyramid.predicates import Notted
from pyramid.registry import predvalseq
-from pyramid.util import TopologicalSorter
-from pyramid.util import is_nonstr_iter, bytes_
-
+from pyramid.util import TopologicalSorter, bytes_, is_nonstr_iter
MAX_ORDER = 1 << 30
DEFAULT_PHASH = md5().hexdigest()
diff --git a/src/pyramid/config/rendering.py b/src/pyramid/config/rendering.py
index 7e5b767d9..c1d5e803e 100644
--- a/src/pyramid/config/rendering.py
+++ b/src/pyramid/config/rendering.py
@@ -1,7 +1,6 @@
-from pyramid.interfaces import IRendererFactory, PHASE1_CONFIG
-
from pyramid import renderers
from pyramid.config.actions import action_method
+from pyramid.interfaces import PHASE1_CONFIG, IRendererFactory
DEFAULT_RENDERERS = (
('json', renderers.json_renderer_factory),
diff --git a/src/pyramid/config/routes.py b/src/pyramid/config/routes.py
index 25af9627d..44fbb9c46 100644
--- a/src/pyramid/config/routes.py
+++ b/src/pyramid/config/routes.py
@@ -2,23 +2,20 @@ import contextlib
from urllib.parse import urlparse
import warnings
+from pyramid.config.actions import action_method
+from pyramid.config.predicates import normalize_accept_offer, predvalseq
+from pyramid.exceptions import ConfigurationError
from pyramid.interfaces import (
+ PHASE2_CONFIG,
IRequest,
IRouteRequest,
IRoutesMapper,
- PHASE2_CONFIG,
)
-
-from pyramid.exceptions import ConfigurationError
import pyramid.predicates
from pyramid.request import route_request_iface
from pyramid.urldispatch import RoutesMapper
-
from pyramid.util import as_sorted_tuple, is_nonstr_iter
-from pyramid.config.actions import action_method
-from pyramid.config.predicates import normalize_accept_offer, predvalseq
-
class RoutesConfiguratorMixin(object):
@action_method
diff --git a/src/pyramid/config/security.py b/src/pyramid/config/security.py
index 7d6703b07..182656e7c 100644
--- a/src/pyramid/config/security.py
+++ b/src/pyramid/config/security.py
@@ -1,23 +1,21 @@
import warnings
from zope.interface import implementer
+from pyramid.config.actions import action_method
+from pyramid.csrf import LegacySessionCSRFStoragePolicy
+from pyramid.exceptions import ConfigurationError
from pyramid.interfaces import (
- IAuthorizationPolicy,
+ PHASE1_CONFIG,
+ PHASE2_CONFIG,
IAuthenticationPolicy,
+ IAuthorizationPolicy,
ICSRFStoragePolicy,
IDefaultCSRFOptions,
IDefaultPermission,
ISecurityPolicy,
- PHASE1_CONFIG,
- PHASE2_CONFIG,
)
-
-from pyramid.csrf import LegacySessionCSRFStoragePolicy
-from pyramid.exceptions import ConfigurationError
-from pyramid.util import as_sorted_tuple
from pyramid.security import LegacySecurityPolicy
-
-from pyramid.config.actions import action_method
+from pyramid.util import as_sorted_tuple
class SecurityConfiguratorMixin(object):
diff --git a/src/pyramid/config/testing.py b/src/pyramid/config/testing.py
index 58b239232..db1aefb24 100644
--- a/src/pyramid/config/testing.py
+++ b/src/pyramid/config/testing.py
@@ -1,13 +1,10 @@
from zope.interface import Interface
-from pyramid.interfaces import ITraverser, ISecurityPolicy, IRendererFactory
-
+from pyramid.config.actions import action_method
+from pyramid.interfaces import IRendererFactory, ISecurityPolicy, ITraverser
from pyramid.renderers import RendererHelper
-
from pyramid.traversal import split_path_info
-from pyramid.config.actions import action_method
-
class TestingConfiguratorMixin(object):
# testing API
diff --git a/src/pyramid/config/tweens.py b/src/pyramid/config/tweens.py
index feb4a3230..02255a4b6 100644
--- a/src/pyramid/config/tweens.py
+++ b/src/pyramid/config/tweens.py
@@ -1,19 +1,15 @@
from zope.interface import implementer
-from pyramid.interfaces import ITweens
-
+from pyramid.config.actions import action_method
from pyramid.exceptions import ConfigurationError
-
-from pyramid.tweens import MAIN, INGRESS, EXCVIEW
-
+from pyramid.interfaces import ITweens
+from pyramid.tweens import EXCVIEW, INGRESS, MAIN
from pyramid.util import (
+ TopologicalSorter,
is_nonstr_iter,
is_string_or_iterable,
- TopologicalSorter,
)
-from pyramid.config.actions import action_method
-
class TweensConfiguratorMixin(object):
def add_tween(self, tween_factory, under=None, over=None):
diff --git a/src/pyramid/config/views.py b/src/pyramid/config/views.py
index 3fc6a4a58..2cc5e8144 100644
--- a/src/pyramid/config/views.py
+++ b/src/pyramid/config/views.py
@@ -1,19 +1,36 @@
import functools
import inspect
-import posixpath
import operator
import os
-import warnings
-
+import posixpath
from urllib.parse import quote, urljoin, urlparse, urlunparse
+import warnings
from webob.acceptparse import Accept
from zope.interface import Interface, implementedBy, implementer
from zope.interface.interfaces import IInterface
+from pyramid import renderers
+from pyramid.asset import resolve_asset_spec
+from pyramid.config.actions import action_method
+from pyramid.config.predicates import (
+ DEFAULT_PHASH,
+ MAX_ORDER,
+ normalize_accept_offer,
+ predvalseq,
+ sort_accept_offers,
+)
+from pyramid.decorator import reify
+from pyramid.exceptions import ConfigurationError, PredicateMismatch
+from pyramid.httpexceptions import (
+ HTTPForbidden,
+ HTTPNotFound,
+ default_exceptionresponse_view,
+)
from pyramid.interfaces import (
+ PHASE1_CONFIG,
IAcceptOrder,
- IExceptionViewClassifier,
IException,
+ IExceptionViewClassifier,
IMultiView,
IPackageOverrides,
IRendererFactory,
@@ -24,64 +41,33 @@ from pyramid.interfaces import (
IStaticURLInfo,
IView,
IViewClassifier,
- IViewDerivers,
IViewDeriverInfo,
+ IViewDerivers,
IViewMapperFactory,
- PHASE1_CONFIG,
-)
-
-from pyramid import renderers
-
-from pyramid.asset import resolve_asset_spec
-
-from pyramid.decorator import reify
-
-from pyramid.exceptions import ConfigurationError, PredicateMismatch
-
-from pyramid.httpexceptions import (
- HTTPForbidden,
- HTTPNotFound,
- default_exceptionresponse_view,
)
-
+import pyramid.predicates
from pyramid.registry import Deferred
-
from pyramid.security import NO_PERMISSION_REQUIRED
from pyramid.static import static_view
-
from pyramid.url import parse_url_overrides
-
-from pyramid.view import AppendSlashNotFoundViewFactory
-
from pyramid.util import (
+ WIN,
+ TopologicalSorter,
as_sorted_tuple,
is_nonstr_iter,
- TopologicalSorter,
- WIN,
)
-
-import pyramid.predicates
+from pyramid.view import AppendSlashNotFoundViewFactory
import pyramid.viewderivers
-
from pyramid.viewderivers import (
INGRESS,
VIEW,
+ DefaultViewMapper,
preserve_view_attrs,
- view_description,
requestonly,
- DefaultViewMapper,
+ view_description,
wraps_view,
)
-from pyramid.config.actions import action_method
-from pyramid.config.predicates import (
- DEFAULT_PHASH,
- MAX_ORDER,
- normalize_accept_offer,
- predvalseq,
- sort_accept_offers,
-)
-
DefaultViewMapper = DefaultViewMapper # bw-compat
preserve_view_attrs = preserve_view_attrs # bw-compat
requestonly = requestonly # bw-compat
diff --git a/src/pyramid/csrf.py b/src/pyramid/csrf.py
index f9914e852..8e56c56fc 100644
--- a/src/pyramid/csrf.py
+++ b/src/pyramid/csrf.py
@@ -1,18 +1,16 @@
from urllib.parse import urlparse
import uuid
-
from webob.cookies import CookieProfile
from zope.interface import implementer
-
from pyramid.exceptions import BadCSRFOrigin, BadCSRFToken
from pyramid.interfaces import ICSRFStoragePolicy
from pyramid.settings import aslist
from pyramid.util import (
SimpleSerializer,
+ bytes_,
is_same_domain,
strings_differ,
- bytes_,
text_,
)
diff --git a/src/pyramid/encode.py b/src/pyramid/encode.py
index ed8e177b8..b6030ed58 100644
--- a/src/pyramid/encode.py
+++ b/src/pyramid/encode.py
@@ -1,5 +1,4 @@
-from urllib.parse import quote as _url_quote
-from urllib.parse import quote_plus as _quote_plus
+from urllib.parse import quote as _url_quote, quote_plus as _quote_plus
from pyramid.util import is_nonstr_iter
diff --git a/src/pyramid/events.py b/src/pyramid/events.py
index fb3730f63..8186cb327 100644
--- a/src/pyramid/events.py
+++ b/src/pyramid/events.py
@@ -1,14 +1,13 @@
import venusian
-
-from zope.interface import implementer, Interface
+from zope.interface import Interface, implementer
from pyramid.interfaces import (
- IContextFound,
- INewRequest,
- INewResponse,
IApplicationCreated,
IBeforeRender,
IBeforeTraversal,
+ IContextFound,
+ INewRequest,
+ INewResponse,
)
diff --git a/src/pyramid/exceptions.py b/src/pyramid/exceptions.py
index 92a0098e0..122209d48 100644
--- a/src/pyramid/exceptions.py
+++ b/src/pyramid/exceptions.py
@@ -1,4 +1,4 @@
-from pyramid.httpexceptions import HTTPBadRequest, HTTPNotFound, HTTPForbidden
+from pyramid.httpexceptions import HTTPBadRequest, HTTPForbidden, HTTPNotFound
NotFound = HTTPNotFound # bw compat
Forbidden = HTTPForbidden # bw compat
diff --git a/src/pyramid/httpexceptions.py b/src/pyramid/httpexceptions.py
index c9fdfe04b..51c2e90a0 100644
--- a/src/pyramid/httpexceptions.py
+++ b/src/pyramid/httpexceptions.py
@@ -129,13 +129,10 @@ subclasses have one additional keyword argument: ``location``,
which indicates the location to which to redirect.
"""
import json
-
from string import Template
-
-from zope.interface import implementer
-
from webob import html_escape as _html_escape
from webob.acceptparse import create_accept_header
+from zope.interface import implementer
from pyramid.interfaces import IExceptionResponse
from pyramid.response import Response
diff --git a/src/pyramid/i18n.py b/src/pyramid/i18n.py
index a20503be2..b9e00b54b 100644
--- a/src/pyramid/i18n.py
+++ b/src/pyramid/i18n.py
@@ -1,21 +1,15 @@
import gettext
import os
-
-from translationstring import (
- Translator,
- Pluralizer,
- TranslationString, # API
- TranslationStringFactory, # API
-)
+from translationstring import Pluralizer, Translator
+from translationstring import TranslationString # API
+from translationstring import TranslationStringFactory # API
from pyramid.decorator import reify
-
from pyramid.interfaces import (
+ ILocaleNegotiator,
ILocalizer,
ITranslationDirectories,
- ILocaleNegotiator,
)
-
from pyramid.threadlocal import get_current_registry
TranslationString = TranslationString # PyFlakes
diff --git a/src/pyramid/path.py b/src/pyramid/path.py
index 55ed4df2e..e3f9c8c49 100644
--- a/src/pyramid/path.py
+++ b/src/pyramid/path.py
@@ -2,7 +2,6 @@ from importlib.machinery import SOURCE_SUFFIXES
import os
import pkg_resources
import sys
-
from zope.interface import implementer
from pyramid.interfaces import IAssetDescriptor
diff --git a/src/pyramid/predicates.py b/src/pyramid/predicates.py
index 32c6a4089..e0bd189c5 100644
--- a/src/pyramid/predicates.py
+++ b/src/pyramid/predicates.py
@@ -1,13 +1,11 @@
import re
from pyramid.exceptions import ConfigurationError
-
from pyramid.traversal import (
find_interface,
- traversal_path,
resource_path_tuple,
+ traversal_path,
)
-
from pyramid.urldispatch import _compile_route
from pyramid.util import as_sorted_tuple, is_nonstr_iter, object_description
diff --git a/src/pyramid/registry.py b/src/pyramid/registry.py
index 7b2547dd7..680669602 100644
--- a/src/pyramid/registry.py
+++ b/src/pyramid/registry.py
@@ -1,13 +1,10 @@
import operator
import threading
-
from zope.interface import implementer
from zope.interface.registry import Components
from pyramid.decorator import reify
-
-from pyramid.interfaces import IIntrospector, IIntrospectable, ISettings
-
+from pyramid.interfaces import IIntrospectable, IIntrospector, ISettings
from pyramid.path import CALLER_PACKAGE, caller_package
diff --git a/src/pyramid/renderers.py b/src/pyramid/renderers.py
index 832369fd4..9f6c50936 100644
--- a/src/pyramid/renderers.py
+++ b/src/pyramid/renderers.py
@@ -2,21 +2,15 @@ from functools import partial
import json
import os
import re
-
from zope.interface import implementer, providedBy
from zope.interface.registry import Components
-from pyramid.interfaces import IJSONAdapter, IRendererFactory, IRendererInfo
-
from pyramid.csrf import get_csrf_token
from pyramid.decorator import reify
-
from pyramid.events import BeforeRender
-
from pyramid.httpexceptions import HTTPBadRequest
-
+from pyramid.interfaces import IJSONAdapter, IRendererFactory, IRendererInfo
from pyramid.path import caller_package
-
from pyramid.response import _get_response_factory
from pyramid.threadlocal import get_current_registry
from pyramid.util import hide_attrs
diff --git a/src/pyramid/request.py b/src/pyramid/request.py
index 5c68abe69..d65be2a2f 100644
--- a/src/pyramid/request.py
+++ b/src/pyramid/request.py
@@ -1,27 +1,24 @@
from collections import deque
-
+from webob import BaseRequest
from zope.interface import implementer
from zope.interface.interface import InterfaceClass
-from webob import BaseRequest
-
+from pyramid.decorator import reify
+from pyramid.i18n import LocalizerRequestMixin
from pyramid.interfaces import (
IRequest,
IRequestExtensions,
IResponse,
ISessionFactory,
)
-
-from pyramid.decorator import reify
-from pyramid.i18n import LocalizerRequestMixin
from pyramid.response import Response, _get_response_factory
-from pyramid.security import SecurityAPIMixin, AuthenticationAPIMixin
+from pyramid.security import AuthenticationAPIMixin, SecurityAPIMixin
from pyramid.url import URLMethodsMixin
from pyramid.util import (
InstancePropertyHelper,
InstancePropertyMixin,
- text_,
bytes_,
+ text_,
)
from pyramid.view import ViewMethodsMixin
diff --git a/src/pyramid/response.py b/src/pyramid/response.py
index 1ccf4fbdc..03090941d 100644
--- a/src/pyramid/response.py
+++ b/src/pyramid/response.py
@@ -1,10 +1,9 @@
import mimetypes
from os.path import getmtime, getsize
-
import venusian
-
from webob import Response as _Response
from zope.interface import implementer
+
from pyramid.interfaces import IResponse, IResponseFactory
_BLOCK_SIZE = 4096 * 64 # 256K
diff --git a/src/pyramid/router.py b/src/pyramid/router.py
index fa1a9ebf7..178c68e87 100644
--- a/src/pyramid/router.py
+++ b/src/pyramid/router.py
@@ -1,33 +1,29 @@
from zope.interface import implementer, providedBy
+from pyramid.events import (
+ BeforeTraversal,
+ ContextFound,
+ NewRequest,
+ NewResponse,
+)
+from pyramid.httpexceptions import HTTPNotFound
from pyramid.interfaces import (
IDebugLogger,
IExecutionPolicy,
IRequest,
IRequestExtensions,
+ IRequestFactory,
IRootFactory,
- IRouteRequest,
IRouter,
- IRequestFactory,
+ IRouteRequest,
IRoutesMapper,
ITraverser,
ITweens,
)
-
-from pyramid.events import (
- ContextFound,
- NewRequest,
- NewResponse,
- BeforeTraversal,
-)
-
-from pyramid.httpexceptions import HTTPNotFound
-from pyramid.request import Request
-from pyramid.view import _call_view
-from pyramid.request import apply_request_extensions
+from pyramid.request import Request, apply_request_extensions
from pyramid.threadlocal import RequestContext
-
from pyramid.traversal import DefaultRootFactory, ResourceTreeTraverser
+from pyramid.view import _call_view
@implementer(IRouter)
diff --git a/src/pyramid/scripting.py b/src/pyramid/scripting.py
index cbf9d5e32..abcdd1030 100644
--- a/src/pyramid/scripting.py
+++ b/src/pyramid/scripting.py
@@ -1,10 +1,7 @@
from pyramid.config import global_registries
from pyramid.exceptions import ConfigurationError
-
from pyramid.interfaces import IRequestFactory, IRootFactory
-from pyramid.request import Request
-from pyramid.request import apply_request_extensions
-
+from pyramid.request import Request, apply_request_extensions
from pyramid.threadlocal import RequestContext
from pyramid.traversal import DefaultRootFactory
diff --git a/src/pyramid/scripts/pdistreport.py b/src/pyramid/scripts/pdistreport.py
index 3ace9451e..99615c1d5 100644
--- a/src/pyramid/scripts/pdistreport.py
+++ b/src/pyramid/scripts/pdistreport.py
@@ -1,8 +1,8 @@
-import sys
-import platform
-import pkg_resources
import argparse
from operator import itemgetter
+import pkg_resources
+import platform
+import sys
def out(*args): # pragma: no cover
diff --git a/src/pyramid/scripts/prequest.py b/src/pyramid/scripts/prequest.py
index 759978936..b828c9c30 100644
--- a/src/pyramid/scripts/prequest.py
+++ b/src/pyramid/scripts/prequest.py
@@ -1,12 +1,11 @@
-import base64
import argparse
+import base64
import sys
import textwrap
from urllib.parse import unquote
from pyramid.request import Request
-from pyramid.scripts.common import get_config_loader
-from pyramid.scripts.common import parse_vars
+from pyramid.scripts.common import get_config_loader, parse_vars
def main(argv=sys.argv, quiet=False):
diff --git a/src/pyramid/scripts/proutes.py b/src/pyramid/scripts/proutes.py
index 09b550cef..ee3cb0f04 100644
--- a/src/pyramid/scripts/proutes.py
+++ b/src/pyramid/scripts/proutes.py
@@ -1,21 +1,17 @@
-import fnmatch
import argparse
+import fnmatch
+import re
import sys
import textwrap
-import re
-
from zope.interface import Interface
-from pyramid.paster import bootstrap
-from pyramid.interfaces import IRouteRequest
from pyramid.config import not_
-
-from pyramid.scripts.common import get_config_loader
-from pyramid.scripts.common import parse_vars
+from pyramid.interfaces import IRouteRequest
+from pyramid.paster import bootstrap
+from pyramid.scripts.common import get_config_loader, parse_vars
from pyramid.static import static_view
from pyramid.view import _find_views
-
PAD = 3
ANY_KEY = '*'
UNKNOWN_KEY = '<unknown>'
diff --git a/src/pyramid/scripts/pserve.py b/src/pyramid/scripts/pserve.py
index 350ab4d6d..6e8d0b599 100644
--- a/src/pyramid/scripts/pserve.py
+++ b/src/pyramid/scripts/pserve.py
@@ -9,6 +9,7 @@
# lib/site.py
import argparse
+import hupper
import os
import re
import sys
@@ -17,11 +18,8 @@ import threading
import time
import webbrowser
-import hupper
-
-from pyramid.scripts.common import get_config_loader
-from pyramid.scripts.common import parse_vars
from pyramid.path import AssetResolver
+from pyramid.scripts.common import get_config_loader, parse_vars
from pyramid.settings import aslist
diff --git a/src/pyramid/scripts/pshell.py b/src/pyramid/scripts/pshell.py
index a9f02e408..2f2939e99 100644
--- a/src/pyramid/scripts/pshell.py
+++ b/src/pyramid/scripts/pshell.py
@@ -1,19 +1,15 @@
+import argparse
from code import interact
from contextlib import contextmanager
-import argparse
import os
+import pkg_resources
import sys
import textwrap
-import pkg_resources
-from pyramid.util import DottedNameResolver
-from pyramid.util import make_contextmanager
from pyramid.paster import bootstrap
-
+from pyramid.scripts.common import get_config_loader, parse_vars
from pyramid.settings import aslist
-
-from pyramid.scripts.common import get_config_loader
-from pyramid.scripts.common import parse_vars
+from pyramid.util import DottedNameResolver, make_contextmanager
def main(argv=sys.argv, quiet=False):
diff --git a/src/pyramid/scripts/ptweens.py b/src/pyramid/scripts/ptweens.py
index e6a5c5ac7..f90e0967f 100644
--- a/src/pyramid/scripts/ptweens.py
+++ b/src/pyramid/scripts/ptweens.py
@@ -3,12 +3,9 @@ import sys
import textwrap
from pyramid.interfaces import ITweens
-
-from pyramid.tweens import MAIN
-from pyramid.tweens import INGRESS
-from pyramid.paster import bootstrap
-from pyramid.paster import setup_logging
+from pyramid.paster import bootstrap, setup_logging
from pyramid.scripts.common import parse_vars
+from pyramid.tweens import INGRESS, MAIN
def main(argv=sys.argv, quiet=False):
diff --git a/src/pyramid/scripts/pviews.py b/src/pyramid/scripts/pviews.py
index d2a4bfa40..ac7725c99 100644
--- a/src/pyramid/scripts/pviews.py
+++ b/src/pyramid/scripts/pviews.py
@@ -3,8 +3,7 @@ import sys
import textwrap
from pyramid.interfaces import IMultiView
-from pyramid.paster import bootstrap
-from pyramid.paster import setup_logging
+from pyramid.paster import bootstrap, setup_logging
from pyramid.request import Request
from pyramid.scripts.common import parse_vars
from pyramid.view import _find_views
diff --git a/src/pyramid/security.py b/src/pyramid/security.py
index 8a7985a52..5e803aa0a 100644
--- a/src/pyramid/security.py
+++ b/src/pyramid/security.py
@@ -1,15 +1,14 @@
-from zope.interface import implementer, providedBy
from zope.deprecation import deprecated
+from zope.interface import implementer, providedBy
from pyramid.interfaces import (
- ISecurityPolicy,
IAuthenticationPolicy,
IAuthorizationPolicy,
ISecuredView,
+ ISecurityPolicy,
IView,
IViewClassifier,
)
-
from pyramid.threadlocal import get_current_registry
Everyone = 'system.Everyone'
diff --git a/src/pyramid/session.py b/src/pyramid/session.py
index 10e1ea313..e683fd77a 100644
--- a/src/pyramid/session.py
+++ b/src/pyramid/session.py
@@ -2,17 +2,13 @@ import binascii
import os
import pickle
import time
-
+from webob.cookies import JSONSerializer, SignedSerializer
from zope.deprecation import deprecated
from zope.interface import implementer
-from webob.cookies import JSONSerializer, SignedSerializer
-
from pyramid.csrf import check_csrf_origin, check_csrf_token
-
from pyramid.interfaces import ISession
-
-from pyramid.util import text_, bytes_
+from pyramid.util import bytes_, text_
def manage_accessed(wrapped):
diff --git a/src/pyramid/static.py b/src/pyramid/static.py
index 499706554..d71fa750b 100644
--- a/src/pyramid/static.py
+++ b/src/pyramid/static.py
@@ -3,19 +3,13 @@ from functools import lru_cache
import json
import mimetypes
import os
-
-from os.path import getmtime, getsize, normcase, normpath, join, isdir, exists
-
+from os.path import exists, getmtime, getsize, isdir, join, normcase, normpath
from pkg_resources import resource_exists, resource_filename, resource_isdir
from pyramid.asset import abspath_from_asset_spec, resolve_asset_spec
-
-from pyramid.httpexceptions import HTTPNotFound, HTTPMovedPermanently
-
+from pyramid.httpexceptions import HTTPMovedPermanently, HTTPNotFound
from pyramid.path import caller_package
-
-from pyramid.response import _guess_type, FileResponse
-
+from pyramid.response import FileResponse, _guess_type
from pyramid.traversal import traversal_path_info
diff --git a/src/pyramid/testing.py b/src/pyramid/testing.py
index a92bb5d03..a03f2678e 100644
--- a/src/pyramid/testing.py
+++ b/src/pyramid/testing.py
@@ -1,30 +1,23 @@
+from contextlib import contextmanager
import copy
import os
-from contextlib import contextmanager
-
from webob.acceptparse import create_accept_header
-
-from zope.interface import implementer, alsoProvides
-
-from pyramid.interfaces import IRequest, ISession
+from zope.interface import alsoProvides, implementer
from pyramid.config import Configurator
from pyramid.decorator import reify
+from pyramid.i18n import LocalizerRequestMixin
+from pyramid.interfaces import IRequest, ISession
from pyramid.path import caller_package
-from pyramid.response import _get_response_factory
from pyramid.registry import Registry
-
-from pyramid.security import SecurityAPIMixin, AuthenticationAPIMixin
-
-from pyramid.threadlocal import get_current_registry, manager
-
-from pyramid.i18n import LocalizerRequestMixin
from pyramid.request import CallbackMethodsMixin
+from pyramid.response import _get_response_factory
+from pyramid.security import AuthenticationAPIMixin, SecurityAPIMixin
+from pyramid.threadlocal import get_current_registry, manager
from pyramid.url import URLMethodsMixin
-from pyramid.util import InstancePropertyMixin, PYPY, text_
+from pyramid.util import PYPY, InstancePropertyMixin, text_
from pyramid.view import ViewMethodsMixin
-
_marker = object()
diff --git a/src/pyramid/traversal.py b/src/pyramid/traversal.py
index 811c0881b..cfa29f279 100644
--- a/src/pyramid/traversal.py
+++ b/src/pyramid/traversal.py
@@ -1,18 +1,16 @@
from functools import lru_cache
from urllib.parse import unquote_to_bytes
-
from zope.interface import implementer
from zope.interface.interfaces import IInterface
+from pyramid.encode import url_quote
+from pyramid.exceptions import URLDecodeError
from pyramid.interfaces import (
- IResourceURL,
+ VH_ROOT_KEY,
IRequestFactory,
+ IResourceURL,
ITraverser,
- VH_ROOT_KEY,
)
-
-from pyramid.encode import url_quote
-from pyramid.exceptions import URLDecodeError
from pyramid.location import lineage
from pyramid.threadlocal import get_current_registry
from pyramid.util import ascii_, is_nonstr_iter, text_
diff --git a/src/pyramid/url.py b/src/pyramid/url.py
index 22551a349..b79604d96 100644
--- a/src/pyramid/url.py
+++ b/src/pyramid/url.py
@@ -3,19 +3,17 @@
from functools import lru_cache
import os
-from pyramid.interfaces import IResourceURL, IRoutesMapper, IStaticURLInfo
-
from pyramid.encode import url_quote, urlencode
+from pyramid.interfaces import IResourceURL, IRoutesMapper, IStaticURLInfo
from pyramid.path import caller_package
from pyramid.threadlocal import get_current_registry
-from pyramid.util import bytes_
-
from pyramid.traversal import (
- ResourceURL,
- quote_path_segment,
PATH_SAFE,
PATH_SEGMENT_SAFE,
+ ResourceURL,
+ quote_path_segment,
)
+from pyramid.util import bytes_
QUERY_SAFE = "/?:@!$&'()*+,;=" # RFC 3986
ANCHOR_SAFE = QUERY_SAFE
diff --git a/src/pyramid/urldispatch.py b/src/pyramid/urldispatch.py
index 73b7be9f3..920aeffb5 100644
--- a/src/pyramid/urldispatch.py
+++ b/src/pyramid/urldispatch.py
@@ -1,12 +1,9 @@
import re
from zope.interface import implementer
-from pyramid.interfaces import IRoutesMapper, IRoute
-
from pyramid.exceptions import URLDecodeError
-
-from pyramid.traversal import quote_path_segment, split_path_info, PATH_SAFE
-
+from pyramid.interfaces import IRoute, IRoutesMapper
+from pyramid.traversal import PATH_SAFE, quote_path_segment, split_path_info
from pyramid.util import is_nonstr_iter, text_
_marker = object()
diff --git a/src/pyramid/view.py b/src/pyramid/view.py
index 201e8af7c..3253924da 100644
--- a/src/pyramid/view.py
+++ b/src/pyramid/view.py
@@ -1,33 +1,26 @@
+import inspect
import itertools
import sys
-import inspect
-
import venusian
-
from zope.interface import providedBy
-from pyramid.interfaces import (
- IRoutesMapper,
- IMultiView,
- ISecuredView,
- IView,
- IViewClassifier,
- IRequest,
- IExceptionViewClassifier,
-)
-
from pyramid.exceptions import ConfigurationError, PredicateMismatch
-
from pyramid.httpexceptions import (
HTTPNotFound,
HTTPTemporaryRedirect,
default_exceptionresponse_view,
)
-
+from pyramid.interfaces import (
+ IExceptionViewClassifier,
+ IMultiView,
+ IRequest,
+ IRoutesMapper,
+ ISecuredView,
+ IView,
+ IViewClassifier,
+)
from pyramid.threadlocal import get_current_registry, manager
-
-from pyramid.util import hide_attrs
-from pyramid.util import reraise as reraise_
+from pyramid.util import hide_attrs, reraise as reraise_
_marker = object()
diff --git a/src/pyramid/viewderivers.py b/src/pyramid/viewderivers.py
index 7c28cbf85..d91295143 100644
--- a/src/pyramid/viewderivers.py
+++ b/src/pyramid/viewderivers.py
@@ -1,31 +1,28 @@
import inspect
-
from zope.interface import implementer, provider
-from pyramid.security import NO_PERMISSION_REQUIRED
+from pyramid import renderers
from pyramid.csrf import check_csrf_origin, check_csrf_token
-from pyramid.response import Response
-
+from pyramid.exceptions import ConfigurationError
+from pyramid.httpexceptions import HTTPForbidden
from pyramid.interfaces import (
+ IDebugLogger,
IDefaultCSRFOptions,
IDefaultPermission,
- IDebugLogger,
IResponse,
ISecurityPolicy,
IViewMapper,
IViewMapperFactory,
)
-
-from pyramid.exceptions import ConfigurationError
-from pyramid.httpexceptions import HTTPForbidden
+from pyramid.response import Response
+from pyramid.security import NO_PERMISSION_REQUIRED
from pyramid.util import (
- object_description,
- takes_one_arg,
is_bound_method,
is_unbound_method,
+ object_description,
+ takes_one_arg,
)
from pyramid.view import render_view_to_response
-from pyramid import renderers
def view_description(view):
diff --git a/src/pyramid/wsgi.py b/src/pyramid/wsgi.py
index b3f3803e4..5aec62b77 100644
--- a/src/pyramid/wsgi.py
+++ b/src/pyramid/wsgi.py
@@ -1,4 +1,5 @@
from functools import wraps
+
from pyramid.request import call_app_with_subpath_as_path_info
diff --git a/tests/pkgs/conflictapp/__init__.py b/tests/pkgs/conflictapp/__init__.py
index 840813994..ba3e72fc8 100644
--- a/tests/pkgs/conflictapp/__init__.py
+++ b/tests/pkgs/conflictapp/__init__.py
@@ -1,6 +1,6 @@
-from pyramid.response import Response
from pyramid.authentication import AuthTktAuthenticationPolicy
from pyramid.authorization import ACLAuthorizationPolicy
+from pyramid.response import Response
def aview(request):
diff --git a/tests/pkgs/defpermbugapp/__init__.py b/tests/pkgs/defpermbugapp/__init__.py
index af78404ae..fe8611870 100644
--- a/tests/pkgs/defpermbugapp/__init__.py
+++ b/tests/pkgs/defpermbugapp/__init__.py
@@ -1,4 +1,5 @@
from webob import Response
+
from pyramid.security import NO_PERMISSION_REQUIRED
from pyramid.view import view_config
diff --git a/tests/pkgs/eventonly/__init__.py b/tests/pkgs/eventonly/__init__.py
index c48b539a1..35d83838f 100644
--- a/tests/pkgs/eventonly/__init__.py
+++ b/tests/pkgs/eventonly/__init__.py
@@ -1,5 +1,5 @@
-from pyramid.view import view_config
from pyramid.events import subscriber
+from pyramid.view import view_config
class Yup(object):
diff --git a/tests/pkgs/exceptionviewapp/views.py b/tests/pkgs/exceptionviewapp/views.py
index ca2c4fffb..7985d0b94 100644
--- a/tests/pkgs/exceptionviewapp/views.py
+++ b/tests/pkgs/exceptionviewapp/views.py
@@ -1,7 +1,9 @@
from webob import Response
-from .models import AnException
+
from pyramid.httpexceptions import HTTPBadRequest
+from .models import AnException
+
def no(request):
return Response('no')
diff --git a/tests/pkgs/fixtureapp/views.py b/tests/pkgs/fixtureapp/views.py
index 78df81c6f..c955a220d 100644
--- a/tests/pkgs/fixtureapp/views.py
+++ b/tests/pkgs/fixtureapp/views.py
@@ -1,5 +1,6 @@
-from zope.interface import Interface
from webob import Response
+from zope.interface import Interface
+
from pyramid.httpexceptions import HTTPForbidden
diff --git a/tests/pkgs/forbiddenapp/__init__.py b/tests/pkgs/forbiddenapp/__init__.py
index 79670dd32..4ae265a96 100644
--- a/tests/pkgs/forbiddenapp/__init__.py
+++ b/tests/pkgs/forbiddenapp/__init__.py
@@ -1,4 +1,5 @@
from webob import Response
+
from pyramid.httpexceptions import HTTPForbidden
from pyramid.util import bytes_
diff --git a/tests/pkgs/forbiddenview/__init__.py b/tests/pkgs/forbiddenview/__init__.py
index 4c78d961c..405869763 100644
--- a/tests/pkgs/forbiddenview/__init__.py
+++ b/tests/pkgs/forbiddenview/__init__.py
@@ -1,7 +1,7 @@
-from pyramid.view import forbidden_view_config, view_config
-from pyramid.response import Response
from pyramid.authentication import AuthTktAuthenticationPolicy
from pyramid.authorization import ACLAuthorizationPolicy
+from pyramid.response import Response
+from pyramid.view import forbidden_view_config, view_config
@forbidden_view_config(route_name='foo')
diff --git a/tests/pkgs/legacysecurityapp/__init__.py b/tests/pkgs/legacysecurityapp/__init__.py
index 12fb6104e..abfef1cc5 100644
--- a/tests/pkgs/legacysecurityapp/__init__.py
+++ b/tests/pkgs/legacysecurityapp/__init__.py
@@ -1,5 +1,5 @@
-from pyramid.response import Response
from pyramid.authentication import RemoteUserAuthenticationPolicy
+from pyramid.response import Response
from pyramid.security import Allowed, Denied
diff --git a/tests/pkgs/notfoundview/__init__.py b/tests/pkgs/notfoundview/__init__.py
index f606ec671..0eec3192c 100644
--- a/tests/pkgs/notfoundview/__init__.py
+++ b/tests/pkgs/notfoundview/__init__.py
@@ -1,5 +1,5 @@
-from pyramid.view import notfound_view_config, view_config
from pyramid.response import Response
+from pyramid.view import notfound_view_config, view_config
@notfound_view_config(route_name='foo', append_slash=True)
diff --git a/tests/pkgs/permbugapp/__init__.py b/tests/pkgs/permbugapp/__init__.py
index 72b5d9c17..594acc8d6 100644
--- a/tests/pkgs/permbugapp/__init__.py
+++ b/tests/pkgs/permbugapp/__init__.py
@@ -1,6 +1,7 @@
from html import escape
-from pyramid.security import view_execution_permitted
+
from pyramid.response import Response
+from pyramid.security import view_execution_permitted
def x_view(request): # pragma: no cover
diff --git a/tests/test_asset.py b/tests/test_asset.py
index 55a3c0336..84c30b33f 100644
--- a/tests/test_asset.py
+++ b/tests/test_asset.py
@@ -1,5 +1,5 @@
-import unittest
import os
+import unittest
here = os.path.abspath(os.path.dirname(__file__))
diff --git a/tests/test_authentication.py b/tests/test_authentication.py
index e0f5a7963..ec3aef4ef 100644
--- a/tests/test_authentication.py
+++ b/tests/test_authentication.py
@@ -1,8 +1,9 @@
from http.cookies import SimpleCookie
import unittest
import warnings
+
from pyramid import testing
-from pyramid.util import text_, bytes_
+from pyramid.util import bytes_, text_
class TestCallbackAuthenticationPolicyDebugging(unittest.TestCase):
diff --git a/tests/test_config/__init__.py b/tests/test_config/__init__.py
index ac1f19667..99677ebc5 100644
--- a/tests/test_config/__init__.py
+++ b/tests/test_config/__init__.py
@@ -1,7 +1,6 @@
# package
from functools import partial
-from zope.interface import implementer
-from zope.interface import Interface
+from zope.interface import Interface, implementer
class IFactory(Interface):
diff --git a/tests/test_config/pkgs/scannable/__init__.py b/tests/test_config/pkgs/scannable/__init__.py
index 585f4357b..e0042a5cc 100644
--- a/tests/test_config/pkgs/scannable/__init__.py
+++ b/tests/test_config/pkgs/scannable/__init__.py
@@ -1,5 +1,5 @@
-from pyramid.view import view_config
from pyramid.renderers import null_renderer
+from pyramid.view import view_config
@view_config(renderer=null_renderer)
diff --git a/tests/test_config/pkgs/scannable/another.py b/tests/test_config/pkgs/scannable/another.py
index e8b71e5e3..31e7f5128 100644
--- a/tests/test_config/pkgs/scannable/another.py
+++ b/tests/test_config/pkgs/scannable/another.py
@@ -1,5 +1,5 @@
-from pyramid.view import view_config
from pyramid.renderers import null_renderer
+from pyramid.view import view_config
@view_config(name='another', renderer=null_renderer)
diff --git a/tests/test_config/pkgs/scannable/pod/notinit.py b/tests/test_config/pkgs/scannable/pod/notinit.py
index 03c93857f..bb1412722 100644
--- a/tests/test_config/pkgs/scannable/pod/notinit.py
+++ b/tests/test_config/pkgs/scannable/pod/notinit.py
@@ -1,5 +1,5 @@
-from pyramid.view import view_config
from pyramid.renderers import null_renderer
+from pyramid.view import view_config
@view_config(name='pod_notinit', renderer=null_renderer)
diff --git a/tests/test_config/pkgs/scannable/subpackage/__init__.py b/tests/test_config/pkgs/scannable/subpackage/__init__.py
index f89ca33f7..c22d48150 100644
--- a/tests/test_config/pkgs/scannable/subpackage/__init__.py
+++ b/tests/test_config/pkgs/scannable/subpackage/__init__.py
@@ -1,5 +1,5 @@
-from pyramid.view import view_config
from pyramid.renderers import null_renderer
+from pyramid.view import view_config
@view_config(name='subpackage_init', renderer=null_renderer)
diff --git a/tests/test_config/pkgs/scannable/subpackage/notinit.py b/tests/test_config/pkgs/scannable/subpackage/notinit.py
index 65c2a4929..10c35ab7b 100644
--- a/tests/test_config/pkgs/scannable/subpackage/notinit.py
+++ b/tests/test_config/pkgs/scannable/subpackage/notinit.py
@@ -1,5 +1,5 @@
-from pyramid.view import view_config
from pyramid.renderers import null_renderer
+from pyramid.view import view_config
@view_config(name='subpackage_notinit', renderer=null_renderer)
diff --git a/tests/test_config/pkgs/scannable/subpackage/subsubpackage/__init__.py b/tests/test_config/pkgs/scannable/subpackage/subsubpackage/__init__.py
index ec4bab818..a2fcf2af8 100644
--- a/tests/test_config/pkgs/scannable/subpackage/subsubpackage/__init__.py
+++ b/tests/test_config/pkgs/scannable/subpackage/subsubpackage/__init__.py
@@ -1,5 +1,5 @@
-from pyramid.view import view_config
from pyramid.renderers import null_renderer
+from pyramid.view import view_config
@view_config(name='subsubpackage_init', renderer=null_renderer)
diff --git a/tests/test_config/test_actions.py b/tests/test_config/test_actions.py
index a72d0d7b1..aa86f3792 100644
--- a/tests/test_config/test_actions.py
+++ b/tests/test_config/test_actions.py
@@ -1,8 +1,9 @@
import unittest
-from pyramid.exceptions import ConfigurationConflictError
-from pyramid.exceptions import ConfigurationExecutionError
-
+from pyramid.exceptions import (
+ ConfigurationConflictError,
+ ConfigurationExecutionError,
+)
from pyramid.interfaces import IRequest
diff --git a/tests/test_config/test_assets.py b/tests/test_config/test_assets.py
index 875846dbd..cfd786c5d 100644
--- a/tests/test_config/test_assets.py
+++ b/tests/test_config/test_assets.py
@@ -1,5 +1,6 @@
import os.path
import unittest
+
from pyramid.testing import cleanUp
# we use this folder
diff --git a/tests/test_config/test_init.py b/tests/test_config/test_init.py
index 5ca33178a..ebcd78bb6 100644
--- a/tests/test_config/test_init.py
+++ b/tests/test_config/test_init.py
@@ -1,17 +1,20 @@
import os
import unittest
-from . import dummy_tween_factory
-from . import dummy_include
-from . import dummy_extend
-from . import dummy_extend2
-from . import DummyContext
-
-from pyramid.exceptions import ConfigurationExecutionError
-from pyramid.exceptions import ConfigurationConflictError
-
+from pyramid.exceptions import (
+ ConfigurationConflictError,
+ ConfigurationExecutionError,
+)
from pyramid.interfaces import IRequest
+from . import (
+ DummyContext,
+ dummy_extend,
+ dummy_extend2,
+ dummy_include,
+ dummy_tween_factory,
+)
+
class ConfiguratorTests(unittest.TestCase):
def _makeOne(self, *arg, **kw):
diff --git a/tests/test_config/test_routes.py b/tests/test_config/test_routes.py
index a75fdd776..bbafa8784 100644
--- a/tests/test_config/test_routes.py
+++ b/tests/test_config/test_routes.py
@@ -1,10 +1,10 @@
import unittest
import warnings
-from . import dummyfactory
-from . import DummyContext
from pyramid.util import text_
+from . import DummyContext, dummyfactory
+
class RoutesConfiguratorMixinTests(unittest.TestCase):
def _makeOne(self, *arg, **kw):
diff --git a/tests/test_config/test_security.py b/tests/test_config/test_security.py
index 9a9ea9f7e..6c73ead1e 100644
--- a/tests/test_config/test_security.py
+++ b/tests/test_config/test_security.py
@@ -1,7 +1,6 @@
import unittest
-from pyramid.exceptions import ConfigurationExecutionError
-from pyramid.exceptions import ConfigurationError
+from pyramid.exceptions import ConfigurationError, ConfigurationExecutionError
class ConfiguratorSecurityMethodsTests(unittest.TestCase):
diff --git a/tests/test_config/test_testing.py b/tests/test_config/test_testing.py
index efbe28f66..e379e41bc 100644
--- a/tests/test_config/test_testing.py
+++ b/tests/test_config/test_testing.py
@@ -1,8 +1,9 @@
import unittest
from zope.interface import implementer
-from pyramid.security import SecurityAPIMixin, AuthenticationAPIMixin
+from pyramid.security import AuthenticationAPIMixin, SecurityAPIMixin
from pyramid.util import text_
+
from . import IDummy
diff --git a/tests/test_config/test_tweens.py b/tests/test_config/test_tweens.py
index 805310c9a..ff75461c3 100644
--- a/tests/test_config/test_tweens.py
+++ b/tests/test_config/test_tweens.py
@@ -1,10 +1,9 @@
import unittest
-from . import dummy_tween_factory
-from . import dummy_tween_factory2
-
from pyramid.exceptions import ConfigurationConflictError
+from . import dummy_tween_factory, dummy_tween_factory2
+
class TestTweensConfiguratorMixin(unittest.TestCase):
def _makeOne(self, *arg, **kw):
diff --git a/tests/test_config/test_views.py b/tests/test_config/test_views.py
index 353749ed6..3aecc721a 100644
--- a/tests/test_config/test_views.py
+++ b/tests/test_config/test_views.py
@@ -4,14 +4,15 @@ import warnings
from zope.interface import implementer
from pyramid import testing
-from pyramid.exceptions import ConfigurationError
-from pyramid.exceptions import ConfigurationExecutionError
-from pyramid.exceptions import ConfigurationConflictError
-from pyramid.interfaces import IResponse, IRequest, IMultiView
+from pyramid.exceptions import (
+ ConfigurationConflictError,
+ ConfigurationError,
+ ConfigurationExecutionError,
+)
+from pyramid.interfaces import IMultiView, IRequest, IResponse
from pyramid.util import text_
-from . import IDummy
-from . import dummy_view
+from . import IDummy, dummy_view
class TestViewsConfigurationMixin(unittest.TestCase):
diff --git a/tests/test_encode.py b/tests/test_encode.py
index 4df08d509..ede6e9050 100644
--- a/tests/test_encode.py
+++ b/tests/test_encode.py
@@ -1,4 +1,5 @@
import unittest
+
from pyramid.util import text_
diff --git a/tests/test_events.py b/tests/test_events.py
index 25ed5fc0d..b344738a3 100644
--- a/tests/test_events.py
+++ b/tests/test_events.py
@@ -1,4 +1,5 @@
import unittest
+
from pyramid import testing
diff --git a/tests/test_i18n.py b/tests/test_i18n.py
index 78891200d..4ac6bd4e2 100644
--- a/tests/test_i18n.py
+++ b/tests/test_i18n.py
@@ -1,6 +1,7 @@
# -*- coding: utf-8 -*-
import os
import unittest
+
from pyramid import testing
here = os.path.dirname(__file__)
diff --git a/tests/test_location.py b/tests/test_location.py
index 163bb85aa..86fb8bfa8 100644
--- a/tests/test_location.py
+++ b/tests/test_location.py
@@ -1,5 +1,6 @@
import unittest
from zope.interface import implementer
+
from pyramid.interfaces import ILocation
diff --git a/tests/test_paster.py b/tests/test_paster.py
index dd53195c7..ef2571471 100644
--- a/tests/test_paster.py
+++ b/tests/test_paster.py
@@ -1,5 +1,6 @@
import os
import unittest
+
from .test_scripts.dummy import DummyLoader
here = os.path.dirname(__file__)
diff --git a/tests/test_path.py b/tests/test_path.py
index da7cd64e1..e9fe94fe2 100644
--- a/tests/test_path.py
+++ b/tests/test_path.py
@@ -1,5 +1,5 @@
-import unittest
import os
+import unittest
here = os.path.abspath(os.path.dirname(__file__))
diff --git a/tests/test_predicates.py b/tests/test_predicates.py
index c0a6c59ec..b0ee65bcf 100644
--- a/tests/test_predicates.py
+++ b/tests/test_predicates.py
@@ -1,7 +1,6 @@
import unittest
from pyramid import testing
-
from pyramid.util import text_
diff --git a/tests/test_registry.py b/tests/test_registry.py
index aee4f0e15..81443ce47 100644
--- a/tests/test_registry.py
+++ b/tests/test_registry.py
@@ -1,6 +1,5 @@
import unittest
-from zope.interface import Interface
-from zope.interface import implementer
+from zope.interface import Interface, implementer
class TestRegistry(unittest.TestCase):
diff --git a/tests/test_request.py b/tests/test_request.py
index 1a10a8509..bbf6aa47c 100644
--- a/tests/test_request.py
+++ b/tests/test_request.py
@@ -1,8 +1,8 @@
import unittest
-from pyramid import testing
-from pyramid.security import SecurityAPIMixin, AuthenticationAPIMixin
-from pyramid.util import text_, bytes_
+from pyramid import testing
+from pyramid.security import AuthenticationAPIMixin, SecurityAPIMixin
+from pyramid.util import bytes_, text_
class TestRequest(unittest.TestCase):
diff --git a/tests/test_response.py b/tests/test_response.py
index b63ccc6b1..4371d867f 100644
--- a/tests/test_response.py
+++ b/tests/test_response.py
@@ -2,6 +2,7 @@ import io
import mimetypes
import os
import unittest
+
from pyramid import testing
diff --git a/tests/test_scripts/dummy.py b/tests/test_scripts/dummy.py
index bb3475d39..4a848e043 100644
--- a/tests/test_scripts/dummy.py
+++ b/tests/test_scripts/dummy.py
@@ -1,4 +1,5 @@
from zope.interface import implementer
+
from pyramid.interfaces import IMultiView
diff --git a/tests/test_scripts/test_prequest.py b/tests/test_scripts/test_prequest.py
index aadde719a..2214f6350 100644
--- a/tests/test_scripts/test_prequest.py
+++ b/tests/test_scripts/test_prequest.py
@@ -1,5 +1,6 @@
from io import StringIO
import unittest
+
from . import dummy
diff --git a/tests/test_scripts/test_proutes.py b/tests/test_scripts/test_proutes.py
index b5a083272..6ba02a7d4 100644
--- a/tests/test_scripts/test_proutes.py
+++ b/tests/test_scripts/test_proutes.py
@@ -1,5 +1,6 @@
import os
import unittest
+
from . import dummy
diff --git a/tests/test_scripts/test_pserve.py b/tests/test_scripts/test_pserve.py
index f19ba81df..7bf962f9e 100644
--- a/tests/test_scripts/test_pserve.py
+++ b/tests/test_scripts/test_pserve.py
@@ -1,8 +1,8 @@
from io import StringIO
import os
import unittest
-from . import dummy
+from . import dummy
here = os.path.abspath(os.path.dirname(__file__))
diff --git a/tests/test_scripts/test_pshell.py b/tests/test_scripts/test_pshell.py
index 6beaacda6..10a9cd593 100644
--- a/tests/test_scripts/test_pshell.py
+++ b/tests/test_scripts/test_pshell.py
@@ -1,5 +1,6 @@
import os
import unittest
+
from . import dummy
diff --git a/tests/test_scripts/test_ptweens.py b/tests/test_scripts/test_ptweens.py
index ee50887f6..808bc64b6 100644
--- a/tests/test_scripts/test_ptweens.py
+++ b/tests/test_scripts/test_ptweens.py
@@ -1,4 +1,5 @@
import unittest
+
from . import dummy
diff --git a/tests/test_scripts/test_pviews.py b/tests/test_scripts/test_pviews.py
index c8d29113f..b462b6f28 100644
--- a/tests/test_scripts/test_pviews.py
+++ b/tests/test_scripts/test_pviews.py
@@ -1,4 +1,5 @@
import unittest
+
from . import dummy
diff --git a/tests/test_session.py b/tests/test_session.py
index 582a7ed4a..8f646658e 100644
--- a/tests/test_session.py
+++ b/tests/test_session.py
@@ -2,6 +2,7 @@ import base64
import json
import pickle
import unittest
+
from pyramid import testing
diff --git a/tests/test_testing.py b/tests/test_testing.py
index be519cd15..a5746b59d 100644
--- a/tests/test_testing.py
+++ b/tests/test_testing.py
@@ -1,7 +1,7 @@
import unittest
from zope.component import getSiteManager
-from zope.interface import Interface
-from zope.interface import implementer
+from zope.interface import Interface, implementer
+
from pyramid import testing
diff --git a/tests/test_threadlocal.py b/tests/test_threadlocal.py
index 487c7f4f2..609041882 100644
--- a/tests/test_threadlocal.py
+++ b/tests/test_threadlocal.py
@@ -1,6 +1,7 @@
-from pyramid import testing
import unittest
+from pyramid import testing
+
class TestThreadLocalManager(unittest.TestCase):
def setUp(self):
diff --git a/tests/test_traversal.py b/tests/test_traversal.py
index fdb0bcbb7..8d679b1f7 100644
--- a/tests/test_traversal.py
+++ b/tests/test_traversal.py
@@ -3,7 +3,6 @@ import unittest
from urllib.parse import quote
from pyramid.testing import cleanUp
-
from pyramid.util import text_
diff --git a/tests/test_tweens.py b/tests/test_tweens.py
index 054f4360d..aee1ae7cc 100644
--- a/tests/test_tweens.py
+++ b/tests/test_tweens.py
@@ -1,4 +1,5 @@
import unittest
+
from pyramid import testing
diff --git a/tests/test_url.py b/tests/test_url.py
index c5c0ca09f..b61b15d82 100644
--- a/tests/test_url.py
+++ b/tests/test_url.py
@@ -2,7 +2,6 @@ import os
import unittest
from pyramid import testing
-
from pyramid.util import WIN, text_
diff --git a/tests/test_urldispatch.py b/tests/test_urldispatch.py
index 5d77042ae..5c48bea01 100644
--- a/tests/test_urldispatch.py
+++ b/tests/test_urldispatch.py
@@ -1,4 +1,5 @@
import unittest
+
from pyramid import testing
from pyramid.util import text_
diff --git a/tests/test_util.py b/tests/test_util.py
index 84bc9379f..293036c10 100644
--- a/tests/test_util.py
+++ b/tests/test_util.py
@@ -1,6 +1,7 @@
import sys
import unittest
-from pyramid.util import text_, bytes_
+
+from pyramid.util import bytes_, text_
class Test_InstancePropertyHelper(unittest.TestCase):
diff --git a/tests/test_view.py b/tests/test_view.py
index 5411e57c0..710fba76c 100644
--- a/tests/test_view.py
+++ b/tests/test_view.py
@@ -1,11 +1,9 @@
-import unittest
-from zope.interface import Interface
-from zope.interface import implementer
import sys
+import unittest
+from zope.interface import Interface, implementer
from pyramid import testing
-from pyramid.interfaces import IRequest
-from pyramid.interfaces import IResponse
+from pyramid.interfaces import IRequest, IResponse
class BaseTest(object):
diff --git a/tests/test_viewderivers.py b/tests/test_viewderivers.py
index 3b5349094..0e2881683 100644
--- a/tests/test_viewderivers.py
+++ b/tests/test_viewderivers.py
@@ -3,7 +3,7 @@ from zope.interface import implementer
from pyramid import testing
from pyramid.exceptions import ConfigurationError
-from pyramid.interfaces import IResponse, IRequest
+from pyramid.interfaces import IRequest, IResponse
class TestDeriveView(unittest.TestCase):
diff --git a/tox.ini b/tox.ini
index 1d68122f4..c8d715548 100644
--- a/tox.ini
+++ b/tox.ini
@@ -19,12 +19,14 @@ setenv =
skip_install = true
commands =
flake8 src/pyramid tests setup.py
+ isort --check -rc src/pyramid tests setup.py
black --check --diff src/pyramid tests setup.py
python setup.py check -r -s -m
check-manifest
deps =
flake8
black
+ isort
readme_renderer
check-manifest
@@ -53,12 +55,14 @@ deps =
setenv =
COVERAGE_FILE=.coverage
-[testenv:black]
+[testenv:format]
skip_install = true
commands =
+ isort -rc src/pyramid tests setup.py
black src/pyramid tests setup.py
deps =
black
+ isort
[testenv:build]
skip_install = true