1{ lib
2, stdenv
3, aiohttp
4, boto3
5, buildPythonPackage
6, fetchFromGitHub
7, flask
8, flask-sockets
9, pythonOlder
10, mock
11, moto
12, psutil
13, pytest-mock
14, pytestCheckHook
15, requests
16, responses
17, sqlalchemy
18, websockets
19, websocket-client
20}:
21
22buildPythonPackage rec {
23 pname = "slackclient";
24 version = "3.23.0";
25 format = "setuptools";
26
27 disabled = pythonOlder "3.6";
28
29 src = fetchFromGitHub {
30 owner = "slackapi";
31 repo = "python-slack-sdk";
32 rev = "refs/tags/v${version}";
33 hash = "sha256-OsPwLOnmN3kvPmbM6lOaiTWwWvy7b9pgn1X536dCkWk=";
34 };
35
36 propagatedBuildInputs = [
37 aiohttp
38 websocket-client
39 requests
40 ];
41
42 nativeCheckInputs = [
43 boto3
44 flask
45 flask-sockets
46 mock
47 moto
48 psutil
49 pytest-mock
50 pytestCheckHook
51 responses
52 sqlalchemy
53 websockets
54 ];
55
56 pytestFlagsArray = [
57 # Exclude tests that requires network features
58 "--ignore=integration_tests"
59 ];
60
61 preCheck = ''
62 export HOME=$(mktemp -d)
63 '';
64
65 disabledTests = [
66 "test_start_raises_an_error_if_rtm_ws_url_is_not_returned"
67 "test_interactions"
68 "test_send_message_while_disconnection"
69 ] ++ lib.optionals stdenv.isDarwin [
70 # these fail with `ConnectionResetError: [Errno 54] Connection reset by peer`
71 "test_issue_690_oauth_access"
72 "test_issue_690_oauth_v2_access"
73 "test_send"
74 "test_send_attachments"
75 "test_send_blocks"
76 "test_send_dict"
77 ];
78
79 pythonImportsCheck = [
80 "slack"
81 ];
82
83 meta = with lib; {
84 description = "A client for Slack, which supports the Slack Web API and Real Time Messaging (RTM) API";
85 homepage = "https://github.com/slackapi/python-slackclient";
86 changelog = "https://github.com/slackapi/python-slack-sdk/releases/tag/v${version}";
87 license = licenses.mit;
88 maintainers = with maintainers; [ flokli psyanticy ];
89 };
90}