1{
2 lib,
3 buildPythonPackage,
4 fetchFromGitHub,
5
6 # build-system
7 setuptools,
8
9 # dependencies
10 deprecated,
11 google-api-core,
12 google-cloud-core,
13 google-cloud-testutils,
14 grpc-google-iam-v1,
15 grpc-interceptor,
16 proto-plus,
17 protobuf,
18 sqlparse,
19
20 # optional dependencies
21 libcst,
22
23 # testing
24 google-cloud-monitoring,
25 mmh3,
26 mock,
27 opentelemetry-api,
28 opentelemetry-sdk,
29 opentelemetry-semantic-conventions,
30 pytest-asyncio,
31 pytestCheckHook,
32}:
33
34buildPythonPackage rec {
35 pname = "google-cloud-spanner";
36 version = "3.54.0";
37 pyproject = true;
38
39 src = fetchFromGitHub {
40 owner = "googleapis";
41 repo = "python-spanner";
42 tag = "v${version}";
43 hash = "sha256-uJKUgY7fV+AK/2HQyjQRFypcL+mPZ/M5ZtAU+f73ezM=";
44 };
45
46 build-system = [ setuptools ];
47
48 dependencies = [
49 deprecated
50 google-api-core
51 google-cloud-core
52 grpc-google-iam-v1
53 grpc-interceptor
54 proto-plus
55 protobuf
56 sqlparse
57 ] ++ google-api-core.optional-dependencies.grpc;
58
59 optional-dependencies = {
60 libcst = [ libcst ];
61 };
62
63 nativeCheckInputs = [
64 google-cloud-monitoring
65 google-cloud-testutils
66 mmh3
67 mock
68 opentelemetry-api
69 opentelemetry-sdk
70 opentelemetry-semantic-conventions
71 pytest-asyncio
72 pytestCheckHook
73 ];
74
75 preCheck = ''
76 # prevent google directory from shadowing google imports
77 rm -r google
78 '';
79
80 disabledTests = [
81 # Requires credentials
82 "test_list_backup"
83 "test_list_database"
84 "test_list_instance"
85 # can't import mmh3
86 "test_generate_client_hash"
87 ];
88
89 disabledTestPaths = [
90 # Requires credentials
91 "tests/system/test_backup_api.py"
92 "tests/system/test_database_api.py"
93 "tests/system/test_dbapi.py"
94 "tests/system/test_instance_api.py"
95 "tests/system/test_session_api.py"
96 "tests/system/test_streaming_chunking.py"
97 "tests/system/test_table_api.py"
98 "tests/unit/test_metrics.py"
99 "tests/unit/test_metrics_capture.py"
100 "tests/unit/test_metrics_exporter.py"
101 "tests/unit/test_metrics_interceptor.py"
102 "tests/unit/spanner_dbapi/test_connect.py"
103 "tests/unit/spanner_dbapi/test_connection.py"
104 "tests/unit/spanner_dbapi/test_cursor.py"
105 "samples/samples/"
106 ];
107
108 pythonImportsCheck = [
109 "google.cloud.spanner_admin_database_v1"
110 "google.cloud.spanner_admin_instance_v1"
111 "google.cloud.spanner_dbapi"
112 "google.cloud.spanner_v1"
113 ];
114
115 __darwinAllowLocalNetworking = true;
116
117 meta = {
118 description = "Cloud Spanner API client library";
119 homepage = "https://github.com/googleapis/python-spanner";
120 changelog = "https://github.com/googleapis/python-spanner/blob/v${version}/CHANGELOG.md";
121 license = lib.licenses.asl20;
122 maintainers = [ lib.maintainers.sarahec ];
123 };
124}