Skip to content
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

[Backport 1.7.latest] Move to pre-commit only (#777) #797

Merged
merged 1 commit into from
May 8, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
16 changes: 0 additions & 16 deletions .flake8

This file was deleted.

2 changes: 0 additions & 2 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -58,8 +58,6 @@ jobs:
python -m pip install -r dev-requirements.txt
python -m pip --version
pre-commit --version
mypy --version
dbt --version

- name: pre-commit hooks
run: pre-commit run --all-files --show-diff-on-failure
Expand Down
105 changes: 46 additions & 59 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -1,63 +1,50 @@
# For more on configuring pre-commit hooks (see https://pre-commit.com/)

# Force all unspecified python hooks to run python 3.8
default_language_version:
python: python3
python: python3

repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.4.0
hooks:
- id: check-yaml
args: [--unsafe]
- id: check-json
- id: end-of-file-fixer
- id: trailing-whitespace
- id: check-case-conflict
- repo: https://github.com/psf/black
rev: 23.1.0
hooks:
- id: black
additional_dependencies: ['click~=8.1']
args:
- "--line-length=99"
- "--target-version=py38"
- id: black
alias: black-check
stages: [manual]
additional_dependencies: ['click~=8.1']
args:
- "--line-length=99"
- "--target-version=py38"
- "--check"
- "--diff"
- repo: https://github.com/pycqa/flake8
rev: 6.0.0
hooks:
- id: flake8
- id: flake8
alias: flake8-check
stages: [manual]
- repo: https://github.com/pre-commit/mirrors-mypy
rev: v1.1.1
hooks:
- id: mypy
# N.B.: Mypy is... a bit fragile.
#
# By using `language: system` we run this hook in the local
# environment instead of a pre-commit isolated one. This is needed
# to ensure mypy correctly parses the project.
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.6.0
hooks:
- id: check-yaml
args: [--unsafe]
- id: check-json
- id: end-of-file-fixer
- id: trailing-whitespace
- id: check-case-conflict

- repo: https://github.com/psf/black
rev: 24.4.0
hooks:
- id: black
args:
- --line-length=99
- --target-version=py38
- --target-version=py39
- --target-version=py310
- --target-version=py311

- repo: https://github.com/pycqa/flake8
rev: 7.0.0
hooks:
- id: flake8
exclude: tests/
args:
- --max-line-length=99
- --select=E,F,W
- --ignore=E203,E501,E741,W503,W504
- --per-file-ignores=*/__init__.py:F401
additional_dependencies: [flaky]

# It may cause trouble in that it adds environmental variables out
# of our control to the mix. Unfortunately, there's nothing we can
# do about per pre-commit's author.
# See https://github.com/pre-commit/pre-commit/issues/730 for details.
args: [--show-error-codes, --ignore-missing-imports, --explicit-package-bases]
files: ^dbt/adapters/.*
language: system
- id: mypy
alias: mypy-check
stages: [manual]
args: [--show-error-codes, --pretty, --ignore-missing-imports, --explicit-package-bases]
files: ^dbt/adapters
language: system
- repo: https://github.com/pre-commit/mirrors-mypy
rev: v1.9.0
hooks:
- id: mypy
args:
- --show-error-codes
- --pretty
- --ignore-missing-imports
- --explicit-package-bases
files: ^dbt/adapters
additional_dependencies:
- types-pytz
- types-requests
13 changes: 7 additions & 6 deletions dbt/adapters/redshift/connections.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
from dbt.adapters.sql import SQLConnectionManager
from dbt.contracts.connection import AdapterResponse, Connection, Credentials
from dbt.contracts.util import Replaceable
import dbt.clients.agate_helper
from dbt.dataclass_schema import dbtClassMixin, StrEnum, ValidationError
from dbt.events import AdapterLogger
from dbt.exceptions import DbtRuntimeError, CompilationError
Expand Down Expand Up @@ -52,7 +53,7 @@ class UserSSLMode(StrEnum):
@classmethod
def default(cls) -> "UserSSLMode":
# default for `psycopg2`, which aligns with dbt-redshift 1.4 and provides backwards compatibility
return cls.prefer
return cls("prefer")


class RedshiftSSLMode(StrEnum):
Expand All @@ -62,11 +63,11 @@ class RedshiftSSLMode(StrEnum):

SSL_MODE_TRANSLATION = {
UserSSLMode.disable: None,
UserSSLMode.allow: RedshiftSSLMode.verify_ca,
UserSSLMode.prefer: RedshiftSSLMode.verify_ca,
UserSSLMode.require: RedshiftSSLMode.verify_ca,
UserSSLMode.verify_ca: RedshiftSSLMode.verify_ca,
UserSSLMode.verify_full: RedshiftSSLMode.verify_full,
UserSSLMode.allow: RedshiftSSLMode("verify-ca"),
UserSSLMode.prefer: RedshiftSSLMode("verify-ca"),
UserSSLMode.require: RedshiftSSLMode("verify-ca"),
UserSSLMode.verify_ca: RedshiftSSLMode("verify-ca"),
UserSSLMode.verify_full: RedshiftSSLMode("verify-full"),
}


Expand Down
4 changes: 2 additions & 2 deletions dbt/adapters/redshift/relation_configs/dist.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ class RedshiftDistStyle(StrEnum):

@classmethod
def default(cls) -> "RedshiftDistStyle":
return cls.auto
return cls("auto")


@dataclass(frozen=True, eq=True, unsafe_hash=True)
Expand Down Expand Up @@ -102,7 +102,7 @@ def parse_model_node(cls, model_node: ModelNode) -> dict:
config = {"diststyle": diststyle}

else:
config = {"diststyle": RedshiftDistStyle.key.value, "distkey": dist}
config = {"diststyle": RedshiftDistStyle.key.value, "distkey": dist} # type: ignore

return config

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ class RedshiftMaterializedViewConfig(RedshiftRelationConfigBase, RelationConfigV
database_name: str
query: str
backup: bool = True
dist: RedshiftDistConfig = RedshiftDistConfig(diststyle=RedshiftDistStyle.even)
dist: RedshiftDistConfig = RedshiftDistConfig(diststyle=RedshiftDistStyle.even) # type: ignore
sort: RedshiftSortConfig = RedshiftSortConfig()
autorefresh: bool = False

Expand Down
4 changes: 2 additions & 2 deletions dbt/adapters/redshift/relation_configs/sort.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,11 @@ class RedshiftSortStyle(StrEnum):

@classmethod
def default(cls) -> "RedshiftSortStyle":
return cls.auto
return cls("auto")

@classmethod
def default_with_columns(cls) -> "RedshiftSortStyle":
return cls.compound
return cls("compound")


@dataclass(frozen=True, eq=True, unsafe_hash=True)
Expand Down
30 changes: 12 additions & 18 deletions dev-requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,28 +4,22 @@ git+https://github.com/dbt-labs/[email protected]#egg=dbt-core&subdirector
git+https://github.com/dbt-labs/[email protected]#egg=dbt-tests-adapter&subdirectory=tests/adapter
git+https://github.com/dbt-labs/[email protected]#egg=dbt-postgres&subdirectory=plugins/postgres

# if version 1.x or greater -> pin to major version
# if version 0.x -> pin to minor
black~=23.9
bumpversion~=0.6.0
click~=8.1
ddtrace~=1.19
flake8~=6.1
flaky~=3.7
freezegun~=1.2
# dev
ipdb~=0.13.13
mypy==1.5.1 # patch updates have historically introduced breaking changes
pip-tools~=7.3
pre-commit~=3.4
pre-commit-hooks~=4.4
pre-commit==3.7.0;python_version >="3.9"
pre-commit==3.5.0;python_version <"3.9"

# test
ddtrace==2.3.0
freezegun~=1.3
pytest~=7.4
pytest-csv~=3.0
pytest-dotenv~=0.5.2
pytest-logbook~=1.2
pytest-xdist~=3.3
pytz~=2023.3
pytest-xdist~=3.5
tox~=4.11
types-pytz~=2023.3
types-requests~=2.31

# build
bumpversion~=0.6.0
twine~=4.0
wheel~=0.41
wheel~=0.42
2 changes: 0 additions & 2 deletions mypy.ini

This file was deleted.

12 changes: 6 additions & 6 deletions tests/unit/relation_configs/test_materialized_view.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ def test_redshift_materialized_view_config_handles_all_valid_bools(bool_value):
query="select * from sometable",
)
model_node = Mock()
model_node.config.extra.get = (
lambda x, y=None: bool_value if x in ["auto_refresh", "backup"] else "someDistValue"
model_node.config.extra.get = lambda x, y=None: (
bool_value if x in ["auto_refresh", "backup"] else "someDistValue"
)
config_dict = config.parse_model_node(model_node)
assert isinstance(config_dict["autorefresh"], bool)
Expand All @@ -33,8 +33,8 @@ def test_redshift_materialized_view_config_throws_expected_exception_with_invali
query="select * from sometable",
)
model_node = Mock()
model_node.config.extra.get = (
lambda x, y=None: bool_value if x in ["auto_refresh", "backup"] else "someDistValue"
model_node.config.extra.get = lambda x, y=None: (
bool_value if x in ["auto_refresh", "backup"] else "someDistValue"
)
with pytest.raises(TypeError):
config.parse_model_node(model_node)
Expand All @@ -48,8 +48,8 @@ def test_redshift_materialized_view_config_throws_expected_exception_with_invali
query="select * from sometable",
)
model_node = Mock()
model_node.config.extra.get = (
lambda x, y=None: "notABool" if x in ["auto_refresh", "backup"] else "someDistValue"
model_node.config.extra.get = lambda x, y=None: (
"notABool" if x in ["auto_refresh", "backup"] else "someDistValue"
)
with pytest.raises(ValueError):
config.parse_model_node(model_node)
1 change: 1 addition & 0 deletions tests/unit/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
Note that all imports should be inside the functions to avoid import/mocking
issues.
"""

import string
import os
from unittest import mock
Expand Down
Loading