1{ lib
2, blinker
3, botocore
4, buildPythonPackage
5, fetchFromGitHub
6, pytest-mock
7, pytestCheckHook
8, python-dateutil
9, pythonOlder
10, requests
11, typing-extensions
12}:
13
14buildPythonPackage rec {
15 pname = "pynamodb";
16 version = "5.5.0";
17 format = "setuptools";
18
19 disabled = pythonOlder "3.7";
20
21 src = fetchFromGitHub {
22 owner = "pynamodb";
23 repo = "PynamoDB";
24 rev = "refs/tags/${version}";
25 hash = "sha256-sbGrFTpupBP0VQWR9gUVoCiw6D61s6GsmBvjgD1u99g=";
26 };
27
28 propagatedBuildInputs = [
29 python-dateutil
30 botocore
31 ] ++ lib.optionals (pythonOlder "3.8") [
32 typing-extensions
33 ];
34
35 passthru.optional-dependencies = {
36 signal = [
37 blinker
38 ];
39 };
40
41 nativeCheckInputs = [
42 pytest-mock
43 pytestCheckHook
44 ] ++ passthru.optional-dependencies.signal;
45
46 pythonImportsCheck = [
47 "pynamodb"
48 ];
49
50 disabledTests = [
51 # Tests requires credentials or network access
52 "test_binary_attribute_update"
53 "test_binary_set_attribute_update"
54 "test_connection_integration"
55 "test_make_api_call__happy_path"
56 "test_model_integration"
57 "test_sign_request"
58 "test_table_integration"
59 "test_transact"
60 ];
61
62 meta = with lib; {
63 description = "Interface for Amazon’s DynamoDB";
64 longDescription = ''
65 DynamoDB is a great NoSQL service provided by Amazon, but the API is
66 verbose. PynamoDB presents you with a simple, elegant API.
67 '';
68 homepage = "http://jlafon.io/pynamodb.html";
69 changelog = "https://github.com/pynamodb/PynamoDB/releases/tag/${version}";
70 license = licenses.mit;
71 maintainers = with maintainers; [ ];
72 };
73}