From 95b62d2be13082e04d11e066843650ea0181eb42 Mon Sep 17 00:00:00 2001 From: Ales Erjavec Date: Tue, 16 Jan 2018 16:11:57 +0100 Subject: [PATCH] Remove dill from dependencies --- Orange/__init__.py | 10 -------- .../data/tests/test_owfeatureconstructor.py | 23 ------------------- Orange/widgets/model/owloadmodel.py | 2 +- Orange/widgets/model/owsavemodel.py | 3 ++- .../widgets/model/tests/test_owloadmodel.py | 11 ++++----- conda-recipe/meta.yaml | 1 - requirements-core.txt | 1 - scripts/macos/requirements.txt | 1 - scripts/windows/specs/PY34-win32.txt | 1 - 9 files changed, 7 insertions(+), 46 deletions(-) diff --git a/Orange/__init__.py b/Orange/__init__.py index 8b653e37cbd..3ef41e0f4e3 100644 --- a/Orange/__init__.py +++ b/Orange/__init__.py @@ -1,13 +1,3 @@ -import pickle -from unittest.mock import patch -# Needed because the pure-Python Unpickler that dill uses can also fail -# with struct.error Exception. This seems to work, side effects unknown. -with patch('pickle._Unpickler', pickle.Unpickler): - import dill -dill.settings['protocol'] = pickle.HIGHEST_PROTOCOL -dill.settings['recurse'] = True -dill.settings['byref'] = True - from .misc.lazy_module import _LazyModule from .misc.datasets import _DatasetInfo from .version import \ diff --git a/Orange/widgets/data/tests/test_owfeatureconstructor.py b/Orange/widgets/data/tests/test_owfeatureconstructor.py index a2929d830a9..ede084a5393 100644 --- a/Orange/widgets/data/tests/test_owfeatureconstructor.py +++ b/Orange/widgets/data/tests/test_owfeatureconstructor.py @@ -20,8 +20,6 @@ freevars, validate_exp, FeatureFunc ) -import dill # Import dill after Orange because patched - class FeatureConstructorTest(unittest.TestCase): def test_construct_variables_discrete(self): @@ -93,27 +91,6 @@ def test_construct_numeric_names(self): ContinuousVariable._clear_all_caches() -GLOBAL_CONST = 2 - - -class PicklingTest(unittest.TestCase): - CLASS_CONST = 3 - - 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 - - def nested_func(x, local_const=7): - return x * local_const * NONLOCAL_CONST * self.CLASS_CONST * GLOBAL_CONST - - self.assertEqual(lambda_func(11), - dill.loads(dill.dumps(lambda_func))(11)) - self.assertEqual(nested_func(11), - dill.loads(dill.dumps(nested_func))(11)) - - class TestTools(unittest.TestCase): def test_free_vars(self): stmt = ast.parse("foo", "", "single") diff --git a/Orange/widgets/model/owloadmodel.py b/Orange/widgets/model/owloadmodel.py index 9159091de4e..03040e5ae10 100644 --- a/Orange/widgets/model/owloadmodel.py +++ b/Orange/widgets/model/owloadmodel.py @@ -1,6 +1,6 @@ import os +import pickle -import dill as pickle from AnyQt.QtCore import QTimer from AnyQt.QtWidgets import ( QSizePolicy, QHBoxLayout, QComboBox, QStyle, QFileDialog diff --git a/Orange/widgets/model/owsavemodel.py b/Orange/widgets/model/owsavemodel.py index 39d4959f3ca..2bf4d87bb02 100644 --- a/Orange/widgets/model/owsavemodel.py +++ b/Orange/widgets/model/owsavemodel.py @@ -1,6 +1,7 @@ import os -import dill as pickle +import pickle + from AnyQt.QtWidgets import ( QComboBox, QStyle, QSizePolicy, QFileDialog, QApplication ) diff --git a/Orange/widgets/model/tests/test_owloadmodel.py b/Orange/widgets/model/tests/test_owloadmodel.py index 795915dd687..d873c27656b 100644 --- a/Orange/widgets/model/tests/test_owloadmodel.py +++ b/Orange/widgets/model/tests/test_owloadmodel.py @@ -4,8 +4,6 @@ import pickle from tempfile import mkstemp -import dill # Import dill after Orange because patched - from Orange.classification.majority import ConstantModel from Orange.widgets.model.owloadmodel import OWLoadModel from Orange.widgets.tests.base import WidgetTest @@ -23,11 +21,10 @@ def test_show_error(self): fd, fname = mkstemp(suffix='.pkcls') os.close(fd) try: - for pickle_impl in (pickle, dill): - with open(fname, 'wb') as f: - pickle_impl.dump(clsf, f) - self.widget.load(fname) - self.assertFalse(self.widget.Error.load_error.is_shown()) + with open(fname, 'wb') as f: + pickle.dump(clsf, f) + self.widget.load(fname) + self.assertFalse(self.widget.Error.load_error.is_shown()) with open(fname, "w") as f: f.write("X") diff --git a/conda-recipe/meta.yaml b/conda-recipe/meta.yaml index 91fe3cf00e8..fde79d76a3b 100644 --- a/conda-recipe/meta.yaml +++ b/conda-recipe/meta.yaml @@ -48,7 +48,6 @@ requirements: - anyqt >=0.0.6 - joblib - python.app # [osx] - - dill # pickle anything - commonmark - serverfiles diff --git a/requirements-core.txt b/requirements-core.txt index 30661e7aa7d..449150e016c 100644 --- a/requirements-core.txt +++ b/requirements-core.txt @@ -11,6 +11,5 @@ chardet>=3.0.2 joblib>=0.9.4 keyring keyrings.alt # for alternative keyring implementations -dill setuptools>=36.3 serverfiles # for Data Sets synchronization diff --git a/scripts/macos/requirements.txt b/scripts/macos/requirements.txt index 3594ab49660..3c30cb232af 100644 --- a/scripts/macos/requirements.txt +++ b/scripts/macos/requirements.txt @@ -7,7 +7,6 @@ AnyQt==0.0.8 Bottleneck==1.2.0 chardet==3.0.4 -dill==0.2.6 docutils==0.13.1 joblib==0.11 keyring==10.3.1 diff --git a/scripts/windows/specs/PY34-win32.txt b/scripts/windows/specs/PY34-win32.txt index cfb374d78d1..3188d7b02c4 100644 --- a/scripts/windows/specs/PY34-win32.txt +++ b/scripts/windows/specs/PY34-win32.txt @@ -18,7 +18,6 @@ AnyQt==0.0.8 PyQt5==5.5.1 docutils==0.13.1 pip==9.0.1 -dill==0.2.6 pyqtgraph==0.10.0 six==1.10.0 xlrd==1.0.0