Package: habiter
habiter quantifies and keeps track of habits within the command line.It essentially addresses the problem of managing our habits (whether good or bad) by making it out in the open for us to see by simply tracking the number of occurrences we notice with our habits per day. This data can then be viewed at any time as well manipulated by using particular math concepts (e.g. Poisson approximation) to provide some means to visualize these habits.FeaturesCLI interaction using theclicklibraryAddition, deletion, updating of habits through the cooperation of thesqlite3libraryPersistent data storage ontoyour local machine; your data isyoursto own and usealonePoisson probability is utilized to act upon your data (more mathematical concepts to come)Ability to print summary information of your habitsInstallationpip install habiterAlternatively, you canclone the repository, though all interaction must take place at the root directory of the repo (usage explained below for both).To Do'sProvide a configuration command to allow, as one may guess, the ability to configure habiter"Pretty" up the list command print-outs (richlooks pretty neat!)Implement an "undoing" feature to restore the habit record to previous statesIntroduce more math concepts that work nicely with the data under considerationUsageIf you installed habiter with pip, simply callhabiteranywhere to get started.If you cloned the repo, use the following (assuming you're in the project root directory and 'python3' command is your Python intrepreter):python3 -m habiter.internal.run➜  habiter -h
[habiter]  Last accessed: 15 Jan, 1505 1:21AM

Usage: habiter [OPTIONS] COMMAND [ARGS]...

  Quantifies and keeps tabs on unwanted habits you have developed over time.

Options:
  --version  Show the version and exit.
  --help     Show this message and exit.

Commands:
  add     add new habit(s) into record
  list    list all habits on record
  remove  delete habit(s) from record
  reset   reset some habit(s) from record
  tally   increment the number of occurrences for some habit(s)

  For more information, visit the code repository at
  https://github.com/kemzeb/habiter.This is what is printed out after the-hoption is requested (just typinghabiteralso does the trick). We will analyze each subcommand found above and any of its optional arguments.tallysubcommand allows for incrementing the occurrence of one or more habits that exists within the record. It keeps track of daily and total habit occurrence (aka 'tallies') day by day. It holds the following options:-z, --zerofor informing habiter that you have had no tallies for that day for some habit(s)-n, --numfor providing a particular number of occurrences for that day for some habit(s) (please note thatit applies to all habits that you currently inputted)The reason why the-z, --zerooption exists in the first place is because habiter doesn't run as a daemon, where habit data could be updated automatically based on meeting certain time constraints. You could supply-n 0as input and this is essentally the same thing, but since there is a good chance that you have had no tallies for a habit on a particular day it becomes too cumbersome. The zero option simply informs habiter that the habits you supplied as input should be consideredactivetoday.If you tally afterwardyou won't find any trouble but you will exit with an error if you attempt to use this option again for that particular habit.addsubcommand allows for the addition of one or more habits into the record. If a habit already exists in the record, it will exit with an error but will not hinder the addition of any other inputted habit names.removesubcommand allows for the deletion of one or more habits from the record. Similar toadd, a habitthat does not existwithin the record will exit with an error but will not hinder the deletion of any other inputted habit names.resetsubcommand allows resetting one or more habits from the record to the initial state. Recorded total and daily tallies, number of days captured, and other information will no longer exist, but the habit will remain in the record.listsubcommand allows for the printing of all existing habits within the record. Its functionality can be extended using the following option:-l, --lessfor listing only the habit names in the recordThe following provides an example of the list command in action:➜  habiter list
Habit + Attributes                    Value
-------------------                   -----
[mirror-writing]
  | P(Occurrences >= 2 today):        91.717%
  | Today's daily tally:              15
  | Total tally:                      1452
  | # of days captured:               352
  | Last updated:                     0 day(s) ago
  | Date added:                       15 Jan, 1505 1:21AM

[sculpting]
  | P(Occurrences >= 2 today):        48.854%
  | Today's daily tally:              15
  | Total tally:                      578
  | # of days captured:               352
  | Last updated:                     0 day(s) ago
  | Date added:                       15 Jan, 1505 1:22AM

-------------------                   -----
[habiter]  Note: More data captured = increased statistical accuracy!You can also be morespecific by passing habit names. For example:➜  habiter list mirror-writing
Habit + Attributes                    Value
-------------------                   -----
[mirror-writing]
  | P(Occurrences >= 2 today):        91.717%
  | Today's daily tally:              15
  | Total tally:                      1452
  | # of days captured:               352
  | Last updated:                     0 day(s) ago
  | Date added:                       15 Jan, 1505 1:21AM

-------------------                   -----
[habiter]  Note: More data captured = increased statistical accuracy!