diff --git a/.github/workflows/check-generated-files.yml b/.github/workflows/check-generated-files.yml index f68ddf0c0de5..9b3e5d3a92fc 100644 --- a/.github/workflows/check-generated-files.yml +++ b/.github/workflows/check-generated-files.yml @@ -37,7 +37,7 @@ jobs: uses: actions/setup-python@v5 id: install_python with: - python-version: "3.11" + python-version: "3.12" cache: pip cache-dependency-path: requirements-dev.txt diff --git a/.github/workflows/ibis-backends.yml b/.github/workflows/ibis-backends.yml index 5ef41e9bf8a9..0cafdd05e500 100644 --- a/.github/workflows/ibis-backends.yml +++ b/.github/workflows/ibis-backends.yml @@ -563,6 +563,11 @@ jobs: deps: - "'pandas@>2'" - "'numpy@>1.24'" + - python-version: "3.12" + pyspark-version: "3.5" + deps: + - "'pandas@>2'" + - "'numpy@>1.24'" steps: - name: checkout uses: actions/checkout@v4 diff --git a/.github/workflows/ibis-benchmarks.yml b/.github/workflows/ibis-benchmarks.yml index a7652fa52915..95ba89863c0c 100644 --- a/.github/workflows/ibis-benchmarks.yml +++ b/.github/workflows/ibis-benchmarks.yml @@ -30,7 +30,7 @@ jobs: uses: actions/setup-python@v5 id: install_python with: - python-version: "3.11" + python-version: "3.12" cache: poetry - name: install system dependencies diff --git a/.github/workflows/ibis-main.yml b/.github/workflows/ibis-main.yml index f7bbe24420e9..61f9ea4325b2 100644 --- a/.github/workflows/ibis-main.yml +++ b/.github/workflows/ibis-main.yml @@ -49,6 +49,7 @@ jobs: - "3.9" - "3.10" - "3.11" + - "3.12" steps: - name: checkout uses: actions/checkout@v4 @@ -101,14 +102,7 @@ jobs: test_shapely_duckdb_import: name: Test shapely and duckdb import - runs-on: ${{ matrix.os }} - strategy: - fail-fast: false - matrix: - os: - - ubuntu-latest - python-version: - - "3.11" + runs-on: ubuntu-latest steps: - name: checkout uses: actions/checkout@v4 @@ -120,10 +114,10 @@ jobs: uses: actions/setup-python@v5 id: install_python with: - python-version: ${{ matrix.python-version }} + python-version: "3.12" cache: poetry - - name: install ${{ matrix.os }} system dependencies + - name: install system dependencies run: | set -euo pipefail @@ -141,14 +135,7 @@ jobs: # FIXME(kszucs): re-enable this build if: false name: Doctests - runs-on: ${{ matrix.os }} - strategy: - fail-fast: false - matrix: - os: - - ubuntu-latest - python-version: - - "3.11" + runs-on: ubuntu-latest steps: - name: install system dependencies run: | @@ -167,7 +154,7 @@ jobs: uses: actions/setup-python@v5 id: install_python with: - python-version: ${{ matrix.python-version }} + python-version: "3.12" cache: poetry - name: install ibis with all extras diff --git a/.github/workflows/nix-skip-helper.yml b/.github/workflows/nix-skip-helper.yml index 7c09f2c2b9f0..aca9879f1871 100644 --- a/.github/workflows/nix-skip-helper.yml +++ b/.github/workflows/nix-skip-helper.yml @@ -36,5 +36,6 @@ jobs: - "3.9" - "3.10" - "3.11" + - "3.12" steps: - run: echo "No build required" diff --git a/.github/workflows/nix.yml b/.github/workflows/nix.yml index c9747dc72c2c..95bb6e52dfa8 100644 --- a/.github/workflows/nix.yml +++ b/.github/workflows/nix.yml @@ -37,6 +37,7 @@ jobs: - "3.9" - "3.10" - "3.11" + - "3.12" steps: - name: checkout uses: actions/checkout@v4 diff --git a/flake.nix b/flake.nix index 3f7f55053adf..858eff0aa63e 100644 --- a/flake.nix +++ b/flake.nix @@ -125,9 +125,9 @@ in rec { packages = { - inherit (pkgs) ibis39 ibis310 ibis311; + inherit (pkgs) ibis39 ibis310 ibis311 ibis312; - default = pkgs.ibis311; + default = pkgs.ibis312; inherit (pkgs) update-lock-files gen-all-extras gen-examples check-release-notes-spelling; }; @@ -136,8 +136,9 @@ ibis39 = mkDevShell pkgs.ibisDevEnv39; ibis310 = mkDevShell pkgs.ibisDevEnv310; ibis311 = mkDevShell pkgs.ibisDevEnv311; + ibis312 = mkDevShell pkgs.ibisDevEnv312; - default = ibis311; + default = ibis312; preCommit = pkgs.mkShell { name = "preCommit"; diff --git a/ibis/backends/tests/test_temporal.py b/ibis/backends/tests/test_temporal.py index 848309b5f10b..f05da04a3f12 100644 --- a/ibis/backends/tests/test_temporal.py +++ b/ibis/backends/tests/test_temporal.py @@ -1575,7 +1575,7 @@ def test_now_from_projection(alltypes): ts = result.now assert len(result) == n assert ts.nunique() == 1 - assert ~pd.isna(ts.iat[0]) + assert not pd.isna(ts.iat[0]) DATE_BACKEND_TYPES = { diff --git a/nix/overlay.nix b/nix/overlay.nix index 5608f2ca97b2..72661c22d1c8 100644 --- a/nix/overlay.nix +++ b/nix/overlay.nix @@ -28,13 +28,15 @@ in ibis39 = pkgs.callPackage ./ibis.nix { python3 = pkgs.python39; }; ibis310 = pkgs.callPackage ./ibis.nix { python3 = pkgs.python310; }; ibis311 = pkgs.callPackage ./ibis.nix { python3 = pkgs.python311; }; + ibis312 = pkgs.callPackage ./ibis.nix { python3 = pkgs.python312; }; ibisDevEnv39 = mkPoetryDevEnv pkgs.python39; ibisDevEnv310 = mkPoetryDevEnv pkgs.python310; ibisDevEnv311 = mkPoetryDevEnv pkgs.python311; + ibisDevEnv312 = mkPoetryDevEnv pkgs.python312; ibisSmallDevEnv = mkPoetryEnv { - python = pkgs.python311; + python = pkgs.python312; groups = [ "dev" ]; extras = [ ]; }; @@ -73,7 +75,7 @@ in gen-examples = pkgs.writeShellApplication { name = "gen-examples"; runtimeInputs = [ - pkgs.ibisDevEnv311 + pkgs.ibisDevEnv312 (pkgs.rWrapper.override { packages = with pkgs.rPackages; [ Lahman diff --git a/poetry-overrides.nix b/poetry-overrides.nix index 212b84c5da3c..c453045be05c 100644 --- a/poetry-overrides.nix +++ b/poetry-overrides.nix @@ -42,4 +42,12 @@ self: super: { rm $out/${self.python.sitePackages}/pyflink/__pycache__/version.*.pyc ''; }); + + thrift = super.thrift.overridePythonAttrs (attrs: { + # ignore silly bytecode-compilation-on-install for Pythons >= 3.12 + postPatch = (attrs.postPatch or "") + + self.pkgs.lib.optionalString (self.pkgs.lib.versionAtLeast self.python.version "3.12") '' + substituteInPlace setup.cfg --replace 'optimize = 1' 'optimize = 0' + ''; + }); } diff --git a/pyproject.toml b/pyproject.toml index dacb12246939..f7fbbd219c0d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -323,6 +323,10 @@ filterwarnings = [ "ignore:is_sparse is deprecated and will be removed in a future version:DeprecationWarning", # google-api-core "ignore:Please install grpcio-status to obtain helpful grpc error messages.", + # dateutil tz + 'ignore:datetime\.datetime\.utcfromtimestamp\(\) is deprecated and scheduled for removal:DeprecationWarning', + # types using custom tp_new are deprecated in python 3.12 + "ignore:Type .+ uses PyType_Spec with a metaclass that has custom tp_new:DeprecationWarning", ] empty_parameter_set_mark = "fail_at_collect" markers = [