Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
609 commits
Select commit Hold shift + click to select a range
dde21aa
docs: add sample for read-only transactions (#533)
olavloite Dec 9, 2024
d9bb4af
chore(deps): update dependency argcomplete to v3.5.2 (#543)
renovate-bot Dec 9, 2024
b57bf4c
chore(deps): update dependency mako to v1.3.8 (#544)
renovate-bot Dec 9, 2024
6e461e6
feat: support Partitioned DML (#541)
olavloite Dec 9, 2024
7416818
docs: add sample for stale reads (#539)
olavloite Dec 9, 2024
c52c2c3
test: add tests for using json array (#534)
olavloite Dec 9, 2024
da58f4e
fix: map now() to current_timestamp (#540)
olavloite Dec 9, 2024
d7662ab
test: add test with 'roles' table (#520)
olavloite Dec 9, 2024
7ff6871
docs: cleanup the transaction section of README a bit (#545)
olavloite Dec 9, 2024
1d75a68
chore(main): release 1.8.0 (#415)
release-please[bot] Dec 9, 2024
00cd45c
chore(deps): update dependency google-api-core to v2.24.0 (#548)
renovate-bot Dec 17, 2024
a238672
chore(deps): update dependency sqlparse to v0.5.3 (#549)
renovate-bot Dec 17, 2024
027aaf5
chore(deps): update dependency opentelemetry-api to v1.29.0 (#551)
renovate-bot Dec 17, 2024
10048be
chore(deps): update dependency opentelemetry-sdk to v1.29.0 (#552)
renovate-bot Dec 17, 2024
4032df0
chore(deps): update dependency google-auth to v2.37.0 (#553)
renovate-bot Dec 17, 2024
1001f0b
chore(deps): update dependency certifi to v2024.12.14 (#554)
renovate-bot Dec 17, 2024
6d141a1
chore(deps): update dependency attrs to v24.3.0 (#555)
renovate-bot Dec 17, 2024
d44923c
build(deps): bump cryptography from 44.0.0 to 44.0.1 in /.kokoro (#571)
dependabot[bot] Feb 17, 2025
fdb701c
chore(deps): update dependency alembic to v1.14.1 (#570)
renovate-bot Feb 17, 2025
4bf2e15
chore(deps): update dependency virtualenv to v20.29.2 (#568)
renovate-bot Feb 17, 2025
324cd9a
chore(deps): update dependency pyparsing to v3.2.1 (#567)
renovate-bot Feb 17, 2025
30e4550
chore(deps): update dependency jinja2 to v3.1.5 [security] (#563)
renovate-bot Feb 17, 2025
2f38ddf
chore(deps): update dependency argcomplete to v3.5.3 (#566)
renovate-bot Feb 17, 2025
fd6980a
chore(deps): update dependency cachetools to v5.5.1 (#573)
renovate-bot Feb 17, 2025
4bf93c9
chore(deps): update dependency deprecated to v1.2.18 (#574)
renovate-bot Feb 17, 2025
d81c283
chore(deps): update dependency keyring to v25.6.0 (#565)
renovate-bot Feb 17, 2025
65856d4
chore(deps): update dependency charset-normalizer to v3.4.1 (#564)
renovate-bot Feb 17, 2025
398fd6e
chore(deps): update dependency urllib3 to v2.3.0 (#562)
renovate-bot Feb 17, 2025
6dbcce1
chore(deps): update dependency nh3 to v0.2.20 (#557)
renovate-bot Feb 17, 2025
f2727dd
docs: add test for using FOR UPDATE (#575)
olavloite Feb 20, 2025
d4e4806
chore(deps): update dependency googleapis-common-protos to v1.67.0 (#…
renovate-bot Feb 20, 2025
0d30bf0
chore(deps): update dependency google-auth to v2.38.0 (#583)
renovate-bot Feb 20, 2025
e27c6eb
chore(deps): update dependency gcp-releasetool to v2.5.0 (#582)
renovate-bot Feb 20, 2025
269bb78
chore(deps): update dependency filelock to v3.17.0 (#581)
renovate-bot Feb 20, 2025
8e3d3fe
chore(deps): update dependency wrapt to v1.17.2 (#580)
renovate-bot Feb 20, 2025
97c6689
chore(deps): update dependency sqlalchemy to v2.0.38 (#579)
renovate-bot Feb 20, 2025
2cc75b2
chore(deps): update dependency protobuf to v5.29.3 (#578)
renovate-bot Feb 20, 2025
8bd681b
chore(deps): update dependency mako to v1.3.9 (#577)
renovate-bot Feb 20, 2025
a260729
chore(deps): update dependency google-api-core to v2.24.1 (#576)
renovate-bot Feb 20, 2025
956462a
chore(deps): update dependency grpcio to v1.70.0 (#588)
renovate-bot Feb 20, 2025
7302b30
chore(deps): update opentelemetry-python monorepo to v1.30.0 (#595)
renovate-bot Feb 20, 2025
5158e81
chore(deps): update dependency pygments to v2.19.1 (#593)
renovate-bot Feb 20, 2025
e5a5141
chore(deps): update dependency grpcio-status to v1.70.0 (#589)
renovate-bot Feb 20, 2025
6be1113
chore(deps): update dependency pkginfo to v1.12.1.2 (#585)
renovate-bot Feb 20, 2025
a04a6ab
chore(deps): update dependency google-cloud-spanner to v3.52.0 (#586)
renovate-bot Feb 20, 2025
6bec8be
chore(deps): update dependency grpc-google-iam-v1 to v0.14.0 (#587)
renovate-bot Feb 20, 2025
d73b4f9
chore(deps): update dependency importlib-metadata to v8.6.1 (#590)
renovate-bot Feb 20, 2025
4b5bd65
chore(deps): update dependency more-itertools to v10.6.0 (#591)
renovate-bot Feb 20, 2025
f37aef7
chore(deps): update dependency proto-plus to v1.26.0 (#592)
renovate-bot Feb 20, 2025
0ce4a92
chore(deps): update dependency attrs to v25 (#596)
renovate-bot Feb 20, 2025
8e02904
chore(deps): update dependency certifi to v2025 (#597)
renovate-bot Feb 20, 2025
ebb8345
chore(deps): update dependency googleapis-common-protos to v1.68.0 (#…
renovate-bot Feb 21, 2025
9969a9e
chore(deps): update dependency google-cloud-core to v2.4.2 (#601)
renovate-bot Feb 21, 2025
8cd6841
chore(deps): update dependency cachetools to v5.5.2 (#600)
renovate-bot Feb 21, 2025
fdd51b7
feat: support request and transaction tags (#558)
olavloite Feb 21, 2025
fd6811c
chore(main): release 1.9.0 (#603)
release-please[bot] Feb 27, 2025
87b26d6
chore: remove unused files (#614)
parthea Mar 10, 2025
d2fa7af
chore(deps): update dependency googleapis-common-protos to v1.69.1 (#…
renovate-bot Mar 10, 2025
46a3b9c
chore(deps): update dependency click to v8.1.8 (#560)
renovate-bot Mar 10, 2025
a39fd55
chore(deps): update dependency grpc-google-iam-v1 to v0.14.1 (#608)
renovate-bot Mar 10, 2025
058b2ae
chore(deps): update dependency alembic to v1.15.1 (#615)
renovate-bot Mar 10, 2025
cc057fb
chore(deps): update dependency google-api-core to v2.24.2 (#617)
renovate-bot Mar 10, 2025
9dc1807
chore(deps): update dependency proto-plus to v1.26.1 (#618)
renovate-bot Mar 10, 2025
2a600f2
feat: support AUTO_INCREMENT and IDENTITY columns (#610)
olavloite Mar 17, 2025
19583c9
chore(deps): update dependency google-cloud-core to v2.4.3 (#619)
renovate-bot Mar 17, 2025
f0c8560
chore(deps): update dependency grpcio to v1.71.0 (#620)
renovate-bot Mar 17, 2025
af789c5
chore(deps): update dependency grpcio-status to v1.71.0 (#621)
renovate-bot Mar 17, 2025
68bc4d9
chore(deps): update dependency sqlalchemy to v2.0.39 (#622)
renovate-bot Mar 17, 2025
f4219b9
chore(deps): update opentelemetry-python monorepo to v1.31.0 (#623)
renovate-bot Mar 17, 2025
335a050
chore(deps): update dependency google-cloud-spanner to v3.53.0 (#624)
renovate-bot Mar 17, 2025
1242f85
chore(main): release 1.10.0 (#625)
release-please[bot] Mar 17, 2025
6bfb66a
chore(deps): update dependency googleapis-common-protos to v1.70.0 (#…
renovate-bot May 1, 2025
4d46dcc
chore(deps): update opentelemetry-python monorepo to v1.32.1 (#629)
renovate-bot May 1, 2025
8bba697
chore(deps): update dependency typing-extensions to v4.13.2 (#631)
renovate-bot May 1, 2025
be7316e
chore(deps): update dependency pyparsing to v3.2.3 (#630)
renovate-bot May 1, 2025
1b57974
chore(deps): update dependency grpc-google-iam-v1 to v0.14.2 (#627)
renovate-bot May 1, 2025
646df1e
chore(deps): update dependency sqlalchemy to v2.0.40 (#632)
renovate-bot May 1, 2025
867ff6e
chore(deps): update dependency pyasn1-modules to v0.4.2 (#633)
renovate-bot May 1, 2025
3fa73e6
chore(deps): update dependency alembic to v1.15.2 (#634)
renovate-bot May 1, 2025
3124e24
chore(deps): update dependency protobuf to v5.29.4 (#636)
renovate-bot May 1, 2025
3bba24c
chore(deps): update dependency mako to v1.3.10 (#642)
renovate-bot May 1, 2025
bb11a77
chore(deps): update dependency rsa to v4.9.1 (#643)
renovate-bot May 1, 2025
9bd6a97
chore(deps): update dependency certifi to v2025.4.26 (#644)
renovate-bot May 2, 2025
cd81171
chore(deps): update dependency google-auth to v2.39.0 (#645)
renovate-bot May 2, 2025
c514d9f
chore(deps): update dependency google-cloud-spanner to v3.54.0 (#646)
renovate-bot May 2, 2025
847dd53
chore(deps): update dependency importlib-metadata to v8.7.0 (#647)
renovate-bot May 2, 2025
abf23cb
chore(deps): update dependency urllib3 to v2.4.0 (#648)
renovate-bot May 2, 2025
2712a03
chore(deps): update dependency packaging to v25 (#649)
renovate-bot May 2, 2025
3637b43
fix: include schema when creating indices (#637)
waltaskew May 2, 2025
e2a0d90
feat: support schemas in queries and dml statements (#639)
waltaskew May 2, 2025
868838d
chore: ignore tx warnings in pdml test (#653)
olavloite May 3, 2025
1d61fa4
chore(deps): update dependency charset-normalizer to v3.4.2 (#650)
renovate-bot May 5, 2025
c62cf6f
fix: column order in get_multi_pk_constraint (#640)
twoodwark May 5, 2025
18cd80f
chore(deps): update dependency google-auth to v2.40.0 (#656)
renovate-bot May 6, 2025
c84dd37
feat: add SpannerPickleType (#655)
olavloite May 7, 2025
03cb9f6
chore(deps): update dependency google-auth to v2.40.1 (#657)
renovate-bot May 7, 2025
9bd80da
feat: add isolation level support and sample (#652)
olavloite May 7, 2025
ca19988
chore(main): release 1.11.0 (#651)
release-please[bot] May 7, 2025
adbe3b4
chore(deps): update opentelemetry-python monorepo to v1.33.1 (#658)
renovate-bot May 27, 2025
34ba5ba
chore(deps): update dependency click to v8.2.1 (#660)
renovate-bot May 27, 2025
ce07385
chore(deps): update dependency sqlalchemy to v2.0.41 (#661)
renovate-bot May 27, 2025
a1b2195
bug: update google-cloud-spanner dependency (#662)
waltaskew May 27, 2025
8fabead
chore(deps): update dependency google-auth to v2.40.2 (#663)
renovate-bot May 27, 2025
2908f28
chore(deps): update dependency alembic to v1.16.1 (#664)
renovate-bot May 27, 2025
3e46fac
chore(deps): update dependency cachetools to v6 (#665)
renovate-bot May 27, 2025
cd30544
chore(deps): update dependency zipp to v3.22.0 (#666)
renovate-bot May 27, 2025
303d6e2
fix: update README to include isolation level repeatable read (#668)
olavloite May 27, 2025
a7190d2
chore(main): release 1.11.1 (#669)
release-please[bot] May 27, 2025
d8b1679
feat: support multi-row inserts (#671)
waltaskew May 30, 2025
6c52946
chore(deps): update dependency protobuf to v5.29.5 (#674)
renovate-bot May 30, 2025
47c9d57
feat: support database role in connect arguments (#667)
olavloite Jun 2, 2025
74a5a10
chore(deps): update dependency google-cloud-spanner to v3.55.0 (#675)
renovate-bot Jun 2, 2025
5659290
feat: document the use of statement and transaction tags (#676)
olavloite Jun 2, 2025
6d7eb5e
chore(main): release 1.12.0 (#673)
release-please[bot] Jun 2, 2025
6dca7b0
feat: Introduce compatibility with native namespace packages (#375)
parthea Jun 5, 2025
35b849f
chore(main): release 1.13.0 (#688)
release-please[bot] Jun 5, 2025
114ea4e
chore(deps): update dependency grpcio-status to v1.73.0 (#678)
renovate-bot Jun 19, 2025
65b79b0
chore(deps): update dependency grpcio to v1.73.0 (#677)
renovate-bot Jun 19, 2025
0ee1609
chore(deps): update dependency google-api-core to v2.25.1 (#679)
renovate-bot Jun 19, 2025
f1c8cc3
chore(deps): update dependency typing-extensions to v4.14.0 (#680)
renovate-bot Jun 20, 2025
d1afbae
chore(deps): update opentelemetry-python monorepo to v1.34.1 (#683)
renovate-bot Jun 20, 2025
a651592
chore(deps): update dependency google-auth to v2.40.3 (#687)
renovate-bot Jun 20, 2025
67493ee
bug: Support Retrieval of Cross-Schema Foreign Keys (#681)
waltaskew Jun 20, 2025
8d34fb6
chore(deps): update dependency zipp to v3.23.0 (#690)
renovate-bot Jun 20, 2025
8520d26
build(deps): bump requests from 2.32.3 to 2.32.4 (#692)
dependabot[bot] Jun 20, 2025
0f0c1ac
chore(deps): update dependency certifi to v2025.6.15 (#696)
renovate-bot Jun 20, 2025
8228fa1
chore(deps): update dependency urllib3 to v2.5.0 [security] (#700)
renovate-bot Jun 20, 2025
85f5004
chore(deps): update dependency alembic to v1.16.2 (#701)
renovate-bot Jun 20, 2025
2ca75ff
chore(deps): update dependency importlib-metadata to v8.7.0 (#704)
renovate-bot Jun 20, 2025
c9d38dc
chore(deps): update dependency cachetools to v6 (#702)
renovate-bot Jun 20, 2025
6fe9735
chore(main): release 1.13.1 (#705)
release-please[bot] Jun 20, 2025
cba2b49
chore(deps): update dependency grpcio to v1.73.1 (#707)
renovate-bot Jun 27, 2025
fe7f312
chore(deps): update dependency grpcio-status to v1.73.1 (#708)
renovate-bot Jun 27, 2025
e55408e
chore: make the fk query joins consistent (#703)
olavloite Jun 27, 2025
bff3d73
feat: Support Server-Side Checks for Enums (#694)
waltaskew Jun 27, 2025
0f55b6d
feat: support commit timestamp option (#697)
waltaskew Jun 27, 2025
9530ad4
bug: don't rollback non-spanner connections on reset (#709)
waltaskew Jun 27, 2025
e3ac8e7
chore(main): release 1.14.0 (#710)
release-please[bot] Jun 27, 2025
006289e
chore(deps): update dependency google-cloud-spanner to v3.56.0 (#722)
renovate-bot Aug 15, 2025
797f56b
chore(deps): update dependency alembic to v1.16.4 (#713)
renovate-bot Aug 18, 2025
e76e152
chore(deps): update dependency certifi to v2025.8.3 (#714)
renovate-bot Aug 18, 2025
375eb92
chore(deps): update opentelemetry-python monorepo to v1.36.0 (#716)
renovate-bot Aug 18, 2025
b65ec23
chore(deps): update dependency grpcio to v1.74.0 (#723)
renovate-bot Aug 18, 2025
3fe0427
chore(deps): update dependency sqlalchemy to v2.0.43 (#725)
renovate-bot Aug 18, 2025
86df251
chore(deps): update dependency grpcio-status to v1.74.0 (#724)
renovate-bot Aug 18, 2025
97b67b0
chore(deps): update dependency pip-tools to v7.5.0 (#731)
renovate-bot Aug 18, 2025
0d803d5
chore(deps): update dependency charset-normalizer to v3.4.3 (#736)
renovate-bot Aug 18, 2025
a4e15c1
chore(deps): update dependency greenlet to v3.2.4 (#737)
renovate-bot Aug 18, 2025
9330f63
chore(deps): update dependency wrapt to v1.17.3 (#738)
renovate-bot Aug 18, 2025
a36bbc8
chore(deps): update dependency build to v1.3.0 (#739)
renovate-bot Aug 18, 2025
fff395c
chore(deps): update dependency typing-extensions to v4.14.1 (#711)
renovate-bot Aug 18, 2025
87e0174
chore: update blunderbuss config (#734)
olavloite Aug 18, 2025
261c7b3
feat: add license metadata to setup.py (#712)
waltaskew Aug 18, 2025
c2f5a3d
feat: support informational foreign keys (#719)
waltaskew Aug 18, 2025
4cdc01b
chore(deps): update actions/checkout action to v5 (#741)
renovate-bot Aug 18, 2025
de0f29c
chore(deps): update dependency cachetools to v6 (#742)
renovate-bot Aug 18, 2025
454849f
feat: enable SQLAlchemy 2.0's insertmany feature (#721)
waltaskew Aug 18, 2025
6dbd4d3
fix: Respect existing server default in alter column DDL (#733)
waltaskew Aug 18, 2025
5795ecb
fix: Report column defaults in introspection (#744)
waltaskew Aug 19, 2025
e6df532
chore(deps): update dependency requests to v2.32.5 (#745)
renovate-bot Aug 19, 2025
2b8a3ee
chore(main): release 1.15.0 (#743)
release-please[bot] Aug 19, 2025
6030e07
chore(deps): update dependency typing-extensions to v4.15.0 (#746)
renovate-bot Sep 1, 2025
1762c41
chore(deps): update dependency cachetools to v6.2.0 (#747)
renovate-bot Sep 1, 2025
ecfcc37
chore(deps): update dependency alembic to v1.16.5 (#748)
renovate-bot Sep 1, 2025
b452979
feat: Support NULL FILTERED indexes (#750)
waltaskew Sep 1, 2025
ffbdd26
docs: add sample for parse_json (#752)
olavloite Sep 2, 2025
d33bc34
chore(main): release 1.16.0 (#751)
release-please[bot] Sep 2, 2025
8b2d350
chore(deps): update actions/setup-python action to v6 (#753)
renovate-bot Oct 8, 2025
04d9712
chore(deps): update opentelemetry-python monorepo to v1.37.0 (#754)
renovate-bot Oct 8, 2025
03d5c34
chore(deps): update dependency protobuf to v6.32.1 (#755)
renovate-bot Oct 8, 2025
a996309
chore(deps): update dependency pyparsing to v3.2.5 (#756)
renovate-bot Oct 8, 2025
9e1d1c6
chore(deps): update dependency grpcio to v1.75.1 (#757)
renovate-bot Oct 8, 2025
46f2bb0
chore(deps): update dependency grpcio-status to v1.75.1 (#758)
renovate-bot Oct 8, 2025
bf2add4
chore(deps): update dependency click to v8.3.0 (#759)
renovate-bot Oct 8, 2025
bc3a2b6
chore(deps): update dependency google-cloud-spanner to v3.58.0 (#760)
renovate-bot Oct 8, 2025
5bbe050
chore(deps): update dependency markupsafe to v3.0.3 (#763)
renovate-bot Oct 8, 2025
bd2ae54
chore(deps): update dependency google-auth to v2.41.1 (#764)
renovate-bot Oct 8, 2025
7b8011a
build: update default python version to 3.12 (#770)
olavloite Oct 8, 2025
bb0ef37
chore(deps): update dependency google-api-core to v2.25.2 (#766)
renovate-bot Oct 8, 2025
5e38a25
chore(deps): update dependency pip-tools to v7.5.1 (#767)
renovate-bot Oct 8, 2025
6c606a4
chore(deps): update dependency certifi to v2025.10.5 (#768)
renovate-bot Oct 8, 2025
bfa1b02
feat: Add Support for Interleaved Indexes (#762)
waltaskew Oct 9, 2025
08fa626
chore(deps): update dependency google-api-core to v2.26.0 (#771)
renovate-bot Oct 9, 2025
4ba42c6
chore(deps): update dependency tomli to v2.3.0 (#772)
renovate-bot Oct 9, 2025
14ebe90
chore(main): release 1.17.0 (#773)
release-please[bot] Oct 9, 2025
bbdb734
chore(deps): update dependency sqlalchemy to v2.0.44 (#774)
renovate-bot Oct 20, 2025
74f0698
chore(deps): update dependency alembic to v1.17.0 (#775)
renovate-bot Oct 20, 2025
1c0f246
chore(deps): update dependency cachetools to v6.2.1 (#776)
renovate-bot Oct 20, 2025
1d3d152
chore(deps): update dependency idna to v3.11 (#777)
renovate-bot Oct 20, 2025
15a808b
chore(deps): update dependency charset-normalizer to v3.4.4 (#778)
renovate-bot Oct 20, 2025
6d32db6
chore(deps): update dependency grpc-google-iam-v1 to v0.14.3 (#780)
renovate-bot Oct 20, 2025
700c021
chore(deps): update dependency protobuf to v6.33.0 (#781)
renovate-bot Oct 20, 2025
b69866a
chore(deps): update opentelemetry-python monorepo to v1.38.0 (#782)
renovate-bot Oct 20, 2025
eae2f3a
fix: Return Correct Column Order in get_multi_foreign_keys (#783)
waltaskew Oct 21, 2025
2d95aec
chore(deps): update dependency googleapis-common-protos to v1.71.0 (#…
renovate-bot Oct 21, 2025
c853645
chore(main): release 1.17.1 (#786)
release-please[bot] Oct 21, 2025
c22c93a
chore: exclude last_update from the THEN RETURN clause (#799)
olavloite Nov 10, 2025
5077ce4
fix: Retrieve columns in compound indexes in correct order (#798)
waltaskew Nov 10, 2025
da8695c
chore(librarian): onboard to librarian (#796)
parthea Nov 13, 2025
659970c
chore(python): Add support for Python 3.14 (#804)
chalmerlowe Dec 11, 2025
0778a36
chore: librarian release pull request: 20251215T133347Z (#806)
daniel-sanche Dec 15, 2025
d549dbf
chore: replace old spanner teams with spanner-team (#820)
suztomo Feb 19, 2026
ec4aa39
test: fix conformance tests for SQLAlchemy 2.0 (#835)
olavloite Mar 4, 2026
1a33760
chore(deps): update dependency cachetools to v6.2.6 (#825)
renovate-bot Mar 4, 2026
caf6001
chore(deps): update dependency click to v8.3.1 (#826)
renovate-bot Mar 4, 2026
389b7df
chore(deps): update dependency importlib-metadata to v8.7.1 (#827)
renovate-bot Mar 4, 2026
7f5d495
chore(deps): update dependency pip-tools to v7.5.3 (#828)
renovate-bot Mar 4, 2026
1191d15
chore(deps): update dependency sqlalchemy to v2.0.48 (#829)
renovate-bot Mar 4, 2026
1f9e99b
chore(deps): update dependency build to v1.4.0 (#830)
renovate-bot Mar 4, 2026
306372e
chore(deps): update dependency certifi to v2025.11.12 (#831)
renovate-bot Mar 4, 2026
6eee2f7
chore(deps): update dependency greenlet to v3.3.2 (#832)
renovate-bot Mar 4, 2026
630043d
chore(deps): update dependency proto-plus to v1.27.1 (#833)
renovate-bot Mar 5, 2026
aa8ea85
chore(deps): update dependency pyparsing to v3.3.2 (#834)
renovate-bot Mar 5, 2026
34c2a8f
chore(deps): update dependency protobuf to v6.33.5 [security] (#836)
renovate-bot Mar 5, 2026
e00edaf
chore(deps): update dependency tomli to v2.4.0 (#837)
renovate-bot Mar 5, 2026
bfab248
chore(deps): update actions/checkout action to v6 (#839)
renovate-bot Mar 5, 2026
448c371
chore(deps): update dependency protobuf to v7 (#843)
renovate-bot Mar 5, 2026
0c41418
chore(deps): update dependency cachetools to v7 (#840)
renovate-bot Mar 5, 2026
d99adf9
chore(deps): update dependency certifi to v2026 (#841)
renovate-bot Mar 5, 2026
055a8fe
chore(deps): update dependency packaging to v26 (#842)
renovate-bot Mar 5, 2026
7365312
chore(deps): update opentelemetry-python monorepo to v1.40.0 (#838)
renovate-bot Mar 5, 2026
588ff02
chore: add repo-metadata.json (#849)
parthea Mar 9, 2026
99b0800
Merge remote-tracking branch 'remote.googleapis/python-spanner-sqlalc…
parthea Mar 9, 2026
bf047e7
Trigger owlbot post-processor
parthea Mar 9, 2026
90f67ec
build: sqlalchemy-spanner migration: adjust owlbot-related files
parthea Mar 9, 2026
84ca5f5
chore: delete unused directories and files
chalmerlowe Mar 12, 2026
52bb579
chore: update repo URLs and references and check for Ruff
chalmerlowe Mar 12, 2026
859dbeb
chore: updates librarian state.yaml with library id and metadata
chalmerlowe Mar 12, 2026
d864543
chore: standardize noxfile sessions and parameters
chalmerlowe Mar 12, 2026
14e0e80
updates sessions to better handle compliance, migration, mockserver p…
chalmerlowe Mar 12, 2026
c42459a
udpates linting
chalmerlowe Mar 12, 2026
a80b91c
udpates linting in noxfile
chalmerlowe Mar 12, 2026
9cc1f90
fix(nox): remove test_config generation from unit session
chalmerlowe Mar 12, 2026
03cce70
fix(nox): provide default sqlite db config for unit tests
chalmerlowe Mar 12, 2026
8fb857d
fix(nox): add missing docs and docfx sessions
chalmerlowe Mar 12, 2026
e09ad57
chore: testing docs and docfx
chalmerlowe Mar 12, 2026
4df9f6c
Update versions in system session.
chalmerlowe Mar 12, 2026
6286ec3
Update version for migration test
chalmerlowe Mar 12, 2026
30b3cdd
chore: adds report to list of packages with system tests
chalmerlowe Mar 12, 2026
2fa18e5
chore: adds sqlalchemy-spanner to list of packages with system tests
chalmerlowe Mar 12, 2026
6a23281
experiment: checking test execution
chalmerlowe Mar 13, 2026
683ec72
chore: revise indents
chalmerlowe Mar 13, 2026
d24df48
chore: adds nox.options.sessions
chalmerlowe Mar 13, 2026
dfcbdd6
chore: changes directory name from 'test' to 'tests'
chalmerlowe Mar 13, 2026
19c82b9
chore: removes deleted files
chalmerlowe Mar 13, 2026
a42bc4f
chore: update name of directory from test to tests
chalmerlowe Mar 13, 2026
37c1b91
chore: updates import path to use tests instead of test
chalmerlowe Mar 13, 2026
c0979b8
chore: additional updates on directory names test -> tests
chalmerlowe Mar 13, 2026
a989e86
chore: remove unneeded comments
chalmerlowe Mar 13, 2026
6a234bf
chore: updates linting
chalmerlowe Mar 13, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .kokoro/system.sh
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,7 @@ packages_with_system_tests=(
"google-cloud-datastore"
"google-cloud-dns"
"google-cloud-error-reporting"
"sqlalchemy-spanner"
"google-cloud-firestore"
"google-cloud-logging"
"google-cloud-testutils"
Expand Down
9 changes: 9 additions & 0 deletions .librarian/state.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4074,3 +4074,12 @@ libraries:
preserve_regex: []
remove_regex: []
tag_format: '{id}-v{version}'
- id: sqlalchemy-spanner
version: 1.17.2
last_generated_commit: ""
apis: []
source_roots:
- packages/sqlalchemy-spanner
preserve_regex: []
remove_regex: []
tag_format: '{id}-v{version}'
14 changes: 14 additions & 0 deletions packages/sqlalchemy-spanner/.repo-metadata.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"name": "sqlalchemy-spanner",
"name_pretty": "Spanner dialect for SQLAlchemy",
"product_documentation": "https://cloud.google.com/spanner/docs",
"client_documentation": "https://github.com/googleapis/python-spanner-sqlalchemy",
"issue_tracker": "https://issuetracker.google.com/issues?q=componentid:190851%2B%20status:open",
"release_level": "stable",
"language": "python",
"library_type": "INTEGRATION",
"repo": "googleapis/google-cloud-python",
"distribution_name": "sqlalchemy-spanner",
"requires_billing": true,
"api_shortname": "sqlalchemy-spanner"
}
26 changes: 26 additions & 0 deletions packages/sqlalchemy-spanner/BENCHMARKS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# Benchmarks

The performance test suite is located in [test/benchmark.py](https://github.com/cloudspannerecosystem/python-spanner-sqlalchemy/blob/main/test/benchmark.py) and intended to compare execution time difference between SQLAlchemy dialect for Spanner and pure Spanner client.

The test suite requirements:
- `scipy` Python package installed
- the original dialect requirements

Use `PROJECT`, `INSTANCE` and `DATABASE` module constants to set a project to execute tests on.

The following measurements were made on a VM instance.

# 25-11-2021

|Test|mean, sec|error|std_dev|
|----|-------|-----|--------|
|SPANNER insert_one_row_with_fetch_after| 0.16|0.0|0.03|
|ALCHEMY insert_one_row_with_fetch_after| 0.11| 0.0|0.02|
|SPANNER read_one_row| 0.04| 0.0| 0.01|
|ALCHEMY read_one_row| 0.01| 0.0| 0.0|
|SPANNER insert_many_rows| 0.33| 0.01| 0.05|
|ALCHEMY insert_many_rows| 0.32| 0.01| 0.06|
|SPANNER select_many_rows| 0.04| 0.0| 0.01|
|ALCHEMY select_many_rows| 0.03| 0.0| 0.0|
|SPANNER insert_many_rows_with_mutations| 0.07| 0.0| 0.03|
|SQLALCHEMY insert_many_rows_with_mutations| 0.31| 0.01| 0.07|
318 changes: 318 additions & 0 deletions packages/sqlalchemy-spanner/CHANGELOG.md

Large diffs are not rendered by default.

54 changes: 54 additions & 0 deletions packages/sqlalchemy-spanner/CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
# How to Contribute

We'd love to accept your patches and contributions to this project. There are
just a few small guidelines you need to follow.

## Contributor License Agreement

Contributions to this project must be accompanied by a Contributor License
Agreement. You (or your employer) retain the copyright to your contribution;
this simply gives us permission to use and redistribute your contributions as
part of the project. Head over to <https://cla.developers.google.com/> to see
your current agreements on file or to sign a new one.

You generally only need to submit a CLA once, so if you've already submitted one
(even if it was for a different project), you probably don't need to do it
again.

## Code Reviews

All submissions, including submissions by project members, require review. We
use GitHub pull requests for this purpose. Consult
[GitHub Help](https://help.github.com/articles/about-pull-requests/) for more
information on using pull requests.

## Community Guidelines

This project follows [Google's Open Source Community
Guidelines](https://opensource.google/conduct/).

## Running tests

SQLAlchemy Spanner dialect includes a test suite, which can be executed both on a live service and Spanner emulator.

**Using pytest**
To execute the test suite with standard `pytest` package you only need to checkout to the package folder and run:
```
pytest -v
```

**Using nox**
The package includes a configuration file for `nox` package, which allows to execute the dialect test suite in an isolated virtual environment. To execute all the `nox` sessions checkout to the dialect folder and then run command:
```
nox
```
To execute only the dialect compliance test suite execute command:
```
nox -s compliance_test
```

**Live service**
To run the test suite on a live service use [setup.cfg](https://github.com/cloudspannerecosystem/python-spanner-sqlalchemy/blob/main/setup.cfg) `db.default` attribute to set URI of the project, instance and database, where the tests should be executed.

**Emulator**
As the dialect is built on top of the Spanner DB API, it also supports running on Spanner emulator. To make it happen you need to set an environment variable, pointing to the emulator service, for example `SPANNER_EMULATOR_HOST=localhost:9010`
202 changes: 202 additions & 0 deletions packages/sqlalchemy-spanner/LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,202 @@

Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/

TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

1. Definitions.

"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.

"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.

"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.

"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.

"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.

"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.

"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).

"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.

"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."

"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.

2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.

3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.

4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:

(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and

(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and

(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and

(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.

You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.

5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.

6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.

7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.

8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.

9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.

END OF TERMS AND CONDITIONS

APPENDIX: How to apply the Apache License to your work.

To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.

Copyright [yyyy] [name of copyright owner]

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Loading
Loading