Added
- Auto-detection of submodules for packet installation purposes.
- Chaining of `position` and `desc` variables for `tqdm` in `Simulator`
object.
- Stat function in simulator to allow applications to extract the number of
remaining packets in limbos and contacts and the total packet count.
Changed
- Updated python docker container used for CI to `3.5-stretch`.
- Precompute hashes for Dijkstra search in all three routing approaches and
provide them to to Dijkstra to improve performance.
- Make extensive use of `namedtuples` in all routing approaches: use provided
specific access functionality (namedtuple.<value>) in routing logic instead
of standard tuple access (tuple[x]) for `Routes`, `Neighbors`,
`RouteListEntry`. This greatly improves readability.
- Updated neighbor functions called by Dijkstra in all routing approaches.
- Updated docstrings/documentation in scgr.
Fixed
- Terminate Dijkstra search when shortest route is found. (Was improperly
running until no more (worse) routes were available).
- Ensure correct order of returned routes from Dijkstra search in terms of
second characteristic (hops) and third characteristic (hash of nodes).
- Fixed bug where loops (in terms of nodes, not contacts) were not prevented.
- Separated handling of suppressed nodes and suppressed contacts and fixed
handling logic.