ansible-later: 2.0.22 -> 2.0.23
[NixPkgs.git] / pkgs / development / python-modules / ibis-framework / default.nix
blob84c1a7e93040283ac7aaa87dd4f756813d2a1dc6
1 { lib
2 , buildPythonPackage
3 , fetchFromGitHub
4 , fetchpatch
5 , pythonOlder
6 , pytestCheckHook
7 , atpublic
8 , click
9 , clickhouse-cityhash
10 , clickhouse-driver
11 , dask
12 , datafusion
13 , duckdb
14 , duckdb-engine
15 , filelock
16 , geoalchemy2
17 , geopandas
18 , graphviz-nox
19 , lz4
20 , multipledispatch
21 , numpy
22 , packaging
23 , pandas
24 , parsy
25 , poetry-core
26 , poetry-dynamic-versioning
27 , psycopg2
28 , pyarrow
29 , pydantic
30 , pymysql
31 , pyspark
32 , pytest-benchmark
33 , pytest-randomly
34 , pytest-mock
35 , pytest-xdist
36 , python
37 , pytz
38 , regex
39 , rich
40 , rsync
41 , shapely
42 , sqlalchemy
43 , sqlglot
44 , sqlite
45 , toolz
47 let
48   testBackends = [
49     "datafusion"
50     "duckdb"
51     "pandas"
52     "sqlite"
53   ];
55   ibisTestingData = fetchFromGitHub {
56     owner = "ibis-project";
57     repo = "testing-data";
58     rev = "3c39abfdb4b284140ff481e8f9fbb128b35f157a";
59     sha256 = "sha256-BZWi4kEumZemQeYoAtlUSw922p+R6opSWp/bmX0DjAo=";
60   };
63 buildPythonPackage rec {
64   pname = "ibis-framework";
65   version = "3.2.0";
66   format = "pyproject";
68   disabled = pythonOlder "3.8";
70   src = fetchFromGitHub {
71     repo = "ibis";
72     owner = "ibis-project";
73     rev = version;
74     hash = "sha256-YRP1nGJs4btqXQirm0GfEDKNPCVXexVrwQ6sE8JtD2o=";
75   };
77   nativeBuildInputs = [ poetry-core ];
79   propagatedBuildInputs = [
80     atpublic
81     multipledispatch
82     numpy
83     packaging
84     pandas
85     parsy
86     poetry-dynamic-versioning
87     pydantic
88     pytz
89     regex
90     rich
91     toolz
92   ];
94   checkInputs = [
95     pytestCheckHook
96     click
97     filelock
98     pytest-benchmark
99     pytest-mock
100     pytest-randomly
101     pytest-xdist
102     rsync
103   ] ++ lib.concatMap (name: passthru.optional-dependencies.${name}) testBackends;
105   preBuild = ''
106     # setup.py exists only for developer convenience and is automatically generated
107     # it gets in the way in nixpkgs so we remove it
108     rm setup.py
109   '';
111   pytestFlagsArray = [
112     "--dist=loadgroup"
113     "-m"
114     "'${lib.concatStringsSep " or " testBackends} or core'"
115     # this test fails on nixpkgs datafusion version (0.4.0), but works on
116     # datafusion 0.6.0
117     "-k"
118     "'not datafusion-no_op'"
119   ];
121   preCheck = ''
122     set -eo pipefail
124     export IBIS_TEST_DATA_DIRECTORY
125     IBIS_TEST_DATA_DIRECTORY="ci/ibis-testing-data"
127     mkdir -p "$IBIS_TEST_DATA_DIRECTORY"
129     # copy the test data to a directory
130     rsync --chmod=Du+rwx,Fu+rw --archive "${ibisTestingData}/" "$IBIS_TEST_DATA_DIRECTORY"
131   '';
133   postCheck = ''
134     rm -r "$IBIS_TEST_DATA_DIRECTORY"
135   '';
137   pythonImportsCheck = [
138     "ibis"
139   ] ++ map (backend: "ibis.backends.${backend}") testBackends;
141   passthru = {
142     optional-dependencies = {
143       clickhouse = [ clickhouse-cityhash clickhouse-driver lz4 sqlglot ];
144       dask = [ dask pyarrow ];
145       datafusion = [ datafusion ];
146       duckdb = [ duckdb duckdb-engine pyarrow sqlalchemy sqlglot ];
147       geospatial = [ geoalchemy2 geopandas shapely ];
148       mysql = [ sqlalchemy pymysql sqlglot ];
149       pandas = [ ];
150       postgres = [ psycopg2 sqlalchemy sqlglot ];
151       pyspark = [ pyarrow pyspark ];
152       sqlite = [ sqlalchemy sqlite sqlglot ];
153       visualization = [ graphviz-nox ];
154     };
155   };
157   meta = with lib; {
158     description = "Productivity-centric Python Big Data Framework";
159     homepage = "https://github.com/ibis-project/ibis";
160     license = licenses.asl20;
161     maintainers = with maintainers; [ costrouc cpcloud ];
162   };