1{
2 lib,
3 buildPythonPackage,
4 deprecated,
5 fetchFromGitHub,
6 google-api-core,
7 google-cloud-core,
8 google-cloud-testutils,
9 grpc-google-iam-v1,
10 grpc-interceptor,
11 libcst,
12 mock,
13 proto-plus,
14 protobuf,
15 pytest-asyncio,
16 pytestCheckHook,
17 pythonOlder,
18 sqlparse,
19 setuptools,
20}:
21
22buildPythonPackage rec {
23 pname = "google-cloud-spanner";
24 version = "3.51.0";
25 pyproject = true;
26
27 disabled = pythonOlder "3.7";
28
29 src = fetchFromGitHub {
30 owner = "googleapis";
31 repo = "python-spanner";
32 tag = "v${version}";
33 hash = "sha256-ug3xtPykH4emiQuK1UxWGUeKmXqkY/EX0mSncCkGCQg=";
34 };
35
36 build-system = [ setuptools ];
37
38 dependencies = [
39 deprecated
40 google-api-core
41 google-cloud-core
42 grpc-google-iam-v1
43 grpc-interceptor
44 proto-plus
45 protobuf
46 sqlparse
47 ] ++ google-api-core.optional-dependencies.grpc;
48
49 optional-dependencies = {
50 libcst = [ libcst ];
51 };
52
53 nativeCheckInputs = [
54 google-cloud-testutils
55 mock
56 pytest-asyncio
57 pytestCheckHook
58 ];
59
60 preCheck = ''
61 # prevent google directory from shadowing google imports
62 rm -r google
63 '';
64
65 disabledTests = [
66 # Requires credentials
67 "test_list_backup"
68 "test_list_database"
69 "test_list_instance"
70 ];
71
72 disabledTestPaths = [
73 # Requires credentials
74 "tests/system/test_backup_api.py"
75 "tests/system/test_database_api.py"
76 "tests/system/test_dbapi.py"
77 "tests/system/test_instance_api.py"
78 "tests/system/test_session_api.py"
79 "tests/system/test_streaming_chunking.py"
80 "tests/system/test_table_api.py"
81 "tests/unit/spanner_dbapi/test_connect.py"
82 "tests/unit/spanner_dbapi/test_connection.py"
83 "tests/unit/spanner_dbapi/test_cursor.py"
84 "samples/samples/"
85 ];
86
87 pythonImportsCheck = [
88 "google.cloud.spanner_admin_database_v1"
89 "google.cloud.spanner_admin_instance_v1"
90 "google.cloud.spanner_dbapi"
91 "google.cloud.spanner_v1"
92 ];
93
94 meta = with lib; {
95 description = "Cloud Spanner API client library";
96 homepage = "https://github.com/googleapis/python-spanner";
97 changelog = "https://github.com/googleapis/python-spanner/blob/v${version}/CHANGELOG.md";
98 license = licenses.asl20;
99 maintainers = [ ];
100 };
101}