ITADN

sqlfmt fails to format working Jinja macro

#700Openoscep 创建于 2025-07-29
bug
O
oscepcommented
**Describe the bug** sqlfmt fails to format working Jinja macro. **To Reproduce** Create a clean virtual environment and install sqlfmt using `pip install 'shandy-sqlfmt[jinjafmt]'`. Create a file named `broken.sql` with the content as follows: ``` {% macro athena_unload_table(database, schema, table, unload_params) %} {% if execute %} UNLOAD (SELECT * FROM "{{ database }}".{{ schema }}."{{ table }}") TO '{{ s3_path }}' WITH ( format = '{{ format }}' {% if compression %}, compression = '{{ compression }}' {% endif %} ); {% endif %} {% endmacro %} ``` Execute `sqlfmt broken.sql` in your terminal. **Expected behavior** We expect `sqlfmt` to format the macro without errors, as the Jinja control flow is valid and properly closed. **Actual behavior** Provide any output generated by sqlfmt here. If this is a formatting issue, include the code generated by sqlfmt. ``` sqlfmt broken.sql 1 file had errors while formatting. 0 files left unchanged. broken.sql sqlfmt encountered an error: Closing jinja tag '{% endmacro %}' found at pos 349 does not match last opened tag '{% if execute %}' found at pos 72. ``` **Additional context** What is the output of `sqlfmt --version`? ``` sqlfmt, version 0.27.0 ``` What is the output of `pip list` (or `pipx list` if you installed using pipx)? ``` Package Version --------------- ------- black 25.1.0 click 8.2.1 Jinja2 3.1.6 MarkupSafe 3.0.2 mypy_extensions 1.1.0 packaging 25.0 pathspec 0.12.1 pip 24.0 platformdirs 4.3.8 shandy-sqlfmt 0.27.0 tqdm 4.67.1 [notice] A new release of pip is available: 24.0 -> 25.1.1 [notice] To update, run: pip install --upgrade pip ```
1 条评论