From bd2d6900b5406e7f7d811c9273cce3398fbdf299 Mon Sep 17 00:00:00 2001 From: Hai Nguyen Date: Sun, 18 Feb 2024 19:59:16 +0700 Subject: [PATCH 1/9] feat: Support pandas v2 Signed-off-by: Hai Nguyen --- sdk/python/feast/infra/offline_stores/file.py | 8 ++++++-- sdk/python/requirements/py3.10-ci-requirements.txt | 7 ++++--- sdk/python/requirements/py3.10-requirements.txt | 8 +++----- sdk/python/requirements/py3.8-ci-requirements.txt | 4 +++- sdk/python/requirements/py3.8-requirements.txt | 6 ++---- sdk/python/requirements/py3.9-ci-requirements.txt | 7 ++++--- sdk/python/requirements/py3.9-requirements.txt | 8 +++----- sdk/python/tests/integration/e2e/test_validation.py | 2 +- setup.py | 5 ++--- 9 files changed, 28 insertions(+), 27 deletions(-) diff --git a/sdk/python/feast/infra/offline_stores/file.py b/sdk/python/feast/infra/offline_stores/file.py index 0e5064ba78..0b873a2091 100644 --- a/sdk/python/feast/infra/offline_stores/file.py +++ b/sdk/python/feast/infra/offline_stores/file.py @@ -4,6 +4,7 @@ from pathlib import Path from typing import Any, Callable, List, Literal, Optional, Tuple, Union +import dask import dask.dataframe as dd import pandas as pd import pyarrow @@ -42,6 +43,11 @@ _run_dask_field_mapping, ) +# FileRetrievalJob will cast string objects to string[pyarrow] from dask version 2023.7.1 +# This is not the desired behavior for our use case, so we set the convert-string option to False +# See (https://github.com/dask/dask/issues/10881#issuecomment-1923327936) +dask.config.set({"dataframe.convert-string": False}) + class FileOfflineStoreConfig(FeastConfigBaseModel): """Offline store config for local (file-based) store""" @@ -366,8 +372,6 @@ def evaluate_offline_job(): source_df[DUMMY_ENTITY_ID] = DUMMY_ENTITY_VAL columns_to_extract.add(DUMMY_ENTITY_ID) - source_df = source_df.persist() - return source_df[list(columns_to_extract)].persist() # When materializing a single feature view, we don't need full feature names. On demand transforms aren't materialized diff --git a/sdk/python/requirements/py3.10-ci-requirements.txt b/sdk/python/requirements/py3.10-ci-requirements.txt index 39d33caa39..e55696adc5 100644 --- a/sdk/python/requirements/py3.10-ci-requirements.txt +++ b/sdk/python/requirements/py3.10-ci-requirements.txt @@ -543,7 +543,7 @@ packaging==23.2 # pytest # snowflake-connector-python # sphinx -pandas==1.5.3 +pandas==2.2.0 # via # altair # db-dtypes @@ -553,7 +553,7 @@ pandas==1.5.3 # ibis-framework # pandavro # snowflake-connector-python -pandavro==1.5.2 +pandavro==1.8.0 # via feast (setup.py) pandocfilters==1.5.1 # via nbconvert @@ -824,7 +824,6 @@ six==1.16.0 # isodate # kubernetes # mock - # pandavro # python-dateutil # rfc3339-validator # thriftpy2 @@ -975,6 +974,8 @@ typing-extensions==4.9.0 # sqlalchemy2-stubs # typeguard # uvicorn +tzdata==2024.1 + # via pandas tzlocal==5.2 # via # great-expectations diff --git a/sdk/python/requirements/py3.10-requirements.txt b/sdk/python/requirements/py3.10-requirements.txt index 7141cd0f25..6340e026b3 100644 --- a/sdk/python/requirements/py3.10-requirements.txt +++ b/sdk/python/requirements/py3.10-requirements.txt @@ -121,11 +121,11 @@ packaging==23.2 # via # dask # gunicorn -pandas==1.5.3 +pandas==2.2.0 # via # feast (setup.py) # pandavro -pandavro==1.5.2 +pandavro==1.8.0 # via feast (setup.py) partd==1.4.1 # via dask @@ -171,9 +171,7 @@ rpds-py==0.18.0 # jsonschema # referencing six==1.16.0 - # via - # pandavro - # python-dateutil + # via python-dateutil sniffio==1.3.0 # via # anyio diff --git a/sdk/python/requirements/py3.8-ci-requirements.txt b/sdk/python/requirements/py3.8-ci-requirements.txt index 0356b85973..7dc959bdb6 100644 --- a/sdk/python/requirements/py3.8-ci-requirements.txt +++ b/sdk/python/requirements/py3.8-ci-requirements.txt @@ -568,7 +568,7 @@ pandas==1.5.3 # ibis-framework # pandavro # snowflake-connector-python -pandavro==1.5.2 +pandavro==1.8.0 # via feast (setup.py) pandocfilters==1.5.1 # via nbconvert @@ -998,6 +998,8 @@ typing-extensions==4.9.0 # starlette # typeguard # uvicorn +tzdata==2024.1 + # via pandas tzlocal==5.2 # via # great-expectations diff --git a/sdk/python/requirements/py3.8-requirements.txt b/sdk/python/requirements/py3.8-requirements.txt index 541beecf0d..cab6338dc4 100644 --- a/sdk/python/requirements/py3.8-requirements.txt +++ b/sdk/python/requirements/py3.8-requirements.txt @@ -129,7 +129,7 @@ pandas==1.5.3 # via # feast (setup.py) # pandavro -pandavro==1.5.2 +pandavro==1.8.0 # via feast (setup.py) partd==1.4.1 # via dask @@ -177,9 +177,7 @@ rpds-py==0.18.0 # jsonschema # referencing six==1.16.0 - # via - # pandavro - # python-dateutil + # via python-dateutil sniffio==1.3.0 # via # anyio diff --git a/sdk/python/requirements/py3.9-ci-requirements.txt b/sdk/python/requirements/py3.9-ci-requirements.txt index 6515779481..d2da16f7fb 100644 --- a/sdk/python/requirements/py3.9-ci-requirements.txt +++ b/sdk/python/requirements/py3.9-ci-requirements.txt @@ -551,7 +551,7 @@ packaging==23.2 # pytest # snowflake-connector-python # sphinx -pandas==1.5.3 +pandas==2.2.0 # via # altair # db-dtypes @@ -561,7 +561,7 @@ pandas==1.5.3 # ibis-framework # pandavro # snowflake-connector-python -pandavro==1.5.2 +pandavro==1.8.0 # via feast (setup.py) pandocfilters==1.5.1 # via nbconvert @@ -834,7 +834,6 @@ six==1.16.0 # isodate # kubernetes # mock - # pandavro # python-dateutil # rfc3339-validator # thriftpy2 @@ -988,6 +987,8 @@ typing-extensions==4.9.0 # starlette # typeguard # uvicorn +tzdata==2024.1 + # via pandas tzlocal==5.2 # via # great-expectations diff --git a/sdk/python/requirements/py3.9-requirements.txt b/sdk/python/requirements/py3.9-requirements.txt index 12c14a03ae..587f99c867 100644 --- a/sdk/python/requirements/py3.9-requirements.txt +++ b/sdk/python/requirements/py3.9-requirements.txt @@ -122,11 +122,11 @@ packaging==23.2 # via # dask # gunicorn -pandas==1.5.3 +pandas==2.2.0 # via # feast (setup.py) # pandavro -pandavro==1.5.2 +pandavro==1.8.0 # via feast (setup.py) partd==1.4.1 # via dask @@ -172,9 +172,7 @@ rpds-py==0.18.0 # jsonschema # referencing six==1.16.0 - # via - # pandavro - # python-dateutil + # via python-dateutil sniffio==1.3.0 # via # anyio diff --git a/sdk/python/tests/integration/e2e/test_validation.py b/sdk/python/tests/integration/e2e/test_validation.py index f49ed80a26..fdf182be57 100644 --- a/sdk/python/tests/integration/e2e/test_validation.py +++ b/sdk/python/tests/integration/e2e/test_validation.py @@ -167,7 +167,7 @@ def test_logged_features_validation(environment, universal_data_sources): { "customer_id": 2000 + i, "driver_id": 6000 + i, - "event_timestamp": datetime.datetime.now(), + "event_timestamp": make_tzaware(datetime.datetime.now()), } ] ), diff --git a/setup.py b/setup.py index 57decb8301..eb07068476 100644 --- a/setup.py +++ b/setup.py @@ -54,9 +54,8 @@ "jsonschema", "mmh3", "numpy>=1.22,<1.25", - "pandas>=1.4.3,<2", - # For some reason pandavro higher than 1.5.* only support pandas less than 1.3. - "pandavro~=1.5.0", + "pandas>=1.4.3,<3", + "pandavro>=1.7.1", # Higher than 4.23.4 seems to cause a seg fault "protobuf<4.23.4,>3.20", "proto-plus>=1.20.0,<2", From 9ec43d856a464e99d6cfc5038c10ccf010387abc Mon Sep 17 00:00:00 2001 From: Hai Nguyen Date: Sun, 18 Feb 2024 21:09:24 +0700 Subject: [PATCH 2/9] fix: Prune dependencies Signed-off-by: Hai Nguyen --- setup.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/setup.py b/setup.py index eb07068476..74740b6b37 100644 --- a/setup.py +++ b/setup.py @@ -44,7 +44,6 @@ "click>=7.0.0,<9.0.0", "colorama>=0.3.9,<1", "dill~=0.3.0", - "fastavro>=1.1.0,<2", "grpcio>=1.56.2,<2", "grpcio-tools>=1.56.2,<2", "grpcio-reflection>=1.56.2,<2", @@ -55,7 +54,6 @@ "mmh3", "numpy>=1.22,<1.25", "pandas>=1.4.3,<3", - "pandavro>=1.7.1", # Higher than 4.23.4 seems to cause a seg fault "protobuf<4.23.4,>3.20", "proto-plus>=1.20.0,<2", From d8978f46ebf98ef680a5ae1380979c10a5676e91 Mon Sep 17 00:00:00 2001 From: Hai Nguyen Date: Sun, 18 Feb 2024 21:10:07 +0700 Subject: [PATCH 3/9] chore: Re-compile reqs py310 Signed-off-by: Hai Nguyen --- sdk/python/requirements/py3.10-ci-requirements.txt | 11 +---------- sdk/python/requirements/py3.10-requirements.txt | 9 --------- 2 files changed, 1 insertion(+), 19 deletions(-) diff --git a/sdk/python/requirements/py3.10-ci-requirements.txt b/sdk/python/requirements/py3.10-ci-requirements.txt index e55696adc5..ba056e704d 100644 --- a/sdk/python/requirements/py3.10-ci-requirements.txt +++ b/sdk/python/requirements/py3.10-ci-requirements.txt @@ -179,10 +179,6 @@ executing==2.0.1 # via stack-data fastapi==0.109.2 # via feast (setup.py) -fastavro==1.9.4 - # via - # feast (setup.py) - # pandavro fastjsonschema==2.19.1 # via nbformat filelock==3.13.1 @@ -515,7 +511,6 @@ numpy==1.24.4 # great-expectations # ibis-framework # pandas - # pandavro # pyarrow # scipy oauthlib==3.2.2 @@ -543,18 +538,14 @@ packaging==23.2 # pytest # snowflake-connector-python # sphinx -pandas==2.2.0 +pandas==2.1.4 # via # altair # db-dtypes # feast (setup.py) # google-cloud-bigquery # great-expectations - # ibis-framework - # pandavro # snowflake-connector-python -pandavro==1.8.0 - # via feast (setup.py) pandocfilters==1.5.1 # via nbconvert parso==0.8.3 diff --git a/sdk/python/requirements/py3.10-requirements.txt b/sdk/python/requirements/py3.10-requirements.txt index 6340e026b3..b5dd9a78be 100644 --- a/sdk/python/requirements/py3.10-requirements.txt +++ b/sdk/python/requirements/py3.10-requirements.txt @@ -46,10 +46,6 @@ exceptiongroup==1.2.0 # via anyio fastapi==0.109.2 # via feast (setup.py) -fastavro==1.9.4 - # via - # feast (setup.py) - # pandavro fissix==21.11.13 # via bowler fsspec==2024.2.0 @@ -115,17 +111,12 @@ numpy==1.24.4 # via # feast (setup.py) # pandas - # pandavro # pyarrow packaging==23.2 # via # dask # gunicorn pandas==2.2.0 - # via - # feast (setup.py) - # pandavro -pandavro==1.8.0 # via feast (setup.py) partd==1.4.1 # via dask From ba7d048c0d076ffb18788c90c699335d018fcd96 Mon Sep 17 00:00:00 2001 From: Hai Nguyen Date: Sun, 18 Feb 2024 21:10:29 +0700 Subject: [PATCH 4/9] fix: Mark test skip with conditions Signed-off-by: Hai Nguyen --- .../tests/integration/offline_store/test_feature_logging.py | 5 +++++ .../offline_store/test_universal_historical_retrieval.py | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/sdk/python/tests/integration/offline_store/test_feature_logging.py b/sdk/python/tests/integration/offline_store/test_feature_logging.py index eba994544d..9989be1101 100644 --- a/sdk/python/tests/integration/offline_store/test_feature_logging.py +++ b/sdk/python/tests/integration/offline_store/test_feature_logging.py @@ -28,6 +28,11 @@ @pytest.mark.integration @pytest.mark.universal_offline_stores @pytest.mark.parametrize("pass_as_path", [True, False], ids=lambda v: str(v)) +@pytest.mark.skipif( + pd.__version__ < "2.2.0" and pd.__version__ >= "2.0.0", + reason="Requires pandas version 2.2.0 or higher", + # https://github.com/pandas-dev/pandas/issues/55730 +) def test_feature_service_logging(environment, universal_data_sources, pass_as_path): store = environment.feature_store diff --git a/sdk/python/tests/integration/offline_store/test_universal_historical_retrieval.py b/sdk/python/tests/integration/offline_store/test_universal_historical_retrieval.py index 0abb290563..5a357c2c49 100644 --- a/sdk/python/tests/integration/offline_store/test_universal_historical_retrieval.py +++ b/sdk/python/tests/integration/offline_store/test_universal_historical_retrieval.py @@ -513,6 +513,11 @@ def test_historical_features_with_no_ttl( @pytest.mark.integration @pytest.mark.universal_offline_stores +@pytest.mark.skipif( + pd.__version__ < "2.2.0" and pd.__version__ >= "2.0.0", + reason="Requires pandas version 2.2.0 or higher", + # https://github.com/pandas-dev/pandas/issues/55730 +) def test_historical_features_from_bigquery_sources_containing_backfills(environment): store = environment.feature_store From 30a535a7dbd55aacb0c574eef22785a92d991cb7 Mon Sep 17 00:00:00 2001 From: Hai Nguyen Date: Sun, 18 Feb 2024 21:13:38 +0700 Subject: [PATCH 5/9] chore: Re-compile reqs py39 Signed-off-by: Hai Nguyen --- sdk/python/requirements/py3.9-ci-requirements.txt | 11 +---------- sdk/python/requirements/py3.9-requirements.txt | 9 --------- 2 files changed, 1 insertion(+), 19 deletions(-) diff --git a/sdk/python/requirements/py3.9-ci-requirements.txt b/sdk/python/requirements/py3.9-ci-requirements.txt index d2da16f7fb..a15973c23b 100644 --- a/sdk/python/requirements/py3.9-ci-requirements.txt +++ b/sdk/python/requirements/py3.9-ci-requirements.txt @@ -179,10 +179,6 @@ executing==2.0.1 # via stack-data fastapi==0.109.2 # via feast (setup.py) -fastavro==1.9.4 - # via - # feast (setup.py) - # pandavro fastjsonschema==2.19.1 # via nbformat filelock==3.13.1 @@ -523,7 +519,6 @@ numpy==1.24.4 # great-expectations # ibis-framework # pandas - # pandavro # pyarrow # scipy oauthlib==3.2.2 @@ -551,18 +546,14 @@ packaging==23.2 # pytest # snowflake-connector-python # sphinx -pandas==2.2.0 +pandas==2.1.4 # via # altair # db-dtypes # feast (setup.py) # google-cloud-bigquery # great-expectations - # ibis-framework - # pandavro # snowflake-connector-python -pandavro==1.8.0 - # via feast (setup.py) pandocfilters==1.5.1 # via nbconvert parso==0.8.3 diff --git a/sdk/python/requirements/py3.9-requirements.txt b/sdk/python/requirements/py3.9-requirements.txt index 587f99c867..4364dc62bf 100644 --- a/sdk/python/requirements/py3.9-requirements.txt +++ b/sdk/python/requirements/py3.9-requirements.txt @@ -46,10 +46,6 @@ exceptiongroup==1.2.0 # via anyio fastapi==0.109.2 # via feast (setup.py) -fastavro==1.9.4 - # via - # feast (setup.py) - # pandavro fissix==21.11.13 # via bowler fsspec==2024.2.0 @@ -116,17 +112,12 @@ numpy==1.24.4 # via # feast (setup.py) # pandas - # pandavro # pyarrow packaging==23.2 # via # dask # gunicorn pandas==2.2.0 - # via - # feast (setup.py) - # pandavro -pandavro==1.8.0 # via feast (setup.py) partd==1.4.1 # via dask From f291b9047c4a5e2c6039113e723f8b54a4c24c11 Mon Sep 17 00:00:00 2001 From: Hai Nguyen Date: Sun, 18 Feb 2024 22:15:50 +0700 Subject: [PATCH 6/9] chore: Update skip reason Signed-off-by: Hai Nguyen --- .../integration/offline_store/test_feature_logging.py | 2 +- .../offline_store/test_universal_historical_retrieval.py | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/sdk/python/tests/integration/offline_store/test_feature_logging.py b/sdk/python/tests/integration/offline_store/test_feature_logging.py index 9989be1101..6be1edb06f 100644 --- a/sdk/python/tests/integration/offline_store/test_feature_logging.py +++ b/sdk/python/tests/integration/offline_store/test_feature_logging.py @@ -30,7 +30,7 @@ @pytest.mark.parametrize("pass_as_path", [True, False], ids=lambda v: str(v)) @pytest.mark.skipif( pd.__version__ < "2.2.0" and pd.__version__ >= "2.0.0", - reason="Requires pandas version 2.2.0 or higher", + reason="Skip test due to pandas issue 55730 for pandas version 2.0.0 - 2.1.0", # https://github.com/pandas-dev/pandas/issues/55730 ) def test_feature_service_logging(environment, universal_data_sources, pass_as_path): diff --git a/sdk/python/tests/integration/offline_store/test_universal_historical_retrieval.py b/sdk/python/tests/integration/offline_store/test_universal_historical_retrieval.py index 5a357c2c49..41f7d6f32f 100644 --- a/sdk/python/tests/integration/offline_store/test_universal_historical_retrieval.py +++ b/sdk/python/tests/integration/offline_store/test_universal_historical_retrieval.py @@ -340,6 +340,11 @@ def test_historical_features_with_entities_from_query( table_from_sql_entities = job_from_sql.to_arrow().to_pandas() for col in table_from_sql_entities.columns: + # check if col dtype is timezone naive + if pd.api.types.is_datetime64_dtype(table_from_sql_entities[col]): + table_from_sql_entities[col] = table_from_sql_entities[col].dt.tz_localize( + "UTC" + ) expected_df_query[col] = expected_df_query[col].astype( table_from_sql_entities[col].dtype ) @@ -515,7 +520,7 @@ def test_historical_features_with_no_ttl( @pytest.mark.universal_offline_stores @pytest.mark.skipif( pd.__version__ < "2.2.0" and pd.__version__ >= "2.0.0", - reason="Requires pandas version 2.2.0 or higher", + reason="Skip test due to pandas issue 55730 for pandas version 2.0.0 - 2.1.0", # https://github.com/pandas-dev/pandas/issues/55730 ) def test_historical_features_from_bigquery_sources_containing_backfills(environment): From 8cbbc6f9b15af6a78ba0399e3fcd9e7ea9dc608e Mon Sep 17 00:00:00 2001 From: Hai Nguyen Date: Mon, 19 Feb 2024 17:23:13 +0700 Subject: [PATCH 7/9] chore: Re-compile reqs py38 Signed-off-by: Hai Nguyen --- sdk/python/requirements/py3.8-ci-requirements.txt | 11 +---------- sdk/python/requirements/py3.8-requirements.txt | 11 +---------- 2 files changed, 2 insertions(+), 20 deletions(-) diff --git a/sdk/python/requirements/py3.8-ci-requirements.txt b/sdk/python/requirements/py3.8-ci-requirements.txt index 7dc959bdb6..a7213d3981 100644 --- a/sdk/python/requirements/py3.8-ci-requirements.txt +++ b/sdk/python/requirements/py3.8-ci-requirements.txt @@ -182,10 +182,6 @@ executing==2.0.1 # via stack-data fastapi==0.109.2 # via feast (setup.py) -fastavro==1.9.4 - # via - # feast (setup.py) - # pandavro fastjsonschema==2.19.1 # via nbformat filelock==3.13.1 @@ -530,7 +526,6 @@ numpy==1.24.4 # great-expectations # ibis-framework # pandas - # pandavro # pyarrow # scipy oauthlib==3.2.2 @@ -558,18 +553,14 @@ packaging==23.2 # pytest # snowflake-connector-python # sphinx -pandas==1.5.3 +pandas==2.0.3 # via # altair # db-dtypes # feast (setup.py) # google-cloud-bigquery # great-expectations - # ibis-framework - # pandavro # snowflake-connector-python -pandavro==1.8.0 - # via feast (setup.py) pandocfilters==1.5.1 # via nbconvert parso==0.8.3 diff --git a/sdk/python/requirements/py3.8-requirements.txt b/sdk/python/requirements/py3.8-requirements.txt index cab6338dc4..d00a77ee6f 100644 --- a/sdk/python/requirements/py3.8-requirements.txt +++ b/sdk/python/requirements/py3.8-requirements.txt @@ -46,10 +46,6 @@ exceptiongroup==1.2.0 # via anyio fastapi==0.109.2 # via feast (setup.py) -fastavro==1.9.4 - # via - # feast (setup.py) - # pandavro fissix==21.11.13 # via bowler fsspec==2024.2.0 @@ -119,17 +115,12 @@ numpy==1.24.4 # via # feast (setup.py) # pandas - # pandavro # pyarrow packaging==23.2 # via # dask # gunicorn -pandas==1.5.3 - # via - # feast (setup.py) - # pandavro -pandavro==1.8.0 +pandas==2.0.3 # via feast (setup.py) partd==1.4.1 # via dask From 3324f3977a349a7b52afdbac3ccc103fca3da8d0 Mon Sep 17 00:00:00 2001 From: Hai Nguyen Date: Fri, 23 Feb 2024 21:04:52 +0700 Subject: [PATCH 8/9] chore: Bump snowflake connector Signed-off-by: Hai Nguyen --- sdk/python/requirements/py3.10-ci-requirements.txt | 2 +- sdk/python/requirements/py3.8-ci-requirements.txt | 4 +--- sdk/python/requirements/py3.9-ci-requirements.txt | 2 +- setup.py | 1 + 4 files changed, 4 insertions(+), 5 deletions(-) diff --git a/sdk/python/requirements/py3.10-ci-requirements.txt b/sdk/python/requirements/py3.10-ci-requirements.txt index ba056e704d..e41706f403 100644 --- a/sdk/python/requirements/py3.10-ci-requirements.txt +++ b/sdk/python/requirements/py3.10-ci-requirements.txt @@ -538,7 +538,7 @@ packaging==23.2 # pytest # snowflake-connector-python # sphinx -pandas==2.1.4 +pandas==2.2.0 ; python_version >= "3.9" # via # altair # db-dtypes diff --git a/sdk/python/requirements/py3.8-ci-requirements.txt b/sdk/python/requirements/py3.8-ci-requirements.txt index a7213d3981..339a6b1c49 100644 --- a/sdk/python/requirements/py3.8-ci-requirements.txt +++ b/sdk/python/requirements/py3.8-ci-requirements.txt @@ -553,7 +553,7 @@ packaging==23.2 # pytest # snowflake-connector-python # sphinx -pandas==2.0.3 +pandas==1.5.3 ; python_version < "3.9" # via # altair # db-dtypes @@ -989,8 +989,6 @@ typing-extensions==4.9.0 # starlette # typeguard # uvicorn -tzdata==2024.1 - # via pandas tzlocal==5.2 # via # great-expectations diff --git a/sdk/python/requirements/py3.9-ci-requirements.txt b/sdk/python/requirements/py3.9-ci-requirements.txt index a15973c23b..99f7ee0285 100644 --- a/sdk/python/requirements/py3.9-ci-requirements.txt +++ b/sdk/python/requirements/py3.9-ci-requirements.txt @@ -546,7 +546,7 @@ packaging==23.2 # pytest # snowflake-connector-python # sphinx -pandas==2.1.4 +pandas==2.2.0 # via # altair # db-dtypes diff --git a/setup.py b/setup.py index 74740b6b37..484024b206 100644 --- a/setup.py +++ b/setup.py @@ -187,6 +187,7 @@ "types-setuptools", "types-tabulate", "virtualenv<20.24.2", + "pandas>=1.4.3,<2; python_version < '3.9'", ] + GCP_REQUIRED + REDIS_REQUIRED From a0e966bf5ff85389d9e5459f8aac1366afdfa7b7 Mon Sep 17 00:00:00 2001 From: Hai Nguyen Date: Fri, 23 Feb 2024 21:54:07 +0700 Subject: [PATCH 9/9] chore: Remove test skip Signed-off-by: Hai Nguyen --- .../tests/integration/offline_store/test_feature_logging.py | 5 ----- .../offline_store/test_universal_historical_retrieval.py | 5 ----- 2 files changed, 10 deletions(-) diff --git a/sdk/python/tests/integration/offline_store/test_feature_logging.py b/sdk/python/tests/integration/offline_store/test_feature_logging.py index 6be1edb06f..eba994544d 100644 --- a/sdk/python/tests/integration/offline_store/test_feature_logging.py +++ b/sdk/python/tests/integration/offline_store/test_feature_logging.py @@ -28,11 +28,6 @@ @pytest.mark.integration @pytest.mark.universal_offline_stores @pytest.mark.parametrize("pass_as_path", [True, False], ids=lambda v: str(v)) -@pytest.mark.skipif( - pd.__version__ < "2.2.0" and pd.__version__ >= "2.0.0", - reason="Skip test due to pandas issue 55730 for pandas version 2.0.0 - 2.1.0", - # https://github.com/pandas-dev/pandas/issues/55730 -) def test_feature_service_logging(environment, universal_data_sources, pass_as_path): store = environment.feature_store diff --git a/sdk/python/tests/integration/offline_store/test_universal_historical_retrieval.py b/sdk/python/tests/integration/offline_store/test_universal_historical_retrieval.py index 41f7d6f32f..9baba2397b 100644 --- a/sdk/python/tests/integration/offline_store/test_universal_historical_retrieval.py +++ b/sdk/python/tests/integration/offline_store/test_universal_historical_retrieval.py @@ -518,11 +518,6 @@ def test_historical_features_with_no_ttl( @pytest.mark.integration @pytest.mark.universal_offline_stores -@pytest.mark.skipif( - pd.__version__ < "2.2.0" and pd.__version__ >= "2.0.0", - reason="Skip test due to pandas issue 55730 for pandas version 2.0.0 - 2.1.0", - # https://github.com/pandas-dev/pandas/issues/55730 -) def test_historical_features_from_bigquery_sources_containing_backfills(environment): store = environment.feature_store