From 47cc5c62bc7fce609a92c443533bc504f6103c40 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 Jan 2024 14:38:54 +0000 Subject: [PATCH 1/3] Update pandas requirement from <2.2 to <2.3 Updates the requirements on [pandas](https://github.com/pandas-dev/pandas) to permit the latest version. - [Release notes](https://github.com/pandas-dev/pandas/releases) - [Commits](https://github.com/pandas-dev/pandas/compare/0.3.0...v2.2.0) --- updated-dependencies: - dependency-name: pandas dependency-type: direct:development ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 09b83db5..901b112f 100644 --- a/setup.py +++ b/setup.py @@ -75,7 +75,7 @@ def read(path): 'dask', 'stopit>=1.1.2,<2', 'flake8>=4,<8', - 'pandas<2.2', + 'pandas<2.3', 'pytz', ], doc=['sphinx>=3.5,<8', From ab7b14c247de7615076d572ec1466321d4ad2fa7 Mon Sep 17 00:00:00 2001 From: Andreas Motl Date: Tue, 30 Jan 2024 03:10:34 +0100 Subject: [PATCH 2/3] Testing: Pull `makeTimeDataFrame` and `makeMixedDataFrame` from pueblo `pandas._testing.{makeTimeDataFrame,makeMixedDataFrame}` were removed on behalf of pandas 2.2.0. This patch pulls corresponding polyfills from a hostel package. --- docs/by-example/sqlalchemy/dataframe.rst | 4 ++-- setup.py | 1 + src/crate/client/sqlalchemy/tests/bulk_test.py | 4 ++-- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/docs/by-example/sqlalchemy/dataframe.rst b/docs/by-example/sqlalchemy/dataframe.rst index a2be1f88..60c49d1d 100644 --- a/docs/by-example/sqlalchemy/dataframe.rst +++ b/docs/by-example/sqlalchemy/dataframe.rst @@ -76,8 +76,8 @@ The package provides a ``bulk_insert`` function to use the workload across multiple batches, using a defined chunk size. >>> import sqlalchemy as sa - >>> from pandas._testing import makeTimeDataFrame >>> from crate.client.sqlalchemy.support import insert_bulk + >>> from pueblo.testing.pandas import makeTimeDataFrame ... >>> # Define number of records, and chunk size. >>> INSERT_RECORDS = 42 @@ -159,8 +159,8 @@ in a batched/chunked manner, using a defined chunk size, effectively using the pandas implementation introduced in the previous section. >>> import dask.dataframe as dd - >>> from pandas._testing import makeTimeDataFrame >>> from crate.client.sqlalchemy.support import insert_bulk + >>> from pueblo.testing.pandas import makeTimeDataFrame ... >>> # Define the number of records, the number of computing partitions, >>> # and the chunk size of each database insert operation. diff --git a/setup.py b/setup.py index 901b112f..5bae92cd 100644 --- a/setup.py +++ b/setup.py @@ -76,6 +76,7 @@ def read(path): 'stopit>=1.1.2,<2', 'flake8>=4,<8', 'pandas<2.3', + 'pueblo>=0.0.7', 'pytz', ], doc=['sphinx>=3.5,<8', diff --git a/src/crate/client/sqlalchemy/tests/bulk_test.py b/src/crate/client/sqlalchemy/tests/bulk_test.py index 4546d1a4..1cebe0c6 100644 --- a/src/crate/client/sqlalchemy/tests/bulk_test.py +++ b/src/crate/client/sqlalchemy/tests/bulk_test.py @@ -176,8 +176,8 @@ def test_bulk_save_pandas(self, mock_cursor): """ Verify bulk INSERT with pandas. """ - from pandas._testing import makeTimeDataFrame from crate.client.sqlalchemy.support import insert_bulk + from pueblo.testing.pandas import makeTimeDataFrame # 42 records / 8 chunksize = 5.25, which means 6 batches will be emitted. INSERT_RECORDS = 42 @@ -216,8 +216,8 @@ def test_bulk_save_dask(self, mock_cursor): Verify bulk INSERT with Dask. """ import dask.dataframe as dd - from pandas._testing import makeTimeDataFrame from crate.client.sqlalchemy.support import insert_bulk + from pueblo.testing.pandas import makeTimeDataFrame # 42 records / 4 partitions means each partition has a size of 10.5 elements. # Because the chunk size 8 is slightly smaller than 10, the partition will not From 272bf18a799286b0c03475d2f26d025df64ea98e Mon Sep 17 00:00:00 2001 From: Andreas Motl Date: Tue, 30 Jan 2024 04:22:15 +0100 Subject: [PATCH 3/3] Testing: pandas 2.2 no longer supports SQLAlchemy 1.4 --- src/crate/client/sqlalchemy/__init__.py | 2 +- src/crate/client/sqlalchemy/tests/bulk_test.py | 6 +++--- src/crate/client/tests.py | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/crate/client/sqlalchemy/__init__.py b/src/crate/client/sqlalchemy/__init__.py index 2a7a1da7..41104f4b 100644 --- a/src/crate/client/sqlalchemy/__init__.py +++ b/src/crate/client/sqlalchemy/__init__.py @@ -21,7 +21,7 @@ from .compat.api13 import monkeypatch_add_exec_driver_sql from .dialect import CrateDialect -from .sa_version import SA_1_4, SA_VERSION +from .sa_version import SA_1_4, SA_2_0, SA_VERSION # noqa: F401 if SA_VERSION < SA_1_4: diff --git a/src/crate/client/sqlalchemy/tests/bulk_test.py b/src/crate/client/sqlalchemy/tests/bulk_test.py index 1cebe0c6..a628afa0 100644 --- a/src/crate/client/sqlalchemy/tests/bulk_test.py +++ b/src/crate/client/sqlalchemy/tests/bulk_test.py @@ -26,7 +26,7 @@ import sqlalchemy as sa from sqlalchemy.orm import Session -from crate.client.sqlalchemy.sa_version import SA_VERSION, SA_2_0, SA_1_4 +from crate.client.sqlalchemy.sa_version import SA_VERSION, SA_2_0 try: from sqlalchemy.orm import declarative_base @@ -170,7 +170,7 @@ def test_bulk_save_modern(self): self.assertSequenceEqual(expected_bulk_args, bulk_args) @skipIf(sys.version_info < (3, 8), "SQLAlchemy/pandas is not supported on Python <3.8") - @skipIf(SA_VERSION < SA_1_4, "SQLAlchemy 1.3 is not supported by pandas") + @skipIf(SA_VERSION < SA_2_0, "SQLAlchemy 1.4 is no longer supported by pandas 2.2") @patch('crate.client.connection.Cursor', mock_cursor=FakeCursor) def test_bulk_save_pandas(self, mock_cursor): """ @@ -209,7 +209,7 @@ def test_bulk_save_pandas(self, mock_cursor): self.assertEqual(effective_op_count, OPCOUNT) @skipIf(sys.version_info < (3, 8), "SQLAlchemy/Dask is not supported on Python <3.8") - @skipIf(SA_VERSION < SA_1_4, "SQLAlchemy 1.3 is not supported by pandas") + @skipIf(SA_VERSION < SA_2_0, "SQLAlchemy 1.4 is no longer supported by pandas 2.2") @patch('crate.client.connection.Cursor', mock_cursor=FakeCursor) def test_bulk_save_dask(self, mock_cursor): """ diff --git a/src/crate/client/tests.py b/src/crate/client/tests.py index 026fb56f..0f5878d7 100644 --- a/src/crate/client/tests.py +++ b/src/crate/client/tests.py @@ -41,7 +41,7 @@ crate_host, crate_path, crate_port, \ crate_transport_port, docs_path, localhost from crate.client import connect -from .sqlalchemy import SA_VERSION, SA_1_4 +from .sqlalchemy import SA_VERSION, SA_2_0 from .test_cursor import CursorTest from .test_connection import ConnectionTest @@ -395,7 +395,7 @@ def test_suite(): ] # Don't run DataFrame integration tests on SQLAlchemy 1.3 and Python 3.7. - skip_dataframe = SA_VERSION < SA_1_4 or sys.version_info < (3, 8) + skip_dataframe = SA_VERSION < SA_2_0 or sys.version_info < (3, 8) if not skip_dataframe: sqlalchemy_integration_tests += [ 'docs/by-example/sqlalchemy/dataframe.rst',