swift-nav/libsbp

Python test coverage 51%

Closed this issue · 2 comments

At the moment the jit coverage is 21%, and nojit coverage is 13%.

jit:

----------- coverage: platform linux, python 3.8.2-final-0 -----------
Name                                    Stmts   Miss Branch BrPart  Cover
-------------------------------------------------------------------------
sbp/__init__.py                             5      2      0      0    60%
sbp/_version.py                             6      0      2      1    88%
sbp/acquisition.py                        316    229     40      6    27%
sbp/bootload.py                           233    162     30     10    30%
sbp/client/__init__.py                      3      0      0      0   100%
sbp/client/drivers/__init__.py              0      0      0      0   100%
sbp/client/drivers/base_driver.py          34     10      2      0    67%
sbp/client/drivers/cdc_driver.py           32     32      2      0     0%
sbp/client/drivers/file_driver.py          36     36      8      0     0%
sbp/client/drivers/network_drivers.py      75     42      6      3    44%
sbp/client/drivers/pyftdi_driver.py        10     10      0      0     0%
sbp/client/drivers/pyserial_driver.py      63     63      6      0     0%
sbp/client/examples/__init__.py             0      0      0      0   100%
sbp/client/examples/simple.py              26     26      0      0     0%
sbp/client/examples/tcp.py                 30     30      0      0     0%
sbp/client/examples/udp.py                 56     56      0      0     0%
sbp/client/forwarder.py                    25     18      4      0    24%
sbp/client/framer.py                       88     25     28      6    68%
sbp/client/handler.py                     157     34     44      7    79%
sbp/client/loggers/__init__.py              0      0      0      0   100%
sbp/client/loggers/base_logger.py          65     24     10      1    56%
sbp/client/loggers/json_logger.py         101     37     16      3    64%
sbp/client/loggers/null_logger.py          15     15      0      0     0%
sbp/client/loggers/rotating_logger.py      23      9      0      0    61%
sbp/client/loggers/udp_logger.py           16      1      0      0    94%
sbp/client/util/__init__.py                 0      0      0      0   100%
sbp/client/util/fftmonitor.py             145    145     38      0     0%
sbp/client/util/settingmonitor.py          65     65     14      0     0%
sbp/constants.py                            4      1      0      0    75%
sbp/ext_events.py                          61     35      4      1    45%
sbp/file_io.py                            362    308     40      5    14%
sbp/flash.py                              368    316     44      5    13%
sbp/gnss.py                               140    120     42      0    11%
sbp/imu.py                                117    105      8      0    10%
sbp/jit/__init__.py                         0      0      0      0   100%
sbp/jit/acquisition.py                    227    188     20      2    17%
sbp/jit/bootload.py                        85     46     14      3    42%
sbp/jit/ext_events.py                      39     26      2      0    32%
sbp/jit/file_io.py                        181    118     24      4    33%
sbp/jit/flash.py                          172    116     28      5    30%
sbp/jit/gnss.py                           142    118     14      0    15%
sbp/jit/imu.py                             70     54      4      0    22%
sbp/jit/linux.py                          227    192     16      0    14%
sbp/jit/logging.py                         67     45      8      1    31%
sbp/jit/mag.py                             39     26      2      0    32%
sbp/jit/msg.py                            115     51     32      7    49%
sbp/jit/navigation.py                    1203   1086     72      2     9%
sbp/jit/ndb.py                             49     35      2      0    27%
sbp/jit/observation.py                   2043   1875    114      5     8%
sbp/jit/orientation.py                    144    122      8      0    14%
sbp/jit/parse.py                          194    194     42      0     0%
sbp/jit/piksi.py                          507    391     54      6    21%
sbp/jit/sbas.py                            37     23      2      0    36%
sbp/jit/settings.py                       150     93     26      5    35%
sbp/jit/solution_meta.py                  145    145     18      0     0%
sbp/jit/ssr.py                            622    544     52      2    12%
sbp/jit/system.py                         202    159     22      2    20%
sbp/jit/table.py                           67     41      0      0    39%
sbp/jit/tracking.py                       390    325     38      4    16%
sbp/jit/user.py                            26     10      4      1    57%
sbp/jit/vehicle.py                         58     42      4      0    26%
sbp/linux.py                              345    298     38      5    13%
sbp/logging.py                            146     96     12      4    35%
sbp/mag.py                                 61     52      4      0    14%
sbp/msg.py                                206    118     30     11    42%
sbp/navigation.py                        1209    629    170     49    47%
sbp/ndb.py                                 68     58      4      0    14%
sbp/observation.py                       1742   1375    306     56    19%
sbp/orientation.py                        215    143     16      3    35%
sbp/piksi.py                              833    606    158     41    25%
sbp/sbas.py                                60     50      4      0    16%
sbp/sbp2json.py                           178    178     34      0     0%
sbp/settings.py                           351    276     48     12    20%
sbp/solution_meta.py                      191    170     32      0     9%
sbp/ssr.py                                652    557    130      2    12%
sbp/system.py                             383    266     42      8    31%
sbp/table.py                               82     51      2      1    38%
sbp/tracking.py                           469    339     84     12    26%
sbp/user.py                                53     44      4      0    16%
sbp/utils.py                               28      2     26      0    93%
sbp/vehicle.py                            109     80      8      1    27%
sbp/version.py                             36     36     10      0     0%
-------------------------------------------------------------------------
TOTAL                                   17295  13445   2172    302    21%

