1{ lib
2, buildPythonPackage
3, fetchFromGitHub
4, pythonOlder
5, attrs
6, bitstruct
7, click
8, future
9, pathlib2
10, typing ? null
11, lxml
12, xlwt
13, xlrd
14, XlsxWriter
15, pyyaml
16, pytestCheckHook
17}:
18
19buildPythonPackage rec {
20 pname = "canmatrix";
21 version = "0.9.5";
22
23 # uses fetchFromGitHub as PyPi release misses test/ dir
24 src = fetchFromGitHub {
25 owner = "ebroecker";
26 repo = pname;
27 rev = version;
28 sha256 = "0x8x8kbg4gyzi0ia9657xygp0mqfii76b67fsx76d31bqsdvlda5";
29 };
30
31 propagatedBuildInputs = [
32 # required
33 attrs
34 bitstruct
35 click
36 future
37 pathlib2
38 # optional
39 lxml
40 xlwt
41 xlrd
42 XlsxWriter
43 pyyaml
44 ] ++ lib.optional (pythonOlder "3.5") typing;
45
46 postPatch = ''
47 substituteInPlace setup.py \
48 --replace "version = versioneer.get_version()" "version = \"${version}\""
49 '';
50
51 checkInputs = [ pytestCheckHook ];
52 # long_envvar_name_imports requires stable key value pair ordering
53 pytestFlagsArray = [ "-s src/canmatrix" ];
54 disabledTests = [ "long_envvar_name_imports" ];
55 pythonImportsCheck = [ "canmatrix" ];
56
57 meta = with lib; {
58 homepage = "https://github.com/ebroecker/canmatrix";
59 description = "Support and convert several CAN (Controller Area Network) database formats .arxml .dbc .dbf .kcd .sym fibex xls(x)";
60 license = licenses.bsd2;
61 maintainers = with maintainers; [ sorki ];
62 };
63}
64