Skip to content

fix: Avoid sqlalchemy20 #736

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 43 commits into from
Jan 30, 2023
Merged
Changes from 2 commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
25b4acd
Sets cache support to false, removes upper req limit
chalmerlowe Oct 25, 2022
68dce2f
merge
chalmerlowe Jan 23, 2023
d57f51e
fix: sets upper limit to exclude sqlalchemy 2.0 (a breaking dependency)
chalmerlowe Jan 25, 2023
a94270a
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Jan 25, 2023
ef282fd
fix: sets upper limit to exclude rc and dev branches
chalmerlowe Jan 25, 2023
6dc8892
fixes merge
chalmerlowe Jan 25, 2023
7307bd0
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Jan 25, 2023
07380c5
add comment for testing purposes
chalmerlowe Jan 25, 2023
4e968d9
fix merge conflict
chalmerlowe Jan 25, 2023
5c11de2
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Jan 25, 2023
51f4716
add sqlalchemy 20 to prerelease deps section
chalmerlowe Jan 25, 2023
89d18b0
Merge branch 'avoid-sqlalchemy20' of github.com:googleapis/python-big…
chalmerlowe Jan 25, 2023
feda07e
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Jan 25, 2023
24c05aa
remove prerelease entirely
chalmerlowe Jan 25, 2023
909a97f
Merge branch 'avoid-sqlalchemy20' of github.com:googleapis/python-big…
chalmerlowe Jan 25, 2023
3345b61
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Jan 25, 2023
06b5b33
remove prerelease configs
chalmerlowe Jan 25, 2023
791bd09
Merge branch 'avoid-sqlalchemy20' of github.com:googleapis/python-big…
chalmerlowe Jan 25, 2023
90cc4bb
removes prerelease nox session
chalmerlowe Jan 25, 2023
2951971
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Jan 25, 2023
2e485f5
testing changes to noxfile
chalmerlowe Jan 26, 2023
ae27ceb
Merge branch 'avoid-sqlalchemy20' of github.com:googleapis/python-big…
chalmerlowe Jan 26, 2023
f54f3f8
testing changes to noxfile
chalmerlowe Jan 26, 2023
5eed6c4
testing noxfiles redux
chalmerlowe Jan 26, 2023
8fde268
testing noxfiles triplex
chalmerlowe Jan 26, 2023
f50cf65
testing noxfiles quadruplex
chalmerlowe Jan 26, 2023
900060e
testing noxfiles again
chalmerlowe Jan 26, 2023
3ffecdd
fixes linting
chalmerlowe Jan 26, 2023
40d4673
Adds warning suppression constant
chalmerlowe Jan 26, 2023
864fbbf
Adds warning suppression constant to os.environ
chalmerlowe Jan 26, 2023
df4e7cf
Change variable setting from integer to string
chalmerlowe Jan 26, 2023
87e0c3e
Fixed linting
chalmerlowe Jan 26, 2023
3626d3a
alternate attempt at including an env var
chalmerlowe Jan 27, 2023
4feb6ba
updates to owlbot and noxfile
chalmerlowe Jan 27, 2023
9e70f95
clean up owlbot
chalmerlowe Jan 27, 2023
0a6aff8
more revisions to owlbot
chalmerlowe Jan 27, 2023
552dde7
testing a quirk in owlbot
chalmerlowe Jan 27, 2023
e31673b
testing a quirk in owlbot again
chalmerlowe Jan 27, 2023
760d84f
more testing of owlbot revisions
chalmerlowe Jan 27, 2023
985fae8
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Jan 27, 2023
4cd533b
updated readme and files with potential upper bounds
chalmerlowe Jan 27, 2023
e6014e5
Merge branch 'avoid-sqlalchemy20' of github.com:googleapis/python-big…
chalmerlowe Jan 27, 2023
2944309
update incorrect lower bound
chalmerlowe Jan 27, 2023
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
71 changes: 63 additions & 8 deletions noxfile.py
Original file line number Diff line number Diff line change
Expand Up @@ -283,6 +283,61 @@ def system(session):
)


@nox.session(python=SYSTEM_TEST_PYTHON_VERSIONS[-1])
def compliance(session):
"""Run the SQLAlchemy dialect-compliance system tests"""
constraints_path = str(
CURRENT_DIRECTORY / "testing" / f"constraints-{session.python}.txt"
)
system_test_folder_path = os.path.join("tests", "sqlalchemy_dialect_compliance")

if os.environ.get("RUN_COMPLIANCE_TESTS", "true") == "false":
session.skip("RUN_COMPLIANCE_TESTS is set to false, skipping")
if os.environ.get("GOOGLE_API_USE_CLIENT_CERTIFICATE", "false") == "true":
session.install("pyopenssl")
if not os.path.exists(system_test_folder_path):
session.skip("Compliance tests were not found")

session.install("--pre", "grpcio")
session.install("--pre", "--no-deps", "--upgrade", "sqlalchemy<2.0.0")

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the goal with the upgrade + constraint is to pick up the latest of everything but sqlalchemy?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The constraint is to ensure that we install a prerelease version of sqlalchemy up to but not including 2.0.0.

session.install(
"mock",
# TODO: Allow latest version of pytest once SQLAlchemy 1.4.28+ is supported.
# See: https://github.com/googleapis/python-bigquery-sqlalchemy/issues/413
"pytest<=7.0.0dev",
"pytest-rerunfailures",
"google-cloud-testutils",
"-c",
constraints_path,
)
if session.python == "3.8":
extras = "[tests,alembic]"
elif session.python == "3.11":
extras = "[tests,geography]"
else:
extras = "[tests]"
session.install("-e", f".{extras}", "-c", constraints_path)

session.run(
"py.test",
"-vv",
f"--junitxml=compliance_{session.python}_sponge_log.xml",
"--reruns=3",
"--reruns-delay=60",
"--only-rerun=403 Exceeded rate limits",
"--only-rerun=409 Already Exists",
"--only-rerun=404 Not found",
"--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",
},
)


@nox.session(python=DEFAULT_PYTHON_VERSION)
def cover(session):
"""Run the final coverage report.
Expand All @@ -304,6 +359,8 @@ def docs(session):
session.install(
"sphinx==4.0.1",
"alabaster",
"geoalchemy2",
"shapely",
"recommonmark",
)

Expand All @@ -330,6 +387,8 @@ def docfx(session):
session.install(
"sphinx==4.0.1",
"alabaster",
"geoalchemy2",
"shapely",
"recommonmark",
"gcp-sphinx-docfx-yaml",
)
Expand Down Expand Up @@ -369,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 @@ -397,8 +454,8 @@ def prerelease_deps(session):
session.install(*constraints_deps)

prerel_deps = [
"sqlalchemy<2.0.0
protobuf",
"protobuf",
"sqlalchemy<2.0.0",
# dependency of grpc
"six",
"googleapis-common-protos",
Expand All @@ -424,9 +481,7 @@ def prerelease_deps(session):

# Print out prerelease package versions
session.run(
"python", "-c", "import google.sqlalchemy<2.0.0
protobuf; print(google.sqlalchemy<2.0.0
protobuf.__version__)"
"python", "-c", "import google.protobuf; print(google.protobuf.__version__)"
)
session.run("python", "-c", "import grpc; print(grpc.__version__)")

Expand Down