1{
2 lib,
3 aiodns,
4 aiohttp,
5 boto3,
6 buildPythonPackage,
7 fetchFromGitHub,
8 flake8,
9 flask-sockets,
10 moto,
11 psutil,
12 pytest-asyncio,
13 pytestCheckHook,
14 setuptools,
15 sqlalchemy,
16 websocket-client,
17 websockets,
18}:
19
20buildPythonPackage rec {
21 pname = "slack-sdk";
22 version = "3.33.5";
23 pyproject = true;
24
25 src = fetchFromGitHub {
26 owner = "slackapi";
27 repo = "python-slack-sdk";
28 rev = "refs/tags/v${version}";
29 hash = "sha256-kpilxg/S9/U6lJW8FsMvcdGh+qqDH0Kr66sc+HsY2DM=";
30 };
31
32 postPatch = ''
33 substituteInPlace pyproject.toml \
34 --replace-fail ', "pytest-runner"' ""
35 '';
36
37 build-system = [ setuptools ];
38
39 dependencies = [
40 aiodns
41 aiohttp
42 boto3
43 sqlalchemy
44 websocket-client
45 websockets
46 ];
47
48 pythonImportsCheck = [ "slack_sdk" ];
49
50 nativeCheckInputs = [
51 flake8
52 flask-sockets
53 moto
54 psutil
55 pytest-asyncio
56 pytestCheckHook
57 ];
58
59 preCheck = ''
60 export HOME=$(mktemp -d)
61 '';
62
63 disabledTests = [
64 # Requires internet access (to slack API)
65 "test_start_raises_an_error_if_rtm_ws_url_is_not_returned"
66 # Requires network access: [Errno 111] Connection refused
67 "test_send_message_while_disconnection"
68 ];
69
70 __darwinAllowLocalNetworking = true;
71
72 meta = {
73 description = "Slack Developer Kit for Python";
74 homepage = "https://slack.dev/python-slack-sdk/";
75 changelog = "https://github.com/slackapi/python-slack-sdk/releases/tag/v${version}";
76 license = lib.licenses.mit;
77 maintainers = with lib.maintainers; [ fab ];
78 };
79}