@@ -1301,13 +1301,20 @@ def get_intent(self, code_repr='label'):
1301
1301
hdr = self ._structarr
1302
1302
recoder = self ._field_recoders ['intent_code' ]
1303
1303
code = int (hdr ['intent_code' ])
1304
+ known_intent = code in recoder
1304
1305
if code_repr == 'code' :
1305
1306
label = code
1306
1307
elif code_repr == 'label' :
1307
- label = recoder .label [code ]
1308
+ if known_intent :
1309
+ label = recoder .label [code ]
1310
+ else :
1311
+ label = ''
1308
1312
else :
1309
1313
raise TypeError ('repr can be "label" or "code"' )
1310
- n_params = len (recoder .parameters [code ])
1314
+ if known_intent :
1315
+ n_params = len (recoder .parameters [code ])
1316
+ else :
1317
+ n_params = 0
1311
1318
params = (float (hdr ['intent_p%d' % (i + 1 )]) for i in range (n_params ))
1312
1319
name = asstr (np .asscalar (hdr ['intent_name' ]))
1313
1320
return label , tuple (params ), name
@@ -1356,8 +1363,13 @@ def set_intent(self, code, params=(), name=''):
1356
1363
('f test', (0.0, 0.0), '')
1357
1364
'''
1358
1365
hdr = self ._structarr
1359
- icode = intent_codes .code [code ]
1360
- p_descr = intent_codes .parameters [code ]
1366
+ known_intent = code in intent_codes
1367
+ if known_intent :
1368
+ icode = intent_codes .code [code ]
1369
+ p_descr = intent_codes .parameters [code ]
1370
+ else :
1371
+ icode = code
1372
+ p_descr = 3
1361
1373
if len (params ) and len (params ) != len (p_descr ):
1362
1374
raise HeaderDataError ('Need params of form %s, or empty'
1363
1375
% (p_descr ,))
0 commit comments