diff --git a/package/CHANGELOG b/package/CHANGELOG index aca247fe2e5..e59c09023c6 100644 --- a/package/CHANGELOG +++ b/package/CHANGELOG @@ -31,6 +31,8 @@ Changes * Maximum pinned versions in setup.py removed for python 3.6+ (PR #3139) Deprecations + * ParmEdConverter no longer accepts Timestep objects at all + (Issue #3031, PR #3172) * NCDFWriter `scale_factor` writing will change in version 2.0 to better match AMBER outputs (Issue #2327) * Deprecated using the last letter of the segid as the diff --git a/package/MDAnalysis/coordinates/ParmEd.py b/package/MDAnalysis/coordinates/ParmEd.py index b2eb92d9c3f..f08d007e999 100644 --- a/package/MDAnalysis/coordinates/ParmEd.py +++ b/package/MDAnalysis/coordinates/ParmEd.py @@ -76,6 +76,7 @@ import functools import itertools import warnings +from six import raise_from from . import base from ..topology.tables import SYMB2Z @@ -174,9 +175,10 @@ def convert(self, obj): ag_or_ts = obj.atoms except AttributeError: if isinstance(obj, base.Timestep): - ag_or_ts = obj.copy() + raise ValueError("Writing Timesteps to ParmEd " + "objects is not supported") else: - raise_from(TypeError("No Timestep found in obj argument"), None) + raise_from(TypeError("No atoms found in obj argument"), None) # Check for topology information missing_topology = [] diff --git a/testsuite/MDAnalysisTests/coordinates/test_parmed.py b/testsuite/MDAnalysisTests/coordinates/test_parmed.py index 5dd350e86fd..df65ac8c477 100644 --- a/testsuite/MDAnalysisTests/coordinates/test_parmed.py +++ b/testsuite/MDAnalysisTests/coordinates/test_parmed.py @@ -31,6 +31,7 @@ from MDAnalysisTests.coordinates.base import _SingleFrameReader from MDAnalysisTests.coordinates.reference import RefAdKSmall +from MDAnalysis.coordinates.ParmEd import ParmEdConverter from MDAnalysisTests.datafiles import ( GRO, @@ -288,3 +289,17 @@ class TestParmEdConverterPDB(BaseTestParmEdConverter): def test_equivalent_coordinates(self, ref, output): assert_almost_equal(ref.coordinates, output.coordinates, decimal=3) + +def test_pass_ts_error(): + u = mda.Universe(PDB_small) + err = "Writing Timesteps to ParmEd objects is not supported" + with pytest.raises(ValueError, match=err): + c = ParmEdConverter() + c.convert(u.trajectory.ts) + + +def test_incorrect_object_passed_typeerror(): + err = "No atoms found in obj argument" + with pytest.raises(TypeError, match=err): + c = ParmEdConverter() + c.convert("we still don't support emojis :(")