diff --git a/nucypher/blockchain/economics.py b/nucypher/blockchain/economics.py index c55dbc5e2..10d4b0f42 100644 --- a/nucypher/blockchain/economics.py +++ b/nucypher/blockchain/economics.py @@ -20,7 +20,7 @@ from decimal import Decimal, localcontext from math import log from typing import Tuple -from nucypher.blockchain.eth.agents import ContractAgency, NucypherTokenAgent, StakingEscrowAgent, AdjudicatorAgent, \ +from nucypher.blockchain.eth.agents import AdjudicatorAgent, ContractAgency, NucypherTokenAgent, StakingEscrowAgent, \ WorkLockAgent from nucypher.blockchain.eth.registry import BaseContractRegistry from nucypher.blockchain.eth.token import NU diff --git a/nucypher/blockchain/eth/actors.py b/nucypher/blockchain/eth/actors.py index 5a0ec83de..626e5279c 100644 --- a/nucypher/blockchain/eth/actors.py +++ b/nucypher/blockchain/eth/actors.py @@ -15,63 +15,63 @@ You should have received a copy of the GNU Affero General Public License along with nucypher. If not, see . """ -import csv import json +import traceback + +import click +import csv +import maya import os import sys import time -import traceback +from constant_sorrow.constants import FULL, NO_WORKER_BONDED, WORKER_NOT_RUNNING from decimal import Decimal -from typing import Tuple, List, Dict, Optional - -import click -import maya from eth_tester.exceptions import TransactionFailed as TestTransactionFailed -from eth_utils import is_checksum_address, to_checksum_address, to_canonical_address +from eth_utils import to_canonical_address, to_checksum_address from twisted.logger import Logger +from typing import Dict, List, Optional, Tuple from web3 import Web3 from web3.exceptions import ValidationError -from constant_sorrow.constants import ( - WORKER_NOT_RUNNING, - NO_WORKER_BONDED, - FULL -) -from nucypher.blockchain.economics import StandardTokenEconomics, EconomicsFactory, BaseEconomics +from nucypher.blockchain.economics import BaseEconomics, EconomicsFactory, StandardTokenEconomics from nucypher.blockchain.eth.agents import ( - NucypherTokenAgent, - StakingEscrowAgent, - PolicyManagerAgent, AdjudicatorAgent, ContractAgency, - PreallocationEscrowAgent, MultiSigAgent, + NucypherTokenAgent, + PolicyManagerAgent, + PreallocationEscrowAgent, + StakingEscrowAgent, WorkLockAgent ) from nucypher.blockchain.eth.constants import NULL_ADDRESS from nucypher.blockchain.eth.decorators import only_me, save_receipt, validate_checksum_address from nucypher.blockchain.eth.deployers import ( - NucypherTokenDeployer, - StakingEscrowDeployer, - PolicyManagerDeployer, - StakingInterfaceDeployer, AdjudicatorDeployer, BaseContractDeployer, - WorklockDeployer, MultiSigDeployer, - StakingInterfaceRouterDeployer + NucypherTokenDeployer, + PolicyManagerDeployer, + StakingEscrowDeployer, + StakingInterfaceDeployer, + StakingInterfaceRouterDeployer, + WorklockDeployer ) from nucypher.blockchain.eth.interfaces import BlockchainDeployerInterface, BlockchainInterfaceFactory from nucypher.blockchain.eth.multisig import Authorization, Proposal from nucypher.blockchain.eth.registry import BaseContractRegistry, IndividualAllocationRegistry -from nucypher.blockchain.eth.signers import Web3Signer, Signer, KeystoreSigner +from nucypher.blockchain.eth.signers import KeystoreSigner, Signer, Web3Signer from nucypher.blockchain.eth.token import NU, Stake, StakeList, WorkTracker -from nucypher.blockchain.eth.utils import datetime_to_period, calculate_period_duration, datetime_at_period, \ +from nucypher.blockchain.eth.utils import ( + calculate_period_duration, + datetime_at_period, + datetime_to_period, prettify_eth_amount +) from nucypher.characters.banners import STAKEHOLDER_BANNER from nucypher.characters.control.emitters import StdoutEmitter -from nucypher.cli.painting.transactions import paint_receipt_summary from nucypher.cli.painting.deployment import paint_contract_deployment, paint_input_allocation_file +from nucypher.cli.painting.transactions import paint_receipt_summary from nucypher.config.constants import DEFAULT_CONFIG_ROOT from nucypher.crypto.powers import TransactingPower from nucypher.network.nicknames import nickname_from_seed diff --git a/nucypher/blockchain/eth/agents.py b/nucypher/blockchain/eth/agents.py index 7b2b50602..a103e639b 100644 --- a/nucypher/blockchain/eth/agents.py +++ b/nucypher/blockchain/eth/agents.py @@ -17,27 +17,19 @@ along with nucypher. If not, see . import importlib import random -from typing import Generator, List, Tuple, Union, Dict, Optional import math from constant_sorrow.constants import NO_CONTRACT_AVAILABLE from eth_utils.address import to_checksum_address from twisted.logger import Logger +from typing import Dict, Generator, List, Tuple, Union from web3.contract import Contract -from nucypher.blockchain.eth.constants import ( - DISPATCHER_CONTRACT_NAME, - STAKING_ESCROW_CONTRACT_NAME, - POLICY_MANAGER_CONTRACT_NAME, - PREALLOCATION_ESCROW_CONTRACT_NAME, - STAKING_INTERFACE_CONTRACT_NAME, - STAKING_INTERFACE_ROUTER_CONTRACT_NAME, - ADJUDICATOR_CONTRACT_NAME, - NUCYPHER_TOKEN_CONTRACT_NAME, - MULTISIG_CONTRACT_NAME, - ETH_ADDRESS_BYTE_LENGTH, - NULL_ADDRESS -) +from nucypher.blockchain.eth.constants import (ADJUDICATOR_CONTRACT_NAME, DISPATCHER_CONTRACT_NAME, + ETH_ADDRESS_BYTE_LENGTH, MULTISIG_CONTRACT_NAME, + NUCYPHER_TOKEN_CONTRACT_NAME, NULL_ADDRESS, POLICY_MANAGER_CONTRACT_NAME, + PREALLOCATION_ESCROW_CONTRACT_NAME, STAKING_ESCROW_CONTRACT_NAME, + STAKING_INTERFACE_CONTRACT_NAME, STAKING_INTERFACE_ROUTER_CONTRACT_NAME) from nucypher.blockchain.eth.decorators import validate_checksum_address from nucypher.blockchain.eth.events import ContractEvents from nucypher.blockchain.eth.interfaces import BlockchainInterfaceFactory diff --git a/nucypher/blockchain/eth/clients.py b/nucypher/blockchain/eth/clients.py index 9c431900b..b34a8e973 100644 --- a/nucypher/blockchain/eth/clients.py +++ b/nucypher/blockchain/eth/clients.py @@ -16,20 +16,18 @@ along with nucypher. If not, see . """ import json -import os -import shutil -from typing import Union import maya +import os +import shutil import time from constant_sorrow.constants import NOT_RUNNING, UNKNOWN_DEVELOPMENT_CHAIN_ID from cytoolz.dicttoolz import dissoc from eth_account import Account from eth_account.messages import encode_defunct -from eth_utils import to_canonical_address -from eth_utils import to_checksum_address +from eth_utils import to_canonical_address, to_checksum_address from geth import LoggingMixin -from geth.accounts import get_accounts, create_new_account +from geth.accounts import create_new_account, get_accounts from geth.chain import ( get_chain_data_dir, initialize_chain, @@ -38,9 +36,9 @@ from geth.chain import ( ) from geth.process import BaseGethProcess from twisted.logger import Logger +from typing import Union from web3 import Web3 -from nucypher.blockchain.eth.signers import ClefSigner from nucypher.config.constants import DEFAULT_CONFIG_ROOT, DEPLOY_DIR, USER_LOG_DIR UNKNOWN_DEVELOPMENT_CHAIN_ID.bool_value(True) diff --git a/nucypher/blockchain/eth/decorators.py b/nucypher/blockchain/eth/decorators.py index 7be5ab63c..2469e1164 100644 --- a/nucypher/blockchain/eth/decorators.py +++ b/nucypher/blockchain/eth/decorators.py @@ -1,12 +1,9 @@ +import eth_utils import functools +import inspect from datetime import datetime - from twisted.logger import Logger from typing import Callable -import inspect -import eth_utils - -from nucypher.crypto.api import keccak_digest __VERIFIED_ADDRESSES = set() diff --git a/nucypher/blockchain/eth/deployers.py b/nucypher/blockchain/eth/deployers.py index 21b282691..f6340029b 100644 --- a/nucypher/blockchain/eth/deployers.py +++ b/nucypher/blockchain/eth/deployers.py @@ -17,31 +17,16 @@ along with nucypher. If not, see . from collections import OrderedDict -from typing import Tuple, Dict, List -from constant_sorrow.constants import ( - CONTRACT_NOT_DEPLOYED, - NO_DEPLOYER_CONFIGURED, - NO_BENEFICIARY, - BARE, - IDLE, - FULL -) +from constant_sorrow.constants import (BARE, CONTRACT_NOT_DEPLOYED, FULL, IDLE, NO_BENEFICIARY, NO_DEPLOYER_CONFIGURED) +from typing import Dict, List, Tuple from web3 import Web3 from web3.contract import Contract -from nucypher.blockchain.economics import StandardTokenEconomics, BaseEconomics -from nucypher.blockchain.eth.agents import ( - EthereumContractAgent, - StakingEscrowAgent, - NucypherTokenAgent, - PolicyManagerAgent, - PreallocationEscrowAgent, - AdjudicatorAgent, - WorkLockAgent, - MultiSigAgent, - ContractAgency -) +from nucypher.blockchain.economics import BaseEconomics, StandardTokenEconomics +from nucypher.blockchain.eth.agents import (AdjudicatorAgent, ContractAgency, EthereumContractAgent, MultiSigAgent, + NucypherTokenAgent, PolicyManagerAgent, PreallocationEscrowAgent, + StakingEscrowAgent, WorkLockAgent) from nucypher.blockchain.eth.constants import DISPATCHER_CONTRACT_NAME, NULL_ADDRESS, STAKING_ESCROW_CONTRACT_NAME from nucypher.blockchain.eth.decorators import validate_checksum_address from nucypher.blockchain.eth.interfaces import ( @@ -49,8 +34,7 @@ from nucypher.blockchain.eth.interfaces import ( BlockchainInterfaceFactory, VersionedContract, ) -from nucypher.blockchain.eth.registry import AllocationRegistry -from nucypher.blockchain.eth.registry import BaseContractRegistry +from nucypher.blockchain.eth.registry import AllocationRegistry, BaseContractRegistry class BaseContractDeployer: diff --git a/nucypher/blockchain/eth/interfaces.py b/nucypher/blockchain/eth/interfaces.py index 6614faba2..ce8f256ec 100644 --- a/nucypher/blockchain/eth/interfaces.py +++ b/nucypher/blockchain/eth/interfaces.py @@ -24,44 +24,29 @@ import os import pprint import requests import time -from constant_sorrow.constants import ( - NO_BLOCKCHAIN_CONNECTION, - NO_COMPILATION_PERFORMED, - UNKNOWN_TX_STATUS, - NO_PROVIDER_PROCESS, - READ_ONLY_INTERFACE, - INSUFFICIENT_ETH -) +from constant_sorrow.constants import (INSUFFICIENT_ETH, NO_BLOCKCHAIN_CONNECTION, NO_COMPILATION_PERFORMED, + NO_PROVIDER_PROCESS, READ_ONLY_INTERFACE, UNKNOWN_TX_STATUS) from eth_tester import EthereumTester from eth_tester.exceptions import TransactionFailed as TestTransactionFailed from eth_utils import to_checksum_address from twisted.logger import Logger -from typing import List, Callable -from typing import Tuple -from typing import Union +from typing import Callable, List, Tuple, Union from urllib.parse import urlparse -from web3 import Web3, WebsocketProvider, HTTPProvider, IPCProvider, middleware -from web3.contract import ContractConstructor, Contract -from web3.contract import ContractFunction -from web3.exceptions import TimeExhausted -from web3.exceptions import ValidationError +from web3 import HTTPProvider, IPCProvider, Web3, WebsocketProvider, middleware +from web3.contract import Contract, ContractConstructor, ContractFunction +from web3.exceptions import TimeExhausted, ValidationError from web3.gas_strategies import time_based from web3.middleware import geth_poa_middleware from nucypher.blockchain.eth.clients import EthereumClient, POA_CHAINS from nucypher.blockchain.eth.decorators import validate_checksum_address -from nucypher.blockchain.eth.providers import ( - _get_test_geth_parity_provider, - _get_auto_provider, - _get_infura_provider, - _get_IPC_provider, - _get_websocket_provider, - _get_HTTP_provider, _get_mock_test_provider, _get_pyevm_test_provider -) +from nucypher.blockchain.eth.providers import (_get_HTTP_provider, _get_IPC_provider, _get_auto_provider, + _get_infura_provider, _get_mock_test_provider, _get_pyevm_test_provider, + _get_test_geth_parity_provider, _get_websocket_provider) from nucypher.blockchain.eth.registry import BaseContractRegistry from nucypher.blockchain.eth.sol.compile import SolidityCompiler -from nucypher.blockchain.eth.utils import prettify_eth_amount, get_transaction_name -from nucypher.characters.control.emitters import StdoutEmitter, JSONRPCStdoutEmitter +from nucypher.blockchain.eth.utils import get_transaction_name, prettify_eth_amount +from nucypher.characters.control.emitters import JSONRPCStdoutEmitter, StdoutEmitter from nucypher.utilities.logging import GlobalLoggerSettings Web3Providers = Union[IPCProvider, WebsocketProvider, HTTPProvider, EthereumTester] diff --git a/nucypher/blockchain/eth/multisig.py b/nucypher/blockchain/eth/multisig.py index 67ceae77b..edbd58b5a 100644 --- a/nucypher/blockchain/eth/multisig.py +++ b/nucypher/blockchain/eth/multisig.py @@ -17,11 +17,11 @@ along with nucypher. If not, see . import json from collections import namedtuple -from typing import Any, Dict, Tuple from bytestring_splitter import BytestringSplitter from eth_abi.packed import encode_single_packed from eth_account import Account +from typing import Any, Dict, Tuple from web3 import Web3 from web3.contract import Contract, ContractFunction diff --git a/nucypher/blockchain/eth/providers.py b/nucypher/blockchain/eth/providers.py index 9eb8d201e..409a9c717 100644 --- a/nucypher/blockchain/eth/providers.py +++ b/nucypher/blockchain/eth/providers.py @@ -14,15 +14,12 @@ GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with nucypher. If not, see . """ -from typing import Union - import os +from eth_tester import EthereumTester, PyEVMBackend from eth_tester.backends.mock.main import MockBackend +from typing import Union from urllib.parse import urlparse - -from eth_tester import EthereumTester -from eth_tester import PyEVMBackend -from web3 import WebsocketProvider, HTTPProvider, IPCProvider +from web3 import HTTPProvider, IPCProvider, WebsocketProvider from web3.exceptions import InfuraKeyNotFound from web3.providers.eth_tester.main import EthereumTesterProvider diff --git a/nucypher/blockchain/eth/registry.py b/nucypher/blockchain/eth/registry.py index c7a571c24..ef75b7ab3 100644 --- a/nucypher/blockchain/eth/registry.py +++ b/nucypher/blockchain/eth/registry.py @@ -14,19 +14,19 @@ GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with nucypher. If not, see . """ -import hashlib import json +from json import JSONDecodeError +from os.path import abspath, dirname + +import hashlib import os +import requests import shutil import tempfile from abc import ABC, abstractmethod -from json import JSONDecodeError -from os.path import dirname, abspath -from typing import Union, Iterator, List, Dict, Type, Tuple - -import requests -from constant_sorrow.constants import REGISTRY_COMMITTED, NO_REGISTRY_SOURCE +from constant_sorrow.constants import NO_REGISTRY_SOURCE, REGISTRY_COMMITTED from twisted.logger import Logger +from typing import Dict, Iterator, List, Tuple, Type, Union from nucypher.blockchain.eth.constants import PREALLOCATION_ESCROW_CONTRACT_NAME from nucypher.blockchain.eth.networks import NetworksInventory diff --git a/nucypher/blockchain/eth/signers.py b/nucypher/blockchain/eth/signers.py index f61c37955..584ca1986 100644 --- a/nucypher/blockchain/eth/signers.py +++ b/nucypher/blockchain/eth/signers.py @@ -14,25 +14,23 @@ GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with nucypher. If not, see . """ -from pathlib import Path - import json -import os -from abc import ABC, abstractmethod from json import JSONDecodeError -from typing import Dict, Tuple -from typing import List -from urllib.parse import urlparse +import os import sys +from abc import ABC, abstractmethod from cytoolz.dicttoolz import dissoc from eth_account import Account from eth_account.messages import encode_defunct from eth_account.signers.local import LocalAccount -from eth_utils import is_address, to_checksum_address, apply_formatters_to_dict +from eth_utils import apply_formatters_to_dict, is_address, to_checksum_address from hexbytes import HexBytes +from pathlib import Path from twisted.logger import Logger -from web3 import Web3, IPCProvider +from typing import Dict, List, Tuple +from urllib.parse import urlparse +from web3 import IPCProvider, Web3 from nucypher.blockchain.eth.constants import NULL_ADDRESS from nucypher.blockchain.eth.decorators import validate_checksum_address diff --git a/nucypher/blockchain/eth/token.py b/nucypher/blockchain/eth/token.py index 26c06a28f..e23ee08b9 100644 --- a/nucypher/blockchain/eth/token.py +++ b/nucypher/blockchain/eth/token.py @@ -17,22 +17,16 @@ along with nucypher. If not, see . from _pydecimal import Decimal from collections import UserList -from typing import Dict -from typing import Union, Tuple, Callable import maya -from constant_sorrow.constants import ( - NEW_STAKE, - NO_STAKING_RECEIPT, - NOT_STAKING, - EMPTY_STAKING_SLOT, - UNKNOWN_WORKER_STATUS -) +from constant_sorrow.constants import (EMPTY_STAKING_SLOT, NEW_STAKE, NOT_STAKING, NO_STAKING_RECEIPT, + UNKNOWN_WORKER_STATUS) from eth_utils import currency, is_checksum_address -from twisted.internet import task, reactor +from twisted.internet import reactor, task from twisted.logger import Logger +from typing import Callable, Dict, Tuple, Union -from nucypher.blockchain.eth.agents import StakingEscrowAgent, ContractAgency +from nucypher.blockchain.eth.agents import ContractAgency, StakingEscrowAgent from nucypher.blockchain.eth.decorators import validate_checksum_address from nucypher.blockchain.eth.registry import BaseContractRegistry from nucypher.blockchain.eth.utils import datetime_at_period diff --git a/nucypher/blockchain/eth/utils.py b/nucypher/blockchain/eth/utils.py index 469a74260..f1855a3a5 100644 --- a/nucypher/blockchain/eth/utils.py +++ b/nucypher/blockchain/eth/utils.py @@ -15,12 +15,11 @@ You should have received a copy of the GNU Affero General Public License along with nucypher. If not, see . """ -from decimal import Decimal -from typing import Union - import maya from constant_sorrow.constants import UNKNOWN_DEVELOPMENT_CHAIN_ID -from eth_utils import is_address, to_checksum_address, is_hex +from decimal import Decimal +from eth_utils import is_address, is_hex, to_checksum_address +from typing import Union from web3 import Web3 from web3.contract import ContractConstructor, ContractFunction diff --git a/nucypher/characters/base.py b/nucypher/characters/base.py index 4677b55a7..790f39d9a 100644 --- a/nucypher/characters/base.py +++ b/nucypher/characters/base.py @@ -16,48 +16,28 @@ along with nucypher. If not, see . """ import contextlib from contextlib import suppress -from typing import Dict, ClassVar, Set -from typing import Optional -from typing import Union, List -from bytestring_splitter import BytestringSplitter from constant_sorrow import default_constant_splitter -from constant_sorrow.constants import ( - DO_NOT_SIGN, - NO_BLOCKCHAIN_CONNECTION, - NO_CONTROL_PROTOCOL, - NO_DECRYPTION_PERFORMED, - NO_NICKNAME, - NO_SIGNING_POWER, - SIGNATURE_TO_FOLLOW, - SIGNATURE_IS_ON_CIPHERTEXT, - STRANGER, - FEDERATED_ONLY -) +from constant_sorrow.constants import (DO_NOT_SIGN, NO_BLOCKCHAIN_CONNECTION, NO_CONTROL_PROTOCOL, + NO_DECRYPTION_PERFORMED, NO_NICKNAME, NO_SIGNING_POWER, + SIGNATURE_IS_ON_CIPHERTEXT, SIGNATURE_TO_FOLLOW, STRANGER) from cryptography.exceptions import InvalidSignature from eth_keys import KeyAPI as EthKeyAPI -from eth_utils import to_checksum_address, to_canonical_address +from eth_utils import to_canonical_address, to_checksum_address +from typing import ClassVar, Dict, List, Optional, Set, Union from umbral.keys import UmbralPublicKey from umbral.signing import Signature -from nucypher.blockchain.eth.agents import StakingEscrowAgent -from nucypher.blockchain.eth.interfaces import BlockchainInterface from nucypher.blockchain.eth.registry import BaseContractRegistry, InMemoryContractRegistry from nucypher.blockchain.eth.signers import Signer -from nucypher.characters.control.controllers import JSONRPCController, CLIController +from nucypher.characters.control.controllers import CLIController, JSONRPCController from nucypher.config.keyring import NucypherKeyring from nucypher.config.node import CharacterConfiguration from nucypher.crypto.api import encrypt_and_sign from nucypher.crypto.kits import UmbralMessageKit -from nucypher.crypto.powers import ( - CryptoPower, - SigningPower, - DecryptingPower, - NoSigningPower, - CryptoPowerUp, - DelegatingPower -) -from nucypher.crypto.signing import signature_splitter, StrangerStamp, SignatureStamp +from nucypher.crypto.powers import (CryptoPower, CryptoPowerUp, DecryptingPower, DelegatingPower, NoSigningPower, + SigningPower) +from nucypher.crypto.signing import SignatureStamp, StrangerStamp, signature_splitter from nucypher.network.middleware import RestMiddleware from nucypher.network.nicknames import nickname_from_seed from nucypher.network.nodes import Learner diff --git a/nucypher/characters/chaotic.py b/nucypher/characters/chaotic.py index fb84d9c6e..d6a55e4f3 100644 --- a/nucypher/characters/chaotic.py +++ b/nucypher/characters/chaotic.py @@ -1,33 +1,30 @@ import json -import os -from datetime import datetime, timedelta -from decimal import Decimal import eth_utils import math import maya +import os import time from constant_sorrow.constants import NOT_RUNNING, NO_DATABASE_AVAILABLE +from datetime import datetime, timedelta +from decimal import Decimal from flask import Flask, Response from hendrix.deploy.base import HendrixDeploy from nacl.hash import sha256 from sqlalchemy import create_engine, or_ -from twisted.internet import threads, reactor +from twisted.internet import reactor, threads from twisted.internet.task import LoopingCall from twisted.logger import Logger from nucypher.blockchain.economics import EconomicsFactory from nucypher.blockchain.eth.actors import NucypherTokenActor -from nucypher.blockchain.eth.agents import ( - NucypherTokenAgent, - ContractAgency -) +from nucypher.blockchain.eth.agents import (ContractAgency, NucypherTokenAgent) from nucypher.blockchain.eth.constants import NULL_ADDRESS from nucypher.blockchain.eth.registry import BaseContractRegistry from nucypher.blockchain.eth.token import NU from nucypher.characters.banners import FELIX_BANNER, NU_BANNER from nucypher.characters.base import Character -from nucypher.config.constants import TEMPLATES_DIR, MAX_UPLOAD_CONTENT_LENGTH +from nucypher.config.constants import MAX_UPLOAD_CONTENT_LENGTH, TEMPLATES_DIR from nucypher.crypto.powers import SigningPower, TransactingPower from nucypher.datastore.threading import ThreadedSession diff --git a/nucypher/characters/control/controllers.py b/nucypher/characters/control/controllers.py index 01539e6ab..74d969089 100644 --- a/nucypher/characters/control/controllers.py +++ b/nucypher/characters/control/controllers.py @@ -1,19 +1,19 @@ -import inspect import json -from abc import ABC, abstractmethod from json import JSONDecodeError +import inspect import maya -from flask import Response, Flask +from abc import ABC, abstractmethod +from flask import Flask, Response from hendrix.deploy.base import HendrixDeploy from twisted.internet import reactor, stdio from twisted.logger import Logger -from nucypher.characters.control.emitters import StdoutEmitter, WebEmitter, JSONRPCStdoutEmitter +from nucypher.characters.control.emitters import JSONRPCStdoutEmitter, StdoutEmitter, WebEmitter from nucypher.characters.control.interfaces import CharacterPublicInterface from nucypher.characters.control.specifications.exceptions import SpecificationError -from nucypher.config.constants import MAX_UPLOAD_CONTENT_LENGTH from nucypher.cli.processes import JSONRPCLineReceiver +from nucypher.config.constants import MAX_UPLOAD_CONTENT_LENGTH from tests.utils.controllers import JSONRPCTestClient diff --git a/nucypher/characters/control/emitters.py b/nucypher/characters/control/emitters.py index 2ba8e1964..d41d6df3c 100644 --- a/nucypher/characters/control/emitters.py +++ b/nucypher/characters/control/emitters.py @@ -1,14 +1,11 @@ -import io import json -import os - -import sys -from functools import partial -from typing import Callable, Union import click +import os from flask import Response +from functools import partial from twisted.logger import Logger +from typing import Callable, Union import nucypher diff --git a/nucypher/characters/control/interfaces.py b/nucypher/characters/control/interfaces.py index 5002a767e..9e143744d 100644 --- a/nucypher/characters/control/interfaces.py +++ b/nucypher/characters/control/interfaces.py @@ -1,8 +1,6 @@ import functools -from base64 import b64decode -from typing import Union - import maya +from typing import Union from umbral.keys import UmbralPublicKey from nucypher.characters.control.specifications import alice, bob, enrico diff --git a/nucypher/characters/control/specifications/alice.py b/nucypher/characters/control/specifications/alice.py index 837366fc2..395607610 100644 --- a/nucypher/characters/control/specifications/alice.py +++ b/nucypher/characters/control/specifications/alice.py @@ -1,10 +1,10 @@ import click from marshmallow import validates_schema -from nucypher.characters.control.specifications.exceptions import ( - InvalidInputData, InvalidArgumentCombo) from nucypher.characters.control.specifications import fields from nucypher.characters.control.specifications.base import BaseSchema +from nucypher.characters.control.specifications.exceptions import ( + InvalidArgumentCombo) from nucypher.cli import options, types diff --git a/nucypher/characters/control/specifications/base.py b/nucypher/characters/control/specifications/base.py index cbe12f767..d6ea3691a 100644 --- a/nucypher/characters/control/specifications/base.py +++ b/nucypher/characters/control/specifications/base.py @@ -1,6 +1,5 @@ -from functools import wraps +from marshmallow import INCLUDE, Schema -from marshmallow import Schema, INCLUDE, EXCLUDE from nucypher.characters.control.specifications.exceptions import InvalidInputData diff --git a/nucypher/characters/control/specifications/bob.py b/nucypher/characters/control/specifications/bob.py index f14f6b6bf..8fc11e95f 100644 --- a/nucypher/characters/control/specifications/bob.py +++ b/nucypher/characters/control/specifications/bob.py @@ -1,7 +1,8 @@ import click -from nucypher.cli import options + from nucypher.characters.control.specifications import fields from nucypher.characters.control.specifications.base import BaseSchema +from nucypher.cli import options class JoinPolicy(BaseSchema): #TODO: this doesn't have a cli implementation diff --git a/nucypher/characters/control/specifications/enrico.py b/nucypher/characters/control/specifications/enrico.py index 5afc9c274..e44516496 100644 --- a/nucypher/characters/control/specifications/enrico.py +++ b/nucypher/characters/control/specifications/enrico.py @@ -1,7 +1,8 @@ import click -from nucypher.cli import options + from nucypher.characters.control.specifications import fields from nucypher.characters.control.specifications.base import BaseSchema +from nucypher.cli import options class EncryptMessage(BaseSchema): diff --git a/nucypher/characters/control/specifications/fields/cleartext.py b/nucypher/characters/control/specifications/fields/cleartext.py index 4a57c3539..40e012a7e 100644 --- a/nucypher/characters/control/specifications/fields/cleartext.py +++ b/nucypher/characters/control/specifications/fields/cleartext.py @@ -1,7 +1,10 @@ -from base64 import b64decode, b64encode +from base64 import b64encode + from marshmallow import fields + from nucypher.characters.control.specifications.fields.base import BaseField + class Cleartext(BaseField, fields.String): def _serialize(self, value, attr, data, **kwargs): diff --git a/nucypher/characters/control/specifications/fields/datetime.py b/nucypher/characters/control/specifications/fields/datetime.py index 9501f3a61..7900d30f6 100644 --- a/nucypher/characters/control/specifications/fields/datetime.py +++ b/nucypher/characters/control/specifications/fields/datetime.py @@ -1,5 +1,6 @@ -from marshmallow import fields import maya +from marshmallow import fields + from nucypher.characters.control.specifications.fields.base import BaseField diff --git a/nucypher/characters/control/specifications/fields/key.py b/nucypher/characters/control/specifications/fields/key.py index 302aabb78..aa63dde27 100644 --- a/nucypher/characters/control/specifications/fields/key.py +++ b/nucypher/characters/control/specifications/fields/key.py @@ -1,7 +1,9 @@ from marshmallow import fields from umbral.keys import UmbralPublicKey -from nucypher.characters.control.specifications.fields.base import BaseField + from nucypher.characters.control.specifications.exceptions import InvalidInputData, InvalidNativeDataTypes +from nucypher.characters.control.specifications.fields.base import BaseField + class Key(BaseField, fields.Field): diff --git a/nucypher/characters/control/specifications/fields/label.py b/nucypher/characters/control/specifications/fields/label.py index b59124382..d7a2bacf9 100644 --- a/nucypher/characters/control/specifications/fields/label.py +++ b/nucypher/characters/control/specifications/fields/label.py @@ -1,6 +1,7 @@ -from nucypher.characters.control.specifications.fields.base import BaseField from marshmallow import fields +from nucypher.characters.control.specifications.fields.base import BaseField + class Label(BaseField, fields.Field): diff --git a/nucypher/characters/control/specifications/fields/messagekit.py b/nucypher/characters/control/specifications/fields/messagekit.py index 6bf467e4e..0abae9d50 100644 --- a/nucypher/characters/control/specifications/fields/messagekit.py +++ b/nucypher/characters/control/specifications/fields/messagekit.py @@ -1,8 +1,10 @@ from base64 import b64decode, b64encode + from marshmallow import fields + +from nucypher.characters.control.specifications.exceptions import InvalidInputData, InvalidNativeDataTypes from nucypher.characters.control.specifications.fields.base import BaseField from nucypher.crypto.kits import UmbralMessageKit as UmbralMessageKitClass -from nucypher.characters.control.specifications.exceptions import InvalidInputData, InvalidNativeDataTypes class UmbralMessageKit(BaseField, fields.Field): diff --git a/nucypher/characters/control/specifications/fields/misc.py b/nucypher/characters/control/specifications/fields/misc.py index 454563967..c6b419056 100644 --- a/nucypher/characters/control/specifications/fields/misc.py +++ b/nucypher/characters/control/specifications/fields/misc.py @@ -1,7 +1,8 @@ import click from marshmallow import fields -from nucypher.characters.control.specifications.fields.base import BaseField + from nucypher.characters.control.specifications.exceptions import InvalidInputData +from nucypher.characters.control.specifications.fields.base import BaseField from nucypher.cli import types diff --git a/nucypher/characters/control/specifications/fields/treasuremap.py b/nucypher/characters/control/specifications/fields/treasuremap.py index 4492c84b1..0abc39bdc 100644 --- a/nucypher/characters/control/specifications/fields/treasuremap.py +++ b/nucypher/characters/control/specifications/fields/treasuremap.py @@ -1,11 +1,13 @@ -from marshmallow import fields from base64 import b64decode, b64encode + from bytestring_splitter import BytestringSplitter, VariableLengthBytestring -from nucypher.characters.control.specifications.fields.base import BaseField +from marshmallow import fields + from nucypher.characters.control.specifications.exceptions import InvalidInputData, InvalidNativeDataTypes -from nucypher.crypto.signing import Signature +from nucypher.characters.control.specifications.fields.base import BaseField from nucypher.crypto.constants import KECCAK_DIGEST_LENGTH from nucypher.crypto.kits import UmbralMessageKit +from nucypher.crypto.signing import Signature class TreasureMap(BaseField, fields.Field): diff --git a/nucypher/characters/lawful.py b/nucypher/characters/lawful.py index fbe91f640..e5644cee9 100644 --- a/nucypher/characters/lawful.py +++ b/nucypher/characters/lawful.py @@ -16,31 +16,30 @@ along with nucypher. If not, see . """ import json -from base64 import b64encode, b64decode +from base64 import b64decode, b64encode from collections import OrderedDict -from datetime import datetime -from functools import partial -from json.decoder import JSONDecodeError from random import shuffle -from typing import Dict, Iterable, List, Set, Tuple, Union import maya import time -from bytestring_splitter import BytestringKwargifier, BytestringSplittingError -from bytestring_splitter import BytestringSplitter, VariableLengthBytestring +from bytestring_splitter import BytestringKwargifier, BytestringSplitter, BytestringSplittingError, \ + VariableLengthBytestring from constant_sorrow import constants from constant_sorrow.constants import INCLUDED_IN_BYTESTRING, PUBLIC_ONLY, STRANGER_ALICE from cryptography.hazmat.backends import default_backend from cryptography.hazmat.primitives.asymmetric.ec import EllipticCurve from cryptography.hazmat.primitives.serialization import Encoding -from cryptography.x509 import load_pem_x509_certificate, Certificate, NameOID +from cryptography.x509 import Certificate, NameOID, load_pem_x509_certificate +from datetime import datetime from eth_utils import to_checksum_address -from flask import request, Response +from flask import Response, request +from functools import partial +from json.decoder import JSONDecodeError from sqlalchemy.exc import OperationalError -from twisted.internet import stdio, reactor -from twisted.internet import threads +from twisted.internet import reactor, stdio, threads from twisted.internet.task import LoopingCall from twisted.logger import Logger +from typing import Dict, Iterable, List, Set, Tuple, Union from umbral import pre from umbral.keys import UmbralPublicKey from umbral.kfrags import KFrag @@ -49,7 +48,7 @@ from umbral.signing import Signature import nucypher from nucypher.blockchain.eth.actors import BlockchainPolicyAuthor, Worker -from nucypher.blockchain.eth.agents import StakingEscrowAgent, ContractAgency +from nucypher.blockchain.eth.agents import ContractAgency, StakingEscrowAgent from nucypher.blockchain.eth.interfaces import BlockchainInterfaceFactory from nucypher.blockchain.eth.registry import BaseContractRegistry from nucypher.blockchain.eth.signers import Web3Signer @@ -62,22 +61,21 @@ from nucypher.characters.control.controllers import ( from nucypher.characters.control.emitters import StdoutEmitter from nucypher.characters.control.interfaces import AliceInterface, BobInterface, EnricoInterface from nucypher.cli.processes import UrsulaCommandProtocol -from nucypher.config.storages import NodeStorage, ForgetfulNodeStorage -from nucypher.crypto.api import keccak_digest, encrypt_and_sign -from nucypher.crypto.constants import PUBLIC_KEY_LENGTH, PUBLIC_ADDRESS_LENGTH +from nucypher.config.storages import ForgetfulNodeStorage, NodeStorage +from nucypher.crypto.api import encrypt_and_sign, keccak_digest +from nucypher.crypto.constants import PUBLIC_ADDRESS_LENGTH, PUBLIC_KEY_LENGTH from nucypher.crypto.kits import UmbralMessageKit -from nucypher.crypto.powers import SigningPower, DecryptingPower, DelegatingPower, TransactingPower, PowerUpError +from nucypher.crypto.powers import DecryptingPower, DelegatingPower, PowerUpError, SigningPower, TransactingPower from nucypher.crypto.signing import InvalidSignature from nucypher.datastore.keypairs import HostingKeypair from nucypher.datastore.threading import ThreadedSession from nucypher.network.exceptions import NodeSeemsToBeDown from nucypher.network.middleware import RestMiddleware from nucypher.network.nicknames import nickname_from_seed -from nucypher.network.nodes import NodeSprout -from nucypher.network.nodes import Teacher +from nucypher.network.nodes import NodeSprout, Teacher from nucypher.network.protocols import InterfaceInfo, parse_node_uri -from nucypher.network.trackers import AvailabilityTracker from nucypher.network.server import ProxyRESTServer, TLSHostingPower, make_rest_app +from nucypher.network.trackers import AvailabilityTracker class Alice(Character, BlockchainPolicyAuthor): diff --git a/nucypher/characters/unlawful.py b/nucypher/characters/unlawful.py index 88d789dcb..3766e472b 100644 --- a/nucypher/characters/unlawful.py +++ b/nucypher/characters/unlawful.py @@ -15,11 +15,11 @@ You should have received a copy of the GNU Affero General Public License along with nucypher. If not, see . """ from copy import copy -from unittest.mock import patch from eth_tester.exceptions import ValidationError +from unittest.mock import patch -from nucypher.characters.lawful import Ursula, Alice +from nucypher.characters.lawful import Alice, Ursula from nucypher.crypto.powers import CryptoPower, SigningPower from tests.utils.constants import INSECURE_DEVELOPMENT_PASSWORD, MOCK_URSULA_DB_FILEPATH from tests.utils.middleware import EvilMiddleWare diff --git a/nucypher/cli/commands/deploy.py b/nucypher/cli/commands/deploy.py index 381cafe11..f1e517882 100644 --- a/nucypher/cli/commands/deploy.py +++ b/nucypher/cli/commands/deploy.py @@ -40,8 +40,12 @@ from nucypher.characters.control.emitters import StdoutEmitter from nucypher.cli.actions.auth import get_client_password from nucypher.cli.actions.confirm import confirm_deployment from nucypher.cli.actions.select import select_client_account -from nucypher.cli.actions.utils import (deployer_pre_launch_warnings, ensure_config_root, establish_deployer_registry, - initialize_deployer_interface) +from nucypher.cli.actions.utils import ( + deployer_pre_launch_warnings, + ensure_config_root, + establish_deployer_registry, + initialize_deployer_interface +) from nucypher.cli.config import group_general_config from nucypher.cli.literature import ( CANNOT_OVERWRITE_REGISTRY, diff --git a/nucypher/config/base.py b/nucypher/config/base.py index 81a11ba0a..645f93ef1 100644 --- a/nucypher/config/base.py +++ b/nucypher/config/base.py @@ -1,11 +1,11 @@ import json + import os from abc import ABC, abstractmethod -from typing import Union - from constant_sorrow.constants import ( UNKNOWN_VERSION ) +from typing import Union from nucypher.config import constants diff --git a/nucypher/config/characters.py b/nucypher/config/characters.py index 547e5a9e5..b887dcaf3 100644 --- a/nucypher/config/characters.py +++ b/nucypher/config/characters.py @@ -17,14 +17,13 @@ along with nucypher. If not, see . import os -from tempfile import TemporaryDirectory - from constant_sorrow.constants import ( UNINITIALIZED_CONFIGURATION ) from cryptography.hazmat.primitives.asymmetric import ec from cryptography.hazmat.primitives.asymmetric.ec import EllipticCurve from cryptography.x509 import Certificate +from tempfile import TemporaryDirectory from nucypher.blockchain.eth.actors import StakeHolder from nucypher.blockchain.eth.signers import Signer diff --git a/nucypher/config/constants.py b/nucypher/config/constants.py index 9206df4d4..2fee7befd 100644 --- a/nucypher/config/constants.py +++ b/nucypher/config/constants.py @@ -16,10 +16,10 @@ along with nucypher. If not, see . """ -import os from collections import namedtuple from os.path import abspath, dirname +import os from appdirs import AppDirs import nucypher diff --git a/nucypher/config/keyring.py b/nucypher/config/keyring.py index 90eb9f12d..20ef81132 100644 --- a/nucypher/config/keyring.py +++ b/nucypher/config/keyring.py @@ -17,14 +17,12 @@ along with nucypher. If not, see . import base64 import contextlib import json -import os import stat from json import JSONDecodeError from os.path import abspath -from typing import ClassVar, Tuple, Callable, Union, Dict, List -from constant_sorrow.constants import FEDERATED_ADDRESS -from constant_sorrow.constants import KEYRING_LOCKED +import os +from constant_sorrow.constants import FEDERATED_ADDRESS, KEYRING_LOCKED from cryptography import x509 from cryptography.hazmat.backends import default_backend from cryptography.hazmat.backends.openssl.ec import _EllipticCurvePrivateKey @@ -40,17 +38,13 @@ from eth_utils import to_checksum_address from nacl.exceptions import CryptoError from nacl.secret import SecretBox from twisted.logger import Logger -from umbral.keys import UmbralPrivateKey, UmbralPublicKey, UmbralKeyingMaterial, derive_key_from_password +from typing import Callable, ClassVar, Dict, List, Tuple, Union +from umbral.keys import UmbralKeyingMaterial, UmbralPrivateKey, UmbralPublicKey, derive_key_from_password from nucypher.config.constants import DEFAULT_CONFIG_ROOT from nucypher.crypto.api import generate_teacher_certificate from nucypher.crypto.constants import BLAKE2B -from nucypher.crypto.powers import ( - SigningPower, - DecryptingPower, - KeyPairBasedPower, - DerivedKeyBasedPower -) +from nucypher.crypto.powers import (DecryptingPower, DerivedKeyBasedPower, KeyPairBasedPower, SigningPower) from nucypher.network.server import TLSHostingPower FILE_ENCODING = 'utf-8' diff --git a/nucypher/config/node.py b/nucypher/config/node.py index 459993d9a..b558446a0 100644 --- a/nucypher/config/node.py +++ b/nucypher/config/node.py @@ -17,18 +17,11 @@ along with nucypher. If not, see . import os +from constant_sorrow.constants import (DEVELOPMENT_CONFIGURATION, FEDERATED_ADDRESS, LIVE_CONFIGURATION, + NO_BLOCKCHAIN_CONNECTION, NO_KEYRING_ATTACHED, UNINITIALIZED_CONFIGURATION) from tempfile import TemporaryDirectory -from typing import List, Set, Union, Callable - -from constant_sorrow.constants import ( - UNINITIALIZED_CONFIGURATION, - NO_BLOCKCHAIN_CONNECTION, - LIVE_CONFIGURATION, - NO_KEYRING_ATTACHED, - DEVELOPMENT_CONFIGURATION, - FEDERATED_ADDRESS -) from twisted.logger import Logger +from typing import Callable, List, Set, Union from umbral.signing import Signature from nucypher.blockchain.eth.interfaces import BlockchainInterfaceFactory @@ -41,8 +34,8 @@ from nucypher.blockchain.eth.registry import ( from nucypher.blockchain.eth.signers import Signer from nucypher.config.base import BaseConfiguration from nucypher.config.keyring import NucypherKeyring -from nucypher.config.storages import NodeStorage, ForgetfulNodeStorage, LocalFileBasedNodeStorage -from nucypher.crypto.powers import CryptoPowerUp, CryptoPower +from nucypher.config.storages import ForgetfulNodeStorage, LocalFileBasedNodeStorage, NodeStorage +from nucypher.crypto.powers import CryptoPower, CryptoPowerUp from nucypher.network.middleware import RestMiddleware diff --git a/nucypher/config/storages.py b/nucypher/config/storages.py index f89075c55..45989c7bb 100644 --- a/nucypher/config/storages.py +++ b/nucypher/config/storages.py @@ -15,20 +15,20 @@ You should have received a copy of the GNU Affero General Public License along with nucypher. If not, see . """ -import binascii -import os import sqlite3 -import tempfile -from abc import abstractmethod, ABC -from typing import Callable, Tuple, Union, Set, Any import OpenSSL +import binascii +import os +import tempfile +from abc import ABC, abstractmethod from cryptography import x509 from cryptography.hazmat.backends import default_backend from cryptography.hazmat.primitives.serialization import Encoding from cryptography.x509 import Certificate, NameOID from eth_utils import is_checksum_address from twisted.logger import Logger +from typing import Any, Callable, Set, Tuple, Union from nucypher.blockchain.eth.decorators import validate_checksum_address from nucypher.blockchain.eth.registry import BaseContractRegistry diff --git a/nucypher/crypto/api.py b/nucypher/crypto/api.py index 979e5d4ab..1ddb0b4a2 100644 --- a/nucypher/crypto/api.py +++ b/nucypher/crypto/api.py @@ -14,11 +14,9 @@ GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with nucypher. If not, see . """ -import datetime -from ipaddress import IPv4Address from random import SystemRandom -from typing import Tuple +import datetime import sha3 from constant_sorrow import constants from cryptography import x509 @@ -33,7 +31,9 @@ from cryptography.x509 import Certificate from cryptography.x509.oid import NameOID from eth_account import Account from eth_account.messages import encode_defunct -from eth_utils import to_checksum_address, is_checksum_address +from eth_utils import is_checksum_address, to_checksum_address +from ipaddress import IPv4Address +from typing import Tuple from umbral import pre from umbral.keys import UmbralPrivateKey, UmbralPublicKey from umbral.signing import Signature diff --git a/nucypher/crypto/kits.py b/nucypher/crypto/kits.py index 57c84bb1d..9933ef0dd 100644 --- a/nucypher/crypto/kits.py +++ b/nucypher/crypto/kits.py @@ -14,9 +14,10 @@ GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with nucypher. If not, see . """ -from constant_sorrow.constants import UNKNOWN_SENDER, NOT_SIGNED from bytestring_splitter import BytestringKwargifier, VariableLengthBytestring -from nucypher.crypto.splitters import key_splitter, capsule_splitter +from constant_sorrow.constants import NOT_SIGNED, UNKNOWN_SENDER + +from nucypher.crypto.splitters import capsule_splitter, key_splitter class CryptoKit: diff --git a/nucypher/crypto/powers.py b/nucypher/crypto/powers.py index 9464a1180..d1f982036 100644 --- a/nucypher/crypto/powers.py +++ b/nucypher/crypto/powers.py @@ -17,17 +17,16 @@ along with nucypher. If not, see . import inspect -from typing import List, Tuple, Optional - from hexbytes import HexBytes +from typing import List, Optional, Tuple from umbral import pre -from umbral.keys import UmbralPublicKey, UmbralPrivateKey, UmbralKeyingMaterial +from umbral.keys import UmbralKeyingMaterial, UmbralPrivateKey, UmbralPublicKey from nucypher.blockchain.eth.decorators import validate_checksum_address -from nucypher.blockchain.eth.interfaces import BlockchainInterfaceFactory, BlockchainInterface +from nucypher.blockchain.eth.interfaces import BlockchainInterface, BlockchainInterfaceFactory from nucypher.blockchain.eth.signers import Signer, Web3Signer from nucypher.datastore import keypairs -from nucypher.datastore.keypairs import SigningKeypair, DecryptingKeypair +from nucypher.datastore.keypairs import DecryptingKeypair, SigningKeypair class PowerUpError(TypeError): diff --git a/nucypher/crypto/splitters.py b/nucypher/crypto/splitters.py index bcfea7c72..367cceb68 100644 --- a/nucypher/crypto/splitters.py +++ b/nucypher/crypto/splitters.py @@ -19,7 +19,7 @@ from umbral.config import default_params from umbral.keys import UmbralPublicKey from umbral.pre import Capsule -from nucypher.crypto.constants import PUBLIC_KEY_LENGTH, CAPSULE_LENGTH +from nucypher.crypto.constants import CAPSULE_LENGTH, PUBLIC_KEY_LENGTH key_splitter = BytestringSplitter((UmbralPublicKey, PUBLIC_KEY_LENGTH)) capsule_splitter = BytestringSplitter((Capsule, CAPSULE_LENGTH, {"params": default_params()})) diff --git a/nucypher/crypto/utils.py b/nucypher/crypto/utils.py index d31c37446..d85e36831 100644 --- a/nucypher/crypto/utils.py +++ b/nucypher/crypto/utils.py @@ -15,10 +15,9 @@ You should have received a copy of the GNU Affero General Public License along with nucypher. If not, see . """ -from typing import Any, Union - from coincurve import PublicKey from eth_keys import KeyAPI as EthKeyAPI +from typing import Any, Union from umbral.keys import UmbralPublicKey from umbral.point import Point from umbral.signing import Signature diff --git a/nucypher/datastore/datastore.py b/nucypher/datastore/datastore.py index e200a5158..f04a54855 100644 --- a/nucypher/datastore/datastore.py +++ b/nucypher/datastore/datastore.py @@ -16,13 +16,12 @@ along with nucypher. If not, see . """ -from datetime import datetime -from typing import List - import maya from bytestring_splitter import BytestringSplitter +from datetime import datetime from sqlalchemy.exc import OperationalError from sqlalchemy.orm import sessionmaker +from typing import List from umbral.keys import UmbralPublicKey from umbral.kfrags import KFrag diff --git a/nucypher/datastore/db/models.py b/nucypher/datastore/db/models.py index 2728eae64..be67264b6 100644 --- a/nucypher/datastore/db/models.py +++ b/nucypher/datastore/db/models.py @@ -15,10 +15,7 @@ You should have received a copy of the GNU Affero General Public License along with nucypher. If not, see . """ from datetime import datetime - -from sqlalchemy import ( - Column, Integer, LargeBinary, ForeignKey, Boolean, DateTime -) +from sqlalchemy import (Boolean, Column, DateTime, ForeignKey, Integer, LargeBinary) from sqlalchemy.orm import relationship from nucypher.crypto.utils import fingerprint_from_key diff --git a/nucypher/datastore/keypairs.py b/nucypher/datastore/keypairs.py index a4b5da5c8..f01a7cf1f 100644 --- a/nucypher/datastore/keypairs.py +++ b/nucypher/datastore/keypairs.py @@ -15,7 +15,6 @@ You should have received a copy of the GNU Affero General Public License along with nucypher. If not, see . """ import base64 -from typing import Union import sha3 from OpenSSL.SSL import TLSv1_2_METHOD @@ -24,6 +23,7 @@ from constant_sorrow import constants from cryptography.hazmat.primitives.asymmetric import ec from hendrix.deploy.tls import HendrixDeployTLS from hendrix.facilities.services import ExistingKeyTLSContextFactory +from typing import Union from umbral import pre from umbral.keys import UmbralPrivateKey, UmbralPublicKey from umbral.signing import Signature, Signer diff --git a/nucypher/datastore/threading.py b/nucypher/datastore/threading.py index 1ebdae3a1..55d739e3a 100644 --- a/nucypher/datastore/threading.py +++ b/nucypher/datastore/threading.py @@ -14,7 +14,7 @@ GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with nucypher. If not, see . """ -from sqlalchemy.orm import sessionmaker, scoped_session +from sqlalchemy.orm import scoped_session, sessionmaker class ThreadedSession: diff --git a/nucypher/network/exceptions.py b/nucypher/network/exceptions.py index 9f0340dde..13077e0df 100644 --- a/nucypher/network/exceptions.py +++ b/nucypher/network/exceptions.py @@ -1,4 +1,5 @@ -import requests, socket +import requests +import socket NodeSeemsToBeDown = (requests.exceptions.ConnectionError, requests.exceptions.ReadTimeout, diff --git a/nucypher/network/middleware.py b/nucypher/network/middleware.py index 7d581faf5..b9393bf7a 100644 --- a/nucypher/network/middleware.py +++ b/nucypher/network/middleware.py @@ -16,17 +16,15 @@ along with nucypher. If not, see . """ +import requests import socket import ssl - -import requests import time from bytestring_splitter import BytestringSplitter, VariableLengthBytestring from constant_sorrow.constants import CERTIFICATE_NOT_SAVED, EXEMPT_FROM_VERIFICATION from cryptography import x509 from cryptography.hazmat.backends import default_backend from twisted.logger import Logger - from umbral.cfrags import CapsuleFrag from umbral.signing import Signature diff --git a/nucypher/network/nodes.py b/nucypher/network/nodes.py index 8f468aca1..0386180cb 100644 --- a/nucypher/network/nodes.py +++ b/nucypher/network/nodes.py @@ -15,50 +15,39 @@ You should have received a copy of the GNU Affero General Public License along with nucypher. If not, see . """ -import binascii import contextlib import random -from collections import defaultdict, OrderedDict -from collections import deque -from collections import namedtuple +from collections import OrderedDict, defaultdict, deque, namedtuple from contextlib import suppress -from typing import Set, Tuple, Union +import binascii import maya import requests import time -from bytestring_splitter import BytestringSplitter, PartiallyKwargifiedBytes -from bytestring_splitter import VariableLengthBytestring, BytestringSplittingError +from bytestring_splitter import BytestringSplitter, BytestringSplittingError, PartiallyKwargifiedBytes, \ + VariableLengthBytestring from constant_sorrow import constant_or_bytes -from constant_sorrow.constants import ( - NO_KNOWN_NODES, - NOT_SIGNED, - NEVER_SEEN, - NO_STORAGE_AVAILIBLE, - FLEET_STATES_MATCH, - CERTIFICATE_NOT_SAVED, - UNKNOWN_FLEET_STATE -) +from constant_sorrow.constants import (CERTIFICATE_NOT_SAVED, FLEET_STATES_MATCH, NEVER_SEEN, NOT_SIGNED, + NO_KNOWN_NODES, NO_STORAGE_AVAILIBLE, UNKNOWN_FLEET_STATE) from cryptography.x509 import Certificate from eth_utils import to_checksum_address from requests.exceptions import SSLError -from twisted.internet import reactor, defer -from twisted.internet import task +from twisted.internet import defer, reactor, task from twisted.internet.threads import deferToThread from twisted.logger import Logger - -import nucypher +from typing import Set, Tuple, Union from umbral.signing import Signature +import nucypher from nucypher.blockchain.economics import EconomicsFactory from nucypher.blockchain.eth.agents import ContractAgency, StakingEscrowAgent from nucypher.blockchain.eth.constants import NULL_ADDRESS from nucypher.blockchain.eth.registry import BaseContractRegistry from nucypher.config.constants import SeednodeMetadata from nucypher.config.storages import ForgetfulNodeStorage -from nucypher.crypto.api import keccak_digest, verify_eip_191, recover_address_eip_191 +from nucypher.crypto.api import keccak_digest, recover_address_eip_191, verify_eip_191 from nucypher.crypto.kits import UmbralMessageKit -from nucypher.crypto.powers import TransactingPower, SigningPower, DecryptingPower, NoSigningPower +from nucypher.crypto.powers import DecryptingPower, NoSigningPower, SigningPower, TransactingPower from nucypher.crypto.signing import signature_splitter from nucypher.network import LEARNING_LOOP_VERSION from nucypher.network.exceptions import NodeSeemsToBeDown diff --git a/nucypher/network/protocols.py b/nucypher/network/protocols.py index 9bfa62625..6e37f5938 100644 --- a/nucypher/network/protocols.py +++ b/nucypher/network/protocols.py @@ -14,11 +14,9 @@ GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with nucypher. If not, see . """ -from urllib.parse import urlparse - -from eth_utils import is_checksum_address - from bytestring_splitter import VariableLengthBytestring +from eth_utils import is_checksum_address +from urllib.parse import urlparse class SuspiciousActivity(RuntimeError): diff --git a/nucypher/network/server.py b/nucypher/network/server.py index c39517513..418e0788c 100644 --- a/nucypher/network/server.py +++ b/nucypher/network/server.py @@ -16,33 +16,28 @@ along with nucypher. If not, see . """ import binascii -import json import os -from typing import Tuple - -import requests from bytestring_splitter import BytestringSplitter from constant_sorrow import constants -from constant_sorrow.constants import FLEET_STATES_MATCH, NO_KNOWN_NODES -from constant_sorrow.constants import NO_BLOCKCHAIN_CONNECTION -from flask import Flask, Response, request -from flask import jsonify +from constant_sorrow.constants import FLEET_STATES_MATCH, NO_BLOCKCHAIN_CONNECTION, NO_KNOWN_NODES +from flask import Flask, Response, jsonify, request from hendrix.experience import crosstown_traffic from jinja2 import Template, TemplateError from twisted.logger import Logger +from typing import Tuple from umbral.keys import UmbralPublicKey from umbral.kfrags import KFrag from web3.exceptions import TimeExhausted import nucypher -from nucypher.config.storages import ForgetfulNodeStorage from nucypher.config.constants import MAX_UPLOAD_CONTENT_LENGTH +from nucypher.config.storages import ForgetfulNodeStorage from nucypher.crypto.kits import UmbralMessageKit from nucypher.crypto.powers import KeyPairBasedPower, PowerUpError from nucypher.crypto.signing import InvalidSignature from nucypher.crypto.utils import canonical_address_from_umbral_key -from nucypher.datastore.keypairs import HostingKeypair from nucypher.datastore.datastore import NotFound +from nucypher.datastore.keypairs import HostingKeypair from nucypher.datastore.threading import ThreadedSession from nucypher.network import LEARNING_LOOP_VERSION from nucypher.network.exceptions import NodeSeemsToBeDown diff --git a/nucypher/network/trackers.py b/nucypher/network/trackers.py index f5c01c28f..cd772360b 100644 --- a/nucypher/network/trackers.py +++ b/nucypher/network/trackers.py @@ -1,10 +1,10 @@ import random -from typing import Union import maya from twisted.internet import reactor from twisted.internet.task import LoopingCall from twisted.logger import Logger +from typing import Union from nucypher.network.exceptions import NodeSeemsToBeDown from nucypher.network.middleware import RestMiddleware diff --git a/nucypher/policy/collections.py b/nucypher/policy/collections.py index 014e0d51d..4c08e3209 100644 --- a/nucypher/policy/collections.py +++ b/nucypher/policy/collections.py @@ -16,19 +16,18 @@ along with nucypher. If not, see . """ -import binascii import json from collections import OrderedDict -from typing import List, Optional, Tuple +import binascii import maya import msgpack -from bytestring_splitter import BytestringSplitter, VariableLengthBytestring, BytestringSplittingError -from constant_sorrow.constants import CFRAG_NOT_RETAINED -from constant_sorrow.constants import NO_DECRYPTION_PERFORMED +from bytestring_splitter import BytestringSplitter, BytestringSplittingError, VariableLengthBytestring +from constant_sorrow.constants import CFRAG_NOT_RETAINED, NO_DECRYPTION_PERFORMED from cryptography.hazmat.backends.openssl import backend from cryptography.hazmat.primitives import hashes from eth_utils import to_canonical_address, to_checksum_address +from typing import List, Optional, Tuple from umbral.cfrags import CapsuleFrag from umbral.config import default_params from umbral.curvebn import CurveBN @@ -36,11 +35,11 @@ from umbral.keys import UmbralPublicKey from umbral.pre import Capsule from nucypher.characters.lawful import Bob, Character -from nucypher.crypto.api import keccak_digest, encrypt_and_sign -from nucypher.crypto.constants import PUBLIC_ADDRESS_LENGTH, KECCAK_DIGEST_LENGTH +from nucypher.crypto.api import encrypt_and_sign, keccak_digest +from nucypher.crypto.constants import KECCAK_DIGEST_LENGTH, PUBLIC_ADDRESS_LENGTH from nucypher.crypto.kits import UmbralMessageKit -from nucypher.crypto.signing import Signature, InvalidSignature, signature_splitter -from nucypher.crypto.splitters import key_splitter, capsule_splitter +from nucypher.crypto.signing import InvalidSignature, Signature, signature_splitter +from nucypher.crypto.splitters import capsule_splitter, key_splitter from nucypher.crypto.utils import (canonical_address_from_umbral_key, get_coordinates_as_bytes, get_signature_recovery_value) diff --git a/nucypher/policy/policies.py b/nucypher/policy/policies.py index 23e3585ae..6518e643a 100644 --- a/nucypher/policy/policies.py +++ b/nucypher/policy/policies.py @@ -16,21 +16,21 @@ along with nucypher. If not, see . """ import random -from abc import abstractmethod, ABC from collections import OrderedDict, deque -from typing import Generator, Set, List import maya +from abc import ABC, abstractmethod from bytestring_splitter import BytestringSplitter, VariableLengthBytestring -from constant_sorrow.constants import NOT_SIGNED, UNKNOWN_KFRAG, FEDERATED_POLICY, UNKNOWN_ARRANGEMENTS +from constant_sorrow.constants import NOT_SIGNED, UNKNOWN_KFRAG from twisted.logger import Logger +from typing import Generator, List, Set from umbral.keys import UmbralPublicKey from umbral.kfrags import KFrag from nucypher.blockchain.eth.actors import BlockchainPolicyAuthor -from nucypher.blockchain.eth.agents import StakingEscrowAgent, PolicyManagerAgent +from nucypher.blockchain.eth.agents import PolicyManagerAgent, StakingEscrowAgent from nucypher.characters.lawful import Alice, Ursula -from nucypher.crypto.api import secure_random, keccak_digest +from nucypher.crypto.api import keccak_digest, secure_random from nucypher.crypto.constants import PUBLIC_KEY_LENGTH from nucypher.crypto.kits import RevocationKit from nucypher.crypto.powers import DecryptingPower, SigningPower diff --git a/nucypher/utilities/logging.py b/nucypher/utilities/logging.py index d51ec66ea..8cf588fe4 100644 --- a/nucypher/utilities/logging.py +++ b/nucypher/utilities/logging.py @@ -15,16 +15,15 @@ You should have received a copy of the GNU Affero General Public License along with nucypher. If not, see . """ -import pathlib from contextlib import contextmanager -from twisted.logger import FileLogObserver, jsonFileLogObserver, formatEvent, formatEventAsClassicLogText -from twisted.logger import LogLevel -from twisted.logger import globalLogPublisher +import pathlib +from twisted.logger import FileLogObserver, LogLevel, formatEvent, formatEventAsClassicLogText, globalLogPublisher, \ + jsonFileLogObserver from twisted.python.logfile import LogFile import nucypher -from nucypher.config.constants import USER_LOG_DIR, NUCYPHER_SENTRY_ENDPOINT +from nucypher.config.constants import NUCYPHER_SENTRY_ENDPOINT, USER_LOG_DIR ONE_MEGABYTE = 1_048_576 MAXIMUM_LOG_SIZE = ONE_MEGABYTE * 10 diff --git a/tests/blockchain/eth/clients/test_geth_integration.py b/tests/blockchain/eth/clients/test_geth_integration.py index fd7c44b33..4470027d0 100644 --- a/tests/blockchain/eth/clients/test_geth_integration.py +++ b/tests/blockchain/eth/clients/test_geth_integration.py @@ -1,15 +1,11 @@ import os - import pytest -from eth_utils import is_checksum_address -from eth_utils import to_checksum_address +from eth_utils import is_checksum_address, to_checksum_address from nucypher.blockchain.eth.actors import ContractAdministrator -from nucypher.blockchain.eth.interfaces import BlockchainInterface, BlockchainDeployerInterface, \ +from nucypher.blockchain.eth.interfaces import BlockchainDeployerInterface, BlockchainInterface, \ BlockchainInterfaceFactory from nucypher.crypto.api import verify_eip_191 - - # # NOTE: This module is skipped on CI # diff --git a/tests/blockchain/eth/clients/test_keystore_signer.py b/tests/blockchain/eth/clients/test_keystore_signer.py index 212d57030..e2732a654 100644 --- a/tests/blockchain/eth/clients/test_keystore_signer.py +++ b/tests/blockchain/eth/clients/test_keystore_signer.py @@ -1,17 +1,14 @@ -import shutil - import json -from pathlib import Path - import os - import pytest +import shutil from cytoolz.dicttoolz import assoc from eth_account import Account from eth_account._utils.transactions import Transaction from eth_utils import to_checksum_address from hexbytes import HexBytes +from pathlib import Path from nucypher.blockchain.eth.signers import KeystoreSigner, Signer from tests.utils.constants import INSECURE_DEVELOPMENT_PASSWORD diff --git a/tests/blockchain/eth/clients/test_mocked_clients.py b/tests/blockchain/eth/clients/test_mocked_clients.py index 305227f07..6dbd48479 100644 --- a/tests/blockchain/eth/clients/test_mocked_clients.py +++ b/tests/blockchain/eth/clients/test_mocked_clients.py @@ -1,16 +1,9 @@ import datetime - import pytest from web3 import HTTPProvider, IPCProvider, WebsocketProvider -from nucypher.blockchain.eth.clients import ( - EthereumClient, - GethClient, - ParityClient, - GanacheClient, - InfuraClient, - PUBLIC_CHAINS -) +from nucypher.blockchain.eth.clients import (EthereumClient, GanacheClient, GethClient, InfuraClient, PUBLIC_CHAINS, + ParityClient) from nucypher.blockchain.eth.interfaces import BlockchainInterface diff --git a/tests/blockchain/eth/contracts/integration/test_contract_economics.py b/tests/blockchain/eth/contracts/integration/test_contract_economics.py index 07f6e4e5f..6ebf18c30 100644 --- a/tests/blockchain/eth/contracts/integration/test_contract_economics.py +++ b/tests/blockchain/eth/contracts/integration/test_contract_economics.py @@ -16,7 +16,6 @@ along with nucypher. If not, see . """ import pytest -from nucypher.utilities.sandbox.constants import INSECURE_DEVELOPMENT_PASSWORD from tests.utils.constants import INSECURE_DEVELOPMENT_PASSWORD diff --git a/tests/blockchain/eth/contracts/integration/test_intercontract_integration.py b/tests/blockchain/eth/contracts/integration/test_intercontract_integration.py index abae9bf93..007083571 100644 --- a/tests/blockchain/eth/contracts/integration/test_intercontract_integration.py +++ b/tests/blockchain/eth/contracts/integration/test_intercontract_integration.py @@ -17,7 +17,6 @@ along with nucypher. If not, see . import os - import pytest from eth_tester.exceptions import TransactionFailed from eth_utils import to_canonical_address, to_wei diff --git a/tests/blockchain/eth/contracts/lib/test_reencryption_validator.py b/tests/blockchain/eth/contracts/lib/test_reencryption_validator.py index f376f2cbc..58382fad4 100644 --- a/tests/blockchain/eth/contracts/lib/test_reencryption_validator.py +++ b/tests/blockchain/eth/contracts/lib/test_reencryption_validator.py @@ -17,14 +17,12 @@ along with nucypher. If not, see . import os import pytest - from eth_tester.exceptions import TransactionFailed - from umbral.config import default_params from umbral.curvebn import CurveBN from umbral.keys import UmbralPrivateKey from umbral.point import Point -from umbral.random_oracles import hash_to_curvebn, ExtendedKeccak +from umbral.random_oracles import ExtendedKeccak, hash_to_curvebn from umbral.signing import Signer from nucypher.crypto.signing import SignatureStamp diff --git a/tests/blockchain/eth/contracts/lib/test_signature_verifier.py b/tests/blockchain/eth/contracts/lib/test_signature_verifier.py index 8de46acd6..18195d8e2 100644 --- a/tests/blockchain/eth/contracts/lib/test_signature_verifier.py +++ b/tests/blockchain/eth/contracts/lib/test_signature_verifier.py @@ -17,20 +17,18 @@ along with nucypher. If not, see . import os - import pytest from cryptography.hazmat.backends.openssl import backend from cryptography.hazmat.primitives import hashes from eth_account.account import Account -from eth_account.messages import encode_defunct, SignableMessage, HexBytes +from eth_account.messages import HexBytes, SignableMessage, encode_defunct from eth_tester.exceptions import TransactionFailed -from eth_utils import to_normalized_address, to_checksum_address, to_canonical_address - +from eth_utils import to_canonical_address, to_checksum_address, to_normalized_address from umbral.keys import UmbralPrivateKey from umbral.signing import Signer from nucypher.crypto.api import keccak_digest, verify_eip_191 -from nucypher.crypto.utils import get_signature_recovery_value, canonical_address_from_umbral_key +from nucypher.crypto.utils import canonical_address_from_umbral_key, get_signature_recovery_value ALGORITHM_KECCAK256 = 0 ALGORITHM_SHA256 = 1 diff --git a/tests/blockchain/eth/contracts/lib/test_umbral_deserializer.py b/tests/blockchain/eth/contracts/lib/test_umbral_deserializer.py index 874bfe980..436fee6a4 100644 --- a/tests/blockchain/eth/contracts/lib/test_umbral_deserializer.py +++ b/tests/blockchain/eth/contracts/lib/test_umbral_deserializer.py @@ -17,11 +17,9 @@ along with nucypher. If not, see . import os - import pytest from eth_tester.exceptions import TransactionFailed - -from umbral import pre, keys +from umbral import keys, pre from umbral.signing import Signer diff --git a/tests/blockchain/eth/contracts/main/adjudicator/test_adjudicator.py b/tests/blockchain/eth/contracts/main/adjudicator/test_adjudicator.py index df70ab513..46783bd89 100644 --- a/tests/blockchain/eth/contracts/main/adjudicator/test_adjudicator.py +++ b/tests/blockchain/eth/contracts/main/adjudicator/test_adjudicator.py @@ -17,19 +17,15 @@ along with nucypher. If not, see . import os - import pytest from eth_tester.exceptions import TransactionFailed -from eth_utils import keccak from typing import Tuple -from web3.contract import Contract - from umbral.keys import UmbralPrivateKey from umbral.point import Point +from web3.contract import Contract from nucypher.crypto.api import sha256_digest - ALGORITHM_KECCAK256 = 0 ALGORITHM_SHA256 = 1 diff --git a/tests/blockchain/eth/contracts/main/policy_manager/test_policy_manager.py b/tests/blockchain/eth/contracts/main/policy_manager/test_policy_manager.py index d99a3c886..d8c02c76f 100644 --- a/tests/blockchain/eth/contracts/main/policy_manager/test_policy_manager.py +++ b/tests/blockchain/eth/contracts/main/policy_manager/test_policy_manager.py @@ -17,7 +17,6 @@ along with nucypher. If not, see . import os - import pytest from eth_tester.exceptions import TransactionFailed from eth_utils import to_canonical_address diff --git a/tests/blockchain/eth/contracts/main/policy_manager/test_policy_manager_operations.py b/tests/blockchain/eth/contracts/main/policy_manager/test_policy_manager_operations.py index c8e11348f..fa7277a7a 100644 --- a/tests/blockchain/eth/contracts/main/policy_manager/test_policy_manager_operations.py +++ b/tests/blockchain/eth/contracts/main/policy_manager/test_policy_manager_operations.py @@ -17,7 +17,6 @@ along with nucypher. If not, see . import os - import pytest from eth_tester.exceptions import TransactionFailed diff --git a/tests/blockchain/eth/contracts/main/staking_contracts/conftest.py b/tests/blockchain/eth/contracts/main/staking_contracts/conftest.py index 00ceccb58..093a3a9f0 100644 --- a/tests/blockchain/eth/contracts/main/staking_contracts/conftest.py +++ b/tests/blockchain/eth/contracts/main/staking_contracts/conftest.py @@ -15,12 +15,11 @@ You should have received a copy of the GNU Affero General Public License along with nucypher. If not, see . """ - -import os import pytest from nucypher.blockchain.eth.token import NU + @pytest.fixture() def token(testerchain, deploy_contract): # Create an ERC20 token diff --git a/tests/blockchain/eth/contracts/main/staking_escrow/test_staking_escrow_additional.py b/tests/blockchain/eth/contracts/main/staking_escrow/test_staking_escrow_additional.py index f28b1b0cd..b2e2970d9 100644 --- a/tests/blockchain/eth/contracts/main/staking_escrow/test_staking_escrow_additional.py +++ b/tests/blockchain/eth/contracts/main/staking_escrow/test_staking_escrow_additional.py @@ -24,7 +24,7 @@ from web3.contract import Contract from nucypher.blockchain.eth.constants import NULL_ADDRESS from nucypher.blockchain.eth.token import NU -from tests.utils.solidity import to_bytes32, get_mapping_entry_location, get_array_data_location +from tests.utils.solidity import get_array_data_location, get_mapping_entry_location, to_bytes32 LOCK_RE_STAKE_UNTIL_PERIOD_FIELD = 4 diff --git a/tests/blockchain/eth/contracts/test_contracts_upgradeability.py b/tests/blockchain/eth/contracts/test_contracts_upgradeability.py index c2b11e8b4..dc4c19e23 100644 --- a/tests/blockchain/eth/contracts/test_contracts_upgradeability.py +++ b/tests/blockchain/eth/contracts/test_contracts_upgradeability.py @@ -15,15 +15,15 @@ You should have received a copy of the GNU Affero General Public License along with nucypher. If not, see . """ import contextlib -import os +import os import pytest import requests from web3.exceptions import ValidationError -from nucypher.blockchain.eth.deployers import NucypherTokenDeployer, StakingEscrowDeployer, PolicyManagerDeployer, \ - AdjudicatorDeployer, BaseContractDeployer -from nucypher.blockchain.eth.interfaces import BlockchainInterfaceFactory, BlockchainDeployerInterface +from nucypher.blockchain.eth.deployers import AdjudicatorDeployer, BaseContractDeployer, NucypherTokenDeployer, \ + PolicyManagerDeployer, StakingEscrowDeployer +from nucypher.blockchain.eth.interfaces import BlockchainDeployerInterface, BlockchainInterfaceFactory from nucypher.blockchain.eth.registry import InMemoryContractRegistry from nucypher.blockchain.eth.sol.compile import SolidityCompiler, SourceDirs from nucypher.crypto.powers import TransactingPower diff --git a/tests/blockchain/eth/entities/actors/test_deployer.py b/tests/blockchain/eth/entities/actors/test_deployer.py index e2c551ae3..25b9b8777 100644 --- a/tests/blockchain/eth/entities/actors/test_deployer.py +++ b/tests/blockchain/eth/entities/actors/test_deployer.py @@ -26,7 +26,7 @@ from nucypher.characters.control.emitters import StdoutEmitter from nucypher.crypto.powers import TransactingPower # Prevents TesterBlockchain to be picked up by py.test as a test class from tests.utils.blockchain import TesterBlockchain as _TesterBlockchain -from tests.utils.constants import NUMBER_OF_ALLOCATIONS_IN_TESTS, INSECURE_DEVELOPMENT_PASSWORD +from tests.utils.constants import INSECURE_DEVELOPMENT_PASSWORD, NUMBER_OF_ALLOCATIONS_IN_TESTS @pytest.mark.slow() diff --git a/tests/blockchain/eth/entities/actors/test_investigator.py b/tests/blockchain/eth/entities/actors/test_investigator.py index f04c68cef..3870289b8 100644 --- a/tests/blockchain/eth/entities/actors/test_investigator.py +++ b/tests/blockchain/eth/entities/actors/test_investigator.py @@ -16,11 +16,10 @@ along with nucypher. If not, see . """ import pytest - from umbral.keys import UmbralPrivateKey from umbral.signing import Signer -from nucypher.blockchain.eth.actors import Staker, Investigator +from nucypher.blockchain.eth.actors import Investigator, Staker from nucypher.blockchain.eth.constants import NULL_ADDRESS from nucypher.blockchain.eth.token import NU from nucypher.crypto.signing import SignatureStamp diff --git a/tests/blockchain/eth/entities/actors/test_multisig_actors.py b/tests/blockchain/eth/entities/actors/test_multisig_actors.py index 54953c605..569c58c62 100644 --- a/tests/blockchain/eth/entities/actors/test_multisig_actors.py +++ b/tests/blockchain/eth/entities/actors/test_multisig_actors.py @@ -16,13 +16,11 @@ along with nucypher. If not, see . """ import pytest +from unittest.mock import PropertyMock, patch from nucypher.blockchain.eth.actors import Trustee from nucypher.blockchain.eth.agents import MultiSigAgent from nucypher.blockchain.eth.deployers import MultiSigDeployer -from nucypher.blockchain.eth.interfaces import BlockchainInterface - -from unittest.mock import PropertyMock, patch @pytest.mark.slow() diff --git a/tests/blockchain/eth/entities/agents/test_adjudicator_agent.py b/tests/blockchain/eth/entities/agents/test_adjudicator_agent.py index 2b7f809a6..e80504b16 100644 --- a/tests/blockchain/eth/entities/agents/test_adjudicator_agent.py +++ b/tests/blockchain/eth/entities/agents/test_adjudicator_agent.py @@ -16,7 +16,6 @@ along with nucypher. If not, see . """ import pytest - from umbral.keys import UmbralPrivateKey from umbral.signing import Signer diff --git a/tests/blockchain/eth/entities/agents/test_preallocation_escrow_agent.py b/tests/blockchain/eth/entities/agents/test_preallocation_escrow_agent.py index bf66414e5..d2094012b 100644 --- a/tests/blockchain/eth/entities/agents/test_preallocation_escrow_agent.py +++ b/tests/blockchain/eth/entities/agents/test_preallocation_escrow_agent.py @@ -14,9 +14,8 @@ GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with nucypher. If not, see . """ -import os - import maya +import os import pytest from eth_tester.exceptions import TransactionFailed from eth_utils import is_checksum_address, to_wei diff --git a/tests/blockchain/eth/entities/agents/test_sampling_distribution.py b/tests/blockchain/eth/entities/agents/test_sampling_distribution.py index 020c9a8a0..5ece5a96b 100644 --- a/tests/blockchain/eth/entities/agents/test_sampling_distribution.py +++ b/tests/blockchain/eth/entities/agents/test_sampling_distribution.py @@ -15,9 +15,10 @@ You should have received a copy of the GNU Affero General Public License along with nucypher. If not, see . """ -import pytest from collections import Counter +import pytest + from nucypher.blockchain.economics import BaseEconomics from nucypher.blockchain.eth.agents import StakingEscrowAgent from nucypher.blockchain.eth.constants import NULL_ADDRESS, STAKING_ESCROW_CONTRACT_NAME diff --git a/tests/blockchain/eth/entities/agents/test_staking_escrow_agent.py b/tests/blockchain/eth/entities/agents/test_staking_escrow_agent.py index 64c090295..a91f40735 100644 --- a/tests/blockchain/eth/entities/agents/test_staking_escrow_agent.py +++ b/tests/blockchain/eth/entities/agents/test_staking_escrow_agent.py @@ -16,12 +16,11 @@ along with nucypher. If not, see . """ import os - import pytest from eth_tester.exceptions import TransactionFailed -from eth_utils.address import to_checksum_address, is_address +from eth_utils.address import is_address, to_checksum_address -from nucypher.blockchain.eth.agents import StakingEscrowAgent, ContractAgency +from nucypher.blockchain.eth.agents import ContractAgency, StakingEscrowAgent from nucypher.blockchain.eth.constants import NULL_ADDRESS from nucypher.blockchain.eth.registry import BaseContractRegistry from tests.utils.constants import INSECURE_DEVELOPMENT_PASSWORD diff --git a/tests/blockchain/eth/entities/agents/test_worklock_agent.py b/tests/blockchain/eth/entities/agents/test_worklock_agent.py index 47e3052da..fee7d696f 100644 --- a/tests/blockchain/eth/entities/agents/test_worklock_agent.py +++ b/tests/blockchain/eth/entities/agents/test_worklock_agent.py @@ -1,7 +1,7 @@ import pytest from eth_tester.exceptions import TransactionFailed -from nucypher.blockchain.eth.agents import WorkLockAgent, ContractAgency, StakingEscrowAgent +from nucypher.blockchain.eth.agents import ContractAgency, StakingEscrowAgent, WorkLockAgent from nucypher.blockchain.eth.interfaces import BlockchainInterface diff --git a/tests/blockchain/eth/entities/deployers/conftest.py b/tests/blockchain/eth/entities/deployers/conftest.py index 2a9bdcb1c..bd026b7b8 100644 --- a/tests/blockchain/eth/entities/deployers/conftest.py +++ b/tests/blockchain/eth/entities/deployers/conftest.py @@ -17,11 +17,8 @@ along with nucypher. If not, see . import pytest -from nucypher.blockchain.eth.deployers import (NucypherTokenDeployer, - StakingEscrowDeployer, - PolicyManagerDeployer, - AdjudicatorDeployer, - StakingInterfaceDeployer) +from nucypher.blockchain.eth.deployers import (AdjudicatorDeployer, NucypherTokenDeployer, PolicyManagerDeployer, + StakingEscrowDeployer, StakingInterfaceDeployer) @pytest.fixture(scope="module") diff --git a/tests/blockchain/eth/entities/deployers/test_deploy_idle_network.py b/tests/blockchain/eth/entities/deployers/test_deploy_idle_network.py index eee50ec92..f3b1a8f59 100644 --- a/tests/blockchain/eth/entities/deployers/test_deploy_idle_network.py +++ b/tests/blockchain/eth/entities/deployers/test_deploy_idle_network.py @@ -16,16 +16,13 @@ along with nucypher. If not, see . """ import pytest -from eth_tester.exceptions import TransactionFailed from constant_sorrow import constants +from eth_tester.exceptions import TransactionFailed from nucypher.blockchain.eth.actors import Staker -from nucypher.blockchain.eth.agents import NucypherTokenAgent, StakingEscrowAgent, ContractAgency -from nucypher.blockchain.eth.deployers import (NucypherTokenDeployer, - StakingEscrowDeployer, - PolicyManagerDeployer, - AdjudicatorDeployer, - BaseContractDeployer) +from nucypher.blockchain.eth.agents import ContractAgency, NucypherTokenAgent, StakingEscrowAgent +from nucypher.blockchain.eth.deployers import (AdjudicatorDeployer, BaseContractDeployer, NucypherTokenDeployer, + PolicyManagerDeployer, StakingEscrowDeployer) from nucypher.crypto.powers import TransactingPower from tests.utils.blockchain import token_airdrop from tests.utils.constants import DEVELOPMENT_TOKEN_AIRDROP_AMOUNT, INSECURE_DEVELOPMENT_PASSWORD diff --git a/tests/blockchain/eth/entities/deployers/test_deploy_preallocations.py b/tests/blockchain/eth/entities/deployers/test_deploy_preallocations.py index d1bf47e5c..1cd44f993 100644 --- a/tests/blockchain/eth/entities/deployers/test_deploy_preallocations.py +++ b/tests/blockchain/eth/entities/deployers/test_deploy_preallocations.py @@ -15,12 +15,11 @@ You should have received a copy of the GNU Affero General Public License along with nucypher. If not, see . """ -import os import random import pytest -from nucypher.blockchain.eth.deployers import PreallocationEscrowDeployer, StakingInterfaceDeployer +from nucypher.blockchain.eth.deployers import PreallocationEscrowDeployer @pytest.mark.slow() diff --git a/tests/blockchain/eth/entities/deployers/test_interdeployer_integration.py b/tests/blockchain/eth/entities/deployers/test_interdeployer_integration.py index b788c65d3..3866b0446 100644 --- a/tests/blockchain/eth/entities/deployers/test_interdeployer_integration.py +++ b/tests/blockchain/eth/entities/deployers/test_interdeployer_integration.py @@ -14,19 +14,13 @@ GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with nucypher. If not, see . """ -import os import pytest -from eth_utils import keccak from constant_sorrow import constants -from nucypher.blockchain.eth.agents import NucypherTokenAgent, StakingEscrowAgent, AdjudicatorAgent, ContractAgency -from nucypher.blockchain.eth.deployers import (NucypherTokenDeployer, - StakingEscrowDeployer, - PolicyManagerDeployer, - AdjudicatorDeployer, - BaseContractDeployer, - DispatcherDeployer) +from nucypher.blockchain.eth.agents import AdjudicatorAgent, ContractAgency, NucypherTokenAgent, StakingEscrowAgent +from nucypher.blockchain.eth.deployers import (AdjudicatorDeployer, BaseContractDeployer, NucypherTokenDeployer, + PolicyManagerDeployer, StakingEscrowDeployer) @pytest.mark.slow() diff --git a/tests/blockchain/eth/entities/deployers/test_policy_manager_deployer.py b/tests/blockchain/eth/entities/deployers/test_policy_manager_deployer.py index 86994bd2e..11dfea79f 100644 --- a/tests/blockchain/eth/entities/deployers/test_policy_manager_deployer.py +++ b/tests/blockchain/eth/entities/deployers/test_policy_manager_deployer.py @@ -15,16 +15,9 @@ You should have received a copy of the GNU Affero General Public License along with nucypher. If not, see . """ - -import pytest -from eth_utils import keccak - -from nucypher.blockchain.eth.agents import PolicyManagerAgent, StakingEscrowAgent, ContractAgency +from nucypher.blockchain.eth.agents import ContractAgency, PolicyManagerAgent, StakingEscrowAgent from nucypher.blockchain.eth.constants import POLICY_MANAGER_CONTRACT_NAME -from nucypher.blockchain.eth.deployers import ( - PolicyManagerDeployer, - DispatcherDeployer -) +from nucypher.blockchain.eth.deployers import (DispatcherDeployer, PolicyManagerDeployer) def test_policy_manager_deployment(policy_manager_deployer, staking_escrow_deployer, deployment_progress): diff --git a/tests/blockchain/eth/entities/deployers/test_preallocation_escrow_deployer.py b/tests/blockchain/eth/entities/deployers/test_preallocation_escrow_deployer.py index f8de4583b..fad61e183 100644 --- a/tests/blockchain/eth/entities/deployers/test_preallocation_escrow_deployer.py +++ b/tests/blockchain/eth/entities/deployers/test_preallocation_escrow_deployer.py @@ -18,16 +18,9 @@ along with nucypher. If not, see . import pytest -from nucypher.blockchain.eth.deployers import ( - PreallocationEscrowDeployer, - StakingInterfaceDeployer, - StakingInterfaceRouterDeployer, - NucypherTokenDeployer, - StakingEscrowDeployer, - PolicyManagerDeployer, - AdjudicatorDeployer -) -from nucypher.crypto.api import keccak_digest +from nucypher.blockchain.eth.deployers import (AdjudicatorDeployer, NucypherTokenDeployer, PolicyManagerDeployer, + PreallocationEscrowDeployer, StakingEscrowDeployer, + StakingInterfaceDeployer, StakingInterfaceRouterDeployer) preallocation_escrow_contracts = list() NUMBER_OF_PREALLOCATIONS = 50 diff --git a/tests/blockchain/eth/entities/deployers/test_staking_escrow_deployer.py b/tests/blockchain/eth/entities/deployers/test_staking_escrow_deployer.py index af3c428a1..e27c3d341 100644 --- a/tests/blockchain/eth/entities/deployers/test_staking_escrow_deployer.py +++ b/tests/blockchain/eth/entities/deployers/test_staking_escrow_deployer.py @@ -15,14 +15,10 @@ You should have received a copy of the GNU Affero General Public License along with nucypher. If not, see . """ -import pytest from constant_sorrow.constants import BARE -from eth_utils import keccak -from nucypher.blockchain.eth.agents import StakingEscrowAgent, ContractAgency -from nucypher.blockchain.eth.deployers import (StakingEscrowDeployer, - DispatcherDeployer) -from nucypher.crypto.api import keccak_digest +from nucypher.blockchain.eth.agents import ContractAgency, StakingEscrowAgent +from nucypher.blockchain.eth.deployers import (DispatcherDeployer, StakingEscrowDeployer) def test_staking_escrow_deployment(staking_escrow_deployer, deployment_progress): diff --git a/tests/blockchain/eth/interfaces/test_chains.py b/tests/blockchain/eth/interfaces/test_chains.py index 1aafe4976..51837d656 100644 --- a/tests/blockchain/eth/interfaces/test_chains.py +++ b/tests/blockchain/eth/interfaces/test_chains.py @@ -14,9 +14,9 @@ GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with nucypher. If not, see . """ -import os -from os.path import dirname, abspath +from os.path import abspath, dirname +import os import pytest from nucypher.blockchain.eth.interfaces import BlockchainDeployerInterface @@ -25,13 +25,9 @@ from nucypher.blockchain.eth.sol.compile import SolidityCompiler, SourceDirs from nucypher.crypto.powers import TransactingPower # Prevents TesterBlockchain to be picked up by py.test as a test class from tests.utils.blockchain import TesterBlockchain as _TesterBlockchain -from tests.utils.constants import ( - DEVELOPMENT_ETH_AIRDROP_AMOUNT, - NUMBER_OF_ETH_TEST_ACCOUNTS, - NUMBER_OF_STAKERS_IN_BLOCKCHAIN_TESTS, - NUMBER_OF_URSULAS_IN_BLOCKCHAIN_TESTS, - INSECURE_DEVELOPMENT_PASSWORD -) +from tests.utils.constants import (DEVELOPMENT_ETH_AIRDROP_AMOUNT, INSECURE_DEVELOPMENT_PASSWORD, + NUMBER_OF_ETH_TEST_ACCOUNTS, NUMBER_OF_STAKERS_IN_BLOCKCHAIN_TESTS, + NUMBER_OF_URSULAS_IN_BLOCKCHAIN_TESTS) @pytest.fixture() diff --git a/tests/blockchain/eth/interfaces/test_decorators.py b/tests/blockchain/eth/interfaces/test_decorators.py index 1d41e8de7..392d59727 100644 --- a/tests/blockchain/eth/interfaces/test_decorators.py +++ b/tests/blockchain/eth/interfaces/test_decorators.py @@ -15,12 +15,9 @@ You should have received a copy of the GNU Affero General Public License along with nucypher. If not, see . """ -import os import pytest -from eth_utils import to_checksum_address - -from nucypher.blockchain.eth.decorators import validate_checksum_address, InvalidChecksumAddress +from nucypher.blockchain.eth.decorators import InvalidChecksumAddress, validate_checksum_address def test_validate_checksum_address(get_random_checksum_address): diff --git a/tests/blockchain/eth/interfaces/test_registry.py b/tests/blockchain/eth/interfaces/test_registry.py index 018ad80dd..059f880c6 100644 --- a/tests/blockchain/eth/interfaces/test_registry.py +++ b/tests/blockchain/eth/interfaces/test_registry.py @@ -16,11 +16,12 @@ along with nucypher. If not, see . """ import json + import pytest from nucypher.blockchain.eth.constants import PREALLOCATION_ESCROW_CONTRACT_NAME from nucypher.blockchain.eth.interfaces import BaseContractRegistry -from nucypher.blockchain.eth.registry import LocalContractRegistry, IndividualAllocationRegistry +from nucypher.blockchain.eth.registry import IndividualAllocationRegistry, LocalContractRegistry from tests.utils.constants import TEMPORARY_DOMAIN diff --git a/tests/blockchain/eth/interfaces/test_solidity_compiler.py b/tests/blockchain/eth/interfaces/test_solidity_compiler.py index f004eac8f..9e6afb6fc 100644 --- a/tests/blockchain/eth/interfaces/test_solidity_compiler.py +++ b/tests/blockchain/eth/interfaces/test_solidity_compiler.py @@ -14,8 +14,9 @@ GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with nucypher. If not, see . """ +from os.path import abspath, dirname + import os -from os.path import dirname, abspath from nucypher.blockchain.eth.deployers import NucypherTokenDeployer from nucypher.blockchain.eth.sol.compile import SolidityCompiler, SourceDirs diff --git a/tests/blockchain/eth/interfaces/test_token_and_stake.py b/tests/blockchain/eth/interfaces/test_token_and_stake.py index bc2572b73..9db9d5621 100644 --- a/tests/blockchain/eth/interfaces/test_token_and_stake.py +++ b/tests/blockchain/eth/interfaces/test_token_and_stake.py @@ -1,6 +1,5 @@ -from decimal import InvalidOperation, Decimal - import pytest +from decimal import Decimal, InvalidOperation from web3 import Web3 from nucypher.blockchain.eth.token import NU, Stake diff --git a/tests/characters/control/blockchain/conftest.py b/tests/characters/control/blockchain/conftest.py index e475b073c..bdd29ab3c 100644 --- a/tests/characters/control/blockchain/conftest.py +++ b/tests/characters/control/blockchain/conftest.py @@ -1,6 +1,6 @@ -import datetime from base64 import b64encode +import datetime import maya import pytest diff --git a/tests/characters/control/blockchain/test_rpc_control_blockchain.py b/tests/characters/control/blockchain/test_rpc_control_blockchain.py index 519eea3a0..86de891a5 100644 --- a/tests/characters/control/blockchain/test_rpc_control_blockchain.py +++ b/tests/characters/control/blockchain/test_rpc_control_blockchain.py @@ -1,10 +1,10 @@ +from base64 import b64encode + import pytest -from base64 import b64encode -from nucypher.policy.collections import TreasureMap -from nucypher.crypto.powers import DecryptingPower, SigningPower -from nucypher.characters.lawful import Ursula from nucypher.characters.control.interfaces import AliceInterface, BobInterface, EnricoInterface +from nucypher.crypto.powers import DecryptingPower, SigningPower +from nucypher.policy.collections import TreasureMap def get_fields(interface, method_name): diff --git a/tests/characters/control/blockchain/test_web_control_blockchain.py b/tests/characters/control/blockchain/test_web_control_blockchain.py index 7f0c5e0ca..fcfe86932 100644 --- a/tests/characters/control/blockchain/test_web_control_blockchain.py +++ b/tests/characters/control/blockchain/test_web_control_blockchain.py @@ -1,7 +1,7 @@ -import datetime import json -from base64 import b64encode, b64decode +from base64 import b64decode, b64encode +import datetime import maya import pytest from click.testing import CliRunner diff --git a/tests/characters/control/federated/conftest.py b/tests/characters/control/federated/conftest.py index 3bdf6d14a..2fd0531aa 100644 --- a/tests/characters/control/federated/conftest.py +++ b/tests/characters/control/federated/conftest.py @@ -1,6 +1,6 @@ -import datetime from base64 import b64encode +import datetime import maya import pytest diff --git a/tests/characters/control/federated/test_web_control_federated.py b/tests/characters/control/federated/test_web_control_federated.py index ca38b5a63..9c659a622 100644 --- a/tests/characters/control/federated/test_web_control_federated.py +++ b/tests/characters/control/federated/test_web_control_federated.py @@ -1,7 +1,7 @@ -import datetime import json -from base64 import b64encode, b64decode +from base64 import b64decode, b64encode +import datetime import maya import pytest from click.testing import CliRunner diff --git a/tests/characters/test_alice_can_grant_and_revoke.py b/tests/characters/test_alice_can_grant_and_revoke.py index 4ae77d585..42689e6f3 100644 --- a/tests/characters/test_alice_can_grant_and_revoke.py +++ b/tests/characters/test_alice_can_grant_and_revoke.py @@ -16,17 +16,16 @@ along with nucypher. If not, see . """ import datetime -import os - import maya +import os import pytest from umbral.kfrags import KFrag from nucypher.characters.lawful import Bob, Enrico from nucypher.config.characters import AliceConfiguration from nucypher.crypto.api import keccak_digest -from nucypher.crypto.powers import SigningPower, DecryptingPower -from nucypher.policy.collections import Revocation, PolicyCredential +from nucypher.crypto.powers import DecryptingPower, SigningPower +from nucypher.policy.collections import PolicyCredential, Revocation from tests.utils.constants import INSECURE_DEVELOPMENT_PASSWORD from tests.utils.middleware import MockRestMiddleware diff --git a/tests/characters/test_bob_handles_frags.py b/tests/characters/test_bob_handles_frags.py index 77476be6f..dde16a442 100644 --- a/tests/characters/test_bob_handles_frags.py +++ b/tests/characters/test_bob_handles_frags.py @@ -23,10 +23,9 @@ from umbral.cfrags import CapsuleFrag from umbral.kfrags import KFrag from nucypher.crypto.kits import PolicyMessageKit -from tests.utils.middleware import NodeIsDownMiddleware from nucypher.crypto.powers import DecryptingPower from tests.utils.constants import TEMPORARY_DOMAIN -from tests.utils.middleware import MockRestMiddleware +from tests.utils.middleware import MockRestMiddleware, NodeIsDownMiddleware def test_bob_cannot_follow_the_treasure_map_in_isolation(enacted_federated_policy, federated_bob): diff --git a/tests/characters/test_bob_joins_policy_and_retrieves.py b/tests/characters/test_bob_joins_policy_and_retrieves.py index 99575c879..be2d9392b 100644 --- a/tests/characters/test_bob_joins_policy_and_retrieves.py +++ b/tests/characters/test_bob_joins_policy_and_retrieves.py @@ -1,21 +1,14 @@ import datetime -import os - import maya +import os import pytest import time - from constant_sorrow.constants import NO_DECRYPTION_PERFORMED from twisted.internet.task import Clock -from nucypher.characters.lawful import Bob, Ursula -from nucypher.characters.lawful import Enrico +from nucypher.characters.lawful import Bob, Enrico, Ursula from nucypher.policy.collections import TreasureMap -from tests.utils.constants import ( - NUMBER_OF_URSULAS_IN_DEVELOPMENT_NETWORK, - MOCK_POLICY_DEFAULT_M, - TEMPORARY_DOMAIN -) +from tests.utils.constants import (MOCK_POLICY_DEFAULT_M, NUMBER_OF_URSULAS_IN_DEVELOPMENT_NETWORK, TEMPORARY_DOMAIN) from tests.utils.middleware import MockRestMiddleware diff --git a/tests/characters/test_crypto_characters_and_their_powers.py b/tests/characters/test_crypto_characters_and_their_powers.py index 589633c5a..4fc5b2908 100644 --- a/tests/characters/test_crypto_characters_and_their_powers.py +++ b/tests/characters/test_crypto_characters_and_their_powers.py @@ -23,14 +23,10 @@ from eth_account._utils.transactions import Transaction from eth_utils import to_checksum_address from nucypher.blockchain.eth.signers import Web3Signer -from nucypher.characters.lawful import Alice, Character, Bob -from nucypher.characters.lawful import Enrico +from nucypher.characters.lawful import Alice, Bob, Character, Enrico from nucypher.crypto import api from nucypher.crypto.api import verify_eip_191 -from nucypher.crypto.powers import (CryptoPower, - SigningPower, - NoSigningPower, - TransactingPower) +from nucypher.crypto.powers import (CryptoPower, NoSigningPower, SigningPower, TransactingPower) from tests.utils.constants import INSECURE_DEVELOPMENT_PASSWORD """ diff --git a/tests/characters/test_freerider_attacks.py b/tests/characters/test_freerider_attacks.py index 6de643457..0cb879633 100644 --- a/tests/characters/test_freerider_attacks.py +++ b/tests/characters/test_freerider_attacks.py @@ -16,7 +16,6 @@ along with nucypher. If not, see . """ import datetime - import maya import pytest diff --git a/tests/characters/test_specifications.py b/tests/characters/test_specifications.py index 4c6a3d0c0..2978efc97 100644 --- a/tests/characters/test_specifications.py +++ b/tests/characters/test_specifications.py @@ -1,16 +1,14 @@ -from base64 import b64encode, b64decode +from base64 import b64encode -import pytest -from marshmallow import validates_schema -import maya import datetime +import maya +import pytest -from nucypher.characters.control.specifications.alice import CreatePolicy, GrantPolicy -from nucypher.characters.control.specifications.exceptions import ( - InvalidInputData, InvalidArgumentCombo, SpecificationError) from nucypher.characters.control.specifications import fields +from nucypher.characters.control.specifications.alice import GrantPolicy from nucypher.characters.control.specifications.base import BaseSchema - +from nucypher.characters.control.specifications.exceptions import (InvalidArgumentCombo, InvalidInputData, + SpecificationError) from nucypher.crypto.powers import DecryptingPower diff --git a/tests/characters/test_stakeholder.py b/tests/characters/test_stakeholder.py index 5b05d4e14..3c1046669 100644 --- a/tests/characters/test_stakeholder.py +++ b/tests/characters/test_stakeholder.py @@ -3,7 +3,7 @@ import json import pytest from nucypher.blockchain.eth.actors import Worker -from nucypher.blockchain.eth.agents import StakingEscrowAgent, ContractAgency +from nucypher.blockchain.eth.agents import ContractAgency, StakingEscrowAgent from nucypher.config.characters import StakeHolderConfiguration from tests.utils.constants import INSECURE_DEVELOPMENT_PASSWORD diff --git a/tests/characters/test_ursula_prepares_to_act_as_mining_node.py b/tests/characters/test_ursula_prepares_to_act_as_mining_node.py index b6829d5f0..1be1973db 100644 --- a/tests/characters/test_ursula_prepares_to_act_as_mining_node.py +++ b/tests/characters/test_ursula_prepares_to_act_as_mining_node.py @@ -15,7 +15,6 @@ You should have received a copy of the GNU Affero General Public License along with nucypher. If not, see . """ import datetime - import maya import pytest from eth_account._utils.signing import to_standard_signature_bytes @@ -27,7 +26,7 @@ from nucypher.crypto.powers import SigningPower from nucypher.policy.policies import Policy from tests.utils.constants import INSECURE_DEVELOPMENT_PASSWORD from tests.utils.middleware import MockRestMiddleware, NodeIsDownMiddleware -from tests.utils.ursula import make_federated_ursulas, make_decentralized_ursulas +from tests.utils.ursula import make_decentralized_ursulas, make_federated_ursulas def test_new_federated_ursula_announces_herself(ursula_federated_test_config): diff --git a/tests/characters/test_ursula_web_status.py b/tests/characters/test_ursula_web_status.py index 69ef359b1..e7714c6bd 100644 --- a/tests/characters/test_ursula_web_status.py +++ b/tests/characters/test_ursula_web_status.py @@ -1,7 +1,6 @@ import os -import tempfile - import pytest +import tempfile @pytest.fixture(scope='module') diff --git a/tests/cli/conftest.py b/tests/cli/conftest.py index 7e89b5da2..da3b09cdc 100644 --- a/tests/cli/conftest.py +++ b/tests/cli/conftest.py @@ -17,8 +17,8 @@ along with nucypher. If not, see . import contextlib - import json + import os import pytest import shutil @@ -26,15 +26,9 @@ from click.testing import CliRunner from datetime import datetime from nucypher.blockchain.eth.registry import InMemoryContractRegistry, LocalContractRegistry -from nucypher.config.characters import UrsulaConfiguration, StakeHolderConfiguration -from tests.utils.constants import ( - BASE_TEMP_DIR, - BASE_TEMP_PREFIX, - DATETIME_FORMAT, - MOCK_CUSTOM_INSTALLATION_PATH, - MOCK_CUSTOM_INSTALLATION_PATH_2, - MOCK_ALLOCATION_INFILE -) +from nucypher.config.characters import StakeHolderConfiguration, UrsulaConfiguration +from tests.utils.constants import (BASE_TEMP_DIR, BASE_TEMP_PREFIX, DATETIME_FORMAT, MOCK_ALLOCATION_INFILE, + MOCK_CUSTOM_INSTALLATION_PATH, MOCK_CUSTOM_INSTALLATION_PATH_2) @pytest.fixture(scope='module') diff --git a/tests/cli/functional/conftest.py b/tests/cli/functional/conftest.py index 77568606d..18b563f25 100644 --- a/tests/cli/functional/conftest.py +++ b/tests/cli/functional/conftest.py @@ -25,11 +25,11 @@ from nucypher.blockchain.eth.agents import ContractAgency from nucypher.blockchain.eth.interfaces import BlockchainInterface, BlockchainInterfaceFactory from nucypher.blockchain.eth.registry import InMemoryContractRegistry from nucypher.config.characters import UrsulaConfiguration -from tests.cli.functional.test_ursula_local_keystore_cli_functionality import NUMBER_OF_MOCK_ACCOUNTS, \ - KEYFILE_NAME_TEMPLATE +from tests.cli.functional.test_ursula_local_keystore_cli_functionality import KEYFILE_NAME_TEMPLATE, \ + NUMBER_OF_MOCK_ACCOUNTS from tests.fixtures import _make_testerchain, make_token_economics -from tests.mock.interfaces import make_mock_registry_source_manager, MockBlockchain from tests.mock.agents import FAKE_RECEIPT, MockContractAgency +from tests.mock.interfaces import MockBlockchain, make_mock_registry_source_manager @pytest.fixture(scope='module', autouse=True) diff --git a/tests/cli/functional/test_ursula_local_keystore_cli_functionality.py b/tests/cli/functional/test_ursula_local_keystore_cli_functionality.py index 739908e59..b93185be5 100644 --- a/tests/cli/functional/test_ursula_local_keystore_cli_functionality.py +++ b/tests/cli/functional/test_ursula_local_keystore_cli_functionality.py @@ -16,6 +16,7 @@ along with nucypher. If not, see . """ import json + import pytest from eth_account import Account from pathlib import Path @@ -25,13 +26,8 @@ from nucypher.blockchain.eth.token import StakeList from nucypher.cli.main import nucypher_cli from nucypher.config.characters import UrsulaConfiguration from nucypher.config.constants import NUCYPHER_ENVVAR_KEYRING_PASSWORD, NUCYPHER_ENVVAR_WORKER_ETH_PASSWORD -from tests.utils.constants import ( - MOCK_IP_ADDRESS, - TEST_PROVIDER_URI, - MOCK_URSULA_STARTING_PORT, - INSECURE_DEVELOPMENT_PASSWORD, - TEMPORARY_DOMAIN, -) +from tests.utils.constants import (INSECURE_DEVELOPMENT_PASSWORD, MOCK_IP_ADDRESS, MOCK_URSULA_STARTING_PORT, + TEMPORARY_DOMAIN, TEST_PROVIDER_URI) # TODO: Move to fixtures CLI_ENV = {NUCYPHER_ENVVAR_KEYRING_PASSWORD: INSECURE_DEVELOPMENT_PASSWORD, diff --git a/tests/cli/functional/test_worklock_cli_functionality.py b/tests/cli/functional/test_worklock_cli_functionality.py index 4a5b621a0..8d269595a 100644 --- a/tests/cli/functional/test_worklock_cli_functionality.py +++ b/tests/cli/functional/test_worklock_cli_functionality.py @@ -24,11 +24,9 @@ from nucypher.blockchain.eth.actors import Bidder from nucypher.blockchain.eth.interfaces import BlockchainInterface from nucypher.blockchain.eth.token import NU from nucypher.cli.commands.worklock import worklock -from tests.utils.constants import ( - TEMPORARY_DOMAIN, MOCK_PROVIDER_URI, YES, -) from tests.cli.functional.test_ursula_local_keystore_cli_functionality import CLI_ENV from tests.mock.agents import FAKE_RECEIPT, MockWorkLockAgent +from tests.utils.constants import (MOCK_PROVIDER_URI, TEMPORARY_DOMAIN, YES) @pytest.fixture(scope='function') diff --git a/tests/cli/test_alice.py b/tests/cli/test_alice.py index 9902b2fd5..00b0faa7f 100644 --- a/tests/cli/test_alice.py +++ b/tests/cli/test_alice.py @@ -1,16 +1,13 @@ -import os from unittest import mock +import os + from nucypher.cli.literature import SUCCESSFUL_DESTRUCTION from nucypher.cli.main import nucypher_cli from nucypher.config.characters import AliceConfiguration from nucypher.config.constants import NUCYPHER_ENVVAR_KEYRING_PASSWORD -from tests.utils.constants import ( - INSECURE_DEVELOPMENT_PASSWORD, - MOCK_IP_ADDRESS, - MOCK_CUSTOM_INSTALLATION_PATH, - TEMPORARY_DOMAIN -) +from tests.utils.constants import (INSECURE_DEVELOPMENT_PASSWORD, MOCK_CUSTOM_INSTALLATION_PATH, MOCK_IP_ADDRESS, + TEMPORARY_DOMAIN) @mock.patch('nucypher.config.characters.AliceConfiguration.default_filepath', return_value='/non/existent/file') diff --git a/tests/cli/test_bob.py b/tests/cli/test_bob.py index 0b6c141f1..01475777e 100644 --- a/tests/cli/test_bob.py +++ b/tests/cli/test_bob.py @@ -14,8 +14,8 @@ from nucypher.config.characters import BobConfiguration from nucypher.crypto.kits import UmbralMessageKit from nucypher.crypto.powers import SigningPower from nucypher.utilities.logging import GlobalLoggerSettings -from tests.utils.constants import INSECURE_DEVELOPMENT_PASSWORD, TEMPORARY_DOMAIN -from tests.utils.constants import MOCK_IP_ADDRESS, MOCK_CUSTOM_INSTALLATION_PATH +from tests.utils.constants import INSECURE_DEVELOPMENT_PASSWORD, MOCK_CUSTOM_INSTALLATION_PATH, MOCK_IP_ADDRESS, \ + TEMPORARY_DOMAIN log = Logger() diff --git a/tests/cli/test_cli_config.py b/tests/cli/test_cli_config.py index 5d7014a14..587c38c5a 100644 --- a/tests/cli/test_cli_config.py +++ b/tests/cli/test_cli_config.py @@ -1,19 +1,14 @@ import json -import os +import os import pytest from nucypher.blockchain.eth.registry import InMemoryContractRegistry from nucypher.cli.main import nucypher_cli from nucypher.config.characters import AliceConfiguration, BobConfiguration, UrsulaConfiguration from nucypher.config.constants import NUCYPHER_ENVVAR_KEYRING_PASSWORD, NUCYPHER_ENVVAR_WORKER_IP_ADDRESS -from tests.utils.constants import ( - TEMPORARY_DOMAIN, - INSECURE_DEVELOPMENT_PASSWORD, - MOCK_CUSTOM_INSTALLATION_PATH, - MOCK_IP_ADDRESS, - TEST_PROVIDER_URI -) +from tests.utils.constants import (INSECURE_DEVELOPMENT_PASSWORD, MOCK_CUSTOM_INSTALLATION_PATH, MOCK_IP_ADDRESS, + TEMPORARY_DOMAIN, TEST_PROVIDER_URI) CONFIG_CLASSES = (AliceConfiguration, BobConfiguration, UrsulaConfiguration) diff --git a/tests/cli/test_cli_lifecycle.py b/tests/cli/test_cli_lifecycle.py index 0065c2847..3c64fa5fb 100644 --- a/tests/cli/test_cli_lifecycle.py +++ b/tests/cli/test_cli_lifecycle.py @@ -1,14 +1,14 @@ -import datetime import json -import os -import shutil from base64 import b64decode from collections import namedtuple from json import JSONDecodeError +import datetime import maya +import os import pytest import pytest_twisted as pt +import shutil from twisted.internet import threads from web3 import Web3 diff --git a/tests/cli/test_deploy.py b/tests/cli/test_deploy.py index ea8d33c20..658efe33d 100644 --- a/tests/cli/test_deploy.py +++ b/tests/cli/test_deploy.py @@ -1,24 +1,18 @@ import json -import os +import os import pytest from eth_utils import to_checksum_address from nucypher.blockchain.eth.actors import ContractAdministrator -from nucypher.blockchain.eth.agents import ( - NucypherTokenAgent, - StakingEscrowAgent, - PolicyManagerAgent, - AdjudicatorAgent, - ContractAgency -) +from nucypher.blockchain.eth.agents import (AdjudicatorAgent, ContractAgency, NucypherTokenAgent, PolicyManagerAgent, + StakingEscrowAgent) from nucypher.blockchain.eth.interfaces import BlockchainInterface from nucypher.blockchain.eth.registry import LocalContractRegistry from nucypher.blockchain.eth.sol.compile import SOLIDITY_COMPILER_VERSION from nucypher.cli.commands.deploy import deploy from tests.utils.constants import TEST_PROVIDER_URI - PLANNED_UPGRADES = 4 CONTRACTS_TO_UPGRADE = ('StakingEscrow', 'PolicyManager', 'Adjudicator', 'StakingInterface') diff --git a/tests/cli/test_deploy_commands.py b/tests/cli/test_deploy_commands.py index 43dc7143f..7166328de 100644 --- a/tests/cli/test_deploy_commands.py +++ b/tests/cli/test_deploy_commands.py @@ -1,25 +1,13 @@ import os -from nucypher.blockchain.eth.agents import ( - PolicyManagerAgent, - StakingEscrowAgent, - AdjudicatorAgent, - ContractAgency -) -from nucypher.blockchain.eth.constants import ( - NUCYPHER_TOKEN_CONTRACT_NAME, - STAKING_ESCROW_CONTRACT_NAME, - POLICY_MANAGER_CONTRACT_NAME, - ADJUDICATOR_CONTRACT_NAME, - DISPATCHER_CONTRACT_NAME -) +from nucypher.blockchain.eth.agents import (AdjudicatorAgent, ContractAgency, PolicyManagerAgent, StakingEscrowAgent) +from nucypher.blockchain.eth.constants import (ADJUDICATOR_CONTRACT_NAME, DISPATCHER_CONTRACT_NAME, + NUCYPHER_TOKEN_CONTRACT_NAME, POLICY_MANAGER_CONTRACT_NAME, + STAKING_ESCROW_CONTRACT_NAME) from nucypher.blockchain.eth.deployers import StakingEscrowDeployer -from nucypher.blockchain.eth.registry import LocalContractRegistry, InMemoryContractRegistry +from nucypher.blockchain.eth.registry import InMemoryContractRegistry, LocalContractRegistry from nucypher.cli.commands.deploy import deploy -from tests.utils.constants import ( - TEST_PROVIDER_URI, - INSECURE_DEVELOPMENT_PASSWORD, -) +from tests.utils.constants import (INSECURE_DEVELOPMENT_PASSWORD, TEST_PROVIDER_URI) ALTERNATE_REGISTRY_FILEPATH = '/tmp/nucypher-test-registry-alternate.json' ALTERNATE_REGISTRY_FILEPATH_2 = '/tmp/nucypher-test-registry-alternate-2.json' diff --git a/tests/cli/test_enrico.py b/tests/cli/test_enrico.py index 4faa952d9..d47e13672 100644 --- a/tests/cli/test_enrico.py +++ b/tests/cli/test_enrico.py @@ -1,6 +1,7 @@ -from nucypher.cli.main import nucypher_cli from umbral.keys import UmbralPrivateKey +from nucypher.cli.main import nucypher_cli + def test_enrico_encrypt(click_runner): policy_encrypting_key = UmbralPrivateKey.gen_key().get_pubkey().to_bytes().hex() diff --git a/tests/cli/test_felix.py b/tests/cli/test_felix.py index 806742f1a..2ae0f042f 100644 --- a/tests/cli/test_felix.py +++ b/tests/cli/test_felix.py @@ -1,25 +1,20 @@ -import os from unittest import mock +import os import pytest_twisted - -from nucypher.blockchain.eth.registry import LocalContractRegistry from twisted.internet import threads from twisted.internet.task import Clock from nucypher.blockchain.eth.actors import Staker +from nucypher.blockchain.eth.registry import LocalContractRegistry from nucypher.blockchain.eth.token import NU from nucypher.characters.chaotic import Felix from nucypher.cli.literature import SUCCESSFUL_DESTRUCTION from nucypher.cli.main import nucypher_cli from nucypher.config.characters import FelixConfiguration from nucypher.config.constants import NUCYPHER_ENVVAR_KEYRING_PASSWORD -from tests.utils.constants import ( - TEMPORARY_DOMAIN, - TEST_PROVIDER_URI, - INSECURE_DEVELOPMENT_PASSWORD, - MOCK_CUSTOM_INSTALLATION_PATH_2, -) +from tests.utils.constants import (INSECURE_DEVELOPMENT_PASSWORD, MOCK_CUSTOM_INSTALLATION_PATH_2, TEMPORARY_DOMAIN, + TEST_PROVIDER_URI) @mock.patch('nucypher.config.characters.FelixConfiguration.default_filepath', return_value='/non/existent/file') diff --git a/tests/cli/test_help.py b/tests/cli/test_help.py index 85a7f789b..a8814176c 100644 --- a/tests/cli/test_help.py +++ b/tests/cli/test_help.py @@ -20,7 +20,7 @@ import pytest import nucypher from nucypher.cli.commands.deploy import deploy -from nucypher.cli.main import nucypher_cli, ENTRY_POINTS +from nucypher.cli.main import ENTRY_POINTS, nucypher_cli def test_echo_nucypher_version(click_runner): diff --git a/tests/cli/test_mixed_configurations.py b/tests/cli/test_mixed_configurations.py index 55df56562..4b15eca65 100644 --- a/tests/cli/test_mixed_configurations.py +++ b/tests/cli/test_mixed_configurations.py @@ -5,17 +5,12 @@ from pathlib import Path from nucypher.blockchain.eth.actors import Worker from nucypher.cli.main import nucypher_cli -from nucypher.config.characters import FelixConfiguration, UrsulaConfiguration, AliceConfiguration +from nucypher.config.characters import AliceConfiguration, FelixConfiguration, UrsulaConfiguration from nucypher.config.constants import NUCYPHER_ENVVAR_KEYRING_PASSWORD from nucypher.config.keyring import NucypherKeyring from nucypher.network.nodes import Teacher -from tests.utils.constants import ( - TEMPORARY_DOMAIN, - INSECURE_DEVELOPMENT_PASSWORD, - TEST_PROVIDER_URI, - MOCK_IP_ADDRESS, - MOCK_IP_ADDRESS_2, MOCK_CUSTOM_INSTALLATION_PATH, -) +from tests.utils.constants import (INSECURE_DEVELOPMENT_PASSWORD, MOCK_CUSTOM_INSTALLATION_PATH, MOCK_IP_ADDRESS, + MOCK_IP_ADDRESS_2, TEMPORARY_DOMAIN, TEST_PROVIDER_URI) @pytest.fixture(scope='function') diff --git a/tests/cli/test_multisig_cli.py b/tests/cli/test_multisig_cli.py index b10509eea..00fa3dac9 100644 --- a/tests/cli/test_multisig_cli.py +++ b/tests/cli/test_multisig_cli.py @@ -1,6 +1,6 @@ import json -import os +import os import pytest from nucypher.blockchain.eth.agents import ( @@ -12,7 +12,6 @@ from tests.utils.constants import ( TEST_PROVIDER_URI, ) - MULTISIG_THRESHOLD = 4 diff --git a/tests/cli/test_rpc_ipc_transport.py b/tests/cli/test_rpc_ipc_transport.py index f4603e8f6..d8efe195e 100644 --- a/tests/cli/test_rpc_ipc_transport.py +++ b/tests/cli/test_rpc_ipc_transport.py @@ -1,10 +1,9 @@ import json -import sys from collections import deque import pytest +import sys -from nucypher.cli.config import GroupGeneralConfig from nucypher.cli.processes import JSONRPCLineReceiver diff --git a/tests/cli/test_worklock_cli.py b/tests/cli/test_worklock_cli.py index f14bb0a3c..99900de7d 100644 --- a/tests/cli/test_worklock_cli.py +++ b/tests/cli/test_worklock_cli.py @@ -22,7 +22,7 @@ import pytest from eth_utils import to_wei from web3 import Web3 -from nucypher.blockchain.eth.actors import Staker, Bidder +from nucypher.blockchain.eth.actors import Bidder, Staker from nucypher.blockchain.eth.agents import ( ContractAgency, WorkLockAgent @@ -30,12 +30,8 @@ from nucypher.blockchain.eth.agents import ( from nucypher.blockchain.eth.token import NU from nucypher.characters.lawful import Ursula from nucypher.cli.commands.worklock import worklock -from tests.utils.constants import ( - INSECURE_DEVELOPMENT_PASSWORD, - TEST_PROVIDER_URI, - MOCK_IP_ADDRESS, - select_test_port, TEMPORARY_DOMAIN -) +from tests.utils.constants import (INSECURE_DEVELOPMENT_PASSWORD, MOCK_IP_ADDRESS, TEMPORARY_DOMAIN, TEST_PROVIDER_URI, + select_test_port) @pytest.fixture(scope='module') diff --git a/tests/cli/ursula/test_federated_ursula.py b/tests/cli/ursula/test_federated_ursula.py index 66330f5cd..66f3c98f7 100644 --- a/tests/cli/ursula/test_federated_ursula.py +++ b/tests/cli/ursula/test_federated_ursula.py @@ -16,9 +16,9 @@ along with nucypher. If not, see . """ import json -import os from json import JSONDecodeError +import os import pytest from nucypher.cli.literature import SUCCESSFUL_DESTRUCTION diff --git a/tests/cli/ursula/test_local_keystore_integration.py b/tests/cli/ursula/test_local_keystore_integration.py index 70b678c22..b6f29c7cc 100644 --- a/tests/cli/ursula/test_local_keystore_integration.py +++ b/tests/cli/ursula/test_local_keystore_integration.py @@ -14,29 +14,23 @@ GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with nucypher. If not, see . """ -from pathlib import Path - import json + import os import pytest from eth_account import Account +from pathlib import Path from web3 import Web3 from nucypher.blockchain.eth.signers import KeystoreSigner from nucypher.blockchain.eth.token import StakeList from nucypher.cli.main import nucypher_cli from nucypher.config.characters import UrsulaConfiguration -from tests.utils.constants import ( - MOCK_IP_ADDRESS, - TEST_PROVIDER_URI, - MOCK_URSULA_STARTING_PORT, - INSECURE_DEVELOPMENT_PASSWORD, - TEMPORARY_DOMAIN, -) -from tests.cli.functional.test_ursula_local_keystore_cli_functionality import ( - NUMBER_OF_MOCK_ACCOUNTS, - KEYFILE_NAME_TEMPLATE, MOCK_SIGNER_URI, CLI_ENV, MOCK_KEYSTORE_PATH -) +from tests.cli.functional.test_ursula_local_keystore_cli_functionality import (CLI_ENV, KEYFILE_NAME_TEMPLATE, + MOCK_KEYSTORE_PATH, MOCK_SIGNER_URI, + NUMBER_OF_MOCK_ACCOUNTS) +from tests.utils.constants import (INSECURE_DEVELOPMENT_PASSWORD, MOCK_IP_ADDRESS, MOCK_URSULA_STARTING_PORT, + TEMPORARY_DOMAIN, TEST_PROVIDER_URI) @pytest.fixture(scope='module') diff --git a/tests/cli/ursula/test_run_ursula.py b/tests/cli/ursula/test_run_ursula.py index faa3abb0c..3f49054ad 100644 --- a/tests/cli/ursula/test_run_ursula.py +++ b/tests/cli/ursula/test_run_ursula.py @@ -32,13 +32,8 @@ from nucypher.cli.main import nucypher_cli from nucypher.config.characters import UrsulaConfiguration from nucypher.config.constants import NUCYPHER_ENVVAR_KEYRING_PASSWORD from nucypher.network.nodes import Teacher -from tests.utils.constants import ( - INSECURE_DEVELOPMENT_PASSWORD, - MOCK_URSULA_STARTING_PORT, - TEMPORARY_DOMAIN, - TEST_PROVIDER_URI, - MOCK_IP_ADDRESS -) +from tests.utils.constants import (INSECURE_DEVELOPMENT_PASSWORD, MOCK_IP_ADDRESS, MOCK_URSULA_STARTING_PORT, + TEMPORARY_DOMAIN, TEST_PROVIDER_URI) from tests.utils.ursula import start_pytest_ursula_services diff --git a/tests/cli/ursula/test_stake_via_allocation_contract.py b/tests/cli/ursula/test_stake_via_allocation_contract.py index 47af33dce..756e45a47 100644 --- a/tests/cli/ursula/test_stake_via_allocation_contract.py +++ b/tests/cli/ursula/test_stake_via_allocation_contract.py @@ -16,40 +16,29 @@ along with nucypher. If not, see . """ import json -import os import random import maya +import os import pytest from twisted.logger import Logger from web3 import Web3 from nucypher.blockchain.eth.actors import Staker -from nucypher.blockchain.eth.agents import ( - StakingEscrowAgent, - ContractAgency, - PreallocationEscrowAgent, - NucypherTokenAgent -) +from nucypher.blockchain.eth.agents import (ContractAgency, NucypherTokenAgent, PreallocationEscrowAgent, + StakingEscrowAgent) from nucypher.blockchain.eth.deployers import PreallocationEscrowDeployer -from nucypher.blockchain.eth.registry import IndividualAllocationRegistry, InMemoryAllocationRegistry +from nucypher.blockchain.eth.registry import InMemoryAllocationRegistry, IndividualAllocationRegistry from nucypher.blockchain.eth.token import NU, Stake, StakeList from nucypher.characters.lawful import Enrico, Ursula from nucypher.cli.main import nucypher_cli from nucypher.config.characters import UrsulaConfiguration -from tests.utils.constants import ( - TEST_PROVIDER_URI, - INSECURE_DEVELOPMENT_PASSWORD, - MOCK_IP_ADDRESS, - MOCK_URSULA_STARTING_PORT, - TEMPORARY_DOMAIN, - MOCK_KNOWN_URSULAS_CACHE, - select_test_port, - MOCK_INDIVIDUAL_ALLOCATION_FILEPATH, - ONE_YEAR_IN_SECONDS -) +from tests.utils.constants import (INSECURE_DEVELOPMENT_PASSWORD, MOCK_INDIVIDUAL_ALLOCATION_FILEPATH, MOCK_IP_ADDRESS, + MOCK_KNOWN_URSULAS_CACHE, MOCK_URSULA_STARTING_PORT, ONE_YEAR_IN_SECONDS, + TEMPORARY_DOMAIN, TEST_PROVIDER_URI, select_test_port) from tests.utils.middleware import MockRestMiddleware + # # This test module is intended to mirror tests/cli/ursula/test_stakeholder_and_ursula.py, # but using a staking contract (namely, PreallocationEscrow) diff --git a/tests/cli/ursula/test_stakeholder_and_ursula.py b/tests/cli/ursula/test_stakeholder_and_ursula.py index c56938fee..c431cb242 100644 --- a/tests/cli/ursula/test_stakeholder_and_ursula.py +++ b/tests/cli/ursula/test_stakeholder_and_ursula.py @@ -21,14 +21,14 @@ from unittest import mock import maya import os -from nucypher.utilities.sandbox.middleware import MockRestMiddleware -from tests.utils.constants import (INSECURE_DEVELOPMENT_PASSWORD, - MOCK_IP_ADDRESS, - MOCK_KNOWN_URSULAS_CACHE, - MOCK_URSULA_STARTING_PORT, - TEMPORARY_DOMAIN, - TEST_PROVIDER_URI, - select_test_port +from tests.constants import ( + INSECURE_DEVELOPMENT_PASSWORD, + MOCK_IP_ADDRESS, + MOCK_KNOWN_URSULAS_CACHE, + MOCK_URSULA_STARTING_PORT, + TEMPORARY_DOMAIN, + TEST_PROVIDER_URI, + select_test_port ) from twisted.logger import Logger diff --git a/tests/cli/ursula/test_ursula_command.py b/tests/cli/ursula/test_ursula_command.py index 9ba3b9399..0a9265903 100644 --- a/tests/cli/ursula/test_ursula_command.py +++ b/tests/cli/ursula/test_ursula_command.py @@ -1,11 +1,10 @@ -import sys from contextlib import contextmanager import pytest +import sys from io import StringIO from nucypher.characters.control.emitters import StdoutEmitter -from nucypher.cli.config import GroupGeneralConfig from nucypher.cli.processes import UrsulaCommandProtocol diff --git a/tests/config/test_base_configuration.py b/tests/config/test_base_configuration.py index a9073181d..699520ab8 100644 --- a/tests/config/test_base_configuration.py +++ b/tests/config/test_base_configuration.py @@ -1,8 +1,8 @@ import json -import os -import shutil +import os import pytest +import shutil from nucypher.config.base import BaseConfiguration from nucypher.config.constants import DEFAULT_CONFIG_ROOT diff --git a/tests/config/test_character_configuration.py b/tests/config/test_character_configuration.py index fd89e3895..f96a4de43 100644 --- a/tests/config/test_character_configuration.py +++ b/tests/config/test_character_configuration.py @@ -1,16 +1,13 @@ import os -import tempfile - import pytest -from constant_sorrow.constants import NO_KEYRING_ATTACHED, CERTIFICATE_NOT_SAVED +import tempfile +from constant_sorrow.constants import CERTIFICATE_NOT_SAVED, NO_KEYRING_ATTACHED from nucypher.blockchain.eth.actors import StakeHolder from nucypher.characters.chaotic import Felix -from nucypher.characters.lawful import Alice, Bob -from nucypher.characters.lawful import Ursula -from nucypher.config.characters import AliceConfiguration, BobConfiguration, \ - FelixConfiguration, StakeHolderConfiguration -from nucypher.config.characters import UrsulaConfiguration +from nucypher.characters.lawful import Alice, Bob, Ursula +from nucypher.config.characters import AliceConfiguration, BobConfiguration, FelixConfiguration, \ + StakeHolderConfiguration, UrsulaConfiguration from nucypher.config.storages import ForgetfulNodeStorage from tests.utils.constants import TEMPORARY_DOMAIN diff --git a/tests/config/test_keyring.py b/tests/config/test_keyring.py index baeec37aa..0a7867e27 100644 --- a/tests/config/test_keyring.py +++ b/tests/config/test_keyring.py @@ -1,14 +1,12 @@ import pytest - +from constant_sorrow.constants import FEDERATED_ADDRESS from umbral.keys import UmbralPrivateKey from umbral.signing import Signer -from nucypher.config.keyring import NucypherKeyring -from nucypher.crypto.powers import DelegatingPower, DecryptingPower -from tests.utils.constants import INSECURE_DEVELOPMENT_PASSWORD -from constant_sorrow.constants import FEDERATED_ADDRESS - from nucypher.characters.lawful import Alice, Bob, Ursula +from nucypher.config.keyring import NucypherKeyring +from nucypher.crypto.powers import DecryptingPower, DelegatingPower +from tests.utils.constants import INSECURE_DEVELOPMENT_PASSWORD def test_generate_alice_keyring(tmpdir): diff --git a/tests/config/test_storages.py b/tests/config/test_storages.py index 0cfcdc714..e17c88852 100644 --- a/tests/config/test_storages.py +++ b/tests/config/test_storages.py @@ -18,11 +18,8 @@ along with nucypher. If not, see . import pytest from nucypher.characters.lawful import Ursula -from nucypher.config.storages import ( - ForgetfulNodeStorage, - SQLiteForgetfulNodeStorage, - TemporaryFileBasedNodeStorage, - NodeStorage) +from nucypher.config.storages import (ForgetfulNodeStorage, NodeStorage, SQLiteForgetfulNodeStorage, + TemporaryFileBasedNodeStorage) from tests.utils.constants import ( MOCK_URSULA_DB_FILEPATH, MOCK_URSULA_STARTING_PORT) diff --git a/tests/crypto/test_signature.py b/tests/crypto/test_signature.py index 01f2c3cfe..415a82082 100644 --- a/tests/crypto/test_signature.py +++ b/tests/crypto/test_signature.py @@ -21,7 +21,7 @@ from umbral.keys import UmbralPrivateKey from nucypher.crypto.api import ecdsa_sign, verify_ecdsa from nucypher.crypto.signing import Signature, Signer -from nucypher.crypto.utils import recover_pubkey_from_signature, get_signature_recovery_value +from nucypher.crypto.utils import get_signature_recovery_value, recover_pubkey_from_signature def test_signature_can_verify(): diff --git a/tests/crypto/test_transacting_power.py b/tests/crypto/test_transacting_power.py index 41a794dea..8ea1531d4 100644 --- a/tests/crypto/test_transacting_power.py +++ b/tests/crypto/test_transacting_power.py @@ -5,8 +5,8 @@ from eth_utils import to_checksum_address from nucypher.blockchain.eth.agents import NucypherTokenAgent from nucypher.crypto.api import verify_eip_191 from nucypher.crypto.powers import TransactingPower -from tests.utils.constants import INSECURE_DEVELOPMENT_PASSWORD from tests.conftest import LOCK_FUNCTION +from tests.utils.constants import INSECURE_DEVELOPMENT_PASSWORD TransactingPower.lock_account = LOCK_FUNCTION diff --git a/tests/crypto/test_utils.py b/tests/crypto/test_utils.py index 1a64a3946..55c3f0c8f 100644 --- a/tests/crypto/test_utils.py +++ b/tests/crypto/test_utils.py @@ -16,7 +16,6 @@ along with nucypher. If not, see . """ import pytest - from umbral.keys import UmbralPrivateKey from nucypher.crypto.signing import SignatureStamp diff --git a/tests/datastore/test_keypairs.py b/tests/datastore/test_keypairs.py index bbacef1e3..6bb456f6f 100644 --- a/tests/datastore/test_keypairs.py +++ b/tests/datastore/test_keypairs.py @@ -15,6 +15,7 @@ You should have received a copy of the GNU Affero General Public License along with nucypher. If not, see . """ import base64 + import sha3 from constant_sorrow.constants import PUBLIC_ONLY from umbral.keys import UmbralPrivateKey diff --git a/tests/fixtures.py b/tests/fixtures.py index 91a2fd588..229359a13 100644 --- a/tests/fixtures.py +++ b/tests/fixtures.py @@ -31,18 +31,12 @@ from umbral.keys import UmbralPrivateKey from umbral.signing import Signer from web3 import Web3 -from nucypher.blockchain.economics import StandardTokenEconomics, BaseEconomics -from nucypher.blockchain.eth.actors import Staker, StakeHolder +from nucypher.blockchain.economics import BaseEconomics, StandardTokenEconomics +from nucypher.blockchain.eth.actors import StakeHolder, Staker from nucypher.blockchain.eth.agents import NucypherTokenAgent, PolicyManagerAgent, StakingEscrowAgent from nucypher.blockchain.eth.clients import NuCypherGethDevProcess -from nucypher.blockchain.eth.deployers import ( - NucypherTokenDeployer, - StakingEscrowDeployer, - PolicyManagerDeployer, - AdjudicatorDeployer, - StakingInterfaceDeployer, - WorklockDeployer -) +from nucypher.blockchain.eth.deployers import (AdjudicatorDeployer, NucypherTokenDeployer, PolicyManagerDeployer, + StakingEscrowDeployer, StakingInterfaceDeployer, WorklockDeployer) from nucypher.blockchain.eth.interfaces import BlockchainInterfaceFactory from nucypher.blockchain.eth.registry import ( InMemoryContractRegistry, @@ -51,52 +45,28 @@ from nucypher.blockchain.eth.registry import ( from nucypher.blockchain.eth.signers import Web3Signer from nucypher.blockchain.eth.sol.compile import SolidityCompiler from nucypher.blockchain.eth.token import NU -from nucypher.characters.lawful import Enrico, Bob -from nucypher.config.characters import AliceConfiguration -from nucypher.config.characters import ( - UrsulaConfiguration, - BobConfiguration, - StakeHolderConfiguration -) +from nucypher.characters.lawful import Bob, Enrico +from nucypher.config.characters import AliceConfiguration, BobConfiguration, StakeHolderConfiguration, \ + UrsulaConfiguration from nucypher.crypto.powers import TransactingPower from nucypher.crypto.utils import canonical_address_from_umbral_key from nucypher.datastore import datastore from nucypher.datastore.db import Base from nucypher.policy.collections import IndisputableEvidence, WorkOrder from nucypher.utilities.logging import GlobalLoggerSettings -from tests.utils.blockchain import token_airdrop, TesterBlockchain -from tests.utils.constants import ( - DEVELOPMENT_ETH_AIRDROP_AMOUNT, - DEVELOPMENT_TOKEN_AIRDROP_AMOUNT, - MIN_STAKE_FOR_TESTS, - BONUS_TOKENS_FOR_TESTS, - MOCK_POLICY_DEFAULT_M, - MOCK_URSULA_STARTING_PORT, - MOCK_REGISTRY_FILEPATH, - NUMBER_OF_URSULAS_IN_DEVELOPMENT_NETWORK, - TEMPORARY_DOMAIN, - TEST_PROVIDER_URI, - INSECURE_DEVELOPMENT_PASSWORD, - TEST_GAS_LIMIT, -) -from tests.utils.middleware import MockRestMiddleware -from tests.utils.middleware import MockRestMiddlewareForLargeFleetTests +from tests.mock.interfaces import MockBlockchain, make_mock_registry_source_manager +from tests.performance_mocks import (mock_cert_generation, mock_cert_loading, mock_cert_storage, mock_keep_learning, + mock_message_verification, mock_record_fleet_state, mock_remember_node, + mock_rest_app_creation, mock_secret_source, mock_verify_node) +from tests.utils.blockchain import TesterBlockchain, token_airdrop +from tests.utils.constants import (BONUS_TOKENS_FOR_TESTS, DEVELOPMENT_ETH_AIRDROP_AMOUNT, + DEVELOPMENT_TOKEN_AIRDROP_AMOUNT, INSECURE_DEVELOPMENT_PASSWORD, MIN_STAKE_FOR_TESTS, + MOCK_POLICY_DEFAULT_M, MOCK_REGISTRY_FILEPATH, MOCK_URSULA_STARTING_PORT, + NUMBER_OF_URSULAS_IN_DEVELOPMENT_NETWORK, TEMPORARY_DOMAIN, TEST_GAS_LIMIT, + TEST_PROVIDER_URI) +from tests.utils.middleware import MockRestMiddleware, MockRestMiddlewareForLargeFleetTests from tests.utils.policy import generate_random_label -from tests.utils.ursula import make_decentralized_ursulas -from tests.utils.ursula import make_federated_ursulas -from tests.mock.interfaces import make_mock_registry_source_manager, MockBlockchain -from tests.performance_mocks import ( - mock_cert_storage, - mock_cert_loading, - mock_rest_app_creation, - mock_cert_generation, - mock_secret_source, - mock_remember_node, - mock_verify_node, - mock_record_fleet_state, - mock_message_verification, - mock_keep_learning -) +from tests.utils.ursula import make_decentralized_ursulas, make_federated_ursulas test_logger = Logger("test-logger") FEE_RATE_RANGE = (5, 10, 15) diff --git a/tests/learning/test_discovery_phases.py b/tests/learning/test_discovery_phases.py index c0427cc8c..45cc006b4 100644 --- a/tests/learning/test_discovery_phases.py +++ b/tests/learning/test_discovery_phases.py @@ -14,19 +14,17 @@ GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with nucypher. If not, see . """ -from unittest.mock import patch - import maya import pytest import time from flask import Response from umbral.keys import UmbralPublicKey +from unittest.mock import patch from nucypher.characters.lawful import Ursula -from tests.performance_mocks import mock_cert_storage, mock_cert_loading, mock_verify_node, \ - mock_message_verification, \ - mock_metadata_validation, mock_signature_bytes, mock_stamp_call, mock_pubkey_from_bytes, VerificationTracker, \ - NotARestApp, mock_secret_source, NotAPublicKey +from tests.performance_mocks import NotAPublicKey, NotARestApp, VerificationTracker, mock_cert_loading, \ + mock_cert_storage, mock_message_verification, mock_metadata_validation, mock_pubkey_from_bytes, mock_secret_source, \ + mock_signature_bytes, mock_stamp_call, mock_verify_node """ Node Discovery happens in phases. The first step is for a network actor to learn about the mere existence of a Node. diff --git a/tests/learning/test_domains.py b/tests/learning/test_domains.py index 12d1201f2..c817abcb3 100644 --- a/tests/learning/test_domains.py +++ b/tests/learning/test_domains.py @@ -2,6 +2,7 @@ from functools import partial from tests.utils.ursula import make_federated_ursulas + def test_learner_learns_about_domains_separately(ursula_federated_test_config, caplog): lonely_ursula_maker = partial(make_federated_ursulas, ursula_config=ursula_federated_test_config, diff --git a/tests/learning/test_fault_tolerance.py b/tests/learning/test_fault_tolerance.py index 8b8312ce7..51dc9ed3a 100644 --- a/tests/learning/test_fault_tolerance.py +++ b/tests/learning/test_fault_tolerance.py @@ -1,12 +1,11 @@ -import os from collections import namedtuple +import os import pytest -from eth_utils.address import to_checksum_address -from twisted.logger import globalLogPublisher, LogLevel - from bytestring_splitter import VariableLengthBytestring from constant_sorrow.constants import NOT_SIGNED +from eth_utils.address import to_checksum_address +from twisted.logger import LogLevel, globalLogPublisher from nucypher.characters.base import Character from nucypher.crypto.powers import TransactingPower diff --git a/tests/learning/test_firstula_circumstances.py b/tests/learning/test_firstula_circumstances.py index 0e9f355ae..decdf4e09 100644 --- a/tests/learning/test_firstula_circumstances.py +++ b/tests/learning/test_firstula_circumstances.py @@ -15,9 +15,8 @@ You should have received a copy of the GNU Affero General Public License along with nucypher. If not, see . """ -from functools import partial - import pytest_twisted as pt +from functools import partial from twisted.internet.threads import deferToThread from nucypher.network.middleware import RestMiddleware diff --git a/tests/learning/test_fleet_state.py b/tests/learning/test_fleet_state.py index b12771741..49d2bd775 100644 --- a/tests/learning/test_fleet_state.py +++ b/tests/learning/test_fleet_state.py @@ -1,8 +1,9 @@ from constant_sorrow.constants import FLEET_STATES_MATCH, NO_KNOWN_NODES +from functools import partial from hendrix.experience import crosstown_traffic from hendrix.utils.test_utils import crosstownTaskListDecoratorFactory + from tests.utils.ursula import make_federated_ursulas -from functools import partial def test_learning_from_node_with_no_known_nodes(ursula_federated_test_config): diff --git a/tests/metrics/estimate_gas.py b/tests/metrics/estimate_gas.py index 7f000f4e2..c8c34424e 100755 --- a/tests/metrics/estimate_gas.py +++ b/tests/metrics/estimate_gas.py @@ -19,28 +19,26 @@ along with nucypher. If not, see . """ import json -import os -import sys +from os.path import abspath, dirname import io +import os import re - +import sys import tabulate import time -from os.path import abspath, dirname +from twisted.logger import ILogObserver, Logger, globalLogPublisher, jsonFileLogObserver +from umbral.keys import UmbralPrivateKey +from umbral.signing import Signer from unittest.mock import Mock - -from twisted.logger import globalLogPublisher, Logger, jsonFileLogObserver, ILogObserver from zope.interface import provider from nucypher.blockchain.economics import StandardTokenEconomics -from nucypher.blockchain.eth.agents import NucypherTokenAgent, StakingEscrowAgent, PolicyManagerAgent, AdjudicatorAgent +from nucypher.blockchain.eth.agents import AdjudicatorAgent, NucypherTokenAgent, PolicyManagerAgent, StakingEscrowAgent from nucypher.blockchain.eth.constants import NUCYPHER_CONTRACT_NAMES from nucypher.crypto.signing import SignatureStamp from nucypher.policy.policies import Policy from tests.utils.blockchain import TesterBlockchain -from umbral.keys import UmbralPrivateKey -from umbral.signing import Signer # FIXME: Needed to use a fixture here, but now estimate_gas.py only runs if executed from main directory sys.path.insert(0, abspath('tests')) diff --git a/tests/mock/agents.py b/tests/mock/agents.py index d940b0f84..e55ae2ff0 100644 --- a/tests/mock/agents.py +++ b/tests/mock/agents.py @@ -1,11 +1,11 @@ from collections import defaultdict -from typing import Tuple from hexbytes import HexBytes +from typing import Tuple from unittest.mock import Mock from nucypher.blockchain.economics import EconomicsFactory -from nucypher.blockchain.eth.agents import WorkLockAgent, StakingEscrowAgent, NucypherTokenAgent, PolicyManagerAgent +from nucypher.blockchain.eth.agents import NucypherTokenAgent, PolicyManagerAgent, StakingEscrowAgent, WorkLockAgent from nucypher.blockchain.eth.constants import NULL_ADDRESS from nucypher.blockchain.eth.interfaces import BlockchainInterfaceFactory from tests.utils.constants import MOCK_PROVIDER_URI diff --git a/tests/mock/interfaces.py b/tests/mock/interfaces.py index dfbfdf369..7e567649b 100644 --- a/tests/mock/interfaces.py +++ b/tests/mock/interfaces.py @@ -4,14 +4,10 @@ from typing import Union from nucypher.blockchain.eth.constants import PREALLOCATION_ESCROW_CONTRACT_NAME from nucypher.blockchain.eth.networks import NetworksInventory -from nucypher.blockchain.eth.registry import ( - CanonicalRegistrySource, - BaseContractRegistry, - IndividualAllocationRegistry, - RegistrySourceManager -) +from nucypher.blockchain.eth.registry import (BaseContractRegistry, CanonicalRegistrySource, + IndividualAllocationRegistry, RegistrySourceManager) from tests.utils.blockchain import TesterBlockchain -from tests.utils.constants import TEMPORARY_DOMAIN, MOCK_PROVIDER_URI +from tests.utils.constants import MOCK_PROVIDER_URI, TEMPORARY_DOMAIN def make_mock_registry_source_manager(blockchain, test_registry, mock_backend: bool = False): diff --git a/tests/network/test_availability.py b/tests/network/test_availability.py index 62da2c184..a119fca7e 100644 --- a/tests/network/test_availability.py +++ b/tests/network/test_availability.py @@ -1,8 +1,7 @@ import maya import pytest -import time - import pytest_twisted as pt +import time from flask import Response from twisted.internet import threads diff --git a/tests/network/test_failure_modes.py b/tests/network/test_failure_modes.py index 667d14bd3..b936471a0 100644 --- a/tests/network/test_failure_modes.py +++ b/tests/network/test_failure_modes.py @@ -1,17 +1,17 @@ import datetime import maya -import pytest import os -import requests -from twisted.internet import threads +import pytest import pytest_twisted +import requests +from bytestring_splitter import BytestringSplittingError +from functools import partial +from twisted.internet import threads from nucypher.policy.collections import TreasureMap from nucypher.policy.policies import Policy -from tests.utils.middleware import NodeIsDownMiddleware, EvilMiddleWare +from tests.utils.middleware import EvilMiddleWare, NodeIsDownMiddleware from tests.utils.ursula import make_federated_ursulas -from bytestring_splitter import BytestringSplittingError -from functools import partial def test_bob_does_not_let_a_connection_error_stop_him(enacted_federated_policy, diff --git a/tests/performance_mocks.py b/tests/performance_mocks.py index 38c38776b..26cef85a8 100644 --- a/tests/performance_mocks.py +++ b/tests/performance_mocks.py @@ -1,9 +1,9 @@ from contextlib import contextmanager -from unittest.mock import patch from umbral.config import default_params from umbral.keys import UmbralPublicKey from umbral.signing import Signature +from unittest.mock import patch from nucypher.network.server import make_rest_app diff --git a/tests/run_tests.py b/tests/run_tests.py index 38e853c9f..46ac8c4cf 100644 --- a/tests/run_tests.py +++ b/tests/run_tests.py @@ -16,9 +16,8 @@ along with nucypher. If not, see . """ -import os - import maya +import os import pytest diff --git a/tests/utils/blockchain.py b/tests/utils/blockchain.py index 3605432b3..2619ef3e2 100644 --- a/tests/utils/blockchain.py +++ b/tests/utils/blockchain.py @@ -16,17 +16,15 @@ along with nucypher. If not, see . """ -import os -from typing import List -from typing import Tuple - import maya +import os from eth_tester.exceptions import TransactionFailed from eth_utils import to_canonical_address from twisted.logger import Logger +from typing import List, Tuple from web3 import Web3 -from nucypher.blockchain.economics import StandardTokenEconomics, BaseEconomics +from nucypher.blockchain.economics import BaseEconomics, StandardTokenEconomics from nucypher.blockchain.eth.actors import ContractAdministrator from nucypher.blockchain.eth.interfaces import BlockchainDeployerInterface, BlockchainInterfaceFactory from nucypher.blockchain.eth.registry import InMemoryContractRegistry @@ -35,13 +33,9 @@ from nucypher.blockchain.eth.token import NU from nucypher.blockchain.eth.utils import epoch_to_period from nucypher.config.constants import BASE_DIR from nucypher.crypto.powers import TransactingPower -from tests.utils.constants import ( - NUMBER_OF_ETH_TEST_ACCOUNTS, - NUMBER_OF_STAKERS_IN_BLOCKCHAIN_TESTS, - NUMBER_OF_URSULAS_IN_BLOCKCHAIN_TESTS, - DEVELOPMENT_ETH_AIRDROP_AMOUNT, - INSECURE_DEVELOPMENT_PASSWORD -) +from tests.utils.constants import (DEVELOPMENT_ETH_AIRDROP_AMOUNT, INSECURE_DEVELOPMENT_PASSWORD, + NUMBER_OF_ETH_TEST_ACCOUNTS, NUMBER_OF_STAKERS_IN_BLOCKCHAIN_TESTS, + NUMBER_OF_URSULAS_IN_BLOCKCHAIN_TESTS) def token_airdrop(token_agent, amount: NU, origin: str, addresses: List[str]): diff --git a/tests/utils/constants.py b/tests/utils/constants.py index 6bd80b283..61028cf50 100644 --- a/tests/utils/constants.py +++ b/tests/utils/constants.py @@ -17,20 +17,19 @@ along with nucypher. If not, see . import contextlib -import os -import socket import string -import tempfile -from datetime import datetime from random import SystemRandom +import os +import socket +import tempfile import time +from datetime import datetime from web3 import Web3 from nucypher.blockchain.eth.token import NU from nucypher.config.characters import UrsulaConfiguration from nucypher.config.constants import BASE_DIR, NUCYPHER_ENVVAR_KEYRING_PASSWORD -from nucypher.crypto.api import keccak_digest def select_test_port() -> int: diff --git a/tests/utils/controllers.py b/tests/utils/controllers.py index 0eef50d19..847046116 100644 --- a/tests/utils/controllers.py +++ b/tests/utils/controllers.py @@ -1,10 +1,8 @@ import json + from io import StringIO - from typing import Union -from io import BytesIO - import nucypher diff --git a/tests/utils/middleware.py b/tests/utils/middleware.py index c2621cdc1..737cacadd 100644 --- a/tests/utils/middleware.py +++ b/tests/utils/middleware.py @@ -18,15 +18,14 @@ along with nucypher. If not, see . import requests import socket - from bytestring_splitter import VariableLengthBytestring -from nucypher.characters.lawful import Ursula -from nucypher.network.middleware import RestMiddleware, NucypherMiddlewareClient -from tests.utils.constants import MOCK_KNOWN_URSULAS_CACHE from constant_sorrow.constants import CERTIFICATE_NOT_SAVED - from flask import Response +from nucypher.characters.lawful import Ursula +from nucypher.network.middleware import NucypherMiddlewareClient, RestMiddleware +from tests.utils.constants import MOCK_KNOWN_URSULAS_CACHE + class _TestMiddlewareClient(NucypherMiddlewareClient): timeout = None diff --git a/tests/utils/policy.py b/tests/utils/policy.py index 2960c8231..ba40e5c9f 100644 --- a/tests/utils/policy.py +++ b/tests/utils/policy.py @@ -16,12 +16,12 @@ along with nucypher. If not, see . """ -import os import random from collections import OrderedDict -from typing import Set import maya +import os +from typing import Set from nucypher.characters.lawful import Ursula from nucypher.network.middleware import RestMiddleware diff --git a/tests/utils/ursula.py b/tests/utils/ursula.py index 81b4ac091..1f45d2cd7 100644 --- a/tests/utils/ursula.py +++ b/tests/utils/ursula.py @@ -16,18 +16,14 @@ along with nucypher. If not, see . """ from cryptography.x509 import Certificate -from typing import Set, List, Iterable, Optional +from typing import Iterable, List, Optional, Set from nucypher.blockchain.eth.actors import Staker from nucypher.blockchain.eth.interfaces import BlockchainInterface from nucypher.characters.lawful import Ursula from nucypher.config.characters import UrsulaConfiguration -from tests.utils.constants import ( - MOCK_KNOWN_URSULAS_CACHE, - MOCK_URSULA_STARTING_PORT, - NUMBER_OF_URSULAS_IN_DEVELOPMENT_NETWORK, - MOCK_URSULA_DB_FILEPATH -) +from tests.utils.constants import (MOCK_KNOWN_URSULAS_CACHE, MOCK_URSULA_DB_FILEPATH, MOCK_URSULA_STARTING_PORT, + NUMBER_OF_URSULAS_IN_DEVELOPMENT_NETWORK) def make_federated_ursulas(ursula_config: UrsulaConfiguration,