From 91632694c23c1750e8364fa5b7b18c297bf47df5 Mon Sep 17 00:00:00 2001 From: Patrick Hoefler Date: Sat, 17 Dec 2022 15:58:40 +0100 Subject: [PATCH 1/2] CI: Unpin pyarrow<10 --- .github/actions/setup-conda/action.yml | 2 +- .github/workflows/ubuntu.yml | 2 +- ci/deps/actions-310.yaml | 2 +- ci/deps/actions-38-downstream_compat.yaml | 2 +- ci/deps/actions-38.yaml | 2 +- ci/deps/actions-39.yaml | 2 +- ci/deps/circle-38-arm64.yaml | 2 +- environment.yml | 2 +- pandas/compat/pyarrow.py | 2 ++ pandas/tests/arrays/interval/test_interval.py | 2 +- pandas/tests/arrays/period/test_arrow_compat.py | 10 ++++++++-- requirements-dev.txt | 2 +- 12 files changed, 20 insertions(+), 12 deletions(-) diff --git a/.github/actions/setup-conda/action.yml b/.github/actions/setup-conda/action.yml index 7d1e54052f938..002d0020c2df1 100644 --- a/.github/actions/setup-conda/action.yml +++ b/.github/actions/setup-conda/action.yml @@ -18,7 +18,7 @@ runs: - name: Set Arrow version in ${{ inputs.environment-file }} to ${{ inputs.pyarrow-version }} run: | grep -q ' - pyarrow' ${{ inputs.environment-file }} - sed -i"" -e "s/ - pyarrow<10/ - pyarrow=${{ inputs.pyarrow-version }}/" ${{ inputs.environment-file }} + sed -i"" -e "s/ - pyarrow/ - pyarrow=${{ inputs.pyarrow-version }}/" ${{ inputs.environment-file }} cat ${{ inputs.environment-file }} shell: bash if: ${{ inputs.pyarrow-version }} diff --git a/.github/workflows/ubuntu.yml b/.github/workflows/ubuntu.yml index 7b4d9235f7ee1..09447b1c8616b 100644 --- a/.github/workflows/ubuntu.yml +++ b/.github/workflows/ubuntu.yml @@ -29,7 +29,7 @@ jobs: matrix: env_file: [actions-38.yaml, actions-39.yaml, actions-310.yaml] pattern: ["not single_cpu", "single_cpu"] - pyarrow_version: ["7", "8", "9"] + pyarrow_version: ["7", "8", "9", "10"] include: - name: "Downstream Compat" env_file: actions-38-downstream_compat.yaml diff --git a/ci/deps/actions-310.yaml b/ci/deps/actions-310.yaml index 6ea073f3df5c8..cc049acfdbea0 100644 --- a/ci/deps/actions-310.yaml +++ b/ci/deps/actions-310.yaml @@ -42,7 +42,7 @@ dependencies: - psycopg2 - pymysql - pytables - - pyarrow<10 + - pyarrow - pyreadstat - python-snappy - pyxlsb diff --git a/ci/deps/actions-38-downstream_compat.yaml b/ci/deps/actions-38-downstream_compat.yaml index 4ed0de692f9fd..282576a34610b 100644 --- a/ci/deps/actions-38-downstream_compat.yaml +++ b/ci/deps/actions-38-downstream_compat.yaml @@ -40,7 +40,7 @@ dependencies: - openpyxl - odfpy - psycopg2 - - pyarrow<10 + - pyarrow - pymysql - pyreadstat - pytables diff --git a/ci/deps/actions-38.yaml b/ci/deps/actions-38.yaml index e3579bbb6033b..37a6b71314cdd 100644 --- a/ci/deps/actions-38.yaml +++ b/ci/deps/actions-38.yaml @@ -40,7 +40,7 @@ dependencies: - odfpy - pandas-gbq - psycopg2 - - pyarrow<10 + - pyarrow - pymysql - pyreadstat - pytables diff --git a/ci/deps/actions-39.yaml b/ci/deps/actions-39.yaml index e408a2e0e2cb7..40041f7e39b33 100644 --- a/ci/deps/actions-39.yaml +++ b/ci/deps/actions-39.yaml @@ -41,7 +41,7 @@ dependencies: - pandas-gbq - psycopg2 - pymysql - - pyarrow<10 + - pyarrow - pyreadstat - pytables - python-snappy diff --git a/ci/deps/circle-38-arm64.yaml b/ci/deps/circle-38-arm64.yaml index ca51f8c74f457..7ba0e038a7845 100644 --- a/ci/deps/circle-38-arm64.yaml +++ b/ci/deps/circle-38-arm64.yaml @@ -40,7 +40,7 @@ dependencies: - odfpy - pandas-gbq - psycopg2 - - pyarrow<10 + - pyarrow - pymysql # Not provided on ARM #- pyreadstat diff --git a/environment.yml b/environment.yml index 904f5849219f7..a8acc80152969 100644 --- a/environment.yml +++ b/environment.yml @@ -43,7 +43,7 @@ dependencies: - odfpy - py - psycopg2 - - pyarrow<10 + - pyarrow - pymysql - pyreadstat - pytables diff --git a/pandas/compat/pyarrow.py b/pandas/compat/pyarrow.py index 2c132b627b965..280fdabf2cc05 100644 --- a/pandas/compat/pyarrow.py +++ b/pandas/compat/pyarrow.py @@ -13,8 +13,10 @@ pa_version_under7p0 = _palv < Version("7.0.0") pa_version_under8p0 = _palv < Version("8.0.0") pa_version_under9p0 = _palv < Version("9.0.0") + pa_version_under10p0 = _palv < Version("10.0.0") except ImportError: pa_version_under6p0 = True pa_version_under7p0 = True pa_version_under8p0 = True pa_version_under9p0 = True + pa_version_under10p0 = True diff --git a/pandas/tests/arrays/interval/test_interval.py b/pandas/tests/arrays/interval/test_interval.py index 28b5f441d3cd5..b0601b9770d64 100644 --- a/pandas/tests/arrays/interval/test_interval.py +++ b/pandas/tests/arrays/interval/test_interval.py @@ -287,7 +287,7 @@ def test_arrow_array(): with pytest.raises(TypeError, match="Not supported to convert IntervalArray"): pa.array(intervals, type="float64") - with pytest.raises(TypeError, match="different 'subtype'"): + with pytest.raises(TypeError, match="different 'subtype'|to convert IntervalArray"): pa.array(intervals, type=ArrowIntervalType(pa.float64(), "left")) diff --git a/pandas/tests/arrays/period/test_arrow_compat.py b/pandas/tests/arrays/period/test_arrow_compat.py index 61670f74f78fb..9e2cb17e4bb84 100644 --- a/pandas/tests/arrays/period/test_arrow_compat.py +++ b/pandas/tests/arrays/period/test_arrow_compat.py @@ -1,5 +1,7 @@ import pytest +from pandas.compat.pyarrow import pa_version_under10p0 + from pandas.core.dtypes.dtypes import PeriodDtype import pandas as pd @@ -52,8 +54,12 @@ def test_arrow_array(data, freq): with pytest.raises(TypeError, match=msg): pa.array(periods, type="float64") - with pytest.raises(TypeError, match="different 'freq'"): - pa.array(periods, type=ArrowPeriodType("T")) + if pa_version_under10p0: + with pytest.raises(TypeError, match="different 'freq'"): + pa.array(periods, type=ArrowPeriodType("T")) + else: + result = pa.array(periods, type=ArrowPeriodType("T")) + assert result.equals(expected) def test_arrow_array_missing(): diff --git a/requirements-dev.txt b/requirements-dev.txt index bc2c4995926fe..6dda49520cc30 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -32,7 +32,7 @@ openpyxl odfpy py psycopg2-binary -pyarrow<10 +pyarrow pymysql pyreadstat tables From 2f5cd6e1fc85153031b51f17f3fba3e216f6d13a Mon Sep 17 00:00:00 2001 From: Patrick Hoefler Date: Mon, 19 Dec 2022 23:26:24 +0100 Subject: [PATCH 2/2] Skip test --- pandas/tests/arrays/period/test_arrow_compat.py | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/pandas/tests/arrays/period/test_arrow_compat.py b/pandas/tests/arrays/period/test_arrow_compat.py index 9e2cb17e4bb84..d76b04df4c9d7 100644 --- a/pandas/tests/arrays/period/test_arrow_compat.py +++ b/pandas/tests/arrays/period/test_arrow_compat.py @@ -28,6 +28,7 @@ def test_arrow_extension_type(): assert hash(p1) != hash(p3) +@pytest.mark.xfail(not pa_version_under10p0, reason="Wrong behavior with pyarrow 10") @pytest.mark.parametrize( "data, freq", [ @@ -54,12 +55,8 @@ def test_arrow_array(data, freq): with pytest.raises(TypeError, match=msg): pa.array(periods, type="float64") - if pa_version_under10p0: - with pytest.raises(TypeError, match="different 'freq'"): - pa.array(periods, type=ArrowPeriodType("T")) - else: - result = pa.array(periods, type=ArrowPeriodType("T")) - assert result.equals(expected) + with pytest.raises(TypeError, match="different 'freq'"): + pa.array(periods, type=ArrowPeriodType("T")) def test_arrow_array_missing():