Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions contrib/devtools/copyright_header.py
Original file line number Diff line number Diff line change
Expand Up @@ -286,7 +286,7 @@ def exec_report(base_directory, verbose):
def report_cmd(argv):
if len(argv) == 2:
sys.exit(REPORT_USAGE)

base_directory = argv[2]
if not os.path.exists(base_directory):
sys.exit("*** bad <base_directory>: %s" % base_directory)
Expand Down Expand Up @@ -444,7 +444,7 @@ def print_file_action_message(filename, action):
def update_cmd(argv):
if len(argv) != 3:
sys.exit(UPDATE_USAGE)

base_directory = argv[2]
if not os.path.exists(base_directory):
sys.exit("*** bad base_directory: %s" % base_directory)
Expand Down Expand Up @@ -570,13 +570,13 @@ def insert_cmd(argv):
_, extension = os.path.splitext(filename)
if extension not in ['.h', '.cpp', '.cc', '.c', '.py']:
sys.exit("*** cannot insert for file extension %s" % extension)

if extension == '.py':
style = 'python'
else:
style = 'cpp'
exec_insert_header(filename, style)

################################################################################
# UI
################################################################################
Expand Down
3 changes: 2 additions & 1 deletion contrib/devtools/github-merge.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,8 @@
import hashlib
import subprocess
import sys
import json,codecs
import json
import codecs
try:
from urllib.request import Request,urlopen
except:
Expand Down
12 changes: 11 additions & 1 deletion contrib/devtools/lint-python.sh
Original file line number Diff line number Diff line change
Expand Up @@ -15,21 +15,28 @@
# E133 closing bracket is missing indentation
# E223 tab before operator
# E224 tab after operator
# E242 tab after ','
# E266 too many leading '#' for block comment
# E271 multiple spaces after keyword
# E272 multiple spaces before keyword
# E273 tab after keyword
# E274 tab before keyword
# E275 missing whitespace after keyword
# E304 blank lines found after function decorator
# E306 expected 1 blank line before a nested definition
# E401 multiple imports on one line
# E402 module level import not at top of file
# E502 the backslash is redundant between brackets
# E701 multiple statements on one line (colon)
# E702 multiple statements on one line (semicolon)
# E703 statement ends with a semicolon
# E714 test for object identity should be "is not"
# E721 do not compare types, use "isinstance()"
# E741 do not use variables named "l", "O", or "I"
# E742 do not define classes named "l", "O", or "I"
# E743 do not define functions named "l", "O", or "I"
# E901 SyntaxError: invalid syntax
# E902 TokenError: EOF in multi-line string
# F401 module imported but unused
# F402 import module from line N shadowed by loop variable
# F404 future import(s) name after other statements
Expand All @@ -49,16 +56,19 @@
# F707 an except: block as not the last exception handler
# F811 redefinition of unused name from line N
# F812 list comprehension redefines 'foo' from line N
# F821 undefined name 'Foo'
# F822 undefined name name in __all__
# F823 local variable name … referenced before assignment
# F831 duplicate argument name in function definition
# F841 local variable 'foo' is assigned to but never used
# W292 no newline at end of file
# W293 blank line contains whitespace
# W504 line break after binary operator
# W601 .has_key() is deprecated, use "in"
# W602 deprecated form of raising exception
# W603 "<>" is deprecated, use "!="
# W604 backticks are deprecated, use "repr()"
# W605 invalid escape sequence "x"
# W606 'async' and 'await' are reserved keywords starting with Python 3.7

