From 58559ad8a99bf8c4e087b7c9243a306293da5fa7 Mon Sep 17 00:00:00 2001 From: clpetix Date: Mon, 27 Apr 2026 12:01:48 -0500 Subject: [PATCH 1/2] Add fix to make GSD 5 work. --- src/lammpsio/snapshot.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/lammpsio/snapshot.py b/src/lammpsio/snapshot.py index 562a1e3..f2c61c8 100644 --- a/src/lammpsio/snapshot.py +++ b/src/lammpsio/snapshot.py @@ -121,7 +121,11 @@ def from_hoomd_gsd( """ # ensures frame is well formed and that we have NumPy arrays - frame.validate() + # in gsd >= 5.0 validate() does not modify contents in place by default + try: + frame.validate(inplace=True) + except TypeError: + frame.validate() # process HOOMD box to LAMMPS box box = numpy.array(frame.configuration.box, copy=True) From d5ae9bfb44dba7f68d4e20848f092bdd3d146423 Mon Sep 17 00:00:00 2001 From: clpetix Date: Mon, 27 Apr 2026 12:16:19 -0500 Subject: [PATCH 2/2] Implement GSD 5.0 validation check in _compatibility module. --- src/lammpsio/_compatibility.py | 7 +++++++ src/lammpsio/snapshot.py | 5 ++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/lammpsio/_compatibility.py b/src/lammpsio/_compatibility.py index 6a9fc01..490e1b5 100644 --- a/src/lammpsio/_compatibility.py +++ b/src/lammpsio/_compatibility.py @@ -18,6 +18,13 @@ gsd_frame_class = gsd.hoomd.Frame else: gsd_frame_class = gsd.hoomd.Snapshot + + # GSD >= 5.0 validate() does not modify contents in place by default + if gsd_version >= packaging.version.Version("5.0.0"): + gsd_validate_inplace = True + else: + gsd_validate_inplace = False + except ModuleNotFoundError: gsd_version = None diff --git a/src/lammpsio/snapshot.py b/src/lammpsio/snapshot.py index f2c61c8..c1020ff 100644 --- a/src/lammpsio/snapshot.py +++ b/src/lammpsio/snapshot.py @@ -121,10 +121,9 @@ def from_hoomd_gsd( """ # ensures frame is well formed and that we have NumPy arrays - # in gsd >= 5.0 validate() does not modify contents in place by default - try: + if _compatibility.gsd_validate_inplace: frame.validate(inplace=True) - except TypeError: + else: frame.validate() # process HOOMD box to LAMMPS box