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 = "24.9.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-vWsAdUDbWQuG3e0oAtLq8rA4Ys2wg38fD/h+E1ViQQg=";
32 };
33
34 postPatch = ''
35 # Remove vendorized versioneer.py
36 rm versioneer.py
37 '';
38
39 dependencies = [
40 six
41 twisted
42 pyopenssl
43 ]
44 ++ twisted.optional-dependencies.tls;
45
46 optional-dependencies = {
47 i2p = [ txi2p-tahoe ];
48 tor = [ txtorcon ];
49 };
50
51 nativeCheckInputs = [
52 mock
53 pytestCheckHook
54 ]
55 ++ lib.flatten (lib.attrValues optional-dependencies);
56
57 pythonImportsCheck = [ "foolscap" ];
58
59 meta = with lib; {
60 description = "RPC protocol for Python that follows the distributed object-capability model";
61 longDescription = ''
62 "Foolscap" is the name for the next-generation RPC protocol, intended to
63 replace Perspective Broker (part of Twisted). Foolscap is a protocol to
64 implement a distributed object-capabilities model in Python.
65 '';
66 homepage = "https://github.com/warner/foolscap";
67 license = licenses.mit;
68 maintainers = [ ];
69 };
70}