35
35
36
36
# As of Viya 3.4 model registration fails if user-defined properties are
37
37
# longer than 512 characters.
38
- _PROP_MAXLEN = 512
38
+ _PROP_VALUE_MAXLEN = 512
39
+ _PROP_NAME_MAXLEN = 60
40
+
41
+ def _property (k , v ):
42
+ return {'name' : str (k )[:_PROP_NAME_MAXLEN ],
43
+ 'value' : str (v )[:_PROP_VALUE_MAXLEN ]}
39
44
40
45
41
46
def _sklearn_to_dict (model ):
@@ -66,16 +71,15 @@ def _sklearn_to_dict(model):
66
71
function = mappings .get (model ._estimator_type , model ._estimator_type ),
67
72
tool = 'Python %s.%s'
68
73
% (sys .version_info .major , sys .version_info .minor ),
69
- properties = [{'name' : str (k )[:_PROP_MAXLEN ],
70
- 'value' : str (v )[:_PROP_MAXLEN ]}
71
- for k , v in model .get_params ().items ()]
74
+ properties = [_property (k , v ) for k , v in model .get_params ().items ()]
72
75
)
73
76
74
77
return result
75
78
76
79
77
80
def register_model (model , name , project , repository = None , input = None ,
78
- version = None , files = None , force = False ):
81
+ version = None , files = None , force = False ,
82
+ record_packages = True ):
79
83
"""Register a model in the model repository.
80
84
81
85
Parameters
@@ -111,6 +115,9 @@ def register_model(model, name, project, repository=None, input=None,
111
115
force : bool, optional
112
116
Create dependencies such as projects and repositories if they do not
113
117
already exist.
118
+ record_packages : bool, optional
119
+ Capture Python packages registered in the environment. Defaults to
120
+ True. Ignored if `model` is not a Python object.
114
121
115
122
Returns
116
123
-------
@@ -130,6 +137,9 @@ def register_model(model, name, project, repository=None, input=None,
130
137
.. versionchanged:: v1.3
131
138
Create requirements.txt with installed packages.
132
139
140
+ .. versionchanged:: v1.4.5
141
+ Added `record_packages` parameter.
142
+
133
143
"""
134
144
# TODO: Create new version if model already exists
135
145
@@ -213,7 +223,7 @@ def register_model(model, name, project, repository=None, input=None,
213
223
214
224
# Get package versions in environment
215
225
packages = installed_packages ()
216
- if packages is not None :
226
+ if record_packages and packages is not None :
217
227
model .setdefault ('properties' , [])
218
228
219
229
# Define a custom property to capture each package version
@@ -224,10 +234,7 @@ def register_model(model, name, project, repository=None, input=None,
224
234
for p in packages :
225
235
if '==' in p :
226
236
n , v = p .split ('==' )
227
- model ['properties' ].append ({
228
- 'name' : 'env_%s' % n ,
229
- 'value' : v
230
- })
237
+ model ['properties' ].append (_property ('env_%s' % n , v ))
231
238
232
239
# Generate and upload a requirements.txt file
233
240
files .append ({'name' : 'requirements.txt' ,
0 commit comments