From bda1306749c62ef4f11cfe567ed7d56c8ad94240 Mon Sep 17 00:00:00 2001
From: Michael Merickel <github@m.merickel.org>
Date: Mon, 15 Oct 2018 16:56:42 +0200
Subject: [PATCH] Merge pull request #3388 from mmerickel/black

---
 src/pyramid/interfaces.py |  374 ++++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 269 insertions(+), 105 deletions(-)

diff --git a/src/pyramid/interfaces.py b/src/pyramid/interfaces.py
index 4df5593..e2e211b 100644
--- a/src/pyramid/interfaces.py
+++ b/src/pyramid/interfaces.py
@@ -1,13 +1,11 @@
 from zope.deprecation import deprecated
 
-from zope.interface import (
-    Attribute,
-    Interface,
-    )
+from zope.interface import Attribute, Interface
 
 from pyramid.compat import PY2
 
 # public API interfaces
+
 
 class IContextFound(Interface):
     """ An event type that is emitted after :app:`Pyramid` finds a
@@ -21,9 +19,12 @@
        :app:`Pyramid` before 1.0, this event interface can also be
        imported as :class:`pyramid.interfaces.IAfterTraversal`.
     """
+
     request = Attribute('The request object')
 
+
 IAfterTraversal = IContextFound
+
 
 class IBeforeTraversal(Interface):
     """
@@ -31,21 +32,27 @@
     route but before it calls any traversal or view code. See the documentation
     attached to :class:`pyramid.events.Routefound` for more information.
     """
+
     request = Attribute('The request object')
+
 
 class INewRequest(Interface):
     """ An event type that is emitted whenever :app:`Pyramid`
     begins to process a new request.  See the documentation attached
     to :class:`pyramid.events.NewRequest` for more information."""
+
     request = Attribute('The request object')
+
 
 class INewResponse(Interface):
     """ An event type that is emitted whenever any :app:`Pyramid`
     view returns a response. See the
     documentation attached to :class:`pyramid.events.NewResponse`
     for more information."""
+
     request = Attribute('The request object')
     response = Attribute('The response object')
+
 
 class IApplicationCreated(Interface):
     """ Event issued when the
@@ -60,9 +67,12 @@
        versions before 1.0, this interface can also be imported as
        :class:`pyramid.interfaces.IWSGIApplicationCreatedEvent`.
     """
+
     app = Attribute("Created application")
 
-IWSGIApplicationCreatedEvent = IApplicationCreated # b /c
+
+IWSGIApplicationCreatedEvent = IApplicationCreated  # b /c
+
 
 class IResponse(Interface):
     """ Represents a WSGI response using the WebOb response interface.
@@ -74,7 +84,8 @@
     :mod:`pyramid.httpexceptions`."""
 
     RequestClass = Attribute(
-        """ Alias for :class:`pyramid.request.Request` """)
+        """ Alias for :class:`pyramid.request.Request` """
+    )
 
     def __call__(environ, start_response):
         """ :term:`WSGI` call interface, should call the start_response
@@ -82,21 +93,25 @@
 
     accept_ranges = Attribute(
         """Gets and sets and deletes the Accept-Ranges header. For more
-        information on Accept-Ranges see RFC 2616, section 14.5""")
+        information on Accept-Ranges see RFC 2616, section 14.5"""
+    )
 
     age = Attribute(
         """Gets and sets and deletes the Age header. Converts using int.
-        For more information on Age see RFC 2616, section 14.6.""")
+        For more information on Age see RFC 2616, section 14.6."""
+    )
 
     allow = Attribute(
         """Gets and sets and deletes the Allow header. Converts using
-        list. For more information on Allow see RFC 2616, Section 14.7.""")
+        list. For more information on Allow see RFC 2616, Section 14.7."""
+    )
 
     app_iter = Attribute(
         """Returns the app_iter of the response.
 
         If body was set, this will create an app_iter from that body
-        (a single-item list)""")
+        (a single-item list)"""
+    )
 
     def app_iter_range(start, stop):
         """ Return a new app_iter built from the response app_iter that
@@ -104,21 +119,24 @@
 
     body = Attribute(
         """The body of the response, as a str. This will read in the entire
-        app_iter if necessary.""")
+        app_iter if necessary."""
+    )
 
     body_file = Attribute(
         """A file-like object that can be used to write to the body. If you
