1{
2 lib,
3 buildPythonPackage,
4 pythonOlder,
5 fetchFromGitHub,
6 setuptools,
7 requests,
8 six,
9 stone,
10 mock,
11 pytest-mock,
12 pytestCheckHook,
13 sphinxHook,
14 sphinx-rtd-theme,
15}:
16
17buildPythonPackage rec {
18 pname = "dropbox";
19 version = "12.0.2";
20 pyproject = true;
21
22 disabled = pythonOlder "3.7";
23
24 outputs = [
25 "out"
26 "doc"
27 ];
28
29 src = fetchFromGitHub {
30 owner = "dropbox";
31 repo = "dropbox-sdk-python";
32 tag = "v${version}";
33 hash = "sha256-9Fsh06V226vIyJhrlLkh9Xr4UGoEIISnIFCtuKqI218=";
34 };
35
36 build-system = [ setuptools ];
37
38 dependencies = [
39 requests
40 six
41 stone
42 ];
43
44 nativeCheckInputs = [
45 mock
46 pytest-mock
47 pytestCheckHook
48 ];
49
50 postPatch = ''
51 substituteInPlace setup.py \
52 --replace-fail "'pytest-runner==5.2.0'," ""
53 '';
54
55 pythonImportsCheck = [ "dropbox" ];
56
57 nativeBuildInputs = [
58 sphinxHook
59 sphinx-rtd-theme
60 ];
61
62 # Version 12.0.0 re-introduced Python 2 support and set some very restrictive version bounds
63 # https://github.com/dropbox/dropbox-sdk-python/commit/75596daf316b4a806f18057e2797a15bdf83cf6d
64 # This will be the last major version to support Python 2, so version bounds might be more reasonable again in the future.
65 pythonRelaxDeps = [
66 "stone"
67 ];
68
69 # Set SCOPED_USER_DROPBOX_TOKEN environment variable to a valid value.
70 disabledTests = [
71 "test_default_oauth2_urls"
72 "test_bad_auth"
73 "test_multi_auth"
74 "test_refresh"
75 "test_app_auth"
76 "test_downscope"
77 "test_rpc"
78 "test_upload_download"
79 "test_bad_upload_types"
80 "test_clone_when_user_linked"
81 "test_with_path_root_constructor"
82 "test_path_root"
83 "test_path_root_err"
84 "test_versioned_route"
85 "test_team"
86 "test_as_user"
87 "test_as_admin"
88 "test_clone_when_team_linked"
89 "test_bad_pins"
90 "test_bad_pins_session"
91 ];
92
93 meta = {
94 description = "Python library for Dropbox's HTTP-based Core and Datastore APIs";
95 homepage = "https://github.com/dropbox/dropbox-sdk-python";
96 changelog = "https://github.com/dropbox/dropbox-sdk-python/releases/tag/${src.tag}";
97 license = lib.licenses.mit;
98 maintainers = with lib.maintainers; [ sfrijters ];
99 };
100}