1{
2 lib,
3 aiobotocore,
4 aiofiles,
5 buildPythonPackage,
6 chalice,
7 cryptography,
8 dill,
9 fetchFromGitHub,
10 moto,
11 poetry-core,
12 poetry-dynamic-versioning,
13 pytest-asyncio,
14 pytestCheckHook,
15 pythonOlder,
16 pythonRelaxDepsHook,
17 requests,
18}:
19
20buildPythonPackage rec {
21 pname = "aioboto3";
22 version = "12.3.0";
23 pyproject = true;
24
25 disabled = pythonOlder "3.8";
26
27 src = fetchFromGitHub {
28 owner = "terrycain";
29 repo = "aioboto3";
30 rev = "refs/tags/v${version}";
31 hash = "sha256-GDuxy/V+j0LRJ2lbcRHMEAga+pdCbYIWhEt3ItrHMB4=";
32 };
33
34 nativeBuildInputs = [
35 poetry-core
36 poetry-dynamic-versioning
37 pythonRelaxDepsHook
38 ];
39
40 pythonRelaxDeps = [ "aiobotocore" ];
41
42 propagatedBuildInputs = [ aiobotocore ] ++ aiobotocore.optional-dependencies.boto3;
43
44 passthru.optional-dependencies = {
45 chalice = [ chalice ];
46 s3cse = [ cryptography ];
47 };
48
49 nativeCheckInputs = [
50 aiofiles
51 dill
52 moto
53 pytest-asyncio
54 pytestCheckHook
55 requests
56 ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
57
58 pythonImportsCheck = [ "aioboto3" ];
59
60 disabledTests = [
61 # Our moto package is not ready to support more tests
62 "encrypt_decrypt_aes_cbc"
63 "test_chalice_async"
64 "test_dynamo"
65 "test_flush_doesnt_reset_item_buffer"
66 "test_kms"
67 "test_s3"
68 ];
69
70 meta = with lib; {
71 description = "Wrapper to use boto3 resources with the aiobotocore async backend";
72 homepage = "https://github.com/terrycain/aioboto3";
73 changelog = "https://github.com/terrycain/aioboto3/blob/${src.rev}/CHANGELOG.rst";
74 license = licenses.asl20;
75 maintainers = with maintainers; [ mbalatsko ];
76 };
77}