1. 13 Apr, 2016 2 commits
  2. 12 Apr, 2016 3 commits
  3. 23 Feb, 2016 1 commit
  4. 21 Feb, 2016 2 commits
  5. 20 Feb, 2016 2 commits
  6. 15 Feb, 2016 1 commit
  7. 11 Feb, 2016 3 commits
  8. 04 Feb, 2016 1 commit
  9. 29 Jan, 2016 4 commits
    • Bram Schoenmakers's avatar
    • Bram Schoenmakers's avatar
      Import directed graph module on demand · 26309f6e
      Bram Schoenmakers authored
      26309f6e
    • Bram Schoenmakers's avatar
      Load dependency information on demand · 61253864
      Bram Schoenmakers authored
      Not all commands always need dependencies (pri, depri, ls -x), but all
      administration is still built up every time a TodoList is instantiated.
      Now, as soon as something dependency related is requested from the
      TodoList, the dependency graph and caches are initialized.
      
      A decorator is used to mark methods in TodoList that require an
      initialized graph.
      
      This change impacts the calculation of the average importance (based on
      the todo's ancestors). Importance doesn't have a notion of TodoList (and
      I would like to keep it that way), so the calculation needs access to
      the parents somehow. This was done with a parents attribute stored with
      each Todo item, carefully kept up to date by the TodoList. This is
      cumbersome, instead, now a Todo item gets a parents() method that
      obtains the parents from the TodoList that keeps the todo item.
      61253864
    • Bram Schoenmakers's avatar
      Look up parent todo items more efficiently · 2365e99d
      Bram Schoenmakers authored
      todo_by_dep_id was quite inefficient due to the linear search, calling
      Todo.tag_value() many times to fetch the dependency ID.
      
      Instead, maintain a dictionary that maps a parent ID to a todo item so
      it can be looked up more easily.
      2365e99d
  10. 28 Jan, 2016 1 commit
  11. 27 Jan, 2016 4 commits
    • Bram Schoenmakers's avatar
      Use if instead of try-except in tag methods · 014a0e22
      Bram Schoenmakers authored
      The except path is relatively often chosen, making these functions
      (still) quite slow.
      
      (Exceptions are slow in Python and they are what they are called:
      exceptions, not common cases).
      014a0e22
    • Bram Schoenmakers's avatar
      Fix typo in docstring · 5be5f5ee
      Bram Schoenmakers authored
      5be5f5ee
    • Bram Schoenmakers's avatar
      Rename variable · 10905d5d
      Bram Schoenmakers authored
      10905d5d
    • Bram Schoenmakers's avatar
      Store tags as a dictionary · ad854716
      Bram Schoenmakers authored
      Store tags in a dictionary where the key is the tag name and the value
      is a list of values for that tag.
      
      This makes tag operations much quicker (especially TodoBase::has_tag()
      and TodoBase::tag_values()). They made quite a dent in execution time
      with heavy todo.txt files with many tags, due to the numerous list
      comprehensions that took place.
      ad854716
  12. 25 Jan, 2016 2 commits
  13. 22 Jan, 2016 1 commit
  14. 11 Jan, 2016 2 commits
  15. 08 Jan, 2016 1 commit
  16. 06 Jan, 2016 1 commit
  17. 05 Jan, 2016 1 commit
    • Bram Schoenmakers's avatar
      Use raise ... from syntax to link exceptions · 75ee98ac
      Bram Schoenmakers authored
      Python handles one exception at a time (per thread), raising a new
      exception while still handling another one will result in run-time
      errors. By linking the second exception to the original one, Python will
      handle it correctly.
      
      This was encountered while developing the alternative column UI, which
      bailed out on completing a todo item with (invalid) child todo items.
      75ee98ac
  18. 04 Jan, 2016 1 commit
  19. 30 Dec, 2015 1 commit
  20. 29 Dec, 2015 1 commit
  21. 20 Dec, 2015 1 commit
  22. 19 Dec, 2015 4 commits
    • Bram Schoenmakers's avatar
      Fix typos · c1efa7e5
      Bram Schoenmakers authored
      c1efa7e5
    • Bram Schoenmakers's avatar
      Version bump. · 1caf1a59
      Bram Schoenmakers authored
      1caf1a59
    • Bram Schoenmakers's avatar
      Stop processing expressions when a match was found · e4cafc4c
      Bram Schoenmakers authored
      When a filter with a creation date matches, don't process expression
      with the remaining filters.
      e4cafc4c
    • Bram Schoenmakers's avatar
      Add filters for completion date and creation date · 9c2024ea
      Bram Schoenmakers authored
      Addresses issue #86 which requested filters on completion date. The
      following tags are recognized:
      
      * create
      * created
      * creation
      * complete
      * completed
      * completion
      
      They are specific ordinal tag filters, except that these tags don't
      exist in a todo item.
      
      Filtering on completion date does not work when completed items are
      automatically archived. Archived items are not read when invoking `ls`,
      so the done.txt file should be read as the main file instead:
      
          topydo -t done.txt ls complete:today
      
      Also in this commit, decouple ExpressionCommand from Filter class a bit.
      
      The expression class shouldn't bother which expressions belong to which
      filter classes, let the Filter module handle that.
      9c2024ea