flake8 --ignore=B,C,E,F,I,N,W --select=E112,E113,E115,E116,E125,E131,E133,E223,E224,E271,E272,E273,E274,E275,E304,E306,E502,E702,E703,E714,E721,E741,E742,E743,F401,F402,F404,F406,F407,F601,F602,F621,F622,F631,F701,F702,F703,F704,F705,F706,F707,F811,F812,F822,F823,F831,F841,W292,W504,W601,W602,W603,W604,W605 .
flake8 --ignore=B,C,E,F,I,N,W --select=E112,E113,E115,E116,E125,E131,E133,E223,E224,E242,E266,E271,E272,E273,E274,E275,E304,E306,E401,E402,E502,E701,E702,E703,E714,E721,E741,E742,E743,F401,E901,E902,F402,F404,F406,F407,F601,F602,F621,F622,F631,F701,F702,F703,F704,F705,F706,F707,F811,F812,F821,F822,F823,F831,F841,W292,W293,W504,W601,W602,W603,W604,W605,W606 .
8 changes: 4 additions & 4 deletions contrib/devtools/optimize-pngs.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,19 +41,19 @@ def content_hash(filename):
file_path = os.path.join(absFolder, file)
fileMetaMap = {'file' : file, 'osize': os.path.getsize(file_path), 'sha256Old' : file_hash(file_path)}
fileMetaMap['contentHashPre'] = content_hash(file_path)

try:
subprocess.call([pngcrush, "-brute", "-ow", "-rem", "gAMA", "-rem", "cHRM", "-rem", "iCCP", "-rem", "sRGB", "-rem", "alla", "-rem", "text", file_path],
stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
except:
print("pngcrush is not installed, aborting...")
sys.exit(0)

#verify
if "Not a PNG file" in subprocess.check_output([pngcrush, "-n", "-v", file_path], stderr=subprocess.STDOUT, universal_newlines=True):
print("PNG file "+file+" is corrupted after crushing, check out pngcursh version")
sys.exit(1)

fileMetaMap['sha256New'] = file_hash(file_path)
fileMetaMap['contentHashPost'] = content_hash(file_path)

Expand All @@ -72,5 +72,5 @@ def content_hash(filename):
totalSaveBytes += fileDict['osize'] - fileDict['psize']
noHashChange = noHashChange and (oldHash == newHash)
print(fileDict['file']+"\n size diff from: "+str(fileDict['osize'])+" to: "+str(fileDict['psize'])+"\n old sha256: "+oldHash+"\n new sha256: "+newHash+"\n")

print("completed. Checksum stable: "+str(noHashChange)+". Total reduction: "+str(totalSaveBytes)+" bytes")
1 change: 0 additions & 1 deletion contrib/linearize/linearize-data.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@

settings = {}

##### Switch endian-ness #####
def hex_switchEndian(s):
""" Switches the endianness of a hex string (in pairs of hex chars) """
pairList = [s[i:i+2].encode() for i in range(0, len(s), 2)]
Expand Down
1 change: 0 additions & 1 deletion contrib/linearize/linearize-hashes.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@

settings = {}

##### Switch endian-ness #####
def hex_switchEndian(s):
""" Switches the endianness of a hex string (in pairs of hex chars) """
pairList = [s[i:i+2].encode() for i in range(0, len(s), 2)]
Expand Down
7 changes: 4 additions & 3 deletions contrib/seeds/generate-seeds.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,8 @@

from base64 import b32decode
from binascii import a2b_hex
import sys, os
import sys
import os
import re

# ipv4 in ipv6 prefix
Expand All @@ -46,7 +47,7 @@ def name_to_ipv6(addr):
if len(addr)>6 and addr.endswith('.onion'):
vchAddr = b32decode(addr[0:-6], True)
if len(vchAddr) != 16-len(pchOnionCat):
raise ValueError('Invalid onion %s' % s)
raise ValueError('Invalid onion %s' % vchAddr)
return pchOnionCat + vchAddr
elif '.' in addr: # IPv4
return pchIPv4 + bytearray((int(x) for x in addr.split('.')))
Expand Down Expand Up @@ -132,7 +133,7 @@ def main():
with open(os.path.join(indir,'nodes_test.txt'),'r') as f:
process_nodes(g, f, 'pnSeed6_test', 18333)
g.write('#endif // BITCOIN_CHAINPARAMSSEEDS_H\n')

if __name__ == '__main__':
main()

10 changes: 5 additions & 5 deletions contrib/seeds/makeseeds.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,11 @@
# Generate seeds.txt from Pieter's DNS seeder
#

import re
import sys
import dns.resolver
import collections

NSEEDS=512

MAX_SEEDS_PER_ASN=2
Expand All @@ -22,11 +27,6 @@
"54.94.195.96", "54.94.200.247"
}

