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