mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-06-11 07:09:29 +02:00
contrib: Use text=True in subprocess over manual encoding handling
All touched Python scripts already assume and require UTF8, so manually specifying encoding or decoding for functions in the subprocess module is redundant to just using text=True, which exists since Python 3.7
This commit is contained in:
@@ -1,13 +1,11 @@
|
||||
#!/usr/bin/env python3
|
||||
# Copyright (c) 2015-2022 The Bitcoin Core developers
|
||||
# Copyright (c) 2015-present The Bitcoin Core developers
|
||||
# Distributed under the MIT software license, see the accompanying
|
||||
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
'''
|
||||
This checks if all command line args are documented.
|
||||
Return value is 0 to indicate no error.
|
||||
|
||||
Author: @MarcoFalke
|
||||
'''
|
||||
|
||||
from subprocess import check_output
|
||||
@@ -27,8 +25,8 @@ SET_DOC_OPTIONAL = set(['-h', '-?', '-dbcrashratio', '-forcecompactdb', '-ipccon
|
||||
|
||||
|
||||
def lint_missing_argument_documentation():
|
||||
used = check_output(CMD_GREP_ARGS, shell=True).decode('utf8').strip()
|
||||
docd = check_output(CMD_GREP_DOCS, shell=True).decode('utf8').strip()
|
||||
used = check_output(CMD_GREP_ARGS, shell=True, text=True).strip()
|
||||
docd = check_output(CMD_GREP_DOCS, shell=True, text=True).strip()
|
||||
|
||||
args_used = set(re.findall(re.compile(REGEX_ARG), used))
|
||||
args_docd = set(re.findall(re.compile(REGEX_DOC), docd)).union(SET_DOC_OPTIONAL)
|
||||
@@ -46,8 +44,8 @@ def lint_missing_argument_documentation():
|
||||
|
||||
|
||||
def lint_missing_hidden_wallet_args():
|
||||
wallet_args = check_output(CMD_GREP_WALLET_ARGS, shell=True).decode('utf8').strip()
|
||||
wallet_hidden_args = check_output(CMD_GREP_WALLET_HIDDEN_ARGS, shell=True).decode('utf8').strip()
|
||||
wallet_args = check_output(CMD_GREP_WALLET_ARGS, shell=True, text=True).strip()
|
||||
wallet_hidden_args = check_output(CMD_GREP_WALLET_HIDDEN_ARGS, shell=True, text=True).strip()
|
||||
|
||||
wallet_args = set(re.findall(re.compile(REGEX_DOC), wallet_args))
|
||||
wallet_hidden_args = set(re.findall(re.compile(r' "([^"=]+)'), wallet_hidden_args))
|
||||
|
||||
@@ -76,7 +76,7 @@ def get_git_file_metadata() -> dict[str, FileMeta]:
|
||||
'''
|
||||
Return a dictionary mapping the name of all files in the repository to git tree metadata.
|
||||
'''
|
||||
files_raw = check_output(CMD_ALL_FILES).decode("utf8").rstrip("\0").split("\0")
|
||||
files_raw = check_output(CMD_ALL_FILES, text=True).rstrip("\0").split("\0")
|
||||
files = {}
|
||||
for file_spec in files_raw:
|
||||
meta = FileMeta(file_spec)
|
||||
@@ -169,7 +169,7 @@ def check_shebang_file_permissions(files_meta) -> int:
|
||||
"""
|
||||
Checks every file that contains a shebang line to ensure it has an executable permission
|
||||
"""
|
||||
filenames = check_output(CMD_SHEBANG_FILES).decode("utf8").strip().split("\n")
|
||||
filenames = check_output(CMD_SHEBANG_FILES, text=True).strip().split("\n")
|
||||
|
||||
# The git grep command we use returns files which contain a shebang on any line within the file
|
||||
# so we need to filter the list to only files with the shebang on the first line
|
||||
@@ -198,7 +198,7 @@ def check_shebang_file_permissions(files_meta) -> int:
|
||||
|
||||
|
||||
def main() -> NoReturn:
|
||||
root_dir = check_output(CMD_TOP_LEVEL).decode("utf8").strip()
|
||||
root_dir = check_output(CMD_TOP_LEVEL, text=True).strip()
|
||||
os.chdir(root_dir)
|
||||
|
||||
files = get_git_file_metadata()
|
||||
|
||||
@@ -31,7 +31,7 @@ def _get_header_file_lst() -> list[str]:
|
||||
"""
|
||||
git_cmd_lst = ['git', 'ls-files', '--', '*.h']
|
||||
header_file_lst = check_output(
|
||||
git_cmd_lst).decode('utf-8').splitlines()
|
||||
git_cmd_lst, text=True).splitlines()
|
||||
|
||||
header_file_lst = [hf for hf in header_file_lst
|
||||
if not any(ef in hf for ef
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#!/usr/bin/env python3
|
||||
#
|
||||
# Copyright (c) 2022 The Bitcoin Core developers
|
||||
# Copyright (c) 2022-present The Bitcoin Core developers
|
||||
# Distributed under the MIT software license, see the accompanying
|
||||
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
@@ -24,15 +24,15 @@ def check_vulture_install():
|
||||
def main():
|
||||
check_vulture_install()
|
||||
|
||||
files = check_output(FILES_ARGS).decode("utf-8").splitlines()
|
||||
files = check_output(FILES_ARGS, text=True).splitlines()
|
||||
# --min-confidence 100 will only report code that is guaranteed to be unused within the analyzed files.
|
||||
# Any value below 100 introduces the risk of false positives, which would create an unacceptable maintenance burden.
|
||||
vulture_args = ['vulture', '--min-confidence=100'] + files
|
||||
|
||||
try:
|
||||
check_output(vulture_args, stderr=STDOUT)
|
||||
check_output(vulture_args, stderr=STDOUT, text=True)
|
||||
except CalledProcessError as e:
|
||||
print(e.output.decode("utf-8"), end="")
|
||||
print(e.output, end="")
|
||||
print("Python dead code detection found some issues")
|
||||
exit(1)
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#!/usr/bin/env python3
|
||||
#
|
||||
# Copyright (c) 2022 The Bitcoin Core developers
|
||||
# Copyright (c) 2022-present The Bitcoin Core developers
|
||||
# Distributed under the MIT software license, see the accompanying
|
||||
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
@@ -37,7 +37,7 @@ def check_dependencies():
|
||||
def main():
|
||||
check_dependencies()
|
||||
|
||||
mypy_files = subprocess.check_output(MYPY_FILES_ARGS).decode("utf-8").splitlines()
|
||||
mypy_files = subprocess.check_output(MYPY_FILES_ARGS, text=True).splitlines()
|
||||
mypy_args = ['mypy', '--show-error-codes'] + mypy_files
|
||||
|
||||
try:
|
||||
|
||||
@@ -27,10 +27,10 @@ def get_shell_files_list():
|
||||
'*.sh',
|
||||
]
|
||||
try:
|
||||
return subprocess.check_output(command, stderr = subprocess.STDOUT).decode('utf-8').splitlines()
|
||||
return subprocess.check_output(command, stderr = subprocess.STDOUT, text=True).splitlines()
|
||||
except subprocess.CalledProcessError as e:
|
||||
if e.returncode > 1: # return code is 1 when match is empty
|
||||
print(e.output.decode('utf-8'), end='')
|
||||
print(e.output, end='')
|
||||
sys.exit(1)
|
||||
return []
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#!/usr/bin/env python3
|
||||
#
|
||||
# Copyright (c) 2022 The Bitcoin Core developers
|
||||
# Copyright (c) 2022-present The Bitcoin Core developers
|
||||
# Distributed under the MIT software license, see the accompanying
|
||||
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
@@ -29,13 +29,13 @@ def check_codespell_install():
|
||||
def main():
|
||||
check_codespell_install()
|
||||
|
||||
files = check_output(FILES_ARGS).decode("utf-8").splitlines()
|
||||
files = check_output(FILES_ARGS, text=True).splitlines()
|
||||
codespell_args = ['codespell', '--check-filenames', '--disable-colors', '--quiet-level=7', '--ignore-words={}'.format(IGNORE_WORDS_FILE)] + files
|
||||
|
||||
try:
|
||||
check_output(codespell_args, stderr=STDOUT)
|
||||
check_output(codespell_args, stderr=STDOUT, text=True)
|
||||
except CalledProcessError as e:
|
||||
print(e.output.decode("utf-8"), end="")
|
||||
print(e.output, end="")
|
||||
print('^ Warning: codespell identified likely spelling errors. Any false positives? Add them to the list of ignored words in {}'.format(IGNORE_WORDS_FILE))
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#!/usr/bin/env python3
|
||||
#
|
||||
# Copyright (c) 2022 The Bitcoin Core developers
|
||||
# Copyright (c) 2022-present The Bitcoin Core developers
|
||||
# Distributed under the MIT software license, see the accompanying
|
||||
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
@@ -13,7 +13,7 @@ import sys
|
||||
|
||||
def main():
|
||||
submodules_list = subprocess.check_output(['git', 'submodule', 'status', '--recursive'],
|
||||
text = True, encoding = 'utf8').rstrip('\n')
|
||||
text = True).rstrip('\n')
|
||||
if submodules_list:
|
||||
print("These submodules were found, delete them:\n", submodules_list)
|
||||
sys.exit(1)
|
||||
|
||||
Reference in New Issue
Block a user