@@ -1301,13 +1301,20 @@ def get_intent(self, code_repr='label'):
13011301 hdr = self ._structarr
13021302 recoder = self ._field_recoders ['intent_code' ]
13031303 code = int (hdr ['intent_code' ])
1304+ known_intent = code in recoder
13041305 if code_repr == 'code' :
13051306 label = code
13061307 elif code_repr == 'label' :
1307- label = recoder .label [code ]
1308+ if known_intent :
1309+ label = recoder .label [code ]
1310+ else :
1311+ label = ''
13081312 else :
13091313 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
13111318 params = (float (hdr ['intent_p%d' % (i + 1 )]) for i in range (n_params ))
13121319 name = asstr (np .asscalar (hdr ['intent_name' ]))
13131320 return label , tuple (params ), name
@@ -1356,8 +1363,13 @@ def set_intent(self, code, params=(), name=''):
13561363 ('f test', (0.0, 0.0), '')
13571364 '''
13581365 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
13611373 if len (params ) and len (params ) != len (p_descr ):
13621374 raise HeaderDataError ('Need params of form %s, or empty'
13631375 % (p_descr ,))
0 commit comments