diff --git a/lbry/lbry/blob_exchange/client.py b/lbry/lbry/blob_exchange/client.py index f69decb0c..fefe75836 100644 --- a/lbry/lbry/blob_exchange/client.py +++ b/lbry/lbry/blob_exchange/client.py @@ -83,8 +83,6 @@ class BlobExchangeClientProtocol(asyncio.Protocol): if len(data) > (self.blob.get_length() - self._blob_bytes_received): data = data[:(self.blob.get_length() - self._blob_bytes_received)] log.warning("got more than asked from %s:%d, probable sendfile bug", self.peer_address, self.peer_port) - else: - data = data self._blob_bytes_received += len(data) try: self.writer.write(data) diff --git a/lbry/lbry/extras/cli.py b/lbry/lbry/extras/cli.py index 13a28cc6a..a4862e5c1 100644 --- a/lbry/lbry/extras/cli.py +++ b/lbry/lbry/extras/cli.py @@ -65,10 +65,10 @@ def remove_brackets(key): def set_kwargs(parsed_args): kwargs = {} for key, arg in parsed_args.items(): - k = None if arg is None: continue - elif key.startswith("--") and remove_brackets(key[2:]) not in kwargs: + k = None + if key.startswith("--") and remove_brackets(key[2:]) not in kwargs: k = remove_brackets(key[2:]) elif remove_brackets(key) not in kwargs: k = remove_brackets(key) diff --git a/lbry/lbry/extras/daemon/migrator/dbmigrator.py b/lbry/lbry/extras/daemon/migrator/dbmigrator.py index 6f542448e..859dcb5d8 100644 --- a/lbry/lbry/extras/daemon/migrator/dbmigrator.py +++ b/lbry/lbry/extras/daemon/migrator/dbmigrator.py @@ -1,4 +1,5 @@ import os +import sys import logging log = logging.getLogger(__name__) @@ -51,7 +52,6 @@ def migrate_db(conf, start, end): def run_migration_script(): - import sys log_format = "(%(asctime)s)[%(filename)s:%(lineno)s] %(funcName)s(): %(message)s" logging.basicConfig(level=logging.DEBUG, format=log_format, filename="migrator.log") sys.stdout = open("migrator.out.log", 'w') diff --git a/lbry/lbry/extras/daemon/migrator/migrate5to6.py b/lbry/lbry/extras/daemon/migrator/migrate5to6.py index add03801e..49ab2ba62 100644 --- a/lbry/lbry/extras/daemon/migrator/migrate5to6.py +++ b/lbry/lbry/extras/daemon/migrator/migrate5to6.py @@ -125,10 +125,9 @@ def do_migration(conf): name_metadata_cursor.execute("select txid, n, sd_hash from name_metadata").fetchall() } - sd_hash_to_stream_hash = { - sd_hash: stream_hash for (sd_hash, stream_hash) in + sd_hash_to_stream_hash = dict( lbryfile_cursor.execute("select sd_blob_hash, stream_hash from lbry_file_descriptors").fetchall() - } + ) stream_hash_to_stream_blobs = {} diff --git a/lbry/lbry/extras/daemon/storage.py b/lbry/lbry/extras/daemon/storage.py index 2b0bf96d7..ededa684f 100644 --- a/lbry/lbry/extras/daemon/storage.py +++ b/lbry/lbry/extras/daemon/storage.py @@ -475,8 +475,7 @@ class SQLiteStorage(SQLiteMixin): os.path.join(binascii.unhexlify(download_directory).decode(), binascii.unhexlify(file_name).decode())): continue - else: - removed.append((stream_hash,)) + removed.append((stream_hash,)) if removed: transaction.executemany( "update file set file_name=null, download_directory=null, saved_file=0 where stream_hash=?", diff --git a/lbry/lbry/extras/system_info.py b/lbry/lbry/extras/system_info.py index 81810c1b3..9b36cde17 100644 --- a/lbry/lbry/extras/system_info.py +++ b/lbry/lbry/extras/system_info.py @@ -23,7 +23,7 @@ def get_platform() -> dict: "build": build_type.BUILD, # CI server sets this during build step } if p["os_system"] == "Linux": - import distro + import distro # pylint: disable=import-outside-toplevel p["distro"] = distro.info() p["desktop"] = os.environ.get('XDG_CURRENT_DESKTOP', 'Unknown') diff --git a/lbry/lbry/wallet/server/db/reader.py b/lbry/lbry/wallet/server/db/reader.py index b352d232e..89b444b2b 100644 --- a/lbry/lbry/wallet/server/db/reader.py +++ b/lbry/lbry/wallet/server/db/reader.py @@ -2,6 +2,7 @@ import time import struct import sqlite3 import logging +from operator import itemgetter from typing import Tuple, List, Dict, Union, Type, Optional from binascii import unhexlify from decimal import Decimal @@ -336,7 +337,7 @@ def search(constraints) -> Tuple[List, List, int, int]: if 'order_by' not in constraints: constraints['order_by'] = ["claim_hash"] txo_rows = _search(**constraints) - channel_hashes = set(txo['channel_hash'] for txo in txo_rows if txo['channel_hash']) + channel_hashes = set(filter(None, map(itemgetter('channel_hash'), txo_rows))) extra_txo_rows = [] if channel_hashes: extra_txo_rows = _search( diff --git a/torba/torba/client/baseaccount.py b/torba/torba/client/baseaccount.py index 8b9ff838c..4c7644fe6 100644 --- a/torba/torba/client/baseaccount.py +++ b/torba/torba/client/baseaccount.py @@ -85,7 +85,7 @@ class AddressManager: class HierarchicalDeterministic(AddressManager): """ Implements simple version of Bitcoin Hierarchical Deterministic key management. """ - name = "deterministic-chain" + name: str = "deterministic-chain" __slots__ = 'gap', 'maximum_uses_per_address' @@ -164,7 +164,7 @@ class HierarchicalDeterministic(AddressManager): class SingleKey(AddressManager): """ Single Key address manager always returns the same address for all operations. """ - name = "single-address" + name: str = "single-address" __slots__ = () diff --git a/torba/torba/client/basedatabase.py b/torba/torba/client/basedatabase.py index bb43150eb..d0dd07503 100644 --- a/torba/torba/client/basedatabase.py +++ b/torba/torba/client/basedatabase.py @@ -102,20 +102,20 @@ def constraints_to_sql(constraints, joiner=' AND ', prepend_key=''): if not key: sql.append(constraint) continue - elif key.startswith('$'): + if key.startswith('$'): values[key] = constraint continue - elif key.endswith('__not'): + if key.endswith('__not'): col, op = col[:-len('__not')], '!=' elif key.endswith('__is_null'): col = col[:-len('__is_null')] sql.append(f'{col} IS NULL') continue - elif key.endswith('__is_not_null'): + if key.endswith('__is_not_null'): col = col[:-len('__is_not_null')] sql.append(f'{col} IS NOT NULL') continue - elif key.endswith('__lt'): + if key.endswith('__lt'): col, op = col[:-len('__lt')], '<' elif key.endswith('__lte'): col, op = col[:-len('__lte')], '<=' @@ -149,7 +149,7 @@ def constraints_to_sql(constraints, joiner=' AND ', prepend_key=''): sql.append(f'({where})') values.update(subvalues) continue - elif key.endswith('__and'): + if key.endswith('__and'): where, subvalues = constraints_to_sql(constraint, ' AND ', key+tag+'_') sql.append(f'({where})') values.update(subvalues) @@ -554,7 +554,7 @@ class BaseDatabase(SQLiteMixin): row[1], height=row[2], position=row[3], is_verified=row[4] ) txo = txs[row[0]].outputs[row[5]] - row_accounts = {k: v for k, v in (a.split('|') for a in row[8].split(','))} + row_accounts = dict(a.split('|') for a in row[8].split(',')) account_match = set(row_accounts) & my_accounts if account_match: txo.is_my_account = True diff --git a/torba/torba/client/basetransaction.py b/torba/torba/client/basetransaction.py index d6c7eb76b..724ee3f2a 100644 --- a/torba/torba/client/basetransaction.py +++ b/torba/torba/client/basetransaction.py @@ -507,18 +507,17 @@ class BaseTransaction: if tx._outputs: break - else: - # this condition and the outer range(5) loop cover an edge case - # whereby a single input is just enough to cover the fee and - # has some change left over, but the change left over is less - # than the cost_of_change: thus the input is completely - # consumed and no output is added, which is an invalid tx. - # to be able to spend this input we must increase the cost - # of the TX and run through the balance algorithm a second time - # adding an extra input and change output, making tx valid. - # we do this 5 times in case the other UTXOs added are also - # less than the fee, after 5 attempts we give up and go home - cost += cost_of_change + 1 + # this condition and the outer range(5) loop cover an edge case + # whereby a single input is just enough to cover the fee and + # has some change left over, but the change left over is less + # than the cost_of_change: thus the input is completely + # consumed and no output is added, which is an invalid tx. + # to be able to spend this input we must increase the cost + # of the TX and run through the balance algorithm a second time + # adding an extra input and change output, making tx valid. + # we do this 5 times in case the other UTXOs added are also + # less than the fee, after 5 attempts we give up and go home + cost += cost_of_change + 1 if sign: await tx.sign(funding_accounts) diff --git a/torba/torba/coin/bitcoinsegwit.py b/torba/torba/coin/bitcoinsegwit.py index 22b451147..b9856cf58 100644 --- a/torba/torba/coin/bitcoinsegwit.py +++ b/torba/torba/coin/bitcoinsegwit.py @@ -14,11 +14,11 @@ from torba.client.baseheader import BaseHeaders, ArithUint256 class MainHeaders(BaseHeaders): - header_size = 80 - chunk_size = 2016 - max_target = 0x00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff + header_size: int = 80 + chunk_size: int = 2016 + max_target: int = 0x00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff genesis_hash: Optional[bytes] = b'000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f' - target_timespan = 14 * 24 * 60 * 60 + target_timespan: int = 14 * 24 * 60 * 60 @staticmethod def serialize(header: dict) -> bytes: