From 8b5c62d5789d04cc1d87da9b7d8bffbdef46dd42 Mon Sep 17 00:00:00 2001 From: stevenhua0320 Date: Thu, 19 Feb 2026 18:36:37 -0500 Subject: [PATCH 1/5] build: deprecate assignUniqueLabels --- news/deprecate-assignUniqueLabels.rst | 23 +++++++++++++++++++++++ src/diffpy/structure/structure.py | 20 +++++++++++++++++++- tests/test_structure.py | 20 +++++++++++++++----- 3 files changed, 57 insertions(+), 6 deletions(-) create mode 100644 news/deprecate-assignUniqueLabels.rst diff --git a/news/deprecate-assignUniqueLabels.rst b/news/deprecate-assignUniqueLabels.rst new file mode 100644 index 0000000..669337a --- /dev/null +++ b/news/deprecate-assignUniqueLabels.rst @@ -0,0 +1,23 @@ +**Added:** + +* No News Added: deprecate assignUniqueLabels method + +**Changed:** + +* + +**Deprecated:** + +* + +**Removed:** + +* + +**Fixed:** + +* + +**Security:** + +* diff --git a/src/diffpy/structure/structure.py b/src/diffpy/structure/structure.py index 3c7b725..e0ea8e0 100644 --- a/src/diffpy/structure/structure.py +++ b/src/diffpy/structure/structure.py @@ -21,9 +21,18 @@ from diffpy.structure.atom import Atom from diffpy.structure.lattice import Lattice from diffpy.structure.utils import _linkAtomAttribute, atomBareSymbol, isiterable +from diffpy.utils._deprecator import build_deprecation_message, deprecated # ---------------------------------------------------------------------------- +base = "diffpy.structure.Structure" +removal_version = "4.0.0" +assignUniqueLabels_deprecation_msg = build_deprecation_message( + base, + "assignUniqueLabels", + "assign_unique_labels", + removal_version, +) class Structure(list): """Define group of atoms in a specified lattice. Structure --> group @@ -163,7 +172,7 @@ def getLastAtom(self): last_atom = self[-1] return last_atom - def assignUniqueLabels(self): + def assign_unique_labels(self): """Set a unique label string for each `Atom` in this structure. The label strings are formatted as "%(baresymbol)s%(index)i", @@ -181,6 +190,15 @@ def assignUniqueLabels(self): islabeled.add(a) return + @deprecated(assignUniqueLabels_deprecation_msg) + def assignUniqueLabels(self): + """This function has been deprecated and will be removed in + version 4.0.0. + + Please use diffpy.structure.Structure.assign_unique_labels instead. + """ + return self.assign_unique_labels() + def distance(self, aid0, aid1): """Calculate distance between 2 `Atoms`, no periodic boundary conditions. diff --git a/tests/test_structure.py b/tests/test_structure.py index 65d028c..6e102a8 100644 --- a/tests/test_structure.py +++ b/tests/test_structure.py @@ -121,18 +121,28 @@ def test___copy__(self): # return def test_assignUniqueLabels(self): - """Check Structure.assignUniqueLabels()""" + """Duplicate test with the deprecated assignUniqueLabels method. + + Remove this test in version 4.0.0""" self.assertEqual("", "".join([a.label for a in self.stru])) self.stru.assignUniqueLabels() self.assertEqual("C1", self.stru[0].label) self.assertEqual("C2", self.stru[1].label) return + def test_assign_unique_labels(self): + """Check Structure.assignUniqueLabels()""" + self.assertEqual("", "".join([a.label for a in self.stru])) + self.stru.assign_unique_labels() + self.assertEqual("C1", self.stru[0].label) + self.assertEqual("C2", self.stru[1].label) + return + def test_distance(self): """Check Structure.distance()""" from math import sqrt - self.stru.assignUniqueLabels() + self.stru.assign_unique_labels() self.assertRaises(IndexError, self.stru.distance, 333, "C1") self.assertRaises(IndexError, self.stru.distance, "C", "C1") self.assertAlmostEqual(sqrt(2.0), self.stru.distance(0, 1), self.places) @@ -143,7 +153,7 @@ def test_distance(self): def test_angle(self): """Check Structure.angle()""" cdse = Structure(filename=self.cdsefile) - cdse.assignUniqueLabels() + cdse.assign_unique_labels() self.assertEqual(109, round(cdse.angle(0, 2, 1))) self.assertEqual(109, round(cdse.angle("Cd1", "Se1", "Cd2"))) return @@ -236,7 +246,7 @@ def test___getitem__(self): cdse013.pop(2) self.assertEqual(cdse013, cdse[:2, 3].tolist()) self.assertRaises(IndexError, cdse.__getitem__, "Cd1") - cdse.assignUniqueLabels() + cdse.assign_unique_labels() self.assertTrue(cdse[0] is cdse["Cd1"]) cdse[0].label = "Hohenzollern" self.assertRaises(IndexError, cdse.__getitem__, "Cd1") @@ -466,7 +476,7 @@ def test_label(self): """Check Structure.label.""" cdse = Structure(filename=self.cdsefile) self.assertEqual(4 * [""], cdse.label.tolist()) - cdse.assignUniqueLabels() + cdse.assign_unique_labels() self.assertEqual("Cd1 Cd2 Se1 Se2".split(), cdse.label.tolist()) cdse.label = cdse.label.lower() self.assertEqual("cd1 cd2 se1 se2".split(), cdse.label.tolist()) From b692fb614cbc2936c3249729cdb943e558c5e2d8 Mon Sep 17 00:00:00 2001 From: stevenhua0320 Date: Thu, 19 Feb 2026 18:38:19 -0500 Subject: [PATCH 2/5] build: add requirement for diffpy.utils --- requirements/conda.txt | 1 + requirements/pip.txt | 1 + 2 files changed, 2 insertions(+) diff --git a/requirements/conda.txt b/requirements/conda.txt index 0fdcecb..825c92f 100644 --- a/requirements/conda.txt +++ b/requirements/conda.txt @@ -1,2 +1,3 @@ numpy pycifrw +diffpy.utils \ No newline at end of file diff --git a/requirements/pip.txt b/requirements/pip.txt index 0fdcecb..825c92f 100644 --- a/requirements/pip.txt +++ b/requirements/pip.txt @@ -1,2 +1,3 @@ numpy pycifrw +diffpy.utils \ No newline at end of file From e9c39fec7e084142aea51e60181eed4930885287 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 19 Feb 2026 23:39:52 +0000 Subject: [PATCH 3/5] [pre-commit.ci] auto fixes from pre-commit hooks --- requirements/conda.txt | 2 +- requirements/pip.txt | 2 +- src/diffpy/structure/structure.py | 4 +++- tests/test_structure.py | 3 ++- 4 files changed, 7 insertions(+), 4 deletions(-) diff --git a/requirements/conda.txt b/requirements/conda.txt index 825c92f..4c4ff50 100644 --- a/requirements/conda.txt +++ b/requirements/conda.txt @@ -1,3 +1,3 @@ numpy pycifrw -diffpy.utils \ No newline at end of file +diffpy.utils diff --git a/requirements/pip.txt b/requirements/pip.txt index 825c92f..4c4ff50 100644 --- a/requirements/pip.txt +++ b/requirements/pip.txt @@ -1,3 +1,3 @@ numpy pycifrw -diffpy.utils \ No newline at end of file +diffpy.utils diff --git a/src/diffpy/structure/structure.py b/src/diffpy/structure/structure.py index e0ea8e0..ccba404 100644 --- a/src/diffpy/structure/structure.py +++ b/src/diffpy/structure/structure.py @@ -34,6 +34,7 @@ removal_version, ) + class Structure(list): """Define group of atoms in a specified lattice. Structure --> group of atoms. @@ -195,7 +196,8 @@ def assignUniqueLabels(self): """This function has been deprecated and will be removed in version 4.0.0. - Please use diffpy.structure.Structure.assign_unique_labels instead. + Please use diffpy.structure.Structure.assign_unique_labels + instead. """ return self.assign_unique_labels() diff --git a/tests/test_structure.py b/tests/test_structure.py index 6e102a8..82d1fe5 100644 --- a/tests/test_structure.py +++ b/tests/test_structure.py @@ -123,7 +123,8 @@ def test___copy__(self): def test_assignUniqueLabels(self): """Duplicate test with the deprecated assignUniqueLabels method. - Remove this test in version 4.0.0""" + Remove this test in version 4.0.0 + """ self.assertEqual("", "".join([a.label for a in self.stru])) self.stru.assignUniqueLabels() self.assertEqual("C1", self.stru[0].label) From 2a1f30eb0f5b77ca32fd3ac66e63565f21f7a9b1 Mon Sep 17 00:00:00 2001 From: stevenhua0320 Date: Thu, 19 Feb 2026 20:21:13 -0500 Subject: [PATCH 4/5] fix: change news item and test docstring. --- news/deprecate-assignUniqueLabels.rst | 4 ++-- tests/test_structure.py | 7 ++----- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/news/deprecate-assignUniqueLabels.rst b/news/deprecate-assignUniqueLabels.rst index 669337a..cf07ff6 100644 --- a/news/deprecate-assignUniqueLabels.rst +++ b/news/deprecate-assignUniqueLabels.rst @@ -1,6 +1,6 @@ **Added:** -* No News Added: deprecate assignUniqueLabels method +* Added `diffpy.structure.Structure.assign_unique_labels` in replace of `assignUniqueLabels` **Changed:** @@ -8,7 +8,7 @@ **Deprecated:** -* +* Deprecated `diffpy.structure.Structure.assignUniqueLabels` for removal in 4.0.0 **Removed:** diff --git a/tests/test_structure.py b/tests/test_structure.py index 82d1fe5..818cc26 100644 --- a/tests/test_structure.py +++ b/tests/test_structure.py @@ -121,10 +121,7 @@ def test___copy__(self): # return def test_assignUniqueLabels(self): - """Duplicate test with the deprecated assignUniqueLabels method. - - Remove this test in version 4.0.0 - """ + """Check Structure.assignUniqueLabels()""" self.assertEqual("", "".join([a.label for a in self.stru])) self.stru.assignUniqueLabels() self.assertEqual("C1", self.stru[0].label) @@ -132,7 +129,7 @@ def test_assignUniqueLabels(self): return def test_assign_unique_labels(self): - """Check Structure.assignUniqueLabels()""" + """Check Structure.assign_unique_labels()""" self.assertEqual("", "".join([a.label for a in self.stru])) self.stru.assign_unique_labels() self.assertEqual("C1", self.stru[0].label) From 3e092b1a8bf399d74b5a2c318362d9da35762415 Mon Sep 17 00:00:00 2001 From: stevenhua0320 Date: Fri, 20 Feb 2026 00:40:17 -0500 Subject: [PATCH 5/5] fix: fix formatting of message. --- src/diffpy/structure/structure.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/diffpy/structure/structure.py b/src/diffpy/structure/structure.py index 1c9a276..8addb00 100644 --- a/src/diffpy/structure/structure.py +++ b/src/diffpy/structure/structure.py @@ -32,6 +32,8 @@ base, "assignUniqueLabels", "assign_unique_labels", + removal_version, +) addNewAtom_deprecation_msg = build_deprecation_message( base, "addNewAtom",