about summary refs log tree commit diff
path: root/pkgs/development/python-modules/ibis-framework/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/python-modules/ibis-framework/default.nix')
-rw-r--r--pkgs/development/python-modules/ibis-framework/default.nix101
1 files changed, 64 insertions, 37 deletions
diff --git a/pkgs/development/python-modules/ibis-framework/default.nix b/pkgs/development/python-modules/ibis-framework/default.nix
index d1196d4bc3b40..48f13602872e1 100644
--- a/pkgs/development/python-modules/ibis-framework/default.nix
+++ b/pkgs/development/python-modules/ibis-framework/default.nix
@@ -5,18 +5,23 @@
 , pythonOlder
 , pytestCheckHook
 , atpublic
-, click
+, bidict
+, black
 , clickhouse-cityhash
 , clickhouse-driver
 , dask
 , datafusion
+, db-dtypes
 , duckdb
 , duckdb-engine
 , filelock
 , geoalchemy2
 , geopandas
+, google-cloud-bigquery
+, google-cloud-bigquery-storage
 , graphviz-nox
 , hypothesis
+, importlib-resources
 , lz4
 , multipledispatch
 , numpy
@@ -24,83 +29,100 @@
 , pandas
 , parsy
 , poetry-core
-, poetry-dynamic-versioning
+, polars
+, pooch
 , psycopg2
 , pyarrow
-, pydantic
+, pydata-google-auth
+, pydruid
 , pymysql
 , pyspark
 , pytest-benchmark
+, pytest-httpserver
 , pytest-mock
 , pytest-randomly
 , pytest-snapshot
 , pytest-xdist
-, python
+, python-dateutil
 , pytz
 , regex
 , rich
 , rsync
 , shapely
+, snowflake-connector-python
+, snowflake-sqlalchemy
 , sqlalchemy
+, sqlalchemy-views
 , sqlglot
 , sqlite
 , toolz
+, trino-python-client
+, typing-extensions
 }:
 let
-  testBackends = [
-    "datafusion"
-    "duckdb"
-    "pandas"
-    "sqlite"
-  ];
+  testBackends = [ "datafusion" "duckdb" "pandas" "sqlite" ];
 
   ibisTestingData = fetchFromGitHub {
+    name = "ibis-testing-data";
     owner = "ibis-project";
     repo = "testing-data";
-    rev = "3c39abfdb4b284140ff481e8f9fbb128b35f157a";
-    hash = "sha256-BZWi4kEumZemQeYoAtlUSw922p+R6opSWp/bmX0DjAo=";
+    rev = "8a59df99c01fa217259554929543e71c3bbb1761";
+    hash = "sha256-NbgEe0w/qf9hCr9rRfIpyaH9pv25I8x0ykY7EJxDOuk=";
   };
 in
 
 buildPythonPackage rec {
   pname = "ibis-framework";
-  version = "4.1.0";
+  version = "5.1.0";
   format = "pyproject";
 
   disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
+    name = "ibis-source";
     repo = "ibis";
     owner = "ibis-project";
     rev = "refs/tags/${version}";
-    hash = "sha256-ipnMymf+BOpG9iGWO47no47m4nLIBbqLdbzlevuxeBw=";
+    hash = "sha256-u3BBGdhWajZ5WtoBvNxmx76+orfHY6LX3IWAq/x2/9A=";
   };
 
