mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-12-05 10:12:48 +01:00
Merge #12987: tests/tools: Enable additional Python flake8 rules for automatic linting via Travis
643aad17faEnable additional flake8 rules (practicalswift)f020aca297Minor Python cleanups to make flake8 pass with the new rules enabled (practicalswift) Pull request description: Enabled rules: ``` * E242: tab after ',' * E266: too many leading '#' for block comment * E401: multiple imports on one line * E402: module level import not at top of file * E701: multiple statements on one line (colon) * E901: SyntaxError: invalid syntax * E902: TokenError: EOF in multi-line string * F821: undefined name 'Foo' * W293: blank line contains whitespace * W606: 'async' and 'await' are reserved keywords starting with Python 3.7 ``` Note to reviewers: * In general we don't allow whitespace cleanups to existing code, but in order to allow for enabling Travis checking for these rules a few smaller whitespace cleanups had to made as part of this PR. * Use [this `?w=1` link](https://github.com/bitcoin/bitcoin/pull/12987/files?w=1) to show a diff without whitespace changes. Before this commit: ``` $ flake8 -qq --statistics --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 . 5 E266 too many leading '#' for block comment 4 E401 multiple imports on one line 6 E402 module level import not at top of file 5 E701 multiple statements on one line (colon) 1 F812 list comprehension redefines 'n' from line 159 4 F821 undefined name 'ConnectionRefusedError' 28 W293 blank line contains whitespace ``` After this commit: ``` $ flake8 -qq --statistics --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 . $ ``` Tree-SHA512: fc7d5e752298a50d4248afc620ee2c173135b4ca008e48e02913ac968e5a24a5fd5396926047ec62f1d580d537434ccae01f249bb2f3338fa59dc630bf97ca7a
This commit is contained in:
@@ -21,7 +21,8 @@ import argparse
|
||||
import hashlib
|
||||
import subprocess
|
||||
import sys
|
||||
import json,codecs
|
||||
import json
|
||||
import codecs
|
||||
try:
|
||||
from urllib.request import Request,urlopen
|
||||
except:
|
||||
|
||||
@@ -15,6 +15,8 @@
|
||||
# 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
|
||||
@@ -22,7 +24,10 @@
|
||||
# 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"
|
||||
@@ -30,6 +35,8 @@
|
||||
# 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
|
||||
@@ -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 .
|
||||
|
||||
@@ -21,7 +21,6 @@ from binascii import hexlify, unhexlify
|
||||
|
||||
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)]
|
||||
|
||||
@@ -21,7 +21,6 @@ import os.path
|
||||
|
||||
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)]
|
||||
|
||||
@@ -34,7 +34,8 @@ These should be pasted into `src/chainparamsseeds.h`.
|
||||
|
||||
from base64 import b32decode
|
||||
from binascii import a2b_hex
|
||||
import sys, os
|
||||
import sys
|
||||
import os
|
||||
import re
|
||||
|
||||
# ipv4 in ipv6 prefix
|
||||
@@ -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('.')))
|
||||
|
||||
@@ -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
|
||||
@@ -22,11 +27,6 @@ SUSPICIOUS_HOSTS = {
|
||||
"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+)$")
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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]]
|
||||
|
||||
@@ -186,10 +186,10 @@ class RESTTest (BitcoinTestFramework):
|
||||
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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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()
|
||||
@@ -30,7 +32,7 @@ def recvall(s, n):
|
||||
n -= len(d)
|
||||
return rv
|
||||
|
||||
### Implementation classes
|
||||
# Implementation classes
|
||||
class Socks5Configuration():
|
||||
"""Proxy configuration."""
|
||||
def __init__(self):
|
||||
|
||||
@@ -92,7 +92,8 @@ class TxnMallTest(BitcoinTestFramework):
|
||||
# Node0's balance should be starting balance, plus 50BTC for another
|
||||
# matured block, minus tx1 and tx2 amounts, and minus transaction fees:
|
||||
expected = starting_balance + fund_foo_tx["fee"] + fund_bar_tx["fee"]
|
||||
if self.options.mine_block: expected += 50
|
||||
if self.options.mine_block:
|
||||
expected += 50
|
||||
expected += tx1["amount"] + tx1["fee"]
|
||||
expected += tx2["amount"] + tx2["fee"]
|
||||
assert_equal(self.nodes[0].getbalance(), expected)
|
||||
|
||||
@@ -76,7 +76,8 @@ class TxnMallTest(BitcoinTestFramework):
|
||||
# Node0's balance should be starting balance, plus 50BTC for another
|
||||
# matured block, minus 40, minus 20, and minus transaction fees:
|
||||
expected = starting_balance + fund_foo_tx["fee"] + fund_bar_tx["fee"]
|
||||
if self.options.mine_block: expected += 50
|
||||
if self.options.mine_block:
|
||||
expected += 50
|
||||
expected += tx1["amount"] + tx1["fee"]
|
||||
expected += tx2["amount"] + tx2["fee"]
|
||||
assert_equal(self.nodes[0].getbalance(), expected)
|
||||
|
||||
Reference in New Issue
Block a user