3535
3636# As of Viya 3.4 model registration fails if user-defined properties are
3737# 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 ]}
3944
4045
4146def _sklearn_to_dict (model ):
@@ -66,16 +71,15 @@ def _sklearn_to_dict(model):
6671 function = mappings .get (model ._estimator_type , model ._estimator_type ),
6772 tool = 'Python %s.%s'
6873 % (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 ()]
7275 )
7376
7477 return result
7578
7679
7780def 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 ):
7983 """Register a model in the model repository.
8084
8185 Parameters
@@ -111,6 +115,9 @@ def register_model(model, name, project, repository=None, input=None,
111115 force : bool, optional
112116 Create dependencies such as projects and repositories if they do not
113117 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.
114121
115122 Returns
116123 -------
@@ -130,6 +137,9 @@ def register_model(model, name, project, repository=None, input=None,
130137 .. versionchanged:: v1.3
131138 Create requirements.txt with installed packages.
132139
140+ .. versionchanged:: v1.4.5
141+ Added `record_packages` parameter.
142+
133143 """
134144 # TODO: Create new version if model already exists
135145
@@ -213,7 +223,7 @@ def register_model(model, name, project, repository=None, input=None,
213223
214224 # Get package versions in environment
215225 packages = installed_packages ()
216- if packages is not None :
226+ if record_packages and packages is not None :
217227 model .setdefault ('properties' , [])
218228
219229 # Define a custom property to capture each package version
@@ -224,10 +234,7 @@ def register_model(model, name, project, repository=None, input=None,
224234 for p in packages :
225235 if '==' in p :
226236 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 ))
231238
232239 # Generate and upload a requirements.txt file
233240 files .append ({'name' : 'requirements.txt' ,
0 commit comments