Skip to content

Commit fbfe272

Browse files
committed
fix model property lengths
1 parent 8870e46 commit fbfe272

File tree

1 file changed

+17
-10
lines changed

1 file changed

+17
-10
lines changed

src/sasctl/tasks.py

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,12 @@
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

4146
def _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

7780
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):
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

Comments
 (0)