summaryrefslogtreecommitdiff
path: root/grc
diff options
context:
space:
mode:
Diffstat (limited to 'grc')
-rw-r--r--grc/converter/main.py8
-rw-r--r--grc/core/blocks/_flags.py7
-rw-r--r--grc/core/blocks/block.py44
-rw-r--r--grc/core/cache.py8
-rw-r--r--grc/core/generator/FlowGraphProxy.py4
-rw-r--r--grc/core/generator/cpp_hier_block.py3
-rw-r--r--grc/core/generator/hier_block.py3
-rw-r--r--grc/core/io/yaml.py5
-rw-r--r--grc/core/params/dtypes.py7
-rw-r--r--grc/core/params/param.py9
-rw-r--r--grc/core/platform.py17
-rw-r--r--grc/core/schema_checker/block.py64
-rw-r--r--grc/core/schema_checker/domain.py14
-rw-r--r--grc/core/schema_checker/flow_graph.py10
-rw-r--r--grc/core/schema_checker/utils.py5
-rw-r--r--grc/core/schema_checker/validator.py8
-rw-r--r--grc/core/utils/__init__.py7
-rw-r--r--grc/core/utils/descriptors/evaluated.py9
-rw-r--r--grc/core/utils/epy_block_io.py5
-rw-r--r--grc/core/utils/expr_utils.py4
-rw-r--r--grc/core/utils/extract_docs.py6
-rw-r--r--grc/gui/Actions.py1
-rw-r--r--grc/gui/BlockTreeWindow.py6
-rw-r--r--grc/gui/Config.py3
-rw-r--r--grc/gui/ParserErrorsDialog.py4
-rw-r--r--grc/gui/PropsDialog.py3
-rw-r--r--grc/gui/Utils.py12
-rw-r--r--grc/gui/canvas/block.py12
-rw-r--r--grc/gui/canvas/drawable.py2
-rw-r--r--grc/gui/canvas/flowgraph.py2
30 files changed, 112 insertions, 180 deletions
diff --git a/grc/converter/main.py b/grc/converter/main.py
index 5ba2454a98..c5da997407 100644
--- a/grc/converter/main.py
+++ b/grc/converter/main.py
@@ -2,7 +2,7 @@
# This file is part of GNU Radio
#
# SPDX-License-Identifier: GPL-2.0-or-later
-#
+#
from codecs import open
@@ -10,8 +10,6 @@ import json
import logging
import os
-import six
-
from . import block_tree, block
path = os.path
@@ -149,10 +147,8 @@ class Converter(object):
def byteify(data):
if isinstance(data, dict):
- return {byteify(key): byteify(value) for key, value in six.iteritems(data)}
+ return {byteify(key): byteify(value) for key, value in data.items()}
elif isinstance(data, list):
return [byteify(element) for element in data]
- elif isinstance(data, six.text_type) and six.PY2:
- return data.encode('utf-8')
else:
return data
diff --git a/grc/core/blocks/_flags.py b/grc/core/blocks/_flags.py
index a1bc7041d2..335b47a915 100644
--- a/grc/core/blocks/_flags.py
+++ b/grc/core/blocks/_flags.py
@@ -2,10 +2,7 @@
# This file is part of GNU Radio
#
# SPDX-License-Identifier: GPL-2.0-or-later
-#
-
-
-import six
+#
class Flags(object):
@@ -22,7 +19,7 @@ class Flags(object):
def __init__(self, flags=None):
if flags is None:
flags = set()
- if isinstance(flags, six.string_types):
+ if isinstance(flags, str):
flags = (f.strip() for f in flags.replace(',', '').split())
self.data = set(flags)
diff --git a/grc/core/blocks/block.py b/grc/core/blocks/block.py
index 8cd0e3e926..d3c0ad833e 100644
--- a/grc/core/blocks/block.py
+++ b/grc/core/blocks/block.py
@@ -11,8 +11,6 @@ import collections
import itertools
import copy
-import six
-from six.moves import range
import re
import ast
@@ -78,10 +76,10 @@ class Block(Element):
self.block_namespace = {}
if Flags.HAS_CPP in self.flags and self.enabled and not (self.is_virtual_source() or self.is_virtual_sink()):
- # This is a workaround to allow embedded python blocks/modules to load as there is
+ # This is a workaround to allow embedded python blocks/modules to load as there is
# currently 'cpp' in the flags by default caused by the other built-in blocks
if hasattr(self,'cpp_templates'):
- self.orig_cpp_templates = self.cpp_templates # The original template, in case we have to edit it when transpiling to C++
+ self.orig_cpp_templates = self.cpp_templates # The original template, in case we have to edit it when transpiling to C++
self.current_bus_structure = {'source': None, 'sink': None}
@@ -148,7 +146,7 @@ class Block(Element):
###############################
## Bus Logic
###############################
-
+
for direc in {'source','sink'}:
if direc == 'source':
ports = self.sources
@@ -156,7 +154,7 @@ class Block(Element):
bus_state = self.bus_source
else:
ports = self.sinks
- ports_gui = self.filter_bus_port(self.sinks)
+ ports_gui = self.filter_bus_port(self.sinks)
bus_state = self.bus_sink
# Remove the bus ports
@@ -176,7 +174,7 @@ class Block(Element):
self.current_bus_structure[direc] = struct
# Hide ports that are not part of the bus structure
- #TODO: Blocks where it is desired to only have a subset
+ #TODO: Blocks where it is desired to only have a subset
# of ports included in the bus still has some issues
for idx, port in enumerate(ports):
if any([idx in bus for bus in self.current_bus_structure[direc]]):
@@ -194,12 +192,12 @@ class Block(Element):
if port.key == saved_port.key:
self.parent_flowgraph.connections.remove(connection)
if saved_port.is_source:
- connection.source_port = port
+ connection.source_port = port
if saved_port.is_sink:
- connection.sink_port = port
+ connection.sink_port = port
self.parent_flowgraph.connections.add(connection)
-
+
else:
self.current_bus_structure[direc] = None
@@ -358,7 +356,7 @@ class Block(Element):
@property
def bus_structure_source(self):
"""Gets the block's current source bus structure."""
- try:
+ try:
bus_structure = self.params['bus_structure_source'].value or None
except:
bus_structure = None
@@ -367,7 +365,7 @@ class Block(Element):
@property
def bus_structure_sink(self):
"""Gets the block's current source bus structure."""
- try:
+ try:
bus_structure = self.params['bus_structure_sink'].value or None
except:
bus_structure = None
@@ -447,7 +445,7 @@ class Block(Element):
if _vtype == bool:
return 'bool'
-
+
if _vtype == complex:
return 'gr_complex'
@@ -474,11 +472,11 @@ class Block(Element):
# Get the lvalue type
self.vtype = get_type(value, py_type)
-
+
# The r-value for these types must be transformed to create legal C++ syntax.
if self.vtype in ['bool', 'gr_complex'] or 'std::map' in self.vtype or 'std::vector' in self.vtype:
evaluated = ast.literal_eval(value)
- self.cpp_templates['var_make'] = self.cpp_templates['var_make'].replace('${value}', self.get_cpp_value(evaluated))
+ self.cpp_templates['var_make'] = self.cpp_templates['var_make'].replace('${value}', self.get_cpp_value(evaluated))
if 'string' in self.vtype:
self.cpp_templates['includes'].append('#include <string>')
@@ -494,7 +492,7 @@ class Block(Element):
if re.match(pi_re, str(pyval)):
val_str = re.sub(pi_re, 'boost::math::constants::pi<double>()', val_str)
self.cpp_templates['includes'].append('#include <boost/math/constants/constants.hpp>')
-
+
return str(pyval)
elif type(pyval) == bool:
@@ -514,7 +512,7 @@ class Block(Element):
if len(val_str) > 1:
# truncate to trim superfluous ', ' from the end
val_str = val_str[0:-2]
-
+
return val_str + '}'
elif type(pyval) == dict:
@@ -531,7 +529,7 @@ class Block(Element):
if type(self.vtype) == str:
self.cpp_templates['includes'].append('#include <string>')
- return '"' + pyval + '"'
+ return '"' + pyval + '"'
def is_virtual_sink(self):
@@ -578,7 +576,7 @@ class Block(Element):
return itertools.chain(self.active_sources, self.active_sinks)
def children(self):
- return itertools.chain(six.itervalues(self.params), self.ports())
+ return itertools.chain(self.params.values(), self.ports())
##############################################
# Access
@@ -596,12 +594,12 @@ class Block(Element):
@property
def namespace(self):
# update block namespace
- self.block_namespace.update({key:param.get_evaluated() for key, param in six.iteritems(self.params)})
+ self.block_namespace.update({key:param.get_evaluated() for key, param in self.params.items()})
return self.block_namespace
@property
def namespace_templates(self):
- return {key: param.template_arg for key, param in six.iteritems(self.params)}
+ return {key: param.template_arg for key, param in self.params.items()}
def evaluate(self, expr):
return self.parent_flowgraph.evaluate(expr, self.namespace)
@@ -642,7 +640,7 @@ class Block(Element):
pre_rewrite_hash = -1
while pre_rewrite_hash != get_hash():
- for key, value in six.iteritems(parameters):
+ for key, value in parameters.items():
try:
self.params[key].set_value(value)
except KeyError:
@@ -650,7 +648,7 @@ class Block(Element):
# Store hash and call rewrite
pre_rewrite_hash = get_hash()
self.rewrite()
-
+
##############################################
# Controller Modify
##############################################
diff --git a/grc/core/cache.py b/grc/core/cache.py
index bda84368f8..fbcf200e70 100644
--- a/grc/core/cache.py
+++ b/grc/core/cache.py
@@ -2,7 +2,7 @@
# This file is part of GNU Radio
#
# SPDX-License-Identifier: GPL-2.0-or-later
-#
+#
from io import open
@@ -10,8 +10,6 @@ import json
import logging
import os
-import six
-
from .io import yaml
logger = logging.getLogger(__name__)
@@ -79,10 +77,8 @@ class Cache(object):
def byteify(data):
if isinstance(data, dict):
- return {byteify(key): byteify(value) for key, value in six.iteritems(data)}
+ return {byteify(key): byteify(value) for key, value in data.items()}
elif isinstance(data, list):
return [byteify(element) for element in data]
- elif isinstance(data, six.text_type) and six.PY2:
- return data.encode('utf-8')
else:
return data
diff --git a/grc/core/generator/FlowGraphProxy.py b/grc/core/generator/FlowGraphProxy.py
index 9469cc3728..f39f25d8fe 100644
--- a/grc/core/generator/FlowGraphProxy.py
+++ b/grc/core/generator/FlowGraphProxy.py
@@ -2,10 +2,8 @@
# This file is part of GNU Radio
#
# SPDX-License-Identifier: GPL-2.0-or-later
-#
-
+#
-from six.moves import range
from ..utils import expr_utils
from operator import methodcaller, attrgetter
diff --git a/grc/core/generator/cpp_hier_block.py b/grc/core/generator/cpp_hier_block.py
index 9cee410810..9eef19cc1e 100644
--- a/grc/core/generator/cpp_hier_block.py
+++ b/grc/core/generator/cpp_hier_block.py
@@ -1,7 +1,6 @@
import collections
import os
-import six
import codecs
from .cpp_top_block import CppTopBlockGenerator
@@ -174,7 +173,7 @@ class CppQtHierBlockGenerator(CppHierBlockGenerator):
block_n = collections.OrderedDict()
# insert flags after category
- for key, value in six.iteritems(n['block']):
+ for key, value in n['block'].items():
block_n[key] = value
if key == 'category':
block_n['flags'] = 'need_qt_gui'
diff --git a/grc/core/generator/hier_block.py b/grc/core/generator/hier_block.py
index 16060f8e30..49fc036bbf 100644
--- a/grc/core/generator/hier_block.py
+++ b/grc/core/generator/hier_block.py
@@ -1,7 +1,6 @@
import collections
import os
-import six
import codecs
from .top_block import TopBlockGenerator
@@ -147,7 +146,7 @@ class QtHierBlockGenerator(HierBlockGenerator):
block_n = collections.OrderedDict()
# insert flags after category
- for key, value in six.iteritems(n):
+ for key, value in n.items():
block_n[key] = value
if key == 'category':
block_n['flags'] = 'need_qt_gui'
diff --git a/grc/core/io/yaml.py b/grc/core/io/yaml.py
index b10a280c8c..d653dc5f77 100644
--- a/grc/core/io/yaml.py
+++ b/grc/core/io/yaml.py
@@ -2,12 +2,11 @@
# This file is part of GNU Radio
#
# SPDX-License-Identifier: GPL-2.0-or-later
-#
+#
from collections import OrderedDict
-import six
import yaml
from ..params.param import attributed_str
@@ -27,7 +26,7 @@ class GRCDumper(yaml.SafeDumper):
if self.alias_key is not None:
self.represented_objects[self.alias_key] = node
- for item_key, item_value in six.iteritems(data):
+ for item_key, item_value in data.items():
node_key = self.represent_data(item_key)
node_value = self.represent_data(item_value)
value.append((node_key, node_value))
diff --git a/grc/core/params/dtypes.py b/grc/core/params/dtypes.py
index 4342216509..8857ce075b 100644
--- a/grc/core/params/dtypes.py
+++ b/grc/core/params/dtypes.py
@@ -2,12 +2,11 @@
# This file is part of GNU Radio
#
# SPDX-License-Identifier: GPL-2.0-or-later
-#
+#
import re
-
-from six.moves import builtins
+import builtins
from .. import blocks
from .. import Constants
@@ -111,4 +110,4 @@ def validate_gui_hint(param):
try:
param.parse_gui_hint(param.value)
except Exception as e:
- raise ValidateError(str(e)) \ No newline at end of file
+ raise ValidateError(str(e))
diff --git a/grc/core/params/param.py b/grc/core/params/param.py
index 7e0f0ce462..841a290b5d 100644
--- a/grc/core/params/param.py
+++ b/grc/core/params/param.py
@@ -2,16 +2,13 @@
# This file is part of GNU Radio
#
# SPDX-License-Identifier: GPL-2.0-or-later
-#
+#
import ast
import collections
import textwrap
-import six
-from six.moves import range
-
from .. import Constants
from ..base import Element
from ..utils.descriptors import Evaluated, EvaluatedEnum, setup_names
@@ -76,7 +73,7 @@ class Param(Element):
options.attributes = collections.defaultdict(dict)
padding = [''] * max(len(values), len(labels))
- attributes = {key: value + padding for key, value in six.iteritems(attributes)}
+ attributes = {key: value + padding for key, value in attributes.items()}
for i, option in enumerate(values):
# Test against repeated keys
@@ -89,7 +86,7 @@ class Param(Element):
label = str(option)
# Store the option
options[option] = label
- options.attributes[option] = {attrib: values[i] for attrib, values in six.iteritems(attributes)}
+ options.attributes[option] = {attrib: values[i] for attrib, values in attributes.items()}
default = next(iter(options)) if options else ''
if not self.value:
diff --git a/grc/core/platform.py b/grc/core/platform.py
index cbc8a138b0..7426c178f6 100644
--- a/grc/core/platform.py
+++ b/grc/core/platform.py
@@ -2,7 +2,7 @@
# This file is part of GNU Radio
#
# SPDX-License-Identifier: GPL-2.0-or-later
-#
+#
from codecs import open
@@ -12,9 +12,6 @@ import logging
from itertools import chain
import re
-import six
-from six.moves import range
-
from . import (
Messages, Constants,
blocks, params, ports, errors, utils, schema_checker
@@ -170,7 +167,7 @@ class Platform(Element):
Messages.flowgraph_error_file = file_path
continue
- for key, block in six.iteritems(self.blocks):
+ for key, block in self.blocks.items():
category = self._block_categories.get(key, block.category)
if not category:
continue
@@ -199,7 +196,7 @@ class Platform(Element):
def _save_docstring_extraction_result(self, block_id, docstrings):
docs = {}
- for match, docstring in six.iteritems(docstrings):
+ for match, docstring in docstrings.items():
if not docstring or match.endswith('_sptr'):
continue
docs[match] = docstring.replace('\n\n', '\n').strip()
@@ -280,22 +277,22 @@ class Platform(Element):
path = []
def load_category(name, elements):
- if not isinstance(name, six.string_types):
+ if not isinstance(name, str):
log.debug('Invalid name %r', name)
return
path.append(name)
for element in utils.to_list(elements):
- if isinstance(element, six.string_types):
+ if isinstance(element, str):
block_id = element
self._block_categories[block_id] = list(path)
elif isinstance(element, dict):
- load_category(*next(six.iteritems(element)))
+ load_category(*next(iter(element.items())))
else:
log.debug('Ignoring some elements of %s', name)
path.pop()
try:
- module_name, categories = next(six.iteritems(data))
+ module_name, categories = next(iter(data.items()))
except (AttributeError, StopIteration):
log.warning('no valid data found')
else:
diff --git a/grc/core/schema_checker/block.py b/grc/core/schema_checker/block.py
index e36865fed0..eee1e29ea9 100644
--- a/grc/core/schema_checker/block.py
+++ b/grc/core/schema_checker/block.py
@@ -1,69 +1,69 @@
-from .utils import Spec, expand, str_
+from .utils import Spec, expand
PARAM_SCHEME = expand(
- base_key=str_, # todo: rename/remove
+ base_key=str, # todo: rename/remove
- id=str_,
- label=str_,
- category=str_,
+ id=str,
+ label=str,
+ category=str,
- dtype=str_,
+ dtype=str,
default=object,
options=list,
option_labels=list,
- option_attributes=Spec(types=dict, required=False, item_scheme=(str_, list)),
+ option_attributes=Spec(types=dict, required=False, item_scheme=(str, list)),
- hide=str_,
+ hide=str,
)
PORT_SCHEME = expand(
- label=str_,
- domain=str_,
+ label=str,
+ domain=str,
- id=str_,
- dtype=str_,
- vlen=(int, str_),
+ id=str,
+ dtype=str,
+ vlen=(int, str),
- multiplicity=(int, str_),
- optional=(bool, int, str_),
- hide=(bool, str_),
+ multiplicity=(int, str),
+ optional=(bool, int, str),
+ hide=(bool, str),
)
TEMPLATES_SCHEME = expand(
- imports=str_,
- var_make=str_,
- var_value=str_,
- make=str_,
+ imports=str,
+ var_make=str,
+ var_value=str,
+ make=str,
callbacks=list,
)
CPP_TEMPLATES_SCHEME = expand(
includes=list,
- declarations=str_,
- make=str_,
- var_make=str_,
+ declarations=str,
+ make=str,
+ var_make=str,
callbacks=list,
link=list,
translations=dict,
)
BLOCK_SCHEME = expand(
- id=Spec(types=str_, required=True, item_scheme=None),
- label=str_,
- category=str_,
- flags=(list, str_),
+ id=Spec(types=str, required=True, item_scheme=None),
+ label=str,
+ category=str,
+ flags=(list, str),
parameters=Spec(types=list, required=False, item_scheme=PARAM_SCHEME),
inputs=Spec(types=list, required=False, item_scheme=PORT_SCHEME),
outputs=Spec(types=list, required=False, item_scheme=PORT_SCHEME),
- asserts=(list, str_),
- value=str_,
+ asserts=(list, str),
+ value=str,
templates=Spec(types=dict, required=False, item_scheme=TEMPLATES_SCHEME),
cpp_templates=Spec(types=dict, required=False, item_scheme=CPP_TEMPLATES_SCHEME),
- documentation=str_,
- grc_source=str_,
+ documentation=str,
+ grc_source=str,
file_format=Spec(types=int, required=True, item_scheme=None),
- block_wrapper_path=str_, # todo: rename/remove
+ block_wrapper_path=str, # todo: rename/remove
)
diff --git a/grc/core/schema_checker/domain.py b/grc/core/schema_checker/domain.py
index 19b0a510d0..34bb007a59 100644
--- a/grc/core/schema_checker/domain.py
+++ b/grc/core/schema_checker/domain.py
@@ -1,17 +1,17 @@
-from .utils import Spec, expand, str_
+from .utils import Spec, expand
DOMAIN_CONNECTION = expand(
type=Spec(types=list, required=True, item_scheme=None),
- connect=str_,
- cpp_connect=str_,
+ connect=str,
+ cpp_connect=str,
)
DOMAIN_SCHEME = expand(
- id=Spec(types=str_, required=True, item_scheme=None),
- label=str_,
- color=str_,
+ id=Spec(types=str, required=True, item_scheme=None),
+ label=str,
+ color=str,
multiple_connections_per_input=bool,
multiple_connections_per_output=bool,
templates=Spec(types=list, required=False, item_scheme=DOMAIN_CONNECTION)
-) \ No newline at end of file
+)
diff --git a/grc/core/schema_checker/flow_graph.py b/grc/core/schema_checker/flow_graph.py
index 746fbf4aa7..b31f03cbcf 100644
--- a/grc/core/schema_checker/flow_graph.py
+++ b/grc/core/schema_checker/flow_graph.py
@@ -1,13 +1,13 @@
-from .utils import Spec, expand, str_
+from .utils import Spec, expand
OPTIONS_SCHEME = expand(
- parameters=Spec(types=dict, required=False, item_scheme=(str_, str_)),
- states=Spec(types=dict, required=False, item_scheme=(str_, str_)),
+ parameters=Spec(types=dict, required=False, item_scheme=(str, str)),
+ states=Spec(types=dict, required=False, item_scheme=(str, str)),
)
BLOCK_SCHEME = expand(
- name=str_,
- id=str_,
+ name=str,
+ id=str,
**OPTIONS_SCHEME
)
diff --git a/grc/core/schema_checker/utils.py b/grc/core/schema_checker/utils.py
index a9cf4c0175..2fe0bb089f 100644
--- a/grc/core/schema_checker/utils.py
+++ b/grc/core/schema_checker/utils.py
@@ -1,7 +1,5 @@
import collections
-import six
-
Spec = collections.namedtuple('Spec', 'types required item_scheme')
@@ -17,9 +15,6 @@ def expand(**kwargs):
return {key: expand_spec(value) for key, value in kwargs.items()}
-str_ = six.string_types
-
-
class Message(collections.namedtuple('Message', 'path type message')):
fmt = '{path}: {type}: {message}'
diff --git a/grc/core/schema_checker/validator.py b/grc/core/schema_checker/validator.py
index 903cb88b19..e1843b6e45 100644
--- a/grc/core/schema_checker/validator.py
+++ b/grc/core/schema_checker/validator.py
@@ -2,10 +2,8 @@
# This file is part of GNU Radio
#
# SPDX-License-Identifier: GPL-2.0-or-later
-#
-
+#
-import six
from .utils import Message, Spec
@@ -42,7 +40,7 @@ class Validator(object):
self._check_var_key_dict(data, *scheme)
def _check_var_key_dict(self, data, key_type, value_scheme):
- for key, value in six.iteritems(data):
+ for key, value in data.items():
if not isinstance(key, key_type):
self._error('Key type {!r} for {!r} not in valid types'.format(
type(value).__name__, key))
@@ -53,7 +51,7 @@ class Validator(object):
type(value).__name__, key))
def _check_dict(self, data, scheme):
- for key, (types_, required, item_scheme) in six.iteritems(scheme):
+ for key, (types_, required, item_scheme) in scheme.items():
try:
value = data[key]
except KeyError:
diff --git a/grc/core/utils/__init__.py b/grc/core/utils/__init__.py
index 56804620a6..f12bf0f1c6 100644
--- a/grc/core/utils/__init__.py
+++ b/grc/core/utils/__init__.py
@@ -2,10 +2,8 @@
# This file is part of GNU Radio
#
# SPDX-License-Identifier: GPL-2.0-or-later
-#
-
+#
-import six
from . import epy_block_io, expr_utils, extract_docs, flow_graph_complexity
from .hide_bokeh_gui_options_if_not_installed import hide_bokeh_gui_options_if_not_installed
@@ -14,8 +12,7 @@ from .hide_bokeh_gui_options_if_not_installed import hide_bokeh_gui_options_if_n
def to_list(value):
if not value:
return []
- elif isinstance(value, six.string_types):
+ elif isinstance(value, str):
return [value]
else:
return list(value)
-
diff --git a/grc/core/utils/descriptors/evaluated.py b/grc/core/utils/descriptors/evaluated.py
index 19fa46bbad..a9735fb861 100644
--- a/grc/core/utils/descriptors/evaluated.py
+++ b/grc/core/utils/descriptors/evaluated.py
@@ -2,10 +2,7 @@
# This file is part of GNU Radio
#
# SPDX-License-Identifier: GPL-2.0-or-later
-#
-
-
-import six
+#
class Evaluated(object):
@@ -54,7 +51,7 @@ class Evaluated(object):
def __set__(self, instance, value):
attribs = instance.__dict__
value = value or self.default
- if isinstance(value, six.string_types) and value.startswith('${') and value.endswith('}'):
+ if isinstance(value, str) and value.startswith('${') and value.endswith('}'):
attribs[self.name_raw] = value[2:-1].strip()
attribs.pop(self.name, None) # reset previous eval result
else:
@@ -68,7 +65,7 @@ class Evaluated(object):
class EvaluatedEnum(Evaluated):
def __init__(self, allowed_values, default=None, name=None):
- if isinstance(allowed_values, six.string_types):
+ if isinstance(allowed_values, str):
allowed_values = set(allowed_values.split())
self.allowed_values = allowed_values
default = default if default is not None else next(iter(self.allowed_values))
diff --git a/grc/core/utils/epy_block_io.py b/grc/core/utils/epy_block_io.py
index 1b145d9b9a..e946eb7bf1 100644
--- a/grc/core/utils/epy_block_io.py
+++ b/grc/core/utils/epy_block_io.py
@@ -3,9 +3,6 @@
import inspect
import collections
-import six
-from six.moves import zip
-
TYPE_MAP = {
'complex64': 'complex', 'complex': 'complex',
@@ -39,7 +36,7 @@ def _find_block_class(source_code, cls):
exec(source_code, ns)
except Exception as e:
raise ValueError("Can't interpret source code: " + str(e))
- for var in six.itervalues(ns):
+ for var in ns.values():
if inspect.isclass(var) and issubclass(var, cls):
return var
raise ValueError('No python block class found in code')
diff --git a/grc/core/utils/expr_utils.py b/grc/core/utils/expr_utils.py
index 417e522539..bc669cc7c8 100644
--- a/grc/core/utils/expr_utils.py
+++ b/grc/core/utils/expr_utils.py
@@ -9,8 +9,6 @@ SPDX-License-Identifier: GPL-2.0-or-later
import string
-import six
-
def expr_replace(expr, replace_dict):
"""
@@ -184,7 +182,7 @@ def _get_graph(exprs):
var_graph = _graph()
for var in vars:
var_graph.add_node(var)
- for var, expr in six.iteritems(exprs):
+ for var, expr in exprs.items():
for dep in get_variable_dependencies(expr, vars):
if dep != var:
var_graph.add_edge(dep, var)
diff --git a/grc/core/utils/extract_docs.py b/grc/core/utils/extract_docs.py
index 8389c29e84..09bcaeb7c7 100644
--- a/grc/core/utils/extract_docs.py
+++ b/grc/core/utils/extract_docs.py
@@ -14,9 +14,7 @@ import threading
import json
import random
import itertools
-
-import six
-from six.moves import queue, filter, range
+import queue
###############################################################################
@@ -276,7 +274,7 @@ if __name__ == '__worker__':
elif __name__ == '__main__':
def callback(key, docs):
print(key)
- for match, doc in six.iteritems(docs):
+ for match, doc in docs.items():
print('-->', match)
print(str(doc).strip())
print()
diff --git a/grc/gui/Actions.py b/grc/gui/Actions.py
index 9f9049c711..452a8d0428 100644
--- a/grc/gui/Actions.py
+++ b/grc/gui/Actions.py
@@ -7,7 +7,6 @@ SPDX-License-Identifier: GPL-2.0-or-later
"""
-import six
import logging
from gi.repository import Gtk, Gdk, Gio, GLib, GObject
diff --git a/grc/gui/BlockTreeWindow.py b/grc/gui/BlockTreeWindow.py
index 397c4ceee9..a52739e0e8 100644
--- a/grc/gui/BlockTreeWindow.py
+++ b/grc/gui/BlockTreeWindow.py
@@ -6,8 +6,6 @@ SPDX-License-Identifier: GPL-2.0-or-later
"""
-import six
-
from gi.repository import Gtk, Gdk, GObject
from . import Actions, Utils, Constants
@@ -20,7 +18,7 @@ def _format_doc(doc):
docs = []
if doc.get(''):
docs += doc.get('').splitlines() + ['']
- for block_name, docstring in six.iteritems(doc):
+ for block_name, docstring in doc.items():
docs.append('--- {0} ---'.format(block_name))
docs += docstring.splitlines()
docs.append('')
@@ -121,7 +119,7 @@ class BlockTreeWindow(Gtk.VBox):
def repopulate(self):
self.clear()
- for block in six.itervalues(self.platform.blocks):
+ for block in self.platform.blocks.values():
if block.category:
self.add_block(block)
self.expand_module_in_tree()
diff --git a/grc/gui/Config.py b/grc/gui/Config.py
index 01f687a7d0..ee354ba54d 100644
--- a/grc/gui/Config.py
+++ b/grc/gui/Config.py
@@ -9,12 +9,11 @@ SPDX-License-Identifier: GPL-2.0-or-later
import sys
import os
+import configparser
from ..core.Config import Config as CoreConfig
from . import Constants
-from six.moves import configparser
-
HEADER = """\
# This contains only GUI settings for GRC and is not meant for users to edit.
#
diff --git a/grc/gui/ParserErrorsDialog.py b/grc/gui/ParserErrorsDialog.py
index 9e539852ce..12f6f4c7a7 100644
--- a/grc/gui/ParserErrorsDialog.py
+++ b/grc/gui/ParserErrorsDialog.py
@@ -7,8 +7,6 @@ SPDX-License-Identifier: GPL-2.0-or-later
"""
-import six
-
from gi.repository import Gtk, GObject
from .Constants import MIN_DIALOG_WIDTH, MIN_DIALOG_HEIGHT
@@ -61,7 +59,7 @@ class ParserErrorsDialog(Gtk.Dialog):
"""set up data model"""
self.tree_store.clear()
self._error_logs = error_logs
- for filename, errors in six.iteritems(error_logs):
+ for filename, errors in error_logs.items():
parent = self.tree_store.append(None, [str(filename)])
try:
with open(filename, 'r') as fp:
diff --git a/grc/gui/PropsDialog.py b/grc/gui/PropsDialog.py
index 74e302ab90..634d6f9d45 100644
--- a/grc/gui/PropsDialog.py
+++ b/grc/gui/PropsDialog.py
@@ -10,7 +10,6 @@ from gi.repository import Gtk, Gdk, GObject, Pango
from . import Actions, Utils, Constants
from .Dialogs import SimpleTextDisplay
-import six
class PropsDialog(Gtk.Dialog):
@@ -232,7 +231,7 @@ class PropsDialog(Gtk.Dialog):
docstrings = {block_class: docstrings[block_class]}
# show docstring(s) extracted from python sources
- for cls_name, docstring in six.iteritems(docstrings):
+ for cls_name, docstring in docstrings.items():
buf.insert_with_tags_by_name(pos, cls_name + '\n', 'b')
buf.insert(pos, docstring + '\n\n')
pos.backward_chars(2)
diff --git a/grc/gui/Utils.py b/grc/gui/Utils.py
index bf80147a62..165537c383 100644
--- a/grc/gui/Utils.py
+++ b/grc/gui/Utils.py
@@ -13,7 +13,6 @@ import numbers
from gi.repository import GLib
import cairo
-import six
from .canvas.colors import FLOWGRAPH_BACKGROUND_COLOR
from . import Constants
@@ -95,16 +94,7 @@ def num_to_str(num):
def encode(value):
- """Make sure that we pass only valid utf-8 strings into markup_escape_text.
-
- Older versions of glib seg fault if the last byte starts a multi-byte
- character.
- """
- if six.PY2:
- valid_utf8 = value.decode('utf-8', errors='replace').encode('utf-8')
- else:
- valid_utf8 = value
- return GLib.markup_escape_text(valid_utf8)
+ return GLib.markup_escape_text(value)
def make_screenshot(flow_graph, file_path, transparent_bg=False):
diff --git a/grc/gui/canvas/block.py b/grc/gui/canvas/block.py
index 869e6f4f6f..af7f2ba9ad 100644
--- a/grc/gui/canvas/block.py
+++ b/grc/gui/canvas/block.py
@@ -9,7 +9,6 @@ SPDX-License-Identifier: GPL-2.0-or-later
import math
-import six
from gi.repository import Gtk, Pango, PangoCairo
from . import colors
@@ -123,7 +122,7 @@ class Block(CoreBlock, Drawable):
port_separation = PORT_SEPARATION if not has_busses else ports[0].height + PORT_SPACING
offset = (self.height - (len(ports) - 1) * port_separation - ports[0].height) / 2
for port in ports:
- port.create_shapes()
+ port.create_shapes()
port.coordinate = {
0: (+self.width, offset),
90: (offset, -port.width),
@@ -153,7 +152,7 @@ class Block(CoreBlock, Drawable):
)
)
title_width, title_height = title_layout.get_size()
-
+
force_show_id = Actions.TOGGLE_SHOW_BLOCK_IDS.get_active()
# update the params layout
@@ -186,7 +185,7 @@ class Block(CoreBlock, Drawable):
min_height = 2 * PORT_BORDER_SEPARATION + sum(
port.height + PORT_SPACING for port in ports if port.dtype == 'bus'
) - PORT_SPACING
-
+
else:
if ports:
min_height -= ports[-1].height
@@ -344,7 +343,7 @@ class Block(CoreBlock, Drawable):
type_templates = ' '.join(p.dtype for p in self.params.values()) + ' '
type_templates += ' '.join(p.get_raw('dtype') for p in (self.sinks + self.sources))
type_param = None
- for key, param in six.iteritems(self.params):
+ for key, param in self.params.items():
if not param.is_enum():
continue
# Priority to the type controller
@@ -381,7 +380,7 @@ class Block(CoreBlock, Drawable):
# Concat the nports string from the private nports settings of all ports
nports_str = ' '.join(str(port.get_raw('multiplicity')) for port in self.ports())
# Modify all params whose keys appear in the nports string
- for key, param in six.iteritems(self.params):
+ for key, param in self.params.items():
if param.is_enum() or param.key not in nports_str:
continue
# Try to increment the port controller by direction
@@ -394,4 +393,3 @@ class Block(CoreBlock, Drawable):
# Should we be logging something here
pass
return changed
-
diff --git a/grc/gui/canvas/drawable.py b/grc/gui/canvas/drawable.py
index 18c3391978..a586a7edc6 100644
--- a/grc/gui/canvas/drawable.py
+++ b/grc/gui/canvas/drawable.py
@@ -8,8 +8,6 @@ SPDX-License-Identifier: GPL-2.0-or-later
from ..Constants import LINE_SELECT_SENSITIVITY
-from six.moves import zip
-
class Drawable(object):
"""
diff --git a/grc/gui/canvas/flowgraph.py b/grc/gui/canvas/flowgraph.py
index 6d278df589..0f4b32a942 100644
--- a/grc/gui/canvas/flowgraph.py
+++ b/grc/gui/canvas/flowgraph.py
@@ -13,9 +13,7 @@ import random
from distutils.spawn import find_executable
from itertools import count
-import six
from gi.repository import GLib, Gtk
-from six.moves import filter
from . import colors
from .drawable import Drawable