Hi,
It is a bug. Normally doit is not executed repeatedly in the same process. Might need more fixes...
The "create_after" decorator attaches some info to the function object and it is also used to track the task creation.
Following diff fixes it:
Can you please create an issue on github so this dont get lost.
diff --git a/doit/loader.py b/doit/loader.py
index 5b7f256..76ec8af 100644
--- a/doit/loader.py
+++ b/doit/loader.py
@@ -2,6 +2,7 @@
import os
import sys
+import copy
import inspect
import importlib
from collections import OrderedDict
@@ -137,7 +138,7 @@ def load_tasks(namespace, command_names=(), allow_delayed=False):
def _process_gen():
task_list.extend(generate_tasks(name, ref(), ref.__doc__))
def _add_delayed(tname):
- task_list.append(Task(tname, None, loader=delayed,
+ task_list.append(Task(tname, None, loader=copy.copy(delayed),
doc=delayed.creator.__doc__))
for name, ref, _ in funcs: