commit d4998ded0018302c6c36b186fe4de4f19270e8d8
Author: Damian Johnson <atagar(a)torproject.org>
Date: Thu Mar 26 16:18:17 2020 -0700
Fix static checks
I didn't install pycodestyle and pyflakes when upgrading to python 3.7 so quite
a few regressions slipped in.
---
stem/exit_policy.py | 2 --
stem/response/events.py | 1 -
stem/util/ed25519.py | 25 +++-------------------
stem/util/enum.py | 2 --
stem/util/str_tools.py | 22 +++++++------------
test/integ/control/controller.py | 1 -
test/settings.cfg | 11 +++++++++-
test/unit/client/size.py | 1 -
test/unit/descriptor/extrainfo_descriptor.py | 1 -
test/unit/descriptor/hidden_service_v3.py | 2 --
test/unit/descriptor/microdescriptor.py | 1 -
.../networkstatus/directory_authority.py | 2 --
test/unit/descriptor/networkstatus/document_v2.py | 2 --
.../descriptor/networkstatus/key_certificate.py | 1 -
test/unit/descriptor/remote.py | 1 -
test/unit/descriptor/router_status_entry.py | 1 -
test/unit/doctest.py | 1 -
test/unit/exit_policy/policy.py | 2 --
test/unit/tutorial_examples.py | 3 ---
19 files changed, 21 insertions(+), 61 deletions(-)
diff --git a/stem/exit_policy.py b/stem/exit_policy.py
index f67e9f82..ddcd7dfd 100644
--- a/stem/exit_policy.py
+++ b/stem/exit_policy.py
@@ -64,8 +64,6 @@ exiting to a destination is permissible or not. For instance...
"""
import functools
-import re
-import socket
import zlib
import stem.util
diff --git a/stem/response/events.py b/stem/response/events.py
index 542c0f22..fdd17a25 100644
--- a/stem/response/events.py
+++ b/stem/response/events.py
@@ -766,7 +766,6 @@ class NewConsensusEvent(Event):
:returns: **list** of :class:`~stem.descriptor.router_status_entry.RouterStatusEntryV3`
"""
-
if self._parsed is None:
self._parsed = list(stem.descriptor.router_status_entry._parse_file(
io.BytesIO(str_tools._to_bytes(self.consensus_content)),
diff --git a/stem/util/ed25519.py b/stem/util/ed25519.py
index 67b2db3c..7c0161dc 100644
--- a/stem/util/ed25519.py
+++ b/stem/util/ed25519.py
@@ -41,33 +41,14 @@ arithmetic, so we cannot handle secrets without risking their disclosure.
import hashlib
import operator
-import sys
__version__ = "1.0.dev0"
-
-# Useful for very coarse version differentiation.
-PY3 = sys.version_info[0] == 3
-
-if PY3:
- indexbytes = operator.getitem
- intlist2bytes = bytes
- int2byte = operator.methodcaller("to_bytes", 1, "big")
-else:
- int2byte = chr
- range = xrange
-
- def indexbytes(buf, i):
- return ord(buf[i])
-
- def intlist2bytes(l):
- return b"".join(chr(c) for c in l)
-
-
b = 256
q = 2 ** 255 - 19
l = 2 ** 252 + 27742317777372353535851937790883648493
+int2byte = operator.methodcaller("to_bytes", 1, "big")
def H(m):
@@ -223,7 +204,7 @@ def encodepoint(P):
def bit(h, i):
- return (indexbytes(h, i // 8) >> (i % 8)) & 1
+ return (operator.getitem(h, i // 8) >> (i % 8)) & 1
def publickey_unsafe(sk):
@@ -252,7 +233,7 @@ def signature_unsafe(m, sk, pk):
h = H(sk)
a = 2 ** (b - 2) + sum(2 ** i * bit(h, i) for i in range(3, b - 2))
r = Hint(
- intlist2bytes([indexbytes(h, j) for j in range(b // 8, b // 4)]) + m
+ bytes([operator.getitem(h, j) for j in range(b // 8, b // 4)]) + m
)
R = scalarmult_B(r)
S = (r + Hint(encodepoint(R) + pk + m) * a) % l
diff --git a/stem/util/enum.py b/stem/util/enum.py
index abaf2490..56bf119d 100644
--- a/stem/util/enum.py
+++ b/stem/util/enum.py
@@ -40,8 +40,6 @@ constructed as simple type listings...
+- __iter__ - iterator over our enum keys
"""
-import stem.util
-
def UppercaseEnum(*args):
"""
diff --git a/stem/util/str_tools.py b/stem/util/str_tools.py
index 8ce22dc9..c1285626 100644
--- a/stem/util/str_tools.py
+++ b/stem/util/str_tools.py
@@ -56,18 +56,6 @@ TIME_UNITS = (
_timestamp_re = re.compile(r'(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})')
-def _to_bytes_impl(msg):
- if isinstance(msg, str):
- return codecs.latin_1_encode(msg, 'replace')[0]
- else:
- return msg
-
-def _to_unicode_impl(msg):
- if msg is not None and not isinstance(msg, str):
- return msg.decode('utf-8', 'replace')
- else:
- return msg
-
def _to_bytes(msg):
"""
@@ -82,7 +70,10 @@ def _to_bytes(msg):
:returns: ASCII bytes for string
"""
- return _to_bytes_impl(msg)
+ if isinstance(msg, str):
+ return codecs.latin_1_encode(msg, 'replace')[0]
+ else:
+ return msg
def _to_unicode(msg):
@@ -96,7 +87,10 @@ def _to_unicode(msg):
:returns: unicode conversion
"""
- return _to_unicode_impl(msg)
+ if msg is not None and not isinstance(msg, str):
+ return msg.decode('utf-8', 'replace')
+ else:
+ return msg
def _decode_b64(msg):
diff --git a/test/integ/control/controller.py b/test/integ/control/controller.py
index 5e92bfd7..8b8b3205 100644
--- a/test/integ/control/controller.py
+++ b/test/integ/control/controller.py
@@ -26,7 +26,6 @@ import test.runner
from stem import Flag, Signal
from stem.control import EventType, Listener, State
from stem.exit_policy import ExitPolicy
-from stem.version import Requirement
# Router status entry for a relay with a nickname other than 'Unnamed'. This is
# used for a few tests that need to look up a relay.
diff --git a/test/settings.cfg b/test/settings.cfg
index d796993a..38a37ef9 100644
--- a/test/settings.cfg
+++ b/test/settings.cfg
@@ -205,10 +205,19 @@ pyflakes.ignore stem/util/__init__.py => undefined name 'unicode'
pyflakes.ignore stem/util/conf.py => undefined name 'unicode'
pyflakes.ignore stem/util/test_tools.py => 'pyflakes' imported but unused
pyflakes.ignore stem/util/test_tools.py => 'pycodestyle' imported but unused
+pyflakes.ignore test/__init__.py => undefined name 'test'
+pyflakes.ignore test/require.py => 'cryptography.utils.int_from_bytes' imported but unused
+pyflakes.ignore test/require.py => 'cryptography.utils.int_to_bytes' imported but unused
+pyflakes.ignore test/require.py => 'cryptography.hazmat.backends.default_backend' imported but unused
+pyflakes.ignore test/require.py => 'cryptography.hazmat.primitives.ciphers.algorithms' imported but unused
+pyflakes.ignore test/require.py => 'cryptography.hazmat.primitives.ciphers.Cipher' imported but unused
+pyflakes.ignore test/require.py => 'cryptography.hazmat.primitives.ciphers.modes' imported but unused
+pyflakes.ignore test/require.py => 'cryptography.hazmat.primitives.serialization.load_der_public_key' imported but unused
+pyflakes.ignore test/require.py => 'cryptography.hazmat.primitives.asymmetric.ed25519.Ed25519PublicKey' imported but unused
pyflakes.ignore test/unit/response/events.py => 'from stem import *' used; unable to detect undefined names
pyflakes.ignore test/unit/response/events.py => *may be undefined, or defined from star imports: stem
pyflakes.ignore stem/util/str_tools.py => undefined name 'unicode'
-pyflakes.ignore test/__init__.py => undefined name 'test'
+pyflakes.ignore test/integ/interpreter.py => 'readline' imported but unused
# Test modules we want to run. Modules are roughly ordered by the dependencies
# so the lowest level tests come first. This is because a problem in say,
diff --git a/test/unit/client/size.py b/test/unit/client/size.py
index d3bb4a4a..ae171501 100644
--- a/test/unit/client/size.py
+++ b/test/unit/client/size.py
@@ -2,7 +2,6 @@
Unit tests for stem.client.Size.
"""
-import re
import unittest
from stem.client.datatype import Size
diff --git a/test/unit/descriptor/extrainfo_descriptor.py b/test/unit/descriptor/extrainfo_descriptor.py
index 2dae4de7..793a8129 100644
--- a/test/unit/descriptor/extrainfo_descriptor.py
+++ b/test/unit/descriptor/extrainfo_descriptor.py
@@ -7,7 +7,6 @@ import functools
import unittest
import stem.descriptor
-import test.require
from stem.descriptor.extrainfo_descriptor import (
RelayExtraInfoDescriptor,
diff --git a/test/unit/descriptor/hidden_service_v3.py b/test/unit/descriptor/hidden_service_v3.py
index c24eb1ad..33c4da21 100644
--- a/test/unit/descriptor/hidden_service_v3.py
+++ b/test/unit/descriptor/hidden_service_v3.py
@@ -13,8 +13,6 @@ import stem.descriptor.hidden_service
import test.require
-from unittest.mock import patch, Mock
-
from stem.descriptor.hidden_service import (
IntroductionPointV3,
HiddenServiceDescriptorV3,
diff --git a/test/unit/descriptor/microdescriptor.py b/test/unit/descriptor/microdescriptor.py
index b0b8ebaf..e70b7307 100644
--- a/test/unit/descriptor/microdescriptor.py
+++ b/test/unit/descriptor/microdescriptor.py
@@ -6,7 +6,6 @@ import unittest
import stem.descriptor
import stem.exit_policy
-import test.require
from stem.descriptor.microdescriptor import Microdescriptor
from test.unit.descriptor import get_resource
diff --git a/test/unit/descriptor/networkstatus/directory_authority.py b/test/unit/descriptor/networkstatus/directory_authority.py
index 6153aa64..d4bb9905 100644
--- a/test/unit/descriptor/networkstatus/directory_authority.py
+++ b/test/unit/descriptor/networkstatus/directory_authority.py
@@ -4,8 +4,6 @@ Unit tests for the DirectoryAuthority of stem.descriptor.networkstatus.
import unittest
-import test.require
-
from stem.descriptor.networkstatus import (
DirectoryAuthority,
KeyCertificate,
diff --git a/test/unit/descriptor/networkstatus/document_v2.py b/test/unit/descriptor/networkstatus/document_v2.py
index 7fb96328..6ab0606b 100644
--- a/test/unit/descriptor/networkstatus/document_v2.py
+++ b/test/unit/descriptor/networkstatus/document_v2.py
@@ -5,8 +5,6 @@ Unit tests for the NetworkStatusDocumentV2 of stem.descriptor.networkstatus.
import datetime
import unittest
-import test.require
-
from stem.descriptor.networkstatus import NetworkStatusDocumentV2
from test.unit.descriptor import get_resource
diff --git a/test/unit/descriptor/networkstatus/key_certificate.py b/test/unit/descriptor/networkstatus/key_certificate.py
index ee5cd92c..21453a36 100644
--- a/test/unit/descriptor/networkstatus/key_certificate.py
+++ b/test/unit/descriptor/networkstatus/key_certificate.py
@@ -6,7 +6,6 @@ import datetime
import unittest
import stem.descriptor
-import test.require
from stem.descriptor.networkstatus import KeyCertificate
from test.unit.descriptor import get_resource
diff --git a/test/unit/descriptor/remote.py b/test/unit/descriptor/remote.py
index d3f43995..e57da92b 100644
--- a/test/unit/descriptor/remote.py
+++ b/test/unit/descriptor/remote.py
@@ -3,7 +3,6 @@ Unit tests for stem.descriptor.remote.
"""
import http.client
-import io
import socket
import time
import unittest
diff --git a/test/unit/descriptor/router_status_entry.py b/test/unit/descriptor/router_status_entry.py
index 4b2837b8..1fafd2c8 100644
--- a/test/unit/descriptor/router_status_entry.py
+++ b/test/unit/descriptor/router_status_entry.py
@@ -8,7 +8,6 @@ import functools
import unittest
import stem.descriptor
-import test.require
from stem import Flag
from stem.exit_policy import MicroExitPolicy
diff --git a/test/unit/doctest.py b/test/unit/doctest.py
index 267d2ca5..40791cf3 100644
--- a/test/unit/doctest.py
+++ b/test/unit/doctest.py
@@ -119,7 +119,6 @@ class TestDocumentation(unittest.TestCase):
test_run = doctest.testfile(path, **args)
elif path.endswith('/stem/manual.py'):
try:
- import sqlite3
test_run = doctest.testfile(path, **args)
except ImportError:
pass # manual module requires sqlite3
diff --git a/test/unit/exit_policy/policy.py b/test/unit/exit_policy/policy.py
index f1e74aeb..fede80ac 100644
--- a/test/unit/exit_policy/policy.py
+++ b/test/unit/exit_policy/policy.py
@@ -5,8 +5,6 @@ Unit tests for the stem.exit_policy.ExitPolicy class.
import pickle
import unittest
-from unittest.mock import Mock, patch
-
from stem.exit_policy import (
DEFAULT_POLICY_RULES,
ExitPolicy,
diff --git a/test/unit/tutorial_examples.py b/test/unit/tutorial_examples.py
index fccdba57..5ccf1ce2 100644
--- a/test/unit/tutorial_examples.py
+++ b/test/unit/tutorial_examples.py
@@ -7,9 +7,6 @@ import itertools
import os
import unittest
-import stem.response
-import stem.descriptor.remote
-
from unittest.mock import Mock, patch
from stem.control import Controller