1{ fetchPypi
2, lib
3, buildPythonPackage
4, python
5, isPy3k
6, appdirs
7, cached-property
8, defusedxml
9, isodate
10, lxml
11, pytz
12, requests_toolbelt
13, six
14# test dependencies
15, freezegun
16, mock
17, nose
18, pretend
19, pytest
20, pytestcov
21, requests-mock
22, testtools
23}:
24
25let
26 pname = "zeep";
27 version = "2.3.0";
28in buildPythonPackage {
29 name = "${pname}-${version}";
30
31 src = fetchPypi {
32 inherit pname version;
33 sha256 = "b01d81c61d7b7858b7be001615d3c995a371815f5e6902c914fea9beba30b716";
34 };
35
36 propagatedBuildInputs = [
37 appdirs
38 cached-property
39 defusedxml
40 isodate
41 lxml
42 pytz
43 requests_toolbelt
44 six
45 ];
46
47 # testtools dependency not supported for py3k
48 doCheck = !isPy3k;
49
50 buildInputs = if isPy3k then [] else [
51 freezegun
52 mock
53 nose
54 pretend
55 pytest
56 pytestcov
57 requests-mock
58 ];
59
60 patchPhase = ''
61 # remove overly strict bounds and lint requirements
62 sed -e "s/freezegun==.*'/freezegun'/" \
63 -e "s/pytest-cov==.*'/pytest-cov'/" \
64 -e "s/'isort.*//" \
65 -e "s/'flake8.*//" \
66 -i setup.py
67
68 # locale.preferredencoding() != 'utf-8'
69 sed -e "s/xsd', 'r')/xsd', 'r', encoding='utf-8')/" -i tests/*.py
70
71 # cache defaults to home directory, which doesn't exist
72 sed -e "s|SqliteCache()|SqliteCache(path='./zeeptest.db')|" \
73 -i tests/test_transports.py
74
75 # requires xmlsec python module
76 rm tests/test_wsse_signature.py
77 '';
78
79 checkPhase = ''
80 runHook preCheck
81 ${python.interpreter} -m pytest tests
82 runHook postCheck
83 '';
84
85 meta = with lib; {
86 homepage = http://docs.python-zeep.org;
87 license = licenses.mit;
88 description = "A modern/fast Python SOAP client based on lxml / requests";
89 maintainers = with maintainers; [ rvl ];
90 };
91}