import re
import sys
import dns.resolver
import collections

PATTERN_IPV4 = re.compile(r"^((\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})):(\d+)$")
PATTERN_IPV6 = re.compile(r"^\[([0-9a-z:]+)\]:(\d+)$")
PATTERN_ONION = re.compile(r"^([abcdefghijklmnopqrstuvwxyz234567]{16}\.onion):(\d+)$")
Expand Down
9 changes: 6 additions & 3 deletions contrib/testgen/base58.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,10 @@ def b58encode(v):
# leading 0-bytes in the input become leading-1s
nPad = 0
for c in v:
if c == 0: nPad += 1
else: break
if c == 0:
nPad += 1
else:
break

return (__b58chars[0]*nPad) + result

Expand Down Expand Up @@ -98,7 +100,8 @@ def b58decode_chk(v):
def get_bcaddress_version(strAddress):
""" Returns None if strAddress is invalid. Otherwise returns integer version of address. """
addr = b58decode_chk(strAddress)
if addr is None or len(addr)!=21: return None
if addr is None or len(addr)!=21:
return None
version = addr[0]
return ord(version)

Expand Down
9 changes: 5 additions & 4 deletions contrib/testgen/gen_base58_test_vectors.py
Original file line number Diff line number Diff line change
Expand Up @@ -74,12 +74,12 @@ def gen_invalid_vector(template, corrupt_prefix, randomize_payload_size, corrupt
prefix = os.urandom(1)
else:
prefix = bytearray(template[0])

if randomize_payload_size:
payload = os.urandom(max(int(random.expovariate(0.5)), 50))
else:
payload = os.urandom(template[1])

if corrupt_suffix:
suffix = os.urandom(len(template[2]))
else:
Expand Down Expand Up @@ -114,7 +114,8 @@ def gen_invalid_vectors():
yield val,

if __name__ == '__main__':
import sys, json
import sys
import json
iters = {'valid':gen_valid_vectors, 'invalid':gen_invalid_vectors}
try:
uiter = iters[sys.argv[1]]
Expand All @@ -124,7 +125,7 @@ def gen_invalid_vectors():
count = int(sys.argv[2])
except IndexError:
count = 0

data = list(islice(uiter(), count))
json.dump(data, sys.stdout, sort_keys=True, indent=4)
sys.stdout.write('\n')
Expand Down
2 changes: 1 addition & 1 deletion share/rpcauth/rpcauth.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@

#Create 32 byte b64 password
password = base64.urlsafe_b64encode(os.urandom(32)).decode("utf-8")

m = hmac.new(bytearray(salt, 'utf-8'), bytearray(password, 'utf-8'), "SHA256")
result = m.hexdigest()

Expand Down
4 changes: 2 additions & 2 deletions test/functional/feature_bip68_sequence.py
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ def test_sequence_lock_confirmed_inputs(self):

# Track whether any sequence locks used should fail
should_pass = True

# Track whether this transaction was built with sequence locks
using_sequence_locks = False

Expand Down Expand Up @@ -343,7 +343,7 @@ def test_bip68_not_consensus(self):
tx2.rehash()

self.nodes[0].sendrawtransaction(ToHex(tx2))

# Now make an invalid spend of tx2 according to BIP68
sequence_value = 100 # 100 block relative locktime

Expand Down
2 changes: 1 addition & 1 deletion test/functional/feature_maxuploadtarget.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ def on_block(self, message):
self.block_receive_map[message.block.sha256] += 1

class MaxUploadTest(BitcoinTestFramework):

def set_test_params(self):
self.setup_clean_chain = True
self.num_nodes = 1
Expand Down
2 changes: 1 addition & 1 deletion test/functional/feature_proxy.py
Original file line number Diff line number Diff line change
Expand Up @@ -182,7 +182,7 @@ def networks_dict(d):
assert_equal(n1['onion']['proxy'], '%s:%i' % (self.conf2.addr))
assert_equal(n1['onion']['proxy_randomize_credentials'], False)
assert_equal(n1['onion']['reachable'], True)

n2 = networks_dict(self.nodes[2].getnetworkinfo())
for net in ['ipv4','ipv6','onion']:
assert_equal(n2[net]['proxy'], '%s:%i' % (self.conf2.addr))
Expand Down
4 changes: 2 additions & 2 deletions test/functional/interface_rest.py
Original file line number Diff line number Diff line change
Expand Up @@ -186,10 +186,10 @@ def run_test(self):
self.test_rest_request("/getutxos/checkmempool", http_method='POST', req_type=ReqType.JSON, status=400, ret_type=RetType.OBJ)

# Test limits
long_uri = '/'.join(["{}-{}".format(txid, n) for n in range(20)])
long_uri = '/'.join(["{}-{}".format(txid, n_) for n_ in range(20)])
self.test_rest_request("/getutxos/checkmempool/{}".format(long_uri), http_method='POST', status=400, ret_type=RetType.OBJ)

long_uri = '/'.join(['{}-{}'.format(txid, n) for n in range(15)])
long_uri = '/'.join(['{}-{}'.format(txid, n_) for n_ in range(15)])
self.test_rest_request("/getutxos/checkmempool/{}".format(long_uri), http_method='POST', status=200)

self.nodes[0].generate(1) # generate block to not affect upcoming tests
Expand Down
2 changes: 1 addition & 1 deletion test/functional/p2p_mempool.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,6 @@ def run_test(self):

#mininode must be disconnected at this point
assert_equal(len(self.nodes[0].getpeerinfo()), 0)

if __name__ == '__main__':
P2PMempoolTests().main()
6 changes: 3 additions & 3 deletions test/functional/p2p_segwit.py
Original file line number Diff line number Diff line change
Expand Up @@ -450,7 +450,7 @@ def test_witness_block_size(self):
block = self.build_next_block()

assert(len(self.utxo) > 0)

# Create a P2WSH transaction.
# The witness program will be a bunch of OP_2DROP's, followed by OP_TRUE.
# This should give us plenty of room to tweak the spending tx's
Expand Down Expand Up @@ -562,7 +562,7 @@ def test_extra_witness_data(self):
self.log.info("Testing extra witness data in tx")

assert(len(self.utxo) > 0)

block = self.build_next_block()

witness_program = CScript([OP_DROP, OP_TRUE])
Expand Down Expand Up @@ -730,7 +730,7 @@ def test_witness_input_length(self):
witness_program = CScript([OP_DROP, OP_TRUE])
witness_hash = sha256(witness_program)
scriptPubKey = CScript([OP_0, witness_hash])

# Create a transaction that splits our utxo into many outputs
tx = CTransaction()
tx.vin.append(CTxIn(COutPoint(self.utxo[0].sha256, self.utxo[0].n), b""))
Expand Down
12 changes: 7 additions & 5 deletions test/functional/test_framework/socks5.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,14 @@
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
"""Dummy Socks5 server for testing."""

import socket, threading, queue
import socket
import threading
import queue
import logging

logger = logging.getLogger("TestFramework.socks5")

### Protocol constants
# Protocol constants
class Command:
CONNECT = 0x01

Expand All @@ -18,7 +20,7 @@ class AddressType:
DOMAINNAME = 0x03
IPV6 = 0x04

### Utility functions
# Utility functions
def recvall(s, n):
"""Receive n bytes from a socket, or fail."""
rv = bytearray()
Expand All @@ -30,7 +32,7 @@ def recvall(s, n):
n -= len(d)
return rv

### Implementation classes
# Implementation classes
class Socks5Configuration():
"""Proxy configuration."""
def __init__(self):
Expand Down Expand Up @@ -141,7 +143,7 @@ def run(self):
thread = threading.Thread(None, conn.handle)
thread.daemon = True
thread.start()

def start(self):
assert(not self.running)
self.running = True
Expand Down
2 changes: 1 addition & 1 deletion test/functional/wallet_importprunedfunds.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ def run_test(self):
self.nodes[0].generate(101)

self.sync_all()

# address
address1 = self.nodes[0].getnewaddress()
# pubkey
Expand Down
Loading