From cb7d6947160f5d717edadc487de3c9fa59ff303d Mon Sep 17 00:00:00 2001
From: Tom Prince <tom.prince@private.storage>
Date: Thu, 4 Nov 2021 11:53:16 -0600
Subject: [PATCH] Run isort.

---
 src/_zkapauthorizer/_base64.py                |  18 +-
 src/_zkapauthorizer/_plugin.py                |  84 ++-----
 src/_zkapauthorizer/_stack.py                 |  10 +-
 src/_zkapauthorizer/_storage_client.py        |  56 ++---
 src/_zkapauthorizer/_storage_server.py        | 115 +++-------
 src/_zkapauthorizer/api.py                    |  18 +-
 src/_zkapauthorizer/configutil.py             |   7 +-
 src/_zkapauthorizer/controller.py             | 110 +++------
 src/_zkapauthorizer/eliot.py                  |  10 +-
 src/_zkapauthorizer/foolscap.py               |  29 +--
 src/_zkapauthorizer/lease_maintenance.py      |  59 ++---
 src/_zkapauthorizer/model.py                  |  59 ++---
 src/_zkapauthorizer/pricecalculator.py        |   5 +-
 src/_zkapauthorizer/private.py                |  59 ++---
 src/_zkapauthorizer/resource.py               |  72 ++----
 src/_zkapauthorizer/schema.py                 |   4 +-
 src/_zkapauthorizer/spending.py               |  14 +-
 src/_zkapauthorizer/storage_common.py         |  22 +-
 src/_zkapauthorizer/tests/__init__.py         |   5 +-
 src/_zkapauthorizer/tests/_exception.py       |   9 +-
 src/_zkapauthorizer/tests/eliot.py            |  28 +--
 src/_zkapauthorizer/tests/fixtures.py         |  40 +---
 src/_zkapauthorizer/tests/foolscap.py         |  33 +--
 src/_zkapauthorizer/tests/json.py             |   8 +-
 src/_zkapauthorizer/tests/matchers.py         |  34 +--
 src/_zkapauthorizer/tests/privacypass.py      |   9 +-
 src/_zkapauthorizer/tests/storage_common.py   |  57 +----
 src/_zkapauthorizer/tests/strategies.py       |  83 +++----
 src/_zkapauthorizer/tests/test_base64.py      |  35 +--
 .../tests/test_client_resource.py             | 213 ++++++------------
 src/_zkapauthorizer/tests/test_controller.py  | 163 +++++---------
 src/_zkapauthorizer/tests/test_foolscap.py    |  75 ++----
 .../tests/test_lease_maintenance.py           | 116 +++-------
 src/_zkapauthorizer/tests/test_matchers.py    |  28 +--
 src/_zkapauthorizer/tests/test_model.py       | 110 ++++-----
 src/_zkapauthorizer/tests/test_plugin.py      | 194 +++++-----------
 .../tests/test_pricecalculator.py             |  45 +---
 src/_zkapauthorizer/tests/test_private.py     |  52 +----
 src/_zkapauthorizer/tests/test_schema.py      |  16 +-
 src/_zkapauthorizer/tests/test_spending.py    |  42 +---
 .../tests/test_storage_client.py              |  87 ++-----
 .../tests/test_storage_protocol.py            | 137 ++++-------
 .../tests/test_storage_server.py              | 115 +++-------
 src/_zkapauthorizer/tests/test_strategies.py  |  35 +--
 src/_zkapauthorizer/validators.py             |   4 +-
 src/twisted/plugins/zkapauthorizer.py         |   4 +-
 46 files changed, 679 insertions(+), 1849 deletions(-)

diff --git a/src/_zkapauthorizer/_base64.py b/src/_zkapauthorizer/_base64.py
index fe020e4..473cb41 100644
--- a/src/_zkapauthorizer/_base64.py
+++ b/src/_zkapauthorizer/_base64.py
@@ -16,21 +16,11 @@
 This module implements base64 encoding-related functionality.
 """
 
-from __future__ import (
-    absolute_import,
-)
+from __future__ import absolute_import
 
-from re import (
-    compile as _compile,
-)
-
-from binascii import (
-    Error,
-)
-
-from base64 import (
-    b64decode as _b64decode,
-)
+from base64 import b64decode as _b64decode
+from binascii import Error
+from re import compile as _compile
 
 _b64decode_validator = _compile(b"^[A-Za-z0-9-_]*={0,2}$")
 
diff --git a/src/_zkapauthorizer/_plugin.py b/src/_zkapauthorizer/_plugin.py
index 66a5f43..cf331c6 100644
--- a/src/_zkapauthorizer/_plugin.py
+++ b/src/_zkapauthorizer/_plugin.py
@@ -18,75 +18,31 @@ Tahoe-LAFS.
 """
 
 import random
-from weakref import (
-    WeakValueDictionary,
-)
-from datetime import (
-    datetime,
-    timedelta,
-)
-from functools import (
-    partial,
-)
+from datetime import datetime, timedelta
+from functools import partial
+from weakref import WeakValueDictionary
 
 import attr
-
-from zope.interface import (
-    implementer,
-)
-
-from twisted.logger import (
-    Logger,
-)
-from twisted.python.filepath import (
-    FilePath,
-)
-from twisted.internet.defer import (
-    succeed,
-)
-
-from allmydata.interfaces import (
-    IFoolscapStoragePlugin,
-    IAnnounceableStorageServer,
-)
-from allmydata.node import (
-    MissingConfigEntry,
-)
-from allmydata.client import (
-    _Client,
-)
-from challenge_bypass_ristretto import (
-    SigningKey,
-)
-
-from .api import (
-    ZKAPAuthorizerStorageServer,
-    ZKAPAuthorizerStorageClient,
-)
-
-from .model import (
-    VoucherStore,
-)
-
-from .resource import (
-    from_configuration as resource_from_configuration,
-)
-from .storage_common import (
-    BYTES_PER_PASS,
-    get_configured_pass_value,
-)
-from .controller import (
-    get_redeemer,
-)
-from .spending import (
-    SpendingController,
-)
-
+from allmydata.client import _Client
+from allmydata.interfaces import IAnnounceableStorageServer, IFoolscapStoragePlugin
+from allmydata.node import MissingConfigEntry
+from challenge_bypass_ristretto import SigningKey
+from twisted.internet.defer import succeed
+from twisted.logger import Logger
+from twisted.python.filepath import FilePath
+from zope.interface import implementer
+
+from .api import ZKAPAuthorizerStorageClient, ZKAPAuthorizerStorageServer
+from .controller import get_redeemer
 from .lease_maintenance import (
     SERVICE_NAME,
     lease_maintenance_service,
     maintain_leases_from_root,
 )
+from .model import VoucherStore
+from .resource import from_configuration as resource_from_configuration
+from .spending import SpendingController
+from .storage_common import BYTES_PER_PASS, get_configured_pass_value
 
 _log = Logger()
 
@@ -260,9 +216,7 @@ def _create_maintenance_service(reactor, node_config, client_node):
     def get_now():
         return datetime.utcfromtimestamp(reactor.seconds())
 
-    from twisted.plugins.zkapauthorizer import (
-        storage_server,
-    )
+    from twisted.plugins.zkapauthorizer import storage_server
 
     store = storage_server._get_store(node_config)
 
diff --git a/src/_zkapauthorizer/_stack.py b/src/_zkapauthorizer/_stack.py
index 518db37..c6d5533 100644
--- a/src/_zkapauthorizer/_stack.py
+++ b/src/_zkapauthorizer/_stack.py
@@ -12,16 +12,10 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-from contextlib import (
-    contextmanager,
-)
+from contextlib import contextmanager
 
 try:
-    from resource import (
-        RLIMIT_STACK,
-        getrlimit,
-        setrlimit,
-    )
+    from resource import RLIMIT_STACK, getrlimit, setrlimit
 except ImportError:
     # Not available on Windows, unfortunately.
     RLIMIT_STACK = object()
diff --git a/src/_zkapauthorizer/_storage_client.py b/src/_zkapauthorizer/_storage_client.py
index df88dec..a52e18b 100644
--- a/src/_zkapauthorizer/_storage_client.py
+++ b/src/_zkapauthorizer/_storage_client.py
@@ -20,55 +20,29 @@ This is the client part of a storage access protocol.  The server part is
 implemented in ``_storage_server.py``.
 """
 
-from __future__ import (
-    absolute_import,
-)
+from __future__ import absolute_import
 
-from functools import (
-    partial,
-    wraps,
-)
+from functools import partial, wraps
 
 import attr
-from attr.validators import (
-    provides,
-)
-
-from zope.interface import (
-    implementer,
-)
-
-from eliot.twisted import (
-    inline_callbacks,
-)
-
-from twisted.internet.interfaces import (
-    IReactorTime,
-)
-from twisted.python.reflect import (
-    namedAny,
-)
-from twisted.internet.defer import (
-    returnValue,
-)
-from allmydata.interfaces import (
-    IStorageServer,
-)
-
-from .eliot import (
-    SIGNATURE_CHECK_FAILED,
-    CALL_WITH_PASSES,
-)
-
+from allmydata.interfaces import IStorageServer
+from attr.validators import provides
+from eliot.twisted import inline_callbacks
+from twisted.internet.defer import returnValue
+from twisted.internet.interfaces import IReactorTime
+from twisted.python.reflect import namedAny
+from zope.interface import implementer
+
+from .eliot import CALL_WITH_PASSES, SIGNATURE_CHECK_FAILED
 from .storage_common import (
     MorePassesRequired,
+    add_lease_message,
+    allocate_buckets_message,
+    get_required_new_passes_for_mutable_write,
+    has_writes,
     pass_value_attribute,
     required_passes,
-    allocate_buckets_message,
-    add_lease_message,
     slot_testv_and_readv_and_writev_message,
-    has_writes,
-    get_required_new_passes_for_mutable_write,
 )
 
 
diff --git a/src/_zkapauthorizer/_storage_server.py b/src/_zkapauthorizer/_storage_server.py
index 626870c..8514918 100644
--- a/src/_zkapauthorizer/_storage_server.py
+++ b/src/_zkapauthorizer/_storage_server.py
@@ -21,91 +21,39 @@ This is the server part of a storage access protocol.  The client part is
 implemented in ``_storage_client.py``.
 """
 
-from __future__ import (
-    absolute_import,
-)
-
-from struct import (
-    unpack,
-    calcsize,
-)
-
-from errno import (
-    ENOENT,
-)
+from __future__ import absolute_import
 
-from functools import (
-    partial,
-)
+from datetime import timedelta
+from errno import ENOENT
+from functools import partial
+from os import listdir, stat
+from os.path import join
+from struct import calcsize, unpack
 
-from os.path import (
-    join,
-)
-from os import (
-    listdir,
-    stat,
-)
-from datetime import (
-    timedelta,
-)
 import attr
