From a3586276ea5d3ac8b11c65b6ec0dfecad8ffa709 Mon Sep 17 00:00:00 2001
From: Christian Hill <xn.hill@gmail.com>
Date: Wed, 2 Nov 2022 17:52:44 +0100
Subject: [PATCH] Fix bug in atomic configuration state

---
 setup.py                                   |  2 +-
 src/pyvalem/states/atomic_configuration.py |  2 +-
 tests/test_atomic_configurations.py        | 11 ++++++++---
 3 files changed, 10 insertions(+), 5 deletions(-)

diff --git a/setup.py b/setup.py
index fbbd5f6..7105648 100644
--- a/setup.py
+++ b/setup.py
@@ -8,7 +8,7 @@
 
 setup(
     name="pyvalem",
-    version="2.5.11",
+    version="2.5.12",
     description="A package for managing simple chemical species and states",
     long_description=long_description,
     long_description_content_type="text/x-rst",
diff --git a/src/pyvalem/states/atomic_configuration.py b/src/pyvalem/states/atomic_configuration.py
index fe5c043..335de06 100644
--- a/src/pyvalem/states/atomic_configuration.py
+++ b/src/pyvalem/states/atomic_configuration.py
@@ -327,7 +327,7 @@ def _expand_noble_gas_config(self, config):
 
     def _contract_to_noble_gas_config(self, state_str):
         """Replace explicit atomic orbital sequence with noble gas notation."""
-        for noble_gas in noble_gases[::-3]:
+        for noble_gas in noble_gases[:1:-1]:
             config = noble_gas_configs[noble_gas]
             if config in state_str:
                 state_str = state_str.replace(config, f"[{noble_gas}]")
diff --git a/tests/test_atomic_configurations.py b/tests/test_atomic_configurations.py
index 9ac90e5..e03a590 100644
--- a/tests/test_atomic_configurations.py
+++ b/tests/test_atomic_configurations.py
@@ -69,9 +69,14 @@ def test_atomic_configuration_equality(self):
         self.assertEqual(c5.state_str, "[Ne].3s")
         self.assertEqual(c5.html, "[Ne]3s")
 
-        c5 = AtomicConfiguration("1s2.2s2.2p6")
-        self.assertEqual(repr(c5), "1s2.2s2.2p6")
-        self.assertEqual(c5.state_str, "1s2.2s2.2p6")
+        c6 = AtomicConfiguration("1s2.2s2.2p6")
+        self.assertEqual(repr(c6), "1s2.2s2.2p6")
+        self.assertEqual(c6.state_str, "1s2.2s2.2p6")
+
+        c7 = AtomicConfiguration("1s2.2s2.2p6.3s2.3p6.3d10.4s2.4p6.4d10.5s2.5p6.5d1")
+        self.assertEqual(repr(c7), "1s2.2s2.2p6.3s2.3p6.3d10.4s2.4p6.4d10.5s2.5p6.5d")
+        self.assertEqual(c7.state_str, "[Xe].5d1")
+        self.assertEqual(c7.html, "[Xe]5d")
 
     def test_excited_atomic_configuration(self):
         c1 = AtomicConfiguration("5g1")