From 0d075f0ee02acc89b4849f36cf8b46e56bdb5145 Mon Sep 17 00:00:00 2001 From: Jernej Urankar Date: Wed, 21 Jun 2017 12:03:28 +0200 Subject: [PATCH 1/2] Feature Constructor: lint --- Orange/widgets/data/owfeatureconstructor.py | 12 +++++++----- .../widgets/data/tests/test_owfeatureconstructor.py | 12 +++++------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/Orange/widgets/data/owfeatureconstructor.py b/Orange/widgets/data/owfeatureconstructor.py index cadb56b6bbe..5790171f2f5 100644 --- a/Orange/widgets/data/owfeatureconstructor.py +++ b/Orange/widgets/data/owfeatureconstructor.py @@ -292,7 +292,7 @@ def data(self, index, role=Qt.DisplayRole): return super().data(index, role) -class FeatureConstructorSettingsHandler(DomainContextHandler): +class FeatureConstructorHandler(DomainContextHandler): """Context handler that filters descriptors""" def is_valid_item(self, setting, descriptor, attrs, metas): @@ -326,7 +326,7 @@ class OWFeatureConstructor(OWWidget): want_main_area = False - settingsHandler = FeatureConstructorSettingsHandler() + settingsHandler = FeatureConstructorHandler() descriptors = ContextSetting([]) currentIndex = ContextSetting(-1) @@ -850,7 +850,7 @@ def make_arg(name): if sys.version_info >= (3, 0): return ast.arg(arg=name, annotation=None) else: - return ast.Name(id=arg, ctx=ast.Param(), lineno=1, col_offset=0) + return ast.Name(id=name, ctx=ast.Param(), lineno=1, col_offset=0) lambda_ = ast.Lambda( args=ast.arguments( @@ -902,7 +902,7 @@ def make_arg(name): "weibullvariate": random.weibullvariate, "triangular": random.triangular, "uniform": random.uniform} -) + ) class FeatureFunc: @@ -930,8 +930,10 @@ def unique(seq): return unique_el -def main(argv=sys.argv): +def main(argv=None): from AnyQt.QtWidgets import QApplication + if argv is None: + argv = sys.argv app = QApplication(list(argv)) argv = app.arguments() if len(argv) > 1: diff --git a/Orange/widgets/data/tests/test_owfeatureconstructor.py b/Orange/widgets/data/tests/test_owfeatureconstructor.py index 992322abd0a..4a0e615a4b1 100644 --- a/Orange/widgets/data/tests/test_owfeatureconstructor.py +++ b/Orange/widgets/data/tests/test_owfeatureconstructor.py @@ -13,9 +13,7 @@ StringDescriptor, construct_variables, OWFeatureConstructor) -from Orange.widgets.data.owfeatureconstructor import ( - freevars, make_lambda, validate_exp -) +from Orange.widgets.data.owfeatureconstructor import freevars, validate_exp import dill as pickle # Import dill after Orange because patched @@ -99,11 +97,11 @@ class PicklingTest(unittest.TestCase): def test_lambdas_pickle(self): NONLOCAL_CONST = 5 - lambda_func = lambda x, LOCAL_CONST=7: \ - x * LOCAL_CONST * NONLOCAL_CONST * self.CLASS_CONST * GLOBAL_CONST + lambda_func = lambda x, local_const=7: \ + x * local_const * NONLOCAL_CONST * self.CLASS_CONST * GLOBAL_CONST - def nested_func(x, LOCAL_CONST=7): - return x * LOCAL_CONST * NONLOCAL_CONST * self.CLASS_CONST * GLOBAL_CONST + def nested_func(x, local_const=7): + return x * local_const * NONLOCAL_CONST * self.CLASS_CONST * GLOBAL_CONST self.assertEqual(lambda_func(11), pickle.loads(pickle.dumps(lambda_func))(11)) From fe02689f7b532dbb987a7dfb5d98162770275616 Mon Sep 17 00:00:00 2001 From: Jernej Urankar Date: Wed, 21 Jun 2017 11:43:28 +0200 Subject: [PATCH 2/2] [FIX] Feature Constructor: no fail when no values https://sentry.io/biolab/orange3/issues/279049068/ --- Orange/widgets/data/owfeatureconstructor.py | 2 +- .../data/tests/test_owfeatureconstructor.py | 22 ++++++++++++++++++- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/Orange/widgets/data/owfeatureconstructor.py b/Orange/widgets/data/owfeatureconstructor.py index 5790171f2f5..03dae6c5e3e 100644 --- a/Orange/widgets/data/owfeatureconstructor.py +++ b/Orange/widgets/data/owfeatureconstructor.py @@ -244,7 +244,7 @@ def setEditorData(self, data, domain): def editorData(self): values = self.valuesedit.text() values = re.split(r"(?