-from attr.validators import (
-    provides,
-    instance_of,
-)
-
-from zope.interface import (
-    implementer_only,
-)
-from foolscap.api import (
-    Referenceable,
-)
-from foolscap.ipb import (
-    IReferenceable,
-    IRemotelyCallable,
-)
-from allmydata.interfaces import (
-    RIStorageServer,
-)
-from allmydata.storage.common import (
-    storage_index_to_dir,
-)
-from allmydata.util.base32 import (
-    b2a,
-)
-from challenge_bypass_ristretto import (
-    TokenPreimage,
-    VerificationSignature,
-    SigningKey,
-)
-
-from twisted.internet.defer import (
-    Deferred,
-)
-from twisted.python.reflect import (
-    namedAny,
-)
-from twisted.internet.interfaces import (
-    IReactorTime,
-)
-
-from eliot import (
-    start_action,
-)
-
-from .foolscap import (
-    ShareStat,
-    RIPrivacyPassAuthorizedStorageServer,
-)
+from allmydata.interfaces import RIStorageServer
+from allmydata.storage.common import storage_index_to_dir
+from allmydata.util.base32 import b2a
+from attr.validators import instance_of, provides
+from challenge_bypass_ristretto import SigningKey, TokenPreimage, VerificationSignature
+from eliot import start_action
+from foolscap.api import Referenceable
+from foolscap.ipb import IReferenceable, IRemotelyCallable
+from twisted.internet.defer import Deferred
+from twisted.internet.interfaces import IReactorTime
+from twisted.python.reflect import namedAny
+from zope.interface import implementer_only
+
+from .foolscap import RIPrivacyPassAuthorizedStorageServer, ShareStat
 from .storage_common import (
     MorePassesRequired,
+    add_lease_message,
+    allocate_buckets_message,
+    get_required_new_passes_for_mutable_write,
+    has_writes,
     pass_value_attribute,
     required_passes,
-    allocate_buckets_message,
-    add_lease_message,
     slot_testv_and_readv_and_writev_message,
-    has_writes,
-    get_required_new_passes_for_mutable_write,
 )
 
 # See allmydata/storage/mutable.py
@@ -752,17 +700,12 @@ def get_stat(sharepath):
             return stat_bucket
 
 
+from foolscap.ipb import ISlicer
+from foolscap.referenceable import ReferenceableSlicer
+
 # I don't understand why this is required.
 # ZKAPAuthorizerStorageServer is-a Referenceable.  It seems like
 # the built in adapter should take care of this case.
-from twisted.python.components import (
-    registerAdapter,
-)
-from foolscap.referenceable import (
-    ReferenceableSlicer,
-)
-from foolscap.ipb import (
-    ISlicer,
-)
+from twisted.python.components import registerAdapter
 
 registerAdapter(ReferenceableSlicer, ZKAPAuthorizerStorageServer, ISlicer)
diff --git a/src/_zkapauthorizer/api.py b/src/_zkapauthorizer/api.py
index 70e4725..d020b6c 100644
--- a/src/_zkapauthorizer/api.py
+++ b/src/_zkapauthorizer/api.py
@@ -20,17 +20,7 @@ __all__ = [
     "ZKAPAuthorizer",
 ]
 
-from .storage_common import (
-    MorePassesRequired,
-)
-from ._storage_server import (
-    LeaseRenewalRequired,
-    ZKAPAuthorizerStorageServer,
-)
-from ._storage_client import (
-    ZKAPAuthorizerStorageClient,
-)
-
-from ._plugin import (
-    ZKAPAuthorizer,
-)
+from ._plugin import ZKAPAuthorizer
+from ._storage_client import ZKAPAuthorizerStorageClient
+from ._storage_server import LeaseRenewalRequired, ZKAPAuthorizerStorageServer
+from .storage_common import MorePassesRequired
diff --git a/src/_zkapauthorizer/configutil.py b/src/_zkapauthorizer/configutil.py
index c8c955a..2df26fc 100644
--- a/src/_zkapauthorizer/configutil.py
+++ b/src/_zkapauthorizer/configutil.py
@@ -16,12 +16,7 @@
 Basic utilities related to the Tahoe configuration file.
 """
 
-from __future__ import (
-    division,
-    absolute_import,
-    print_function,
-    unicode_literals,
-)
+from __future__ import absolute_import, division, print_function, unicode_literals
 
 
 def _merge_dictionaries(dictionaries):
diff --git a/src/_zkapauthorizer/controller.py b/src/_zkapauthorizer/controller.py
index 881acb4..62d65c8 100644
--- a/src/_zkapauthorizer/controller.py
+++ b/src/_zkapauthorizer/controller.py
@@ -17,90 +17,38 @@ This module implements controllers (in the MVC sense) for the web interface
 for the client side of the storage plugin.
 """
 
-from __future__ import (
-    absolute_import,
-)
-
-from sys import (
-    exc_info,
-)
-from operator import (
-    setitem,
-    delitem,
-)
-from functools import (
-    partial,
-)
-from json import (
-    dumps,
-    loads,
-)
-from datetime import (
-    timedelta,
-)
-from base64 import (
-    b64encode,
-    b64decode,
-)
-from hashlib import (
-    sha256,
-)
+from __future__ import absolute_import
 
-import attr
-
-from zope.interface import (
-    Interface,
-    implementer,
-)
-
-from twisted.python.reflect import (
-    namedAny,
-)
-from twisted.logger import (
-    Logger,
-)
-from twisted.python.url import (
-    URL,
-)
-from twisted.internet.defer import (
-    Deferred,
-    succeed,
-    fail,
-    inlineCallbacks,
-    returnValue,
-)
-from twisted.internet.task import (
-    LoopingCall,
-)
-from twisted.web.client import (
-    Agent,
-)
-from treq import (
-    content,
-)
-from treq.client import (
-    HTTPClient,
-)
+from base64 import b64decode, b64encode
+from datetime import timedelta
+from functools import partial
+from hashlib import sha256
+from json import dumps, loads
+from operator import delitem, setitem
+from sys import exc_info
 
+import attr
 import challenge_bypass_ristretto
-
-from ._base64 import (
-    urlsafe_b64decode,
-)
-from ._stack import (
-    less_limited_stack,
-)
-
-from .model import (
-    RandomToken,
-    UnblindedToken,
-    Voucher,
-    Pass,
-    Pending as model_Pending,
-    Unpaid as model_Unpaid,
-    Redeeming as model_Redeeming,
-    Error as model_Error,
-)
+from treq import content
+from treq.client import HTTPClient
+from twisted.internet.defer import Deferred, fail, inlineCallbacks, returnValue, succeed
+from twisted.internet.task import LoopingCall
+from twisted.logger import Logger
+from twisted.python.reflect import namedAny
+from twisted.python.url import URL
+from twisted.web.client import Agent
+from zope.interface import Interface, implementer
+
+from ._base64 import urlsafe_b64decode
+from ._stack import less_limited_stack
+from .model import Error as model_Error
+from .model import Pass
+from .model import Pending as model_Pending
+from .model import RandomToken
+from .model import Redeeming as model_Redeeming
+from .model import UnblindedToken
+from .model import Unpaid as model_Unpaid
+from .model import Voucher
 
 RETRY_INTERVAL = timedelta(milliseconds=1000)
 
diff --git a/src/_zkapauthorizer/eliot.py b/src/_zkapauthorizer/eliot.py
index 1cd6400..8f607d8 100644
--- a/src/_zkapauthorizer/eliot.py
+++ b/src/_zkapauthorizer/eliot.py
@@ -16,15 +16,9 @@
 Eliot field, message, and action definitions for ZKAPAuthorizer.
 """
 
-from __future__ import (
-    absolute_import,
-)
+from __future__ import absolute_import
 
-from eliot import (
-    Field,
-    MessageType,
-    ActionType,
-)
+from eliot import ActionType, Field, MessageType
 
 PRIVACYPASS_MESSAGE = Field(
     u"message",
diff --git a/src/_zkapauthorizer/foolscap.py b/src/_zkapauthorizer/foolscap.py
index efe98fa..20ba99f 100644
--- a/src/_zkapauthorizer/foolscap.py
+++ b/src/_zkapauthorizer/foolscap.py
@@ -17,32 +17,13 @@ Definitions related to the Foolscap-based protocol used by ZKAPAuthorizer
 to communicate between storage clients and servers.
 """
 
-from __future__ import (
-    absolute_import,
-)
+from __future__ import absolute_import
 
 import attr
-
-from foolscap.constraint import (
-    ByteStringConstraint,
-)
-from foolscap.api import (
-    Any,
-    DictOf,
-    ListOf,
-    Copyable,
-    RemoteCopy,
-)
-from foolscap.remoteinterface import (
-    RemoteMethodSchema,
-    RemoteInterface,
-)
-
-from allmydata.interfaces import (
-    StorageIndex,
-    RIStorageServer,
-    Offset,
-)
+from allmydata.interfaces import Offset, RIStorageServer, StorageIndex
+from foolscap.api import Any, Copyable, DictOf, ListOf, RemoteCopy
+from foolscap.constraint import ByteStringConstraint
+from foolscap.remoteinterface import RemoteInterface, RemoteMethodSchema
 
 
 @attr.s
diff --git a/src/_zkapauthorizer/lease_maintenance.py b/src/_zkapauthorizer/lease_maintenance.py
index 57b6091..8858c91 100644
--- a/src/_zkapauthorizer/lease_maintenance.py
+++ b/src/_zkapauthorizer/lease_maintenance.py
@@ -17,55 +17,26 @@ This module implements a service which periodically spends ZKAPs to
 refresh leases on all shares reachable from a root.
 """
 
-from functools import (
-    partial,
-)
-from datetime import (
-    datetime,
-    timedelta,
-)
-from errno import (
-    ENOENT,
-)
-import attr
-
-from zope.interface import (
-    implementer,
-)
-
-from aniso8601 import (
-    parse_datetime,
-)
-
-from twisted.internet.defer import (
-    inlineCallbacks,
-    maybeDeferred,
-)
-from twisted.application.service import (
-    Service,
-)
-from twisted.python.log import (
-    err,
-)
+from datetime import datetime, timedelta
+from errno import ENOENT
+from functools import partial
 
-from allmydata.interfaces import (
-    IDirectoryNode,
-    IFilesystemNode,
-)
+import attr
+from allmydata.interfaces import IDirectoryNode, IFilesystemNode
 from allmydata.util.hashutil import (
-    file_renewal_secret_hash,
+    bucket_cancel_secret_hash,
     bucket_renewal_secret_hash,
     file_cancel_secret_hash,
-    bucket_cancel_secret_hash,
-)
-
-from .controller import (
-    bracket,
-)
-
-from .model import (
-    ILeaseMaintenanceObserver,
+    file_renewal_secret_hash,
 )
+from aniso8601 import parse_datetime
+from twisted.application.service import Service
+from twisted.internet.defer import inlineCallbacks, maybeDeferred
+from twisted.python.log import err
+from zope.interface import implementer
+
+from .controller import bracket
+from .model import ILeaseMaintenanceObserver
 
 SERVICE_NAME = u"lease maintenance service"
 
diff --git a/src/_zkapauthorizer/model.py b/src/_zkapauthorizer/model.py
index 5e2d344..27e2fe9 100644
--- a/src/_zkapauthorizer/model.py
+++ b/src/_zkapauthorizer/model.py
@@ -17,59 +17,26 @@ This module implements models (in the MVC sense) for the client side of
 the storage plugin.
 """
 