nojit:

Name                                    Stmts   Miss Branch BrPart  Cover
-------------------------------------------------------------------------
sbp/__init__.py                             5      2      0      0    60%
sbp/_version.py                             6      0      2      1    88%
sbp/acquisition.py                        316    229     40      6    27%
sbp/bootload.py                           233    162     30     10    30%
sbp/client/__init__.py                      3      3      0      0     0%
sbp/client/drivers/__init__.py              0      0      0      0   100%
sbp/client/drivers/base_driver.py          34     34      2      0     0%
sbp/client/drivers/cdc_driver.py           32     32      2      0     0%
sbp/client/drivers/file_driver.py          36     36      8      0     0%
sbp/client/drivers/network_drivers.py      75     75      6      0     0%
sbp/client/drivers/pyftdi_driver.py        10     10      0      0     0%
sbp/client/drivers/pyserial_driver.py      63     63      6      0     0%
sbp/client/examples/__init__.py             0      0      0      0   100%
sbp/client/examples/simple.py              26     26      0      0     0%
sbp/client/examples/tcp.py                 30     30      0      0     0%
sbp/client/examples/udp.py                 56     56      0      0     0%
sbp/client/forwarder.py                    25     25      4      0     0%
sbp/client/framer.py                       88     88     28      0     0%
sbp/client/handler.py                     157    157     44      0     0%
sbp/client/loggers/__init__.py              0      0      0      0   100%
sbp/client/loggers/base_logger.py          65     65     10      0     0%
sbp/client/loggers/json_logger.py         101    101     16      0     0%
sbp/client/loggers/null_logger.py          15     15      0      0     0%
sbp/client/loggers/rotating_logger.py      23     23      0      0     0%
sbp/client/loggers/udp_logger.py           16     16      0      0     0%
sbp/client/util/__init__.py                 0      0      0      0   100%
sbp/client/util/fftmonitor.py             145    145     38      0     0%
sbp/client/util/settingmonitor.py          65     65     14      0     0%
sbp/constants.py                            4      1      0      0    75%
sbp/ext_events.py                          61     35      4      1    45%
sbp/file_io.py                            362    318     40      4    11%
sbp/flash.py                              368    316     44      5    13%
sbp/gnss.py                               140    120     42      0    11%
sbp/imu.py                                117    105      8      0    10%
sbp/jit/__init__.py                         0      0      0      0   100%
sbp/jit/acquisition.py                    227    227     20      0     0%
sbp/jit/bootload.py                        85     85     14      0     0%
sbp/jit/ext_events.py                      39     39      2      0     0%
sbp/jit/file_io.py                        181    181     24      0     0%
sbp/jit/flash.py                          172    172     28      0     0%
sbp/jit/gnss.py                           142    142     14      0     0%
sbp/jit/imu.py                             70     70      4      0     0%
sbp/jit/linux.py                          227    227     16      0     0%
sbp/jit/logging.py                         67     67      8      0     0%
sbp/jit/mag.py                             39     39      2      0     0%
sbp/jit/msg.py                            115    115     32      0     0%
sbp/jit/navigation.py                    1203   1203     72      0     0%
sbp/jit/ndb.py                             49     49      2      0     0%
sbp/jit/observation.py                   2043   2043    114      0     0%
sbp/jit/orientation.py                    144    144      8      0     0%
sbp/jit/parse.py                          194    194     42      0     0%
sbp/jit/piksi.py                          507    507     54      0     0%
sbp/jit/sbas.py                            37     37      2      0     0%
sbp/jit/settings.py                       150    150     26      0     0%
sbp/jit/solution_meta.py                  145    145     18      0     0%
sbp/jit/ssr.py                            622    622     52      0     0%
sbp/jit/system.py                         202    202     22      0     0%
sbp/jit/table.py                           67     67      0      0     0%
sbp/jit/tracking.py                       390    390     38      0     0%
sbp/jit/user.py                            26     26      4      0     0%
sbp/jit/vehicle.py                         58     58      4      0     0%
sbp/linux.py                              345    298     38      5    13%
sbp/logging.py                            146     97     12      2    35%
sbp/mag.py                                 61     52      4      0    14%
sbp/msg.py                                206    115     30      8    44%
sbp/navigation.py                        1209    629    170     49    47%
sbp/ndb.py                                 68     58      4      0    14%
sbp/observation.py                       1742   1375    306     56    19%
sbp/orientation.py                        215    143     16      3    35%
sbp/piksi.py                              833    606    158     41    25%
sbp/sbas.py                                60     50      4      0    16%
sbp/sbp2json.py                           178    178     34      0     0%
sbp/settings.py                           351    276     48     12    20%
sbp/solution_meta.py                      191    170     32      0     9%
sbp/ssr.py                                652    557    130      2    12%
sbp/system.py                             383    266     42      8    31%
sbp/table.py                               82     51      2      1    38%
sbp/tracking.py                           469    339     84     12    26%
sbp/user.py                                53     44      4      0    16%
sbp/utils.py                               28      2     26      0    93%
sbp/vehicle.py                            109     80      8      1    27%
sbp/version.py                             36     36     10      0     0%
-------------------------------------------------------------------------
TOTAL                                   17295  14976   2172    227    13%

