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?
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
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.sqlwith the content as follows:Execute
sqlfmt broken.sqlin your terminal.Expected behavior
We expect
sqlfmtto 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.
Additional context
What is the output of
sqlfmt --version?What is the output of
pip list(orpipx listif you installed using pipx)?