v0.9.1
- Fixed dataclass field types (#257). This PR introduces a workaround to a Python bug affecting the
dataclasses.fields()
function, which sometimes returns field types as string type names instead of types. This can cause the ORM to malfunction. The workaround involves checking if the returnedf.type
is a string, and if so, converting it to a type by looking it up in the__builtins__
dictionary. This change is global and affects the_schema_for
function in thebackends.py
file, which is responsible for creating a schema for a given dataclass, taking into account any necessary type conversions. This change ensures consistent and accurate type handling in the face of the Python bug, improving the reliability of our ORM. - Fixed missing EOL when formatting SQL files (#260). In this release, we have addressed an issue related to the inconsistent addition of end-of-line (EOL) characters in formatted SQL files. The
QueryTile.format()
method has been updated to ensure that an EOL character is always added, except when the input query already ends with a newline. This change enhances the reliability of the SQL formatting functionality, making the output format more predictable and improving the overall user experience. The new implementation is demonstrated in thetest_query_format_preserves_eol()
test case, and existing test cases have been updated to check for the presence of EOL characters, further ensuring consistent and correct formatting. - Fixed normalize case input in cli (#258). In this release, we have updated the
fmt
command in thecli.py
file to allow users to specify whether they want to normalize the case of SQL files when formatting. Thenormalize_case
parameter now defaults to the string"true"
and checks if it is in theSTRING_AFFIRMATIVES
list to determine whether to normalize the case of SQL files. Additionally, we have introduced a new optionalnormalize_case
parameter in theformat
method of thedashboards.py
file in the Databricks CLI, which normalizes the identifiers in the query to lower case when set toTrue
. We have also added support for a newnormalize_case
parameter in theQueryTile.format()
method, which prevents the automatic normalization of string input to uppercase when set toFalse
. This change allows for more flexibility in handling string input and ensures that the input string is preserved as-is. These updates improve the functionality and usability of the open-source library, providing more control to users over formatting and handling of string input.
Contributors: @ericvergnaud, @nfx, @JCZuurmond