From ee42ba8feee9277bf0f0c1d09bae2a88efde180f Mon Sep 17 00:00:00 2001 From: djm21 Date: Wed, 4 Feb 2026 13:07:04 -0800 Subject: [PATCH 1/4] fix: update imputation method to avoid warnings --- src/sasctl/pzmm/write_score_code.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/sasctl/pzmm/write_score_code.py b/src/sasctl/pzmm/write_score_code.py index afe7e468..0a3627b9 100644 --- a/src/sasctl/pzmm/write_score_code.py +++ b/src/sasctl/pzmm/write_score_code.py @@ -766,10 +766,15 @@ def impute_missing_values(data): """ impute_values = \\\n + {"var1": 0, "var2": "", "var3": 125.3} """ - self.score_code += f"\n{'':4}return data.replace(' .', np.nan).fillna(impute_values).apply(pd.to_numeric, errors='ignore')\n" + self.score_code += f"\n\n{'':4}# Specify downcasting behavior for pandas 2.x to avoid warnings\n" + self.score_code += f"{'':4}if int(pd.__version__.split('.')[0]) == 2:\n{'':8}pd.set_option('future.no_silent_downcasting', True)\n" + self.score_code += f"{'':4}return data.replace(r'^\\s*\\.$', np.nan, regex=True).fillna(impute_values).infer_objects()\n" """ - return data.replace(' .', np.nan).fillna(impute_values).apply(pd.to_numeric, errors='ignore') + # Specify downcasting behavior for pandas 2.x to avoid warnings + if int(pd.__version__.split('.')[0]) == 2: + pd.set_option('future.no_silent_downcasting', True) + return data.replace(r'^\s*\.$', np.nan, regex=True).fillna(impute_values).infer_objects() """ # TODO: Needs unit test From 50d956f98958fe605f47e33e812e55690157a32e Mon Sep 17 00:00:00 2001 From: djm21 Date: Wed, 4 Feb 2026 13:19:53 -0800 Subject: [PATCH 2/4] black reformatting --- src/sasctl/_services/model_repository.py | 1 - tests/integration/test_pymas.py | 9 ++------- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/src/sasctl/_services/model_repository.py b/src/sasctl/_services/model_repository.py index 74fb6446..d38cf7c5 100644 --- a/src/sasctl/_services/model_repository.py +++ b/src/sasctl/_services/model_repository.py @@ -18,7 +18,6 @@ from ..core import current_session, delete, get, sasctl_command, RestObj from .service import Service - FUNCTIONS = { "Analytical", "Classification", diff --git a/tests/integration/test_pymas.py b/tests/integration/test_pymas.py index 7973211b..aef90971 100644 --- a/tests/integration/test_pymas.py +++ b/tests/integration/test_pymas.py @@ -10,7 +10,6 @@ import pytest - pytest.skip( "PyMAS functionality is deprecated and will be removed in a future release.", allow_module_level=True, @@ -241,9 +240,7 @@ def test_from_pickle(train_data, pickle_file): end; endpackage; -""".lstrip( - "\n" - ) +""".lstrip("\n") assert isinstance(p, PyMAS) @@ -343,9 +340,7 @@ def hello_world(): end; endpackage; -""".lstrip( - "\n" - ) +""".lstrip("\n") f = tmpdir.join("model.py") f.write(code) From e11c56d072efb1a4ae69085b161f5c076109d9c1 Mon Sep 17 00:00:00 2001 From: djm21 Date: Wed, 4 Feb 2026 13:36:22 -0800 Subject: [PATCH 3/4] formatting change to shorten lines --- src/sasctl/pzmm/write_score_code.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/sasctl/pzmm/write_score_code.py b/src/sasctl/pzmm/write_score_code.py index 0a3627b9..23d21ea1 100644 --- a/src/sasctl/pzmm/write_score_code.py +++ b/src/sasctl/pzmm/write_score_code.py @@ -766,11 +766,12 @@ def impute_missing_values(data): """ impute_values = \\\n + {"var1": 0, "var2": "", "var3": 125.3} """ - self.score_code += f"\n\n{'':4}# Specify downcasting behavior for pandas 2.x to avoid warnings\n" - self.score_code += f"{'':4}if int(pd.__version__.split('.')[0]) == 2:\n{'':8}pd.set_option('future.no_silent_downcasting', True)\n" - self.score_code += f"{'':4}return data.replace(r'^\\s*\\.$', np.nan, regex=True).fillna(impute_values).infer_objects()\n" - """ - + self.score_code += ( + f"\n\n{'':4}# Specify downcasting behavior for pandas 2.x to avoid warnings\n" + + f"{'':4}if int(pd.__version__.split('.')[0]) == 2:\n{'':8}pd.set_option('future.no_silent_downcasting', True)\n" + + f"{'':4}return data.replace(r'^\\s*\\.$', np.nan, regex=True).fillna(impute_values).infer_objects()\n" + ) + """ # Specify downcasting behavior for pandas 2.x to avoid warnings if int(pd.__version__.split('.')[0]) == 2: pd.set_option('future.no_silent_downcasting', True) From 7cf44e08b66056ff4ab6fc18250eb8db23d76bcd Mon Sep 17 00:00:00 2001 From: djm21 Date: Wed, 4 Feb 2026 13:37:46 -0800 Subject: [PATCH 4/4] black reformatting --- src/sasctl/pzmm/write_score_code.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/sasctl/pzmm/write_score_code.py b/src/sasctl/pzmm/write_score_code.py index 23d21ea1..0bb5dc9c 100644 --- a/src/sasctl/pzmm/write_score_code.py +++ b/src/sasctl/pzmm/write_score_code.py @@ -767,9 +767,9 @@ def impute_missing_values(data): impute_values = \\\n + {"var1": 0, "var2": "", "var3": 125.3} """ self.score_code += ( - f"\n\n{'':4}# Specify downcasting behavior for pandas 2.x to avoid warnings\n" + - f"{'':4}if int(pd.__version__.split('.')[0]) == 2:\n{'':8}pd.set_option('future.no_silent_downcasting', True)\n" + - f"{'':4}return data.replace(r'^\\s*\\.$', np.nan, regex=True).fillna(impute_values).infer_objects()\n" + f"\n\n{'':4}# Specify downcasting behavior for pandas 2.x to avoid warnings\n" + + f"{'':4}if int(pd.__version__.split('.')[0]) == 2:\n{'':8}pd.set_option('future.no_silent_downcasting', True)\n" + + f"{'':4}return data.replace(r'^\\s*\\.$', np.nan, regex=True).fillna(impute_values).infer_objects()\n" ) """ # Specify downcasting behavior for pandas 2.x to avoid warnings