-        passed in a list app_iter, that app_iter will be modified by writes.""")
+        passed in a list app_iter, that app_iter will be modified by writes."""
+    )
 
     cache_control = Attribute(
-        """Get/set/modify the Cache-Control header (RFC 2616 section 14.9)""")
+        """Get/set/modify the Cache-Control header (RFC 2616 section 14.9)"""
+    )
 
     cache_expires = Attribute(
         """ Get/set the Cache-Control and Expires headers. This sets the
-            response to expire in the number of seconds passed when set. """)
+            response to expire in the number of seconds passed when set. """
+    )
 
-    charset = Attribute(
-        """Get/set the charset (in the Content-Type)""")
+    charset = Attribute("""Get/set the charset (in the Content-Type)""")
 
     def conditional_response_app(environ, start_response):
         """ Like the normal __call__ interface, but checks conditional
@@ -133,52 +151,62 @@
     content_disposition = Attribute(
         """Gets and sets and deletes the Content-Disposition header.
         For more information on Content-Disposition see RFC 2616 section
-        19.5.1.""")
+        19.5.1."""
+    )
 
     content_encoding = Attribute(
         """Gets and sets and deletes the Content-Encoding header.  For more
-        information about Content-Encoding see RFC 2616 section 14.11.""")
+        information about Content-Encoding see RFC 2616 section 14.11."""
+    )
 
     content_language = Attribute(
         """Gets and sets and deletes the Content-Language header. Converts
         using list.  For more information about Content-Language see RFC 2616
-        section 14.12.""")
+        section 14.12."""
+    )
 
     content_length = Attribute(
         """Gets and sets and deletes the Content-Length header. For more
         information on Content-Length see RFC 2616 section 14.17.
-        Converts using int. """)
+        Converts using int. """
+    )
 
     content_location = Attribute(
         """Gets and sets and deletes the Content-Location header. For more
-        information on Content-Location see RFC 2616 section 14.14.""")
+        information on Content-Location see RFC 2616 section 14.14."""
+    )
 
     content_md5 = Attribute(
         """Gets and sets and deletes the Content-MD5 header. For more
-        information on Content-MD5 see RFC 2616 section 14.14.""")
+        information on Content-MD5 see RFC 2616 section 14.14."""
+    )
 
     content_range = Attribute(
         """Gets and sets and deletes the Content-Range header. For more
         information on Content-Range see section 14.16. Converts using
-        ContentRange object.""")
+        ContentRange object."""
+    )
 
     content_type = Attribute(
         """Get/set the Content-Type header (or None), without the charset
         or any parameters. If you include parameters (or ; at all) when
         setting the content_type, any existing parameters will be deleted;
-        otherwise they will be preserved.""")
+        otherwise they will be preserved."""
+    )
 
     content_type_params = Attribute(
         """A dictionary of all the parameters in the content type.  This is
         not a view, set to change, modifications of the dict would not
-        be applied otherwise.""")
+        be applied otherwise."""
+    )
 
     def copy():
         """ Makes a copy of the response and returns the copy. """
 
     date = Attribute(
         """Gets and sets and deletes the Date header. For more information on
-        Date see RFC 2616 section 14.18. Converts using HTTP date.""")
+        Date see RFC 2616 section 14.18. Converts using HTTP date."""
+    )
 
     def delete_cookie(name, path='/', domain=None):
         """ Delete a cookie from the client. Note that path and domain must
@@ -191,31 +219,34 @@
 
     environ = Attribute(
         """Get/set the request environ associated with this response,
-        if any.""")
+        if any."""
+    )
 
     etag = Attribute(
         """ Gets and sets and deletes the ETag header. For more information
-        on ETag see RFC 2616 section 14.19. Converts using Entity tag.""")
+        on ETag see RFC 2616 section 14.19. Converts using Entity tag."""
+    )
 
     expires = Attribute(
         """ Gets and sets and deletes the Expires header. For more
         information on Expires see RFC 2616 section 14.21. Converts using
-        HTTP date.""")
+        HTTP date."""
+    )
 
-    headerlist = Attribute(
-        """ The list of response headers. """)
+    headerlist = Attribute(""" The list of response headers. """)
 
-    headers = Attribute(
-        """ The headers in a dictionary-like object """)
+    headers = Attribute(""" The headers in a dictionary-like object """)
 
     last_modified = Attribute(
         """ Gets and sets and deletes the Last-Modified header. For more
         information on Last-Modified see RFC 2616 section 14.29. Converts
-        using HTTP date.""")
+        using HTTP date."""
+    )
 
     location = Attribute(
         """ Gets and sets and deletes the Location header. For more
