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
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.BaseModel
andGeneric
, generating a warning.
3.1.0 - 2023-10-24
Features
- Add
running_hook
toexecution.run
to 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
pydantic
dependency from1.x
to2.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.Final
type annotation and use of assignment operator where possible.
1.3.0 - 2023-05-13
Deprecated
- Config option
tool.delfino.local_commands_directory
is 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_directory
falls back to the first folder inlocal_command_folder
and 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_groups
in settings are now validated (tool.delfino
andtool.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:
contexts
moduledelfino.click_utils.filepaths.filepaths_argument
decorator
0.30.0 - 2022-12-16
Breaking changes
- Previously deprecated
delfino.click_utils.SetOptionFromConfigCallback.set_parameter_from_config_in_group
has been removed.
0.29.0 - 2022-12-16
Features
run
logs executed commands inDEBUG
log level.
Deprecated
delfino.click_utils.SetOptionFromConfigCallback.set_parameter_from_config_in_group
in 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_group
working only forclick.Argument
and notclick.Option
.
0.28.0 - 2022-12-16
Features
click_utils.SetOptionFromConfigCallback
that if used as a callback toclick.Parameter
sub-classes will get a value for the parameter from config if not provided on the command line.decorators.files_folders
can be specified in config.
0.27.0 - 2022-12-15
Features
- Add
decorators.pass_args.set_passed_args_from_config_in_group
to allow passing thepass_args
value 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_command
will not be visible in Delfino. However, withfrom plugin.commands import some_command
,some_command
would be considered as being defined in the module.
0.25.0 - 2022-12-07
Breaking changes
decorators.pass_app_context
is now keyword only (removes deprecation from previous version).
0.24.0 - 2022-12-07
Fixes
- Reference to disabled commands.
Deprecated
-
decorators.pass_app_context
will pass a named argument defaulting toapp_context
instead 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_context
decorator, which is positional, and it's argument must match the position.
0.23.1 - 2022-11-30
Fixes
- Make
models.AppContext
generic to allow specifyingmodels.PluginConfig
subclasses 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_folders
instead.
Features
decorators.pass_args
decorator to allow pass-through arguments in commands. Command receives them as apassed_args
argument.decorators.files_folders_option
decorator, which implements a-f
/--file
/--folder
option to supply command with files and/or folders. It can be used multiple times. The command receives this as afiles_folders
argument. 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
completion
have been moved to the plugindelfino-core
. To migrate, move theextras
ofdelfino
todelfino-core
. - Revert to loading commands in plugins only from given entry point.
0.21.0 - 2022-11-29
Breaking changes
- Removed
tasks
folder 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_commands
sources_directory
tests_directory
reports_directory
test_types
verify_commands
disable_pre_commit
dockerhub
typecheck
Features
- Instances of
click.Command
are discovered recursively rather than just in the top level files. - Local folder with commands can be overriden from the default
commands
with atool.delfino.local_commands_directory
configuration option in thepyproject.toml
file.
0.20.3 - 2022-11-26
Fixes
- Fix
importlib.metadata
import.
0.20.2 - 2022-11-26
Fixes
- Fix
importlib
deprecation.
0.20.1 - 2022-11-26
Fixes
- Load commands from
__init__.py
files 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>]
core
of 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
Optional
type 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_commit
flag. If set, pre-commit integration is disabled.
0.15.0 - 2022-08-23
Features
- A new configuration field
verify_commands
can be configured to fine-tune which commands are run as part ofverify-all
Features
- The
verify-all
command now respects overridden commands and disabled commands
0.14.0 - 2022-07-08
Features
lint-pylint
uses maximum number of available CPU cores to speed up execution.
Fixes
- Dependencies update
0.13.1 - 2022-07-06
Fixes
build-docker --serialized
also serializes emulators installation.
0.13.0 - 2022-01-28
Features
--log-level
option 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
ModuleNotFound
exceptions in auto-discovered commands.
0.12.1 - 2022-01-28
Fixes
- Tests not correctly filtered on their test type if the
--debug
flag is omitted.
0.12.0 - 2022-01-26
Features
--serialized
option tobuild-docker
command to prevent parallelized build of multiple platforms.
Fixes
- Presence of
pyproject.toml
or 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-completion
and--install-completion
root parameters. Currently, only Bash is supported.- Optional dependency
completion
to installshellingham
, required by the new parameters.
0.9.0 - 2021-12-02
Features
- Checks if optional Python packages in commands are installed.
-h
option as an alias for--help
everywhere.- Styling of disabled commands in help text.
- Rename
contexts.AppContext.py_project_toml
topyproject_toml
.
Fixes
- Unhandled exception when unknown command used in command line.
- Auto-complete failing when
pyproject.toml
is not in the current working directory or is missing required fields. - Removed dependency on
pytest-dotenv
andpytest-mock
as they are not required by any of the commands.
0.8.1 - 2021-11-29
Fixes
build-docker
passing Python version to the build incorrectly.
0.8.0 - 2021-11-29
Features
- Command
upload-to-pypi
to push packages to Pypi usingtwine
. tool.delfino.disable_commands
option inpyproject.toml
to 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
tasks
module.
0.5.0 - 2021-11-25
Breaking changes
- Drop support for Python 3.6.
Features
- Commands are loaded as plugins dynamically.
- Split of
utils
into more focused modules.
0.4.0 - 2021-11-23
Breaking changes
- Dependency on
invoke
(replaced withsubprocess.run
) andtermcolor
(replaced withclick.secho
).
Features
- Icon to
typecheck
header. - Reversing right icon in header if it has more than 1 emoji.
switch-python-version
detects 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
poetry
andpipenv
)
0.2.0 - 2021-11-21
Features
extras
dependencies inpyproject.toml
init
command to initialize required parameters and directories.
Features
- Rename project to
rads-toolbox
to be able to publish to Pypi. - Package publishing from GitHub releases to Pypi.
0.1.0 - 2021-11-20
- Initial copy of source codes.