Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog
and this project adheres to Semantic Versioning.
Types of changes are:
- Breaking changes for breaking changes.
- Features for new features or changes in existing functionality.
- Fixes for any bug fixes.
- Deprecated for soon-to-be removed features.
Unreleased
5.1.0 - 2025-09-13
Features
- Detect
uv_buildas UV package manager.
Fixes
- Change the build backend from
hatchlingtouv_build.
5.0.0 - 2025-09-13
Breaking changes
- Raised minimum supported version of Click from 8.0 to 8.2.0 due to deprecation of
click.MultiCommand. This version also drops support for Python 3.7-3.9. - Dropped support for Python 3.9.
Features
- Add support for
uv(https://uv.pypa.io/) as a package manager.
4.0.0 - 2025-08-09
Breaking changes
- Drop support for Python 3.8. Type annotations now use Python 3.9+ style generics (list, dict, tuple) and PEP 604 unions.
Features
- Detect
uvas a package manager whentool.uvis present inpyproject.toml, whenuv.lockexists, or viabuild-system.requires. - Upgrade
delfino-corefrom 7.x to 9.x. Most linting and formatting are now handled byruffinstead of previously used tools likeblackandisort.
Fixes
- Fixed several typing errors previously undetected by the tooling.
- Upgrade of all dependencies.
3.1.2 - 2024-06-20
Fixes
- Hide sub-commands based on function name, not the command name.
3.1.1 - 2024-01-23
Fixes
- Wrong order of inheritance for
pydantic.BaseModelandGeneric, generating a warning.
3.1.0 - 2023-10-24
Features
- Add
running_hooktoexecution.runto allow showing progress of a slow running tool.
3.0.2 - 2023-10-20
Fixes
- Hide sub-commands from top level help.
3.0.1 - 2023-10-12
Fixes
- Dependencies update
- Removal of Python 3.7 compatibility code
3.0.0 - 2023-09-14
Breaking changes
- Upgrade
pydanticdependency from1.xto2.x.
2.0.0 - 2023-06-25
Breaking changes
- Drops Python 3.7 support.
- Removes deprecated config option
tool.delfino.local_commands_directory. See 1.3.0 for more details.
Fixes
- Adds
typing.Finaltype annotation and use of assignment operator where possible.
1.3.0 - 2023-05-13
Deprecated
- Config option
tool.delfino.local_commands_directoryis nowtool.delfino.local_command_folders. It is a list of folders to search for local commands (instead of a single folder). The default value is["commands"].delfino.models.pyproject_toml.Delfino.local_commands_directoryfalls back to the first folder inlocal_command_folderand will be removed in the next major version.
1.2.0 - 2023-05-06
Features
- Added support for config file named
.delfinorc.
1.1.1 - 2023-05-06
Fixes
- Dependencies updates.
- Fix typing issues.
command_groupsin settings are now validated (tool.delfinoandtool.delfino.plugins.<PLUGIN>).
1.1.0 - 2022-12-29
Features
- Warn about enabled or disabled commands that don't exist. This can be either due to a typo or because command has been removed/renamed.
1.0.0 - 2022-12-21
Breaking changes
The following deprecations were removed:
contextsmoduledelfino.click_utils.filepaths.filepaths_argumentdecorator
0.30.0 - 2022-12-16
Breaking changes
- Previously deprecated
delfino.click_utils.SetOptionFromConfigCallback.set_parameter_from_config_in_grouphas been removed.
0.29.0 - 2022-12-16
Features
runlogs executed commands inDEBUGlog level.
Deprecated
delfino.click_utils.SetOptionFromConfigCallback.set_parameter_from_config_in_groupin favours ofdelfino.click_utils.SetOptionFromConfigCallback.parameter_from_config_in_group.
0.28.1 - 2022-12-16
Fixes
click_utils.SetOptionFromConfigCallback.set_parameter_from_config_in_groupworking only forclick.Argumentand notclick.Option.
0.28.0 - 2022-12-16
Features
click_utils.SetOptionFromConfigCallbackthat if used as a callback toclick.Parametersub-classes will get a value for the parameter from config if not provided on the command line.decorators.files_folderscan be specified in config.
0.27.0 - 2022-12-15
Features
- Add
decorators.pass_args.set_passed_args_from_config_in_groupto allow passing thepass_argsvalue from config to command executed indirectly.
Fixes
- Dropping keys on plugin config re-parsing into more specific model.
0.26.1 - 2022-12-12
Fixes
- Suppress warning about missing plugin for local commands.
0.26.0 - 2022-12-07
Features
- Ignore commands where the object name start with and underscore. This is to prevent reused commands being considered as originating from the imported location. For example, if you import
from plugin.commands import some_command as _some_command, then_some_commandwill not be visible in Delfino. However, withfrom plugin.commands import some_command,some_commandwould be considered as being defined in the module.
0.25.0 - 2022-12-07
Breaking changes
decorators.pass_app_contextis now keyword only (removes deprecation from previous version).
0.24.0 - 2022-12-07
Fixes
- Reference to disabled commands.
Deprecated
-
decorators.pass_app_contextwill pass a named argument defaulting toapp_contextinstead of a positional argument to the decorated function. This allows the decorator position to be independent on the function argument. The argument name is changeable.If you get a warning
TypeError: <FUNCTION> got multiple values for argument 'app_context', this is likely caused by the@click.pass_contextdecorator, which is positional, and it's argument must match the position.
0.23.1 - 2022-11-30
Fixes
- Make
models.AppContextgeneric to allow specifyingmodels.PluginConfigsubclasses in plugins.
0.23.0 - 2022-11-30
Deprecated
-
Moved (change import statement):
contexts.AppContext. Usemodels.AppContext.contexts.pass_app_context. Usedecorators.pass_app_context
-
Changed functionality:
click_utils.filepaths_argument. Usedecorators.files_foldersinstead.
Features
decorators.pass_argsdecorator to allow pass-through arguments in commands. Command receives them as apassed_argsargument.decorators.files_folders_optiondecorator, which implements a-f/--file/--folderoption to supply command with files and/or folders. It can be used multiple times. The command receives this as afiles_foldersargument. Introduced to resolve a conflict withdecorators.pass_args.
0.22.0 - 2022-11-30
Breaking changes
- All optional dependencies (a.k.a. extras) except for
completionhave been moved to the plugindelfino-core. To migrate, move theextrasofdelfinotodelfino-core. - Revert to loading commands in plugins only from given entry point.
0.21.0 - 2022-11-29
Breaking changes
- Removed
tasksfolder as a fallback forcommands, containing local Click commands. - Removed built-in commands. Please install delfino-core instead.
- The following configuration options changed their location from
tool.delfino.<OPTION>totool.delfino.plugins.delfino-core.<OPTION>:disable_commandssources_directorytests_directoryreports_directorytest_typesverify_commandsdisable_pre_commitdockerhubtypecheck
Features
- Instances of
click.Commandare discovered recursively rather than just in the top level files. - Local folder with commands can be overriden from the default
commandswith atool.delfino.local_commands_directoryconfiguration option in thepyproject.tomlfile.
0.20.3 - 2022-11-26
Fixes
- Fix
importlib.metadataimport.
0.20.2 - 2022-11-26
Fixes
- Fix
importlibdeprecation.
0.20.1 - 2022-11-26
Fixes
- Load commands from
__init__.pyfiles in plugins.
0.20.0 - 2022-11-16
Features
- Plugin support. Now commands can also be loaded from installed packages.
Deprecated
-
configuration option in favour of
[tool.delfino] disable_commands = [<COMMAND>]Note that the name[tool.delfino.plugins.core] disable_commands = [<COMMAND>]coreof the plugin may change in the future.
0.19.1 - 2022-11-11
Fixes
- Add trove classifiers for Pypi.
0.19.0 - 2022-11-11
Breaking changes
- Minimum supported Python version increased from 3.7.0 to 3.7.2 (required by
pylint).
Features
- Maximum supported Python version increased to 3.11.
Fixes
- Missing
Optionaltype annotation, mandated by PEP 484.
0.18.2 - 2022-10-25
Fixes
- Correct number of job used by pylint in CI.
0.18.1 - 2022-10-11
Fixes
- Correct number of job used by pylint.
0.18.0 - 2022-09-13
Features
- Add "strict_directories" config for the typecheck command.
- Add path argument to the typecheck command.
Fixes
- Fix typo in the test command header message.
0.17.1 - 2022-09-12
Fixes
- Replace a magic constant.
0.17.0 - 2022-09-02
Features
- Lint/typecheck/format commands will be applied to the "commands" directory if exists.
0.16.1 - 2022-09-01
Fixes
- Fix AttributeError when executing verify-all command.
0.16.0 - 2022-08-23
Features
- Configuration now supports a
disable_pre_commitflag. If set, pre-commit integration is disabled.
0.15.0 - 2022-08-23
Features
- A new configuration field
verify_commandscan be configured to fine-tune which commands are run as part ofverify-all
Features
- The
verify-allcommand now respects overridden commands and disabled commands
0.14.0 - 2022-07-08
Features
lint-pylintuses maximum number of available CPU cores to speed up execution.
Fixes
- Dependencies update
0.13.1 - 2022-07-06
Fixes
build-docker --serializedalso serializes emulators installation.
0.13.0 - 2022-01-28
Features
--log-leveloption to set logging level globally.
Features
- Disabled commands show up in help only in the DEBUG log level.
0.12.2 - 2022-01-28
Fixes
- Delfino swallowing
ModuleNotFoundexceptions in auto-discovered commands.
0.12.1 - 2022-01-28
Fixes
- Tests not correctly filtered on their test type if the
--debugflag is omitted.
0.12.0 - 2022-01-26
Features
--serializedoption tobuild-dockercommand to prevent parallelized build of multiple platforms.
Fixes
- Presence of
pyproject.tomlor know package manager is no longer required when running without arguments or with-h/--help.
0.11.0 - 2021-12-10
Features
- Completion scripts are generated into a separate file.
0.10.0 - 2021-12-07
Features
--show-completionand--install-completionroot parameters. Currently, only Bash is supported.- Optional dependency
completionto installshellingham, required by the new parameters.
0.9.0 - 2021-12-02
Features
- Checks if optional Python packages in commands are installed.
-hoption as an alias for--helpeverywhere.- Styling of disabled commands in help text.
- Rename
contexts.AppContext.py_project_tomltopyproject_toml.
Fixes
- Unhandled exception when unknown command used in command line.
- Auto-complete failing when
pyproject.tomlis not in the current working directory or is missing required fields. - Removed dependency on
pytest-dotenvandpytest-mockas they are not required by any of the commands.
0.8.1 - 2021-11-29
Fixes
build-dockerpassing Python version to the build incorrectly.
0.8.0 - 2021-11-29
Features
- Command
upload-to-pypito push packages to Pypi usingtwine. tool.delfino.disable_commandsoption inpyproject.tomlto disable commands not needed in the current project.
Command build-docker
To build and push multi-platform docker images.
Requires tool.delfino.dockerhub defined in pyproject.toml. Example:
username = "radeklat"
build_for_platforms = [
"linux/amd64",
"linux/arm64",
"linux/arm/v7",
]Validation support
Commands can raise AssertionError exceptions to tell delfino some pre-conditions haven't been met. It will be automatically translated into a click.exceptions.Exit exception and the exception string will be printed with the command name that has caused it.
0.7.1 - 2021-11-26
Fixes
- Missing optional requirements.
0.7.0 - 2021-11-26
Features
- Rename project to
delfino.
0.6.0 - 2021-11-25
Features
- Loading commands from local
tasksmodule.
0.5.0 - 2021-11-25
Breaking changes
- Drop support for Python 3.6.
Features
- Commands are loaded as plugins dynamically.
- Split of
utilsinto more focused modules.
0.4.0 - 2021-11-23
Breaking changes
- Dependency on
invoke(replaced withsubprocess.run) andtermcolor(replaced withclick.secho).
Features
- Icon to
typecheckheader. - Reversing right icon in header if it has more than 1 emoji.
switch-python-versiondetects if package manager is not installed and installs it if not.
0.3.1 - 2021-11-22
Fixes
- Reference to the tool's entry point move to a constant instead of reading it from
pyproject.toml(which is not distributed with the package).
0.3.0 - 2021-11-21
Features
- Detect package manager (currently only
poetryandpipenv)
0.2.0 - 2021-11-21
Features
extrasdependencies inpyproject.tomlinitcommand to initialize required parameters and directories.
Features
- Rename project to
rads-toolboxto be able to publish to Pypi. - Package publishing from GitHub releases to Pypi.
0.1.0 - 2021-11-20
- Initial copy of source codes.