Commit graph

2821 commits

Author SHA1 Message Date
Shaun Ruffell
16d2c13f55 CmdTag: Do not load entire database
Related to issue #245
2020-01-17 17:48:57 +01:00
Shaun Ruffell
2c1a4a146d CmdContinue: Do not load entire database
This change eliminates the call to getTracked with an empty filter,
which causes the entire database to be parsed.

Related to issue #245
2020-01-17 17:48:57 +01:00
Shaun Ruffell
59ee7e47d4 Database: add assert in addInterval if start is greater than end 2020-01-17 17:48:57 +01:00
Shaun Ruffell
894f8ba5d8 Database: Add method empty 2020-01-17 17:48:57 +01:00
Shaun Ruffell
2df76a2ef0 Add helpers flattenDatabase and getIntervalsByIds
getIntervalsByIds will be used by commands that are loading complete database
currently when they really want a few intervals that the user specified by ID.

Related to issue #245
2020-01-17 17:48:57 +01:00
Shaun Ruffell
610e78fede Remove getAllInclusions helper function
All locations in the code that was creating Intervals for all entries in
the database have been removed. This function can now be removed as
well.
2020-01-17 17:48:57 +01:00
Shaun Ruffell
91e4da7a4c getUntracked helper function should not call getAllInclusions
The getUntracked, called as part of the `timew gaps` command, is
normally looking at a relatively recent interval. We do not want to take
the performance hit of loading the entire database into memory when
processing this command.

Related to issue #245
2020-01-17 17:48:57 +01:00
Shaun Ruffell
b06b8cf8ae Database: add tags method for getting set of tag names
The database class now separatly tracks tag information. So for the one
place where all the inclusions were iterated over in order to build up a
tag set, we now instead ask the database for this set directly.

Related to issue #245
2020-01-17 17:48:57 +01:00
Shaun Ruffell
5dcf226d20 Database: Switch the natural order from newest inclusion to oldest
The inclusion database for the user always starts with the most recent
entry. It is now the same way in the code as well.
2020-01-17 17:48:57 +01:00
Shaun Ruffell
623db0c8e4 Database: Remove Database::allLines()
The Database class itself can now be used in range-based for loops for iterating
over all the lines.
2020-01-17 17:48:57 +01:00
Shaun Ruffell
bd1f7aef99 Remove unused outerRange
outerRange is no longer used, since the filter was simply started based on the
first line in the database now.
2020-01-17 17:48:57 +01:00
Shaun Ruffell
3ec09f9be1 getOverlaps should use non-empty range filter
We can eliminate the need to parse the entire database if we only look for
overlaps based on the latest interval.

Related to issue #245.
2020-01-17 17:48:57 +01:00
Shaun Ruffell
9c0c27b55b getLatestInterval does not need to walk all the inclusions
This does not appear to be necessary anymore given that the database lines are
generated from intervals and are all well formed. Any open interval *should* be
at the end of the database.

Related to issue #245.
2020-01-17 17:48:57 +01:00
Shaun Ruffell
86bb1465e8 getTracked does not need to read in entire database
Related to issue #245.
2020-01-17 17:48:57 +01:00
Shaun Ruffell
e9f860d8ce Remove call to getAllInclusions when initializing tag database 2020-01-17 17:48:57 +01:00
Shaun Ruffell
cf8c35ad55 intervalSummarize should not load the entire database
intervalSummarize is called at the end of most commands. The cost of parsing
all the lines in the database can be significant as the size of the database
grows.

Related to issue #245.
2020-01-17 17:48:57 +01:00
Shaun Ruffell
6af1101ea2 Database: Use reverse iterator in lastLine
Now that we have the iterators, we can standardize on their use.

Related to issue #245.
2020-01-17 17:48:57 +01:00
Shaun Ruffell
557fd4cb34 Database: Add forward/reverse iterator
This allows the database to be treated as a single collection of strings, but
can be used to avoid loading the entire database when only interested in recent
entries.

Related to issue #245.
2020-01-17 17:48:57 +01:00
Shaun Ruffell
ea3bbd0e85 Datafile: allLines() can return const reference instead of copy.
Not only does this eliminate the need to copy the stings to the caller, it will
also eliminate the need for any iterators over the entries in the Database from
having to hold a copy of the lines from the Datafile.

Related to #245.
2020-01-17 17:48:57 +01:00
Shaun Ruffell
ff56bc4759 test/simpletap: Look for functions that start with "test_" on exceptions
Since the switch to python3, there is another method that starts with "test"
higher up in the stack which produces unhelpful file / line information on a
failed test like:

  ERROR: CommandError on file /usr/lib/python3.6/unittest/case.py line 59 in testPartExecutor: 'yield':

This change restores the previous behavior from before the switch to python 3.
2020-01-17 17:48:57 +01:00
Shaun Ruffell
0e354da1c7 test: Use faketime instead of date -v for relative dates
Ubuntu 18.04.3 does not have the -v option to the date utility.
2020-01-17 17:48:57 +01:00
Thomas Lauf
5e385b84a1 Switch to python 3
- #259

Signed-off-by: Thomas Lauf <thomas.lauf@tngtech.com>
2019-12-28 19:01:26 +01:00
Thomas Lauf
3f3c4c3108 Switch to python 3
- #259