+  patches = [
+    # fixes a small bug in the datafusion backend to reorder predicates
+    (fetchpatch {
+      name = "fix-datafusion-compilation.patch";
+      url = "https://github.com/ibis-project/ibis/commit/009230421b2bc1f86591e8b850d37a489e8e4f06.patch";
+      hash = "sha256-5NHkgc8d2bkOMpbY1vme1XgNfyHSr0f7BrR3JTTjjPI=";
+    })
+  ];
+
   nativeBuildInputs = [
     poetry-core
   ];
 
   propagatedBuildInputs = [
     atpublic
+    bidict
     multipledispatch
     numpy
-    packaging
     pandas
     parsy
-    poetry-dynamic-versioning
-    pydantic
+    pooch
+    python-dateutil
     pytz
-    regex
     rich
+    sqlglot
     toolz
-  ];
+    typing-extensions
+  ] ++ lib.optionals (pythonOlder "3.9") [ importlib-resources ]
+  ++ pooch.optional-dependencies.progress
+  ++ pooch.optional-dependencies.xxhash;
 
   nativeCheckInputs = [
     pytestCheckHook
-    click
     filelock
     hypothesis
     pytest-benchmark
+    pytest-httpserver
     pytest-mock
     pytest-randomly
     pytest-snapshot
@@ -112,15 +134,13 @@ buildPythonPackage rec {
     "--dist=loadgroup"
     "-m"
     "'${lib.concatStringsSep " or " testBackends} or core'"
-    # these will be fixed in ibis-framework 5.0.0
-    "--deselect=ibis/backends/tests/test_string.py::test_string"
-    "--deselect=ibis/backends/tests/test_register.py::test_csv_reregister_schema"
-    "--deselect=ibis/backends/tests/test_client.py::test_list_databases"
+    # sqlalchemy2 breakage
+    "--deselect=ibis/tests/sql/test_sqlalchemy.py::test_tpc_h17"
+    # tries to download duckdb extensions
+    "--deselect=ibis/backends/duckdb/tests/test_register.py::test_register_sqlite"
+    "--deselect=ibis/backends/duckdb/tests/test_register.py::test_read_sqlite"
   ];
 
-  # remove when sqlalchemy backend no longer uses deprecated methods
-  SQLALCHEMY_SILENCE_UBER_WARNING = 1;
-
   # patch out tests that check formatting with black
   postPatch = ''
     find ibis/tests -type f -name '*.py' -exec sed -i \
@@ -131,8 +151,8 @@ buildPythonPackage rec {
   preCheck = ''
     set -eo pipefail
 
-    export IBIS_TEST_DATA_DIRECTORY
-    IBIS_TEST_DATA_DIRECTORY="ci/ibis-testing-data"
+    HOME="$TMPDIR"
+    export IBIS_TEST_DATA_DIRECTORY="ci/ibis-testing-data"
 
     mkdir -p "$IBIS_TEST_DATA_DIRECTORY"
 
@@ -150,23 +170,30 @@ buildPythonPackage rec {
 
   passthru = {
     optional-dependencies = {
-      clickhouse = [ clickhouse-cityhash clickhouse-driver lz4 sqlglot ];
-      dask = [ dask pyarrow ];
+      bigquery = [ db-dtypes google-cloud-bigquery google-cloud-bigquery-storage pydata-google-auth ];
+      clickhouse = [ clickhouse-cityhash clickhouse-driver lz4 sqlalchemy ];
+      dask = [ dask pyarrow regex ];
       datafusion = [ datafusion ];
-      duckdb = [ duckdb duckdb-engine pyarrow sqlalchemy sqlglot ];
+      druid = [ pydruid sqlalchemy ];
+      duckdb = [ duckdb duckdb-engine packaging pyarrow sqlalchemy sqlalchemy-views ];
       geospatial = [ geoalchemy2 geopandas shapely ];
-      mysql = [ sqlalchemy pymysql sqlglot ];
-      pandas = [ ];
-      postgres = [ psycopg2 sqlalchemy sqlglot ];
-      pyspark = [ pyarrow pyspark ];
-      sqlite = [ sqlalchemy sqlite sqlglot ];
+      mysql = [ sqlalchemy pymysql sqlalchemy-views ];
+      pandas = [ regex ];
+      polars = [ polars pyarrow ];
+      postgres = [ psycopg2 sqlalchemy sqlalchemy-views ];
+      pyspark = [ pyarrow pyspark sqlalchemy ];
+      snowflake = [ snowflake-connector-python snowflake-sqlalchemy sqlalchemy-views ];
+      sqlite = [ regex sqlalchemy sqlite sqlalchemy-views ];
+      trino = [ trino-python-client sqlalchemy sqlalchemy-views ];
       visualization = [ graphviz-nox ];
+      decompiler = [ black ];
     };
   };
 
   meta = with lib; {
     description = "Productivity-centric Python Big Data Framework";
     homepage = "https://github.com/ibis-project/ibis";
+    changelog = "https://github.com/ibis-project/ibis/blob/${version}/docs/release_notes.md";
     license = licenses.asl20;
     maintainers = with maintainers; [ costrouc cpcloud ];
   };