diff --git a/pkgs/development/python-modules/ibis-framework/default.nix b/pkgs/development/python-modules/ibis-framework/default.nix index dee63fb0856..c5dfcc13e5c 100644 --- a/pkgs/development/python-modules/ibis-framework/default.nix +++ b/pkgs/development/python-modules/ibis-framework/default.nix @@ -5,37 +5,45 @@ , pytestCheckHook , atpublic , cached-property -, clickhouse-driver , click +, clickhouse-cityhash +, clickhouse-driver , dask , datafusion , duckdb , duckdb-engine -, graphviz +, geoalchemy2 +, geopandas +, graphviz-nox , importlib-metadata +, lz4 , multipledispatch , numpy +, packaging , pandas , parsy , poetry-core , poetry-dynamic-versioning +, psycopg2 , pyarrow , pydantic +, pymysql +, pyspark , pytest-benchmark +, pytest-randomly , pytest-mock , pytest-xdist , python , pytz , regex -, requests +, shapely , sqlalchemy , sqlite , tabulate , toolz }: let - # ignore tests for which dependencies are not available - backends = [ + testBackends = [ "dask" "datafusion" "duckdb" @@ -70,24 +78,16 @@ buildPythonPackage rec { propagatedBuildInputs = [ atpublic cached-property - clickhouse-driver - dask - datafusion - duckdb - duckdb-engine - graphviz importlib-metadata multipledispatch numpy + packaging pandas parsy poetry-dynamic-versioning - pyarrow pydantic pytz regex - requests - sqlalchemy tabulate toolz ]; @@ -97,9 +97,9 @@ buildPythonPackage rec { click pytest-benchmark pytest-mock + pytest-randomly pytest-xdist - sqlite - ]; + ] ++ lib.concatMap (name: passthru.extras-require.${name}) testBackends; preBuild = '' # setup.py exists only for developer convenience and is automatically generated @@ -109,7 +109,7 @@ buildPythonPackage rec { pytestFlagsArray = [ "--dist=loadgroup" "-m" - "'${lib.concatStringsSep " or " backends} or core'" + "'${lib.concatStringsSep " or " testBackends} or core'" ]; preCheck = '' @@ -125,7 +125,7 @@ buildPythonPackage rec { find "$IBIS_TEST_DATA_DIRECTORY" -type f -exec chmod u+rw {} + # load data - for backend in ${lib.concatStringsSep " " backends}; do + for backend in ${lib.concatStringsSep " " testBackends}; do ${python.interpreter} ci/datamgr.py load "$backend" done ''; @@ -136,7 +136,23 @@ buildPythonPackage rec { pythonImportsCheck = [ "ibis" - ] ++ (map (backend: "ibis.backends.${backend}") backends); + ] ++ map (backend: "ibis.backends.${backend}") testBackends; + + passthru = { + extras-require = { + clickhouse = [ clickhouse-cityhash clickhouse-driver lz4 ]; + dask = [ dask pyarrow ]; + datafusion = [ datafusion ]; + duckdb = [ duckdb duckdb-engine sqlalchemy ]; + geospatial = [ geoalchemy2 geopandas shapely ]; + mysql = [ pymysql sqlalchemy ]; + pandas = [ ]; + postgres = [ psycopg2 sqlalchemy ]; + pyspark = [ pyarrow pyspark ]; + sqlite = [ sqlalchemy sqlite ]; + visualization = [ graphviz-nox ]; + }; + }; meta = with lib; { description = "Productivity-centric Python Big Data Framework";