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