|
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