From cd3192c2b85302ea399b48cf00f6ce3a6af78004 Mon Sep 17 00:00:00 2001 From: aaronfriedman Date: Wed, 20 May 2026 17:02:44 -0400 Subject: [PATCH 1/2] Reset Snowflake connection to None when closed --- CHANGELOG.md | 3 +++ pyproject.toml | 2 +- src/nypl_py_utils/classes/s3_client.py | 4 ++-- src/nypl_py_utils/classes/snowflake_client.py | 1 + tests/test_snowflake_client.py | 17 +++++++++++++---- 5 files changed, 20 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a0ef9ed..d473436 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,7 @@ # Changelog +## v1.11.1 5/20/26 +- Reset Snowflake connection to None when it's closed + ## v1.11.0 4/27/26 - Allow Snowflake client to connect using any parameters diff --git a/pyproject.toml b/pyproject.toml index de7cd12..dfdd601 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "hatchling.build" [project] name = "nypl_py_utils" -version = "1.11.0" +version = "1.11.1" authors = [ { name="Aaron Friedman", email="aaronfriedman@nypl.org" }, ] diff --git a/src/nypl_py_utils/classes/s3_client.py b/src/nypl_py_utils/classes/s3_client.py index 6d8c151..c1b7e9d 100644 --- a/src/nypl_py_utils/classes/s3_client.py +++ b/src/nypl_py_utils/classes/s3_client.py @@ -58,7 +58,7 @@ def set_cache(self, state): except ClientError as e: error_msg = ( f'Error uploading {self.resource} to S3 bucket ' - f'{self.s3_bucket}: {e}') + f'{self.bucket}: {e}') self.logger.error(error_msg) raise S3ClientError(error_msg) from None @@ -83,7 +83,7 @@ def upload_file(self, content, file_path): except ClientError as e: error_msg = ( f'Error uploading {file_path} to S3 bucket ' - f'{self.s3_bucket}: {e}') + f'{self.bucket}: {e}') self.logger.error(error_msg) raise S3ClientError(error_msg) from None diff --git a/src/nypl_py_utils/classes/snowflake_client.py b/src/nypl_py_utils/classes/snowflake_client.py index e4f00f6..8d6115e 100644 --- a/src/nypl_py_utils/classes/snowflake_client.py +++ b/src/nypl_py_utils/classes/snowflake_client.py @@ -87,6 +87,7 @@ def close_connection(self): """Closes the connection""" self.logger.info('Closing Snowflake connection') self.conn.close() + self.conn = None class SnowflakeClientError(Exception): diff --git a/tests/test_snowflake_client.py b/tests/test_snowflake_client.py index 36d240b..aae1463 100644 --- a/tests/test_snowflake_client.py +++ b/tests/test_snowflake_client.py @@ -38,18 +38,27 @@ def test_execute_query( def test_execute_query_with_exception( self, mock_snowflake_conn, test_instance, mocker): test_instance.connect() + test_conn = test_instance.conn mock_cursor = mocker.MagicMock() mock_cursor.execute.side_effect = Exception() - test_instance.conn.cursor.return_value = mock_cursor + test_conn.cursor.return_value = mock_cursor with pytest.raises(SnowflakeClientError): test_instance.execute_query('test query') mock_cursor.close.assert_called() - test_instance.conn.close.assert_called_once() + test_conn.close.assert_called_once() + + def test_close_connection(self, mock_snowflake_conn, test_instance, mocker): + assert test_instance.conn is None - def test_close_connection(self, mock_snowflake_conn, test_instance): test_instance.connect() + + test_conn = test_instance.conn + assert test_conn is not None + test_instance.close_connection() - test_instance.conn.close.assert_called_once() + + test_conn.close.assert_called_once() + assert test_instance.conn is None From 79a6234d66761af3eabeb4c29de7dfcd93331ace Mon Sep 17 00:00:00 2001 From: aaronfriedman Date: Wed, 20 May 2026 17:09:32 -0400 Subject: [PATCH 2/2] Line break --- tests/test_snowflake_client.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/test_snowflake_client.py b/tests/test_snowflake_client.py index aae1463..c2e9230 100644 --- a/tests/test_snowflake_client.py +++ b/tests/test_snowflake_client.py @@ -50,7 +50,8 @@ def test_execute_query_with_exception( mock_cursor.close.assert_called() test_conn.close.assert_called_once() - def test_close_connection(self, mock_snowflake_conn, test_instance, mocker): + def test_close_connection( + self, mock_snowflake_conn, test_instance, mocker): assert test_instance.conn is None test_instance.connect()