diff --git a/.flake8 b/.flake8 deleted file mode 100644 index d5b9ab91e..000000000 --- a/.flake8 +++ /dev/null @@ -1,16 +0,0 @@ -# (C) 2021 GoodData Corporation -[flake8] -exclude = .git,.venv,__pycache__,.tox,build,dist,gooddata-afm-client,gooddata-metadata-client,gooddata-scan-client,gooddata-api-client - -max-line-length = 120 - -# disabling formatting related lints as black should take care of these -# see https://github.com/psf/black/issues/315 -extend-ignore = E203, W504 - -# Ignoring unused imports in these as they are API re-exports -per-file-ignores = - gooddata-sdk/gooddata_sdk/__init__.py:F401 - gooddata-sdk/gooddata_sdk/*/__init__.py:F401 - gooddata-pandas/gooddata_pandas/__init__.py:F401 - gooddata-fdw/gooddata_fdw/__init__.py:F401 diff --git a/.gitignore b/.gitignore index d4838c824..ef011d03b 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,4 @@ test_clients.py gooddata-sdk/tests/catalog/store .DS_Store .vscode +.ruff_cache diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index c19cb9357..4f0bf4a85 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -12,12 +12,14 @@ repos: - id: trailing-whitespace - id: end-of-file-fixer - id: check-added-large-files - args: ['--maxkb=600'] + args: [ '--maxkb=600' ] - id: check-case-conflict - - repo: https://gitlab.com/pycqa/flake8 - rev: 3.9.0 + - repo: https://github.com/charliermarsh/ruff-pre-commit + rev: v0.0.220 hooks: - - id: flake8 + - id: ruff + # Respect `exclude` and `extend-exclude` settings. + args: [ "--force-exclude" ] - repo: https://github.com/psf/black rev: 22.3.0 hooks: @@ -32,6 +34,6 @@ repos: name: Copyright description: Scan for missing copyright entry: scripts/check_copyright.py - args: ["--update", "FILES"] + args: [ "--update", "FILES" ] language: script - types: [text] + types: [ text ] diff --git a/Makefile b/Makefile index 71e9e2efa..6ab378163 100644 --- a/Makefile +++ b/Makefile @@ -20,7 +20,7 @@ dev: .PHONY: lint lint: - flake8 . + ruff . .PHONY: format format: diff --git a/gooddata-sdk/gooddata_sdk/catalog/workspace/entity_model/content_objects/dataset.py b/gooddata-sdk/gooddata_sdk/catalog/workspace/entity_model/content_objects/dataset.py index c3ad90e92..54cf6466a 100644 --- a/gooddata-sdk/gooddata_sdk/catalog/workspace/entity_model/content_objects/dataset.py +++ b/gooddata-sdk/gooddata_sdk/catalog/workspace/entity_model/content_objects/dataset.py @@ -42,7 +42,7 @@ def granularity(self) -> Union[str, None]: def primary_label(self) -> Union[CatalogLabel, None]: # use cast as mypy is not applying next, it claims, type is filter[CatalogLabel] - return cast(Union[CatalogLabel, None], next(filter(lambda l: l.primary, self.labels), None)) + return cast(Union[CatalogLabel, None], next(filter(lambda x: x.primary, self.labels), None)) def find_label(self, id_obj: IdObjType) -> Union[CatalogLabel, None]: obj_key = id_obj_to_key(id_obj) diff --git a/lint-requirements.txt b/lint-requirements.txt index 85a2938c2..55a4638b2 100644 --- a/lint-requirements.txt +++ b/lint-requirements.txt @@ -1 +1 @@ -flake8==3.9.0 +ruff==0.0.220 diff --git a/pyproject.toml b/pyproject.toml index 48931e662..233a62aa3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,4 +1,32 @@ # (C) 2021 GoodData Corporation +[tool.ruff] +exclude = [ + ".git", + ".venv", + "__pycache__", + ".tox", + "build", + "dist", + "gooddata-afm-client", + "gooddata-metadata-client", + "gooddata-scan-client", + "gooddata-api-client", +] +line-length = 120 +select = [ + # pyflakes + "F", + # pycodestyle + "E", + "W", +] + +[tool.ruff.per-file-ignores] +"gooddata-pandas/gooddata_pandas/__init__.py" = ["F401"] +"gooddata-sdk/gooddata_sdk/*/__init__.py" = ["F401"] +"gooddata-sdk/gooddata_sdk/__init__.py" = ["F401"] +"gooddata-fdw/gooddata_fdw/__init__.py" = ["F401"] + [tool.black] line-length = 120 # intentionally ignore the generated clients @@ -10,7 +38,7 @@ profile = "black" multi_line_output = 3 include_trailing_comma = true line_length = 120 -skip_glob = ["*/gooddata-afm-client/*","*/gooddata-metadata-client/*","*/gooddata-scan-client/*","*/gooddata-api-client/*","*/.snapshot/*"] +skip_glob = ["*/gooddata-afm-client/*", "*/gooddata-metadata-client/*", "*/gooddata-scan-client/*", "*/gooddata-api-client/*", "*/.snapshot/*"] src_paths = [ "gooddata-afm-client", "gooddata-metadata-client", @@ -37,8 +65,8 @@ regex = ''' ''' [[tool.tbump.field]] -name="alpha" -default="" +name = "alpha" +default = "" [tool.tbump.git] message_template = "Bump to {new_version}" @@ -46,70 +74,70 @@ tag_template = "v{new_version}" [[tool.tbump.file]] # clients setup.py -src="gooddata-*-client/setup.py" -search="VERSION = \"{current_version}\"" +src = "gooddata-*-client/setup.py" +search = "VERSION = \"{current_version}\"" [[tool.tbump.file]] # fdw setup.py -src="gooddata-fdw/setup.py" -search="version=\"{current_version}\"" +src = "gooddata-fdw/setup.py" +search = "version=\"{current_version}\"" [[tool.tbump.file]] # fdw setup.py dependency -src="gooddata-fdw/setup.py" -search="gooddata-sdk~={current_version}" +src = "gooddata-fdw/setup.py" +search = "gooddata-sdk~={current_version}" [[tool.tbump.file]] # pandas setup.py -src="gooddata-pandas/setup.py" -search="version=\"{current_version}\"" +src = "gooddata-pandas/setup.py" +search = "version=\"{current_version}\"" [[tool.tbump.file]] # pandas setup.py dependency -src="gooddata-pandas/setup.py" -search="gooddata-sdk~={current_version}" +src = "gooddata-pandas/setup.py" +search = "gooddata-sdk~={current_version}" [[tool.tbump.file]] # sdk setup.py -src="gooddata-sdk/setup.py" -search="version=\"{current_version}\"" +src = "gooddata-sdk/setup.py" +search = "version=\"{current_version}\"" [[tool.tbump.file]] # sdk setup.py dependency -src="gooddata-sdk/setup.py" -search="gooddata-.*-client~={current_version}" +src = "gooddata-sdk/setup.py" +search = "gooddata-.*-client~={current_version}" [[tool.tbump.file]] # clients README -src="gooddata-*-client/README.md" +src = "gooddata-*-client/README.md" [[tool.tbump.file]] # clients user agent -src="gooddata-*-client/gooddata_*_client/api_client.py" +src = "gooddata-*-client/gooddata_*_client/api_client.py" [[tool.tbump.file]] # clients config -src="gooddata-*-client/gooddata_*_client/configuration.py" +src = "gooddata-*-client/gooddata_*_client/configuration.py" [[tool.tbump.file]] # clients __init__.py -src="gooddata-*-client/gooddata_*_client/__init__.py" +src = "gooddata-*-client/gooddata_*_client/__init__.py" [[tool.tbump.file]] # clients generator configs -src=".openapi-generator/configs/gooddata-*-client.yaml" +src = ".openapi-generator/configs/gooddata-*-client.yaml" [[tool.tbump.file]] -src="gooddata-sdk/setup.py" -search='"Documentation": "https://gooddata-sdk.readthedocs.io/en/v{current_version}"' +src = "gooddata-sdk/setup.py" +search = '"Documentation": "https://gooddata-sdk.readthedocs.io/en/v{current_version}"' [[tool.tbump.file]] -src="gooddata-pandas/setup.py" -search='"Documentation": "https://gooddata-pandas.readthedocs.io/en/v{current_version}"' +src = "gooddata-pandas/setup.py" +search = '"Documentation": "https://gooddata-pandas.readthedocs.io/en/v{current_version}"' [[tool.tbump.file]] -src="gooddata-fdw/setup.py" -search='"Documentation": "https://gooddata-fdw.readthedocs.io/en/v{current_version}"' +src = "gooddata-fdw/setup.py" +search = '"Documentation": "https://gooddata-fdw.readthedocs.io/en/v{current_version}"' # You can specify a list of commands to # run after the files have been patched