-        information on Location see RFC 2616 section 14.30.""")
+        information on Location see RFC 2616 section 14.30."""
+    )
 
     def md5_etag(body=None, set_content_md5=False):
         """ Generate an etag for the response object using an MD5 hash of the
@@ -230,34 +261,46 @@
 
     pragma = Attribute(
         """ Gets and sets and deletes the Pragma header. For more information
-        on Pragma see RFC 2616 section 14.32. """)
+        on Pragma see RFC 2616 section 14.32. """
+    )
 
     request = Attribute(
-        """ Return the request associated with this response if any. """)
+        """ Return the request associated with this response if any. """
+    )
 
     retry_after = Attribute(
         """ Gets and sets and deletes the Retry-After header. For more
         information on Retry-After see RFC 2616 section 14.37. Converts
-        using HTTP date or delta seconds.""")
+        using HTTP date or delta seconds."""
+    )
 
     server = Attribute(
         """ Gets and sets and deletes the Server header. For more information
-        on Server see RFC216 section 14.38. """)
+        on Server see RFC216 section 14.38. """
+    )
 
-    def set_cookie(name, value='', max_age=None, path='/', domain=None,
-                   secure=False, httponly=False, comment=None, expires=None,
-                   overwrite=False):
+    def set_cookie(
+        name,
+        value='',
+        max_age=None,
+        path='/',
+        domain=None,
+        secure=False,
+        httponly=False,
+        comment=None,
+        expires=None,
+        overwrite=False,
+    ):
         """ Set (add) a cookie for the response """
 
-    status = Attribute(
-        """ The status string. """)
+    status = Attribute(""" The status string. """)
 
-    status_int = Attribute(
-        """ The status as an integer """)
+    status_int = Attribute(""" The status as an integer """)
 
     unicode_body = Attribute(
         """ Get/set the unicode value of the body (using the charset of
-        the Content-Type)""")
+        the Content-Type)"""
+    )
 
     def unset_cookie(name, strict=True):
         """ Unset a cookie with the given name (remove it from the
@@ -265,15 +308,19 @@
 
     vary = Attribute(
         """Gets and sets and deletes the Vary header. For more information
-        on Vary see section 14.44. Converts using list.""")
+        on Vary see section 14.44. Converts using list."""
+    )
 
     www_authenticate = Attribute(
         """ Gets and sets and deletes the WWW-Authenticate header. For more
         information on WWW-Authenticate see RFC 2616 section 14.47. Converts
-        using 'parse_auth' and 'serialize_auth'. """)
+        using 'parse_auth' and 'serialize_auth'. """
+    )
 
-class IException(Interface): # not an API
+
+class IException(Interface):  # not an API
     """ An interface representing a generic exception """
+
 
 class IExceptionResponse(IException, IResponse):
     """ An interface representing a WSGI response which is also an exception
@@ -283,8 +330,10 @@
     :class:`pyramid.response.Response`, including
     :class:`pyramid.httpexceptions.HTTPNotFound` and
     :class:`pyramid.httpexceptions.HTTPForbidden`)."""
+
     def prepare(environ):
         """ Prepares the response for being called as a WSGI application """
+
 
 class IDict(Interface):
     # Documentation-only interface
@@ -354,6 +403,7 @@
     def clear():
         """ Clear all values from the dictionary """
 
+
 class IBeforeRender(IDict):
     """
     Subscribers to this event may introspect and modify the set of
@@ -373,25 +423,36 @@
 
         See also :ref:`beforerender_event`.
     """
-    rendering_val = Attribute('The value returned by a view or passed to a '
-                              '``render`` method for this rendering. '
-                              'This feature is new in Pyramid 1.2.')
+
+    rendering_val = Attribute(
+        'The value returned by a view or passed to a '
+        '``render`` method for this rendering. '
+        'This feature is new in Pyramid 1.2.'
+    )
+
 
 class IRendererInfo(Interface):
     """ An object implementing this interface is passed to every
     :term:`renderer factory` constructor as its only argument (conventionally
     named ``info``)"""
+
     name = Attribute('The value passed by the user as the renderer name')
