176 lines
3.3 KiB
Nix
176 lines
3.3 KiB
Nix
{
|
|
stdenv,
|
|
lib,
|
|
buildPythonApplication,
|
|
fetchFromGitHub,
|
|
# python requirements
|
|
beautifulsoup4,
|
|
boto3,
|
|
faker,
|
|
fonttools,
|
|
h5py,
|
|
importlib-metadata,
|
|
lxml,
|
|
matplotlib,
|
|
numpy,
|
|
odfpy,
|
|
openpyxl,
|
|
pandas,
|
|
pdfminer-six,
|
|
praw,
|
|
psutil,
|
|
psycopg2,
|
|
pyarrow,
|
|
pyshp,
|
|
pypng,
|
|
msgpack,
|
|
brotli,
|
|
python-dateutil,
|
|
pyyaml,
|
|
requests,
|
|
seaborn,
|
|
setuptools,
|
|
sh,
|
|
tabulate,
|
|
urllib3,
|
|
vobject,
|
|
wcwidth,
|
|
xlrd,
|
|
xlwt,
|
|
zstandard,
|
|
zulip,
|
|
# other
|
|
git,
|
|
withPcap ? true,
|
|
dpkt,
|
|
dnslib,
|
|
withXclip ? stdenv.hostPlatform.isLinux,
|
|
xclip,
|
|
testers,
|
|
visidata,
|
|
}:
|
|
buildPythonApplication rec {
|
|
pname = "visidata";
|
|
version = "3.1.1";
|
|
|
|
src = fetchFromGitHub {
|
|
owner = "saulpw";
|
|
repo = "visidata";
|
|
rev = "v${version}";
|
|
hash = "sha256-ICEYC9QjYrB+oTzakfjgyg4DigzDOtYnqHRTaqF7Gw0=";
|
|
};
|
|
|
|
propagatedBuildInputs =
|
|
[
|
|
# from visidata/requirements.txt
|
|
# packages not (yet) present in nixpkgs are commented
|
|
python-dateutil
|
|
pandas
|
|
requests
|
|
lxml
|
|
openpyxl
|
|
xlrd
|
|
xlwt
|
|
h5py
|
|
psycopg2
|
|
boto3
|
|
pyshp
|
|
#mapbox-vector-tile
|
|
pypng
|
|
#pyconll
|
|
msgpack
|
|
brotli
|
|
#fecfile
|
|
fonttools
|
|
#sas7bdat
|
|
#xport
|
|
#savReaderWriter
|
|
pyyaml
|
|
#namestand
|
|
#datapackage
|
|
pdfminer-six
|
|
#tabula
|
|
vobject
|
|
tabulate
|
|
wcwidth
|
|
zstandard
|
|
odfpy
|
|
urllib3
|
|
pyarrow
|
|
seaborn
|
|
matplotlib
|
|
sh
|
|
psutil
|
|
numpy
|
|
|
|
#requests_cache
|
|
beautifulsoup4
|
|
|
|
faker
|
|
praw
|
|
zulip
|
|
#pyairtable
|
|
|
|
setuptools
|
|
importlib-metadata
|
|
]
|
|
++ lib.optionals withPcap [
|
|
dpkt
|
|
dnslib
|
|
]
|
|
++ lib.optional withXclip xclip;
|
|
|
|
nativeCheckInputs = [
|
|
git
|
|
];
|
|
|
|
# check phase uses the output bin, which is not possible when cross-compiling
|
|
doCheck = stdenv.buildPlatform.canExecute stdenv.hostPlatform;
|
|
|
|
checkPhase = ''
|
|
runHook preCheck
|
|
|
|
# disable some tests which require access to the network
|
|
rm -f tests/load-http.vd # http
|
|
rm -f tests/graph-cursor-nosave.vd # http
|
|
rm -f tests/messenger-nosave.vd # dns
|
|
|
|
# tests to disable because we don't have a package to load such files
|
|
rm -f tests/load-conllu.vdj # no 'pyconll'
|
|
rm -f tests/load-sav.vd # no 'savReaderWriter'
|
|
rm -f tests/load-fec.vdj # no 'fecfile'
|
|
|
|
# tests use git to compare outputs to references
|
|
git init -b "test-reference"
|
|
git config user.name "nobody"
|
|
git config user.email "no@where"
|
|
git add .
|
|
git commit -m "test reference"
|
|
|
|
substituteInPlace dev/test.sh --replace "bin/vd" "$out/bin/vd"
|
|
bash dev/test.sh
|
|
runHook postCheck
|
|
'';
|
|
postInstall = ''
|
|
python dev/zsh-completion.py
|
|
install -Dm644 _visidata -t $out/share/zsh/site-functions
|
|
'';
|
|
|
|
pythonImportsCheck = [ "visidata" ];
|
|
|
|
passthru.tests.version = testers.testVersion {
|
|
package = visidata;
|
|
version = "v${version}";
|
|
};
|
|
|
|
meta = {
|
|
description = "Interactive terminal multitool for tabular data";
|
|
license = lib.licenses.gpl3;
|
|
maintainers = with lib.maintainers; [
|
|
raskin
|
|
markus1189
|
|
];
|
|
homepage = "https://visidata.org/";
|
|
changelog = "https://github.com/saulpw/visidata/blob/v${version}/CHANGELOG.md";
|
|
};
|
|
}
|