ansible-later: 2.0.22 -> 2.0.23
[NixPkgs.git] / pkgs / development / python-modules / twisted / default.nix
blobfae5ef8cf10391800a50614091a5833f85b84e9e
1 { lib
2 , stdenv
3 , buildPythonPackage
4 , pythonOlder
5 , fetchPypi
6 , fetchpatch
7 , python
8 , appdirs
9 , attrs
10 , automat
11 , bcrypt
12 , constantly
13 , contextvars
14 , cryptography
15 , git
16 , glibcLocales
17 , h2
18 , hyperlink
19 , idna
20 , incremental
21 , priority
22 , pyasn1
23 , pyhamcrest
24 , pynacl
25 , pyopenssl
26 , pyserial
27 , service-identity
28 , setuptools
29 , typing-extensions
30 , zope_interface
32   # for passthru.tests
33 , cassandra-driver
34 , klein
35 , magic-wormhole
36 , scrapy
37 , treq
38 , txaio
39 , txamqp
40 , txrequests
41 , txtorcon
42 , thrift
43 , nixosTests
46 buildPythonPackage rec {
47   pname = "twisted";
48   version = "22.8.0";
49   format = "setuptools";
51   disabled = pythonOlder "3.6";
53   src = fetchPypi {
54     pname = "Twisted";
55     inherit version;
56     extension = "tar.gz";
57     hash = "sha256-5bYN458tHaFT++GHTYhf4/y9sh/MRG+nWaU+j8NRO+0=";
58   };
60   patches = [
61     (fetchpatch {
62       name = "fix-test_openFileDescriptors.patch";
63       url = "https://github.com/twisted/twisted/commit/47f47634940141466177261b20bb43c300531e38.patch";
64       hash = "sha256-wacnF166PnZHXJEqTlPZUdDILJIVHOcnC2a34SQumvs=";
65     })
66   ];
68   __darwinAllowLocalNetworking = true;
70   propagatedBuildInputs = [
71     attrs
72     automat
73     constantly
74     hyperlink
75     incremental
76     setuptools
77     typing-extensions
78     zope_interface
79   ];
81   postPatch = ''
82     echo 'ListingTests.test_localeIndependent.skip = "Timezone issue"'>> src/twisted/conch/test/test_cftp.py
83     echo 'ListingTests.test_newFile.skip = "Timezone issue"'>> src/twisted/conch/test/test_cftp.py
84     echo 'ListingTests.test_newSingleDigitDayOfMonth.skip = "Timezone issue"'>> src/twisted/conch/test/test_cftp.py
85     echo 'ListingTests.test_oldFile.skip = "Timezone issue"'>> src/twisted/conch/test/test_cftp.py
86     echo 'ListingTests.test_oldSingleDigitDayOfMonth.skip = "Timezone issue"'>> src/twisted/conch/test/test_cftp.py
88     echo 'UNIXTestsBuilder_AsyncioSelectorReactorTests.test_sendFileDescriptorTriggersPauseProducing.skip = "sendFileDescriptor producer was not paused"'>> src/twisted/internet/test/test_unix.py
89     echo 'UNIXTestsBuilder_SelectReactorTests.test_sendFileDescriptorTriggersPauseProducing.skip = "sendFileDescriptor producer was not paused"'>> src/twisted/internet/test/test_unix.py
91     echo 'FileObserverTests.test_getTimezoneOffsetEastOfUTC.skip = "mktime argument out of range"'>> src/twisted/test/test_log.py
92     echo 'FileObserverTests.test_getTimezoneOffsetWestOfUTC.skip = "mktime argument out of range"'>> src/twisted/test/test_log.py
93     echo 'FileObserverTests.test_getTimezoneOffsetWithoutDaylightSavingTime.skip = "tuple differs, values not"'>> src/twisted/test/test_log.py
95     echo 'MulticastTests.test_joinLeave.skip = "No such device"'>> src/twisted/test/test_udp.py
96     echo 'MulticastTests.test_loopback.skip = "No such device"'>> src/twisted/test/test_udp.py
97     echo 'MulticastTests.test_multicast.skip = "Reactor was unclean"'>> src/twisted/test/test_udp.py
98     echo 'MulticastTests.test_multiListen.skip = "No such device"'>> src/twisted/test/test_udp.py
100     # fails since migrating to libxcrypt
101     echo 'HelperTests.test_refuteCryptedPassword.skip = "OSError: Invalid argument"' >> src/twisted/conch/test/test_checkers.py
103     # not packaged
104     substituteInPlace src/twisted/test/test_failure.py \
105       --replace "from cython_test_exception_raiser import raiser  # type: ignore[import]" "raiser = None"
106   '' + lib.optionalString stdenv.isLinux ''
107     echo 'PTYProcessTestsBuilder_EPollReactorTests.test_openFileDescriptors.skip = "invalid syntax"'>> src/twisted/internet/test/test_process.py
108     echo 'PTYProcessTestsBuilder_PollReactorTests.test_openFileDescriptors.skip = "invalid syntax"'>> src/twisted/internet/test/test_process.py
109     echo 'UNIXTestsBuilder_EPollReactorTests.test_sendFileDescriptorTriggersPauseProducing.skip = "sendFileDescriptor producer was not paused"'>> src/twisted/internet/test/test_unix.py
110     echo 'UNIXTestsBuilder_PollReactorTests.test_sendFileDescriptorTriggersPauseProducing.skip = "sendFileDescriptor producer was not paused"'>> src/twisted/internet/test/test_unix.py
112     # Patch t.p._inotify to point to libc. Without this,
113     # twisted.python.runtime.platform.supportsINotify() == False
114     substituteInPlace src/twisted/python/_inotify.py --replace \
115       "ctypes.util.find_library(\"c\")" "'${stdenv.cc.libc}/lib/libc.so.6'"
116   '' + lib.optionalString (stdenv.isAarch64 && stdenv.isDarwin) ''
117     echo 'AbortConnectionTests_AsyncioSelectorReactorTests.test_fullWriteBufferAfterByteExchange.skip = "Timeout after 120 seconds"' >> src/twisted/internet/test/test_tcp.py
118     echo 'AbortConnectionTests_AsyncioSelectorReactorTests.test_resumeProducingAbort.skip = "Timeout after 120 seconds"' >> src/twisted/internet/test/test_tcp.py
119   '';
121   # Generate Twisted's plug-in cache. Twisted users must do it as well. See
122   # http://twistedmatrix.com/documents/current/core/howto/plugin.html#auto3
123   # and http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=477103 for details.
124   postFixup = ''
125     $out/bin/twistd --help > /dev/null
126   '';
128   checkInputs = [
129     git
130     glibcLocales
131     pyhamcrest
132   ]
133   ++ passthru.optional-dependencies.conch
134   # not supported on aarch64-darwin: https://github.com/pyca/pyopenssl/issues/873
135   ++ lib.optionals (!(stdenv.isDarwin && stdenv.isAarch64)) passthru.optional-dependencies.tls;
137   checkPhase = ''
138     export SOURCE_DATE_EPOCH=315532800
139     export PATH=$out/bin:$PATH
140     # race conditions when running in paralell
141     ${python.interpreter} -m twisted.trial twisted
142   '';
144   passthru = {
145     optional-dependencies = rec {
146       conch = [ appdirs bcrypt cryptography pyasn1 ];
147       conch_nacl = conch ++ [ pynacl ];
148       contextvars = lib.optionals (pythonOlder "3.7") [ contextvars ];
149       http2 = [ h2 priority ];
150       serial = [ pyserial ];
151       tls = [ idna pyopenssl service-identity ];
152     };
154     tests = {
155       inherit
156         cassandra-driver
157         klein
158         magic-wormhole
159         scrapy
160         treq
161         txaio
162         txamqp
163         txrequests
164         txtorcon
165         thrift;
166       inherit (nixosTests) buildbot matrix-synapse;
167     };
168   };
170   meta = with lib; {
171     homepage = "https://github.com/twisted/twisted";
172     description = "Twisted, an event-driven networking engine written in Python";
173     longDescription = ''
174       Twisted is an event-driven networking engine written in Python
175       and licensed under the MIT license.
176     '';
177     license = licenses.mit;
178     maintainers = with maintainers; [ SuperSandro2000 ];
179   };