With jit removed, and telling pytest to explore sbp (which adds coverage of module level attributes) as done in #969, coverage has improved a bit, now at 45%.

Name                                    Stmts   Miss Branch BrPart  Cover   Missing
-----------------------------------------------------------------------------------
sbp/__init__.py                             5      2      0      0    60%   16-17
sbp/_version.py                             6      0      2      1    88%   6->exit
sbp/acquisition.py                        303    152     36      3    47%   94-108, 114-116, 119-120, 184-198, 204-206, 209-210, 257-269, 279-280, 284-285, 293-295, 301-303, 309-312, 315-319, 367-373, 413-416, 473-479, 519-522, 581-587, 627-630, 669-678, 688-689, 693-694, 702-704, 710-712, 718-721, 724-728, 758-767, 777-778, 782-783, 791-793, 799-801, 807-810, 813-817
sbp/bootload.py                           201     91     20      2    52%   51-60, 70-71, 75-76, 123-127, 167-170, 208-217, 227-228, 232-233, 241-243, 249-251, 257-260, 263-267, 290-299, 309-310, 314-315, 355-364, 374-375, 379-380, 388-390, 396-398, 404-407, 410-414, 450-453, 493-496
sbp/client/__init__.py                      4      0      0      0   100%
sbp/client/drivers/__init__.py              0      0      0      0   100%
sbp/client/drivers/base_driver.py          34     10      2      0    67%   50, 76, 87-90, 109-112, 118
sbp/client/drivers/cdc_driver.py           32     27      2      0    15%   36-50, 61-68, 74-77
sbp/client/drivers/file_driver.py          36     24      8      0    27%   39-43, 46, 49, 66-68, 82-98, 104-108
sbp/client/drivers/network_drivers.py      71     28     16      4    54%   67-69, 75-84, 86->exit, 91-97, 99-100, 135-142
sbp/client/drivers/pyftdi_driver.py        10      7      0      0    30%   30-36
sbp/client/drivers/pyserial_driver.py      62     50      8      0    17%   17-18, 45-67, 78-85, 96-108, 111-112, 115-119
sbp/client/examples/__init__.py             0      0      0      0   100%
sbp/client/examples/simple.py              16     10      2      0    33%   23-42
sbp/client/examples/tcp.py                 17     11      2      0    32%   23-46
sbp/client/examples/udp.py                 30     18      0      0    40%   34-61, 65-78
sbp/client/forwarder.py                    25     18      4      0    24%   35-39, 42-45, 48-54, 57, 60
sbp/client/framer.py                       86     17     28      6    75%   90, 95->99, 114, 129, 143, 149-150, 153, 167-177
sbp/client/handler.py                     165     35     46      7    79%   24-25, 65->64, 73-75, 83->81, 89, 205->exit, 214-218, 233-234, 237, 243, 256-266, 282-290, 305-306, 332, 336
sbp/client/loggers/__init__.py              0      0      0      0   100%
sbp/client/loggers/base_logger.py          65     24     10      1    56%   42, 50-60, 100-111
sbp/client/loggers/json_logger.py          91     27     16      3    70%   36, 39-41, 58-65, 76-96, 122, 127, 135, 164-166
sbp/client/loggers/null_logger.py          15      7      0      0    53%   20, 23, 26, 29, 32, 35, 38
sbp/client/loggers/rotating_logger.py      18      0      0      0   100%
sbp/client/loggers/udp_logger.py           15      0      0      0   100%
sbp/client/util/__init__.py                 0      0      0      0   100%
sbp/client/util/fftmonitor.py             106     80     42      0    18%   25, 28-40, 43-45, 51, 58-64, 67-70, 73-76, 83-108, 112-117, 120-121, 124, 127, 130, 133-140, 144-194
sbp/client/util/settingmonitor.py          23     15     14      0    22%   30, 38-40, 46-55, 59-65
sbp/constants.py                            3      0      0      0   100%
sbp/ext_events.py                          49     12      4      1    75%   84-91, 131-134
sbp/file_io.py                            370    247     36      0    30%   84-96, 106-107, 111-112, 120-122, 128-130, 136-139, 142-146, 185-195, 205-206, 210-211, 219-221, 227-229, 235-238, 241-245, 294-305, 315-316, 320-321, 329-331, 337-339, 345-348, 351-355, 395-405, 415-416, 420-421, 429-431, 437-439, 445-448, 451-455, 489-498, 508-509, 513-514, 522-524, 530-532, 538-541, 544-548, 598-610, 620-621, 625-626, 634-636, 642-644, 650-653, 656-660, 695-704, 714-715, 719-720, 728-730, 736-738, 744-747, 750-754, 788-797, 807-808, 812-813, 821-823, 829-831, 837-840, 843-847, 893-905, 915-916, 920-921, 929-931, 937-939, 945-948, 951-955
sbp/flash.py                              384    253     38      0    31%   81-93, 103-104, 108-109, 117-119, 125-127, 133-136, 139-143, 177-186, 196-197, 201-202, 210-212, 218-220, 226-229, 232-236, 283-294, 304-305, 309-310, 318-320, 326-328, 334-337, 340-344, 391-402, 412-413, 417-418, 426-428, 434-436, 442-445, 448-452, 493-503, 513-514, 518-519, 527-529, 535-537, 543-546, 549-553, 585-594, 604-605, 609-610, 618-620, 626-628, 634-637, 640-644, 676-685, 695-696, 700-701, 709-711, 717-719, 725-728, 731-735, 756-765, 775-776, 780-781, 817-826, 836-837, 841-842, 850-852, 858-860, 866-869, 872-876, 908-917, 927-928, 932-933, 941-943, 949-951, 957-960, 963-967
sbp/gnss.py                               111     65     42      0    30%   51-55, 61-63, 66-67, 93-97, 103-105, 108-109, 141-146, 152-154, 157-158, 185-189, 195-197, 200-201, 228-232, 238-240, 243-244, 278-283, 289-291, 294-295, 323-327, 333-335, 338-339
sbp/imu.py                                 93     25      8      2    73%   101-111, 151-154, 208-213, 253-256
sbp/jit/__init__.py                         2      0      0      0   100%
sbp/linux.py                              486    337     44      0    28%   75-88, 98-99, 103-104, 112-114, 120-122, 128-131, 134-138, 186-199, 209-210, 214-215, 223-225, 231-233, 239-242, 245-249, 300-314, 324-325, 329-330, 338-340, 346-348, 354-357, 360-364, 423-437, 447-448, 452-453, 461-463, 469-471, 477-480, 483-487, 556-572, 582-583, 587-588, 596-598, 604-606, 612-615, 618-622, 669-681, 691-692, 696-697, 705-707, 713-715, 721-724, 727-731, 774-786, 796-797, 801-802, 810-812, 818-820, 826-829, 832-836, 876-886, 896-897, 901-902, 910-912, 918-920, 926-929, 932-936, 992-1007, 1017-1018, 1022-1023, 1031-1033, 1039-1041, 1047-1050, 1053-1057, 1113-1128, 1138-1139, 1143-1144, 1152-1154, 1160-1162, 1168-1171, 1174-1178, 1237-1253, 1263-1264, 1268-1269, 1277-1279, 1285-1287, 1293-1296, 1299-1303
sbp/logging.py                            126     18     12      1    86%   114-117, 175-180, 220-223, 309-312
sbp/mag.py                                 49     30      4      0    36%   76-89, 99-100, 104-105, 113-115, 121-123, 129-132, 135-139
sbp/msg.py                                153     40     12      4    72%   38-41, 60-62, 65-69, 100, 102, 104, 107-108, 111, 147, 161-162, 167-168, 171-173, 177, 200-202, 224-226, 229-231, 234-239
sbp/navigation.py                        1679    593    144     34    65%   113-119, 159-162, 232-238, 278-281, 358-369, 409-412, 489-500, 540-543, 614-623, 663-666, 741-750, 790-793, 889-903, 943-946, 1025-1035, 1075-1078, 1173-1187, 1227-1230, 1302-1311, 1351-1354, 1431-1441, 1481-1484, 1555-1564, 1604-1607, 1697-1711, 1751-1754, 1831-1841, 1881-1884, 1977-1991, 2031-2034, 2109-2118, 2158-2161, 2257-2271, 2311-2314, 2393-2403, 2443-2446, 2541-2555, 2595-2598, 2669-2678, 2718-2721, 2811-2825, 2865-2868, 2945-2955, 2995-2998, 3091-3105, 3145-3148, 3243-3257, 3297-3300, 3349-3353, 3393-3396, 3466-3472, 3512-3515, 3581-3589, 3629-3632, 3709-3718, 3758-3761, 3844-3854, 3894-3897, 3970-3979, 4019-4022, 4103-4113, 4153-4156, 4228-4237, 4277-4280, 4359-4369, 4409-4412, 4464-4476, 4486-4487, 4491-4492, 4500-4502, 4508-4510, 4516-4519, 4522-4526, 4589-4598, 4638-4641, 4765-4794, 4804-4805, 4809-4810, 4818-4820, 4826-4828, 4834-4837, 4840-4844
sbp/ndb.py                                 53     33      4      0    35%   99-115, 125-126, 130-131, 139-141, 147-149, 155-158, 161-165
sbp/observation.py                       2166   1335    248     13    36%   54-58, 64-66, 69-70, 98-102, 108-110, 113-114, 174-183, 189-191, 194-195, 251-261, 267-269, 272-273, 316-324, 330-332, 335-336, 378-386, 392-394, 397-398, 441-449, 455-457, 460-461, 488-492, 498-500, 503-504, 533-537, 543-545, 548-549, 588-595, 601-603, 606-607, 648-655, 661-663, 666-667, 709-716, 722-724, 727-728, 807-824, 830-832, 835-836, 890-898, 904-906, 909-910, 964-972, 978-980, 983-984, 1012-1017, 1023-1025, 1028-1029, 1078-1082, 1122-1125, 1175-1186, 1196-1197, 1201-1202, 1210-1212, 1218-1220, 1226-1229, 1232-1236, 1286-1291, 1331-1334, 1464-1495, 1505-1506, 1510-1511, 1519-1521, 1527-1529, 1535-1538, 1541-1545, 1665-1696, 1706-1707, 1711-1712, 1720-1722, 1728-1730, 1736-1739, 1742-1746, 1875-1900, 1940-1943, 2077-2102, 2142-2145, 2292-2318, 2358-2361, 2492-2524, 2534-2535, 2539-2540, 2548-2550, 2556-2558, 2564-2567, 2570-2574, 2710-2737, 2777-2780, 2836-2850, 2860-2861, 2865-2866, 2874-2876, 2882-2884, 2890-2893, 2896-2900, 2955-2969, 2979-2980, 2984-2985, 2993-2995, 3001-3003, 3009-3012, 3015-3019, 3071-3085, 3095-3096, 3100-3101, 3109-3111, 3117-3119, 3125-3128, 3131-3135, 3184-3198, 3208-3209, 3213-3214, 3222-3224, 3230-3232, 3238-3241, 3244-3248, 3303-3317, 3327-3328, 3332-3333, 3341-3343, 3349-3351, 3357-3360, 3363-3367, 3430-3446, 3456-3457, 3461-3462, 3470-3472, 3478-3480, 3486-3489, 3492-3496, 3560-3577, 3587-3588, 3592-3593, 3601-3603, 3609-3611, 3617-3620, 3623-3627, 3700-3711, 3751-3754, 3908-3945, 3955-3956, 3960-3961, 3969-3971, 3977-3979, 3985-3988, 3991-3995, 4125-4159, 4169-4170, 4174-4175, 4183-4185, 4191-4193, 4199-4202, 4205-4209, 4349-4378, 4418-4421, 4575-4612, 4622-4623, 4627-4628, 4636-4638, 4644-4646, 4652-4655, 4658-4662, 4704-4708, 4748-4751, 4806-4810, 4850-4853, 4909-4913, 4953-4956, 5020-5037, 5047-5048, 5052-5053, 5061-5063, 5069-5071, 5077-5080, 5083-5087, 5122-5132, 5142-5143, 5147-5148, 5156-5158, 5164-5166, 5172-5175, 5178-5182, 5215-5225, 5235-5236, 5240-5241, 5249-5251, 5257-5259, 5265-5268, 5271-5275, 5325-5339, 5349-5350, 5354-5355, 5363-5365, 5371-5373, 5379-5382, 5385-5389, 5439-5453, 5463-5464, 5468-5469, 5477-5479, 5485-5487, 5493-5496, 5499-5503, 5553-5567, 5577-5578, 5582-5583, 5591-5593, 5599-5601, 5607-5610, 5613-5617, 5687-5705, 5715-5716, 5720-5721, 5729-5731, 5737-5739, 5745-5748, 5751-5755, 5825-5843, 5853-5854, 5858-5859, 5867-5869, 5875-5877, 5883-5886, 5889-5893, 5957-5973, 5983-5984, 5988-5989, 5997-5999, 6005-6007, 6013-6016, 6019-6023, 6087-6103, 6113-6114, 6118-6119, 6127-6129, 6135-6137, 6143-6146, 6149-6153, 6209-6216, 6256-6259, 6298-6307, 6317-6318, 6322-6323, 6331-6333, 6339-6341, 6347-6350, 6353-6357, 6400-6404, 6444-6447
sbp/orientation.py                        185     73     16      3    60%   72-84, 94-95, 99-100, 108-110, 116-118, 124-127, 130-134, 211-223, 263-266, 342-352, 392-395, 463-470, 510-513
sbp/piksi.py                              953    578    110      3    36%   77-85, 91-93, 96-97, 135-141, 147-149, 152-153, 190-196, 202-204, 207-208, 250-257, 263-265, 268-269, 288-297, 307-308, 312-313, 334-343, 353-354, 358-359, 393-402, 412-413, 417-418, 426-428, 434-436, 442-445, 448-452, 471-480, 490-491, 495-496, 518-527, 537-538, 542-543, 565-574, 584-585, 589-590, 624-633, 643-644, 648-649, 657-659, 665-667, 673-676, 679-683, 700-709, 719-720, 724-725, 776-781, 821-824, 886-899, 909-910, 914-915, 923-925, 931-933, 939-942, 945-949, 997-1003, 1043-1046, 1093-1096, 1136-1139, 1182-1192, 1202-1203, 1207-1208, 1216-1218, 1224-1226, 1232-1235, 1238-1242, 1276-1286, 1296-1297, 1301-1302, 1310-1312, 1318-1320, 1326-1329, 1332-1336, 1385-1398, 1408-1409, 1413-1414, 1422-1424, 1430-1432, 1438-1441, 1444-1448, 1485-1495, 1505-1506, 1510-1511, 1519-1521, 1527-1529, 1535-1538, 1541-1545, 1581-1591, 1601-1602, 1606-1607, 1615-1617, 1623-1625, 1631-1634, 1637-1641, 1679-1689, 1699-1700, 1704-1705, 1713-1715, 1721-1723, 1729-1732, 1735-1739, 1758-1767, 1777-1778, 1782-1783, 1846-1862, 1872-1873, 1877-1878, 1886-1888, 1894-1896, 1902-1905, 1908-1912, 1943-1952, 1962-1963, 1967-1968, 1976-1978, 1984-1986, 1992-1995, 1998-2002, 2043-2054, 2064-2065, 2069-2070, 2078-2080, 2086-2088, 2094-2097, 2100-2104, 2163-2178, 2188-2189, 2193-2194, 2202-2204, 2210-2212, 2218-2221, 2224-2228, 2288-2303, 2313-2314, 2318-2319, 2327-2329, 2335-2337, 2343-2346, 2349-2353, 2393-2403, 2413-2414, 2418-2419, 2427-2429, 2435-2437, 2443-2446, 2449-2453
sbp/sbas.py                                49     11      4      1    77%   77-83, 123-126
sbp/sbp2json.py                            87     64     22      0    21%   28-29, 33-48, 55-58, 62-69, 73-114, 118-124
sbp/settings.py                           359    208     36      2    39%   71-80, 90-91, 95-96, 137-146, 156-157, 161-162, 170-172, 178-180, 186-189, 192-196, 239-249, 259-260, 264-265, 273-275, 281-283, 289-292, 295-299, 339-348, 358-359, 363-364, 372-374, 380-382, 388-391, 394-398, 438-447, 457-458, 462-463, 471-473, 479-481, 487-490, 493-497, 532-541, 551-552, 556-557, 565-567, 573-575, 581-584, 587-591, 645-649, 689-692, 723-726, 779-788, 798-799, 803-804, 812-814, 820-822, 828-831, 834-838, 879-889, 899-900, 904-905, 913-915, 921-923, 929-932, 935-939
sbp/solution_meta.py                      155     99     32      0    30%   56-60, 66-68, 71-72, 94-97, 103-105, 108-109, 131-134, 140-142, 145-146, 168-171, 177-179, 182-183, 247-264, 274-275, 279-280, 288-290, 296-298, 304-307, 310-314, 374-389, 399-400, 404-405, 413-415, 421-423, 429-432, 435-439
sbp/ssr.py                                785    532    138      0    27%   55-59, 65-67, 70-71, 112-119, 125-127, 130-131, 181-190, 196-198, 201-202, 258-268, 274-276, 279-280, 311-316, 322-324, 327-328, 353-357, 363-365, 368-369, 399-404, 410-412, 415-416, 440-444, 450-452, 455-456, 486-491, 497-499, 502-503, 533-538, 544-546, 549-550, 580-585, 591-593, 596-597, 640-647, 653-655, 658-659, 701-708, 714-716, 719-720, 768-776, 782-784, 787-788, 834-842, 848-850, 853-854, 945-967, 977-978, 982-983, 991-993, 999-1001, 1007-1010, 1013-1017, 1072-1085, 1095-1096, 1100-1101, 1109-1111, 1117-1119, 1125-1128, 1131-1135, 1212-1229, 1239-1240, 1244-1245, 1253-1255, 1261-1263, 1269-1272, 1275-1279, 1319-1329, 1339-1340, 1344-1345, 1353-1355, 1361-1363, 1369-1372, 1375-1379, 1417-1427, 1437-1438, 1442-1443, 1451-1453, 1459-1461, 1467-1470, 1473-1477, 1593-1610, 1620-1621, 1625-1626, 1634-1636, 1642-1644, 1650-1653, 1656-1660, 1689-1698, 1708-1709, 1713-1714, 1722-1724, 1730-1732, 1738-1741, 1744-1748, 1834-1856, 1866-1867, 1871-1872, 1880-1882, 1888-1890, 1896-1899, 1902-1906, 1939-1949, 1959-1960, 1964-1965, 1973-1975, 1981-1983, 1989-1992, 1995-1999, 2032-2042, 2052-2053, 2057-2058, 2066-2068, 2074-2076, 2082-2085, 2088-2092, 2127-2137, 2147-2148, 2152-2153, 2161-2163, 2169-2171, 2177-2180, 2183-2187, 2224-2234, 2244-2245, 2249-2250, 2258-2260, 2266-2268, 2274-2277, 2280-2284
sbp/system.py                             435    185     46      6    56%   56-61, 67-69, 72-73, 121-126, 166-169, 227-233, 273-276, 329-332, 372-375, 437-450, 460-461, 465-466, 474-476, 482-484, 490-493, 496-500, 538-541, 581-584, 628-638, 648-649, 653-654, 662-664, 670-672, 678-681, 684-688, 725-735, 745-746, 750-751, 759-761, 767-769, 775-778, 781-785, 847-856, 896-899, 951-963, 973-974, 978-979, 987-989, 995-997, 1003-1006, 1009-1013, 1065-1071, 1111-1114
sbp/table.py                               37      3      2      1    90%   97-100
sbp/tracking.py                           497    283     72      3    39%   58-63, 69-71, 74-75, 104-108, 114-116, 119-120, 145-149, 155-157, 160-161, 186-190, 196-198, 201-202, 230-235, 241-243, 246-247, 275-280, 286-288, 291-292, 419-448, 458-459, 463-464, 472-474, 480-482, 488-491, 494-498, 629-652, 692-695, 735-744, 754-755, 759-760, 768-770, 776-778, 784-787, 790-794, 827-836, 846-847, 851-852, 860-862, 868-870, 876-879, 882-886, 926-937, 947-948, 952-953, 961-963, 969-971, 977-980, 983-987, 1027-1038, 1048-1049, 1053-1054, 1062-1064, 1070-1072, 1078-1081, 1084-1088, 1126-1137, 1147-1148, 1152-1153, 1161-1163, 1169-1171, 1177-1180, 1183-1187, 1223-1226, 1266-1269, 1312-1315, 1355-1358
sbp/user.py                                45     26      4      0    39%   59-68, 78-79, 83-84, 92-94, 100-102, 108-111, 114-118
sbp/utils.py                               28      2     26      0    93%   77-78
sbp/vehicle.py                             89     39      8      1    55%   82-87, 127-130, 197-209, 219-220, 224-225, 233-235, 241-243, 249-252, 255-259
sbp/version.py                             35      7     10      5    73%   48-49, 56-57, 68->72, 77, 81, 92->94, 96
-----------------------------------------------------------------------------------
TOTAL                                   10899   5751   1380    107    45%

Master is now at ~44%