-from functools import (
-    wraps,
-)
-from json import (
-    loads,
-    dumps,
-)
-from datetime import (
-    datetime,
-)
-from zope.interface import (
-    Interface,
-    implementer,
-)
-
-from sqlite3 import (
-    OperationalError,
-    connect as _connect,
-)
+from datetime import datetime
+from functools import wraps
+from json import dumps, loads
+from sqlite3 import OperationalError
+from sqlite3 import connect as _connect
 
 import attr
+from aniso8601 import parse_datetime as _parse_datetime
+from twisted.logger import Logger
+from twisted.python.filepath import FilePath
+from zope.interface import Interface, implementer
 
-from aniso8601 import (
-    parse_datetime as _parse_datetime,
-)
-from twisted.logger import (
-    Logger,
-)
-from twisted.python.filepath import (
-    FilePath,
-)
-
-from ._base64 import (
-    urlsafe_b64decode,
-)
-
-from .validators import (
-    is_base64_encoded,
-    has_length,
-    greater_than,
-)
-
+from ._base64 import urlsafe_b64decode
+from .schema import get_schema_upgrades, get_schema_version, run_schema_upgrades
 from .storage_common import (
-    pass_value_attribute,
     get_configured_pass_value,
+    pass_value_attribute,
     required_passes,
 )
-
-from .schema import (
-    get_schema_version,
-    get_schema_upgrades,
-    run_schema_upgrades,
-)
+from .validators import greater_than, has_length, is_base64_encoded
 
 
 def parse_datetime(s, **kw):
diff --git a/src/_zkapauthorizer/pricecalculator.py b/src/_zkapauthorizer/pricecalculator.py
index 296d0ad..f37e0d7 100644
--- a/src/_zkapauthorizer/pricecalculator.py
+++ b/src/_zkapauthorizer/pricecalculator.py
@@ -29,10 +29,7 @@ calculator).
 
 import attr
 
-from .storage_common import (
-    required_passes,
-    share_size_for_data,
-)
+from .storage_common import required_passes, share_size_for_data
 
 
 @attr.s
diff --git a/src/_zkapauthorizer/private.py b/src/_zkapauthorizer/private.py
index 81eb58b..535c002 100644
--- a/src/_zkapauthorizer/private.py
+++ b/src/_zkapauthorizer/private.py
@@ -10,52 +10,7 @@ Support code for applying token-based HTTP authorization rules to a
 Twisted Web resource hierarchy.
 """
 
-from __future__ import (
-    print_function,
-    unicode_literals,
-    absolute_import,
-    division,
-)
-
-import attr
-
-from zope.interface import (
-    implementer,
-)
-
-from twisted.python.failure import (
-    Failure,
-)
-from twisted.internet.defer import (
-    succeed,
-    fail,
-)
-from twisted.cred.credentials import (
-    ICredentials,
-)
-from twisted.cred.portal import (
-    IRealm,
-    Portal,
-)
-from twisted.cred.checkers import (
-    ANONYMOUS,
-)
-from twisted.cred.error import (
-    UnauthorizedLogin,
-)
-from twisted.web.iweb import (
-    ICredentialFactory,
-)
-from twisted.web.resource import (
-    IResource,
-)
-from twisted.web.guard import (
-    HTTPAuthSessionWrapper,
-)
-
-from cryptography.hazmat.primitives.constant_time import (
-    bytes_eq,
-)
+from __future__ import absolute_import, division, print_function, unicode_literals
 
 # https://github.com/twisted/nevow/issues/106 may affect this code but if so
 # then the hotfix Tahoe-LAFS applies should deal with it.
@@ -64,6 +19,18 @@ from cryptography.hazmat.primitives.constant_time import (
 # public but we do want to make sure that hotfix is applied.  This seems like
 # an alright compromise.
 import allmydata.web.private as awp
+import attr
+from cryptography.hazmat.primitives.constant_time import bytes_eq
+from twisted.cred.checkers import ANONYMOUS
+from twisted.cred.credentials import ICredentials
+from twisted.cred.error import UnauthorizedLogin
+from twisted.cred.portal import IRealm, Portal
+from twisted.internet.defer import fail, succeed
+from twisted.python.failure import Failure
+from twisted.web.guard import HTTPAuthSessionWrapper
+from twisted.web.iweb import ICredentialFactory
+from twisted.web.resource import IResource
+from zope.interface import implementer
 
 del awp
 
diff --git a/src/_zkapauthorizer/resource.py b/src/_zkapauthorizer/resource.py
index 18225e9..7b81c26 100644
--- a/src/_zkapauthorizer/resource.py
+++ b/src/_zkapauthorizer/resource.py
@@ -21,63 +21,27 @@ vouchers for fresh tokens.
 In the future it should also allow users to read statistics about token usage.
 """
 
-from sys import (
-    maxint,
-)
-from itertools import (
-    islice,
-)
-from json import (
-    loads,
-    load,
-    dumps,
-)
-from zope.interface import (
-    Attribute,
-)
-from twisted.logger import (
-    Logger,
-)
-from twisted.web.http import (
-    BAD_REQUEST,
-)
-from twisted.web.server import (
-    NOT_DONE_YET,
-)
-from twisted.web.resource import (
-    IResource,
-    ErrorPage,
-    NoResource,
-    Resource,
-)
-
-from . import (
-    __version__ as _zkapauthorizer_version,
-)
-
-from ._base64 import (
-    urlsafe_b64decode,
-)
-
+from itertools import islice
+from json import dumps, load, loads
+from sys import maxint
+
+from twisted.logger import Logger
+from twisted.web.http import BAD_REQUEST
+from twisted.web.resource import ErrorPage, IResource, NoResource, Resource
+from twisted.web.server import NOT_DONE_YET
+from zope.interface import Attribute
+
+from . import __version__ as _zkapauthorizer_version
+from ._base64 import urlsafe_b64decode
+from .controller import PaymentController, get_redeemer
+from .pricecalculator import PriceCalculator
+from .private import create_private_tree
 from .storage_common import (
+    get_configured_allowed_public_keys,
+    get_configured_lease_duration,
+    get_configured_pass_value,
     get_configured_shares_needed,
     get_configured_shares_total,
-    get_configured_pass_value,
-    get_configured_lease_duration,
-    get_configured_allowed_public_keys,
-)
-
-from .pricecalculator import (
-    PriceCalculator,
-)
-
-from .controller import (
-    PaymentController,
-    get_redeemer,
-)
-
-from .private import (
-    create_private_tree,
 )
 
 # The number of tokens to submit with a voucher redemption.
diff --git a/src/_zkapauthorizer/schema.py b/src/_zkapauthorizer/schema.py
index 40c79ea..9fe72b6 100644
--- a/src/_zkapauthorizer/schema.py
+++ b/src/_zkapauthorizer/schema.py
@@ -12,9 +12,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-from __future__ import (
-    unicode_literals,
-)
+from __future__ import unicode_literals
 
 """
 This module defines the database schema used by the model interface.
diff --git a/src/_zkapauthorizer/spending.py b/src/_zkapauthorizer/spending.py
index 49a693a..19b96ec 100644
--- a/src/_zkapauthorizer/spending.py
+++ b/src/_zkapauthorizer/spending.py
@@ -16,20 +16,10 @@
 A module for logic controlling the manner in which ZKAPs are spent.
 """
 
-from zope.interface import (
-    Interface,
-    Attribute,
-    implementer,
-)
-
 import attr
+from zope.interface import Attribute, Interface, implementer
 
-from .eliot import (
-    GET_PASSES,
-    SPENT_PASSES,
-    INVALID_PASSES,
-    RESET_PASSES,
-)
+from .eliot import GET_PASSES, INVALID_PASSES, RESET_PASSES, SPENT_PASSES
 
 
 class IPassGroup(Interface):
diff --git a/src/_zkapauthorizer/storage_common.py b/src/_zkapauthorizer/storage_common.py
index 8505132..9af2a92 100644
--- a/src/_zkapauthorizer/storage_common.py
+++ b/src/_zkapauthorizer/storage_common.py
@@ -16,27 +16,15 @@
 Functionality shared between the storage client and server.
 """
 
-from __future__ import (
-    division,
-)
+from __future__ import division
 
-from base64 import (
-    b64encode,
-)
+from base64 import b64encode
 
 import attr
+from pyutil.mathutil import div_ceil
 
-from .validators import (
-    greater_than,
-)
-
-from .eliot import (
-    MUTABLE_PASSES_REQUIRED,
-)
-
-from pyutil.mathutil import (
-    div_ceil,
-)
+from .eliot import MUTABLE_PASSES_REQUIRED
+from .validators import greater_than
 
 
 @attr.s(frozen=True, str=True)
diff --git a/src/_zkapauthorizer/tests/__init__.py b/src/_zkapauthorizer/tests/__init__.py
index 6b2e7df..313d67d 100644
--- a/src/_zkapauthorizer/tests/__init__.py
+++ b/src/_zkapauthorizer/tests/__init__.py
@@ -24,10 +24,7 @@ def _configure_hypothesis():
     """
     from os import environ
 
