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