GothenburgBitFactory / tasklib

A Python library for interacting with taskwarrior databases.
http://tasklib.readthedocs.org/en/latest/
BSD 3-Clause "New" or "Revised" License
146 stars 27 forks source link

Use `task id:… op` and `task uuid:… op` for robustness #79

Open liskin opened 4 years ago

liskin commented 4 years ago

taskwiki tests uncovered that some UUID aren't parsed as UUIDs:

$ task 0003717d-b325-4fd1-8367-7492996250df export
Cannot subtract strings
$ task 0000000d-000a-0000-0000-000000000000 export
Cannot subtract strings
$ task 0000000d-0000-0000-0000-000000000000 export
The expression could not be evaluated.

This was reported to taskwarrior as https://github.com/GothenburgBitFactory/taskwarrior/issues/2306 but looking at the project activity I'm afraid it might stay unfixed for a while, and I'm not feeling confident enough to reorder the lexer myself. Therefore I suggest that tasklib use a more explicit form of filter to avoid hitting this bug.

So I'd suggest to alter https://github.com/robgolding/tasklib/blob/670836f56f8072cae112c4d1bf1b872472150b50/tasklib/backends.py#L408 (and a few other places) to include an explicit uuid: or id: prefix to help the taskwarrior parser do the correct thing.

robgolding commented 4 years ago

Thanks for the report @liskin! Your suggestion certainly seems sensible, if you're feeling up to submitting a PR that would be great and I'll review it ASAP. Otherwise it maybe a little while before this gets implemented 😅