-    from hypothesis import (
-        HealthCheck,
-        settings,
-    )
+    from hypothesis import HealthCheck, settings
 
     base = dict(
         suppress_health_check=[
diff --git a/src/_zkapauthorizer/tests/_exception.py b/src/_zkapauthorizer/tests/_exception.py
index a91f2fb..35dd0b7 100644
--- a/src/_zkapauthorizer/tests/_exception.py
+++ b/src/_zkapauthorizer/tests/_exception.py
@@ -22,13 +22,8 @@ __all__ = [
 
 import sys
 
-from testtools.matchers import (
-    Matcher,
-    Mismatch,
-)
-from testtools.content import (
-    TracebackContent,
-)
+from testtools.content import TracebackContent
+from testtools.matchers import Matcher, Mismatch
 
 
 def _is_exception(exc):
diff --git a/src/_zkapauthorizer/tests/eliot.py b/src/_zkapauthorizer/tests/eliot.py
index 710737d..ba010cf 100644
--- a/src/_zkapauthorizer/tests/eliot.py
+++ b/src/_zkapauthorizer/tests/eliot.py
@@ -16,26 +16,14 @@
 Eliot testing helpers.
 """
 
-from __future__ import (
-    absolute_import,
-)
-
-from functools import (
-    wraps,
-)
-
-from unittest import (
-    SkipTest,
-)
-
-from eliot import (
-    MemoryLogger,
-)
-
-from eliot.testing import (
-    swap_logger,
-    check_for_errors,
-)
+from __future__ import absolute_import
+
+from functools import wraps
+from unittest import SkipTest
+
+from eliot import MemoryLogger
+from eliot.testing import check_for_errors, swap_logger
+
 
 # validate_logging and capture_logging copied from Eliot around 1.11.  We
 # can't upgrade past 1.7 because we're not Python 3 compatible.
diff --git a/src/_zkapauthorizer/tests/fixtures.py b/src/_zkapauthorizer/tests/fixtures.py
index 3b554f2..3a4e415 100644
--- a/src/_zkapauthorizer/tests/fixtures.py
+++ b/src/_zkapauthorizer/tests/fixtures.py
@@ -16,41 +16,19 @@
 Common fixtures to let the test suite focus on application logic.
 """
 
-from __future__ import (
-    absolute_import,
-)
+from __future__ import absolute_import
 
-from base64 import (
-    b64encode,
-)
+from base64 import b64encode
 
 import attr
-
-from fixtures import (
-    Fixture,
-    TempDir,
-)
-
-from twisted.python.filepath import (
-    FilePath,
-)
-from twisted.internet.task import (
-    Clock,
-)
 from allmydata import __version__ as allmydata_version
-from allmydata.storage.server import (
-    StorageServer,
-)
-
-from ..model import (
-    VoucherStore,
-    open_and_initialize,
-    memory_connect,
-)
-from ..controller import (
-    DummyRedeemer,
-    PaymentController,
-)
+from allmydata.storage.server import StorageServer
+from fixtures import Fixture, TempDir
+from twisted.internet.task import Clock
+from twisted.python.filepath import FilePath
+
+from ..controller import DummyRedeemer, PaymentController
+from ..model import VoucherStore, memory_connect, open_and_initialize
 
 
 @attr.s
diff --git a/src/_zkapauthorizer/tests/foolscap.py b/src/_zkapauthorizer/tests/foolscap.py
index 93ba214..3a984be 100644
--- a/src/_zkapauthorizer/tests/foolscap.py
+++ b/src/_zkapauthorizer/tests/foolscap.py
@@ -16,35 +16,14 @@
 Testing helpers related to Foolscap.
 """
 
-from __future__ import (
-    absolute_import,
-)
-
-from zope.interface import (
-    implementer,
-)
+from __future__ import absolute_import
 
 import attr
-
-from twisted.internet.defer import (
-    succeed,
-    fail,
-)
-
-from foolscap.api import (
-    RemoteInterface,
-    Referenceable,
-    Copyable,
-    Any,
-)
-from foolscap.copyable import (
-    ICopyable,
-    CopyableSlicer,
-)
-
-from allmydata.interfaces import (
-    RIStorageServer,
-)
+from allmydata.interfaces import RIStorageServer
+from foolscap.api import Any, Copyable, Referenceable, RemoteInterface
+from foolscap.copyable import CopyableSlicer, ICopyable
+from twisted.internet.defer import fail, succeed
+from zope.interface import implementer
 
 
 class RIStub(RemoteInterface):
diff --git a/src/_zkapauthorizer/tests/json.py b/src/_zkapauthorizer/tests/json.py
index 3ffc724..b8aa7c7 100644
--- a/src/_zkapauthorizer/tests/json.py
+++ b/src/_zkapauthorizer/tests/json.py
@@ -16,13 +16,9 @@
 A better JSON module.
 """
 
-from __future__ import (
-    absolute_import,
-)
+from __future__ import absolute_import
 
-from json import (
-    loads as _loads,
-)
+from json import loads as _loads
 
 
 def loads(data):
diff --git a/src/_zkapauthorizer/tests/matchers.py b/src/_zkapauthorizer/tests/matchers.py
index 18fb3ea..4bfe736 100644
--- a/src/_zkapauthorizer/tests/matchers.py
+++ b/src/_zkapauthorizer/tests/matchers.py
@@ -25,37 +25,27 @@ __all__ = [
     "leases_current",
 ]
 
-from datetime import (
-    datetime,
-)
+from datetime import datetime
 
 import attr
-
 from testtools.matchers import (
-    Matcher,
-    Mismatch,
-    ContainsDict,
+    AfterPreprocessing,
+    AllMatch,
     Always,
+    ContainsDict,
+    Equals,
+    GreaterThan,
+    LessThan,
+    Matcher,
     MatchesAll,
     MatchesAny,
     MatchesStructure,
-    GreaterThan,
-    LessThan,
-    Equals,
-    AfterPreprocessing,
-    AllMatch,
-)
-from testtools.twistedsupport import (
-    succeeded,
-)
-
-from treq import (
-    content,
+    Mismatch,
 )
+from testtools.twistedsupport import succeeded
+from treq import content
 
-from ._exception import (
-    raises,
-)
+from ._exception import raises
 
 
 @attr.s
diff --git a/src/_zkapauthorizer/tests/privacypass.py b/src/_zkapauthorizer/tests/privacypass.py
index d678fa5..a3820b0 100644
--- a/src/_zkapauthorizer/tests/privacypass.py
+++ b/src/_zkapauthorizer/tests/privacypass.py
@@ -16,14 +16,9 @@
 Ristretto-flavored PrivacyPass helpers for the test suite.
 """
 
-from __future__ import (
-    absolute_import,
-)
+from __future__ import absolute_import
 
-from challenge_bypass_ristretto import (
-    BatchDLEQProof,
-    PublicKey,
-)
+from challenge_bypass_ristretto import BatchDLEQProof, PublicKey
 
 
 def make_passes(signing_key, for_message, random_tokens):
diff --git a/src/_zkapauthorizer/tests/storage_common.py b/src/_zkapauthorizer/tests/storage_common.py
index 88df0ae..c28cff6 100644
--- a/src/_zkapauthorizer/tests/storage_common.py
+++ b/src/_zkapauthorizer/tests/storage_common.py
@@ -16,53 +16,20 @@
 ``allmydata.storage``-related helpers shared across the test suite.
 """
 
-from functools import (
-    partial,
-)
-
-from os import (
-    SEEK_CUR,
-)
-from struct import (
-    pack,
-)
-
-from itertools import (
-    islice,
-)
+from functools import partial
+from itertools import islice
+from os import SEEK_CUR
+from struct import pack
 
 import attr
-
-from zope.interface import (
-    implementer,
-)
-
-from twisted.python.filepath import (
-    FilePath,
-)
-
-from challenge_bypass_ristretto import (
-    RandomToken,
-)
-
-from .strategies import (
-    # Not really a strategy...
-    bytes_for_share,
-)
-
-from .privacypass import (
-    make_passes,
-)
-
-from ..model import (
-    NotEnoughTokens,
-    Pass,
-)
-
-from ..spending import (
-    IPassFactory,
-    PassGroup,
-)
+from challenge_bypass_ristretto import RandomToken
+from twisted.python.filepath import FilePath
+from zope.interface import implementer
+
+from ..model import NotEnoughTokens, Pass
+from ..spending import IPassFactory, PassGroup
+from .privacypass import make_passes
+from .strategies import bytes_for_share  # Not really a strategy...
 
 # Hard-coded in Tahoe-LAFS
 LEASE_INTERVAL = 60 * 60 * 24 * 31
diff --git a/src/_zkapauthorizer/tests/strategies.py b/src/_zkapauthorizer/tests/strategies.py
index 74f4e59..567c944 100644
--- a/src/_zkapauthorizer/tests/strategies.py
+++ b/src/_zkapauthorizer/tests/strategies.py
@@ -16,77 +16,48 @@
 Hypothesis strategies for property testing.
 """
 
-from base64 import (
-    b64encode,
-    urlsafe_b64encode,
-)
-from datetime import (
-    datetime,
-)
-from urllib import (
-    quote,
-)
+from base64 import b64encode, urlsafe_b64encode
+from datetime import datetime
+from urllib import quote
 
 import attr
-
-from zope.interface import (
-    implementer,
-)
-
+from allmydata.client import config_from_string
+from allmydata.interfaces import HASH_SIZE, IDirectoryNode, IFilesystemNode
 from hypothesis.strategies import (
-    one_of,
-    sampled_from,
-    just,
-    none,
     binary,
+    builds,
     characters,
-    text,
-    integers,
-    sets,
-    lists,
-    tuples,
+    datetimes,
     dictionaries,
     fixed_dictionaries,
-    builds,
-    datetimes,
+    integers,
+    just,
+    lists,
+    none,
+    one_of,
     recursive,
+    sampled_from,
+    sets,
+    text,
+    tuples,
 )
+from twisted.internet.defer import succeed
+from twisted.internet.task import Clock
+from twisted.web.test.requesthelper import DummyRequest
+from zope.interface import implementer
 
-from twisted.internet.defer import (
-    succeed,
-)
-from twisted.internet.task import (
-    Clock,
-)
-from twisted.web.test.requesthelper import (
-    DummyRequest,
-)
-
-from allmydata.interfaces import (
-    IFilesystemNode,
-    IDirectoryNode,
-    HASH_SIZE,
-)
-
-from allmydata.client import (
-    config_from_string,
-)
-
+from ..configutil import config_string_from_sections
 from ..model import (
+    DoubleSpend,
+    Error,
     Pass,
+    Pending,
     RandomToken,
+    Redeemed,
+    Redeeming,
     UnblindedToken,
-    Voucher,
-    Pending,
-    DoubleSpend,
     Unpaid,
-    Error,
-    Redeeming,
-    Redeemed,
-)
-
-from ..configutil import (
-    config_string_from_sections,
+    Voucher,
 )
 
 # Sizes informed by
diff --git a/src/_zkapauthorizer/tests/test_base64.py b/src/_zkapauthorizer/tests/test_base64.py
index b699a9a..d91bbac 100644
--- a/src/_zkapauthorizer/tests/test_base64.py
+++ b/src/_zkapauthorizer/tests/test_base64.py
@@ -16,31 +16,16 @@
 Tests for ``_zkapauthorizer._base64``.
 """
 
-from __future__ import (
-    absolute_import,
-)
-
-from base64 import (
-    urlsafe_b64encode,
-)
-
-from testtools import (
-    TestCase,
-)
-from testtools.matchers import (
-    Equals,
-)
-
-from hypothesis import (
-    given,
-)
-from hypothesis.strategies import (
-    binary,
-)
-
-from .._base64 import (
-    urlsafe_b64decode,
-)
+from __future__ import absolute_import
+
+from base64 import urlsafe_b64encode
+
+from hypothesis import given
+from hypothesis.strategies import binary
+from testtools import TestCase
+from testtools.matchers import Equals
+
+from .._base64 import urlsafe_b64decode
 
 
 class Base64Tests(TestCase):
diff --git a/src/_zkapauthorizer/tests/test_client_resource.py b/src/_zkapauthorizer/tests/test_client_resource.py
index 55d31f1..954ad66 100644
--- a/src/_zkapauthorizer/tests/test_client_resource.py
+++ b/src/_zkapauthorizer/tests/test_client_resource.py
@@ -17,178 +17,97 @@ Tests for the web resource provided by the client part of the Tahoe-LAFS
 plugin.
 """
 
-from __future__ import (
-    absolute_import,
-)
-
-import attr
+from __future__ import absolute_import
 
-from .._base64 import (
-    urlsafe_b64decode,
-)
+from datetime import datetime
+from io import BytesIO
+from json import dumps
+from urllib import quote
 
-from datetime import (
-    datetime,
-)
-from json import (
-    dumps,
-)
-from io import (
-    BytesIO,
-)
-from urllib import (
-    quote,
-)
-
-from testtools import (
-    TestCase,
+import attr
+from allmydata.client import config_from_string
+from aniso8601 import parse_datetime
+from fixtures import TempDir
+from hypothesis import given, note
+from hypothesis.strategies import (
+    binary,
+    builds,
+    datetimes,
+    dictionaries,
+    fixed_dictionaries,
+    integers,
+    just,
+    lists,
+    none,
+    one_of,
+    sampled_from,
+    text,
+    tuples,
 )
+from testtools import TestCase
+from testtools.content import text_content
 from testtools.matchers import (
-    MatchesStructure,
-    MatchesAll,
-    MatchesAny,
-    MatchesPredicate,
+    AfterPreprocessing,
     AllMatch,
-    HasLength,
-    IsInstance,
+    Always,
     ContainsDict,
-    AfterPreprocessing,
     Equals,
-    Always,
     GreaterThan,
+    HasLength,
     Is,
+    IsInstance,
+    MatchesAll,
+    MatchesAny,
+    MatchesPredicate,
+    MatchesStructure,
 )
-from testtools.twistedsupport import (
-    CaptureTwistedLogs,
-    succeeded,
-)
-from testtools.content import (
-    text_content,
-)
-
-from aniso8601 import (
-    parse_datetime,
-)
-
-from fixtures import (
-    TempDir,
-)
-
-from hypothesis import (
-    given,
-    note,
-)
-from hypothesis.strategies import (
-    one_of,
-    none,
-    just,
-    fixed_dictionaries,
-    sampled_from,
-    lists,
-    integers,
-    binary,
-    text,
-    datetimes,
-    builds,
-    tuples,
-    dictionaries,
-)
-
-from twisted.python.filepath import (
-    FilePath,
-)
-from twisted.internet.defer import (
-    Deferred,
-    maybeDeferred,
-    gatherResults,
-)
-from twisted.internet.task import (
-    Cooperator,
-    Clock,
-)
-from twisted.web.http import (
-    OK,
-    UNAUTHORIZED,
-    NOT_FOUND,
-    BAD_REQUEST,
-    NOT_IMPLEMENTED,
-)
-from twisted.web.http_headers import (
-    Headers,
-)
-from twisted.web.resource import (
-    IResource,
-    getChildForRequest,
-)
-from twisted.web.client import (
-    FileBodyProducer,
-    readBody,
-)
-
-from treq.testing import (
-    RequestTraversalAgent,
-)
-
-from allmydata.client import (
-    config_from_string,
-)
-
-from .. import (
-    __version__ as zkapauthorizer_version,
-)
-
+from testtools.twistedsupport import CaptureTwistedLogs, succeeded
+from treq.testing import RequestTraversalAgent
+from twisted.internet.defer import Deferred, gatherResults, maybeDeferred
+from twisted.internet.task import Clock, Cooperator
+from twisted.python.filepath import FilePath
+from twisted.web.client import FileBodyProducer, readBody
+from twisted.web.http import BAD_REQUEST, NOT_FOUND, NOT_IMPLEMENTED, OK, UNAUTHORIZED
+from twisted.web.http_headers import Headers
+from twisted.web.resource import IResource, getChildForRequest
+
+from .. import __version__ as zkapauthorizer_version
+from .._base64 import urlsafe_b64decode
+from ..configutil import config_string_from_sections
 from ..model import (
-    Voucher,
-    Redeeming,
-    Redeemed,
     DoubleSpend,
-    Unpaid,
     Error,
+    Redeemed,
+    Redeeming,
+    Unpaid,
+    Voucher,
     VoucherStore,
     memory_connect,
 )
-from ..resource import (
-    NUM_TOKENS,
-    from_configuration,
-    get_token_count,
-)
-
-from ..pricecalculator import (
-    PriceCalculator,
-)
-from ..configutil import (
-    config_string_from_sections,
-)
-
+from ..pricecalculator import PriceCalculator
+from ..resource import NUM_TOKENS, from_configuration, get_token_count
 from ..storage_common import (
-    required_passes,
-    get_configured_pass_value,
-    get_configured_lease_duration,
     get_configured_allowed_public_keys,
+    get_configured_lease_duration,
+    get_configured_pass_value,
+    required_passes,
 )
-
+from .json import loads
+from .matchers import Provides, between, matches_response
 from .strategies import (
-    direct_tahoe_configs,
-    tahoe_configs,
-    client_unpaidredeemer_configurations,
+    api_auth_tokens,
     client_doublespendredeemer_configurations,
     client_dummyredeemer_configurations,
-    client_nonredeemer_configurations,
     client_errorredeemer_configurations,
-    unblinded_tokens,
-    vouchers,
-    requests,
+    client_nonredeemer_configurations,
+    client_unpaidredeemer_configurations,
+    direct_tahoe_configs,
     request_paths,
-    api_auth_tokens,
+    requests,
     share_parameters,
-)
-from .matchers import (
-    Provides,
-    matches_response,
-    between,
-)
-from .json import (
-    loads,
+    tahoe_configs,
+    unblinded_tokens,
+    vouchers,
 )
 
 TRANSIENT_ERROR = u"something went wrong, who knows what"
diff --git a/src/_zkapauthorizer/tests/test_controller.py b/src/_zkapauthorizer/tests/test_controller.py
index 21fb093..c063eb0 100644
--- a/src/_zkapauthorizer/tests/test_controller.py
+++ b/src/_zkapauthorizer/tests/test_controller.py
@@ -16,138 +16,77 @@
 Tests for ``_zkapauthorizer.controller``.
 """
 
-from __future__ import (
-    absolute_import,
-    division,
-)
+from __future__ import absolute_import, division
 
-from json import (
-    loads,
-    dumps,
-)
-from functools import (
-    partial,
-)
-from datetime import (
-    datetime,
-    timedelta,
-)
-from zope.interface import (
-    implementer,
-)
-from testtools import (
-    TestCase,
-)
-from testtools.content import (
-    text_content,
-)
-from testtools.matchers import (
-    Always,
-    Equals,
-    MatchesAll,
-    AllMatch,
-    IsInstance,
-    HasLength,
-    AfterPreprocessing,
-    MatchesStructure,
-)
-from testtools.twistedsupport import (
-    succeeded,
-    has_no_result,
-    failed,
-)
-
-from hypothesis import (
-    given,
-    assume,
-)
-from hypothesis.strategies import (
-    integers,
-    datetimes,
-    lists,
-    sampled_from,
-    randoms,
-)
-from twisted.python.url import (
-    URL,
-)
-from twisted.internet.defer import (
-    fail,
-)
-from twisted.internet.task import (
-    Clock,
-)
-from twisted.web.iweb import (
-    IAgent,
-)
-from twisted.web.resource import (
-    ErrorPage,
-    Resource,
-)
-from twisted.web.http_headers import (
-    Headers,
-)
-from twisted.web.http import (
-    UNSUPPORTED_MEDIA_TYPE,
-    BAD_REQUEST,
-    INTERNAL_SERVER_ERROR,
-)
-from treq.testing import (
-    StubTreq,
-)
+from datetime import datetime, timedelta
+from functools import partial
+from json import dumps, loads
 
 from challenge_bypass_ristretto import (
-    SecurityException,
-    PublicKey,
-    BlindedToken,
     BatchDLEQProof,
+    BlindedToken,
+    PublicKey,
+    SecurityException,
     TokenPreimage,
     VerificationSignature,
     random_signing_key,
 )
+from hypothesis import assume, given
+from hypothesis.strategies import datetimes, integers, lists, randoms, sampled_from
+from testtools import TestCase
+from testtools.content import text_content
+from testtools.matchers import (
+    AfterPreprocessing,
+    AllMatch,
+    Always,
+    Equals,
+    HasLength,
+    IsInstance,
+    MatchesAll,
+    MatchesStructure,
+)
+from testtools.twistedsupport import failed, has_no_result, succeeded
+from treq.testing import StubTreq
+from twisted.internet.defer import fail
+from twisted.internet.task import Clock
+from twisted.python.url import URL
+from twisted.web.http import BAD_REQUEST, INTERNAL_SERVER_ERROR, UNSUPPORTED_MEDIA_TYPE
+from twisted.web.http_headers import Headers
+from twisted.web.iweb import IAgent
+from twisted.web.resource import ErrorPage, Resource
+from zope.interface import implementer
 
 from ..controller import (
-    IRedeemer,
-    NonRedeemer,
-    DummyRedeemer,
+    AlreadySpent,
     DoubleSpendRedeemer,
-    UnpaidRedeemer,
-    RistrettoRedeemer,
+    DummyRedeemer,
     IndexedRedeemer,
-    RecordingRedeemer,
+    IRedeemer,
+    NonRedeemer,
     PaymentController,
+    RecordingRedeemer,
+    RistrettoRedeemer,
     UnexpectedResponse,
-    AlreadySpent,
     Unpaid,
+    UnpaidRedeemer,
     token_count_for_group,
 )
-
-from ..model import (
-    UnblindedToken,
-    Pending as model_Pending,
-    Redeeming as model_Redeeming,
-    DoubleSpend as model_DoubleSpend,
-    Redeemed as model_Redeemed,
-    Unpaid as model_Unpaid,
-)
-
+from ..model import DoubleSpend as model_DoubleSpend
+from ..model import Pending as model_Pending
+from ..model import Redeemed as model_Redeemed
+from ..model import Redeeming as model_Redeeming
+from ..model import UnblindedToken
+from ..model import Unpaid as model_Unpaid
+from .fixtures import ConfiglessMemoryVoucherStore, TemporaryVoucherStore
+from .matchers import Provides, between, raises
 from .strategies import (
+    clocks,
+    dummy_ristretto_keys,
+    redemption_group_counts,
     tahoe_configs,
-    vouchers,
-    voucher_objects,
     voucher_counters,
-    redemption_group_counts,
-    dummy_ristretto_keys,
-    clocks,
-)
-from .matchers import (
-    Provides,
-    raises,
-    between,
-)
-from .fixtures import (
-    TemporaryVoucherStore,
-    ConfiglessMemoryVoucherStore,
+    voucher_objects,
+    vouchers,
 )
 
 
diff --git a/src/_zkapauthorizer/tests/test_foolscap.py b/src/_zkapauthorizer/tests/test_foolscap.py
index c62fb10..3a313b8 100644
--- a/src/_zkapauthorizer/tests/test_foolscap.py
+++ b/src/_zkapauthorizer/tests/test_foolscap.py
@@ -16,70 +16,29 @@
 Tests for Foolscap-related test helpers.
 """
 
-from __future__ import (
-    absolute_import,
-)
-
-from fixtures import (
-    Fixture,
-)
-from testtools import (
-    TestCase,
-)
+from __future__ import absolute_import
+
+from fixtures import Fixture
+from foolscap.api import Any, RemoteInterface, Violation
+from foolscap.furl import decode_furl
+from foolscap.pb import Tub
+from foolscap.referenceable import RemoteReferenceOnly, RemoteReferenceTracker
+from hypothesis import given
+from hypothesis.strategies import just, one_of
+from testtools import TestCase
 from testtools.matchers import (
-    Equals,
-    MatchesAll,
     AfterPreprocessing,
     Always,
+    Equals,
     IsInstance,
+    MatchesAll,
 )
-from testtools.twistedsupport import (
-    succeeded,
-    failed,
-)
-
-from twisted.trial.unittest import (
-    TestCase as TrialTestCase,
-)
-from twisted.internet.defer import (
-    inlineCallbacks,
-)
-
-from foolscap.api import (
-    Violation,
-    RemoteInterface,
-    Any,
-)
-from foolscap.furl import (
-    decode_furl,
-)
-from foolscap.pb import (
-    Tub,
-)
-from foolscap.referenceable import (
-    RemoteReferenceTracker,
-    RemoteReferenceOnly,
-)
-
-from hypothesis import (
-    given,
-)
-from hypothesis.strategies import (
-    one_of,
-    just,
-)
-
-from .foolscap import (
-    RIStub,
-    Echoer,
-    LocalRemote,
-    BrokenCopyable,
-    DummyReferenceable,
-)
+from testtools.twistedsupport import failed, succeeded
+from twisted.internet.defer import inlineCallbacks
+from twisted.trial.unittest import TestCase as TrialTestCase
 
-from ..foolscap import (
-    ShareStat,
-)
+from ..foolscap import ShareStat
+from .foolscap import BrokenCopyable, DummyReferenceable, Echoer, LocalRemote, RIStub
 
 
 class IHasSchema(RemoteInterface):
diff --git a/src/_zkapauthorizer/tests/test_lease_maintenance.py b/src/_zkapauthorizer/tests/test_lease_maintenance.py
index d13dd63..2a8743d 100644
--- a/src/_zkapauthorizer/tests/test_lease_maintenance.py
+++ b/src/_zkapauthorizer/tests/test_lease_maintenance.py
@@ -16,105 +16,55 @@
 Tests for ``_zkapauthorizer.lease_maintenance``.
 """
 
-from __future__ import (
-    absolute_import,
-    unicode_literals,
-)
+from __future__ import absolute_import, unicode_literals
 
-from datetime import (
-    datetime,
-    timedelta,
-)
+from datetime import datetime, timedelta
 
 import attr
-
-from zope.interface import (
-    implementer,
-)
-
-from testtools import (
-    TestCase,
-)
-from testtools.matchers import (
-    Is,
-    Equals,
-    Always,
-    HasLength,
-    MatchesAll,
-    AllMatch,
-    AfterPreprocessing,
-)
-from testtools.twistedsupport import (
-    succeeded,
-)
-from fixtures import (
-    TempDir,
-)
-from hypothesis import (
-    given,
-    note,
-)
+from allmydata.client import SecretHolder
+from allmydata.interfaces import IServer, IStorageBroker
+from allmydata.util.hashutil import CRYPTO_VAL_SIZE
+from fixtures import TempDir
+from hypothesis import given, note
 from hypothesis.strategies import (
-    builds,
     binary,
+    builds,
+    composite,
+    dictionaries,
+    floats,
     integers,
+    just,
     lists,
-    floats,
-    dictionaries,
     randoms,
-    composite,
-    just,
-)
-
-from twisted.python.filepath import (
-    FilePath,
-)
-from twisted.internet.task import (
-    Clock,
-)
-from twisted.internet.defer import (
-    succeed,
-    maybeDeferred,
-)
-from twisted.application.service import (
-    IService,
-)
-
-from allmydata.util.hashutil import (
-    CRYPTO_VAL_SIZE,
-)
-from allmydata.client import (
-    SecretHolder,
-)
-from allmydata.interfaces import (
-    IStorageBroker,
-    IServer,
-)
-
-from ..foolscap import (
-    ShareStat,
-)
-
-from .matchers import (
-    Provides,
-    between,
-    leases_current,
 )
-from .strategies import (
-    storage_indexes,
-    clocks,
-    leaf_nodes,
-    node_hierarchies,
+from testtools import TestCase
+from testtools.matchers import (
+    AfterPreprocessing,
+    AllMatch,
+    Always,
+    Equals,
+    HasLength,
+    Is,
+    MatchesAll,
 )
-
+from testtools.twistedsupport import succeeded
+from twisted.application.service import IService
+from twisted.internet.defer import maybeDeferred, succeed
+from twisted.internet.task import Clock
+from twisted.python.filepath import FilePath
+from zope.interface import implementer
+
+from ..foolscap import ShareStat
 from ..lease_maintenance import (
-    NoopMaintenanceObserver,
     MemoryMaintenanceObserver,
+    NoopMaintenanceObserver,
     lease_maintenance_service,
     maintain_leases_from_root,
-    visit_storage_indexes_from_root,
     renew_leases,
+    visit_storage_indexes_from_root,
 )
+from .matchers import Provides, between, leases_current
+from .strategies import clocks, leaf_nodes, node_hierarchies, storage_indexes
 
 
 def interval_means():
diff --git a/src/_zkapauthorizer/tests/test_matchers.py b/src/_zkapauthorizer/tests/test_matchers.py
index a2df351..e34bb8a 100644
--- a/src/_zkapauthorizer/tests/test_matchers.py
+++ b/src/_zkapauthorizer/tests/test_matchers.py
@@ -16,27 +16,13 @@
 Tests for ``_zkapauthorizer.tests.matchers``.
 """
 
-from __future__ import (
-    absolute_import,
-)
-
-from zope.interface import (
-    Interface,
-    implementer,
-)
-
-from testtools import (
-    TestCase,
-)
-from testtools.matchers import (
-    Not,
-    Is,
-)
-
-from .matchers import (
-    Provides,
-    returns,
-)
+from __future__ import absolute_import
+
+from testtools import TestCase
+from testtools.matchers import Is, Not
+from zope.interface import Interface, implementer
+
+from .matchers import Provides, returns
 
 
 class IX(Interface):
diff --git a/src/_zkapauthorizer/tests/test_model.py b/src/_zkapauthorizer/tests/test_model.py
index dbff95f..bff6a60 100644
--- a/src/_zkapauthorizer/tests/test_model.py
+++ b/src/_zkapauthorizer/tests/test_model.py
@@ -17,101 +17,69 @@
 Tests for ``_zkapauthorizer.model``.
 """
 
-from __future__ import (
-    absolute_import,
-)
+from __future__ import absolute_import
 
-from os import (
-    mkdir,
-)
-from errno import (
-    EACCES,
-)
-from datetime import (
-    datetime,
-    timedelta,
-)
+from datetime import datetime, timedelta
+from errno import EACCES
+from os import mkdir
+from unittest import skipIf
 
-from unittest import (
-    skipIf,
-)
-
-from testtools import (
-    TestCase,
-)
-from testtools.matchers import (
-    Always,
-    HasLength,
-    AfterPreprocessing,
-    MatchesStructure,
-    MatchesAll,
-    Equals,
-    Raises,
-    IsInstance,
-)
-from testtools.twistedsupport import (
-    succeeded,
-)
-
-from fixtures import (
-    TempDir,
-)
-
-from hypothesis import (
-    note,
-    given,
-    assume,
-)
+from fixtures import TempDir
+from hypothesis import assume, given, note
 from hypothesis.stateful import (
     RuleBasedStateMachine,
-    rule,
-    precondition,
     invariant,
+    precondition,
+    rule,
     run_state_machine_as_test,
 )
 from hypothesis.strategies import (
-    data,
     booleans,
-    lists,
-    tuples,
+    data,
     datetimes,
-    timedeltas,
     integers,
+    lists,
     randoms,
+    timedeltas,
+    tuples,
 )
-
-from twisted.python.runtime import (
-    platform,
+from testtools import TestCase
+from testtools.matchers import (
+    AfterPreprocessing,
+    Always,
+    Equals,
+    HasLength,
+    IsInstance,
+    MatchesAll,
+    MatchesStructure,
+    Raises,
 )
+from testtools.twistedsupport import succeeded
+from twisted.python.runtime import platform
 
 from ..model import (
-    StoreOpenError,
+    DoubleSpend,
+    LeaseMaintenanceActivity,
     NotEnoughTokens,
-    VoucherStore,
-    Voucher,
     Pending,
-    DoubleSpend,
     Redeemed,
-    LeaseMaintenanceActivity,
+    StoreOpenError,
+    Voucher,
+    VoucherStore,
     memory_connect,
 )
+from .fixtures import ConfiglessMemoryVoucherStore, TemporaryVoucherStore
+from .matchers import raises
 from .strategies import (
-    tahoe_configs,
-    vouchers,
-    voucher_objects,
-    voucher_counters,
-    random_tokens,
-    unblinded_tokens,
-    posix_safe_datetimes,
     dummy_ristretto_keys,
     pass_counts,
-)
-from .fixtures import (
-    TemporaryVoucherStore,
-    ConfiglessMemoryVoucherStore,
-)
-from .matchers import (
-    raises,
+    posix_safe_datetimes,
+    random_tokens,
+    tahoe_configs,
+    unblinded_tokens,
+    voucher_counters,
+    voucher_objects,
+    vouchers,
 )
 
 
diff --git a/src/_zkapauthorizer/tests/test_plugin.py b/src/_zkapauthorizer/tests/test_plugin.py
index 2692962..78959a5 100644
--- a/src/_zkapauthorizer/tests/test_plugin.py
+++ b/src/_zkapauthorizer/tests/test_plugin.py
@@ -16,164 +16,78 @@
 Tests for the Tahoe-LAFS plugin.
 """
 
-from __future__ import (
-    absolute_import,
-)
+from __future__ import absolute_import
 
-from StringIO import (
-    StringIO,
-)
-from os import (
-    makedirs,
-)
 import tempfile
-from functools import (
-    partial,
-)
-
-from fixtures import (
-    TempDir,
-)
+from functools import partial
+from os import makedirs
 
-from testtools import (
-    TestCase,
+from allmydata.client import config_from_string, create_client_from_config
+from allmydata.interfaces import (
+    IAnnounceableStorageServer,
+    IFoolscapStoragePlugin,
+    IStorageServer,
+    RIStorageServer,
 )
+from challenge_bypass_ristretto import SigningKey
+from eliot.testing import LoggedMessage
+from fixtures import TempDir
+from foolscap.broker import Broker
+from foolscap.ipb import IReferenceable, IRemotelyCallable
+from foolscap.referenceable import LocalReferenceable
+from hypothesis import given, settings
+from hypothesis.strategies import datetimes, just, sampled_from
+from StringIO import StringIO
+from testtools import TestCase
+from testtools.content import text_content
 from testtools.matchers import (
+    AfterPreprocessing,
+    AllMatch,
     Always,
     Contains,
+    ContainsDict,
     Equals,
-    AfterPreprocessing,
-    MatchesAll,
     HasLength,
-    AllMatch,
-    ContainsDict,
-    MatchesStructure,
     IsInstance,
+    MatchesAll,
+    MatchesStructure,
 )
-from testtools.twistedsupport import (
-    succeeded,
-)
-from testtools.content import (
-    text_content,
-)
-from hypothesis import (
-    given,
-    settings,
-)
-from hypothesis.strategies import (
-    just,
-    datetimes,
-    sampled_from,
-)
-from foolscap.broker import (
-    Broker,
-)
-from foolscap.ipb import (
-    IReferenceable,
-    IRemotelyCallable,
-)
-from foolscap.referenceable import (
-    LocalReferenceable,
-)
-
-from allmydata.interfaces import (
-    IFoolscapStoragePlugin,
-    IAnnounceableStorageServer,
-    IStorageServer,
-    RIStorageServer,
-)
-from allmydata.client import (
-    config_from_string,
-    create_client_from_config,
-)
-
-from eliot.testing import (
-    LoggedMessage,
-)
-
-from twisted.python.filepath import (
-    FilePath,
-)
-from twisted.plugin import (
-    getPlugins,
-)
-from twisted.test.proto_helpers import (
-    StringTransport,
-)
-from twisted.internet.task import (
-    Clock,
-)
-from twisted.web.resource import (
-    IResource,
-)
-from twisted.plugins.zkapauthorizer import (
-    storage_server,
-)
-
-from challenge_bypass_ristretto import (
-    SigningKey,
-)
-
-from ..spending import (
-    GET_PASSES,
-)
-
-from ..foolscap import (
-    RIPrivacyPassAuthorizedStorageServer,
-)
-from ..model import (
-    NotEnoughTokens,
-    VoucherStore,
-)
-from ..controller import (
-    IssuerConfigurationMismatch,
-    PaymentController,
-    DummyRedeemer,
-)
-from .._storage_client import (
-    IncorrectStorageServerReference,
-)
-
-from ..lease_maintenance import (
-    SERVICE_NAME,
-)
-
-from .._plugin import (
-    load_signing_key,
-)
-
+from testtools.twistedsupport import succeeded
+from twisted.internet.task import Clock
+from twisted.plugin import getPlugins
+from twisted.python.filepath import FilePath
+from twisted.test.proto_helpers import StringTransport
+from twisted.web.resource import IResource
+
+from twisted.plugins.zkapauthorizer import storage_server
+
+from .._plugin import load_signing_key
+from .._storage_client import IncorrectStorageServerReference
+from ..controller import DummyRedeemer, IssuerConfigurationMismatch, PaymentController
+from ..foolscap import RIPrivacyPassAuthorizedStorageServer
+from ..lease_maintenance import SERVICE_NAME
+from ..model import NotEnoughTokens, VoucherStore
+from ..spending import GET_PASSES
+from .eliot import capture_logging
+from .foolscap import DummyReferenceable, LocalRemote, get_anonymous_storage_server
+from .matchers import Provides, raises
 from .strategies import (
-    minimal_tahoe_configs,
-    tahoe_configs,
-    client_dummyredeemer_configurations,
-    server_configurations,
     announcements,
-    vouchers,
-    storage_indexes,
-    lease_renew_secrets,
+    client_dummyredeemer_configurations,
+    dummy_ristretto_keys,
     lease_cancel_secrets,
-    sharenum_sets,
-    sizes,
+    lease_renew_secrets,
+    minimal_tahoe_configs,
     pass_counts,
     ristretto_signing_keys,
-    dummy_ristretto_keys,
-)
-from .matchers import (
-    Provides,
-    raises,
-)
-
-from .foolscap import (
-    LocalRemote,
-    get_anonymous_storage_server,
-    DummyReferenceable,
-)
-
-from .eliot import (
-    capture_logging,
+    server_configurations,
+    sharenum_sets,
+    sizes,
+    storage_indexes,
+    tahoe_configs,
+    vouchers,
 )
 
-
 SIGNING_KEY_PATH = FilePath(__file__).sibling(u"testing-signing.key")
 
 
diff --git a/src/_zkapauthorizer/tests/test_pricecalculator.py b/src/_zkapauthorizer/tests/test_pricecalculator.py
index c1ca75d..baadd91 100644
--- a/src/_zkapauthorizer/tests/test_pricecalculator.py
+++ b/src/_zkapauthorizer/tests/test_pricecalculator.py
@@ -17,41 +17,16 @@
 Tests for ``_zkapauthorizer.pricecalculator``.
 """
 
-from functools import (
-    partial,
-)
-
-from testtools import (
-    TestCase,
-)
-from testtools.matchers import (
-    Equals,
-    GreaterThan,
-    IsInstance,
-    MatchesAll,
-)
-
-from hypothesis import (
-    given,
-)
-
-from hypothesis.strategies import (
-    integers,
-    lists,
-    tuples,
-)
-
-from ..pricecalculator import (
-    PriceCalculator,
-)
-
-from .strategies import (
-    sizes,
-    share_parameters,
-)
-from .matchers import (
-    greater_or_equal,
-)
+from functools import partial
+
+from hypothesis import given
+from hypothesis.strategies import integers, lists, tuples
+from testtools import TestCase
+from testtools.matchers import Equals, GreaterThan, IsInstance, MatchesAll
+
+from ..pricecalculator import PriceCalculator
+from .matchers import greater_or_equal
+from .strategies import share_parameters, sizes
 
 file_sizes = lists(sizes(), min_size=1)
 
diff --git a/src/_zkapauthorizer/tests/test_private.py b/src/_zkapauthorizer/tests/test_private.py
index 54d6d3f..568cc1e 100644
--- a/src/_zkapauthorizer/tests/test_private.py
+++ b/src/_zkapauthorizer/tests/test_private.py
@@ -9,49 +9,19 @@
 Tests for ``_zkapauthorizer.private``.
 """
 
-from __future__ import (
-    print_function,
-    unicode_literals,
-    absolute_import,
-    division,
-)
+from __future__ import absolute_import, division, print_function, unicode_literals
 
-from testtools import (
-    TestCase,
-)
-from testtools.matchers import (
-    Equals,
-)
-from testtools.twistedsupport import (
-    succeeded,
-)
+from allmydata.test.web.matchers import has_response_code
+from testtools import TestCase
+from testtools.matchers import Equals
+from testtools.twistedsupport import succeeded
+from treq.client import HTTPClient
+from treq.testing import RequestTraversalAgent
+from twisted.web.http import NOT_FOUND, UNAUTHORIZED
+from twisted.web.http_headers import Headers
+from twisted.web.resource import Resource
 
-from twisted.web.http import (
-    UNAUTHORIZED,
-    NOT_FOUND,
-)
-from twisted.web.http_headers import (
-    Headers,
-)
-from twisted.web.resource import (
-    Resource,
-)
-
-from treq.client import (
-    HTTPClient,
-)
-from treq.testing import (
-    RequestTraversalAgent,
-)
-
-from ..private import (
-    SCHEME,
-    create_private_tree,
-)
-
-from allmydata.test.web.matchers import (
-    has_response_code,
-)
+from ..private import SCHEME, create_private_tree
 
 
 class PrivacyTests(TestCase):
diff --git a/src/_zkapauthorizer/tests/test_schema.py b/src/_zkapauthorizer/tests/test_schema.py
index a3b9d07..1c53556 100644
--- a/src/_zkapauthorizer/tests/test_schema.py
+++ b/src/_zkapauthorizer/tests/test_schema.py
@@ -17,20 +17,12 @@
 Tests for ``_zkapauthorizer.schema``.
 """
 
-from __future__ import (
-    absolute_import,
-)
+from __future__ import absolute_import
 
-from testtools import (
-    TestCase,
-)
-from testtools.matchers import (
-    Equals,
-)
+from testtools import TestCase
+from testtools.matchers import Equals
 
-from ..schema import (
-    _UPGRADES,
-)
+from ..schema import _UPGRADES
 
 
 class UpgradeTests(TestCase):
diff --git a/src/_zkapauthorizer/tests/test_spending.py b/src/_zkapauthorizer/tests/test_spending.py
index 7b3908c..6833e08 100644
--- a/src/_zkapauthorizer/tests/test_spending.py
+++ b/src/_zkapauthorizer/tests/test_spending.py
@@ -16,45 +16,23 @@
 Tests for ``_zkapauthorizer.spending``.
 """
 
-from testtools import (
-    TestCase,
-)
+from hypothesis import given
+from hypothesis.strategies import data, integers, randoms
+from testtools import TestCase
 from testtools.matchers import (
+    AfterPreprocessing,
     Always,
     Equals,
+    HasLength,
     MatchesAll,
     MatchesStructure,
-    HasLength,
-    AfterPreprocessing,
-)
-from testtools.twistedsupport import (
-    succeeded,
 )
+from testtools.twistedsupport import succeeded
 
-from hypothesis import (
-    given,
-)
-from hypothesis.strategies import (
-    integers,
-    randoms,
-    data,
-)
-
-from .strategies import (
-    vouchers,
-    pass_counts,
-    posix_safe_datetimes,
-)
-from .matchers import (
-    Provides,
-)
-from .fixtures import (
-    ConfiglessMemoryVoucherStore,
-)
-from ..spending import (
-    IPassGroup,
-    SpendingController,
-)
+from ..spending import IPassGroup, SpendingController
+from .fixtures import ConfiglessMemoryVoucherStore
+from .matchers import Provides
+from .strategies import pass_counts, posix_safe_datetimes, vouchers
 
 
 class PassGroupTests(TestCase):
diff --git a/src/_zkapauthorizer/tests/test_storage_client.py b/src/_zkapauthorizer/tests/test_storage_client.py
index 5d76928..1075884 100644
--- a/src/_zkapauthorizer/tests/test_storage_client.py
+++ b/src/_zkapauthorizer/tests/test_storage_client.py
@@ -16,84 +16,41 @@
 Tests for ``_zkapauthorizer._storage_client``.
 """
 
-from __future__ import (
-    division,
-)
+from __future__ import division
 
-from functools import (
-    partial,
-)
+from functools import partial
 
-from testtools import (
-    TestCase,
-)
+from allmydata.client import config_from_string
+from hypothesis import given
+from hypothesis.strategies import integers, sampled_from, sets
+from testtools import TestCase
 from testtools.matchers import (
+    AfterPreprocessing,
+    AllMatch,
     Always,
-    Is,
     Equals,
-    AfterPreprocessing,
-    MatchesStructure,
     HasLength,
-    MatchesAll,
-    AllMatch,
+    Is,
     IsInstance,
+    MatchesAll,
+    MatchesStructure,
 )
-from testtools.twistedsupport import (
-    succeeded,
-    failed,
-)
-
-from hypothesis import (
-    given,
-)
-from hypothesis.strategies import (
-    sampled_from,
-    integers,
-    sets,
-)
-
-from twisted.internet.defer import (
-    succeed,
-    fail,
-)
-
-from allmydata.client import (
-    config_from_string,
-)
-
+from testtools.twistedsupport import failed, succeeded
+from twisted.internet.defer import fail, succeed
 
-from ..api import (
-    MorePassesRequired,
-)
-from ..model import (
-    NotEnoughTokens,
-)
+from .._storage_client import call_with_passes
+from .._storage_server import _ValidationResult
+from ..api import MorePassesRequired
+from ..model import NotEnoughTokens
 from ..storage_common import (
+    get_configured_allowed_public_keys,
+    get_configured_pass_value,
     get_configured_shares_needed,
     get_configured_shares_total,
-    get_configured_pass_value,
-    get_configured_allowed_public_keys,
-)
-from .._storage_client import (
-    call_with_passes,
-)
-
-from .._storage_server import (
-    _ValidationResult,
-)
-from .matchers import (
-    even,
-    odd,
-    raises,
-)
-from .strategies import (
-    pass_counts,
-    dummy_ristretto_keys,
-)
-from .storage_common import (
-    pass_factory,
-    integer_passes,
 )
+from .matchers import even, odd, raises
+from .storage_common import integer_passes, pass_factory
+from .strategies import dummy_ristretto_keys, pass_counts
 
 
 class GetConfiguredValueTests(TestCase):
diff --git a/src/_zkapauthorizer/tests/test_storage_protocol.py b/src/_zkapauthorizer/tests/test_storage_protocol.py
index f5e51f7..f9ad026 100644
--- a/src/_zkapauthorizer/tests/test_storage_protocol.py
+++ b/src/_zkapauthorizer/tests/test_storage_protocol.py
@@ -16,121 +16,72 @@
 Tests for communication between the client and server components.
 """
 
-from __future__ import (
-    absolute_import,
-)
-
-from fixtures import (
-    MonkeyPatch,
-)
-from testtools import (
-    TestCase,
-)
+from __future__ import absolute_import
+
+from allmydata.storage.common import storage_index_to_dir
+from challenge_bypass_ristretto import random_signing_key
+from fixtures import MonkeyPatch
+from foolscap.referenceable import LocalReferenceable
+from hypothesis import assume, given
+from hypothesis.strategies import data as data_strategy
+from hypothesis.strategies import integers, lists, sets, tuples
+from testtools import TestCase
 from testtools.matchers import (
+    AfterPreprocessing,
     Always,
     Equals,
     HasLength,
     IsInstance,
-    AfterPreprocessing,
     MatchesStructure,
     raises,
 )
-from testtools.twistedsupport import (
-    succeeded,
-    failed,
-)
+from testtools.twistedsupport import failed, succeeded
 
 # I'd rather use https://twistedmatrix.com/trac/ticket/8900 but efforts
 # there appear to have stalled.
-from testtools.twistedsupport._deferred import (
-    extract_result,
-)
-
-from hypothesis import (
-    given,
-    assume,
-)
-from hypothesis.strategies import (
-    sets,
-    lists,
-    tuples,
-    integers,
-    data as data_strategy,
-)
+from testtools.twistedsupport._deferred import extract_result
+from twisted.internet.task import Clock
+from twisted.python.filepath import FilePath
+from twisted.python.runtime import platform
 
-from twisted.python.runtime import (
-    platform,
-)
-from twisted.python.filepath import (
-    FilePath,
-)
-from twisted.internet.task import (
-    Clock,
-)
-
-from foolscap.referenceable import (
-    LocalReferenceable,
-)
-
-from challenge_bypass_ristretto import (
-    random_signing_key,
-)
-
-from allmydata.storage.common import (
-    storage_index_to_dir,
-)
-
-from .common import (
-    skipIf,
-)
-
-from .strategies import (
-    storage_indexes,
-    lease_renew_secrets,
-    lease_cancel_secrets,
-    write_enabler_secrets,
-    share_versions,
-    sharenums,
-    sharenum_sets,
-    sizes,
-    slot_test_and_write_vectors_for_shares,
-    posix_timestamps,
-    bytes_for_share,  # Not really a strategy...
-)
-from .matchers import (
-    matches_version_dictionary,
-)
-from .fixtures import (
-    AnonymousStorageServer,
-)
-from .storage_common import (
-    LEASE_INTERVAL,
-    cleanup_storage_server,
-    write_toy_shares,
-    whitebox_write_sparse_share,
-    get_passes,
-    privacypass_passes,
-    pass_factory,
-)
-from .foolscap import (
-    LocalRemote,
-)
+from .._storage_client import _encode_passes
 from ..api import (
     MorePassesRequired,
-    ZKAPAuthorizerStorageServer,
     ZKAPAuthorizerStorageClient,
+    ZKAPAuthorizerStorageServer,
 )
+from ..foolscap import ShareStat
 from ..storage_common import (
-    slot_testv_and_readv_and_writev_message,
     allocate_buckets_message,
     get_implied_data_length,
     required_passes,
+    slot_testv_and_readv_and_writev_message,
 )
-from .._storage_client import (
-    _encode_passes,
+from .common import skipIf
+from .fixtures import AnonymousStorageServer
+from .foolscap import LocalRemote
+from .matchers import matches_version_dictionary
+from .storage_common import (
+    LEASE_INTERVAL,
+    cleanup_storage_server,
+    get_passes,
+    pass_factory,
+    privacypass_passes,
+    whitebox_write_sparse_share,
+    write_toy_shares,
 )
-from ..foolscap import (
-    ShareStat,
+from .strategies import bytes_for_share  # Not really a strategy...
+from .strategies import (
+    lease_cancel_secrets,
+    lease_renew_secrets,
+    posix_timestamps,
+    share_versions,
+    sharenum_sets,
+    sharenums,
+    sizes,
+    slot_test_and_write_vectors_for_shares,
+    storage_indexes,
+    write_enabler_secrets,
 )
 
 
diff --git a/src/_zkapauthorizer/tests/test_storage_server.py b/src/_zkapauthorizer/tests/test_storage_server.py
index 004534c..49a1701 100644
--- a/src/_zkapauthorizer/tests/test_storage_server.py
+++ b/src/_zkapauthorizer/tests/test_storage_server.py
@@ -16,94 +16,45 @@
 Tests for ``_zkapauthorizer._storage_server``.
 """
 
-from __future__ import (
-    absolute_import,
-    division,
-)
-
-from time import (
-    time,
-)
-from random import (
-    shuffle,
-)
-
-from testtools import (
-    TestCase,
-)
-from testtools.matchers import (
-    Equals,
-    AfterPreprocessing,
-    MatchesAll,
-)
-from hypothesis import (
-    given,
-    note,
-)
-from hypothesis.strategies import (
-    integers,
-    lists,
-    tuples,
-    one_of,
-    just,
-)
-from challenge_bypass_ristretto import (
-    RandomToken,
-    random_signing_key,
-)
-
-from twisted.python.runtime import (
-    platform,
-)
-from twisted.internet.task import (
-    Clock,
-)
-
-from foolscap.referenceable import (
-    LocalReferenceable,
-)
-
-from .common import (
-    skipIf,
-)
-from .privacypass import (
-    make_passes,
-)
-from .matchers import (
-    raises,
-)
-from .strategies import (
-    zkaps,
-    sizes,
-    sharenum_sets,
-    storage_indexes,
-    write_enabler_secrets,
-    lease_renew_secrets,
-    lease_cancel_secrets,
-    slot_test_and_write_vectors_for_shares,
-)
-from .fixtures import (
-    AnonymousStorageServer,
-)
-from .storage_common import (
-    cleanup_storage_server,
-    write_toy_shares,
-)
-from ..api import (
-    ZKAPAuthorizerStorageServer,
-    MorePassesRequired,
-)
+from __future__ import absolute_import, division
+
+from random import shuffle
+from time import time
+
+from challenge_bypass_ristretto import RandomToken, random_signing_key
+from foolscap.referenceable import LocalReferenceable
+from hypothesis import given, note
+from hypothesis.strategies import integers, just, lists, one_of, tuples
+from testtools import TestCase
+from testtools.matchers import AfterPreprocessing, Equals, MatchesAll
+from twisted.internet.task import Clock
+from twisted.python.runtime import platform
+
+from .._storage_server import _ValidationResult
+from ..api import MorePassesRequired, ZKAPAuthorizerStorageServer
 from ..storage_common import (
-    required_passes,
-    allocate_buckets_message,
     add_lease_message,
-    slot_testv_and_readv_and_writev_message,
+    allocate_buckets_message,
     get_implied_data_length,
     get_required_new_passes_for_mutable_write,
+    required_passes,
+    slot_testv_and_readv_and_writev_message,
     summarize,
 )
-from .._storage_server import (
-    _ValidationResult,
+from .common import skipIf
+from .fixtures import AnonymousStorageServer
+from .matchers import raises
+from .privacypass import make_passes
+from .storage_common import cleanup_storage_server, write_toy_shares
+from .strategies import (
+    lease_cancel_secrets,
+    lease_renew_secrets,
+    sharenum_sets,
+    sizes,
+    slot_test_and_write_vectors_for_shares,
+    storage_indexes,
+    write_enabler_secrets,
+    zkaps,
 )
 
 
diff --git a/src/_zkapauthorizer/tests/test_strategies.py b/src/_zkapauthorizer/tests/test_strategies.py
index 408053e..b046450 100644
--- a/src/_zkapauthorizer/tests/test_strategies.py
+++ b/src/_zkapauthorizer/tests/test_strategies.py
@@ -16,36 +16,15 @@
 Tests for our custom Hypothesis strategies.
 """
 
-from __future__ import (
-    absolute_import,
-)
+from __future__ import absolute_import
 
-from testtools import (
-    TestCase,
-)
+from allmydata.client import config_from_string
+from fixtures import TempDir
+from hypothesis import given, note
+from hypothesis.strategies import data, just, one_of
+from testtools import TestCase
 
-from fixtures import (
-    TempDir,
-)
-
-from hypothesis import (
-    given,
-    note,
-)
-from hypothesis.strategies import (
-    data,
-    one_of,
-    just,
-)
-
-from allmydata.client import (
-    config_from_string,
-)
-
-from .strategies import (
-    tahoe_config_texts,
-    share_parameters,
-)
+from .strategies import share_parameters, tahoe_config_texts
 
 
 class TahoeConfigsTests(TestCase):
diff --git a/src/_zkapauthorizer/validators.py b/src/_zkapauthorizer/validators.py
index 8bea8f1..0b7284a 100644
--- a/src/_zkapauthorizer/validators.py
+++ b/src/_zkapauthorizer/validators.py
@@ -16,9 +16,7 @@
 This module implements validators for ``attrs``-defined attributes.
 """
 
-from base64 import (
-    b64decode,
-)
+from base64 import b64decode
 
 
 def is_base64_encoded(b64decode=b64decode):
diff --git a/src/twisted/plugins/zkapauthorizer.py b/src/twisted/plugins/zkapauthorizer.py
index 0b02795..85448fe 100644
--- a/src/twisted/plugins/zkapauthorizer.py
+++ b/src/twisted/plugins/zkapauthorizer.py
@@ -16,8 +16,6 @@
 A drop-in to supply plugins to the Twisted plugin system.
 """
 
-from _zkapauthorizer.api import (
-    ZKAPAuthorizer,
-)
+from _zkapauthorizer.api import ZKAPAuthorizer
 
 storage_server = ZKAPAuthorizer()
-- 
GitLab