make get_firstbday, get_lastbday nogil
State: closed

These are only used in `tslibs.offsets` and in tests, _and_ every use is preceeded by a call to `monthrange`.  But because `monthrange` returns a tuple, it cannot be declared `nogil`.  This PR removes the call to `monthrange` in favor of the two separate calls that go into `monthrange` (actually only one is needed for `get_first_bday`).  On the side we get rid of a few unnecessary calls and get to nogil two more cases worth of the apply_index loops.

There are more cases coming up for `shift_months` (i.e. more subclasses getting implementations of `apply_index`) and these will benefit from these changes too.

- [ ] closes #xxxx
- [ ] tests added / passed
- [x] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [ ] whatsnew entry


Labels:
name: Performance
description: Memory or execution speed performance
name: Frequency
description: DateOffsets

Comments:
Will run asv in the morning
# [Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/18512?src=pr&el=h1) Report
> Merging [#18512](https://codecov.io/gh/pandas-dev/pandas/pull/18512?src=pr&el=desc) into [master](https://codecov.io/gh/pandas-dev/pandas/commit/f745e52e168790bff06a55928c3491cdea389508?src=pr&el=desc) will **decrease** coverage by `0.04%`.
> The diff coverage is `n/a`.

[![Impacted file tree graph](https://codecov.io/gh/pandas-dev/pandas/pull/18512/graphs/tree.svg?token=eZ4WkYLtcO&width=650&height=150&src=pr)](https://codecov.io/gh/pandas-dev/pandas/pull/18512?src=pr&el=tree)

```diff
@@            Coverage Diff             @@
##           master   #18512      +/-   ##
==========================================
- Coverage   91.35%   91.31%   -0.05%     
==========================================
  Files         163      163              
  Lines       49796    49796              
==========================================
- Hits        45490    45469      -21     
- Misses       4306     4327      +21
```

| Flag | Coverage Δ | |
|---|---|---|
| #multiple | `89.11% <ø> (-0.03%)` | :arrow_down: |
| #single | `40.79% <ø> (-0.07%)` | :arrow_down: |

| [Impacted Files](https://codecov.io/gh/pandas-dev/pandas/pull/18512?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [pandas/io/gbq.py](https://codecov.io/gh/pandas-dev/pandas/pull/18512?src=pr&el=tree#diff-cGFuZGFzL2lvL2dicS5weQ==) | `25% <0%> (-58.34%)` | :arrow_down: |
| [pandas/plotting/\_converter.py](https://codecov.io/gh/pandas-dev/pandas/pull/18512?src=pr&el=tree#diff-cGFuZGFzL3Bsb3R0aW5nL19jb252ZXJ0ZXIucHk=) | `63.44% <0%> (-1.82%)` | :arrow_down: |
| [pandas/core/frame.py](https://codecov.io/gh/pandas-dev/pandas/pull/18512?src=pr&el=tree#diff-cGFuZGFzL2NvcmUvZnJhbWUucHk=) | `97.81% <0%> (-0.1%)` | :arrow_down: |

------

[Continue to review full report at Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/18512?src=pr&el=continue).
> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta)
> `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`
> Powered by [Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/18512?src=pr&el=footer). Last update [f745e52...8b77efb](https://codecov.io/gh/pandas-dev/pandas/pull/18512?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).

# [Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/18512?src=pr&el=h1) Report
> Merging [#18512](https://codecov.io/gh/pandas-dev/pandas/pull/18512?src=pr&el=desc) into [master](https://codecov.io/gh/pandas-dev/pandas/commit/f745e52e168790bff06a55928c3491cdea389508?src=pr&el=desc) will **decrease** coverage by `0.04%`.
> The diff coverage is `n/a`.

[![Impacted file tree graph](https://codecov.io/gh/pandas-dev/pandas/pull/18512/graphs/tree.svg?width=650&height=150&src=pr&token=eZ4WkYLtcO)](https://codecov.io/gh/pandas-dev/pandas/pull/18512?src=pr&el=tree)

```diff
@@            Coverage Diff             @@
##           master   #18512      +/-   ##
==========================================
- Coverage   91.35%   91.31%   -0.05%     
==========================================
  Files         163      163              
  Lines       49796    49796              
==========================================
- Hits        45490    45469      -21     
- Misses       4306     4327      +21
```

| Flag | Coverage Δ | |
|---|---|---|
| #multiple | `89.11% <ø> (-0.03%)` | :arrow_down: |
| #single | `40.79% <ø> (-0.07%)` | :arrow_down: |

| [Impacted Files](https://codecov.io/gh/pandas-dev/pandas/pull/18512?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [pandas/io/gbq.py](https://codecov.io/gh/pandas-dev/pandas/pull/18512?src=pr&el=tree#diff-cGFuZGFzL2lvL2dicS5weQ==) | `25% <0%> (-58.34%)` | :arrow_down: |
| [pandas/plotting/\_converter.py](https://codecov.io/gh/pandas-dev/pandas/pull/18512?src=pr&el=tree#diff-cGFuZGFzL3Bsb3R0aW5nL19jb252ZXJ0ZXIucHk=) | `63.44% <0%> (-1.82%)` | :arrow_down: |
| [pandas/core/frame.py](https://codecov.io/gh/pandas-dev/pandas/pull/18512?src=pr&el=tree#diff-cGFuZGFzL2NvcmUvZnJhbWUucHk=) | `97.81% <0%> (-0.1%)` | :arrow_down: |

------

[Continue to review full report at Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/18512?src=pr&el=continue).
> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta)
> `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`
> Powered by [Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/18512?src=pr&el=footer). Last update [f745e52...8b77efb](https://codecov.io/gh/pandas-dev/pandas/pull/18512?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).

lgtm. make sure we have sufficient m even micro coverage for these routines
Small asv run, will run a more thorough one next.

```
asv continuous -f 1.1 -E virtualenv master HEAD -b offsets
[...]
       before           after         ratio
     [f745e52e]       [8b77efbe]
+     9.83±0.03μs      11.1±0.01μs     1.13  offset.YearBegin.time_timeseries_year_apply
+     29.2±0.07μs         32.8±1μs     1.13  offset.CBDayHolidays.time_custom_bday_cal_incr_neg_n
+      18.8±0.2μs      21.1±0.07μs     1.12  offset.CBDay.time_custom_bday_incr
-     7.13±0.05μs      6.38±0.04μs     0.90  offset.OnOffset.time_on_offset(<QuarterEnd: startingMonth=3>)
-           1.68s            1.50s     0.89  offset.ApplyIndex.time_apply_series(<BusinessQuarterEnd: startingMonth=3>)
-           1.80s            1.57s     0.87  offset.ApplyIndex.time_apply_index(<BusinessQuarterEnd: startingMonth=3>)
-           1.65s            1.40s     0.85  offset.ApplyIndex.time_apply_series(<BusinessYearEnd: month=12>)
-     21.9±0.05μs      18.5±0.08μs     0.85  offset.SemiMonthOffset.time_begin_incr_n
-      23.8±0.4μs       18.5±0.5μs     0.78  offset.Day.time_timeseries_day_incr
-      21.7±0.5ms       9.53±0.3ms     0.44  offset.ApplyIndex.time_apply_series(<BusinessMonthEnd>)
-        20.0±1ms       7.85±0.3ms     0.39  offset.ApplyIndex.time_apply_index(<BusinessMonthEnd>)
-     20.9±0.08ms       8.07±0.5ms     0.39  offset.ApplyIndex.time_apply_series(<BusinessMonthBegin>)
-     19.2±0.09ms       5.99±0.2ms     0.31  offset.ApplyIndex.time_apply_index(<BusinessMonthBegin>)
```
> make sure we have sufficient m even micro coverage for these routines

Sure.  Seems like a good time to run coverage for all of _libs
```
taskset 8 asv continuous -f 1.1 -E virtualenv master HEAD -b offset -b timedelta -b period -b timeseries
[...]
     [f745e52e]       [8b77efbe]
!           42.1s           failed      n/a  gil.nogil_datetime_fields.time_period_to_datetime
+       103±0.3μs          116±3μs     1.13  offset.CBMonthBegin.time_custom_bmonthbegin_decr_n
+        1.64±0ms      1.82±0.07ms     1.11  timeseries.DatetimeIndex.time_add_timedelta
-      10.4±0.2μs      9.26±0.04μs     0.89  offset.YearBegin.time_timeseries_year_apply
-           1.53s            1.37s     0.89  offset.ApplyIndex.time_apply_index(<BusinessYearEnd: month=12>)
-     1.05±0.01μs          932±6ns     0.88  period.PeriodProperties.time_minute('M')
-      7.93±0.2μs         7.00±0μs     0.88  timeseries.DatetimeIndex.time_timestamp_tzinfo_cons
-           1.70s            1.49s     0.87  offset.ApplyIndex.time_apply_series(<BusinessYearBegin: month=1>)
-     7.38±0.04μs       6.35±0.1μs     0.86  offset.OnOffset.time_on_offset(<QuarterEnd: startingMonth=3>)
-     1.03±0.02μs          859±1ns     0.83  period.PeriodProperties.time_second('M')
-     22.6±0.08μs      18.8±0.09μs     0.83  offset.SemiMonthOffset.time_end_decr
-      21.5±0.6ms       9.20±0.2ms     0.43  offset.ApplyIndex.time_apply_series(<BusinessMonthEnd>)
-      19.7±0.1ms       7.56±0.1ms     0.38  offset.ApplyIndex.time_apply_index(<BusinessMonthEnd>)
-        20.8±1ms      7.63±0.08ms     0.37  offset.ApplyIndex.time_apply_series(<BusinessMonthBegin>)
-      19.1±0.1ms      5.89±0.03ms     0.31  offset.ApplyIndex.time_apply_index(<BusinessMonthBegin>)
```
<b>update</b> need to re-run coverage.  ignore coverage stats for now.
Fixed coverage results ("fixed" does not refer to matplotlib issue).  Notwithstanding some tinkering to make coverage work with cython, this is at 262e8ff367c9291c79c4df0c2daf4713de52abc0.
```
Name                                      Stmts   Miss  Cover   Missing
-----------------------------------------------------------------------
pandas/__init__.py                           39      3    92%   14-15, 18
pandas/_libs/__init__.py                      1      0   100%
pandas/_libs/algos.pxd                        5      1    80%   9
pandas/_libs/algos.pyx                      197     20    90%   59, 116, 224-233, 236-244, 246-249, 259-261
pandas/_libs/algos_common_helper.pxi       1884   1242    34%   25-49, 63-67, 70, 84-91, 97, 112-114, 123, 128-132, 138, 148-150, 159, 165, 167, 211-212, 226-230, 233, 241, 250, 261, 276-314, 323, 329, 331, 350, 375, 382-384, 407, 423-548, 557, 562-566, 574, 609-712, 721, 726-730, 738, 748-845, 859-863, 908-946, 955, 960-964, 972, 1007-1008, 1022-1026, 1072-1110, 1119, 1124-1128, 1136, 1146, 1164, 1171, 1178-1180, 1203, 1219-1641, 1656, 1658, 1704-1742, 1751, 1756-1760, 1768, 1803-1804, 1819, 1821, 1868-1906, 1915, 1920-1924, 1932, 1942, 1985-1987, 1999-2039, 2053-2057, 2060, 2067, 2071, 2102-2202, 2216-2220, 2223, 2235, 2241-2243, 2266-2340, 2358, 2362, 2365, 2372-2374, 2383-2385, 2397-2815, 2824-2830, 2835, 2844, 2858-2872, 2880-2895, 2898-2904, 2909, 2915-3100, 3112, 3120, 3125-3160, 3171, 3182, 3191-3200, 3209, 3216-3218, 3225-3227, 3236
pandas/_libs/algos_rank_helper.pxi          502    135    73%   16-17, 41, 67-68, 100, 102-103, 110, 115-116, 150, 170-173, 212, 215-216, 223, 234-235, 326-327, 426, 437-438, 469-471, 476, 495-510, 513, 518-617, 658, 676-677, 695-696, 703, 708-709, 755-757, 790-805
pandas/_libs/algos_take_helper.pxi         2056   1268    38%   14-17, 41-44, 68, 76-79, 99-108, 123-126, 155-164, 169-170, 179-182, 191, 207-210, 229, 237, 245-277, 301-304, 320-339, 383-386, 400-442, 451, 467-470, 485-537, 561-564, 588, 596-599, 619-628, 643-646, 675-684, 689-690, 699-702, 711, 727-730, 749, 757, 765-1379, 1423-1426, 1440-1577, 1601-1604, 1628, 1636-1639, 1659-1668, 1683-1686, 1715-1724, 1729-1730, 1739-1742, 1751, 1767-1770, 1789, 1797, 1805-2617, 2641-2644, 2668, 2676-2679, 2702-2703, 2723-2726, 2755-2764, 2769-2770, 2779-2782, 2791, 2807-2810, 2829, 2837, 2845-3137, 3161-3164, 3180-3199, 3243-3246, 3260-3302, 3311, 3327-3330, 3345-3397, 3421-3424, 3448, 3456-3459, 3482-3483, 3503-3506, 3535-3544, 3549-3550, 3559-3562, 3587-3590, 3609, 3617, 3625-3628, 3642-3643, 3647, 3654-3657, 3681-3684, 3700-3719, 3763-3766, 3780-3822, 3831, 3847-3850, 3865-3888, 3914-3917, 3941-3944, 3976-3979, 4002-4003, 4023-4026, 4055-4064, 4079-4082, 4091, 4107-4110, 4129, 4145-4437, 4461-4464, 4496-4499, 4543-4546, 4575-4584, 4599-4602, 4627-4630, 4649, 4665-4668, 4694-4697, 4721-4724, 4756-4759, 4803-4806, 4859-4862, 4887-4890, 4909, 4925-4955, 4969-4983, 4997
pandas/_libs/groupby.pyx                    137     51    63%   61, 97-129, 156, 191-225, 265
pandas/_libs/groupby_helper.pxi             830    314    62%   9-18, 31, 81, 94, 141, 151, 190, 245, 263, 266, 274, 291-414, 424, 437, 463-518, 531, 536, 539, 547, 568, 582, 593, 607, 614, 628, 639, 654, 661-754, 768, 779, 800, 814, 851, 864, 878, 914, 927, 941, 977, 999, 1013, 1035, 1048-1245, 1258, 1308, 1321, 1350, 1371, 1393, 1399, 1409, 1431, 1436, 1450, 1486, 1507, 1517, 1538, 1553, 1573-1575
pandas/_libs/hashing.pyx                    102     20    80%   71, 76, 101, 105-117, 128, 146-155
pandas/_libs/hashtable.pyx                   84     26    69%   63-67, 72, 75-76, 92, 101-111, 116, 119-120, 127-129, 136-143
pandas/_libs/hashtable_class_helper.pxi     904    334    63%   21, 30, 43-56, 68, 82, 86, 93, 98, 103-106, 110, 116-136, 140, 147-152, 157-160, 164, 170-186, 190, 197, 202, 207, 210, 214, 220, 224, 229, 239-309, 316, 319, 331, 334, 340, 355, 360, 363, 368, 373, 379, 387-414, 428, 447-455, 498-541, 568-569, 576, 581, 584, 589, 594, 600, 608-635, 649, 668-676, 694-695, 711, 719-759, 779-780, 787, 792, 795, 800, 805, 811, 819, 829-832, 846, 860, 879-887, 930, 973, 1003-1005, 1010, 1015-1077, 1112-1118, 1135, 1151, 1179, 1235-1239, 1243, 1248, 1251, 1259, 1265, 1275, 1283, 1289-1291, 1307, 1329, 1352-1354, 1389, 1394, 1399, 1402-1408, 1421-1422, 1424-1428, 1435-1448, 1464-1468, 1487, 1509, 1514-1520
pandas/_libs/hashtable_func_helper.pxi      355     41    88%   14, 41, 73, 84, 121, 172, 199, 231, 242, 279-330, 356, 384, 394, 428, 477, 504, 536, 547, 584, 643, 680, 717
pandas/_libs/index.pyx                      399    111    72%   33, 48, 53, 58-60, 72, 79, 89-97, 103, 108, 126, 142, 148, 168, 180, 187, 216, 222-227, 233, 240, 248, 254, 272, 275-281, 305, 308, 317, 321, 388, 402, 405, 411, 428, 431-443, 446, 449, 465-469, 488-490, 495, 498, 502, 504, 508, 510, 518, 524, 527, 530, 533-564, 568, 585, 615, 621, 637-653, 659, 666, 670
pandas/_libs/index_class_helper.pxi         119     48    60%   14, 17, 21, 25, 27, 30, 60, 66, 69, 73, 77, 79, 82, 84-85, 88-126, 129, 133, 137, 139, 145, 148, 180, 186, 189, 193, 197
pandas/_libs/indexing.pyx                    11      3    73%   11-13, 19
pandas/_libs/interval.pyx                   120     37    69%   22, 26, 30, 34, 38, 41-46, 89-92, 96, 98, 103, 106, 112, 133-137, 143-144, 148, 154, 161, 168, 173, 180-185, 190-198
pandas/_libs/intervaltree.pxi              1541   1137    26%   11-46, 62, 78, 86, 93, 103, 117, 130, 153, 173-184, 190, 205-392, 408-409, 420-478, 497-902, 918-919, 948, 972, 988, 1022, 1028-1072, 1088-1089, 1118, 1142, 1158, 1183, 1198-1242, 1258-1259, 1288, 1312, 1328, 1368-1412, 1428-1429, 1458, 1482, 1498, 1523, 1532, 1538-1752, 1768-1769, 1780-1838, 1857-2262, 2278-2279, 2290-2348, 2367-2432, 2448-2449, 2460-2518, 2537-2602, 2618-2619, 2630-2688, 2707-2772, 2788-2789, 2800-2858, 2873-2924
pandas/_libs/join.pyx                       146     11    92%   79, 249-256, 259-261, 264-267
pandas/_libs/join_func_helper.pxi          3690   3105    16%   15-1267, 1326-1332, 1345-1346, 1360, 1369-1372, 1384-1386, 1391-1397, 1439-1801, 1814-1815, 1829, 1838-1841, 1853-1855, 1860-1979, 1992-1993, 2007, 2016-2019, 2031-2033, 2038-2157, 2170-2171, 2185, 2194-2197, 2209-2211, 2216-2335, 2348-2349, 2363, 2372-2375, 2387-2389, 2394-2513, 2526-2527, 2541, 2550-2553, 2565-2567, 2572-2691, 2704-2705, 2719, 2728-2731, 2743-2745, 2750-2869, 2882-2883, 2897, 2906-2909, 2921-2923, 2928-3047, 3060-3061, 3075, 3084-3087, 3099-3101, 3106-3225, 3238-3239, 3253, 3262-3265, 3277-3279, 3284-3403, 3416-3417, 3431, 3440-3443, 3455-3457, 3462-5364, 5375-5376, 5388, 5396-5398, 5407-5409, 5414-5509, 5520-5521, 5533, 5541-5543, 5552-5554, 5559-5654, 5665-5666, 5678, 5686-5688, 5697-5699, 5704-5799, 5810-5811, 5823, 5831-5833, 5842-5844, 5849-5944, 5955-5956, 5968, 5976-5978, 5987-5989, 5994-6089, 6100-6101, 6113, 6121-6123, 6132-6134, 6139-6234, 6245-6246, 6258, 6266-6268, 6277-6279, 6284-6379, 6429-6433, 6484-6488, 6520-6524, 6535-6536, 6548, 6556-6558, 6567-6569, 6574-6669, 6680-6681, 6693, 6701-6703, 6712-6714, 6719-6807
pandas/_libs/join_helper.pxi               1596    601    62%   18-168, 188, 198, 203-213, 227, 240, 245-255, 262, 295, 362, 396-640, 664-665, 672-677, 684, 689-690, 722-728, 739-744, 751, 759-763, 774, 806-807, 820, 855-861, 903-909, 924, 954, 996, 1018, 1051, 1118, 1152-1396, 1420-1421, 1428-1433, 1440, 1445-1446, 1478-1484, 1495-1500, 1507, 1515-1519, 1530, 1562-1563, 1576, 1680, 1774, 1908, 1926-1928, 1940-1941, 1954, 1989-2000, 2037-2051, 2058, 2088, 2130, 2152, 2167, 2169, 2173-2174, 2185, 2191-2193, 2214-2217, 2219-2222, 2226-2232, 2252, 2258-2260
pandas/_libs/lib.pyx                        895    210    77%   34, 83-101, 121, 173, 192-204, 231, 258, 298, 361, 432-450, 543, 558-559, 588, 617-618, 633, 663-679, 690-691, 704, 734, 747, 813, 827-841, 919, 927, 994, 998, 1001, 1039-1053, 1061-1075, 1103-1109, 1114-1119, 1154-1163, 1178-1184, 1186-1213, 1255, 1315-1373, 1379, 1390, 1410, 1468, 1493, 1518-1519, 1526, 1541, 1564-1571, 1575, 1582, 1592, 1595, 1600, 1607, 1612, 1622, 1626, 1638, 1641, 1648, 1685, 1692, 1695-1698
pandas/_libs/missing.pyx                    106     14    87%   28, 36, 44, 62, 94, 99, 127, 131, 133, 138, 142-143, 302, 309
pandas/_libs/parsers.pyx                   1270    210    83%   100-101, 305-313, 316-334, 336-379, 384, 415, 441, 454, 477-478, 577-580, 590, 607-610, 634, 643, 681-690, 703, 709-711, 724, 733, 740-743, 793, 795-796, 894-897, 920, 942, 958, 971, 985, 1023-1026, 1029, 1034, 1037-1040, 1150, 1158, 1219, 1273-1274, 1295, 1303, 1306, 1310, 1320, 1341, 1348, 1352, 1355, 1382, 1390, 1392, 1404-1415, 1441, 1454, 1507, 1560, 1593-1595, 1602, 1619, 1678, 1682, 1690, 1707, 1726, 1766, 1836, 1861, 1871, 1900-1905, 1909, 1937, 1976-2040, 2067, 2111, 2131, 2136, 2153, 2159, 2179, 2201, 2212, 2216, 2292, 2314-2324, 2358, 2386
pandas/_libs/period.pyx                     560    115    79%   173, 183, 191, 227, 233, 244, 251, 273, 279, 281, 283, 288, 291, 293, 295, 297, 299, 301-304, 310-314, 319, 329, 347, 351-353, 355, 357, 359-360, 371, 378-380, 391, 405, 408, 410, 412, 414, 416, 418, 420, 422, 424, 426, 428, 477, 487, 498-499, 508-509, 524, 529-534, 540-541, 562-563, 567, 598, 617, 620, 641-643, 658-660, 683-685, 716, 720, 726, 759, 764, 769, 774, 779, 784, 789, 794, 798, 803, 807, 812, 817, 822, 827-831, 839, 843, 846, 851, 863-867, 871, 1034-1035, 1094, 1099-1101, 1110
pandas/_libs/properties.pyx                  42     17    60%   15-17, 23, 28, 46-65, 68, 79
pandas/_libs/reshape.pyx                      5      0   100%
pandas/_libs/reshape_helper.pxi             131     66    50%   14-254, 302, 350, 398, 446, 494
pandas/_libs/skiplist.pyx                    73     11    85%   16, 36, 53, 58-64, 78, 117, 135
pandas/_libs/sparse.pyx                     409     75    82%   30-60, 67, 71, 76, 113, 125, 128, 131, 135, 170, 186, 210, 240, 261, 271-279, 330-338, 356, 360, 368, 371, 386, 391, 402-404, 416, 419, 436, 519, 538, 564, 594-637, 642, 658-661, 681, 729, 741, 806-818
pandas/_libs/sparse_op_helper.pxi          3017    708    77%   11, 16, 22, 25, 30-33, 38, 44, 49, 55, 58, 64, 77, 178, 236, 248-258, 359, 417, 429-439, 540, 598, 610-620, 721, 779, 791-801, 902, 960, 972-982, 1083, 1141, 1153-1525, 1626, 1684, 1696-1706, 1751-1759, 1807, 1865, 1877-1887, 1988, 2046, 2058-2068, 2169, 2227, 2239-2249, 2350, 2408, 2420-2430, 2475-2483, 2531, 2589, 2601-2611, 2712, 2770, 2782-2792, 2893, 2951, 2963-2973, 3018-3026, 3074, 3102-3104, 3132, 3144-3154, 3199-3207, 3255, 3283-3285, 3313, 3325-3335, 3380-3388, 3436, 3464-3466, 3494, 3506-3516, 3561-3569, 3617, 3645-3647, 3675, 3687-3697, 3742-3750, 3798, 3826-3828, 3856, 3868-3878, 3923-3931, 3979, 4007-4009, 4037, 4049-4059, 4104-4112, 4160, 4188-4190, 4218, 4230-4240, 4285-4293, 4341, 4369-4371, 4399, 4411-4421, 4466-4474, 4522, 4550-4552, 4580, 4592-4602, 4647-4655, 4703, 4731-4733, 4761, 4773-4783, 4828-4836, 4884, 4912-4914, 4942, 4954-4964, 5009-5017, 5065, 5093-5095, 5123, 5135-5326, 5359-5367, 5427, 5461-5463, 5485, 5497-5688, 5721-5729, 5789, 5823-5825, 5847, 5859-5864
pandas/_libs/src/inference.pyx              875    198    77%   1-20, 24, 28, 32, 36, 40, 44, 50-117, 140, 173, 180, 194, 198, 202, 206, 217, 339, 352, 384, 393-394, 401, 438-439, 459, 540, 550, 562, 574, 584, 587, 590, 593, 604-608, 614, 630, 643, 654, 657, 660-667, 670, 673, 676, 684, 687, 691, 703, 706, 710, 721, 724, 728, 739, 742, 746, 753, 756, 760, 772, 775, 779, 791-816, 823-833, 840, 846, 849, 853, 864, 868, 877, 887, 907, 910, 914, 925, 929, 940, 944, 956, 960, 967, 971, 978, 981, 985, 992, 996, 1010-1018, 1118-1119, 1132, 1160, 1168, 1178-1185, 1231-1232, 1234-1235, 1246-1248, 1350-1353, 1357-1358, 1360-1361, 1365, 1367-1368, 1370-1375, 1380, 1384-1385, 1408-1409, 1457, 1487, 1500, 1539, 1581, 1598, 1629, 1651, 1685, 1691, 1694-1698, 1710, 1713-1719
pandas/_libs/src/reduce.pyx                 356     51    86%   3-10, 29-30, 54, 74, 76-77, 81, 123, 173-176, 200, 204-205, 209, 211, 214, 218, 301-304, 313, 324, 328-329, 335, 338, 342, 418, 426, 440, 444, 458, 461, 468, 471, 478-482, 542-550, 568, 571, 589, 602
pandas/_libs/testing.pyx                    125     17    86%   28, 31, 34, 37, 40, 46, 62-65, 124-126, 130, 159, 181-183, 194
pandas/_libs/tslib.pyx                      431     54    87%   70, 77, 126-127, 144, 200, 213, 232-234, 239, 257, 347, 444, 446-463, 495, 500-503, 540-544, 602-603, 651-655, 677, 693, 696, 708, 712-713, 730, 742, 749, 766
pandas/_libs/tslibs/__init__.py               0      0   100%
pandas/_libs/tslibs/conversion.pyx          529     60    89%   59, 111, 174, 210, 214, 235, 302, 340, 378-380, 470, 508, 513, 522, 533, 562, 575, 584-588, 595, 633-643, 657, 662, 676, 692, 697, 710, 822-825, 841-842, 848-850, 894, 904, 917, 965, 991-992, 998-999, 1012, 1019-1020, 1026-1027, 1034
pandas/_libs/tslibs/fields.pyx              473     71    85%   58-63, 112-113, 120, 125, 177-178, 204-205, 240-241, 268-269, 305-306, 333-334, 366, 559, 589-597, 600-608, 622-630, 636-637, 644-652, 655-663, 669-670, 676-679, 683
pandas/_libs/tslibs/frequencies.pyx          58      3    95%   120, 172, 197
pandas/_libs/tslibs/nattype.pyx             220     31    86%   79, 84-87, 102-109, 116-120, 126, 141, 168-171, 174, 177-183, 186-189, 192-194, 276, 279, 284, 578
pandas/_libs/tslibs/np_datetime.pyx          67     10    85%   42, 52, 59, 78, 101, 125, 131, 138, 146, 159
pandas/_libs/tslibs/offsets.pyx             344     28    92%   120, 141, 151, 172, 192, 203, 260, 280, 450, 459, 463, 468, 501-502, 518-519, 542-543, 564-565, 587-588, 607, 613, 669, 709-710, 719
pandas/_libs/tslibs/parsing.pyx             362     54    85%   33-34, 75, 100, 110, 157, 185, 189, 207, 263, 314, 352, 355-368, 370, 378, 404, 423, 426-428, 435, 446-447, 454, 465, 471, 490, 516, 550, 597, 606-616, 630, 634-637, 674, 687
pandas/_libs/tslibs/resolution.pyx          360     30    92%   67, 79, 87, 97, 103-113, 120, 125-131, 135, 144, 179, 365, 650-652
pandas/_libs/tslibs/strptime.pyx            325     95    71%   18-25, 50, 91-92, 102-111, 150-151, 166-168, 173-179, 202-210, 212, 214-217, 220, 223, 226, 235-242, 244, 246, 253-257, 263-265, 273-288, 312-316, 332-336, 408, 412-417, 464-468, 485, 499, 505, 524, 574, 615, 636
pandas/_libs/tslibs/timedeltas.pyx          494     78    84%   84, 86, 101, 124-125, 133, 141, 143, 160, 171, 197, 226, 241, 292-293, 321-323, 328-329, 342, 360-361, 385, 410, 423, 447, 482-483, 512, 529-532, 537, 543, 560-568, 583, 586, 609, 616, 620, 626-631, 639, 644, 649, 654, 656, 662, 669, 678, 725, 728, 731, 846, 864-865, 906, 916, 969, 973, 999-1010
pandas/_libs/tslibs/timestamps.pyx          463     65    86%   48, 70-73, 78, 94-95, 110-112, 125, 131, 156-178, 187, 197, 211, 215, 226, 228, 248-249, 252, 293, 302, 310, 330, 335, 341, 352-364, 367, 524, 677-679, 844-845, 928, 944-946
pandas/_libs/tslibs/timezones.pyx           144     24    83%   19, 41, 45, 49, 54, 58, 76, 96, 109, 113, 126, 146, 163, 170, 178-179, 185, 200, 218, 240, 268-270, 295
pandas/_libs/window.pyx                     777     54    93%   35-36, 72, 74, 81, 114, 145-147, 183-185, 228, 246, 292, 300, 415, 426, 435, 517, 536, 548, 633, 653, 669, 788, 819, 832, 920, 954, 968, 1076, 1092, 1110, 1126, 1136, 1143, 1148, 1153, 1158, 1164, 1174, 1216, 1315, 1334, 1435, 1452, 1499, 1521, 1545, 1586, 1655-1656, 1715-1717
pandas/_version.py                          262    146    44%   73-84, 87, 89-91, 98-106, 117-132, 138, 142, 144-175, 188-190, 194, 202, 206, 222, 231-234, 239-246, 257-260, 267, 285-291, 301-308, 320-334, 343-354, 364-373, 383-391, 396, 402, 406-417, 445-446, 453-462
pandas/api/__init__.py                        0      0   100%
pandas/api/types/__init__.py                  4      0   100%
pandas/compat/__init__.py                   232     64    72%   56, 58, 70, 105, 114-115, 123-125, 128-132, 200-209, 234, 248-297, 347, 363-365, 375, 382-385, 406, 412-415, 431
pandas/compat/chainmap.py                    21      6    71%   17-21, 26
pandas/compat/chainmap_impl.py               75     33    56%   5-6, 16-24, 69, 79, 82, 92, 99, 108-110, 115, 118, 121-124, 132-135, 142-145, 150
pandas/compat/numpy/__init__.py              33      2    94%   20, 66
pandas/compat/numpy/function.py             165     19    88%   48, 56, 69-70, 129-130, 150-151, 180-181, 255-256, 270-281, 362
pandas/compat/openpyxl_compat.py             11      1    91%   34
pandas/compat/pickle_compat.py               82     27    67%   36-54, 115-121, 146, 157-166, 193
pandas/computation/__init__.py                0      0   100%
pandas/computation/expressions.py             5      5     0%   1-11
pandas/conftest.py                           35      3    91%   26, 68-69
pandas/core/__init__.py                       0      0   100%
pandas/core/accessor.py                      64      4    94%   57, 60, 68, 80
pandas/core/algorithms.py                   598     35    94%   537, 673-674, 752-756, 876, 885-890, 896, 1112, 1120, 1122, 1327-1328, 1341, 1364, 1399-1402, 1406, 1410, 1415-1416, 1424, 1433, 1448-1450, 1506
pandas/core/api.py                           40      0   100%
pandas/core/base.py                         434     14    97%   49, 60, 91, 208, 255, 280, 310, 577-578, 617, 723, 831, 884, 1237
pandas/core/categorical.py                  738     31    96%   441, 676, 840-843, 1064-1065, 1203, 1307-1309, 1331, 1352-1355, 1522-1523, 1603, 1657-1660, 1696, 1791, 1890-1893, 1921-1922, 2022, 2112, 2131-2132, 2298
pandas/core/common.py                       329     23    93%   99-100, 147, 153-154, 318-321, 488, 584-588, 591, 601-610, 619
pandas/core/computation/__init__.py           0      0   100%
pandas/core/computation/align.py             95      2    98%   19, 25
pandas/core/computation/api.py                6      0   100%
pandas/core/computation/check.py             11      1    91%   13
pandas/core/computation/common.py            14      3    79%   9, 18-20
pandas/core/computation/engines.py           63      7    89%   98, 126-130, 148
pandas/core/computation/eval.py             104      3    97%   40, 52, 271
pandas/core/computation/expr.py             388     63    84%   53-54, 442, 479-489, 517, 534-539, 546-591, 597, 599, 612, 615, 621, 630-643, 690, 752
pandas/core/computation/expressions.py      119      7    94%   113, 143-147, 222
pandas/core/computation/ops.py              273     12    96%   122, 149, 153, 337-340, 407, 421, 430, 501-502, 519
pandas/core/computation/pytables.py         328    230    30%   33-35, 38, 42-52, 56, 62, 66, 74-78, 81, 85-126, 130-134, 139, 145, 150, 155, 160, 164-165, 171-219, 223, 229, 234-238, 242, 246-280, 283-286, 295, 301, 314, 318-343, 349-352, 359-373, 392-396, 400, 403-405, 410-420, 424-446, 450, 453, 476, 525-526, 529-535, 541-545, 548-550, 555-568, 576-578, 583-591, 596-601
pandas/core/computation/scope.py            102      9    91%   36-38, 75-77, 138-141
pandas/core/config.py                       301     37    88%   85, 115-116, 148, 158, 161, 185, 206, 228-230, 390, 442-443, 468, 662-686, 784, 807
pandas/core/config_init.py                  121      2    98%   42-43
pandas/core/datetools.py                     38      5    87%   23-27
pandas/core/dtypes/__init__.py                0      0   100%
pandas/core/dtypes/api.py                    13      0   100%
pandas/core/dtypes/cast.py                  575     65    89%   77, 90, 92, 200-201, 207-223, 235-244, 248-249, 264-266, 279-282, 286-290, 293, 322, 534-535, 553, 605, 621, 630, 656, 668, 685, 716, 718, 740-745, 762-763, 782, 787, 789, 792-793, 823-824, 862, 864-865, 997, 1156, 1160
pandas/core/dtypes/common.py                397     22    94%   185-186, 1195, 1198, 1406, 1582, 1708-1710, 1718, 1809, 1843, 1893, 1919, 1923, 1934-1935, 1938-1941, 1948
pandas/core/dtypes/concat.py                231      2    99%   444, 463
pandas/core/dtypes/dtypes.py                350     14    96%   42, 204, 249-250, 531, 580-582, 642-644, 700-702
pandas/core/dtypes/generic.py                30      0   100%
pandas/core/dtypes/inference.py              61      1    98%   138
pandas/core/dtypes/missing.py               164     16    90%   88-93, 135, 138-139, 175, 183, 355-359, 395
pandas/core/frame.py                       2058     45    98%   467, 501, 583, 600, 651, 807-808, 1053-1054, 1093, 1097-1098, 1638-1639, 1850, 2071, 2076-2077, 2104-2105, 2108, 2119, 2477, 2579-2580, 2703, 3674, 3957, 3961, 4076, 4103-4106, 4126-4127, 4775, 5502, 5674, 5733, 6124, 6237, 6274, 6324, 6348
pandas/core/generic.py                     1944     93    95%   87, 188, 193-194, 207, 277-278, 318, 342, 427, 469, 596, 621, 704-705, 851, 1146, 1207, 1209, 1471-1472, 1678-1695, 1856, 1861, 1921, 1952, 2068-2069, 2399, 2553-2554, 3035, 3136-3142, 3410, 3624, 3628, 3809, 4022, 4341, 4469, 4487, 4500, 4578, 4603, 4710, 4909, 5267-5268, 5292, 5762-5764, 5777, 5816, 5928-5929, 5935-5942, 6113, 6134, 6200, 6251, 6409, 6744, 6748-6756, 6763, 6784-6786, 6813-6816
pandas/core/groupby.py                     2009    162    92%   336, 417, 460, 606, 724, 746, 786-795, 828-829, 847, 886, 1167, 1201, 1205, 1387-1390, 1420, 1453, 1611, 1620, 1639, 1941-1944, 2209-2218, 2265-2268, 2444-2445, 2454, 2595, 2617, 2661, 2902, 3108-3110, 3119, 3237, 3277, 3305-3310, 3357, 3363-3479, 3693, 3785, 3794, 3835-3836, 3914, 3985, 4313, 4463-4477, 4520-4536, 4539, 4592, 4595, 4617-4619
pandas/core/index.py                          2      0   100%
pandas/core/indexes/__init__.py               0      0   100%
pandas/core/indexes/accessors.py             94     10    89%   27-32, 55, 78, 102, 134
pandas/core/indexes/api.py                   82      1    99%   97
pandas/core/indexes/base.py                1818     63    97%   79-82, 187, 365, 371, 407-409, 454, 461-462, 494, 526, 808, 818, 823, 878, 1224, 1228, 1240, 1419, 1455, 1457, 1459-1461, 1475, 1566-1568, 1655-1657, 1674, 1763, 1884, 2043-2044, 2379-2380, 2439-2440, 2713, 2811, 2860, 2921, 3050, 3335, 3650, 3916, 3919, 3922, 3954-3957, 4015, 4031, 4061, 4081, 4183
pandas/core/indexes/category.py             358     10    97%   80, 203, 211, 213, 239, 318, 325, 384, 431, 627
pandas/core/indexes/datetimelike.py         454     14    97%   149, 151, 203-207, 237, 300, 569, 627, 672, 699, 707
pandas/core/indexes/datetimes.py           1050     46    96%   136, 427-428, 486-487, 498, 549, 552, 555, 572, 575, 578, 642, 728, 731, 769, 785-786, 796, 831, 869, 1090-1091, 1094-1097, 1185-1189, 1193, 1217, 1247, 1287, 1289, 1300, 1384, 1512, 1583, 1587, 2060, 2275-2280, 2284
pandas/core/indexes/frozen.py                68      6    91%   41, 57, 65, 89, 139-140
pandas/core/indexes/interval.py             575     39    93%   56, 58, 64, 71, 79, 92, 101, 187, 232, 235, 284, 312, 588, 591, 594-597, 783, 845, 946, 950, 964-965, 974-977, 988-989, 1062-1067, 1088, 1092-1093, 1108, 1110-1111, 1154
pandas/core/indexes/multi.py               1208     49    96%   189, 212, 216, 315, 430, 537, 630-636, 640, 657, 722, 726, 754-757, 813, 817, 897-907, 1127, 1217, 1440-1443, 1616, 1785, 1846, 1877, 1947, 2110-2113, 2163, 2289, 2534, 2718, 2823
pandas/core/indexes/numeric.py              219      6    97%   250, 259, 272, 335, 397-398
pandas/core/indexes/period.py               638     45    93%   258, 367, 392, 407, 429, 450-451, 454-459, 462, 514, 710-724, 738, 742-743, 830-831, 916-917, 940-945, 951, 955-961, 968, 1042, 1062
pandas/core/indexes/range.py                323     12    96%   106, 116, 134-138, 145, 492, 496, 530, 538, 622
pandas/core/indexes/timedeltas.py           512     45    91%   81, 94, 209, 294-295, 301-306, 312, 314, 326, 344-347, 367, 521-522, 553-554, 560, 568, 587, 608, 631-632, 637, 639, 644, 658, 675-684, 688, 767, 773, 826, 969
pandas/core/indexing.py                    1098     79    93%   139, 145, 150, 181, 210, 249, 267, 281-284, 398, 489-499, 579, 712, 759-761, 786, 841-843, 869, 883, 909-910, 914, 918-919, 950, 955, 991, 1071, 1098, 1108, 1132-1137, 1206, 1209-1211, 1276, 1287, 1290, 1296, 1382, 1394, 1493, 1507, 1520, 1682, 1743, 1753, 1762, 1772, 1788, 1797, 1822, 1845, 1853, 1862, 1878, 1928, 1962, 1996-2005, 2088-2092, 2162-2163
pandas/core/internals.py                   2824    156    94%   240, 298, 308, 335-343, 451, 470, 509, 528, 641, 664, 683-692, 817, 892, 1025, 1085-1088, 1150-1153, 1178, 1231-1235, 1341, 1363-1364, 1462, 1476-1485, 1509, 1531, 1605-1606, 1633-1636, 1680, 1684, 1687, 1713, 1735, 1739, 1835, 1989, 2159-2163, 2166-2174, 2223-2231, 2267, 2357, 2407, 2557-2558, 2597, 2622, 2653, 2680, 2721, 2775, 2791, 2796, 2820-2821, 2853, 2906-2913, 2947, 3060, 3160, 3191, 3287, 3411-3412, 3621, 3723, 4090, 4123, 4166, 4283, 4327, 4392, 4402-4407, 4416-4418, 4421, 4440, 4445, 4450, 4457, 4461-4486, 4490, 4523, 4526, 4552, 4562, 4707, 4710, 4861, 4921, 4970, 5190, 5272, 5303, 5343, 5487, 5627
pandas/core/missing.py                      344     54    84%   36-37, 48, 55, 60, 214, 252-253, 268, 273-274, 280-281, 302, 304, 306, 351-356, 405-407, 410-413, 475, 479-480, 483, 487, 494-517, 536, 567, 614
pandas/core/nanops.py                       511     17    97%   35, 133, 217, 256, 378-382, 475-479, 682-683, 750
pandas/core/ops.py                          608     51    92%   155, 158-163, 166-167, 290, 398, 450-451, 499, 506, 540, 544, 564, 585, 703-705, 818, 820, 830, 881, 908, 1073, 1215-1216, 1230, 1356-1369, 1390-1406
pandas/core/panel.py                        700     22    97%   165, 457, 466-467, 509, 560, 686, 888-889, 1053-1054, 1101, 1193, 1309, 1540-1541, 1581-1593, 1627-1630, 1637-1640
pandas/core/panel4d.py                       22      0   100%
pandas/core/panelnd.py                       56      1    98%   66
pandas/core/resample.py                     602     21    97%   235, 351, 354, 670, 757, 819, 839, 946, 953, 967, 982, 1115, 1154-1155, 1207, 1233, 1237-1239, 1255, 1311, 1316
pandas/core/reshape/__init__.py               0      0   100%
pandas/core/reshape/api.py                    6      0   100%
pandas/core/reshape/concat.py               248      6    98%   451-453, 472, 522, 531
pandas/core/reshape/melt.py                 106      4    96%   27, 59, 123, 356
pandas/core/reshape/merge.py                631     36    94%   93-99, 109-119, 129-130, 229, 803-804, 974, 1167, 1205, 1216, 1220, 1222, 1240, 1246, 1289, 1394, 1508, 1541-1547
pandas/core/reshape/pivot.py                302     11    96%   112-113, 183, 225, 317-322, 538
pandas/core/reshape/reshape.py              461      0   100%
pandas/core/reshape/tile.py                 154     15    90%   103-105, 272-276, 288-289, 313-316, 336-337
pandas/core/reshape/util.py                  31      3    90%   11-13
pandas/core/series.py                      1032     56    95%   166, 235, 487, 542, 576, 604-615, 658, 686-688, 693, 750, 762, 766-773, 785, 819-822, 831, 847, 858, 926-930, 1039, 1052, 1129-1131, 1897-1900, 1933, 1969, 2671, 2958, 3091, 3099, 3101, 3188-3189, 3222, 3237
pandas/core/sorting.py                      222      5    98%   132, 192, 205, 260, 443
pandas/core/sparse/__init__.py                0      0   100%
pandas/core/sparse/api.py                     4      0   100%
pandas/core/sparse/array.py                 428     22    95%   195, 197, 238, 257, 299, 331-332, 438, 482, 535, 537, 587-592, 722-723, 764-766, 846
pandas/core/sparse/frame.py                 460     24    95%   61, 63, 65, 67, 76, 120, 247-248, 528-529, 569, 572, 652, 746, 767-778
pandas/core/sparse/list.py                   69      2    97%   37-38
pandas/core/sparse/scipy_sparse.py           68      2    97%   65-66
pandas/core/sparse/series.py                343     16    95%   61, 123, 167, 181, 189, 202, 294, 296, 326, 338-339, 400, 421-423, 428, 560
pandas/core/strings.py                      655     10    98%   148, 178, 495, 688, 1030, 1062, 1241, 1323, 1330-1331
pandas/core/tools/__init__.py                 0      0   100%
pandas/core/tools/datetimes.py              303     47    84%   283, 292-293, 309, 311, 338-339, 348-350, 358, 393-394, 528, 575-576, 641-651, 686, 689, 695, 699-711, 735-738, 743, 747-748, 750, 752
pandas/core/tools/numeric.py                 67      0   100%
pandas/core/tools/timedeltas.py              63      1    98%   79
pandas/core/util/__init__.py                  0      0   100%
pandas/core/util/hashing.py                 121      2    98%   270, 275
pandas/core/window.py                       856     31    96%   94, 98, 137, 182, 257-258, 317, 323, 519-520, 528, 538, 559, 592-594, 775, 1450, 1735, 1760-1762, 1772, 1963, 2009-2010, 2037, 2040, 2061, 2074, 2084
pandas/errors/__init__.py                    10      0   100%
pandas/formats/__init__.py                    0      0   100%
pandas/formats/style.py                       3      0   100%
pandas/io/__init__.py                         0      0   100%
pandas/io/api.py                             19      0   100%
pandas/io/clipboard/__init__.py              51     31    39%   46, 56, 58, 60, 63-98, 106-115
pandas/io/clipboard/clipboards.py            87     68    22%   13-24, 28-44, 51-71, 75-86, 90-101, 105-129, 140-143
pandas/io/clipboard/exceptions.py             7      2    71%   11-12
pandas/io/clipboard/windows.py               86     76    12%   14, 17-20, 23, 27-153
pandas/io/clipboards.py                       2      0   100%
pandas/io/common.py                         236     36    85%   32-38, 52-53, 69, 152, 159-160, 165, 167, 194, 199-200, 228, 319, 333-334, 355, 374-375, 388-396, 402-404, 411-416, 450, 477
pandas/io/data.py                             1      1     0%   1
pandas/io/date_converters.py                 38      0   100%
pandas/io/excel.py                          714    197    72%   165, 181, 195, 197, 200-202, 206-207, 262-263, 278, 283, 296, 300, 416-425, 443, 464, 490, 582, 653, 715, 738, 743, 762, 769, 795, 799, 812-815, 853-856, 867-927, 939-949, 972-1031, 1141, 1163, 1211, 1215, 1218-1222, 1226-1227, 1257, 1259, 1298, 1300, 1347, 1478, 1670-1721, 1731-1738, 1745, 1750-1790
pandas/io/feather_format.py                  35     28    20%   13-34, 47-83, 106-112
pandas/io/formats/__init__.py                 0      0   100%
pandas/io/formats/common.py                  18      1    94%   23
pandas/io/formats/console.py                 33     10    70%   24-25, 29-32, 36, 72-74
pandas/io/formats/css.py                    113      0   100%
pandas/io/formats/excel.py                  304     10    97%   162, 168, 307-308, 405, 455, 476-478, 542, 574
pandas/io/formats/format.py                1407     56    96%   129-131, 137, 153, 485, 496, 712, 751, 771, 885-889, 911, 1208-1210, 1240, 1249-1254, 1291-1297, 1313-1321, 1338, 1361-1362, 1511, 1523, 1584, 1601, 1631, 1949, 1960, 2204, 2207, 2345-2354
pandas/io/formats/printing.py               113     12    89%   62-64, 124, 140, 153, 201, 213, 225, 236-237, 243
pandas/io/formats/style.py                  396     15    96%   16-20, 37-39, 47, 374, 1078, 1080-1083, 1158-1162
pandas/io/formats/terminal.py                73     38    48%   33, 38-40, 47, 52-73, 80-94, 114-115, 117-121
pandas/io/gbq.py                             12      9    25%   7-21, 93-94, 105-106
pandas/io/html.py                           321     46    86%   45-46, 51-52, 57-58, 131-132, 144, 237, 251, 278, 293, 308, 323, 338, 347, 414, 430, 442, 449, 474-478, 527, 532, 563-564, 576-585, 588, 595, 598, 676, 682, 684, 688, 697, 712-718
pandas/io/json/__init__.py                    4      0   100%
pandas/io/json/json.py                      400     33    92%   35, 66, 89, 439-440, 501-502, 546, 579, 595, 617-618, 641-645, 666-667, 702-703, 708, 733-737, 748, 771-775, 829, 838
pandas/io/json/normalize.py                  98      4    96%   18, 71, 83, 220
pandas/io/json/table_schema.py               72      3    96%   60, 177-178
pandas/io/msgpack/__init__.py                24      5    79%   13, 15, 17, 32-33
pandas/io/msgpack/_version.py                 1      0   100%
pandas/io/msgpack/exceptions.py              18      3    83%   20-21, 24
pandas/io/packers.py                        326     34    90%   79-81, 97-98, 143, 160, 191, 283, 290-298, 328-330, 484, 506, 508, 512, 518, 545, 562, 661, 664, 675-676, 679-682, 780-787
pandas/io/parquet.py                         78     30    62%   18-26, 32, 43-63, 67-75, 80-81, 93-94, 101
pandas/io/parsers.py                       1567     66    96%   915-917, 919-923, 946-951, 1058, 1325, 1336, 1346, 1439-1440, 1474, 1477, 1608-1610, 1658, 1759, 1778, 1789-1790, 1837, 1844, 1847, 1945-1952, 2166, 2173, 2182, 2272-2273, 2308-2310, 2408, 2465, 2528, 2535, 2564, 2586-2587, 2605, 2642, 2727, 2739, 3036-3037, 3044, 3133, 3290-3297, 3303, 3368, 3376, 3390
pandas/io/pickle.py                          48      9    81%   113, 121-126, 130-138
pandas/io/pytables.py                      2361   1892    20%   64-66, 71-74, 84-86, 102-113, 246-263, 272-283, 320-378, 383-392, 444-467, 470, 475-476, 480, 483, 486, 489, 493-497, 504-509, 512, 515, 518, 521, 529, 532, 538-539, 552-613, 619-621, 628-630, 648-654, 668-671, 697-717, 731-732, 753, 779-836, 863-866, 889-916, 953-962, 988-1045, 1060-1068, 1074-1076, 1086-1092, 1096-1101, 1120-1152, 1160-1185, 1189-1190, 1194-1203, 1209-1289, 1293-1344, 1347-1349, 1355-1362, 1388-1415, 1420-1431, 1434-1435, 1440-1459, 1515-1517, 1523, 1527-1528, 1531-1538, 1542, 1546, 1551-1554, 1557-1558, 1562-1567, 1573-1595, 1599-1600, 1604, 1608, 1613, 1618, 1621, 1627-1633, 1637, 1640, 1643-1648, 1654-1667, 1671-1674, 1681-1707, 1711-1713, 1717, 1721, 1725, 1729-1734, 1739-1740, 1749, 1754-1755, 1758, 1761, 1786-1801, 1816-1823, 1827, 1833-1838, 1842-1843, 1848, 1854-1877, 1883-1929, 1932, 1938-1979, 1983-1990, 1993, 1996-2000, 2003-2005, 2011-2030, 2033, 2036-2040, 2044-2056, 2059, 2062-2066, 2070, 2075, 2079-2089, 2098-2161, 2165-2168, 2172-2175, 2184-2185, 2188, 2191, 2194, 2197, 2205, 2226-2229, 2233, 2238-2245, 2249, 2254, 2258-2264, 2268-2270, 2273-2274, 2278, 2282, 2286, 2290, 2294, 2298, 2302, 2306, 2310, 2314, 2318, 2323, 2327, 2331, 2335-2337, 2341, 2347-2351, 2366-2370, 2382, 2388, 2391-2404, 2411-2423, 2427, 2431, 2435-2437, 2440, 2444-2473, 2476-2486, 2491-2518, 2521-2523, 2526-2529, 2532-2533, 2536-2538, 2541-2560, 2563-2579, 2583-2617, 2623-2626, 2630, 2633-2717, 2723-2726, 2732-2735, 2741-2745, 2754-2757, 2760-2763, 2766-2769, 2778-2782, 2790-2794, 2800-2806, 2814-2822, 2828-2839, 2848-2875, 2880-2901, 2904-2923, 2937-2938, 2973-2981, 2985, 2989, 2993-3001, 3008-3011, 3015-3036, 3043, 3047, 3054-3059, 3065, 3070, 3074, 3079, 3083, 3087, 3091, 3096, 3100, 3105, 3112, 3122, 3126, 3130, 3143-3144, 3149-3151, 3155, 3159-3168, 3172-3189, 3194-3199, 3205-3217, 3224-3248, 3269-3317, 3325-3340, 3344, 3351-3377, 3401-3588, 3594-3648, 3655-3673, 3681-3698, 3706-3734, 3775, 3782-3862, 3873, 3893-3929, 3935-4000, 4017-4050, 4055-4110, 4123, 4127-4129, 4133-4177, 4190, 4193, 4197-4201, 4206-4220, 4230-4235, 4247, 4251, 4255-4263, 4268-4281, 4297, 4300-4308, 4313-4321, 4333-4335, 4339, 4351-4368, 4373-4377, 4384-4387, 4403-4416, 4420-4496, 4505-4528, 4532-4541, 4561-4570, 4588-4611, 4615-4619, 4623-4629, 4635-4638, 4655-4698, 4702-4711, 4726-4732, 4738-4756, 4762-4769
pandas/io/s3.py                              20     20     0%   2-35
pandas/io/sas/__init__.py                     1      0   100%
pandas/io/sas/sas7bdat.py                   448     41    91%   113-114, 146, 157, 187-188, 238-239, 247-248, 256-262, 265-266, 274, 276-277, 326-327, 383, 418, 452-457, 594, 621, 631-634, 639, 643, 683-684
pandas/io/sas/sas_constants.py              106      0   100%
pandas/io/sas/sas_xport.py                  216     23    89%   121-122, 246-251, 267-268, 275-276, 289-290, 329-331, 344-345, 379, 393, 453-454
pandas/io/sas/sasreader.py                   29      4    86%   48-50, 63
pandas/io/sql.py                            615     38    94%   75-82, 88, 116, 132, 147, 270, 516-517, 539, 575, 599, 613-614, 658, 687, 813, 878, 918-920, 937, 941, 1167-1173, 1177, 1189, 1231-1232, 1250, 1407, 1431, 1464, 1526
pandas/io/stata.py                         1160     70    94%   294, 349, 404, 422-424, 445, 542-543, 651, 802, 818-825, 971, 997-1002, 1019-1020, 1040, 1112-1113, 1123-1124, 1149, 1208, 1221, 1226, 1252, 1256-1257, 1261-1262, 1307, 1416, 1438, 1525, 1531, 1568-1569, 1574, 1589-1591, 1730, 1751, 1758-1761, 1790-1793, 1815, 1855, 1959, 1981, 1989-1992, 2192, 2301-2302
pandas/io/wb.py                               1      1     0%   1
pandas/json.py                                3      0   100%
pandas/lib.py                                 3      0   100%
pandas/parser.py                              4      0   100%
pandas/plotting/__init__.py                   4      0   100%
pandas/plotting/_compat.py                   50     22    56%   13-14, 24-25, 33-34, 42-43, 50-51, 55-59, 66-67, 71-75
pandas/plotting/_converter.py               662    492    26%   68, 70-72, 79-87, 91-96, 100, 118, 120, 142, 149, 151, 153, 156, 170, 205-206, 213, 225, 232, 246-253, 260-270, 277-292, 295, 303-304, 307, 311-314, 318-376, 379, 385-410, 414-431, 444-459, 473-475, 486-491, 495-717, 721-787, 791-833, 837-853, 894-903, 908-915, 920-934, 942-949, 973-983, 988-998, 1004-1012, 1015-1019, 1032-1042, 1045-1049
pandas/plotting/_core.py                   1371    877    36%   66-67, 118-120, 136-139, 168, 174, 188-191, 201, 205, 223-238, 248, 254-261, 268, 273-293, 305-320, 327-340, 361-362, 372, 375-382, 387-417, 421, 425-469, 472-477, 481-489, 492-497, 500-528, 531-540, 549, 553, 558-584, 588-609, 612-623, 628-631, 635-644, 647-651, 658-674, 677-680, 704-705, 710, 713, 718-720, 724-727, 731, 743-746, 750-757, 762-779, 782-783, 787-795, 808, 810, 812, 814, 816, 826-828, 841, 845-891, 899-902, 905-921, 924, 938, 942, 945-946, 949-985, 992-997, 1001-1021, 1024-1027, 1031-1038, 1042-1053, 1060-1065, 1068-1083, 1096, 1105-1136, 1139-1146, 1149-1155, 1179-1183, 1186-1188, 1197, 1199, 1203, 1207, 1210-1260, 1263-1272, 1275-1279, 1289, 1293, 1297-1301, 1326, 1331-1341, 1344-1362, 1367-1369, 1372-1375, 1379-1382, 1398-1405, 1410-1426, 1429-1431, 1434, 1442-1445, 1448-1451, 1454, 1457-1500, 1514, 1524-1527, 1531-1546, 1550-1559, 1579, 1582-1599, 1602-1631, 1634-1637, 1640, 1643, 1647-1650, 1654-1657, 1691, 1695-1705, 1710, 1715, 1724-1727, 1732-1733, 1919-1920, 1987, 1991-1992, 1998-2002, 2005-2022, 2026, 2029, 2044, 2050-2059, 2071-2072, 2095-2119, 2163-2194, 2234-2253, 2258, 2265-2268, 2298, 2306-2311, 2361-2391, 2401-2403, 2407, 2414-2423, 2432-2434, 2439-2464, 2521, 2551, 2566, 2583, 2598, 2615, 2630, 2732, 2751, 2766, 2802, 2848-2852
pandas/plotting/_misc.py                    277    243    12%   56-136, 140-146, 170-231, 270-322, 341-383, 449, 457-459, 461-465, 472-500, 517-530, 547-573
pandas/plotting/_style.py                   106     58    45%   22-28, 30-33, 41-42, 45-57, 60-92, 97-98, 126, 134, 139-141, 144-148, 162-163, 174-180
pandas/plotting/_timeseries.py              191    191     0%   3-339
pandas/plotting/_tools.py                   181    158    13%   18-23, 46-66, 70-111, 200-277, 281-296, 300-338, 342-346, 350-358, 362-367, 372-383
pandas/stats/__init__.py                      0      0   100%
pandas/stats/api.py                           1      0   100%
pandas/stats/moments.py                     184     53    71%   191-192, 226, 286-293, 307-314, 398-406, 430-437, 729, 760, 774-781, 796-803
pandas/testing.py                             2      0   100%
pandas/tools/__init__.py                      0      0   100%
pandas/tools/hashing.py                      11      0   100%
pandas/tools/merge.py                         8      8     0%   1-17
pandas/tools/plotting.py                     11      2    82%   14-17
pandas/tseries/__init__.py                    0      0   100%
pandas/tseries/api.py                         2      0   100%
pandas/tseries/converter.py                   1      1     0%   3
pandas/tseries/frequencies.py               254     15    94%   109, 125-126, 217-218, 359, 419, 421, 434-435, 461, 464-466, 477
pandas/tseries/holiday.py                   203     14    93%   20, 35, 46, 55, 358, 377, 408, 437-438, 441, 459-463
pandas/tseries/offsets.py                  1310     40    97%   106, 237, 300, 330, 412, 485, 490-491, 497, 499, 510, 580, 730, 857, 929-933, 1192, 1226, 1230, 1393, 1410, 1544, 1569-1574, 1837, 1840, 1846, 1887, 1891, 1898, 1901, 1908, 1974, 2051, 2253, 2440
pandas/tseries/plotting.py                    1      1     0%   3
pandas/tslib.py                               4      0   100%
pandas/types/__init__.py                      0      0   100%
pandas/types/common.py                        3      3     0%   1-8
pandas/types/concat.py                        5      0   100%
pandas/util/__init__.py                       2      0   100%
pandas/util/_decorators.py                  116     26    78%   117-120, 135-149, 203, 213-215, 255, 306-309, 316-320, 323, 327-331
pandas/util/_depr_module.py                  43      9    79%   39-40, 50, 54-59, 79, 98
pandas/util/_doctools.py                     99     99     0%   1-163
pandas/util/_print_versions.py               70     59    16%   14-56, 60-137, 141-154
pandas/util/_tester.py                       17     12    29%   11-22
pandas/util/_validators.py                   82      3    96%   58-63
pandas/util/decorators.py                     3      3     0%   1-8
pandas/util/hashing.py                       11     11     0%   1-18
pandas/util/testing.py                     1048    206    80%   66, 71-73, 132-137, 277, 287, 309, 317-319, 324-325, 336-343, 370-374, 379-380, 385-386, 400-402, 412-413, 431-432, 436-443, 447-448, 476, 482-485, 492-493, 529-530, 540, 545-546, 580-581, 632, 740-748, 752-753, 757-762, 785-789, 793, 797-799, 806-807, 812-813, 954-955, 998-1000, 1012-1019, 1026, 1064-1067, 1078, 1082, 1260, 1268-1270, 1496, 1630, 1656, 1658, 1703-1708, 1862, 1876, 1881, 2005, 2045-2056, 2125, 2132-2133, 2136-2137, 2140, 2166, 2210, 2228-2234, 2332-2361, 2387-2393, 2396-2398, 2415-2420, 2581, 2611, 2654, 2685-2709, 2764, 2814, 2842-2843, 2852-2853
-----------------------------------------------------------------------
TOTAL                                     79363  18629    77%
```
It looks like it is incorrectly counting a lot of function/method/constant definitions lines as not-covered.  In particular in src/inference it is almost all false-positives.