diff options
Diffstat (limited to 'pkgs/development/python-modules/ibis-framework/default.nix')
-rw-r--r-- | pkgs/development/python-modules/ibis-framework/default.nix | 101 |
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 ]; }; |