I don't like how tasks accumulate in my current task managers. This is some combination of a software problem and a life problem. Often, improving one improves the other.
I'd like for Veery to accurately prompt me to delete or push back tasks--when that's appropriate. It's not obvious how to do this: mere longevity is not the only information we need. Some low-urgency tasks that can legitimately hang around for a while; some recently-added tasks are obviously better off deleted or deferred.
I need to give this issue more careful thought before I make major architectural decisions. For now, I can implement something I know I want, more or less regardless of Veery's ultimate form: the ability to "kick" the due date of a task. The necessary work is:
Some notes on the work:
kick()to behave differently in cases where a
Task's due date had or had not passed.
datetime.now()in tests is imperfect. Eventually it will probably be necessary to use freezegun or some other time-mocking/-stubbing tool. For now, I prefer to (i) write tests more quickly and (ii) avoid dependencies. Time is hard to get right and there are always more real-world domain considerations and edge cases than you first think. It's important to test this functionality, but fine to knowingly not address the full complexity of the feature (yet).
Here's the current commit in the
 "Tracer bullet" can mean different things; what I'm using "tracer bullet" to describe here is also called by many names. Beware.
Next post: Python task manager from scratch, part 31: Adding some style