|
29 | 29 | from pandas._libs.tslibs import resolution
|
30 | 30 |
|
31 | 31 | from pandas.core.algorithms import unique1d
|
32 |
| -from pandas.core.dtypes.dtypes import PeriodDtype |
| 32 | +import pandas.core.arrays.datetimelike as dtl |
33 | 33 | from pandas.core.arrays.period import PeriodArray, period_array
|
34 | 34 | from pandas.core.base import _shared_docs
|
35 | 35 | from pandas.core.indexes.base import _index_shared_docs, ensure_index
|
|
48 | 48 | dict(target_klass='PeriodIndex or list of Periods'))
|
49 | 49 |
|
50 | 50 |
|
51 |
| -def _wrap_field_accessor(name): |
52 |
| - fget = getattr(PeriodArray, name).fget |
53 |
| - |
54 |
| - def f(self): |
55 |
| - result = fget(self) |
56 |
| - return Index(result, name=self.name) |
57 |
| - |
58 |
| - f.__name__ = name |
59 |
| - f.__doc__ = fget.__doc__ |
60 |
| - return property(f) |
61 |
| - |
62 | 51 | # --- Period index sketch
|
63 | 52 |
|
64 | 53 |
|
@@ -211,27 +200,11 @@ def __new__(cls, data=None, ordinal=None, freq=None, start=None, end=None,
|
211 | 200 |
|
212 | 201 | if data is None and ordinal is None:
|
213 | 202 | # range-based.
|
214 |
| - if periods is not None: |
215 |
| - if is_float(periods): |
216 |
| - periods = int(periods) |
217 |
| - |
218 |
| - elif not is_integer(periods): |
219 |
| - msg = 'periods must be a number, got {periods}' |
220 |
| - raise TypeError(msg.format(periods=periods)) |
221 |
| - |
222 | 203 | data, freq = PeriodArray._generate_range(start, end, periods,
|
223 | 204 | freq, fields)
|
224 | 205 | data = PeriodArray(data, freq=freq)
|
225 | 206 | else:
|
226 |
| - if freq is None and dtype is not None: |
227 |
| - freq = PeriodDtype(dtype).freq |
228 |
| - elif freq and dtype: |
229 |
| - freq = PeriodDtype(freq).freq |
230 |
| - dtype = PeriodDtype(dtype).freq |
231 |
| - |
232 |
| - if freq != dtype: |
233 |
| - msg = "specified freq and dtype are different" |
234 |
| - raise IncompatibleFrequency(msg) |
| 207 | + freq = dtl.validate_dtype_freq(dtype, freq) |
235 | 208 |
|
236 | 209 | # PeriodIndex allow PeriodIndex(period_index, freq=different)
|
237 | 210 | # Let's not encourage that kind of behavior in PeriodArray.
|
|
0 commit comments