Skip to content

Commit b179995

Browse files
tani-dubeyBradyAJohnston
authored andcommitted
Fixes MDAnalysis#5170: Improve msd_type error handling (MDAnalysis#5173)
* wraps `lower()` call into try/except to capture cases where non string objects are passed through
1 parent bc14913 commit b179995

4 files changed

Lines changed: 9 additions & 9 deletions

File tree

package/AUTHORS

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -266,6 +266,7 @@ Chronological list of authors
266266
- Pranay Pelapkar
267267
- Shreejan Dolai
268268
- Brady Johnston
269+
- Tanisha Dubey
269270

270271
External code
271272
-------------

package/CHANGELOG

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ The rules for this file:
1515

1616
-------------------------------------------------------------------------------
1717
??/??/?? IAlibay, orbeckst, marinegor, tylerjereddy, ljwoods2, marinegor,
18-
spyke7, talagayev
18+
spyke7, talagayev, tanii1125
1919

2020
* 2.11.0
2121

package/MDAnalysis/analysis/msd.py

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -382,14 +382,11 @@ def _parse_msd_type(self):
382382
"xyz": [0, 1, 2],
383383
}
384384

385-
self.msd_type = self.msd_type.lower()
386-
387385
try:
388-
self._dim = keys[self.msd_type]
389-
except KeyError:
386+
self._dim = keys[self.msd_type.lower()]
387+
except (AttributeError, KeyError):
390388
raise ValueError(
391-
"invalid msd_type: {} specified, please specify one of xyz, "
392-
"xy, xz, yz, x, y, z".format(self.msd_type)
389+
f"Invalid msd_type {self.msd_type}, must be a string and one of: xyz, xy, xz, yz, x, y, z"
393390
)
394391

395392
self.dim_fac = len(self._dim)

testsuite/MDAnalysisTests/analysis/test_msd.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,9 +117,11 @@ def test_updating_ag_rejected(self, u):
117117
with pytest.raises(TypeError, match=errmsg):
118118
m = MSD(updating_ag, msd_type="xyz", fft=False)
119119

120-
@pytest.mark.parametrize("msdtype", ["foo", "bar", "yx", "zyx"])
120+
@pytest.mark.parametrize(
121+
"msdtype", ["foo", "bar", "yx", "zyx", 123, "", " xy "]
122+
)
121123
def test_msdtype_error(self, u, SELECTION, msdtype):
122-
errmsg = f"invalid msd_type: {msdtype}"
124+
errmsg = f"Invalid msd_type {msdtype}, must be a string and one of: xyz, xy, xz, yz, x, y, z"
123125
with pytest.raises(ValueError, match=errmsg):
124126
m = MSD(u, SELECTION, msd_type=msdtype)
125127

0 commit comments

Comments
 (0)