Skip to content

Commit 81732ab

Browse files
committed
Fix for numpy 1.9 compatibility.
Numpy 1.9+ raises IndexError rather than ValueError when a string is given as an index. Catching IndexError in original implementation disrupts iterators, so move to explicitly checking that string key is valid for owning peak/baseline function.
1 parent f7629c8 commit 81732ab

1 file changed

Lines changed: 9 additions & 9 deletions

File tree

diffpy/srmise/modelparts.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -481,21 +481,21 @@ def __getitem__(self, key_or_idx):
481481
key_or_idx - An integer index, slice, or key from owner's parameter
482482
dictionary.
483483
"""
484-
try:
485-
return self.pars[key_or_idx]
486-
except ValueError:
484+
if key_or_idx in self._owner.parameterdict:
487485
return self.pars[self._owner.parameterdict[key_or_idx]]
486+
else:
487+
return self.pars[key_or_idx]
488488

489489
def getfree(self, key_or_idx):
490490
"""Return value of free corresponding with key_or_idx.
491491
492492
Parameters
493493
key_or_idx - An integer index, slice, or key from owner's parameter
494494
dictionary."""
495-
try:
496-
return self.free[key_or_idx]
497-
except ValueError:
495+
if key_or_idx in self._owner.parameterdict:
498496
return self.free[self._owner.parameterdict[key_or_idx]]
497+
else:
498+
return self.free[key_or_idx]
499499

500500
def setfree(self, key_or_idx, value):
501501
"""Set value of free corresponding with key_or_idx.
@@ -504,10 +504,10 @@ def setfree(self, key_or_idx, value):
504504
key_or_idx - An integer index, slice, or key from owner's parameter
505505
dictionary.
506506
value: A boolean"""
507-
try:
508-
self.free[key_or_idx] = value
509-
except ValueError:
507+
if key_or_idx in self._owner.parameterdict:
510508
self.free[self._owner.parameterdict[key_or_idx]] = value
509+
else:
510+
self.free[key_or_idx] = value
511511

512512
def __len__(self):
513513
"""Return number of parameters, including any fixed ones."""

0 commit comments

Comments
 (0)