-    package = Attribute('The "current package" when the renderer '
-                        'configuration statement was found')
+    package = Attribute(
+        'The "current package" when the renderer '
+        'configuration statement was found'
+    )
     type = Attribute('The renderer type name')
-    registry = Attribute('The "current" application registry when the '
-                         'renderer was created')
-    settings = Attribute('The deployment settings dictionary related '
-                         'to the current application')
+    registry = Attribute(
+        'The "current" application registry when the ' 'renderer was created'
+    )
+    settings = Attribute(
+        'The deployment settings dictionary related '
+        'to the current application'
+    )
 
     def clone():
         """ Return a shallow copy that does not share any mutable state."""
+
 
 class IRendererFactory(Interface):
     def __call__(info):
@@ -399,6 +460,7 @@
         :class:`pyramid.interfaces.IRenderer`. ``info`` is an
         object that implements :class:`pyramid.interfaces.IRendererInfo`.
         """
+
 
 class IRenderer(Interface):
     def __call__(value, system):
@@ -413,6 +475,7 @@
         view), and ``request`` (the request object passed to the
         view)."""
 
+
 class ITemplateRenderer(IRenderer):
     def implementation():
         """ Return the object that the underlying templating system
@@ -420,12 +483,14 @@
         accepts arbitrary keyword arguments and returns a string or
         unicode object """
 
+
 deprecated(
     'ITemplateRenderer',
     'As of Pyramid 1.5 the, "pyramid.interfaces.ITemplateRenderer" interface '
     'is scheduled to be removed. It was used by the Mako and Chameleon '
-    'renderers which have been split into their own packages.'
-    )
+    'renderers which have been split into their own packages.',
+)
+
 
 class IViewMapper(Interface):
     def __call__(self, object):
@@ -434,6 +499,7 @@
         request)``.  The callable returned should itself return a Response
         object.  An IViewMapper is returned by
         :class:`pyramid.interfaces.IViewMapperFactory`."""
+
 
 class IViewMapperFactory(Interface):
     def __call__(self, **kw):
@@ -447,6 +513,7 @@
         to extension developers who want to modify potential view callable
         invocation signatures and response values.
         """
+
 
 class IAuthenticationPolicy(Interface):
     """ An object representing a Pyramid authentication policy. """
@@ -500,8 +567,10 @@
 
         """
 
+
 class IAuthorizationPolicy(Interface):
     """ An object representing a Pyramid authorization policy. """
+
     def permits(context, principals, permission):
         """ Return an instance of :class:`pyramid.security.Allowed` if any
         of the ``principals`` is allowed the ``permission`` in the current
@@ -518,7 +587,8 @@
         ``pyramid.security.principals_allowed_by_permission`` API is
         used."""
 
-class IMultiDict(IDict): # docs-only interface
+
+class IMultiDict(IDict):  # docs-only interface
     """
     An ordered dictionary that can have multiple values for each key. A
     multidict adds the methods ``getall``, ``getone``, ``mixed``, ``extend``,
@@ -556,35 +626,45 @@
         dictionary. This is similar to the kind of dictionary often used to
         represent the variables in a web request. """
 
+
 # internal interfaces
+
 
 class IRequest(Interface):
     """ Request type interface attached to all request objects """
+
 
 class ITweens(Interface):
     """ Marker interface for utility registration representing the ordered
     set of a configuration's tween factories"""
 
+
 class IRequestHandler(Interface):
     """ """
+
     def __call__(self, request):
         """ Must return a tuple of IReqest, IResponse or raise an exception.
         The ``request`` argument will be an instance of an object that
         provides IRequest."""
 
-IRequest.combined = IRequest # for exception view lookups
+
+IRequest.combined = IRequest  # for exception view lookups
+
 
 class IRequestExtensions(Interface):
     """ Marker interface for storing request extensions (properties and
     methods) which will be added to the request object."""
+
     descriptors = Attribute(
-        """A list of descriptors that will be added to each request.""")
-    methods = Attribute(
-        """A list of methods to be added to each request.""")
+        """A list of descriptors that will be added to each request."""
+    )
+    methods = Attribute("""A list of methods to be added to each request.""")
+
 
 class IRouteRequest(Interface):
     """ *internal only* interface used as in a utility lookup to find
     route-specific interfaces.  Not an API."""
+
 
 class IAcceptOrder(Interface):
     """
@@ -593,8 +673,10 @@
 
     """
 
