11from collections import OrderedDict
22import json
3+ import os
4+ import sys
35import unittest
46
57import numpy as np
@@ -61,6 +63,7 @@ def test_serialize_model(self):
6163 serialization = sklearn_to_flow (model )
6264
6365 self .assertEqual (serialization .name , fixture_name )
66+ self .assertEqual (serialization .class_name , fixture_name )
6467 self .assertEqual (serialization .description , fixture_description )
6568 self .assertEqual (serialization .parameters , fixture_parameters )
6669
@@ -78,16 +81,21 @@ def test_serialize_model_with_subcomponent(self):
7881
7982 fixture_name = 'sklearn.ensemble.weight_boosting.AdaBoostClassifier' \
8083 '(base_estimator=sklearn.tree.tree.DecisionTreeClassifier)'
84+ fixture_class_name = 'sklearn.ensemble.weight_boosting.AdaBoostClassifier'
8185 fixture_description = 'Automatically created sub-component.'
86+ fixture_subcomponent_class_name = 'sklearn.tree.tree.DecisionTreeClassifier'
8287
8388 serialization = sklearn_to_flow (model )
8489
8590 self .assertEqual (serialization .name , fixture_name )
91+ self .assertEqual (serialization .class_name , fixture_class_name )
8692 self .assertEqual (serialization .description , fixture_description )
8793 self .assertEqual (serialization .parameters ['algorithm' ], '"SAMME.R"' )
8894 self .assertIsInstance (serialization .parameters ['base_estimator' ], str )
8995 self .assertEqual (serialization .parameters ['learning_rate' ], '1.0' )
9096 self .assertEqual (serialization .parameters ['n_estimators' ], '100' )
97+ self .assertEqual (serialization .components ['base_estimator' ].class_name ,
98+ fixture_subcomponent_class_name )
9199
92100 new_model = flow_to_sklearn (serialization )
93101
@@ -403,7 +411,7 @@ def test_error_on_adding_component_multiple_times_to_flow(self):
403411 "\('pca2', PCA\(copy=True, iterated_power='auto', " \
404412 "n_components=None, random_state=None,\n " \
405413 " svd_solver='auto', tol=0.0, whiten=False\)\)\)\)."
406- # self.assertRaisesRegexp(ValueError, fixture, sklearn_to_flow, pipeline)
414+ self .assertRaisesRegexp (ValueError , fixture , sklearn_to_flow , pipeline )
407415
408416 fu = sklearn .pipeline .FeatureUnion ((('pca1' , pca ), ('pca2' , pca2 )))
409417 fixture = "Found a second occurence of component sklearn.decomposition.pca.PCA when trying to serialize " \
@@ -416,7 +424,7 @@ def test_error_on_adding_component_multiple_times_to_flow(self):
416424 " n_components=None, random_state=None,\n " \
417425 " svd_solver='auto', tol=0.0, whiten=False\)\)\),\n " \
418426 " transformer_weights=None\)."
419- # self.assertRaisesRegexp(ValueError, fixture, sklearn_to_flow, fu)
427+ self .assertRaisesRegexp (ValueError , fixture , sklearn_to_flow , fu )
420428
421429 fs = sklearn .feature_selection .SelectKBest ()
422430 fu2 = sklearn .pipeline .FeatureUnion ((('pca1' , pca ), ('fs' , fs )))
@@ -435,3 +443,17 @@ def test_error_on_adding_component_multiple_times_to_flow(self):
435443 " n_components=None, random_state=None,\n " \
436444 " svd_solver='auto', tol=0.0, whiten=False\)\)\)\)."
437445 self .assertRaisesRegexp (ValueError , fixture , sklearn_to_flow , pipeline2 )
446+
447+ def test_subflow_version_change (self ):
448+ this_directory = os .path .dirname (os .path .abspath (__file__ ))
449+ sys .path .append (this_directory )
450+ import dummy_learn
451+ import dummy_learn .dummy_forest
452+ pca = sklearn .decomposition .PCA ()
453+ dummy = dummy_learn .dummy_forest .DummyRegressor ()
454+ pipeline = sklearn .pipeline .Pipeline ((('pca' , pca ), ('dummy' , dummy )))
455+ flow = sklearn_to_flow (pipeline )
456+ self .assertEqual (flow .external_version , 'dummy_learn==1.0,sklearn==0.18.1' )
457+ dummy_learn .__version__ = '1.1.0'
458+ flow = sklearn_to_flow (pipeline )
459+ self .assertEqual (flow .external_version , 'dummy_learn==1.1.0,sklearn==0.18.1' )
0 commit comments