Changes¶
0.37.0 (unreleased)¶
Ref #409: make cloudpickle optional, and not installed by default on PyPy.
fix: make sure io.capture respects out/err option.
0.36.0 (2022-04-22)¶
BACKWARD INCOMPATIBLE: remove deprecated doit.cmd_base.py:TaskLoader.
BACKWARD INCOMPATIBLE: does not use not maintained toml package, use tomli instead.
BACKWARD INCOMPATIBLE: remove auto command, use plugin doit-auto1.
BACKWARD INCOMPATIBLE: plugins use importlib-metadata instead of setuptools.
BACKWARD INCOMPATIBLE: remove extra install doit[plugins].
BACKWARD INCOMPATIBLE: UnmetDependency, SetupError and DependencyError as sub-class of TaskError.
DEPRECATED: CatchedException, renamed to BaseFail.
api.run_tasks(): support pos_arg.
add reporter error-only
add attribute report to BaseFail. Controls if reporter should create own output for failures. If False relies on underlying action to output failure information.
0.35.0 (2022-04-07)¶
BACKWARD INCOMPATIBLE: Drop Python 3.6 support.
BACKWARD INCOMPATIBLE: Drop Python 3.7 support.
BACKWARD INCOMPATIBLE: create_doit_tasks does NOT automatically ignored when processing class.
Fix #344: Command clean: add support for wildcard *.
Add TaskLoader2.task_opts attribute. This is passed to task creator and also as task config.
CmdOption add metavar attribute.
Fix #156: actions.py:Writer, add support for fileno(). Taken from original stream.
create_doit_tasks supports basename attribute.
Task: add attribute io; add io.capture.
add api.py::run_tasks()
0.34.2 (2022-02-18)¶
Fix #416: compare task_params using is operator.
0.34.1 (2022-01-12)¶
Fix #410: if TOML lib not present, just print warning instead of raising error.
0.34.0 (2021-12-11)¶
BACKWARD INCOMPATIBLE: Drop Python 3.5 support
python 3.9 support
python 3.10 support
Fix #381: Allow Delayed tasks to be executed multiple times in same process.
Fix #382: TaskResult make sure started include microsecond as decimal number.
Fix #387: Pass pickled attributes, err and out when a task fails in multi processes context.
Fix #398: Add setuptools as` extras_require`.
Fix #373: read DOIT_CONFIG from TOML.
Fix #405: Add Task attribute meta.
Fix #349: Handle passing task args in “single” task execution.
Fix #377: cmd forget, added options –disable-default and –all.
Fix #307: Allows create_after decorator to be used on methods.
Fix #311: Add @task_params decorator.
0.33.1 (2020-09-04)¶
fix sdist distribution to include all files
0.33.0 (2020-09-01)¶
python 3.8 support
BACKWARD INCOMPATIBLE: Drop Python 3.4 support
fix error installing with setuptools 50.0
0.32.0 (2019-12-10)¶
python 3.7 support
BACKWARD INCOMPATIBLE: Changed signature of DoitCommand
BACKWARD INCOMPATIBLE: Fix #254: Python actions keywords with task metadata dependencies, targets and changed are a copied list
BACKWARD INCOMPATIBLE: Custom backend initializer added parameter
codec_cls
Fix #204: Accept loader command options before command name
Fix #240: Command run: with –pdb drop into pdb on unhandled exception on PythonAction
Fix #203: Allow configuration of dodo.py file name with env var DOIT_FILE
- Fix #113: tools.config_changed deals with nested dictionaries.
Using json instead of repr.
Fix #261: help organize command options in sections, and improve formatting.
Fix #267: doit list now has a –sort parameter to determine the order in which the tasks are listed.
Make it possible to use a custom encoder when using config_changed with a dict.
Add configuration DOIT_CONFIG action_string_formatting to control command action formatter.
Fix result_dep, use result after its execution
Fix #286: Support functools.partial on tasks’ dict metadata task.title
Fix #285: clean command, remove targets in reverse lexical order
Deprecated TaskLoader in favor of TaskLoader2, which separates loading doit’s configuration from loading tasks.
Fix #288: Added doit.globals.Globals.dep_manager to access dependency manager during all task processing phases.
Fix #98: Support custom backend codecs so that python-action return values which are not JSON serializable may be used.
Fix #283: set task options from doit.cfg
0.31.1 (2018-03-18)¶
Fix #249 reporter bug when using –continue option
Fix #248 test failures of debian when using GDBM
Fix #164 get_var fails on multiprocess execution on Windows
Fix #245 custom clean action takes dry-run into account
0.31.0 (2018-02-25)¶
BACKWARD INCOMPATIBLE: Drop Python 3.3 support
Fix #171 Passing environment variables to CmdAction
Fix #184 parametrize script name
CmdParse now support getting values from OS environment variables
option seek_file control by ENV var DOIT_SEEK_FILE
#192 ipython extension uses load_ipython_extension
#218 clean with option –forget can be used to also forget about cleaned tasks
Fix strace command (seems strace output was modified)
Fix #224: use mock from stdlib
#227: enhancements to info command
Fix #197: improve error message for invalid clean and teardown task params
Fix #211: do not display traceback for error when missing file_dep
Task verbosity has precedence over verbosity from config
Fix #140: add failure-verbosity. ConsoleReporter, by default, do not print stderr twice.
Fix #155: pass selected_tasks to Reporter.initialize()
Fix #221: do not leak meta arguments to actions kwargs
Fix #202: help command display option’s name used on config
Fix #209: fix clean ordering, and following implicit task_deps
Fix: list of sub-tasks do not include non-related task_dep
Internal: Removed Task.is_subtask use Task.subtask_of instead
0.30.3 (2017-02-20)¶
Revert usage of setuptools environment markers (feature too new)
0.30.2 (2017-02-16)¶
Fix dependency on pathlib from PyPi
0.30.1 (2017-02-16)¶
Fix GH-#159 KeyError on doit list –status when missing file dependency
add python3.6 support
0.30.0 (2016-11-22)¶
BACKWARD INCOMPATIBLE: #112 drop python2 compatibility
GH-#94: option to read output from CmdAction line or byte buffered
GH-#114: file_dep, targets and CmdAction support pathlib.
fix GH-#100: make cmd completion output deterministic
fix GH-#99: positional argument on tasks not specified from cmd-line
- fix GH-#97: list command does not display task-doc for DelayedTask
when creates is specified
fix GH-#131: race condition in doit.tools.create_folder
fix auto command on OS-X systems
fix GH-#117: Give error when user tries to use equal sign on task name
0.29.0 (2015-08-16)¶
BACKWARD INCOMPATIBLE: revert - result_dep to create an implicit task_dep
fix GH-#59: command list issue with unicode names
fix GH-#72: cmd completion escaping of apostrophes in zsh
fix GH-#74: Task action’s handle python3 callables with keyword only args
fix GH-#50: Executing tasks in parallel (multi-process) fails on Windows
fix GH-#71 #92: Better error messages for invalid command line tasks/commands
fix issue with –always-execute and setup tasks
GH-#67: multiprocess runner handles closures in tasks (using cloudpickle)
GH-#58: add DelayedLoader parameter target_regex
GH-#30: add DelayedLoader parameter creates
GH-#58: cmd Run add option –auto-delayed-regex
GH-#24: cmd info add option –status show reason a task is not up-to-date
GH-#66: cmd auto support custom ( user specified ) commands to be executed after each task execution
GH-#61: speed up sqlite3 backend (use internal memory cache)
0.28.0 (2015-04-22)¶
BACKWARD INCOMPATIBLE: signature for custom DB backend changed
BACKWARD INCOMPATIBLE: DoitMain API change
BACKWARD INCOMPATIBLE: Command API change
BACKWARD INCOMPATIBLE: default reporter renamed to console
GH-#25: Add a reset-dep command to recompute dependencies state
GH-#22: Allow to customize how file_dep are checked
GH-#31: Add IPython %doit magic-function loading tasks from its global namespace
read configuration options from INI files
GH-#32 plugin system
plugin support: COMMAND - add new commands
plugin support: LOADER - add custom task loaders
plugin support: REPORTER - add custom reporter for run command
plugin support: BACKEND - add custom DB persistence backend
GH-#36 PythonAction recognizes returned TaskError or TaskFailed
GH-#37 CmdParse support for arguments of type list
GH-#47 CmdParse support for choices
fix issue when using unicode strings to specify minversion on python 2
fix GH-#27 auto command in conjunction with task arguments
fix GH-#44 Fix the list -s command when result_dep is used
fix GH-#45 make sure all uptodate checks are executed (no short-circuit)
0.27.0 (2015-01-30)¶
BACKWARD INCOMPATIBLE: drop python 2.6 support
BACKWARD INCOMPATIBLE: removed unmaintained genstandalone script
- BACKWARD INCOMPATIBLE: removed runtests.py script and support to run
tests through setup.py
- BACKWARD INCOMPATIBLE: result_dep creates an implicit setup
(was task_dep)
BACKWARD INCOMPATIBLE: GH-#9 getargs creates an implicit result_dep
- BACKWARD INCOMPATIBLE: CmdAction would always decode process output
using errors=’strict’ default changed to replace
allow task-creators to return/yield Task instances
fix GH-#14: add support for delayed task creation
fix GH-#15: auto (linux) inotify also listen for MOVE_TO events
GH-#4 CmdAction added parameters encoding and decode_error
GH-#6: loader.task_loader() accepts methods as task creators
0.26.0 (2014-08-30)¶
moved development to git/github
uptodate callable “magic” arguments task and values are now optional
added command info to display task metadata
command clean smarter execution order
remove strace short option -k because it conflicts with run option
fix zsh tab-completion script when not doit script
fix #79. Use setuptools and entry_points
order of yielded tasks is preserved
#68. pass positional args to tasks
fix tab-completion on BASH for sub-commands that take file arguments
0.25.0 (2014-03-26)¶
BACKWARD INCOMPATIBLE: use function doit.get_initial_workdir() instead of variable doit.initial_workdir
DEPRECATED tools.InteractiveAction renamed to tools.LongRunning
fix: strace raises InvalidCommand instead of using assert
#28: task uptodate support string to be executed as shell command
added tools.Interactive for use with interactive commands
#69: added doit.run() to make it easier to turn a dodo file into executable
#70: added option “–pdb” to command run
added option “–single” to command run
include list of file_dep as an implicit dependency
0.24.0 (2013-11-24)¶
reporter added initialize()
cmd list: added option –template
dodo.py can specify minimum required doit version with DOIT_CONFIG[‘minversion’]
#62: added the absolute path from which doit is invoked doit.initial_workdir
fix #36: added method isatty() to action.Writer
added command tabcompletion for bash and zsh
fix #56: allow python actions to have default values for task parameters
0.23.0 (2013-09-20)¶
support definition of group tasks using basename without any task
added task property watch to specific extra files/folders in auto command
CmdAction support for all arguments of subprocess.Popen, but stdout and stderr
added command option -k as short for –seek-file
task action can be specified as a list of strings (executed using subprocess.Popen shell=False)
fix #60: result of calc_dep only considered if not run yet
fix #61: test failures involving DBM
fix: do not allow duplicate task names
0.22.1 (2013-08-04)¶
fix reporter output in py3 was being displayed as bytes instead of string
fix pr#12 read file in chunks when calculating MD5
fix #54 - remove distribute bootstrapping during installation
0.22.0 (2013-07-05)¶
fix #49: skip unicode tests on systems with non utf8 locale
fix #51: bash completion does not mess up with global COMP_WORDBREAKS
fix docs spelling and added task to check spelling
fix #47: Task.options can always be accessed from uptodate code
fix #45: cmd forget, added option -s/–follow-sub to forget task_dep too
0.21.1 (2013-05-21)¶
fix tests on python3.3.1
fix race condition on CmdAction (affected only python>=3.3.1)
0.21.0 (2013-04-29)¶
fix #38: doit.tools.create_folder() raise error if file exists in path
create_doit_tasks not called for unbound methods
support execution using “python -m doit”
fix #33: Failing to clean a group of task(s) with sub-tasks
python-actions can take a magic “task” parameter as reference to task
expose task.clean_targets
tools.PythonInteractiveAction saves “result” and “values”
fix #40. added option to use threads for parallel running of tasks
same code base for python 2 & 3 (no need to use tool 2to3)
add sqlite3 DB backend
added option to select backend
0.20.0 (2013-01-09)¶
added command dumpdb
added CmdAction.save_out param
CmdAction support for callable that returns a command string
BACKWARD INCOMPATIBLE getargs for a group task gets a dict where each key is the name of subtasks (previously it was a list)
added command strace
cmd auto run tasks on separate process
support unicode for task name
0.19.0 (2012-12-18)¶
support for doit help <task-name>
added support to load tasks using create_doit_tasks
dropped python 2.5 support
0.18.1 (2012-12-03)¶
fix bug cmd option –continue not being recognized
0.18.0 (2012-11-27)¶
remove DEPRECATED Task.insert_action, result_dep and getargs using strings
fix #10 –continue does not execute tasks that have failed dependencies
fix –always-execute does not execute “ignored” tasks
fix #29 python3 cmd-actions issue
fix #30 tests pass on all dbm backends
API to add new sub-commands to doit
API to modify task loader
API to make dodo.py executable
added ZeroReporter
0.17.0 (2012-09-20)¶
fix #12 Action.out and Action.err not set when using multiprocessing
fix #16 fix forget command on gdbm backend
fix #14 improve parallel execution (better process utilization)
fix #9 calc_dep create implicit task_dep if a file_dep returned is a also a target
added tools.result_dep
fix #15 tools.result_dep supports group-tasks
DEPRECATE task attribute result_dep (use tools.result_dep)
DEPRECATE getargs specification using strings (must use 2-element tuple)
several changes on uptodate
DEPRECATE Task.insert_action (replaced by Task.value_savers)
fix #8 clean cleans all subtasks from a group-task
fix #8 clean added flag –all to clean all tasks
fix #8 clean when no task is specified set –clean-dep and clean default tasks
0.16.1 (2012-05-13)¶
fix multiprocessing/parallel bug
fix unicode bug on tools.config_changed
convert tools uptodate stuff to a class, so it can be used with multi-processing
0.16.0 (2012-04-23)¶
added task parameter
basename
added support for task generators yield nested python generators
doit
process return value3
in case tasks do start executing (reporter is not used)task parameter
getargs
take a tuple with 2 values (task_id, key_name)DEPRECATE
getargs
being specified as <task_id>.<key_name>getargs
can take all values from task if specified as (task_id, None)getargs
will pass values from all sub-tasks if specified task is a group taskresult_dep on PythonAction support checking for dict values
added
doit.tools.PythonInteractiveAction
0.15.0 (2012-01-10)¶
added option –db-file (#909520)
added option –no-continue (#586651)
added genstandalone.py to create a standalone
doit
script (#891935)fix doit.tools.set_trace to not modify sys.stdout
0.14.0 (2011-11-05)¶
added tools.InteractiveAction (#865290)
bash completion script
sub-command list: tasks on alphabetical order, better formatting (#872829)
fix
uptodate
to accept instance methods callables (#871967)added command line option
--seek-file
added
tools.check_unchanged_timestamp
(#862606)fix bug subclasses of BaseAction should get a task reference
0.13.0 (2011-07-18)¶
performance speed improvements
fix bug on unicode output when task fails
ConsoleReporter does not output task’s title for successful tasks that start with an
_
added
tools.config_changed
(to be used withuptodate
)teardown
actions are executed in reverse order they were registeredadded
doit.get_var
to get variables passed from command linegetargs creates implicit “setup” task not a “task_dep”
0.12.0 (2011-05-29)¶
fix bug #770150 - error on task dependency from target
fix bug #773579 - unicode output problems
task parameter
uptodate
accepts callablesdeprecate task attribute run_once. use tools.run_once on uptodate instead
added doit.tools.timeout
0.11.0 (2011-04-20)¶
no more support for python2.4
support for python 3.2
fix bug on unicode filenames & unicode output (#737904)
fix bug when using getargs together with multiprocess (#742953)
fix for dumbdbm backend
fix task execution order when using “auto” command
fix getargs when used with sub-tasks
fix calc_dep when used with “auto” command
“auto” command now support verbosity control option
0.10.0 (2011-01-24)¶
add task parameter “uptodate”
add task parameter “run_once”
deprecate file_dep bool values and None
fix issues with error reporting for JSON Reporter
“Reporter” API changes
“.doit.db” now uses a DBM file format by default (speed optimization)
0.9.0 (2010-06-08)¶
support for dynamic calculated dependencies “calc_dep”
support for user defined reporters
support “auto” command on mac
fix installer on mac. installer aware of different python versions
deprecate ‘dependencies’. use file_dep, task_dep, result_dep.
0.8.0 (2010-05-16)¶
parallel execution of tasks (multi-process support)
sub-command “list” option “–deps”, show list of file dependencies
select task by wildcard (fnmatch) i.e. test:folderXXX/*
task-setup can be another task
task property “teardown” substitute of setup-objects cleanup
deprecate setup-objects
0.7.0 (2010-04-08)¶
configure options on dodo file (deprecate DEFAULT_TASKS)(#524387)
clean and forget act only on default tasks (not all tasks) (#444243)
sub-command “clean” option “clean-dep” to follow dependencies (#444247)
task dependency “False” means never up-to-date, “None” ignored
sub-command “list” by default do not show tasks starting with an underscore, added option (-p/–private)
new sub-command “auto”
0.6.0 (2010-01-25)¶
improve (speed optimization) of check if file modified (#370920)
sub-command “clean” dry-run option (-n/–dry-run) (#444246)
sub-command “clean” has a more verbose output (#444245)
sub-command “list” option to show task status (-s/–status) (#497661)
sub-command “list” filter tasks passed as positional parameters
tools.set_trace, PDB with stdout redirection (#494903)
accept command line optional parameters passed before sub-command (#494901)
give a clear error message if .doit.db file is corrupted (#500269)
added task option “getargs”. actions can use computed values from other tasks (#486569)
python-action might return a dictionary on success
0.5.1 (2009-12-03)¶
fix. task-result-dependencies should be also added as task-dependency to force its execution.
0.5.0 (2009-11-30)¶
task parameter ‘clean’ == True, cleans empty folders, and display warning for non-empty folders
added command line option –continue. Execute all tasks even if tasks fails
added command line option –reporter to select result output reporter
added executed-only reporter
added json reporter
support for task-result dependency #438174
added sub-command ignore task
added command line option –outfile. write output to specified file path
added support for passing arguments to tasks on cmd line
added command line option –dir (-d) to set current working directory
removed dodo-sample sub-command
added task field ‘verbosity’
added task field ‘title’
modified default way a task is printed on console (just show “. name”), old way added to doit.tools.task_title_with_actions
0.4.0 (2009-10-05)¶
deprecate anything other than a boolean values as return of python actions
sub-cmd clean (#421450)
remove support for task generators returning action (not documented behavior)
setup parameter for a task should be a list - single value deprecated (#437225)
PythonAction support ‘dependencies’, ‘targets’, ‘changed’ parameters
added tools.create_folder (#421453)
deprecate folder-dependency
CmdActions reference to dependencies, targets and changed dependencies (#434327)
print task description when printing through doit list (#425811)
action as list of commands/python (#421445)
deprecate “action” use “actions”
0.3.0 (2009-08-30)¶
added subcommand “forget” to clear successful runs status (#370911)
save run results in text file using JSON. (removed dbm)
added support for DEFAULT_TASKS in dodo file
targets md5 is not checked anymore. if target exist, task is up-to-date. it also supports folders
cmd line sub-commands (#370909)
remove hashlib dependency on python 2.4
sub-cmd to create dodo template
cmd-task supports a list of shell commands
setup/cleanup for task (#370905)
0.2.0 (2009-04-16)¶
docs generated using sphinx
execute once (dependency = True)
group task
support python 2.4 and 2.6
folder dependency
0.1.0 (2008-04-14)¶
initial release