+
 class IStaticURLInfo(Interface):
     """ A policy for generating URLs to static assets """
+
     def add(config, name, spec, **extra):
         """ Add a new static info registration """
 
@@ -604,15 +686,19 @@
     def add_cache_buster(config, spec, cache_buster):
         """ Add a new cache buster to a particular set of assets """
 
+
 class IResponseFactory(Interface):
     """ A utility which generates a response """
+
     def __call__(request):
         """ Return a response object implementing IResponse,
         e.g. :class:`pyramid.response.Response`). It should handle the
         case when ``request`` is ``None``."""
 
+
 class IRequestFactory(Interface):
     """ A utility which generates a request """
+
     def __call__(environ):
         """ Return an instance of ``pyramid.request.Request``"""
 
@@ -620,18 +706,23 @@
         """ Return an empty request object (see
         :meth:`pyramid.request.Request.blank`)"""
 
+
 class IViewClassifier(Interface):
     """ *Internal only* marker interface for views."""
 
+
 class IExceptionViewClassifier(Interface):
     """ *Internal only* marker interface for exception views."""
+
 
 class IView(Interface):
     def __call__(context, request):
         """ Must return an object that implements IResponse. """
 
+
 class ISecuredView(IView):
     """ *Internal only* interface.  Not an API. """
+
     def __call_permissive__(context, request):
         """ Guaranteed-permissive version of __call__ """
 
@@ -639,20 +730,25 @@
         """ Return True if view execution will be permitted using the
         context and request, False otherwise"""
 
+
 class IMultiView(ISecuredView):
     """ *internal only*.  A multiview is a secured view that is a
     collection of other views.  Each of the views is associated with
     zero or more predicates.  Not an API."""
+
     def add(view, predicates, order, accept=None, phash=None):
         """ Add a view to the multiview. """
+
 
 class IRootFactory(Interface):
     def __call__(request):
         """ Return a root object based on the request """
 
+
 class IDefaultRootFactory(Interface):
     def __call__(request):
         """ Return the *default* root object for an application """
+
 
 class ITraverser(Interface):
     def __call__(request):
@@ -678,12 +774,15 @@
         as attributes of the ``request`` object by the :term:`router`.
         """
 
-ITraverserFactory = ITraverser # b / c for 1.0 code
+
+ITraverserFactory = ITraverser  # b / c for 1.0 code
+
 
 class IViewPermission(Interface):
     def __call__(context, request):
         """ Return True if the permission allows, return False if it denies.
         """
+
 
 class IRouter(Interface):
     """
@@ -691,8 +790,10 @@
     a view registry.
 
     """
+
     registry = Attribute(
-        """Component architecture registry local to this application.""")
+        """Component architecture registry local to this application."""
+    )
 
     def request_context(environ):
         """
@@ -734,6 +835,7 @@
 
         """
 
+
 class IExecutionPolicy(Interface):
     def __call__(environ, router):
         """
@@ -762,22 +864,28 @@
                         return request.invoke_exception_view(reraise=True)
         """
 
+
 class ISettings(IDict):
     """ Runtime settings utility for pyramid; represents the
     deployment settings for the application.  Implements a mapping
     interface."""
 
+
 # this interface, even if it becomes unused within Pyramid, is
 # imported by other packages (such as traversalwrapper)
 class ILocation(Interface):
     """Objects that have a structural location"""
+
     __parent__ = Attribute("The parent in the location hierarchy")
     __name__ = Attribute("The name within the parent")
+
 
 class IDebugLogger(Interface):
     """ Interface representing a PEP 282 logger """
 
-ILogger = IDebugLogger # b/c
+
+ILogger = IDebugLogger  # b/c
+
 
 class IRoutePregenerator(Interface):
     def __call__(request, elements, kw):
@@ -804,21 +912,27 @@
 
         """
 
+
 class IRoute(Interface):
     """ Interface representing the type of object returned from
     ``IRoutesMapper.get_route``"""
