Find the appropriate frequency string to describe the inferred frequency of self.index Adapted from `pandas.tsseries.frequencies._FrequencyInferer.get_freq` for CFTimeIndexes. Returns ------- str or None
(self)
| 121 | self._month_deltas = None |
| 122 | |
| 123 | def get_freq(self): |
| 124 | """Find the appropriate frequency string to describe the inferred frequency of self.index |
| 125 | |
| 126 | Adapted from `pandas.tsseries.frequencies._FrequencyInferer.get_freq` for CFTimeIndexes. |
| 127 | |
| 128 | Returns |
| 129 | ------- |
| 130 | str or None |
| 131 | """ |
| 132 | if not self.is_monotonic or not self.index.is_unique: |
| 133 | return None |
| 134 | |
| 135 | delta = self.deltas[0] # Smallest delta |
| 136 | if _is_multiple(delta, _ONE_DAY): |
| 137 | return self._infer_daily_rule() |
| 138 | # There is no possible intraday frequency with a non-unique delta |
| 139 | # Different from pandas: we don't need to manage DST and business offsets in cftime |
| 140 | elif len(self.deltas) != 1: |
| 141 | return None |
| 142 | |
| 143 | if _is_multiple(delta, _ONE_HOUR): |
| 144 | return _maybe_add_count("h", delta / _ONE_HOUR) |
| 145 | elif _is_multiple(delta, _ONE_MINUTE): |
| 146 | return _maybe_add_count("min", delta / _ONE_MINUTE) |
| 147 | elif _is_multiple(delta, _ONE_SECOND): |
| 148 | return _maybe_add_count("s", delta / _ONE_SECOND) |
| 149 | elif _is_multiple(delta, _ONE_MILLI): |
| 150 | return _maybe_add_count("ms", delta / _ONE_MILLI) |
| 151 | else: |
| 152 | return _maybe_add_count("us", delta / _ONE_MICRO) |
| 153 | |
| 154 | def _infer_daily_rule(self): |
| 155 | annual_rule = self._get_annual_rule() |
no test coverage detected