* Validate resource names ([357](https://github.com/databrickslabs/lsql/issues/357)). This pull request introduces a validation feature to the `ucx` project for resource names, specifically for dashboard tile IDs. The new naming convention restricts resource names to alphanumeric characters, hyphens, and underscores, enhancing usability and reducing potential issues caused by special characters. A new method, `_is_valid_resource_name`, is implemented to check if a name is valid based on the defined pattern. The `TileMetadata` class is updated to ensure its `id` attribute adheres to the new validation rules, and a `validate` method is added to raise a `ValueError` if the tile metadata is invalid. This method checks if the `id` attribute is not empty and if it is a valid resource name. Additionally, the `validate` method is updated in the `Tile`, `Section`, and `Dashboard` classes to call the `validate` method of the `TileMetadata` instance, if it exists. The pull request also includes tests for the new validation functionality, ensuring that tile IDs cannot be empty, must contain only alphanumeric characters, hyphens, and underscores, and that the `validate` method detects duplicate query IDs and widget IDs. This validation helps maintain consistency and correctness in dashboard resources, making it easier for users to manage and interact with their dashboards.
* Updated runner ([360](https://github.com/databrickslabs/lsql/issues/360)). In this release, we have updated the GitHub Actions workflow for releasing the project to utilize a protected runner group with the label `linux-ubuntu-latest` in the `publish` job's `runs-on` field. This change enhances control and security over the execution environment, as the protected runner group, `databrickslabs-protected-runner-group`, ensures that only specified runners that meet specific criteria are allowed to execute jobs. The `linux-ubuntu-latest` label specifies the desired runner configuration. Furthermore, the workflow now utilizes an environment named `release` and retains the existing permissions configuration for authenticating to PyPI via OIDC and signing release artifacts with `sigstore-python`. This upgrade to the execution environment preserves essential authentication and security features, providing improved reliability, maintainability, and security for the release process while ensuring continued compatibility and security for publishing activities.
* Explicitly install Python 3.12 before running fmt in CI ([358](https://github.com/databrickslabs/lsql/issues/358)). In this release, we have made significant enhancements to our open-source library aimed at improving reliability, consistency, and usability for software engineers. A new step installing Python 3.12 explicitly before executing the formatting process in the CI system has been implemented, ensuring compatibility and consistency with the chosen Python version. The 'backends.py' file's `save_table` function syntax has been updated for better code readability and maintainability, addressing potential SQL injection issues. The 'model.py' file has undergone refactoring, updating `KeyError` exceptions to f-strings for improved consistency and readability, and the 'polymorphism.py' file has been improved with new functions and refined error messages for better debugging and understanding of type assignment issues. Lastly, the 'structs.py' file in the 'databricks/labs/lsql' package has received updates to ensure consistent Python version usage, improved error messages, and better SQL type inference from Python types, enhancing the overall development experience for adopting engineers.