Skip to content

Commit

Permalink
fix: Avoid sqlalchemy20 (#736)
Browse files Browse the repository at this point in the history
* Sets cache support to false, removes upper req limit

* fix: sets upper limit to exclude sqlalchemy 2.0 (a breaking dependency)

* 🦉 Updates from OwlBot post-processor

See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md

* fix: sets upper limit to exclude rc and dev branches

* 🦉 Updates from OwlBot post-processor

See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md

* add comment for testing purposes

* 🦉 Updates from OwlBot post-processor

See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md

* add sqlalchemy 20 to prerelease deps section

* 🦉 Updates from OwlBot post-processor

See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md

* remove prerelease entirely

* 🦉 Updates from OwlBot post-processor

See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md

* remove prerelease configs

* removes prerelease nox session

* 🦉 Updates from OwlBot post-processor

See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md

* testing changes to noxfile

* testing changes to noxfile

* testing noxfiles redux

* testing noxfiles triplex

* testing noxfiles quadruplex

* testing noxfiles again

* fixes linting

* Adds warning suppression constant

* Adds warning suppression constant to os.environ

* Change variable setting from integer to string

* Fixed linting

* alternate attempt at including an env var

* updates to owlbot and noxfile

* clean up owlbot

* more revisions to owlbot

* testing a quirk in owlbot

* testing a quirk in owlbot again

* more testing of owlbot revisions

* 🦉 Updates from OwlBot post-processor

See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md

* updated readme and files with potential upper bounds

* update incorrect lower bound

---------

Co-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>
  • Loading branch information
chalmerlowe and gcf-owl-bot[bot] authored Jan 30, 2023
1 parent 7aa6696 commit 0675b1e
Show file tree
Hide file tree
Showing 7 changed files with 38 additions and 164 deletions.
7 changes: 0 additions & 7 deletions .kokoro/continuous/prerelease.cfg

This file was deleted.

7 changes: 0 additions & 7 deletions .kokoro/presubmit/prerelease.cfg

This file was deleted.

3 changes: 3 additions & 0 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,9 @@ In order to use this library, you first need to go through the following steps:
.. _Enable the BigQuery Storage API.: https://console.cloud.google.com/apis/library/bigquery.googleapis.com
.. _Setup Authentication.: https://googleapis.dev/python/google-api-core/latest/auth.html

.. note::
This library is only compatible with SQLAlchemy versions < 2.0.0

Installation
------------

Expand Down
2 changes: 1 addition & 1 deletion dev_requirements.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
sqlalchemy>=1.1.9
sqlalchemy>=1.1.9,<2.0.0
google-cloud-bigquery>=1.6.0
future==0.18.2
pytest===6.2.5
Expand Down
82 changes: 8 additions & 74 deletions noxfile.py
Original file line number Diff line number Diff line change
Expand Up @@ -283,76 +283,6 @@ def system(session):
)


@nox.session(python=DEFAULT_PYTHON_VERSION)
def prerelease(session):
session.install(
"--prefer-binary",
"--pre",
"--upgrade",
"alembic",
"geoalchemy2",
"google-api-core",
"google-cloud-bigquery",
"google-cloud-bigquery-storage",
"sqlalchemy",
"shapely",
# These are transitive dependencies, but we'd still like to know if a
# change in a prerelease there breaks this connector.
"google-cloud-core",
"grpcio",
)
session.install(
"freezegun",
"google-cloud-testutils",
"mock",
"psutil",
"pytest",
"pytest-cov",
"pytz",
)

# Because we test minimum dependency versions on the minimum Python
# version, the first version we test with in the unit tests sessions has a
# constraints file containing all dependencies and extras.
with open(
CURRENT_DIRECTORY
/ "testing"
/ f"constraints-{UNIT_TEST_PYTHON_VERSIONS[0]}.txt",
encoding="utf-8",
) as constraints_file:
constraints_text = constraints_file.read()

# Ignore leading whitespace and comment lines.
deps = [
match.group(1)
for match in re.finditer(
r"^\s*(\S+)(?===\S+)", constraints_text, flags=re.MULTILINE
)
]

# We use --no-deps to ensure that pre-release versions aren't overwritten
# by the version ranges in setup.py.
session.install(*deps)
session.install("--no-deps", "-e", ".")

# Print out prerelease package versions.
session.run("python", "-m", "pip", "freeze")

# Run all tests, except a few samples tests which require extra dependencies.
session.run(
"py.test",
"--quiet",
f"--junitxml=prerelease_unit_{session.python}_sponge_log.xml",
os.path.join("tests", "unit"),
)
session.run(
"py.test",
"--quiet",
f"--junitxml=prerelease_system_{session.python}_sponge_log.xml",
os.path.join("tests", "system"),
)


@nox.session(python=SYSTEM_TEST_PYTHON_VERSIONS[-1])
def compliance(session):
"""Run the SQLAlchemy dialect-compliance system tests"""
Expand All @@ -369,7 +299,7 @@ def compliance(session):
session.skip("Compliance tests were not found")

session.install("--pre", "grpcio")