+
     name = Attribute('The route name')
     pattern = Attribute('The route pattern')
     factory = Attribute(
         'The :term:`root factory` used by the :app:`Pyramid` router '
-        'when this route matches (or ``None``)')
+        'when this route matches (or ``None``)'
+    )
     predicates = Attribute(
         'A sequence of :term:`route predicate` objects used to '
         'determine if a request matches this route or not after '
-        'basic pattern matching has been completed.')
-    pregenerator = Attribute('This attribute should either be ``None`` or '
-                             'a callable object implementing the '
-                             '``IRoutePregenerator`` interface')
+        'basic pattern matching has been completed.'
+    )
+    pregenerator = Attribute(
+        'This attribute should either be ``None`` or '
+        'a callable object implementing the '
+        '``IRoutePregenerator`` interface'
+    )
 
     def match(path):
         """
@@ -831,14 +945,17 @@
         If the ``path`` passed to this function cannot be matched by
         the ``pattern`` of this route, return ``None``.
         """
+
     def generate(kw):
         """
         Generate a URL based on filling in the dynamic segment markers
         in the pattern using the ``kw`` dictionary provided.
         """
 
+
 class IRoutesMapper(Interface):
     """ Interface representing a Routes ``Mapper`` object """
+
     def get_routes():
         """ Return a sequence of Route objects registered in the mapper.
         Static routes will not be returned in this sequence."""
@@ -850,8 +967,14 @@
         """ Returns an ``IRoute`` object if a route with the name ``name``
         was registered, otherwise return ``None``."""
 
-    def connect(name, pattern, factory=None, predicates=(), pregenerator=None,
-                static=True):
+    def connect(
+        name,
+        pattern,
+        factory=None,
+        predicates=(),
+        pregenerator=None,
+        static=True,
+    ):
         """ Add a new route. """
 
     def generate(name, kw):
@@ -865,23 +988,26 @@
         ``match`` key will be the matchdict or ``None`` if no route
         matched.  Static routes will not be considered for matching.  """
 
+
 class IResourceURL(Interface):
     virtual_path = Attribute(
         'The virtual url path of the resource as a string.'
-        )
+    )
     physical_path = Attribute(
         'The physical url path of the resource as a string.'
-        )
+    )
     virtual_path_tuple = Attribute(
         'The virtual url path of the resource as a tuple.  (New in 1.5)'
-        )
+    )
     physical_path_tuple = Attribute(
         'The physical url path of the resource as a tuple. (New in 1.5)'
-        )
+    )
+
 
 class IPEP302Loader(Interface):
     """ See http://www.python.org/dev/peps/pep-0302/#id30.
     """
+
     def get_data(path):
         """ Retrieve data for and arbitrary "files" from storage backend.
 
@@ -924,42 +1050,53 @@
 class IPackageOverrides(IPEP302Loader):
     """ Utility for pkg_resources overrides """
 
+
 # VH_ROOT_KEY is an interface; its imported from other packages (e.g.
 # traversalwrapper)
 VH_ROOT_KEY = 'HTTP_X_VHM_ROOT'
 
+
 class ILocalizer(Interface):
     """ Localizer for a specific language """
+
 
 class ILocaleNegotiator(Interface):
     def __call__(request):
         """ Return a locale name """
 
+
 class ITranslationDirectories(Interface):
     """ A list object representing all known translation directories
     for an application"""
+
 
 class IDefaultPermission(Interface):
     """ A string object representing the default permission to be used
     for all view configurations which do not explicitly declare their
     own."""
 
+
 class IDefaultCSRFOptions(Interface):
     """ An object representing the default CSRF settings to be used for
     all view configurations which do not explicitly declare their own."""
+
     require_csrf = Attribute(
         'Boolean attribute. If ``True``, then CSRF checks will be enabled by '
-        'default for the view unless overridden.')
+        'default for the view unless overridden.'
+    )
     token = Attribute('The key to be matched in the body of the request.')
     header = Attribute('The header to be matched with the CSRF token.')
     safe_methods = Attribute('A set of safe methods that skip CSRF checks.')
     callback = Attribute('A callback to disable CSRF checks per-request.')
 
+
 class ISessionFactory(Interface):
     """ An interface representing a factory which accepts a request object and
     returns an ISession object """
+
     def __call__(request):
         """ Return an ISession object """
