1{
2 lib,
3 stdenv,
4 appdirs,
5 buildPythonPackage,
6 fetchPypi,
7 glibcLocales,
8 mock,
9 psutil,
10 pyftpdlib,
11 pytestCheckHook,
12 pythonAtLeast,
13 pythonOlder,
14 pytz,
15 setuptools,
16 six,
17}:
18
19buildPythonPackage rec {
20 pname = "fs";
21 version = "2.4.16";
22 pyproject = true;
23
24 disabled = pythonOlder "3.8";
25
26 src = fetchPypi {
27 inherit pname version;
28 hash = "sha256-rpfH1RIT9LcLapWCklMCiQkN46fhWEHhCPvhRPBp0xM=";
29 };
30
31 build-system = [ setuptools ];
32
33 buildInputs = [ glibcLocales ];
34
35 dependencies = [
36 six
37 appdirs
38 pytz
39 setuptools
40 ];
41
42 nativeCheckInputs = [
43 pyftpdlib
44 mock
45 psutil
46 pytestCheckHook
47 ];
48
49 LC_ALL = "en_US.utf-8";
50
51 preCheck = ''
52 HOME=$(mktemp -d)
53 '';
54
55 # strong cycle with parameterized
56 doCheck = false;
57
58 pytestFlagsArray = [ "--ignore=tests/test_opener.py" ];
59
60 disabledTests =
61 [ "user_data_repr" ]
62 ++ lib.optionals (stdenv.hostPlatform.isDarwin) [
63 # remove if https://github.com/PyFilesystem/pyfilesystem2/issues/430#issue-707878112 resolved
64 "test_ftpfs"
65 ]
66 ++ lib.optionals (pythonAtLeast "3.9") [
67 # update friend version of this commit: https://github.com/PyFilesystem/pyfilesystem2/commit/3e02968ce7da7099dd19167815c5628293e00040
68 # merged into master, able to be removed after >2.4.1
69 "test_copy_sendfile"
70 ];
71
72 __darwinAllowLocalNetworking = true;
73
74 meta = with lib; {
75 description = "Filesystem abstraction";
76 homepage = "https://github.com/PyFilesystem/pyfilesystem2";
77 changelog = "https://github.com/PyFilesystem/pyfilesystem2/blob/v${version}/CHANGELOG.md";
78 license = licenses.bsd3;
79 maintainers = with maintainers; [ lovek323 ];
80 platforms = platforms.unix;
81 };
82}