1{
2 buildPythonPackage,
3 fetchPypi,
4 lib,
5 mock,
6 pyopenssl,
7 pytestCheckHook,
8 pythonOlder,
9 setuptools,
10 six,
11 twisted,
12 txi2p-tahoe,
13 txtorcon,
14 versioneer,
15}:
16
17buildPythonPackage rec {
18 pname = "foolscap";
19 version = "23.3.0";
20
21 pyproject = true;
22 build-system = [
23 setuptools
24 versioneer
25 ];
26
27 disabled = pythonOlder "3.7";
28
29 src = fetchPypi {
30 inherit pname version;
31 hash = "sha256-Vu7oXC1brsgBwr2q59TAgx8j1AFRbi5mjRNIWZTbkUU=";
32 };
33
34 postPatch = ''
35 # Remove vendorized versioneer.py
36 rm versioneer.py
37 '';
38
39 dependencies = [
40 six
41 twisted
42 pyopenssl
43 ] ++ twisted.optional-dependencies.tls;
44
45 passthru.optional-dependencies = {
46 i2p = [ txi2p-tahoe ];
47 tor = [ txtorcon ];
48 };
49
50 nativeCheckInputs = [
51 mock
52 pytestCheckHook
53 ] ++ lib.flatten (lib.attrValues passthru.optional-dependencies);
54
55 pythonImportsCheck = [ "foolscap" ];
56
57 meta = with lib; {
58 description = "RPC protocol for Python that follows the distributed object-capability model";
59 longDescription = ''
60 "Foolscap" is the name for the next-generation RPC protocol, intended to
61 replace Perspective Broker (part of Twisted). Foolscap is a protocol to
62 implement a distributed object-capabilities model in Python.
63 '';
64 homepage = "https://github.com/warner/foolscap";
65 license = licenses.mit;
66 maintainers = [ ];
67 };
68}