+
 
 class ISession(IDict):
     """ An interface representing a session (a web session object,
@@ -1158,16 +1295,21 @@
 
     title = Attribute('Text title describing this introspectable')
     type_name = Attribute('Text type name describing this introspectable')
-    order = Attribute('integer order in which registered with introspector '
-                      '(managed by introspector, usually)')
+    order = Attribute(
+        'integer order in which registered with introspector '
+        '(managed by introspector, usually)'
+    )
     category_name = Attribute('introspection category name')
-    discriminator = Attribute('introspectable discriminator (within category) '
-                              '(must be hashable)')
+    discriminator = Attribute(
+        'introspectable discriminator (within category) ' '(must be hashable)'
+    )
     discriminator_hash = Attribute('an integer hash of the discriminator')
-    action_info = Attribute('An IActionInfo object representing the caller '
-                            'that invoked the creation of this introspectable '
-                            '(usually a sentinel until updated during '
-                            'self.register)')
+    action_info = Attribute(
+        'An IActionInfo object representing the caller '
+        'that invoked the creation of this introspectable '
+        '(usually a sentinel until updated during '
+        'self.register)'
+    )
 
     def relate(category_name, discriminator):
         """ Indicate an intent to relate this IIntrospectable with another
@@ -1199,7 +1341,7 @@
                     method = getattr(introspector, methodname)
                     method((i.category_name, i.discriminator),
                            (category_name, discriminator))
-        """
+        """  # noqa: E501
 
     def __hash__():
 
@@ -1209,18 +1351,22 @@
           return hash((self.category_name,) + (self.discriminator,))
         """
 
+
 class IActionInfo(Interface):
     """ Class which provides code introspection capability associated with an
-    action.  The ParserInfo class used by ZCML implements the same interface."""
-    file = Attribute(
-        'Filename of action-invoking code as a string')
+    action.  The ParserInfo class used by ZCML implements the same interface.
+    """
+
+    file = Attribute('Filename of action-invoking code as a string')
     line = Attribute(
         'Starting line number in file (as an integer) of action-invoking code.'
-        'This will be ``None`` if the value could not be determined.')
+        'This will be ``None`` if the value could not be determined.'
+    )
 
     def __str__():
         """ Return a representation of the action information (including
         source code from file, if possible) """
+
 
 class IAssetDescriptor(Interface):
     """
@@ -1260,19 +1406,24 @@
         Returns True if asset exists, otherwise returns False.
         """
 
+
 class IJSONAdapter(Interface):
     """
     Marker interface for objects that can convert an arbitrary object
     into a JSON-serializable primitive.
     """
 
+
 class IPredicateList(Interface):
     """ Interface representing a predicate list """
 
+
 class IViewDeriver(Interface):
-    options = Attribute('A list of supported options to be passed to '
-                        ':meth:`pyramid.config.Configurator.add_view`. '
-                        'This attribute is optional.')
+    options = Attribute(
+        'A list of supported options to be passed to '
+        ':meth:`pyramid.config.Configurator.add_view`. '
+        'This attribute is optional.'
+    )
 
     def __call__(view, info):
         """
@@ -1285,23 +1436,34 @@
 
         """
 
+
 class IViewDeriverInfo(Interface):
     """ An object implementing this interface is passed to every
     :term:`view deriver` during configuration."""
-    registry = Attribute('The "current" application registry where the '
-                         'view was created')
-    package = Attribute('The "current package" where the view '
-                        'configuration statement was found')
-    settings = Attribute('The deployment settings dictionary related '
-                         'to the current application')
-    options = Attribute('The view options passed to the view, including any '
-                        'default values that were not overriden')
+
+    registry = Attribute(
+        'The "current" application registry where the ' 'view was created'
+    )
+    package = Attribute(
+        'The "current package" where the view '
+        'configuration statement was found'
+    )
+    settings = Attribute(
+        'The deployment settings dictionary related '
+        'to the current application'
+    )
+    options = Attribute(
+        'The view options passed to the view, including any '
+        'default values that were not overriden'
+    )
     predicates = Attribute('The list of predicates active on the view')
     original_view = Attribute('The original view object being wrapped')
     exception_only = Attribute('The view will only be invoked for exceptions')
 
+
 class IViewDerivers(Interface):
     """ Interface for view derivers list """
+
 
 class ICacheBuster(Interface):
     """
@@ -1310,6 +1472,7 @@
 
     .. versionadded:: 1.6
     """
+
     def __call__(request, subpath, kw):
         """
         Modifies a subpath and/or keyword arguments from which a static asset
@@ -1344,6 +1507,7 @@
         ``config.override_asset('myapp:static/foo.png', 'themepkg:bar.png')``.
         """
 
+
 # configuration phases: a lower phase number means the actions associated
 # with this phase will be executed earlier than those with later phase
 # numbers.  The default phase number is 0, FTR.

--
Gitblit v1.9.3