From dafe0f0c99c145f3f62fa56d521af3b41ea57dc1 Mon Sep 17 00:00:00 2001 From: Taylor Jacovich Date: Wed, 5 Nov 2025 16:26:00 -0500 Subject: [PATCH 1/8] Refactor field removal logic in scix_id.py Refactor logic to remove fields from hash_data such that user_fields are retained instead of removed. --- SciXPipelineUtils/scix_id.py | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/SciXPipelineUtils/scix_id.py b/SciXPipelineUtils/scix_id.py index a7ccff8..7325fcb 100644 --- a/SciXPipelineUtils/scix_id.py +++ b/SciXPipelineUtils/scix_id.py @@ -210,13 +210,18 @@ def generate_bib_data_hash(hash_data, strip_characters=True, user_fields=None): ] if user_fields: - unique_fields = user_fields - - for field in unique_fields: - try: - hash_data.pop(field) - except Exception: - continue + for key in hash_data.keys() + if field not in user_fields: + try: + hash_data.pop(field) + except Exception: + continue + else: + for field in unique_fields: + try: + hash_data.pop(field) + except Exception: + continue if strip_characters and hash_data.get("abs"): hash_data["abs"][0] = re.sub("<[^<]+?>", "", hash_data.get("abs")[0]) From 4dbe0724905c91da24081e8c952b3733b42da4b6 Mon Sep 17 00:00:00 2001 From: Taylor Jacovich Date: Wed, 5 Nov 2025 16:28:16 -0500 Subject: [PATCH 2/8] Update SciXPipelineUtils/scix_id.py --- SciXPipelineUtils/scix_id.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SciXPipelineUtils/scix_id.py b/SciXPipelineUtils/scix_id.py index 7325fcb..1e266fd 100644 --- a/SciXPipelineUtils/scix_id.py +++ b/SciXPipelineUtils/scix_id.py @@ -210,7 +210,7 @@ def generate_bib_data_hash(hash_data, strip_characters=True, user_fields=None): ] if user_fields: - for key in hash_data.keys() + for key in hash_data.keys(): if field not in user_fields: try: hash_data.pop(field) From e86fb37ba2e3c99298d11572ceead21fdd0c81a2 Mon Sep 17 00:00:00 2001 From: Taylor Jacovich Date: Wed, 5 Nov 2025 16:29:31 -0500 Subject: [PATCH 3/8] Update SciXPipelineUtils/scix_id.py --- SciXPipelineUtils/scix_id.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SciXPipelineUtils/scix_id.py b/SciXPipelineUtils/scix_id.py index 1e266fd..fb12f42 100644 --- a/SciXPipelineUtils/scix_id.py +++ b/SciXPipelineUtils/scix_id.py @@ -210,7 +210,7 @@ def generate_bib_data_hash(hash_data, strip_characters=True, user_fields=None): ] if user_fields: - for key in hash_data.keys(): + for field in hash_data.keys(): if field not in user_fields: try: hash_data.pop(field) From 72d36bced8dba7848fc1789b65dbf1db8fbfa00b Mon Sep 17 00:00:00 2001 From: Taylor Jacovich Date: Wed, 5 Nov 2025 16:31:37 -0500 Subject: [PATCH 4/8] Optimize hash_data field iteration --- SciXPipelineUtils/scix_id.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SciXPipelineUtils/scix_id.py b/SciXPipelineUtils/scix_id.py index fb12f42..b0b372c 100644 --- a/SciXPipelineUtils/scix_id.py +++ b/SciXPipelineUtils/scix_id.py @@ -208,9 +208,9 @@ def generate_bib_data_hash(hash_data, strip_characters=True, user_fields=None): "date", "copyright", ] - + hash_data_fields = hash_data.keys() if user_fields: - for field in hash_data.keys(): + for field in hash_data_fields: if field not in user_fields: try: hash_data.pop(field) From cfc87beef3892862b405ba45058c28a64746f04d Mon Sep 17 00:00:00 2001 From: Taylor Jacovich Date: Wed, 5 Nov 2025 16:33:45 -0500 Subject: [PATCH 5/8] Convert hash_data_fields to a list Fixes issue of iterating over a generator based on a dictionary of changing size. --- SciXPipelineUtils/scix_id.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SciXPipelineUtils/scix_id.py b/SciXPipelineUtils/scix_id.py index b0b372c..3fa09c5 100644 --- a/SciXPipelineUtils/scix_id.py +++ b/SciXPipelineUtils/scix_id.py @@ -208,7 +208,7 @@ def generate_bib_data_hash(hash_data, strip_characters=True, user_fields=None): "date", "copyright", ] - hash_data_fields = hash_data.keys() + hash_data_fields = list(hash_data.keys()) if user_fields: for field in hash_data_fields: if field not in user_fields: From fb638bf877fe14692f7a751f5d84e3f08b72cbcc Mon Sep 17 00:00:00 2001 From: Taylor Jacovich Date: Wed, 5 Nov 2025 16:37:17 -0500 Subject: [PATCH 6/8] Update expected SCIX ID in test case --- tests/test_scix_id.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_scix_id.py b/tests/test_scix_id.py index 3b72cfb..ee23e5b 100644 --- a/tests/test_scix_id.py +++ b/tests/test_scix_id.py @@ -81,7 +81,7 @@ def test_generate_scix_id_user_fields(self): user_fields = ["id"] scix_id = scixid.generate_scix_id(test_bib_data, user_fields=user_fields) scix_id_2 = scixid.generate_scix_id(test_bib_data) - self.assertEqual(scix_id, "3YG1-418S-68AF") + self.assertEqual(scix_id, "44GP-FCA0-SEWD") self.assertNotEqual(scix_id, scix_id_2) def test_generate_scix_id_special_characters_true(self): From 03c3c451a2e7deddb67971f720ee5fcdec5df40b Mon Sep 17 00:00:00 2001 From: Taylor Jacovich Date: Wed, 5 Nov 2025 16:41:40 -0500 Subject: [PATCH 7/8] Commit changes from black linter. --- SciXPipelineUtils/scix_id.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/SciXPipelineUtils/scix_id.py b/SciXPipelineUtils/scix_id.py index 3fa09c5..fa36851 100644 --- a/SciXPipelineUtils/scix_id.py +++ b/SciXPipelineUtils/scix_id.py @@ -210,18 +210,18 @@ def generate_bib_data_hash(hash_data, strip_characters=True, user_fields=None): ] hash_data_fields = list(hash_data.keys()) if user_fields: - for field in hash_data_fields: - if field not in user_fields: + for field in hash_data_fields: + if field not in user_fields: + try: + hash_data.pop(field) + except Exception: + continue + else: + for field in unique_fields: try: hash_data.pop(field) except Exception: - continue - else: - for field in unique_fields: - try: - hash_data.pop(field) - except Exception: - continue + continue if strip_characters and hash_data.get("abs"): hash_data["abs"][0] = re.sub("<[^<]+?>", "", hash_data.get("abs")[0]) From 86d5988bd77179f7b6db94757e765ae1c06bbf36 Mon Sep 17 00:00:00 2001 From: tjacovich Date: Wed, 5 Nov 2025 16:46:59 -0500 Subject: [PATCH 8/8] Commit linter changes. --- SciXPipelineUtils/scix_id.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/SciXPipelineUtils/scix_id.py b/SciXPipelineUtils/scix_id.py index fa36851..dffa5be 100644 --- a/SciXPipelineUtils/scix_id.py +++ b/SciXPipelineUtils/scix_id.py @@ -208,14 +208,16 @@ def generate_bib_data_hash(hash_data, strip_characters=True, user_fields=None): "date", "copyright", ] + hash_data_fields = list(hash_data.keys()) + if user_fields: for field in hash_data_fields: if field not in user_fields: - try: - hash_data.pop(field) - except Exception: - continue + try: + hash_data.pop(field) + except Exception: + continue else: for field in unique_fields: try: