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