Changes#
The document records all past pytask releases and what went into them in reverse chronological order. Releases follow semantic versioning and all releases are available on PyPI and Anaconda.org.
0.3.2 - 2023-xx-xx#
pull request #345 updates the version numbers in animations.
pull request #352 publishes
db
that is required by pytask-environment.pull request #354 adds a
-f/--force
flag to execute tasks even though nothing may have changed.pull request #355 refactors a lot of things related to nodes.
pull request #357 add hashing for task files to detect changes when modification times do not match.
pull request #364 updates
update_plugin_list.py
.pull request #365 reworks the panel on the index page with sphinx-design.
pull request #366 adds light and dark logos and fixes some warnings when building the documentation.
pull request #369 fixes an error in
update_plugin_list.py
introduced by pull request #364.pull request #370 reverts the changes that turn
Node.state()
into a hook.pull request #371 renames
Node
toMetaNode
.pull request #373 adds importing task modules to
sys.modules
and fully adopting pytest’s importlib mode. Thanks to @NickCrews. (Fixes issue #374.)pull request #376 enhances the documentation for
pytask dag
.pull request #378 conditionally skips test on MacOS.
pull request #381 deprecates
@pytask.mark.parametrize
. (Closes issue #233.)
0.3.1 - 2023-12-25#
pull request #337 fixes fallback to root path when
pytask collect
orpytask clean
are used without paths.
0.3.0 - 2023-12-22#
pull request #313 refactors the configuration. INI configurations are no longer supported.
pull request #326 fixes the badge for status of the workflow.
pull request #329 adds ruff to pre-commit hooks.
pull request #330 add a guide for migrating from scripts to pytask.
pull request #332 refactors
database.py
.pull request #333 requires attrs v21.3.0 and updates the code accordingly.
pull request #334 adds
target-version
to ruff config.
0.2.7 - 2022-12-14#
pull request #307 adds Python 3.11 to the CI.
pull request #308 replaces pydot with pygraphviz.
pull request #311 fixes a link in the documentation.
pull request #311 adds refurb to pre-commit hooks.
pull request #318 clarifies an example on nested dependencies and products.
pull request #321 converts more choice options to enums.
pull request #322 replaces SVGs with animations by termynal.
pull request #325 allows to collect dynamically created tasks.
0.2.6 - 2022-10-27#
pull request #297 moves non-hook functions from
warnings.py
towarnings_utils.py
and publishes them so that pytask-parallel can import them.pull request #305 removes traces of colorama. Whatever it did should be handled by rich.
0.2.5 - 2022-08-02#
pull request #288 fixes pinning pybaum to v0.1.1 or a version that supports
tree_yield()
.pull request #289 shortens the task ids when using
pytask collect
. Fixes issue #286.pull request #290 implements a dry-run with
pytask --dry-run
to see which tasks would be executed.pull request #296 fixes a bug where the source code of the wrapped function could not be retrieved.
0.2.4 - 2022-06-28#
pull request #279 enhances some tutorials with spell and grammar checking.
pull request #282 updates the tox configuration.
pull request #283 fixes an issue with coverage and tests using pexpect +
pdb.set_trace()
.pull request #285 implements that pytask does not show the traceback of tasks that are skipped because their previous task failed. Fixes issue #284.
pull request #287 changes that all files that are not produced by a task are displayed in the error message. Fixes issue #262.
0.2.3 - 2022-05-30#
pull request #276 fixes
pytask clean
when git is not installed. Fixes issue #275.pull request #277 ignores
DeprecationWarning
andPendingDeprecationWarning
by default. Previously, they were enabled, but they should be shown when testing the project with pytest, not after the execution with pytask. Fixes issue #269.pull request #278 counts multiple occurrences of a warning instead of listing the module or task name again and again. Fixes issue #270.
0.2.2 - 2022-05-14#
pull request #267 fixes the info under the live execution table to show the total number of tasks also for pytask-parallel.
pull request #273 reworks
pytask clean
so that it ignores files tracked by git. Resolves issue #146.
0.2.1 - 2022-04-28#
pull request #259 adds an
.svg
for profiling tasks.pull request #261 adds a config file option to sort entries in live table
pull request #262 allows pytask to capture warnings. Here is the guide.
0.2.0 - 2022-04-14#
pull request #211 allows for flexible dependencies and products which can be any pytree of native Python objects as supported by pybaum.
pull request #227 implements
task.kwargs
as a new way for a task to hold parametrized arguments. It also implements_pytask.models.CollectionMetadata
to carry parametrized arguments to the task class.pull request #228 removes
task.pytaskmark
and moves the information to_pytask.models.CollectionMetadata.markers
.pull request #229 implements a new loop-based approach to parametrizations using the
@pytask.mark.task
decorator.pull request #230 implements
_pytask.logging._TimeUnit
as atyping.NamedTuple
for better typing.pull request #232 moves the documentation to MyST.
pull request #234 removes
MetaTask
. There is onlypytask.Task
.pull request #235 refactors the utility functions for dealing with marks in
_pytask.mark_utils
. (Closes issue #220.)pull request #236 refactors
_pytask.collect
and places shared functions in_pytask.collect_utils
.pull request #237 publish more functions.
pull request #238 allows any order of decorators with a
@pytask.mark.task
decorator.pull request #239 adds a warning on globals for parametrizations and some fixes.
pull request #241 allows parametrizing over single dicts.
pull request #242 removes tasks from global
_pytask.task_utils.COLLECTED_TASKS
to avoid re-collection when the programmatic interface is used.pull request #243 converts choice options to use enums instead of simple strings.
pull request #245 adds choices on the command line to the help pages as metavars and show defaults.
pull request #246 formalizes choices for
click.Choice
toenum.Enum
.pull request #252 adds a counter at the bottom of the execution table to show how many tasks have been processed.
pull request #253 adds support for
pyproject.toml
.pull request #254 improves test coverage, fixes a bug, and improves the deprecation message for the configuration.
pull request #255 converts the readme to markdown and multiple pngs to svgs.
pull request #256 adds even more svgs and scripts to generate them to the documentation and other improvements.
0.1.9 - 2022-02-23#
pull request #197 publishes types, and adds classes and functions to the main namespace.
pull request #217 enhances the tutorial on how to set up a project.
pull request #218 removes
depends_on
andproduces
from the task function when parsed.pull request #219 removes some leftovers from pytest in
Mark
.pull request #221 adds more test cases for parametrizations.
pull request #222 adds an automated Github Actions job for creating a list pytask plugins.
pull request #225 fixes a circular import noticeable in plugins created by pull request #197.
pull request #226 fixes a bug where the number of items in the live table during the execution is not exhausted. (Closes issue #223.)
0.1.8 - 2022-02-07#
pull request #210 allows
__tracebackhide__
to be a callable that accepts the current exception as an input. Closes issue #145.pull request #213 improves coverage and reporting.
pull request #215 makes the help pages of the CLI prettier.
0.1.7 - 2022-01-28#
pull request #153 adds support for Python 3.10 which requires pony >= 0.7.15.
pull request #192 deprecates Python 3.6.
pull request #209 cancels previous CI jobs when a new job is started.
0.1.6 - 2022-01-27#
pull request #191 adds a guide on how to profile pytask to the developer’s guide.
pull request #192 deprecates Python 3.6.
pull request #193 adds more figures to the documentation.
pull request #194 updates the
README.rst
.pull request #196 references the two new cookiecutters for projects and plugins.
pull request #198 fixes the documentation of
@pytask.mark.skipif
. (Closes issue #195)pull request #199 extends the error message when paths are ambiguous on case-insensitive file systems.
pull request #200 implements the
@pytask.mark.task
decorator to mark functions as tasks regardless of whether they are prefixed withtask_
or not.pull request #201 adds tests for
_pytask.mark_utils
.pull request #204 removes internal traceback frames from exceptions raised somewhere in pytask.
pull request #208 fixes the best practices guide for parametrizations.
pull request #209 cancels previous CI runs automatically.
pull request #212 add
.coveragerc
and improve coverage.
0.1.5 - 2022-01-10#
pull request #184 refactors
reduce_node_name()
and shorten task names in many places.pull request #185 fix issues with drawing a graph and adds the
--rank-direction
to change the direction of the DAG.pull request #186 enhance live displays by deactivating auto-refresh, among other things.
pull request #187 allows to enable and disable showing tracebacks and potentially different styles in the future with
show_traceback=True|False
.pull request #188 refactors some code related to
_pytask.enums.ExitCode
.pull request #189 do not display a table in the execution if no task was run.
pull request #190 updates the release notes.
0.1.4 - 2022-01-04#
pull request #153 adds support and testing for Python 3.10.
pull request #159 removes files for creating a conda package which is handled by conda-forge.
pull request #160 adds rudimentary typing to pytask.
pull request #161 removes a workaround for pyreadline which is also removed in pytest 7.
pull request #163 allow forward slashes in expressions and marker expressions.
pull request #164 allows to use backward slashes in expressions and marker expressions.
pull request #167 makes small changes to the docs.
pull request #172 embeds URLs in task ids. See
editor_url_scheme
for more information.pull request #173 replaces
ColorCode
with custom rich themes.pull request #174 restructures loosely defined outcomes to clear
enum.Enum
.pull request #176 and pull request #177 implement a summary panel that holds aggregate information about the number of successes, fails and other status.
pull request #178 adds stylistic changes like reducing tasks ids even more and dimming the path part.
pull request #180 fixes parsing relative paths from the configuration file.
pull request #181 adds correct formatting of running tasks.
pull request #182 introduces that only the starting year is displayed in the license following https://hynek.me/til/copyright-years.
pull request #183 enables tracing down the source of a function through decorators.
0.1.3 - 2021-11-30#
pull request #157 adds packaging to the dependencies of the package.
pull request #158 converts time units to the nearest integer.
0.1.2 - 2021-11-27#
pull request #135 implements handling of version in docs as proposed by setuptools-scm.
pull request #142 removes the display of skipped and persisted tasks from the live execution table for the default verbosity level of 1. They are displayed at 2.
pull request #144 adds tryceratops to the pre-commit hooks for catching issues with exceptions.
pull request #151 adds a limit on the number of items displayed in the execution table which is configurable with
n_entries_in_table
in the configuration file.pull request #152 makes the duration of the execution readable by humans by separating it into days, hours, minutes and seconds.
pull request #155 implements functions to check for optional packages and programs and raises errors for requirements to draw the DAG earlier.
pull request #156 adds the option
show_errors_immediately
to print/show errors as soon as they occur. Resolves issue #150.
0.1.1 - 2021-08-25#
pull request #138 changes the default
verbosity
to1
which displays the live table during execution and0
display the symbols for outcomes (e.g..
,F
,s
).pull request #139 enables rich’s auto-refresh mechanism for live objects which causes almost no performance penalty for the live table compared to the symbolic output.
0.1.0 - 2021-07-20#
pull request #106 implements a verbose mode for the execution which is available with
pytask -v
and shows a table with running and completed tasks. It also refines the collection status.pull request #116, pull request #117, and pull request #123 fix issue #104 which prevented to skip tasks with missing dependencies.
pull request #118 makes the path to the configuration in the session header os-specific.
pull request #119 changes that when marker or keyword expressions are used to select tasks, also the predecessors of the selected tasks will be executed.
pull request #120 implements that a single
KeyboardInterrupt
stops the execution and previously collected reports are shown. Fixes issue #111.pull request #121 add skipped and persisted tasks to the execution footer.
pull request #127 make the table during execution the default. Silence pytask with negative verbose mode integers and increase verbosity with positive ones.
pull request #129 allows to hide frames from the traceback by using
__tracebackhide__ = True
.pull request #130 enables rendering of tracebacks from subprocesses with rich.
0.0.16 - 2021-06-25#
pull request #113 fixes error when using
pytask --version
with click v8.
0.0.15 - 2021-06-24#
pull request #80 replaces some remaining formatting using
pprint
withrich
.pull request #81 adds a warning if a path is not correctly cased on a case-insensitive file system. This facilitates cross-platform builds of projects. Deactivate the check by setting
check_casing_of_paths = false
in the configuration file. Seecheck_casing_of_paths
for more information.pull request #83 replaces
versioneer
withsetuptools_scm
.pull request #84 fixes an error in the path normalization introduced by pull request #81.
pull request #85 sorts collected tasks, dependencies, and products by name.
pull request #87 fixes that dirty versions are displayed in the documentation.
pull request #88 adds the
pytask profile
command to show information on tasks like duration and file size of products.pull request #93 fixes the display of parametrized arguments in the console.
pull request #94 adds
show_locals
which allows to print local variables in tracebacks.pull request #96 implements a spinner to show the progress during the collection.
pull request #99 enables color support in WSL and fixes
show_locals
during collection.pull request #101 implement to visualize the project’s DAG. pull request #108 refines the implementation.
pull request #102 adds an example if a parametrization provides not the number of arguments specified in the signature.
pull request #105 simplifies the logging of the tasks.
pull request #107 adds and new hook
pytask_unconfigure()
which makes pytask returnpdb.set_trace()
at the end of a session which allows to usebreakpoint()
inside test functions using pytask.pull request #109 makes pytask require networkx>=2.4 since previous versions fail with Python 3.9.
pull request #110 adds a “New Features” section to the
README.rst
.
0.0.14 - 2021-03-23#
pull request #74 reworks the formatting of the command line output by using
rich
. Due to the new dependency, support for pytask with Python <3.6.1 on PyPI and with Python <3.7 on Anaconda will end.pull request #76 fixes issue #75 which reports a bug when a closest ancestor cannot be found to shorten node names in the CLI output. Instead a common ancestor is used.
0.0.13 - 2021-03-09#
pull request #72 adds conda-forge to the README and highlights importance of specifying dependencies and products.
pull request #62 implements the
pytask.mark.skipif()
marker to conditionally skip tasks. Many thanks to @roecla for implementing this feature and a warm welcome since she is the first pytask contributor!
0.0.12 - 2021-02-27#
pull request #55 implements miscellaneous fixes to improve error message, tests and coverage.
pull request #59 adds a tutorial on using plugins and features plugins more prominently.
pull request #60 adds the MIT license to the project and mentions pytest and its developers.
pull request #61 adds many changes to the documentation.
pull request #65 adds versioneer to pytask and pull request #66 corrects the coverage reports which were deflated due to the new files.
pull request #67 prepares pytask to be published on PyPI and pull request #68 fixes the pipeline, and pull request #69 prepares releasing v0.0.12 and adds new shields.
0.0.11 - 2020-12-27#
pull request #45 adds the option to stop execution after a number of tasks has failed. Closes issue #44.
pull request #47 reduce node names in error messages while resolving dependencies.
pull request #49 starts a style guide for pytask.
pull request #50 implements correct usage of singular and plural in collection logs.
pull request #51 allows to invoke pytask through the Python interpreter with
python -m pytask
which will add the current path tosys.path
.pull request #52 allows to prioritize tasks with
pytask.mark.try_last
andpytask.mark.try_first
.pull request #53 changes the theme of the documentation to furo.
pull request #54 releases v0.0.11.
0.0.10 - 2020-11-18#
pull request #40 cleans up the capture manager and other parts of pytask.
pull request #41 shortens the task ids in the error reports for better readability.
pull request #42 ensures that lists with one element and dictionaries with only a zero key as input for
@pytask.mark.depends_on
and@pytask.mark.produces
are preserved as a dictionary inside the function.
0.0.9 - 2020-10-28#
pull request #31 adds
pytask collect
to show information on collected tasks.pull request #32 fixes
pytask clean
.pull request #33 adds a module to apply common parameters to the command line interface.
pull request #34 skips
pytask_collect_task_teardown
if task is None.pull request #35 adds the ability to capture stdout and stderr with the CaptureManager.
pull request #36 reworks the debugger to make it work with the CaptureManager.
pull request #37 removes
reports
argument from hooks related to task collection.pull request #38 allows to pass dictionaries as dependencies and products and inside the function
depends_on
andproduces
become dictionaries.pull request #39 releases v0.0.9.
0.0.8 - 2020-10-04#
pull request #30 fixes or adds the session object to some hooks which was missing from the previous release.
0.0.7 - 2020-10-03#
pull request #25 allows to customize the names of the task files.
pull request #26 makes commands return the correct exit codes.
pull request #27 implements the
pytask_collect_task_teardown
hook specification to perform checks after a task is collected.pull request #28 implements the
@pytask.mark.persist
decorator.pull request #29 releases 0.0.7.
0.0.6 - 2020-09-12#
pull request #16 reduces the traceback generated from tasks, failure section in report, fix error passing a file path to pytask, add demo to README.
pull request #17 changes the interface to subcommands, adds
"-c/--config"
option to pass a path to a configuration file and addspytask clean
(pull request #22 as well), a command to clean your project.pull request #18 changes the documentation theme to alabaster.
pull request #19 adds some changes related to ignored folders.
pull request #20 fixes copying code examples in the documentation.
pull request #21 enhances the ids generated by parametrization, allows to change them via the
ids
argument, and adds tutorials.pull request #23 allows to specify paths via the configuration file, documents the cli and configuration options.
pull request #24 releases 0.0.6.
0.0.5 - 2020-08-12#
pull request #10 turns parametrization into a plugin.
pull request #11 extends the documentation.
pull request #12 replaces
pytest.mark
withpytask.mark
.pull request #13 implements selecting tasks via expressions or marker expressions.
pull request #14 separates the namespace of pytask to
pytask
and_pytask
.pull request #15 implements better tasks ids which consists of <path-to-task-file>::<func-name> and are certainly unique. And, it releases 0.0.5.
0.0.4 - 2020-07-22#
pull request #9 adds hook specifications to the parametrization of tasks which allows
pytask-latex
andpytask-r
to pass different command line arguments to a parametrized task and its script. Also, it prepares the release of 0.0.4.
0.0.3 - 2020-07-19#
pull request #7 makes pytask exit with code 1 if a task failed and the
skip_ancestor_failed
decorator is only applied to descendant tasks not the task itself.pull request #8 releases v0.0.3
0.0.2 - 2020-07-17#
pull request #2 provided multiple small changes.
pull request #3 implements a class which holds the execution report of one task.
pull request #4 makes adjustments after moving to
main
as the default branch.pull request #5 adds
pytask_add_hooks
to add more hook specifications and register hooks.pull request #6 releases v0.0.2.
0.0.1 - 2020-06-29#
pull request #1 combined the whole effort which went into releasing v0.0.1.