{ lib , buildPythonPackage , fetchFromGitHub , pythonOlder , pytestCheckHook , atpublic , cached-property , clickhouse-driver , click , dask , datafusion , duckdb , duckdb-engine , graphviz , importlib-metadata , multipledispatch , numpy , pandas , parsy , poetry-core , poetry-dynamic-versioning , pyarrow , pydantic , pytest-benchmark , pytest-mock , pytest-xdist , python , pytz , regex , requests , sqlalchemy , sqlite , tabulate , toolz }: let # ignore tests for which dependencies are not available backends = [ "dask" "datafusion" "duckdb" "pandas" "sqlite" ]; ibisTestingData = fetchFromGitHub { owner = "ibis-project"; repo = "testing-data"; rev = "a88a4b3c3b54a88e7f77e59de70f5bf20fb62f19"; sha256 = "sha256-BnRhVwPcWFwiBJ2ySgiiuUdnF4gesnTq1/dLcuvc868="; }; in buildPythonPackage rec { pname = "ibis-framework"; version = "3.0.2"; format = "pyproject"; disabled = pythonOlder "3.8"; src = fetchFromGitHub { repo = "ibis"; owner = "ibis-project"; rev = version; hash = "sha256-7ywDMAHQAl39kiHfxVkq7voUEKqbb9Zq8qlaug7+ukI="; }; nativeBuildInputs = [ poetry-core ]; propagatedBuildInputs = [ atpublic cached-property clickhouse-driver dask datafusion duckdb duckdb-engine graphviz importlib-metadata multipledispatch numpy pandas parsy poetry-dynamic-versioning pyarrow pydantic pytz regex requests sqlalchemy tabulate toolz ]; checkInputs = [ pytestCheckHook click pytest-benchmark pytest-mock pytest-xdist sqlite ]; preBuild = '' # setup.py exists only for developer convenience and is automatically generated rm setup.py ''; pytestFlagsArray = [ "--dist=loadgroup" "-m" "'${lib.concatStringsSep " or " backends} or core'" ]; preCheck = '' set -eo pipefail export IBIS_TEST_DATA_DIRECTORY IBIS_TEST_DATA_DIRECTORY="$(mktemp -d)" # copy the test data to a writable directory cp -r ${ibisTestingData}/* "$IBIS_TEST_DATA_DIRECTORY" find "$IBIS_TEST_DATA_DIRECTORY" -type d -exec chmod u+rwx {} + find "$IBIS_TEST_DATA_DIRECTORY" -type f -exec chmod u+rw {} + # load data for backend in ${lib.concatStringsSep " " backends}; do ${python.interpreter} ci/datamgr.py load "$backend" done ''; postCheck = '' rm -r "$IBIS_TEST_DATA_DIRECTORY" ''; pythonImportsCheck = [ "ibis" ] ++ (map (backend: "ibis.backends.${backend}") backends); meta = with lib; { description = "Productivity-centric Python Big Data Framework"; homepage = "https://github.com/ibis-project/ibis"; license = licenses.asl20; maintainers = with maintainers; [ costrouc cpcloud ]; }; }