Signed-off-by: Thomas Lauf <thomas.lauf@tngtech.com>
2019-12-28 18:52:19 +01:00
Thomas Lauf
dc77a8c457 Use new style formatting
Signed-off-by: Thomas Lauf <thomas.lauf@tngtech.com>
2019-12-28 18:39:18 +01:00
Thomas Lauf
d746b422bf Accommodate PEP8
Signed-off-by: Thomas Lauf <thomas.lauf@tngtech.com>
2019-12-28 18:31:20 +01:00
Thomas Lauf
6c601cfeb8 Switch to python 3
- #259

Signed-off-by: Thomas Lauf <thomas.lauf@tngtech.com>
2019-12-28 18:30:28 +01:00
Thomas Lauf
4f657e57d9 Switch to python 3
- #259

Signed-off-by: Thomas Lauf <thomas.lauf@tngtech.com>
2019-12-28 15:30:17 +01:00
Thomas Lauf
7997c99106 Update README
Signed-off-by: Thomas Lauf <thomas.lauf@tngtech.com>
2019-12-28 15:12:33 +01:00
Thomas Lauf
42df2cb08b Update copyright years and holders
Signed-off-by: Thomas Lauf <thomas.lauf@tngtech.com>
2019-12-28 15:12:33 +01:00
Thomas Lauf
002a04db63 Merge same holidays from different regions
Signed-off-by: Thomas Lauf <thomas.lauf@tngtech.com>
2019-12-28 15:12:33 +01:00
Thomas Lauf
ff562b8a9e Simplify region filtering by setting a default value
Signed-off-by: Thomas Lauf <thomas.lauf@tngtech.com>
2019-12-28 15:12:33 +01:00
Thomas Lauf
bb905fd0b9 Inline variable
Signed-off-by: Thomas Lauf <thomas.lauf@tngtech.com>
2019-12-28 13:21:08 +01:00
Thomas Lauf
38a5afe88c Remove redundant character escape in regex
Signed-off-by: Thomas Lauf <thomas.lauf@tngtech.com>
2019-12-28 13:20:05 +01:00
Thomas Lauf
452cce6137 Switch to python 3
- #259

Signed-off-by: Thomas Lauf <thomas.lauf@tngtech.com>
2019-12-28 13:18:08 +01:00
Thomas Lauf
ddf713a722 Switch to python 3
- #259

Signed-off-by: Thomas Lauf <thomas.lauf@tngtech.com>
2019-12-27 19:08:57 +01:00
Thomas Lauf
f7a3e26d8e Move section 7 files to directory man7
- Amends #262

Signed-off-by: Thomas Lauf <thomas.lauf@tngtech.com>
2019-12-27 17:22:00 +01:00
Thomas Lauf
3e979a7d05 Update ChangeLog
Signed-off-by: Thomas Lauf <thomas.lauf@tngtech.com>
2019-12-27 16:11:16 +01:00
Thomas Lauf
03ffa70203 Add curly brackets
Signed-off-by: Thomas Lauf <thomas.lauf@tngtech.com>
2019-12-27 16:10:46 +01:00
Thomas Lauf
30740af3ba Resharpen error message for if command stop gets called with ids
- Amends #270

Signed-off-by: Thomas Lauf <thomas.lauf@tngtech.com>
2019-12-27 16:10:46 +01:00
Thomas Lauf
13a8edc7ef Resharpen test stop with id should suggest modify command
- Amends #270

Signed-off-by: Thomas Lauf <thomas.lauf@tngtech.com>
2019-12-27 16:10:28 +01:00
Shaun Ruffell
145af6603c Stop with id should suggest modify command
Recently I was trying to stop an interval that I had left open over the
weekend, but I had already started a new interval at the beginning of the
week. The error I was received was "The end of a date range must be after the
start." which was confusing to me.

After a few moments I realized I should have been using the modify command.
Now the stop command will suggest modify if someone attempts to use stop for
this purpose.
2019-12-27 15:47:39 +01:00
Thomas Lauf
80fe5e4221 Use pyenv to run tests with python3
- #259

Signed-off-by: Thomas Lauf <thomas.lauf@tngtech.com>
2019-12-22 13:09:19 +01:00
Thomas Lauf
eccf82ff56 Print version information at end
Signed-off-by: Thomas Lauf <thomas.lauf@tngtech.com>
2019-12-21 22:55:02 +01:00
Thomas Lauf
6ecdbc5cf7 Remove unneeded packages
Signed-off-by: Thomas Lauf <thomas.lauf@tngtech.com>
2019-12-21 22:53:59 +01:00
Thomas Lauf
c6fb6c4e3a Fix installation of python3-dateutil
Signed-off-by: Thomas Lauf <thomas.lauf@tngtech.com>
2019-12-21 22:53:10 +01:00
Thomas Lauf
6637452a1f Cleanup Dockerfiles
Signed-off-by: Thomas Lauf <thomas.lauf@tngtech.com>
2019-12-21 22:32:56 +01:00
Thomas Lauf
5c1e037abc Persist activation of scl package
Signed-off-by: Thomas Lauf <thomas.lauf@tngtech.com>
2019-12-21 22:32:55 +01:00
Thomas Lauf
8189652bbc Print version information at end
Signed-off-by: Thomas Lauf <thomas.lauf@tngtech.com>
2019-12-21 22:32:46 +01:00
Thomas Lauf
800062ace2 Consolidate package list
- Remove unnecessary packages
- Sort packages alphabetically

Signed-off-by: Thomas Lauf <thomas.lauf@tngtech.com>
2019-12-21 22:32:36 +01:00
Thomas Lauf
660816ae5f Put packages on separate lines for better readability
Signed-off-by: Thomas Lauf <thomas.lauf@tngtech.com>
2019-12-21 22:32:25 +01:00