biome: 1.9.2 -> 1.9.3
[NixPkgs.git] / pkgs / applications / misc / visidata / default.nix
blobd7a7c4d9f75f46ad0e9b9e55d6ffa8c1bbc8ab82
1 { stdenv
2 , lib
3 , buildPythonApplication
4 , fetchFromGitHub
5 , fetchpatch
6   # python requirements
7 , beautifulsoup4
8 , boto3
9 , faker
10 , fonttools
11 , h5py
12 , importlib-metadata
13 , lxml
14 , matplotlib
15 , numpy
16 , odfpy
17 , openpyxl
18 , pandas
19 , pdfminer-six
20 , praw
21 , psutil
22 , psycopg2
23 , pyarrow
24 , pyshp
25 , pypng
26 , python-dateutil
27 , pyyaml
28 , requests
29 , seaborn
30 , setuptools
31 , sh
32 , tabulate
33 , urllib3
34 , vobject
35 , wcwidth
36 , xlrd
37 , xlwt
38 , zstandard
39 , zulip
40 # other
41 , git
42 , withPcap ? true, dpkt, dnslib
43 , withXclip ? stdenv.hostPlatform.isLinux, xclip
44 , testers
45 , visidata
47 buildPythonApplication rec {
48   pname = "visidata";
49   version = "3.0.2";
51   src = fetchFromGitHub {
52     owner = "saulpw";
53     repo = "visidata";
54     rev = "v${version}";
55     hash = "sha256-gplrkrFTIP6TLvk1YazD5roDzsPvDtOXLlTOmTio52s=";
56   };
58   patches = [
59     # Drop when next release is out
60     (fetchpatch {
61       name = "drop-support-for-python-37.patch";
62       url = "https://github.com/saulpw/visidata/commit/738bb8b43814c14b1b8a1f1f60397c1520c5ef4a.patch";
63       hash = "sha256-5jDAzKMuW3s7BCGpWyLcS4Lw8GUbjNxVhF5mUKbR1YY=";
64     })
65     (fetchpatch {
66       name = "update-tests-for-python-312.patch";
67       url = "https://github.com/saulpw/visidata/commit/627f6f126cdd49bcdda0bbc16fab42eb5bd42103.patch";
68       hash = "sha256-3FHgjLrzMHObEheJoRY8VlnDUtDZ68FqCqAyhP7333E=";
69     })
70   ];
72   propagatedBuildInputs = [
73     # from visidata/requirements.txt
74     # packages not (yet) present in nixpkgs are commented
75     python-dateutil
76     pandas
77     requests
78     lxml
79     openpyxl
80     xlrd
81     xlwt
82     h5py
83     psycopg2
84     boto3
85     pyshp
86     #mapbox-vector-tile
87     pypng
88     #pyconll
89     fonttools
90     #sas7bdat
91     #xport
92     #savReaderWriter
93     pyyaml
94     #namestand
95     #datapackage
96     pdfminer-six
97     #tabula
98     vobject
99     tabulate
100     wcwidth
101     zstandard
102     odfpy
103     urllib3
104     pyarrow
105     seaborn
106     matplotlib
107     sh
108     psutil
109     numpy
111     #requests_cache
112     beautifulsoup4
114     faker
115     praw
116     zulip
117     #pyairtable
119     setuptools
120     importlib-metadata
121   ] ++ lib.optionals withPcap [ dpkt dnslib ]
122   ++ lib.optional withXclip xclip;
124   nativeCheckInputs = [
125     git
126   ];
128   # check phase uses the output bin, which is not possible when cross-compiling
129   doCheck = stdenv.buildPlatform == stdenv.hostPlatform;
131   checkPhase = ''
132     runHook preCheck
134     # disable some tests which require access to the network
135     rm -f tests/load-http.vd            # http
136     rm -f tests/graph-cursor-nosave.vd  # http
137     rm -f tests/messenger-nosave.vd     # dns
139     # tests to disable because we don't have a package to load such files
140     rm -f tests/load-conllu.vdj         # no 'pyconll'
141     rm -f tests/load-sav.vd             # no 'savReaderWriter'
143     # tests use git to compare outputs to references
144     git init -b "test-reference"
145     git config user.name "nobody"
146     git config user.email "no@where"
147     git add .
148     git commit -m "test reference"
150     substituteInPlace dev/test.sh --replace "bin/vd" "$out/bin/vd"
151     bash dev/test.sh
152     runHook postCheck
153   '';
154   postInstall = ''
155     python dev/zsh-completion.py
156     install -Dm644 _visidata -t $out/share/zsh/site-functions
157   '';
159   pythonImportsCheck = ["visidata"];
161   passthru.tests.version = testers.testVersion {
162     package = visidata;
163     version = "v${version}";
164   };
166   meta = {
167     description = "Interactive terminal multitool for tabular data";
168     license = lib.licenses.gpl3;
169     maintainers = with lib.maintainers; [ raskin markus1189 ];
170     homepage = "https://visidata.org/";
171     changelog = "https://github.com/saulpw/visidata/blob/v${version}/CHANGELOG.md";
172   };