diff --git a/.github/codecov.yml b/.github/codecov.yml index 0effe91db..45baadbb5 100644 --- a/.github/codecov.yml +++ b/.github/codecov.yml @@ -7,11 +7,11 @@ codecov: ci: - "github.com" max_report_age: 24 - disable_default_path_fixes: no - require_ci_to_pass: yes + disable_default_path_fixes: no # yamllint disable-line rule:truthy + require_ci_to_pass: yes # yamllint disable-line rule:truthy notify: after_n_builds: 11 - wait_for_ci: yes + wait_for_ci: yes # yamllint disable-line rule:truthy coverage: precision: 2 diff --git a/.github/workflows/ci-tests.yml b/.github/workflows/ci-tests.yml index fc4b432cc..4f60f174e 100644 --- a/.github/workflows/ci-tests.yml +++ b/.github/workflows/ci-tests.yml @@ -25,7 +25,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - jobs: [ 'linting', 'doclinting', 'docbuild' ] + jobs: [ 'linting', 'doclinting', 'docbuild', 'yamllint' ] name: ${{ matrix.jobs }} tests steps: - uses: actions/checkout@v2 diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 910144994..7a0e318eb 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,40 +1,45 @@ repos: -- repo: https://github.com/pre-commit/pre-commit-hooks + - repo: https://github.com/pre-commit/pre-commit-hooks rev: v4.0.1 hooks: - - id: end-of-file-fixer + - id: end-of-file-fixer exclude: (.*\.sql$|test/fixtures/linter/sqlfluffignore/path_c) - - id: trailing-whitespace + - id: trailing-whitespace exclude: (.*\.sql$|test/fixtures/linter/sqlfluffignore/path_c) -- repo: https://github.com/psf/black + - repo: https://github.com/psf/black rev: 21.12b0 hooks: - - id: black -- repo: https://github.com/pre-commit/mirrors-mypy + - id: black + - repo: https://github.com/pre-commit/mirrors-mypy rev: v0.920 hooks: - - id: mypy + - id: mypy args: [--ignore-missing-imports] additional_dependencies: [ - types-toml, - types-pkg_resources, - types-chardet, + types-toml, + types-pkg_resources, + types-chardet, ] files: ^src/sqlfluff/.* -- repo: https://github.com/pycqa/flake8 + - repo: https://github.com/pycqa/flake8 rev: 4.0.1 hooks: - - id: flake8 + - id: flake8 additional_dependencies: [ - flake8-black, - flake8-docstrings, + flake8-black, + flake8-docstrings, ] -- repo: https://github.com/pycqa/doc8 + - repo: https://github.com/pycqa/doc8 rev: 0.10.1 hooks: - - id: doc8 + - id: doc8 args: [ - --file-encoding, - utf8, + --file-encoding, + utf8, ] files: docs/source/.*\.rst$ + - repo: https://github.com/adrienverge/yamllint.git + rev: v1.26.3 + hooks: + - id: yamllint + args: [-c=.yamllint] diff --git a/.yamllint b/.yamllint new file mode 100644 index 000000000..9f513deaf --- /dev/null +++ b/.yamllint @@ -0,0 +1,17 @@ +--- + +extends: default +ignore: | + .tox/ + .venv/ + dbt_modules/ + dbt_packages/ + +rules: + brackets: disable + document-start: disable + indentation: + indent-sequences: whatever + line-length: disable + truthy: + check-keys: false # .github workflow uses "on:" (but not as a truthy value) diff --git a/plugins/sqlfluff-templater-dbt/test/fixtures/dbt/profiles.yml b/plugins/sqlfluff-templater-dbt/test/fixtures/dbt/profiles.yml index 8609995c5..8ee8e93f2 100644 --- a/plugins/sqlfluff-templater-dbt/test/fixtures/dbt/profiles.yml +++ b/plugins/sqlfluff-templater-dbt/test/fixtures/dbt/profiles.yml @@ -1,15 +1,15 @@ default: - target: dev - outputs: - dev: - type: postgres - host: localhost - user: alice - pass: - port: 5432 - dbname: jaffle_shop - schema: dbt_alice - threads: 4 + target: dev + outputs: + dev: + type: postgres + host: localhost + user: alice + pass: + port: 5432 + dbname: jaffle_shop + schema: dbt_alice + threads: 4 config: - send_anonymous_usage_stats: False + send_anonymous_usage_stats: false diff --git a/requirements_dev.txt b/requirements_dev.txt index 7bc09fbb1..770349b04 100644 --- a/requirements_dev.txt +++ b/requirements_dev.txt @@ -20,3 +20,4 @@ types-pkg_resources types-chardet # Requests is required for the util script requests +yamllint diff --git a/test/fixtures/dialects/ansi/insert_b.yml b/test/fixtures/dialects/ansi/insert_b.yml deleted file mode 100644 index e3b6d446e..000000000 --- a/test/fixtures/dialects/ansi/insert_b.yml +++ /dev/null @@ -1,19 +0,0 @@ -# Insert Statements -file: - statement: - insert_statement: - keyword: INSERT - keyword: into - object_reference: - identifier: tbl_b - start_bracket: ( - object_reference: - identifier: col1 - end_bracket: ) - values_clause: - keyword: values - start_bracket: ( - literal: - literal: 123 - end_bracket: ) - keyword: ; diff --git a/test/fixtures/rules/R001_global_config_test.yml b/test/fixtures/rules/R001_global_config_test.yml index 9d256a012..67d41f0a8 100644 --- a/test/fixtures/rules/R001_global_config_test.yml +++ b/test/fixtures/rules/R001_global_config_test.yml @@ -1,7 +1,7 @@ rule: R001 configs: - core: - dialect: exasol + core: + dialect: exasol tc1: diff --git a/test/fixtures/rules/std_rule_cases/L016.yml b/test/fixtures/rules/std_rule_cases/L016.yml index ec1e8183b..b8911da0f 100644 --- a/test/fixtures/rules/std_rule_cases/L016.yml +++ b/test/fixtures/rules/std_rule_cases/L016.yml @@ -62,7 +62,7 @@ test_pass_line_too_long_with_comments_ignore_comment_lines: rules: max_line_length: 80 L016: - ignore_comment_lines: True + ignore_comment_lines: true test_fail_line_too_long_only_comments: # Check long lines that are only comments are linted correctly @@ -86,7 +86,7 @@ test_pass_line_too_long_ignore_comments_true: rules: max_line_length: 10 L016: - ignore_comment_lines: True + ignore_comment_lines: true test_pass_line_too_long_ignore_comments_false: # Check we still pick up long comments if we don't want to ignore @@ -95,7 +95,7 @@ test_pass_line_too_long_ignore_comments_false: rules: max_line_length: 10 L016: - ignore_comment_lines: False + ignore_comment_lines: false test_compute_line_length_before_template_expansion_1: # Line 3 is fine before expansion. Too long after expansion is NOT considered @@ -141,7 +141,7 @@ test_long_jina_comment: rules: max_line_length: 80 L016: - ignore_comment_lines: False + ignore_comment_lines: false test_long_jina_comment_ignore: @@ -155,7 +155,7 @@ test_long_jina_comment_ignore: rules: max_line_length: 80 L016: - ignore_comment_lines: True + ignore_comment_lines: true test_for_loop: diff --git a/test/fixtures/rules/std_rule_cases/L047.yml b/test/fixtures/rules/std_rule_cases/L047.yml index 3fd8f187a..3a7f9ae5a 100644 --- a/test/fixtures/rules/std_rule_cases/L047.yml +++ b/test/fixtures/rules/std_rule_cases/L047.yml @@ -21,7 +21,7 @@ passes_on_count_1: configs: &prefer_count_1 rules: L047: - prefer_count_1: True + prefer_count_1: true changes_count_0_to_count_star: fail_str: | @@ -52,7 +52,7 @@ passes_on_count_0: configs: &prefer_count_0 rules: L047: - prefer_count_0: True + prefer_count_0: true passes_on_count_1_if_both_present: pass_str: | @@ -66,8 +66,8 @@ passes_on_count_1_if_both_present: configs: &prefer_both rules: L047: - prefer_count_0: True - prefer_count_1: True + prefer_count_0: true + prefer_count_1: true changes_to_count_1_if_both_present: fail_str: | diff --git a/test/fixtures/rules/std_rule_cases/L052.yml b/test/fixtures/rules/std_rule_cases/L052.yml index 165b310cd..a8ee9830a 100644 --- a/test/fixtures/rules/std_rule_cases/L052.yml +++ b/test/fixtures/rules/std_rule_cases/L052.yml @@ -10,7 +10,7 @@ test_pass_semi_colon_custom_newline: configs: rules: L052: - multiline_newline: True + multiline_newline: true test_fail_semi_colon_same_line_custom_newline: fail_str: | @@ -23,7 +23,7 @@ test_fail_semi_colon_same_line_custom_newline: configs: rules: L052: - multiline_newline: True + multiline_newline: true test_pass_no_semi_colon_default: pass_str: | @@ -35,7 +35,7 @@ test_pass_no_semi_colon_custom_newline: configs: rules: L052: - multiline_newline: True + multiline_newline: true test_fail_no_semi_colon_custom_require: fail_str: | @@ -45,7 +45,7 @@ test_fail_no_semi_colon_custom_require: configs: rules: L052: - require_final_semicolon: True + require_final_semicolon: true test_fail_no_semi_colon_custom_require_oneline: fail_str: | @@ -55,8 +55,8 @@ test_fail_no_semi_colon_custom_require_oneline: configs: rules: L052: - require_final_semicolon: True - multiline_newline: True + require_final_semicolon: true + multiline_newline: true test_fail_no_semi_colon_custom_require_multiline: fail_str: | @@ -69,8 +69,8 @@ test_fail_no_semi_colon_custom_require_multiline: configs: rules: L052: - require_final_semicolon: True - multiline_newline: True + require_final_semicolon: true + multiline_newline: true test_pass_multi_statement_semi_colon_default: pass_str: | @@ -98,7 +98,7 @@ test_fail_multi_statement_semi_colon_custom_multiline: configs: rules: L052: - multiline_newline: True + multiline_newline: true test_pass_multi_statement_no_trailing_semi_colon_default: pass_str: | @@ -115,7 +115,7 @@ test_pass_multi_statement_no_trailing_semi_colon_custom_require: configs: rules: L052: - require_final_semicolon: True + require_final_semicolon: true test_fail_multi_statement_no_trailing_semi_colon_custom_require_oneline: fail_str: | @@ -127,8 +127,8 @@ test_fail_multi_statement_no_trailing_semi_colon_custom_require_oneline: configs: rules: L052: - require_final_semicolon: True - multiline_newline: True + require_final_semicolon: true + multiline_newline: true test_fail_multi_statement_no_trailing_semi_colon_custom_require_multiline: fail_str: | @@ -146,8 +146,8 @@ test_fail_multi_statement_no_trailing_semi_colon_custom_require_multiline: configs: rules: L052: - require_final_semicolon: True - multiline_newline: True + require_final_semicolon: true + multiline_newline: true test_fail_space_semi_colon_default: fail_str: | @@ -170,7 +170,7 @@ test_pass_newline_semi_colon_custom_newline: configs: rules: L052: - multiline_newline: True + multiline_newline: true test_fail_multi_statement_semi_colon_default: fail_str: | @@ -200,8 +200,8 @@ test_fail_multi_statement_semi_colon_custom_require_multiline: configs: rules: L052: - require_final_semicolon: True - multiline_newline: True + require_final_semicolon: true + multiline_newline: true test_fail_multiple_newlines_semi_colon_custom_require_newline: fail_str: | @@ -216,8 +216,8 @@ test_fail_multiple_newlines_semi_colon_custom_require_newline: configs: rules: L052: - require_final_semicolon: True - multiline_newline: True + require_final_semicolon: true + multiline_newline: true test_fail_final_semi_colon_same_line_inline_comment: fail_str: | @@ -227,7 +227,7 @@ test_fail_final_semi_colon_same_line_inline_comment: configs: rules: L052: - require_final_semicolon: True + require_final_semicolon: true test_fail_final_semi_colon_same_line_inline_comment_custom_oneline: fail_str: | @@ -237,8 +237,8 @@ test_fail_final_semi_colon_same_line_inline_comment_custom_oneline: configs: rules: L052: - require_final_semicolon: True - multiline_newline: True + require_final_semicolon: true + multiline_newline: true test_fail_final_semi_colon_newline_inline_comment_custom_multiline: fail_str: | @@ -251,8 +251,8 @@ test_fail_final_semi_colon_newline_inline_comment_custom_multiline: configs: rules: L052: - require_final_semicolon: True - multiline_newline: True + require_final_semicolon: true + multiline_newline: true test_fail_same_line_inline_comment: fail_str: | @@ -280,7 +280,7 @@ test_pass_newline_inline_comment: configs: rules: L052: - multiline_newline: True + multiline_newline: true test_fail_newline_inline_comment: fail_str: | @@ -295,7 +295,7 @@ test_fail_newline_inline_comment: configs: rules: L052: - multiline_newline: True + multiline_newline: true test_fail_newline_multiple_inline_comments_custom_oneline: fail_str: | @@ -311,7 +311,7 @@ test_fail_newline_multiple_inline_comments_custom_oneline: configs: rules: L052: - multiline_newline: True + multiline_newline: true test_fail_newline_multiple_inline_comments_custom_multiline: fail_str: | @@ -330,7 +330,7 @@ test_fail_newline_multiple_inline_comments_custom_multiline: configs: rules: L052: - multiline_newline: True + multiline_newline: true test_fail_newline_trailing_inline_comment: fail_str: | @@ -343,7 +343,7 @@ test_fail_newline_trailing_inline_comment: configs: rules: L052: - multiline_newline: True + multiline_newline: true test_fail_newline_preceding_block_comment_custom_oneline: fail_str: | @@ -358,7 +358,7 @@ test_fail_newline_preceding_block_comment_custom_oneline: configs: rules: L052: - multiline_newline: True + multiline_newline: true test_fail_newline_preceding_block_comment_custom_multiline: fail_str: | @@ -376,7 +376,7 @@ test_fail_newline_preceding_block_comment_custom_multiline: configs: rules: L052: - multiline_newline: True + multiline_newline: true test_fail_newline_trailing_block_comment: fail_str: | @@ -393,7 +393,7 @@ test_fail_newline_trailing_block_comment: configs: rules: L052: - multiline_newline: True + multiline_newline: true test_fail_newline_block_comment_semi_colon_before: fail_str: | @@ -412,7 +412,7 @@ test_fail_newline_block_comment_semi_colon_before: configs: rules: L052: - multiline_newline: True + multiline_newline: true test_fail_newline_block_comment_semi_colon_after: fail_str: | @@ -432,4 +432,4 @@ test_fail_newline_block_comment_semi_colon_after: configs: rules: L052: - multiline_newline: True + multiline_newline: true diff --git a/test/fixtures/rules/std_rule_cases/L055.yml b/test/fixtures/rules/std_rule_cases/L055.yml index e680f2812..784065d62 100644 --- a/test/fixtures/rules/std_rule_cases/L055.yml +++ b/test/fixtures/rules/std_rule_cases/L055.yml @@ -164,4 +164,3 @@ test_pass_with_inner_join: col1, col2 FROM cte; - diff --git a/test/fixtures/rules/std_rule_cases/L057.yml b/test/fixtures/rules/std_rule_cases/L057.yml index 9c2cef496..e829013f2 100644 --- a/test/fixtures/rules/std_rule_cases/L057.yml +++ b/test/fixtures/rules/std_rule_cases/L057.yml @@ -106,7 +106,7 @@ test_pass_special_chars_create_table_space_allowed: configs: rules: L057: - allow_space_in_identifier: True + allow_space_in_identifier: true test_fail_special_chars_quoted_policy_alias: fail_str: diff --git a/test/fixtures/templater/jinja_e/jinja.yml b/test/fixtures/templater/jinja_e/jinja.yml index 267cba522..2c298d2b7 100644 --- a/test/fixtures/templater/jinja_e/jinja.yml +++ b/test/fixtures/templater/jinja_e/jinja.yml @@ -1,34 +1,34 @@ file: - statement: - select_statement: - select_clause: - - keyword: select - - select_clause_element: - literal: '2' - alias_expression: - keyword: as - identifier: col2 - - comma: ',' - - select_clause_element: - literal: '4' - alias_expression: - keyword: as - identifier: col4 - - comma: ',' - - select_clause_element: - literal: '6' - alias_expression: - keyword: as - identifier: col6 - - comma: ',' - - select_clause_element: - literal: '8' - alias_expression: - keyword: as - identifier: col8 - - comma: ',' - - select_clause_element: - literal: '10' - alias_expression: - keyword: as - identifier: col10 + statement: + select_statement: + select_clause: + - keyword: select + - select_clause_element: + literal: '2' + alias_expression: + keyword: as + identifier: col2 + - comma: ',' + - select_clause_element: + literal: '4' + alias_expression: + keyword: as + identifier: col4 + - comma: ',' + - select_clause_element: + literal: '6' + alias_expression: + keyword: as + identifier: col6 + - comma: ',' + - select_clause_element: + literal: '8' + alias_expression: + keyword: as + identifier: col8 + - comma: ',' + - select_clause_element: + literal: '10' + alias_expression: + keyword: as + identifier: col10 diff --git a/tox.ini b/tox.ini index 748063582..f16bd165b 100644 --- a/tox.ini +++ b/tox.ini @@ -1,5 +1,5 @@ [tox] -envlist = generate-fixture-yml, linting, doclinting, docbuild, cov-init, py{37,38,39,310}, dbt{017,018,019,020,021,100}-py{37,38,39,310}, cov-report, bench, mypy, winpy, dbt{017,018,019,020,021,100}-winpy +envlist = generate-fixture-yml, linting, doclinting, docbuild, cov-init, py{37,38,39,310}, dbt{017,018,019,020,021,100}-py{37,38,39,310}, cov-report, bench, mypy, winpy, dbt{017,018,019,020,021,100}-winpy, yamllint [testenv] passenv = CI CIRCLECI CIRCLE_* HOME SQLFLUFF_BENCHMARK_API_KEY @@ -79,6 +79,11 @@ commands = python test/generate_parse_fixture_yml.py skip_install = true commands = flake8 +[testenv:yamllint] +skip_install = true +deps = yamllint +commands = yamllint -c .yamllint . + [testenv:doclinting] skip_install = true commands = doc8 docs/source --file-encoding utf8