v0.4.0
- Added commands with interactive prompts (#66). This commit introduces a new feature in the Databricks Labs project to support interactive prompts in the command-line interface (CLI) for enhanced user interactivity. The
Prompts
argument, imported fromdatabricks.labs.blueprint.tui
, is now integrated into the@app.command
decorator, enabling the creation of commands with user interaction like confirmation prompts. An example of this is theme
command, which confirms whether the user wants to proceed before displaying the current username. The commit also refactored the code to make it more efficient and maintainable, removing redundancy in creating client instances. TheAccountClient
andWorkspaceClient
instances can now be provided automatically with the product name and version. These changes improve the CLI by making it more interactive, user-friendly, and adaptable to various use cases while also optimizing the codebase for better efficiency and maintainability. - Added more code documentation (#64). This release introduces new features and updates to various files in the open-source library. The
cli.py
file in thesrc/databricks/labs/blueprint
directory has been updated with a new decorator,command
, which registers a function as a command. Theentrypoint.py
file in thedatabricks.labs.blueprint
module now includes a module-level docstring describing its purpose, as well as documentation for the various standard libraries it imports. TheInstallation
class in theinstallers.py
file has new methods for handling files, such asload
,load_or_default
,upload
,load_local
, andfiles
. Theinstallers.py
file also includes a newInstallationState
dataclass, which is used to track installations. Thelimiter.py
file now includes code documentation for theRateLimiter
class and therate_limited
decorator, which are used to limit the rate of requests. Thelogger.py
file includes a newNiceFormatter
class, which provides a nicer format for logging messages with colors and bold text if the console supports it. Theparallel.py
file has been updated with new methods for running tasks in parallel and returning results and errors. TheTUI.py
file has been documented, and includes imports for logging, regular expressions, and collections abstract base class. Lastly, theupgrades.py
file has been updated with additional code documentation and new methods for loading and applying upgrade scripts. Overall, these changes improve the functionality, maintainability, and usability of the open-source library. - Fixed init-project command (#65). In this release, the
init-project
command has been improved with several bug fixes and new functionalities. A new import statement for thesys
module has been added, and adocs
directory is now included in the copied directories and files during initialization. Theinit_project
function has been updated to open files using the default system encoding, ensuring proper reading and writing of file contents. Therelative_paths
function in theentrypoint.py
file now returns absolute paths if the common path is the root directory, addressing issue #41. Additionally, several test functions have been added totests/unit/test_entrypoint.py
, enhancing the reliability and robustness of theinit-project
command by providing comprehensive tests for supporting functions. Overall, these changes significantly improve the functionality and reliability of theinit-project
command, ensuring a more consistent and accurate project initialization process. - Using
ProductInfo
with integration tests (#63). In this update, theProductInfo
class has been enhanced with a new class methodfor_testing(klass)
to facilitate effective integration testing. This method generates a newProductInfo
object with a randomproduct_name
, enabling the creation of distinct installation directories for each test execution. Prior to this change, conflicts and issues could arise when multiple test executions shared the same integration test folder. With the introduction of this new method, developers can now ensure that their integration tests run with unique product names and separate installation directories, enhancing testing isolation and accuracy. This update is demonstrated in the provided code snippet and includes a new test case to confirm the generation of unique product names. Furthermore, a pre-existing test case has been modified to provide a more specific error message related to theSingleSourceVersionError
. This enhancement aims to improve the integration testing capabilities of the codebase and is designed to be easily adopted by other software engineers utilizing this project.
Contributors: @nfx