diff options
Diffstat (limited to 'grc')
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 |