1{
2 lib,
3 buildPythonPackage,
4 deprecated,
5 fetchPypi,
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.45.0";
25 pyproject = true;
26
27 disabled = pythonOlder "3.7";
28
29 src = fetchPypi {
30 inherit pname version;
31 hash = "sha256-MKtW6krGqnQ3hCmPgh4N5lRAGTe0DGDMegpUUoSpG0M=";
32 };
33
34 build-system = [ setuptools ];
35
36 dependencies = [
37 deprecated
38 google-api-core
39 google-cloud-core
40 grpc-google-iam-v1
41 grpc-interceptor
42 proto-plus
43 protobuf
44 sqlparse
45 ] ++ google-api-core.optional-dependencies.grpc;
46
47 passthru.optional-dependencies = {
48 libcst = [ libcst ];
49 };
50
51 nativeCheckInputs = [
52 google-cloud-testutils
53 mock
54 pytest-asyncio
55 pytestCheckHook
56 ];
57
58 preCheck = ''
59 # prevent google directory from shadowing google imports
60 rm -r google
61 '';
62
63 disabledTestPaths = [
64 # Requires credentials
65 "tests/system/test_backup_api.py"
66 "tests/system/test_database_api.py"
67 "tests/system/test_dbapi.py"
68 "tests/system/test_instance_api.py"
69 "tests/system/test_session_api.py"
70 "tests/system/test_streaming_chunking.py"
71 "tests/system/test_table_api.py"
72 "tests/unit/spanner_dbapi/test_connect.py"
73 "tests/unit/spanner_dbapi/test_connection.py"
74 "tests/unit/spanner_dbapi/test_cursor.py"
75 ];
76
77 pythonImportsCheck = [
78 "google.cloud.spanner_admin_database_v1"
79 "google.cloud.spanner_admin_instance_v1"
80 "google.cloud.spanner_dbapi"
81 "google.cloud.spanner_v1"
82 ];
83
84 meta = with lib; {
85 description = "Cloud Spanner API client library";
86 homepage = "https://github.com/googleapis/python-spanner";
87 changelog = "https://github.com/googleapis/python-spanner/blob/v${version}/CHANGELOG.md";
88 license = licenses.asl20;
89 maintainers = [ ];
90 };
91}