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 ]
40 ++ lib.optionals (pythonAtLeast "3.13") [ legacy-cgi ];
41
42 nativeCheckInputs = [
43 flaky
44 mock
45 pillow
46 pymongo
47 pytestCheckHook
48 requests
49 sqlalchemy
50 ];
51
52 disabledTestPaths = [
53 # ModuleNotFoundError: No module named 'depot._pillow_compat'
54 "tests/test_fields_sqlalchemy.py"
55 # The examples have tests
56 "examples"
57 # Missing dependencies (TurboGears2 and ming)
58 "tests/test_fields_ming.py"
59 "tests/test_wsgi_middleware.py"
60 ];
61
62 disabledTests = lib.optionals (pythonAtLeast "3.13") [ "test_notexisting" ];
63
64 pythonImportsCheck = [ "depot" ];
65
66 meta = with lib; {
67 description = "Toolkit for storing files and attachments in web applications";
68 homepage = "https://github.com/amol-/depot";
69 changelog = "https://github.com/amol-/depot/releases/tag/${version}";
70 license = licenses.mit;
71 maintainers = with maintainers; [ fab ];
72 };
73}