Skip to content

Commit d8c53a3

Browse files
committed
bump version number, add check for OpenML connector
1 parent 7c2fe27 commit d8c53a3

3 files changed

Lines changed: 25 additions & 8 deletions

File tree

openml/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
from .tasks import OpenMLTask, OpenMLSplit
2727
from .flows import OpenMLFlow
2828

29-
__version__ = "0.3.0"
29+
__version__ = "0.4.0dev"
3030

3131

3232
def populate_cache(task_ids=None, dataset_ids=None, flow_ids=None,

openml/flows/sklearn_converter.py

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
# Necessary to have signature available in python 2.7
2020
from sklearn.utils.fixes import signature
2121

22+
import openml
2223
from openml.flows import OpenMLFlow
2324
from openml.exceptions import PyOpenMLError
2425

@@ -30,7 +31,7 @@
3031

3132

3233
DEPENDENCIES_PATTERN = re.compile(
33-
'^(?P<name>[\w\-]+)((?P<operation>==|>=|>)(?P<version>(\d+\.)?(\d+\.)?(\d+)))?$')
34+
'^(?P<name>[\w\-]+)((?P<operation>==|>=|>)(?P<version>(\d+\.)?(\d+\.)?(\d+)?(dev)?))?$')
3435

3536

3637
def sklearn_to_flow(o, parent_model=None):
@@ -197,7 +198,8 @@ def _serialize_model(model):
197198
external_version = _get_external_version_string(model, sub_components)
198199

199200
dependencies = [_format_external_version('sklearn', sklearn.__version__),
200-
'numpy>=1.6.1', 'scipy>=0.9']
201+
'numpy>=1.6.1', 'scipy>=0.9',
202+
_format_external_version('openml', openml.__version__)]
201203
dependencies = '\n'.join(dependencies)
202204

203205
flow = OpenMLFlow(name=name,
@@ -427,8 +429,13 @@ def _check_dependencies(dependencies):
427429
raise NotImplementedError(
428430
'operation \'%s\' is not supported' % operation)
429431
if not check:
430-
raise ValueError('Trying to deserialize a model with dependency '
431-
'%s not satisfied.' % dependency_string)
432+
if dependency_name == 'openml':
433+
warnings.warn('De-serializing a flow which was created with '
434+
'openml==%s, this is openml==%s.' %
435+
(openml.__version__, version))
436+
else:
437+
raise ValueError('Trying to deserialize a model with dependency '
438+
'%s not satisfied.' % dependency_string)
432439

433440

434441
def serialize_type(o):

tests/test_flows/test_sklearn.py

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import os
44
import sys
55
import unittest
6+
import warnings
67

78
if sys.version_info[0] >= 3:
89
from unittest import mock
@@ -24,8 +25,8 @@
2425
import sklearn.preprocessing
2526
import sklearn.tree
2627

28+
import openml
2729
from openml.flows import OpenMLFlow, sklearn_to_flow, flow_to_sklearn
28-
2930
from openml.flows.functions import assert_flows_equal
3031
from openml.flows.sklearn_converter import _format_external_version, \
3132
_check_dependencies, _check_n_jobs
@@ -63,7 +64,8 @@ def test_serialize_model(self, check_dependencies_mock):
6364

6465
fixture_name = 'sklearn.tree.tree.DecisionTreeClassifier'
6566
fixture_description = 'Automatically created scikit-learn flow.'
66-
version_fixture = 'sklearn==%s\nnumpy>=1.6.1\nscipy>=0.9' % sklearn.__version__
67+
version_fixture = 'sklearn==%s\nnumpy>=1.6.1\nscipy>=0.9\nopenml==%s' \
68+
'' % (sklearn.__version__, openml.__version__)
6769
fixture_parameters = \
6870
OrderedDict((('class_weight', 'null'),
6971
('criterion', '"entropy"'),
@@ -524,10 +526,18 @@ def test_subflow_version_propagated(self):
524526
_format_external_version('sklearn', sklearn.__version__),
525527
_format_external_version('tests', '0.1')))
526528

527-
def test_check_dependencies(self):
529+
@mock.patch('warnings.warn')
530+
def test_check_dependencies(self, warnings_mock):
528531
dependencies = ['sklearn==0.1', 'sklearn>=99.99.99', 'sklearn>99.99.99']
529532
for dependency in dependencies:
530533
self.assertRaises(ValueError, _check_dependencies, dependency)
534+
dependency = 'openml==0.0.12345'
535+
_check_dependencies(dependency)
536+
self.assertEqual(warnings_mock.call_count, 1)
537+
self.assertEqual(warnings_mock.call_args[0][0],
538+
'De-serializing a flow which was created with '
539+
'openml==%s, this is openml==%s.' % (
540+
openml.__version__, '0.0.12345'))
531541

532542
def test_illegal_parameter_names(self):
533543
# illegal name: estimators

0 commit comments

Comments
 (0)