From 5c6e3a36c122de387e004d337f5fe22748e9062a Mon Sep 17 00:00:00 2001 From: Gina Trapani Date: Thu, 17 Mar 2016 20:25:00 -0400 Subject: [PATCH] Birdseye: Tabs to spaces --- .todo.actions.d/birdseye.py | 286 ++++++++++++++++++------------------ 1 file changed, 143 insertions(+), 143 deletions(-) diff --git a/.todo.actions.d/birdseye.py b/.todo.actions.d/birdseye.py index db7427d..300740b 100755 --- a/.todo.actions.d/birdseye.py +++ b/.todo.actions.d/birdseye.py @@ -2,38 +2,38 @@ """ TODO.TXT Bird's Eye View Reporter USAGE: - birdseye.py [todo.txt] [done.txt] + birdseye.py [todo.txt] [done.txt] USAGE NOTES: - Expects two text files as parameters, each of which formatted as follows: - - One todo per line, ie, "call Mom" - - with an optional project association indicated as such: "+projectname" - - with the context in which the tasks should be completed, indicated as such: "@context" - - with the task priority optionally listed at the front of the line, in parens, ie, "(A)" + Expects two text files as parameters, each of which formatted as follows: + - One todo per line, ie, "call Mom" + - with an optional project association indicated as such: "+projectname" + - with the context in which the tasks should be completed, indicated as such: "@context" + - with the task priority optionally listed at the front of the line, in parens, ie, "(A)" - For example, 4 lines of todo.txt might look like this: + For example, 4 lines of todo.txt might look like this: - +garagesale @phone schedule Goodwill pickup - (A) @phone Tell Mom I love her - +writing draft Great American Novel - (B) smell the roses + +garagesale @phone schedule Goodwill pickup + (A) @phone Tell Mom I love her + +writing draft Great American Novel + (B) smell the roses - The done.txt file is a list of completed todos from todo.txt. + The done.txt file is a list of completed todos from todo.txt. - See more on todo.txt here: - http://todotxt.com + See more on todo.txt here: + http://todotxt.com OUTPUT: - Displays a list of: - - working projects and their percentage complete - - contexts in which open todos exist - - contexts and projects with tasks that have been prioritized - - projects which are completely done (don't have any open todos) + Displays a list of: + - working projects and their percentage complete + - contexts in which open todos exist + - contexts and projects with tasks that have been prioritized + - projects which are completely done (don't have any open todos) CHANGELOG: - 2006.07.29 - Now supports p:, p- and + project notation. Tx, Pedro! - 2006.05.02 - Released + 2006.07.29 - Now supports p:, p- and + project notation. Tx, Pedro! + 2006.05.02 - Released """ @@ -51,147 +51,147 @@ __history__ = """ """ def usage(): - print("USAGE: %s [todo.txt] [done.txt]" % (sys.argv[0], )) + print("USAGE: %s [todo.txt] [done.txt]" % (sys.argv[0], )) def printTaskGroups(title, taskDict, priorityList, percentages): - print("") - print("%s"% (title,)) - separator("-") - if not taskDict: - print("No items to list.") - else: - # sort the dictionary by value - # http://python.fyxm.net/peps/pep-0265.html - items = [(v, k) for k, v in list(taskDict.items())] - items.sort() - items.reverse() # so largest is first - items = [(k, v) for v, k in items] + print("") + print("%s"% (title,)) + separator("-") + if not taskDict: + print("No items to list.") + else: + # sort the dictionary by value + # http://python.fyxm.net/peps/pep-0265.html + items = [(v, k) for k, v in list(taskDict.items())] + items.sort() + items.reverse() # so largest is first + items = [(k, v) for v, k in items] - for item in items: - if item[0] in priorityList: - if item[0] not in percentages: - printTaskGroup(item, -1, "*") - else: - printTaskGroup(item, percentages[item[0]], "*") + for item in items: + if item[0] in priorityList: + if item[0] not in percentages: + printTaskGroup(item, -1, "*") + else: + printTaskGroup(item, percentages[item[0]], "*") - for item in items: - if item[0] not in priorityList: - if item[0] not in percentages: - printTaskGroup(item, -1, " ") - else: - printTaskGroup(item, percentages[item[0]], " ") + for item in items: + if item[0] not in priorityList: + if item[0] not in percentages: + printTaskGroup(item, -1, " ") + else: + printTaskGroup(item, percentages[item[0]], " ") def printTaskGroup(p, pctage, star): - if pctage > -1: - progressBar = "" - numStars = int(pctage//10) - progressBar = "=" * numStars - numSpaces = 10 - numStars - for n in range(numSpaces): - progressBar += " " + if pctage > -1: + progressBar = "" + numStars = int(pctage//10) + progressBar = "=" * numStars + numSpaces = 10 - numStars + for n in range(numSpaces): + progressBar += " " - if pctage > 9: - displayTotal = " %d%%"% (pctage, ); - else: - displayTotal = " %d%%"% (pctage, ); - print("%s %s [%s] %s (%d todos)"% (star, displayTotal, progressBar, p[0], p[1],)) - else: - print("%s %s (%d todos)"% (star, p[0], p[1], )) + if pctage > 9: + displayTotal = " %d%%"% (pctage, ); + else: + displayTotal = " %d%%"% (pctage, ); + print("%s %s [%s] %s (%d todos)"% (star, displayTotal, progressBar, p[0], p[1],)) + else: + print("%s %s (%d todos)"% (star, p[0], p[1], )) def separator(c): - sep = "" - sep = c * 42 - print(sep) + sep = "" + sep = c * 42 + print(sep) def main(argv): - # make sure you have all your args - if len(argv) < 2: - usage() - sys.exit(2) + # make sure you have all your args + if len(argv) < 2: + usage() + sys.exit(2) - # process todo.txt - try: - f = open (argv[0], "r") - projects = {} - contexts = {} - projectPriority = [] - contextPriority = [] - for line in f: - prioritized = False - words = line.split() - if words and words[0].startswith("("): - prioritized = True - for word in words: - if word[0:2] == "p:" or word[0:2] == "p-" or word[0:1] == "+": - if word not in projects: - projects[word] = 1 - else: - projects[word] = projects.setdefault(word,0) + 1 - if prioritized: - projectPriority.append(word) - if word[0:1] == "@": - if word not in contexts: - contexts[word] = 1 - else: - contexts[word] = contexts.setdefault(word, 0) + 1 - if prioritized: - contextPriority.append(word) - f.close() - except IOError: - print("ERROR: The file named %s could not be read."% (argv[0], )) - usage() - sys.exit(2) + # process todo.txt + try: + f = open (argv[0], "r") + projects = {} + contexts = {} + projectPriority = [] + contextPriority = [] + for line in f: + prioritized = False + words = line.split() + if words and words[0].startswith("("): + prioritized = True + for word in words: + if word[0:2] == "p:" or word[0:2] == "p-" or word[0:1] == "+": + if word not in projects: + projects[word] = 1 + else: + projects[word] = projects.setdefault(word,0) + 1 + if prioritized: + projectPriority.append(word) + if word[0:1] == "@": + if word not in contexts: + contexts[word] = 1 + else: + contexts[word] = contexts.setdefault(word, 0) + 1 + if prioritized: + contextPriority.append(word) + f.close() + except IOError: + print("ERROR: The file named %s could not be read."% (argv[0], )) + usage() + sys.exit(2) - # process done.txt - try: - completedTasks = {} - f = open (argv[1], "r") - for line in f: - words = line.split() - for word in words: - if word[0:2] == "p:" or word[0:2] == "p-" or word[0:1] == "+": - if word not in completedTasks: - completedTasks[word] = 1 - else: - completedTasks[word] = completedTasks.setdefault(word, 0) + 1 - f.close() - except IOError: - print("ERROR: The file named %s could not be read."% (argv[1], )) - usage() - sys.exit(2) + # process done.txt + try: + completedTasks = {} + f = open (argv[1], "r") + for line in f: + words = line.split() + for word in words: + if word[0:2] == "p:" or word[0:2] == "p-" or word[0:1] == "+": + if word not in completedTasks: + completedTasks[word] = 1 + else: + completedTasks[word] = completedTasks.setdefault(word, 0) + 1 + f.close() + except IOError: + print("ERROR: The file named %s could not be read."% (argv[1], )) + usage() + sys.exit(2) - # calculate percentages - projectPercentages = {} - for project in projects: - openTasks = projects[project] - if project in completedTasks: - closedTasks = completedTasks[project] - else: - closedTasks = 0 - totalTasks = openTasks + closedTasks - projectPercentages[project] = (closedTasks*100) / totalTasks + # calculate percentages + projectPercentages = {} + for project in projects: + openTasks = projects[project] + if project in completedTasks: + closedTasks = completedTasks[project] + else: + closedTasks = 0 + totalTasks = openTasks + closedTasks + projectPercentages[project] = (closedTasks*100) / totalTasks - # get projects all done - projectsWithNoIncompletes = {} - for task in completedTasks: - if task not in projects: - projectsWithNoIncompletes[task] = 0 + # get projects all done + projectsWithNoIncompletes = {} + for task in completedTasks: + if task not in projects: + projectsWithNoIncompletes[task] = 0 - # print out useful info - #print "TODO.TXT Bird's Eye View Report %s"% ( datetime.date.today().isoformat(), ) - print("") - print("TODO.TXT Bird's Eye View Report") + # print out useful info + #print "TODO.TXT Bird's Eye View Report %s"% ( datetime.date.today().isoformat(), ) + print("") + print("TODO.TXT Bird's Eye View Report") - separator("=") + separator("=") - printTaskGroups("Projects with Open TODOs", projects, projectPriority, projectPercentages) - printTaskGroups("Contexts with Open TODOs", contexts, contextPriority, projectPercentages) - printTaskGroups("Completed Projects (No open TODOs)", projectsWithNoIncompletes, projectPriority, projectPercentages) - print("") - print("* Projects and contexts with an asterisk next to them denote prioritized tasks.") - print("Project with prioritized tasks are listed first, then sorted by number of open todos.") - print("") + printTaskGroups("Projects with Open TODOs", projects, projectPriority, projectPercentages) + printTaskGroups("Contexts with Open TODOs", contexts, contextPriority, projectPercentages) + printTaskGroups("Completed Projects (No open TODOs)", projectsWithNoIncompletes, projectPriority, projectPercentages) + print("") + print("* Projects and contexts with an asterisk next to them denote prioritized tasks.") + print("Project with prioritized tasks are listed first, then sorted by number of open todos.") + print("")