Several new features added to pyGTD

I recently added a bunch of new features to pyGTD:

  • Contexts
    In the status line of a task, you can now tell pyGTD the appropriate context for that task. For example, use "L=@Work" (L stands for Location -- I'm running out of good abbreviations) to tell pyGTD that the task should be done at work. You can specify multiple contexts by separating them with commas. Contexts are inherited by subtasks unless you override them. The default context is the empty string (""), and context names are not case-sensitive.

    In addition, you can now use -c or --context in the command line to tell pyGTD which contexts to include in the todo list you're generating. Again, multiple contexts can be provided, separated by commas. If you want to include tasks with no specified context, include an extra comma at the beginning or end of your context list (e.g., "-c,@Work").

  • Start date
    In addition to being able to specify a lead time for a task (e.g., "S=3D") in the status line, you can also specify a specific start date with "S=yyyy-mm-dd". I use this all the time as an electronic "tickler file".

  • Adding new subtasks in the todo list
    You can add new subtasks to a task in your todo list by typing them directly into the notes field for that task. When you run pyGTD, they will be added back into the appropriate project file, and the new tasks will show up in your todo list as appropriate.

  • Prerequisites
    You can now specify prerequisite tasks that must be completed before a particular task will appear in the todo list. Prerequisites are specified by the ID of the prerequisite task (e.g., "PRE=3,4" means that tasks 3 and 4 must be complete before the specified task will become active), and if the prerequisite is in a different project file, the syntax is path/to/file|ID (e.g., "PRE=c:/gtd/projects/gtd.txt|5"). I try hard not to use this feature, but some people find it indispensible.

  • Make edits in either the todo or the project file
    You'll notice that a four digit hex number is added as a CRC to each status line (e.g., "CRC=2A43"). This enables you to make changes to your tasks in either the project file or in the todo list, and pyGTD can tell which one has changed.

  • Project comments
    Any lines of text at the top of a project file before the first task are treated as comments, and they are preserved. This is a good place to write a quick note to yourself about the goal of the project, and how you'll know when you're done.

  • Process multiple todo lists at once
    Currently if you use the command-line interface to pyGTD, you must call pyGTD once for every todo list you want to generate (e.g., once for each context). As an advanced user feature, I've added an interface to the todo() function in gtd.py that allows you to generate all your todo lists in one pass, which is a lot faster. I'm planning to write a post about how I use pyGTD to implement Getting Things Done, so if you wait for that, more details will be provided.

I also completely revamped the way that pyGTD parses task and project files, moving completely to regular expressions from the state-machine hodge-podge I used before. This should make things much more robust.

I have not updated the documentation yet, so consider this post a documentation addendum.

Finally, I can now confirm that pyGTD runs unmodified under Windows, Linux, and MacOS. As long as you have python 2.3 or better, you're set.

If you're already using pyGTD, you may want to download a fresh copy (23k). And don't forget the original documentation.

Posted on 2005-Jan-07 | GTD | Link |