1{
2 lib,
3 anyascii,
4 buildPythonPackage,
5 fetchFromGitHub,
6 flaky,
7 google-cloud-storage,
8 legacy-cgi,
9 mock,
10 pillow,
11 pymongo,
12 pytestCheckHook,
13 pythonAtLeast,
14 pythonOlder,
15 requests,
16 setuptools,
17 sqlalchemy,
18}:
19
20buildPythonPackage rec {
21 pname = "filedepot";
22 version = "0.11.0";
23 pyproject = true;
24
25 disabled = pythonOlder "3.7";
26
27 src = fetchFromGitHub {
28 owner = "amol-";
29 repo = "depot";
30 tag = version;
31 hash = "sha256-693H/u+Wg2G9sdoUkC6DQo9WkmIlKnh8NKv3ufK/eyQ=";
32 };
33
34 build-system = [ setuptools ];
35
36 dependencies = [
37 anyascii
38 google-cloud-storage
39 ] ++ lib.optionals (pythonAtLeast "3.13") [ legacy-cgi ];
40
41 nativeCheckInputs = [
42 flaky
43 mock
44 pillow
45 pymongo
46 pytestCheckHook
47 requests
48 sqlalchemy
49 ];
50
51 disabledTestPaths = [
52 # ModuleNotFoundError: No module named 'depot._pillow_compat'
53 "tests/test_fields_sqlalchemy.py"
54 # The examples have tests
55 "examples"
56 # Missing dependencies (TurboGears2 and ming)
57 "tests/test_fields_ming.py"
58 "tests/test_wsgi_middleware.py"
59 ];
60
61 disabledTests = lib.optionals (pythonAtLeast "3.13") [ "test_notexisting" ];
62
63 pythonImportsCheck = [ "depot" ];
64
65 meta = with lib; {
66 description = "Toolkit for storing files and attachments in web applications";
67 homepage = "https://github.com/amol-/depot";
68 changelog = "https://github.com/amol-/depot/releases/tag/${version}";
69 license = licenses.mit;
70 maintainers = with maintainers; [ fab ];
71 };
72}