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 opentelemetry-api, 23 opentelemetry-sdk, 24 opentelemetry-semantic-conventions, 25 google-cloud-monitoring, 26 mmh3, 27 28 # testing 29 mock, 30 pytest-asyncio, 31 pytestCheckHook, 32}: 33 34buildPythonPackage rec { 35 pname = "google-cloud-spanner"; 36 version = "3.58.0"; 37 pyproject = true; 38 39 src = fetchFromGitHub { 40 owner = "googleapis"; 41 repo = "python-spanner"; 42 tag = "v${version}"; 43 hash = "sha256-bIagQjQv+oatIo8mkA8t5wP9igMnorkiudgyWkVnJcg="; 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 ]; 58 59 optional-dependencies = { 60 libcst = [ libcst ]; 61 tracing = [ 62 opentelemetry-api 63 opentelemetry-sdk 64 opentelemetry-semantic-conventions 65 # opentelemetry-resourcedetector-gcp # Not available in nixpkgs 66 google-cloud-monitoring 67 mmh3 68 ]; 69 }; 70 71 nativeCheckInputs = [ 72 google-cloud-monitoring 73 google-cloud-testutils 74 mmh3 75 mock 76 opentelemetry-api 77 opentelemetry-sdk 78 opentelemetry-semantic-conventions 79 pytest-asyncio 80 pytestCheckHook 81 ] 82 ++ lib.flatten (lib.attrValues optional-dependencies); 83 84 preCheck = '' 85 # prevent google directory from shadowing google imports 86 rm -r google 87 ''; 88 89 disabledTests = [ 90 # Requires credentials 91 "test_list_backup" 92 "test_list_database" 93 "test_list_instance" 94 # can't import mmh3 95 "test_generate_client_hash" 96 # Flaky, compares to execution time 97 "test_snapshot_read_concurrent" 98 # Flaky, can retry too quickly and fail 99 "test_retry_helper" 100 ]; 101 102 disabledTestPaths = [ 103 # Requires credentials 104 "tests/system/test_backup_api.py" 105 "tests/system/test_database_api.py" 106 "tests/system/test_dbapi.py" 107 "tests/system/test_instance_api.py" 108 "tests/system/test_session_api.py" 109 "tests/system/test_streaming_chunking.py" 110 "tests/system/test_table_api.py" 111 "tests/unit/test_metrics.py" 112 "tests/unit/test_metrics_capture.py" 113 "tests/unit/test_metrics_exporter.py" 114 "tests/unit/test_metrics_interceptor.py" 115 "tests/unit/spanner_dbapi/test_connect.py" 116 "tests/unit/spanner_dbapi/test_connection.py" 117 "tests/unit/spanner_dbapi/test_cursor.py" 118 "samples/samples/" 119 ]; 120 121 pythonImportsCheck = [ 122 "google.cloud.spanner_admin_database_v1" 123 "google.cloud.spanner_admin_instance_v1" 124 "google.cloud.spanner_dbapi" 125 "google.cloud.spanner_v1" 126 ]; 127 128 __darwinAllowLocalNetworking = true; 129 130 meta = { 131 description = "Cloud Spanner API client library"; 132 homepage = "https://github.com/googleapis/python-spanner"; 133 changelog = "https://github.com/googleapis/python-spanner/blob/${src.tag}/CHANGELOG.md"; 134 license = lib.licenses.asl20; 135 maintainers = [ lib.maintainers.sarahec ]; 136 }; 137}