py3: remove six

As we are not supporting Python 2 any longer, we can stop using six and
use the equivalent Python 3 method instead.
This commit is contained in:
Ana Maria Martinez Gomez
2021-03-16 10:48:36 +01:00
parent dfb7cf4888
commit 5d341ba078
7 changed files with 14 additions and 18 deletions

View File

@@ -10,7 +10,6 @@ import logging
import datetime
import idc
import six
import idaapi
import idautils
@@ -85,7 +84,7 @@ def get_func_start_ea(ea):
def get_file_md5():
""" """
md5 = idautils.GetInputFileMD5()
if not isinstance(md5, six.string_types):
if not isinstance(md5, str):
md5 = capa.features.bytes_to_str(md5)
return md5
@@ -93,7 +92,7 @@ def get_file_md5():
def get_file_sha256():
""" """
sha256 = idaapi.retrieve_input_file_sha256()
if not isinstance(sha256, six.string_types):
if not isinstance(sha256, str):
sha256 = capa.features.bytes_to_str(sha256)
return sha256

View File

@@ -5,7 +5,6 @@
# Unless required by applicable law or agreed to in writing, software distributed under the License
# is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and limitations under the License.
import six
from PyQt5 import QtCore
from PyQt5.QtCore import Qt
@@ -208,7 +207,7 @@ class CapaExplorerSearchProxyModel(QtCore.QSortFilterProxyModel):
if not data:
continue
if not isinstance(data, six.string_types):
if not isinstance(data, str):
# sanity check: should already be a string, but double check
continue

View File

@@ -8,8 +8,6 @@
import json
import six
import capa.rules
import capa.engine
@@ -249,7 +247,7 @@ class CapaJsonObjectEncoder(json.JSONEncoder):
"""JSON encoder that emits Python sets as sorted lists"""
def default(self, obj):
if isinstance(obj, (list, dict, int, float, bool, type(None))) or isinstance(obj, six.string_types):
if isinstance(obj, (list, dict, int, float, bool, type(None))) or isinstance(obj, str):
return json.JSONEncoder.default(self, obj)
elif isinstance(obj, set):
return list(sorted(obj))

View File

@@ -8,7 +8,6 @@
import collections
import six
import tabulate
import capa.render.utils as rutils

View File

@@ -6,7 +6,8 @@
# is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and limitations under the License.
import six
import io
import termcolor
@@ -49,7 +50,7 @@ def capability_rules(doc):
yield rule
class StringIO(six.StringIO):
class StringIO(io.StringIO):
def writeln(self, s):
self.write(s)
self.write("\n")

View File

@@ -18,7 +18,8 @@ try:
except ImportError:
from backports.functools_lru_cache import lru_cache
import six
import io
import yaml
import ruamel.yaml
@@ -244,7 +245,7 @@ def parse_description(s, value_type, description=None):
"""
s can be an int or a string
"""
if value_type != "string" and isinstance(s, six.string_types) and DESCRIPTION_SEPARATOR in s:
if value_type != "string" and isinstance(s, str) and DESCRIPTION_SEPARATOR in s:
if description:
raise InvalidRule(
'unexpected value: "%s", only one description allowed (inline description with `%s`)'
@@ -256,7 +257,7 @@ def parse_description(s, value_type, description=None):
else:
value = s
if isinstance(value, six.string_types):
if isinstance(value, str):
if value_type == "bytes":
try:
value = codecs.decode(value.replace(" ", ""), "hex")
@@ -406,7 +407,7 @@ def build_statements(d, scope):
return Range(feature, min=min, max=max, description=description)
else:
raise InvalidRule("unexpected range: %s" % (count))
elif key == "string" and not isinstance(d[key], six.string_types):
elif key == "string" and not isinstance(d[key], str):
raise InvalidRule("ambiguous string value %s, must be defined as explicit string" % d[key])
else:
Feature = parse_feature(key)
@@ -699,7 +700,7 @@ class Rule(object):
for key in hidden_meta.keys():
del meta[key]
ostream = six.BytesIO()
ostream = io.BytesIO()
self._get_ruamel_yaml_parser().dump(definition, ostream)
for key, value in hidden_meta.items():
@@ -938,7 +939,7 @@ class RuleSet(object):
rules_filtered = set([])
for rule in rules:
for k, v in rule.meta.items():
if isinstance(v, six.string_types) and tag in v:
if isinstance(v, str) and tag in v:
logger.debug('using rule "%s" and dependencies, found tag in meta.%s: %s', rule.name, k, v)
rules_filtered.update(set(capa.rules.get_rules_and_dependencies(rules, rule.name)))
break

View File

@@ -12,7 +12,6 @@ import sys
import setuptools
requirements = [
"six==1.15.0",
"tqdm==4.60.0",
"pyyaml==5.4.1",
"tabulate==0.8.9",