diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml index a9bdb1b7..dd98abbd 100644 --- a/.github/.OwlBot.lock.yaml +++ b/.github/.OwlBot.lock.yaml @@ -13,5 +13,5 @@ # limitations under the License. docker: image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest - digest: sha256:fac304457974bb530cc5396abd4ab25d26a469cd3bc97cbfb18c8d4324c584eb -# created: 2023-10-02T21:31:03.517640371Z + digest: sha256:08e34975760f002746b1d8c86fdc90660be45945ee6d9db914d1508acdf9a547 +# created: 2023-10-09T14:06:13.397766266Z diff --git a/.kokoro/requirements.txt b/.kokoro/requirements.txt index 96d593c8..0332d326 100644 --- a/.kokoro/requirements.txt +++ b/.kokoro/requirements.txt @@ -467,9 +467,9 @@ typing-extensions==4.4.0 \ --hash=sha256:1511434bb92bf8dd198c12b1cc812e800d4181cfcb867674e0f8279cc93087aa \ --hash=sha256:16fa4864408f655d35ec496218b85f79b3437c829e93320c7c9215ccfd92489e # via -r requirements.in -urllib3==1.26.12 \ - --hash=sha256:3fa96cf423e6987997fc326ae8df396db2a8b7c667747d47ddd8ecba91f4a74e \ - --hash=sha256:b930dd878d5a8afb066a637fbb35144fe7901e3b209d1cd4f524bd0e9deee997 +urllib3==1.26.17 \ + --hash=sha256:24d6a242c28d29af46c3fae832c36db3bbebcc533dd1bb549172cd739c82df21 \ + --hash=sha256:94a757d178c9be92ef5539b8840d48dc9cf1b2709c9d6b588232a055c524458b # via # requests # twine diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 19409cbd..6a8e1695 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -22,7 +22,7 @@ repos: - id: end-of-file-fixer - id: check-yaml - repo: https://github.com/psf/black - rev: 22.3.0 + rev: 23.7.0 hooks: - id: black - repo: https://github.com/pycqa/flake8 diff --git a/noxfile.py b/noxfile.py index acaee9da..800e1f1d 100644 --- a/noxfile.py +++ b/noxfile.py @@ -17,23 +17,25 @@ # Generated by synthtool. DO NOT EDIT! from __future__ import absolute_import + import os import pathlib import re import re import shutil +from typing import Dict, List import warnings import nox FLAKE8_VERSION = "flake8==6.1.0" -BLACK_VERSION = "black==22.3.0" -ISORT_VERSION = "isort==5.10.1" +BLACK_VERSION = "black[jupyter]==23.7.0" +ISORT_VERSION = "isort==5.11.0" LINT_PATHS = ["docs", "sqlalchemy_bigquery", "tests", "noxfile.py", "setup.py"] DEFAULT_PYTHON_VERSION = "3.8" -UNIT_TEST_PYTHON_VERSIONS = ["3.8", "3.9", "3.10", "3.11"] +UNIT_TEST_PYTHON_VERSIONS: List[str] = ["3.8", "3.9", "3.10", "3.11"] UNIT_TEST_STANDARD_DEPENDENCIES = [ "mock", "asyncmock", @@ -41,13 +43,13 @@ "pytest-cov", "pytest-asyncio", ] -UNIT_TEST_EXTERNAL_DEPENDENCIES = [] -UNIT_TEST_LOCAL_DEPENDENCIES = [] -UNIT_TEST_DEPENDENCIES = [] -UNIT_TEST_EXTRAS = [ +UNIT_TEST_EXTERNAL_DEPENDENCIES: List[str] = [] +UNIT_TEST_LOCAL_DEPENDENCIES: List[str] = [] +UNIT_TEST_DEPENDENCIES: List[str] = [] +UNIT_TEST_EXTRAS: List[str] = [ "tests", ] -UNIT_TEST_EXTRAS_BY_PYTHON = { +UNIT_TEST_EXTRAS_BY_PYTHON: Dict[str, List[str]] = { "3.8": [ "tests", "alembic", @@ -60,19 +62,19 @@ ], } -SYSTEM_TEST_PYTHON_VERSIONS = ["3.8", "3.11"] -SYSTEM_TEST_STANDARD_DEPENDENCIES = [ +SYSTEM_TEST_PYTHON_VERSIONS: List[str] = ["3.8", "3.11"] +SYSTEM_TEST_STANDARD_DEPENDENCIES: List[str] = [ "mock", "pytest", "google-cloud-testutils", ] -SYSTEM_TEST_EXTERNAL_DEPENDENCIES = [] -SYSTEM_TEST_LOCAL_DEPENDENCIES = [] -SYSTEM_TEST_DEPENDENCIES = [] -SYSTEM_TEST_EXTRAS = [ +SYSTEM_TEST_EXTERNAL_DEPENDENCIES: List[str] = [] +SYSTEM_TEST_LOCAL_DEPENDENCIES: List[str] = [] +SYSTEM_TEST_DEPENDENCIES: List[str] = [] +SYSTEM_TEST_EXTRAS: List[str] = [ "tests", ] -SYSTEM_TEST_EXTRAS_BY_PYTHON = { +SYSTEM_TEST_EXTRAS_BY_PYTHON: Dict[str, List[str]] = { "3.8": [ "tests", "alembic", @@ -96,6 +98,7 @@ "lint_setup_py", "blacken", "docs", + "format", ] # Error if a python version is missing @@ -223,7 +226,6 @@ def unit(session): def install_systemtest_dependencies(session, *constraints): - # Use pre-release gRPC for system tests. # Exclude version 1.52.0rc1 which has a known issue. # See https://github.com/grpc/grpc/issues/32163 diff --git a/sqlalchemy_bigquery/base.py b/sqlalchemy_bigquery/base.py index 7d1e8d36..5297f223 100644 --- a/sqlalchemy_bigquery/base.py +++ b/sqlalchemy_bigquery/base.py @@ -183,7 +183,6 @@ def pre_exec(self): class BigQueryCompiler(_struct.SQLCompiler, SQLCompiler): - compound_keywords = SQLCompiler.compound_keywords.copy() compound_keywords[selectable.CompoundSelect.UNION] = "UNION DISTINCT" compound_keywords[selectable.CompoundSelect.UNION_ALL] = "UNION ALL" @@ -624,7 +623,6 @@ def visit_NUMERIC(self, type_, **kw): class BigQueryDDLCompiler(DDLCompiler): - # BigQuery has no support for foreign keys. def visit_foreign_key_constraint(self, constraint): return None @@ -723,7 +721,6 @@ def literal_processor(self, dialect): class BQArray(sqlalchemy.sql.sqltypes.ARRAY): def literal_processor(self, dialect): - item_processor = self.item_type._cached_literal_processor(dialect) if not item_processor: raise NotImplementedError( diff --git a/tests/sqlalchemy_dialect_compliance/test_dialect_compliance.py b/tests/sqlalchemy_dialect_compliance/test_dialect_compliance.py index 4efb155e..a79f2818 100644 --- a/tests/sqlalchemy_dialect_compliance/test_dialect_compliance.py +++ b/tests/sqlalchemy_dialect_compliance/test_dialect_compliance.py @@ -54,7 +54,6 @@ def test_simple_offset(self): test_bound_offset = test_simple_offset class TimestampMicrosecondsTest(_TimestampMicrosecondsTest): - data = datetime.datetime(2012, 10, 15, 12, 57, 18, 396, tzinfo=pytz.UTC) def test_literal(self): diff --git a/tests/unit/fauxdbi.py b/tests/unit/fauxdbi.py index c6ee2a73..4d8f02b6 100644 --- a/tests/unit/fauxdbi.py +++ b/tests/unit/fauxdbi.py @@ -354,7 +354,6 @@ def __getattr__(self, name): class FauxClient: def __init__(self, project_id=None, default_query_job_config=None, *args, **kw): - if project_id is None: if default_query_job_config is not None: project_id = default_query_job_config.default_dataset.project diff --git a/tests/unit/test_like_reescape.py b/tests/unit/test_like_reescape.py index 003a0299..01672ca3 100644 --- a/tests/unit/test_like_reescape.py +++ b/tests/unit/test_like_reescape.py @@ -29,7 +29,6 @@ def _check(raw, escaped, escape=None, autoescape=True): - col = sqlalchemy.sql.schema.Column() op = col.contains(raw, escape=escape, autoescape=autoescape) o2 = sqlalchemy_bigquery.base.BigQueryCompiler._maybe_reescape(op) @@ -40,7 +39,6 @@ def _check(raw, escaped, escape=None, autoescape=True): def test_like_autoescape_reescape(): - _check("ab%cd", "ab\\%cd") _check("ab%c_d", "ab\\%c\\_d") _check("ab%cd", "ab%cd", autoescape=False)