Skip to content

Changelog

Unreleased

TypeDescriptionPRIssuesAuthor
Fix Bump twine version so metadata version 2.4 is supporteduluc.sengil@helsing.ai

0.40.4 (2024-10-04)

TypeDescriptionPRIssuesAuthor
Improvement Always run `uv sync`thomas.pellissier-tanon@helsing.ai

0.40.3 (2024-09-03)

TypeDescriptionPRIssuesAuthor
Improvement Add -v flag when running `pyproject-build` in `UvPythonBuildSystem`@NiklasRosenstein
Feature Add `PythonBuildSystem.build_v2()` which receives the settings in addition to the output directory@NiklasRosenstein
Fix Pass `UV_INDEX_URL` and `UV_EXTRA_INDEX_URL` env variables when invoking `pyproject-build`@NiklasRosenstein

0.40.2 (2024-09-02)

TypeDescriptionPRIssuesAuthor
Fix fix accidental import of dataclass from `attrs` instead of `dataclasses`@NiklasRosenstein
Fix Add missing `uv` dependency to `kraken-build` and bump it to `^0.4.2` for kraken-wrapper@NiklasRosenstein
Hygiene Make use of existing function `inject_url_credentials()` in Kraken-wrapper@NiklasRosenstein
Fix Sanitize command to remove basic auth from URLs when logging install command in kraken-wrapper (fixes #246)246@NiklasRosenstein

0.40.0 (2024-09-02)

TypeDescriptionPRIssuesAuthor
Feature Extend pytest task to accept a sequence of paths that contain test files.@sebimarkgraf
Feature Add Python build-system support for Uv (https://docs.astral.sh/uv/guides/projects/)@NiklasRosenstein
Fix Use `fsdecode()` on result from `find_uv_bin()` for enhanced compatbility@NiklasRosenstein
Fix Fix `inject_url_credentials()` to not drop port@NiklasRosenstein

0.39.0 (2024-08-19)

TypeDescriptionPRIssuesAuthor
Feature Cargo Publishing : Skip publishing packages that already exists in the registry@jcaille
Fix Replace use of deprecated `datetime.utcnow()` with `datetime.now(timezone.utc)`@NiklasRosenstein

0.38.1 (2024-08-15)

TypeDescriptionPRIssuesAuthor
Fix Fix `dist()` function not using `TaskSet` correctly (regression introduced in 0.37.0, 8840ec5), add `TaskSet.build()` to compensate@NiklasRosenstein

0.38.0 (2024-08-06)

TypeDescriptionPRIssuesAuthor
Improvement Replace `rich` logger with `loguru` which produces nicer log formatting and requires less setup@NiklasRosenstein
Feature Add `buildscript(interpreter_constraint)` argument@NiklasRosenstein
Fix Detect Pyenv shims in interpreter constraint matching and ignore them by default; and if not ignore, then do not commit their version to the cache as the Python version they represent might change.@NiklasRosenstein
Feature Propagate `SSL_CERT_FILE` or `REQUESTS_CA_BUNDLE` environment variable to PDM repository configuration on non-Linux systems (due to https://github.com/pdm-project/pdm/issues/3076)@NiklasRosenstein
Improvement Permit PyPI index URLs with trailing slash (e.g. `.../simple/`) in `PythonSettings.add_package_index()`@NiklasRosenstein
Fix Relative local dependencies in `buildscript(requirements)` are now resolved relative to the project root where `buildscript()` is called.263@NiklasRosenstein

0.37.3 (2024-08-02)

TypeDescriptionPRIssuesAuthor
Fix Accept `Address` in `dist(dependencies)` when passing a map@NiklasRosenstein
Improvement Accept `Address` in more places where previously only a string for a task address was accepted@NiklasRosenstein

0.37.2 (2024-08-02)

TypeDescriptionPRIssuesAuthor
Improvement Update `dist(dependencies)` to accept `Address` values now that `Task.path` is removed.@NiklasRosenstein

0.37.1 (2024-08-02)

TypeDescriptionPRIssuesAuthor
Deprecation Deprecate `gitignore(gitignore_io_tokens, gitignore_io_allow_http_request_backfill)`@NiklasRosenstein
Feature Add `kraken.std.git.gitignore_extend()` function@NiklasRosenstein
Breaking change Remove `Project.do()` as it was deprecated for a long time. Use `Project.task()` instead@NiklasRosenstein
Fix Temporarily remove @deprecated from Task.outputs; the API is actively used and we have no replacement API for it@NiklasRosenstein

0.37.0 (2024-08-02)

TypeDescriptionPRIssuesAuthor
Refactor Renamed `Pyproject` into `TomlFile` for better capturing what it does and moved it to `kraken.common.toml`.alexandre.ghelfi@helsing.ai
Docs Fixing typo in READMEalexandre.ghelfi@helsing.ai
Refactor move `kraken.std.git.gitignore.parser` to `kraken.common.gitignore`@NiklasRosenstein
Hygiene Eliminate `nr-io-graphviz` dependency and update `databind` to min `4.5.0`@NiklasRosenstein
Refactor Eliminate `nr-stream` dependency@NiklasRosenstein
Fix Add missing `py.typed` marker for `kraken.build` module@NiklasRosenstein
Breaking change Remove a lot of long deprecated APIs268@NiklasRosenstein

0.36.12 (2024-07-04)

TypeDescriptionPRIssuesAuthor
Feature Enable Ruff through RuffTask for formatting and lintingalexandre.ghelfi@helsing.ai
Fix Allow auth check against any host with jfrog in the namealex.spencer@helsing.ai

0.36.11 (2024-06-27)

TypeDescriptionPRIssuesAuthor
Fix Pyupgrade: Fixed "exclude" option treated relative to project directory, not CWD@NiklasRosenstein

0.36.10 (2024-06-27)

TypeDescriptionPRIssuesAuthor
Fix Twine: Change default version requirement from `>=4.0.2,<5.0.0` to `>=5.0.0,<6.0.0`. This is a fix because earlier versions of Twine read their `twine.__license__` field from a `importlib_metadata` field but it was moved to a trove classifier in newer versions of `importlib_metadata`. See https://github.com/pypa/twine/pull/968 for more context.@NiklasRosenstein

0.36.9 (2024-06-13)

TypeDescriptionPRIssuesAuthor
Improvement Bump `uv` to `^0.2.11`@NiklasRosenstein
Improvement Add `PexBuildTask.verbose` property and make it default to `False` (used to be not configurable and enabled by default)@NiklasRosenstein

0.36.8 (2024-06-11)

TypeDescriptionPRIssuesAuthor
Fix Default to always show colors for colored output produced by Kraken itself and added a `--no-color` option to the `kraken` CLI245@NiklasRosenstein
Feature Add `kraken.common.colored` function@NiklasRosenstein
Hygiene Remove `kraken.core.system.executor.colored module`; it was duplicate dead code that already existed in `kraken.core.cli.executor`@NiklasRosenstein
Improvement Task status messages are now printed in grey@NiklasRosenstein

0.36.7 (2024-06-04)

TypeDescriptionPRIssuesAuthor
Improvement Change `DEFAULT_INTERPETER_CONSTRAINT` from `>=3.10,<3.11` to `>=3.10` -- Kraken is compatible with Python 3.11 and 3.12 due to the Dill 0.3.8 release for quite some time now, but we have forgotten to update this value.@NiklasRosenstein

0.36.6 (2024-05-31)

TypeDescriptionPRIssuesAuthor
Improvement added an optional overwrite option for RenderFileTaskuluc.sengil@helsing.ai

0.36.5 (2024-04-12)

TypeDescriptionPRIssuesAuthor
Improvement Move generated .gitignore around so user-provided definitions can overwrite API-provided onesuluc.sengil@helsing.ai
Improvement Expose the `locked` property of `CargoBuildTask` via the `cargo_build` helper functionuluc.sengil@helsing.ai
Improvement Upgrade keyring to v25@NiklasRosenstein
Improvement update dependency httpx to ^0.27.0@NiklasRosenstein
Improvement update dependency pyartifactory to v2@NiklasRosenstein
Improvement update dependency termcolor to v2@NiklasRosenstein
Hygiene `CargoManifest.read()` now raises a `ValueError` if the manifest has neither a `[package]` nor a `[workspace]` section rather than a `pydantic.ClassError`@NiklasRosenstein

0.36.4 (2024-03-26)

TypeDescriptionPRIssuesAuthor
Fix Fix `BuildxBuildTask.execute()` accessing `self.cache_from/cache_to` incorrectlyniklas.rosenstein@helsing.ai

0.36.3 (2024-03-26)

TypeDescriptionPRIssuesAuthor
Feature Add `BuildxBuildTask.cache_from` and `.cache_to` propertiesniklas.rosenstein@helsing.ai

0.36.2 (2024-03-25)

TypeDescriptionPRIssuesAuthor
Fix `Project.subproject(mode="if-exists")` now loads the project if it exists, instead of not loading it and only returning it if it has been loaded before. Added new `"or-none"` mode for the old behaviour.niklas.rosenstein@helsing.ai

0.36.1 (2024-03-21)

TypeDescriptionPRIssuesAuthor
Improvement Add `PythonSettings.get_primary_index()` that supports both `PackageIndex.Priority.primary` and `PackageIndex.Priority.default`niklas.rosenstein@helsing.ai

0.36.0 (2024-03-21)

TypeDescriptionPRIssuesAuthor
Breaking change Remove support for BuildDSL as build script languageniklas.rosenstein@helsing.ai
Fix Fix possible undefined variable in `kraken.std.util.urk.redact_url_password()`niklas.rosenstein@helsing.ai
Fix Use `http_probe()` to wait for `mitmweb` proxy to come upniklas.rosenstein@helsing.ai
Feature Add `kraken.std.util.http.http_probe()`niklas.rosenstein@helsing.ai
Breaking change Remove `CargoAuthProxy.startup_wait_time` and `start_mitm_proxy(startup_wait_time)`niklas.rosenstein@helsing.ai
Breaking change Remove `Container.probe()` in favor of `kraken.std.util.http.http_probe()`niklas.rosenstein@helsing.ai
Breaking change Remove deprecated `KanikoExecutor._render_main_script()` and `._get_kaniko_executor_command()`niklas.rosenstein@helsing.ai
Fix Fix `pyupgrade()` not passing the Pex built pyupgrade to the format taskniklas.rosenstein@helsing.ai

0.35.7 (2024-03-19)

TypeDescriptionPRIssuesAuthor
Feature Support URL requirements in `buildscript(requirements)`@NiklasRosenstein

0.35.6 (2024-03-15)

TypeDescriptionPRIssuesAuthor
Fix Fix that updating the `pyproject.toml` is continuously outdated in certain cases221niklas.rosenstein@helsing.ai
Fix Fixed dictionary keys changed during iteration" error in `PoetryPyprojectHandler.set_path_dependencies_to_version()` which seems to be caused by `tomlkit` even when modifying an existing key but setting it to a different value/type223niklas.rosenstein@helsing.ai
Fix Pass the PEX-built `pycln` binary also to the Pycln format task (was only passed to the check variant)222niklas.rosenstein@helsing.ai

0.35.5 (2024-03-14)

TypeDescriptionPRIssuesAuthor
Feature Add `pex_set_default_index_url()` functionniklas.rosenstein@helsing.ai

0.35.4 (2024-03-14)

TypeDescriptionPRIssuesAuthor
Improvement Use `tomlkit` instead of `tomli`/`tomli-w` packages to read/write Pyproject; this preserves comments in the `pyproject.toml`@NiklasRosenstein
Fix Do not fail when building the same PEX file twice@Tpt
Fix Fixed an issue where when the DaemonController fails to start the daemon process, the fork of the Kraken process continues, resulting in two copies of the process trying to run to completion, e.g. executing tasks from this point on.niklas.rosenstein@helsing.ai
Improvement Add `PythonBuildSystem.bump_version()` function with a single implementation for Poetry/Maturin/Pdm which correctly reverts to the original file contents. Note that reverting is still not supported for Slapniklas.rosenstein@helsing.ai
Improvement Remove mitmweb dependency, install it with PEX instead. Print mitmweb proxy and UI URLs in the CargoAuthProxy taskniklas.rosenstein@helsing.ai

0.35.3 (2024-03-13)

TypeDescriptionPRIssuesAuthor
Breaking change Make Buffrs tasks compatible with Buffrs 0.8 -- introduce `registry` field to publish and use `--set-version` option instead of temporarily updating `Proto.toml`. Removed `BuffrsGenerateTask`217niklas.rosenstein@helsing.ai

0.35.2 (2024-03-06)

TypeDescriptionPRIssuesAuthor
Fix Set `cargo:token` by default (fix regression introduced in #213)niklas.rosenstein@helsing.ai

0.35.1 (2024-03-06)

TypeDescriptionPRIssuesAuthor
Fix Revert setting credentials providers by default in `.cargo/config.toml` with the `:cargoSyncConfig` taskniklas.rosenstein@helsing.ai

0.35.0 (2024-03-05)

TypeDescriptionPRIssuesAuthor
Feature Make Rust builds respect Cargo.lock when presentjon.gjengset@helsing.ai
Improvement Improve Windows support in `krakenw` by supporting the `PYENV` env-var and using the right `pyhon.exe` path on Windows@NiklasRosenstein
Fix Do not use `dmypy` on Windows@NiklasRosenstein
Improvement Move bump version into publishcolin.mikolajczak@helsing.ai
Improvement Add task to login in all cargo registriesquentin.santos@helsing.ai
Fix Fix passing the actual list of tasks to `BuildError` and turn `BuildError.failed_tasks` into `Set[Task]` from `Set[str]`niklas.rosenstein@helsing.ai
Feature Add shellcheck capabilitiesniklas.rosenstein@helsing.ai

0.34.1 (2024-02-16)

TypeDescriptionPRIssuesAuthor
Fix Fix warning about corrupt virtual environment also showing when there is no trace of any prior virtual environment@NiklasRosenstein
Fix Fix using the default installer as configured with `krakenw config --installer=...`@NiklasRosenstein

0.34.0 (2024-02-16)

TypeDescriptionPRIssuesAuthor
Feature Add `workspace`, `all_features` and `deny_warnings` properties to `CargoClippyTask`.182@tomkarw
Hygiene Protect against NPEvincent.siles@helsing.ai
Feature Add support for installing Kraken build environments with `uv` (https://astral.sh/blog/uv)@NiklasRosenstein
Feature add `krakenw config` command that allows to configure the default installer (VENV or UV)@NiklasRosenstein

0.33.2 (2024-01-31)

TypeDescriptionPRIssuesAuthor
Improvement Upgrade Dill to `>=0.3.8,<0.4.0` which added support for Python 3.11+niklas.rosenstein@helsing.ai
Feature add `kraken.std.docs.mkdocs.mkdocs()`niklas.rosenstein@helsing.ai

0.33.1 (2024-01-12)

TypeDescriptionPRIssuesAuthor
Improvement Use `--upgrade-deps` option to `python -m venv` instead of calling `pip install --upgrade pip` separately after Venv creationniklas.rosenstein@helsing.ai
Improvement Accept `str` for `pytest(tests_dir, ignore_dirs, include_dirs)` argumentsniklas.rosenstein@helsing.ai
Improvement Store a `.success.flag` file in the virtual build environment to know if the Virtual environment installation was successful.24niklas.rosenstein@helsing.ai
Fix Catch `Property.Deferred` exception in `kraken query describe` niklas.rosenstein@helsing.ai
Improvement Update Python `PublishTask` to use Twine as a PEX, removing the `twine` dependency in `kraken-build` itself, and adding the `--verbose` flag165niklas.rosenstein@helsing.ai
Improvement Use latest Pip version and resolver in Pex, and use `--venv prepend` for Novellaniklas.rosenstein@helsing.ai
Feature Add `GetItemSupplier` and `Supplier.__getitem__()`niklas.rosenstein@helsing.ai
Improvement Add `PexBuildTask.output_scripts_dir` and `.output_scripts` propertiesniklas.rosenstein@helsing.ai
Feature add `NovellaTask()` and `novella()` factory function to build documentation with [Novella](https://github.com/NiklasRosenstein/novella/)niklas.rosenstein@helsing.ai

0.33.0 (2024-01-10)

TypeDescriptionPRIssuesAuthor
Feature Add `version_spec` argument to `black()`, `flake8()`, `isort()`, `mypy()`, `pycln()`, `pylint()` and `pyupgrade()` factory functionsniklas.rosenstein@helsing.ai
Improvement Drastically improve the performance of `kraken.common.findpython.get_candidates()` on Windows and WSL where you would until now test the entire C:/Windows/System32 folder for executable access.@NiklasRosenstein
Feature Add `kraken.build` module which allows importing the current `context` and `project` from a build script as if calling `Context.current()` or `Project.current()`@NiklasRosenstein
Feature Add a `PexBuildTask` and add support for most Python tooling tasks to defer to an alternative binary (which the DAG builder can use to point to a PEX)niklas.rosenstein@helsing.ai

0.32.6 (2024-01-07)

TypeDescriptionPRIssuesAuthor
Feature Add sqlx database create and drop tasksnicolas.vizzari@helsing.ai
Improvement `Currentable.as_current()` now returns self@NiklasRosenstein
Feature Add `pytest(include_dirs)` to add additional directories for testing@NiklasRosenstein

0.32.4 (2023-12-14)

TypeDescriptionPRIssuesAuthor
Improvement Remove PEX code from Kraken-wrapper. No one is using that!niklas.rosenstein@helsing.ai

0.32.3 (2023-12-14)

TypeDescriptionPRIssuesAuthor
Fix Relax Python version constraint for the kraken-wrapper, but we still recommend using Python 3.10 for Kraken because of Dillniklas.rosenstein@helsing.ai

0.32.2 (2023-12-14)

TypeDescriptionPRIssuesAuthor
Breaking change Move `kraken-wrapper` code back into its own package, remove `kraken-core`, `kraken-common` and `kraken-std` (those are not usually depended on directly at the moment anyway)141niklas.rosenstein@helsing.ai
Fix Fixed a bug in `--all` option supported by all graph commands (e.g. `kraken run` and the `kraken query` commands) that made the argument not recognized.niklas.rosenstein@helsing.ai

0.32.1 (2023-12-13)

TypeDescriptionPRIssuesAuthor
Fix Enable cargo:token as a global-credential-provider; this is required since 1.74, which brings authenticated priviate registries140quentin.santos@helsing.ai

0.32.0 (2023-12-12)

TypeDescriptionPRIssuesAuthor
Improvement Merge `kraken-common`, `kraken-core`, `kraken-std` and `kraken-wrapper` packages into a single `kraken-build` package.125@NiklasRosenstein
Improvement Calling `buildscript()` from a Kraken project that is not the root project will now raise a `RuntimeError`.130124@NiklasRosenstein
Improvement Remove use of `pkg_resources` and replace it with `importlib.metadata` and `packaging.requirements` instead.129126@NiklasRosenstein
Improvement Add flag to run all workspace tests135@asmello
Fix Accept gitconfig with several occurrences of the same section136@qsantos
Breaking change Remove `kraken.std.http` module, use `kraken.common.http` insteadniklas.rosenstein@helsing.ai
Tests Add a unit test for a real-world example of a DAG that failed the expected behavior of `TaskGraph.mark_tasks_as_skipped()`.138niklas.rosenstein@helsing.ai
Fix Replace `Tasks.mark_tasks_as_skipped()` with a simpler implementation that also fixes an issues with second-degree tasks being marked as skipped even if they should not be.138niklas.rosenstein@helsing.ai
Fix Allow extra keys when parsing the Cargo manifest `[bin]` section139134niklas.rosenstein@helsing.ai

0.31.7 (2023-10-10)

TypeDescriptionPRIssuesAuthor
Feature Added buffrs login/install/generate to kraken.std. Allow cargo_build to depend on task(s), i.e. buffrs installkraken-build/kraken-build#120alex.spencer@helsing.ai
Fix Confine buf command to current working directory of projectkraken-build/kraken-build#122alex.spencer@helsing.ai

0.31.6 (2023-09-28)

TypeDescriptionPRIssuesAuthor
Improvement Improve errors that could be raised by the `TaskGraph` when a `not_none()` expectation is not met.kraken-build/kraken-build#119rosensteinniklas@gmail.com
Fix Fixed to recompute hash for `Address` after deserialization.kraken-build/kraken-build#121rosensteinniklas@gmail.com

0.31.5 (2023-09-19)

TypeDescriptionPRIssuesAuthor
Improvement Set `docker buildx build --provenance=false` by default to avoid pushing a list manifest by default.kraken-build/kraken-build#118@NiklasRosenstein

0.31.4 (2023-09-19)

TypeDescriptionPRIssuesAuthor
Fix Fixed a bug where tasks that are dependencies of another task excluded with the `-X` option (recursive exclude) would be tagged unconditionally to be skipped during execution even if it was still required by another task that is not skipped.kraken-build/kraken-build#116@NiklasRosenstein
Fix Pyupgrade: support properly relative source and test directorieskraken-build/kraken-build#103thomas.pellissier-tanon@helsing.ai
Improvement Properly exposes Maturin project builder env variable setterkraken-build/kraken-build#113thomas.pellissier-tanon@helsing.ai
Improvement Removed krakenw Nix flakekraken-build/kraken-build#74niklas.rosenstein@helsing.ai
Improvement Mask auth password and check validitykraken-build/kraken-build#112alex.spencer@helsing.ai
Fix Update poetry lock to fix nix buildkraken-build/kraken-build#114alex.spencer@helsing.ai

0.31.3 (2023-09-14)

TypeDescriptionPRIssuesAuthor
Refactor Add http module to commonkraken-build/kraken-build#109alex.spencer@helsing.ai
Deprecation Deprecate http module in std in preference of moving to kraken-commonkraken-build/kraken-build#109alex.spencer@helsing.ai
Improvement Allows to inject env variable in Maturin buildskraken-build/kraken-build#104@Tpt
Improvement add `mode=max,ignore-error=true` to the `--cache-to=type=registry,...` option created by the `BuildxBuildTask`.kraken-build/kraken-build#111@NiklasRosenstein
Fix Enforces isort and refreshes poetry.lockkraken-build/kraken-build#108@Tpt

0.31.2 (2023-09-04)

TypeDescriptionPRIssuesAuthor
Fix Fixed log format string when Pip fails to install dependencies.@NiklasRosenstein

0.31.1 (2023-08-22)

TypeDescriptionPRIssuesAuthor
Improvement Added the ability to specify additional directories to run Python linting tasks againt.kraken-build/kraken-build#90@cowlingjosh
Improvement Added get_lockfile() to PythonBuildSystem subclasses as common way to retrieve the lock filekraken-build/kraken-build#101alex.waldenmaier@icloud.com
Fix Fixed a bug in Pythons `InstallTask` that would accidentally always cause the install task to run even if that was disabled.rosensteinniklas@gmail.com
Improvement Expose all environment variables understood by `krakenw` as CLI options as well and document the variables in the `--help` text.kraken-build/kraken-build#79@NiklasRosenstein
Feature Add `--show-install-logs` to the CLI and handle the `KRAKENW_SHOW_INSTALL_LOGS` env var.kraken-build/kraken-build#79@NiklasRosenstein

0.31.0 (2023-08-08)

TypeDescriptionPRIssuesAuthor
Fix Rework task description wrappingkraken-build/kraken-build#98kraken-build/kraken-build#93jon.gjengset@helsing.ai
Improvement Wrap error message in a mapkraken-build/kraken-build#97nicolas.vizzari@helsing.ai
Improvement Avoids building the Maturin library twice with PDMkraken-build/kraken-build#99@Tpt
Improvement Makes PDM integration test mandatorykraken-build/kraken-build#86@Tpt
Feature Facilitates the creation of Debian packages from Rust projects.kraken-build/kraken-build#87@morosanmihail
Feature Allows passing features to cargo_build and cargo_test.kraken-build/kraken-build#77@morosanmihail

0.30.4 (2023-08-04)

TypeDescriptionPRIssuesAuthor
Fix Add error message in paramaters of functionkraken-build/kraken-build#96nicolas.vizzari@helsing.ai

0.30.2 (2023-08-03)

TypeDescriptionPRIssuesAuthor
Feature Allow to pass a custom error message for `cargo_deny`kraken-build/kraken-build#95nicolas.vizzari@helsing.ai

0.30.1 (2023-08-03)

TypeDescriptionPRIssuesAuthor
Fix Makes flake8 happykraken-build/kraken-build#91@Tpt
Fix Makes flake8 happykraken-build/kraken-build#91@Tpt
Fix Correct multi-line description wrappingkraken-build/kraken-build#94kraken-build/kraken-build#93@jonhoo
Improvement Report python coverage in terminal.kraken-build/kraken-build#92benjamin.poumarede@helsing.ai

0.30.0 (2023-07-31)

TypeDescriptionPRIssuesAuthor
Improvement Upgrades GitHub actions dependencieskraken-build/kraken-build#85@Tpt
Fix Fixed an issue where cargo managed by nix would not be recognised as such, due to the which command being unable to follow symlinks.kraken-build/kraken-build#80@ivan-jukic
Breaking change Adds support of Maturin+PDM Python projectskraken-build/kraken-build#84@Tpt
Feature do not unnecessarily sort pathkraken-build/kraken-build#83james.baker@helsing.ai

0.29.0 (2023-07-13)

TypeDescriptionPRIssuesAuthor
Improvement Enforces 3.10+ type annotation syntaxes using pyupgradekraken-build/kraken-build#62@Tpt
Improvement Support pytest coverage.kraken-build/kraken-build#48benjamin.poumarede@helsing.ai
Improvement Add `--no-http2` to the mitmproxy when invoked via the Cargo auth proxy task. This is to work around an issue with Cargo HTTP/2 multi-plexing (see https://github.com/rust-lang/cargo/issues/12202).kraken-build/kraken-build#75@NiklasRosenstein
Feature add Nix flakekraken-build/kraken-build#73james.baker@helsing.ai
Fix Fixed a bug in the ordering of Python interpreters when resolving an appropriate installation for the Kraken build environment. We now rely on the order returned by `kraken.common.findpython.get_candidates()`, which already attempts to be a bit clever in the order it returns candidates (e.g. `python3` over `python3.X` over `python3.X.Y` over installations in `~/.pyenv/versions`).kraken-build/kraken-build#76@NiklasRosenstein

0.28.4 (2023-07-11)

TypeDescriptionPRIssuesAuthor
Feature Add `PythonInstallTask.skip_if_venv_exists` property (defaults to true) and `PythonSettings.skip_install_if_venv_exists` flag.;@NiklasRosenstein

0.28.3 (2023-07-10)

TypeDescriptionPRIssuesAuthor
Improvement Raise min Python version to 3.7@NiklasRosenstein
Improvement The wrapper does not have an issue with Python 3.11 as the core does due to Dill, so we should allow installing it into 3.11 and newer.@NiklasRosenstein

0.28.2 (2023-07-10)

TypeDescriptionPRIssuesAuthor
Fix mitmproxy: Stream HTTP body instead of buffering to completionkraken-build/kraken-build#71@wngr

0.28.1 (2023-07-10)

TypeDescriptionPRIssuesAuthor
Fix The `DaemonController.run()` function now creates the parent directory of the stdout/stderr output files by default.kraken-build/kraken-build#70@NiklasRosenstein

0.28.0 (2023-07-07)

TypeDescriptionPRIssuesAuthor
Improvement Handle `DaemonController` state more defensively.kraken-build/kraken-build#68@NiklasRosenstein

0.28.0.dev0 (2023-07-07)

TypeDescriptionPRIssuesAuthor
Deprecation Deprecate `Property.config()`kraken-build/kraken-build#64@NiklasRosenstein
Feature Add `Property.required()` and a `help` parameter to `Property.output()`, `Property.default()` and `Property.default_factory()`kraken-build/kraken-build#64@NiklasRosenstein
Feature Add `Task.add_tag()`, `Task.remove_tag()` and `Task.get_tags()`. A "skip" tag can now be added to a task to skip it.kraken-build/kraken-build#66@NiklasRosenstein
Improvement Allow `Task` items in parameter to `Context.resolve_tasks()`kraken-build/kraken-build#66@NiklasRosenstein
Tests Test `PythonBuildSystem.build()` with `as_version` set for Slap/Poetry/Pdm@NiklasRosenstein
Improvement Adjust task property definitions to replace `Property.config()` with `Property.default()` and `Property.default_factory()`kraken-build/kraken-build#64@NiklasRosenstein
Breaking change Move Kraken task definitions in `kraken.std.docker` into `kraken.std.docker.tasks` modulekraken-build/kraken-build#66@NiklasRosenstein
Improvement Phase out `proxy.py` MITM proxy for Cargo repositories and replace it with `mitmproxy` (https://mitmproxy.org/). Kraken will now start `mitmweb` in the background listening to port `8899` (same as before), while serving the Web Interface on port `8900`. The `mitmweb` process will remain alive over multiple runs of Kraken and restart automatically if its configuration changes (e.g. if the token changes).kraken-build/kraken-build#68@NiklasRosenstein

0.27.5 (2023-06-30)

TypeDescriptionPRIssuesAuthor
Fix Do not call `PdmPyprojectHandler.set_path_dependencies_to_version()` in `PDMPythonBuildSystem.build()` as its not yet supported.@NiklasRosenstein

0.27.4 (2023-06-28)

TypeDescriptionPRIssuesAuthor
Fix Fixed `cargo_sqlx_migrate()` and `cargo_sqlx_prepare()` by adding missing parameters that were previously supported with `**kwargs` before `Project.do()` was deprecated.@NiklasRosenstein

0.27.3 (2023-06-28)

TypeDescriptionPRIssuesAuthor
Fix Handle `keyring.backends.null` the same as the fail backend -- i.e. as if no keyring backend is available. Improve logs to show the available keyring backend.kraken-build/kraken-build#61@NiklasRosenstein
Improvement If the selected keyring backend is `null`, add a log to prompt the user to re-enable keyringkraken-build/kraken-build#61@NiklasRosenstein

0.27.2 (2023-06-28)

TypeDescriptionPRIssuesAuthor
Fix Do not sort out `python3.XY` and `python3.XY.AB` binaries when searching for candidates of Python binaries on the system in `kraken.common.findpython.get_candidates()`.kraken-build/kraken-build#60@NiklasRosenstein

0.27.0 (2023-06-27)

TypeDescriptionPRIssuesAuthor
Feature Add `kraken.common.strings` module with the `as_bytes()` functionkraken-build/kraken-build#51@NiklasRosenstein
Feature Add `kraken.common.strings.as_string()`kraken-build/kraken-build#56@NiklasRosenstein
Improvement Replace more references to deprecated `Task.path` and `Project.path` with the new `.address` attribute@NiklasRosenstein
Improvement Get rid of `pretty_errors` again, experience has shown that it does not provide the added value that we hoped for as it still just outputs a Python traceback, but now in a different format than people are used to.kraken-build/kraken-build#49@NiklasRosenstein
Improvement Handle common errors in the Kraken CLI to improve the user experience.kraken-build/kraken-build#49@NiklasRosenstein
Feature Add `TaskStatusType.WARNING`kraken-build/kraken-build#50@NiklasRosenstein
Feature Support `Literal` type hints in `Property`kraken-build/kraken-build#50@NiklasRosenstein
Breaking change The `kraken.core.testing` Pytest fixtures now always create a Context and Project in temporary directories. The temporary directories are distinct, this helps in ensuring that we do not accidentally depend on the current working directory or the project directory being somehow related to the Context directory.kraken-build/kraken-build#50@NiklasRosenstein
Breaking change Moved `as_bytes()` from `kraken.core.lib.check_file_contents_task` to `kraken.common.strings`kraken-build/kraken-build#51@NiklasRosenstein
Feature Add `Property.is_set()` which returns `True` if `Property.set()` (or its variants) have not been called before and if the property does not have a default value.kraken-build/kraken-build#51@NiklasRosenstein
Feature Add `Project.task()` overload to create tasks, which deprecated `Project.do()`kraken-build/kraken-build#54@NiklasRosenstein
Deprecation Deprecate `Project.do()` in favor of `Project.task()`kraken-build/kraken-build#54@NiklasRosenstein
Improvement Add `Address.normalize(keep_container)` keyword argument.kraken-build/kraken-build#54@NiklasRosenstein
Fix Fixed `Context.resolve_tasks()` when `None` is passed, which is intended to resolve only the default tasks in the current project and its subprojects. Before this fix, the method would return _all_ tasks of the current project instead, because the address `.` would be treated like a single-element address, such as `lint`, which gets turned into `:**:.` (or `:**:lint`).kraken-build/kraken-build#54@NiklasRosenstein
Feature Add `Project.task(name, closure)` overload that can be used in BuildDSL build scripts to define custom tasks. It creates an instance of an `InlineTask`, which also allows adding properties dynamically.kraken-build/kraken-build#54@NiklasRosenstein
Feature The `Property` class is now a Python descriptor, allowing to assign property values to tasks using assignments in addition to `set()`. Assigning `None` to it will set it to `None` for optional properties, and clear it for non-optional properties.kraken-build/kraken-build#54@NiklasRosenstein
Fix Fix `kraken query tree` command to remove the `--no-save` option and to never save the build context to disk after the command.kraken-build/kraken-build#54@NiklasRosenstein
Breaking change Move `kraken.core.lib.render_file_task` and `kraken.core.lib.check_file_contents_task` to `kraken.std.util`kraken-build/kraken-build#56@NiklasRosenstein
Improvement When a build fails, the summary of which tasks have not been executed no longer include groups.kraken-build/kraken-build#57@NiklasRosenstein
Breaking change Reimplement `CheckFileExistsAndIsCommitedTask` as `CheckFileTask` and move it into the `kraken.core.git.tasks` module.kraken-build/kraken-build#50@NiklasRosenstein
Breaking change Reimplement `CheckValidReadmeExistsTask` as `ValidateReadmeTask`.kraken-build/kraken-build#50@NiklasRosenstein
Breaking change Re-implement `GitignoreSyncTask`, simplifying the code by a lot (e.g. no more tracking of a generated content hash) and cache a subset of tokens from gitignore.io to distribute them as part of kraken-std. The old begin/end markers we used in gitignore files before is still supported. We also no longer sort the gitignore file entries.kraken-build/kraken-build#51@NiklasRosenstein
Improvement Use Poetry index priority instead of deprecated default/secondary optionskraken-build/kraken-build#46sam.rogerson@helsing.ai
Improvement Refactor how data is read and written to a Pyproject dependening on the underlying Project management tool (Poetry, PDM, etc.)kraken-build/kraken-build#46@NiklasRosenstein
Improvement Improved PDM implementation to ensure that it targets its own in-project environment instead of a potentially already activated virtual environment in the users terminal when they run Kraken.kraken-build/kraken-build#46@NiklasRosenstein
Improvement bump Cargo.toml version before building, not only before publishingkraken-build/kraken-build#52jerome.froissart@helsing.ai
Breaking change Correct name of `mypy_stubtest_task` module and remove backwards compatibility for `mypy_subtest()` function name.kraken-build/kraken-build#54@NiklasRosenstein
Breaking change Update signature of `info()` function to align with the rest of the task factory functions (e.g. automatically take the current project and build system).kraken-build/kraken-build#54@NiklasRosenstein
Improvement Make parameters to task factory functions in `kraken.std.python.tasks` explicit and change `List` properties to contain a `Sequence`kraken-build/kraken-build#54@NiklasRosenstein
Feature Move `kraken.core.lib.render_file_task` and `kraken.core.lib.check_file_contents_task` to `kraken.std.util`kraken-build/kraken-build#56@NiklasRosenstein
Feature The `CheckFileContentsTask` will now print a diff by default if the file it checks is not up to date.kraken-build/kraken-build#56@NiklasRosenstein
Feature The `CargoSyncConfigTask` now has a `crates_io_protocol` option, which defaults to `sparse`. This means Cargo builds by default use the sparse protocol from now on.kraken-build/kraken-build#58@NiklasRosenstein
Improvement Now sets the `KRAKENW=1` environment variable to allow the Kraken-Core CLI to detect if it is run through `krakenw`.kraken-build/kraken-build#49@NiklasRosenstein
Fix Fixed passing the `-p` option to the `kraken` command by appending it to the arguments, allowing to use `krakenw query` subcommands from subdirectories.kraken-build/kraken-build#54@NiklasRosenstein
Feature Treat `# ::krakenw-root` comment in build scripts to avoid searching up higher for the project root directory.kraken-build/kraken-build#54@NiklasRosenstein
Improvement Set default verbosity of `krakenw` command to 1, ensuring that `INFO` logs are always printed.@NiklasRosenstein

0.26.1 (2023-06-20)

TypeDescriptionPRIssuesAuthor
Fix Catch potential permission error when inspecting the files on the `PATH` in `kraken.common.findpython.get_candidates()`@NiklasRosenstein

0.26.0 (2023-06-19)

TypeDescriptionPRIssuesAuthor
Improvement Use `rich`'s logging handler, add `kraken.common.exceptions` modulekraken-build/kraken-build#45@NiklasRosenstein
Breaking change Remove `deprecated_get_requirement_spec_from_file_header()` functionkraken-build/kraken-build#45@NiklasRosenstein
Breaking change Remove deprecated `Project.children()` method and deprecated `Project.subproject()` overloads.kraken-build/kraken-build#44@NiklasRosenstein
Breaking change Change `Addressable.address` into a read-only propertykraken-build/kraken-build#44@NiklasRosenstein
Improvement Make `Project` a subclass of the new `KrakenObject` classkraken-build/kraken-build#44@NiklasRosenstein
Deprecation Deprecate `Project.path` and `Project.resolve_tasks()`kraken-build/kraken-build#44@NiklasRosenstein
Deprecation Deprecated `Task.outputs`, `Task.path` and `Task.add_relationship()`kraken-build/kraken-build#44@NiklasRosenstein
Breaking change Remove `Task.capture`kraken-build/kraken-build#44@NiklasRosenstein
Feature Add `Task.depends_on()` and `Task.required_by()`kraken-build/kraken-build#44@NiklasRosenstein
Fix Move `Address.Element` class definition to the global scope, as otherwise we run into an issue with Dill deserialization where the type of `Address.elements` items is not actually the `Address.Element` type that we can access at runtime. (See https://github.com/uqfoundation/dill/issues/600).kraken-build/kraken-build#44@NiklasRosenstein
Breaking change `TaskGraph` implementation now stores `Address` keys instead of stringskraken-build/kraken-build#44@NiklasRosenstein
Breaking change Remove support for hash-comment style build requirements when resuming builds from an existing state.kraken-build/kraken-build#45@NiklasRosenstein
Improvement Move `pytest` dependency into a Poetry dependency group@NiklasRosenstein
Fix Don't wrap license or copyright holder in quoteskraken-build/kraken-build#40scott@stevenson.io
Improvement Make better use of logging and hide the logs of creating a virtual environment, upgrading Pip and installing dependencies unless the operations fail.kraken-build/kraken-build#45@NiklasRosenstein
Breaking change Remove support for specifying Kraken build script requirements in the hash-comment (#) format. Only the `buildscript()` call from `kraken.common` is now supported.kraken-build/kraken-build#45@NiklasRosenstein

0.25.0 (2023-06-19)

TypeDescriptionPRIssuesAuthor
Feature add `kraken.common.findpython` module which will be used by kraken-wrapper to find an applicable Python version per the interpreter constraint in the buildscript requirements.kraken-build/kraken-build#42@NiklasRosenstein
Improvement Set `DEFAULT_INTERPRETER_CONSTRAINT` to` >=3.10,<3.11`kraken-build/kraken-build#42@NiklasRosenstein
Improvement Now requires explicitly Python 3.10. We can enable Python 3.11 when Dill 0.3.7 is enabled. (See https://github.com/uqfoundation/dill/issues/595)kraken-build/kraken-build#42@NiklasRosenstein
Improvement Set Python version requirement to =3.10kraken-build/kraken-build#42@NiklasRosenstein
Feature Add `list-pythons` command and support for finding an appropriate Python interpreter on the current system for creating the Python build environment in the `VenvBuildEnv` manager.kraken-build/kraken-build#42@NiklasRosenstein
Improvement Add support for `KRAKENW_NO_KEYRING` environment varibalekraken-build/kraken-build#42@NiklasRosenstein

0.24.3 (2023-06-19)

TypeDescriptionPRIssuesAuthor
Improvement Add manifest_path to artifact metadata for Cargokraken-build/kraken-build#41luke.tomlin@helsing.ai

0.24.2 (2023-06-17)

TypeDescriptionPRIssuesAuthor
Fix Pass `CargoProject.build_env` to `cargoClippy` task@NiklasRosenstein

0.24.1 (2023-06-14)

TypeDescriptionPRIssuesAuthor
Improvement Return the tasks created by `cargo_fmt`kraken-build/kraken-build#39nicolas.vizzari@helsing.ai

0.24.0 (2023-06-13)

TypeDescriptionPRIssuesAuthor
Improvement Added colorful error handlingkraken-build/kraken-build#31chris.cunningham@helsing.ai
Improvement Only check the active toolchain if rustup is installedkraken-build/kraken-build#38nicolas.vizzari@helsing.ai
Improvement Add PDM python build system supportkraken-build/kraken-build#33simone.zandara@helsing.ai
Tests Force transitive `markdown-it-py` dependency to `<3.0.0` due to Mypy complaining about the newer syntax in Python 3.10 when a newer version of it would otherwise get installed (see https://github.com/python/mypy/issues/12162)@NiklasRosenstein

0.23.7 (2023-06-08)

TypeDescriptionPRIssuesAuthor
Fix disable default requirement of Rust nightlykraken-build/kraken-build#37james.baker@helsing.ai

0.23.6 (2023-06-08)

TypeDescriptionPRIssuesAuthor
Feature can specify ld_library_path for maturin buildskraken-build/kraken-build#36james.baker@helsing.ai

0.23.5 (2023-06-08)

TypeDescriptionPRIssuesAuthor
Fix Re-allow specfiying one or more tasks while also passing the `--all` flag.kraken-build/kraken-build#35@NiklasRosenstein
Improvement Add `-x` and `-X` options to the `krakenw q tree` commandkraken-build/kraken-build#35@NiklasRosenstein
Improvement The `krakenw q tree` command now includes the task status, if any (only relevant with the `--resume` flag or the `-x` or `-X` options, otherwise tasks have no status when the tree is printed)kraken-build/kraken-build#35@NiklasRosenstein
Improvement Make cargo fmt use the nightly toolchain by defaultkraken-build/kraken-build#34nicolas.vizzari@helsing.ai

0.23.4 (2023-05-19)

TypeDescriptionPRIssuesAuthor
Fix Upgrade helm dependencies when packaging a chartkraken-build/kraken-build#30callumPearce

0.20.4 (2023-05-18)

TypeDescriptionPRIssuesAuthor
Fix Fix the `dist` function which should use the artifact names when copying them to a distribution.kraken-build/kraken-build#29nicolas.trinquier@helsing.ai

0.20.3 (2023-05-17)

TypeDescriptionPRIssuesAuthor
Improvement Fix `Property.provides(X)` which should return `True` when a property is typed as `Property[List[X]]`, but did not because of a change in `typeapi` between `0.2.x` and `1.x`. This bug was introduced by https://github.com/kraken-build/kraken-core/pull/11 in version `0.12.0`.kraken-build/kraken-build#28nicolas.trinquier@helsing.ai

0.20.2 (2023-05-17)

TypeDescriptionPRIssuesAuthor
Improvement The `kraken query describe` command no longer outputs a description of _all_ tasks in the graph, but only tasks that were explicitly selected on the command-line.niklas.rosenstein@helsing.ai
Tests Add unit test for clarifying the behavior of optional elements in address resolutionniklas.rosenstein@helsing.ai
Improvement Deprecate the `Project.subproject(load)` – Instead, a new `Project.subproject(mode)` parameter was added that can be set to `"empty"`, `"execute"` or `"if-exists"`, The `"if-exists"` mode behaves exactly like the `Project.subproject(load=False)` option. A new semantic is introduced with the `"empty"` mode, which creates a sub-project but does not care if the directory associated with the project exists or if a build script exists as the script will not be executed.niklas.rosenstein@helsing.ai
Improvement `TaskGraph.trim()` will now exclude groups from the returned graph if they are empty and if they have no dependencies or all transitive dependencies are also empty groupsniklas.rosenstein@helsing.ai
Tests Add a unit test to validate the behaviour of `Context.resolve_tasks()` and the contents of the `TaskGraph` returned by `Context.get_build_graph()`niklas.rosenstein@helsing.ai
Fix Fixed the address selectors that we fall back to if no selectors are specified on the command-line: They were `[":", ":**:"]`, referencing the root projects and all it's sub-projects, when it should really be `[".", "**:"]`, which references the current project and all of it's sub-projects.niklas.rosenstein@helsing.ai
Improvement Single-path elements passed as Kraken task-address selectors are now prefixed with `**:` (recursive wildcard) even if the element contains a glob pattern, such as `lint`, `python.*` or `publish?`, making them semantically equivalent to `**:lint`, `**:python.*` and `**:publish?`, respectively.kraken-build/kraken-build#27niklas.rosenstein@helsing.ai

0.20.1 (2023-05-15)

TypeDescriptionPRIssuesAuthor
Improvement Move code for `Supplier` from `nr-stream` package to `kraken-common`niklas.rosenstein@helsing.ai
Improvement Use `kraken.common.supplier.Supplier` instead of `nr.stream.Supplier`, Remove `kraken.core.api` in favor of `kraken.core`niklas.rosenstein@helsing.ai
Improvement Replace imports from `kraken.core.api` with `kraken.core` and imports of `nr.stream.Supplier` with `kraken.common.Supplier`niklas.rosenstein@helsing.ai

0.20.0 (2023-05-13)

TypeDescriptionPRIssuesAuthor
Improvement Bump `kraken-core` to `^0.12.4` and `databind.json` to `4.2.5`.kraken-build/kraken-std#154@NiklasRosenstein
Feature Maturin: adds tooling for cross-compilation using zigkraken-build/kraken-std#145@Tpt
Fix Poetry: strips '(Activated)' from 'poetry env list --full-path' resultkraken-build/kraken-std#146@Tpt
Fix fix `mypy_stubtest` function name (was: `mypy_subtest`)kraken-build/kraken-std#153@NiklasRosenstein
Improvement When `git describe` fails, we fall back to `0.0.0-N-gSHA` where `N` is the number of commits on `HEAD`.@NiklasRosenstein