1{
2 lib,
3 stdenv,
4 async-timeout,
5 buildPythonPackage,
6 fetchPypi,
7 pytest-asyncio,
8 pytestCheckHook,
9 pythonOlder,
10 setuptools,
11 siosocks,
12 trustme,
13}:
14
15buildPythonPackage rec {
16 pname = "aioftp";
17 version = "0.22.3";
18 pyproject = true;
19
20 disabled = pythonOlder "3.11";
21
22 src = fetchPypi {
23 inherit pname version;
24 hash = "sha256-uqKxMYaqAWIuS4LyfC9I9Nr7SORXprGPzamakl4NwnA=";
25 };
26
27 postPatch = ''
28 substituteInPlace pyproject.toml \
29 --replace " --cov" ""
30 '';
31
32 nativeBuildInputs = [ setuptools ];
33
34 propagatedBuildInputs = [ siosocks ];
35
36 passthru.optional-dependencies = {
37 socks = [ siosocks ];
38 };
39
40 nativeCheckInputs = [
41 async-timeout
42 pytest-asyncio
43 pytestCheckHook
44 trustme
45 ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
46
47 disabledTests = lib.optionals stdenv.isDarwin [
48 # uses 127.0.0.2, which macos doesn't like
49 "test_pasv_connection_pasv_forced_response_address"
50 ];
51
52 pythonImportsCheck = [ "aioftp" ];
53
54 meta = with lib; {
55 description = "Python FTP client/server for asyncio";
56 homepage = "https://aioftp.readthedocs.io/";
57 license = licenses.asl20;
58 maintainers = with maintainers; [ ];
59 };
60}