session.install("--pre", "--no-deps", "--upgrade", "sqlalchemy<2.0.0")
session.install(
"mock",
# TODO: Allow latest version of pytest once SQLAlchemy 1.4.28+ is supported.
Expand Down Expand Up @@ -400,6 +330,11 @@ def compliance(session):
"--only-rerun=400 Cannot execute DML over a non-existent table",
system_test_folder_path,
*session.posargs,
# To suppress the "Deprecated API features detected!" warning when
# features not compatible with 2.0 are detected, use a value of "1"
env={
"SQLALCHEMY_SILENCE_UBER_WARNING": "1",
},
)


Expand Down Expand Up @@ -493,9 +428,7 @@ def prerelease_deps(session):
unit_deps_all = UNIT_TEST_STANDARD_DEPENDENCIES + UNIT_TEST_EXTERNAL_DEPENDENCIES
session.install(*unit_deps_all)
system_deps_all = (
SYSTEM_TEST_STANDARD_DEPENDENCIES
+ SYSTEM_TEST_EXTERNAL_DEPENDENCIES
+ SYSTEM_TEST_EXTRAS
SYSTEM_TEST_STANDARD_DEPENDENCIES + SYSTEM_TEST_EXTERNAL_DEPENDENCIES
)
session.install(*system_deps_all)

Expand All @@ -522,6 +455,7 @@ def prerelease_deps(session):

prerel_deps = [
"protobuf",
"sqlalchemy<2.0.0",
# dependency of grpc
"six",
"googleapis-common-protos",
Expand Down
99 changes: 25 additions & 74 deletions owlbot.py
Original file line number Diff line number Diff line change
Expand Up @@ -72,10 +72,28 @@
"import re\nimport shutil",
)


s.replace(
["noxfile.py"], "--cov=google", "--cov=sqlalchemy_bigquery",
)


s.replace(
["noxfile.py"],
"\+ SYSTEM_TEST_EXTRAS",
"",
)


s.replace(
["noxfile.py"],
'''"protobuf",
# dependency of grpc''',
'''"protobuf",
"sqlalchemy<2.0.0",
# dependency of grpc''',
)

def place_before(path, text, *before_text, escape=None):
replacement = "\n".join(before_text) + "\n" + text
if escape:
Expand All @@ -96,78 +114,6 @@ def place_before(path, text, *before_text, escape=None):
"nox.options.stop_on_first_error = True",
)

prerelease = r'''
@nox.session(python=DEFAULT_PYTHON_VERSION)
def prerelease(session):
session.install(
"--prefer-binary",
"--pre",
"--upgrade",
"alembic",
"geoalchemy2",
"google-api-core",
"google-cloud-bigquery",
"google-cloud-bigquery-storage",
"sqlalchemy",
"shapely",
# These are transitive dependencies, but we'd still like to know if a
# change in a prerelease there breaks this connector.
"google-cloud-core",
"grpcio",
)
session.install(
"freezegun",
"google-cloud-testutils",
"mock",
"psutil",
"pytest",
"pytest-cov",
"pytz",
)
# Because we test minimum dependency versions on the minimum Python
# version, the first version we test with in the unit tests sessions has a
# constraints file containing all dependencies and extras.
with open(
CURRENT_DIRECTORY
/ "testing"
/ f"constraints-{UNIT_TEST_PYTHON_VERSIONS[0]}.txt",
encoding="utf-8",
) as constraints_file:
constraints_text = constraints_file.read()
# Ignore leading whitespace and comment lines.
deps = [
match.group(1)
for match in re.finditer(
r"^\\s*(\\S+)(?===\\S+)", constraints_text, flags=re.MULTILINE
)
]
# We use --no-deps to ensure that pre-release versions aren't overwritten
# by the version ranges in setup.py.
session.install(*deps)
session.install("--no-deps", "-e", ".")
# Print out prerelease package versions.
session.run("python", "-m", "pip", "freeze")
# Run all tests, except a few samples tests which require extra dependencies.
session.run(
"py.test",
"--quiet",
f"--junitxml=prerelease_unit_{session.python}_sponge_log.xml",
os.path.join("tests", "unit"),
)
session.run(
"py.test",
"--quiet",
f"--junitxml=prerelease_system_{session.python}_sponge_log.xml",
os.path.join("tests", "system"),
)
'''

# Maybe we can get rid of this when we don't need pytest-rerunfailures,
# which we won't need when BQ retries itself:
Expand All @@ -189,7 +135,7 @@ def compliance(session):
session.skip("Compliance tests were not found")
session.install("--pre", "grpcio")
session.install("--pre", "--no-deps", "--upgrade", "sqlalchemy<2.0.0")
session.install(
"mock",
# TODO: Allow latest version of pytest once SQLAlchemy 1.4.28+ is supported.
Expand Down Expand Up @@ -220,6 +166,11 @@ def compliance(session):
"--only-rerun=400 Cannot execute DML over a non-existent table",
system_test_folder_path,
*session.posargs,
# To suppress the "Deprecated API features detected!" warning when
# features not compatible with 2.0 are detected, use a value of "1"
env={
"SQLALCHEMY_SILENCE_UBER_WARNING": "1",
},
)
Expand All @@ -229,7 +180,7 @@ def compliance(session):
"noxfile.py",
"@nox.session(python=DEFAULT_PYTHON_VERSION)\n"
"def cover(session):",
prerelease + compliance,
compliance,
escape="()",
)

Expand Down
2 changes: 1 addition & 1 deletion testing/constraints-3.9.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
sqlalchemy>=1.4.13
sqlalchemy>=1.4.13,<2.0.0

0 comments on commit 0675b1e

Please sign in to comment.