16 google-cloud-bigquery,
17 google-cloud-bigquery-storage,
27 poetry-dynamic-versioning,
49 snowflake-connector-python,
62 ibisTestingData = fetchFromGitHub {
63 name = "ibis-testing-data";
64 owner = "ibis-project";
65 repo = "testing-data";
66 # https://github.com/ibis-project/ibis/blob/9.5.0/nix/overlay.nix#L20-L26
67 rev = "b26bd40cf29004372319df620c4bbe41420bb6f8";
68 hash = "sha256-1fenQNQB+Q0pbb0cbK2S/UIwZDE4PXXG15MH3aVbyLU=";
72 buildPythonPackage rec {
73 pname = "ibis-framework";
77 disabled = pythonOlder "3.10";
79 src = fetchFromGitHub {
82 owner = "ibis-project";
83 rev = "refs/tags/${version}";
84 hash = "sha256-6ebw/E3jZFMHKqC5ZY//2Ke0NrklyoGp5JGKBfDxy40=";
88 # remove after the 10.0 release
90 name = "ibis-framework-duckdb-1.1.1.patch";
91 url = "https://github.com/ibis-project/ibis/commit/a54eceabac1d6592e9f6ab0ca7749e37a748c2ad.patch";
92 hash = "sha256-j5BPYVqnEF9GQV5N3/VhFUCdsEwAIOQC0KfZ5LNBSRg=";
95 # remove after the 10.0 release
97 name = "ibis-framework-arrow-18.patch";
98 url = "https://github.com/ibis-project/ibis/commit/5dc549b22c2eca29a11a31fb29deef7c1466a204.patch";
99 hash = "sha256-4i/g2uixdlkbE6x659wzZJ91FZpzwOVkF6ZeXkiCP3I=";
102 "requirements-dev.txt"
109 poetry-dynamic-versioning
112 dontBypassPoetryDynamicVersioning = true;
113 env.POETRY_DYNAMIC_VERSIONING_BYPASS = lib.head (lib.strings.splitString "-" version);
125 nativeCheckInputs = [
136 # this dependency is still needed due to use of strict markers and
137 # `pytest.mark.xdist_group` in the ibis codebase
139 ] ++ lib.concatMap (name: optional-dependencies.${name}) testBackends;
143 "'${lib.concatStringsSep " or " testBackends} or core'"
147 # tries to download duckdb extensions
149 "test_connect_extensions"
150 "test_load_extension"
152 "test_register_sqlite"
153 # requires network connection
154 "test_s3_403_fallback"
156 # requires pytest 8.2+
157 "test_roundtrip_delta"
160 # patch out tests that check formatting with black
162 find ibis/tests -type f -name '*.py' -exec sed -i \
163 -e '/^ *assert_decompile_roundtrip/d' \
164 -e 's/^\( *\)code = ibis.decompile(expr, format=True)/\1code = ibis.decompile(expr)/g' {} +
169 export IBIS_TEST_DATA_DIRECTORY="ci/ibis-testing-data"
171 # copy the test data to a directory
172 ln -s "${ibisTestingData}" "$IBIS_TEST_DATA_DIRECTORY"
176 rm -r "$IBIS_TEST_DATA_DIRECTORY"
179 pythonImportsCheck = [ "ibis" ] ++ map (backend: "ibis.backends.${backend}") testBackends;
181 optional-dependencies = {
184 google-cloud-bigquery
185 google-cloud-bigquery-storage
289 snowflake-connector-python
312 visualization = [ graphviz ];
313 decompiler = [ black ];
314 examples = [ pins ] ++ pins.optional-dependencies.gcs;
318 description = "Productivity-centric Python Big Data Framework";
319 homepage = "https://github.com/ibis-project/ibis";
320 changelog = "https://github.com/ibis-project/ibis/blob/${version}/docs/release_notes.md";
321 license = licenses.asl20;
322 maintainers = with maintainers; [ cpcloud ];