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