def __init__(self, unit="ns", tz=None): if isinstance(unit, DatetimeTZDtype): unit, tz = unit.unit, unit.tz if unit != 'ns': if isinstance(unit, str) and tz is None: # maybe a string like datetime64[ns, tz], which we support for # now. result = type(self).construct_from_string(unit) unit = result.unit tz = result.tz msg = ( "Passing a dtype alias like 'datetime64[ns, {tz}]' " "to DatetimeTZDtype is deprecated. Use " "'DatetimeTZDtype.construct_from_string()' instead." ) warnings.warn(msg.format(tz=tz), FutureWarning, stacklevel=2) else: raise ValueError("DatetimeTZDtype only supports ns units") if tz: tz = timezones.maybe_get_tz(tz) tz = timezones.tz_standardize(tz) elif tz is not None: raise pytz.UnknownTimeZoneError(tz) elif tz is None: raise TypeError("A 'tz' is required.") self._unit = unit self._tz = tz
def __init__(self, unit: str_type | DatetimeTZDtype = "ns", tz=None): if isinstance(unit, DatetimeTZDtype): # error: "str" has no attribute "tz" unit, tz = unit.unit, unit.tz # type: ignore[attr-defined] if unit != "ns": if isinstance(unit, str) and tz is None: # maybe a string like datetime64[ns, tz], which we support for # now. result = type(self).construct_from_string(unit) unit = result.unit tz = result.tz msg = (f"Passing a dtype alias like 'datetime64[ns, {tz}]' " "to DatetimeTZDtype is no longer supported. Use " "'DatetimeTZDtype.construct_from_string()' instead.") raise ValueError(msg) else: raise ValueError("DatetimeTZDtype only supports ns units") if tz: tz = timezones.maybe_get_tz(tz) tz = timezones.tz_standardize(tz) elif tz is not None: raise pytz.UnknownTimeZoneError(tz) if tz is None: raise TypeError("A 'tz' is required.") self._unit = unit self._tz = tz
def __init__(self, unit="ns", tz=None): if isinstance(unit, DatetimeTZDtype): unit, tz = unit.unit, unit.tz if unit != "ns": if isinstance(unit, str) and tz is None: # maybe a string like datetime64[ns, tz], which we support for # now. result = type(self).construct_from_string(unit) unit = result.unit tz = result.tz msg = ("Passing a dtype alias like 'datetime64[ns, {tz}]' " "to DatetimeTZDtype is deprecated. Use " "'DatetimeTZDtype.construct_from_string()' instead.") warnings.warn(msg.format(tz=tz), FutureWarning, stacklevel=2) else: raise ValueError("DatetimeTZDtype only supports ns units") if tz: tz = timezones.maybe_get_tz(tz) tz = timezones.tz_standardize(tz) elif tz is not None: raise pytz.UnknownTimeZoneError(tz) elif tz is None: raise TypeError("A 'tz' is required.") self._unit = unit self._tz = tz
def __setstate__(self, state): """ Necessary for making this object picklable. """ if isinstance(state, dict): super().__setstate__(state) elif isinstance(state, tuple): # < 0.15 compat if len(state) == 2: nd_state, own_state = state data = np.empty(nd_state[1], dtype=nd_state[2]) np.ndarray.__setstate__(data, nd_state) freq = own_state[1] tz = timezones.tz_standardize(own_state[2]) dtype = tz_to_dtype(tz) dtarr = DatetimeArray._simple_new(data, freq=freq, dtype=dtype) self.name = own_state[0] else: # pragma: no cover data = np.empty(state) np.ndarray.__setstate__(data, state) dtarr = DatetimeArray(data) self._data = dtarr self._reset_identity() else: raise Exception("invalid pickle state")
def __init__(self, unit="ns", tz=None): """ An ExtensionDtype for timezone-aware datetime data. Parameters ---------- unit : str, default "ns" The precision of the datetime data. Currently limited to ``"ns"``. tz : str, int, or datetime.tzinfo The timezone. Raises ------ pytz.UnknownTimeZoneError When the requested timezone cannot be found. Examples -------- >>> pd.core.dtypes.dtypes.DatetimeTZDtype(tz='UTC') datetime64[ns, UTC] >>> pd.core.dtypes.dtypes.DatetimeTZDtype(tz='dateutil/US/Central') datetime64[ns, tzfile('/usr/share/zoneinfo/US/Central')] """ if isinstance(unit, DatetimeTZDtype): unit, tz = unit.unit, unit.tz if unit != 'ns': if isinstance(unit, compat.string_types) and tz is None: # maybe a string like datetime64[ns, tz], which we support for # now. result = type(self).construct_from_string(unit) unit = result.unit tz = result.tz msg = ( "Passing a dtype alias like 'datetime64[ns, {tz}]' " "to DatetimeTZDtype is deprecated. Use " "'DatetimeTZDtype.construct_from_string()' instead." ) warnings.warn(msg.format(tz=tz), FutureWarning, stacklevel=2) else: raise ValueError("DatetimeTZDtype only supports ns units") if tz: tz = timezones.maybe_get_tz(tz) tz = timezones.tz_standardize(tz) elif tz is not None: raise pytz.UnknownTimeZoneError(tz) elif tz is None: raise TypeError("A 'tz' is required.") self._unit = unit self._tz = tz
def __init__(self, unit="ns", tz=None): """ An ExtensionDtype for timezone-aware datetime data. Parameters ---------- unit : str, default "ns" The precision of the datetime data. Currently limited to ``"ns"``. tz : str, int, or datetime.tzinfo The timezone. Raises ------ pytz.UnknownTimeZoneError When the requested timezone cannot be found. Examples -------- >>> pd.core.dtypes.dtypes.DatetimeTZDtype(tz='UTC') datetime64[ns, UTC] >>> pd.core.dtypes.dtypes.DatetimeTZDtype(tz='dateutil/US/Central') datetime64[ns, tzfile('/usr/share/zoneinfo/US/Central')] """ if isinstance(unit, DatetimeTZDtype): unit, tz = unit.unit, unit.tz if unit != 'ns': if isinstance(unit, str) and tz is None: # maybe a string like datetime64[ns, tz], which we support for # now. result = type(self).construct_from_string(unit) unit = result.unit tz = result.tz msg = ( "Passing a dtype alias like 'datetime64[ns, {tz}]' " "to DatetimeTZDtype is deprecated. Use " "'DatetimeTZDtype.construct_from_string()' instead." ) warnings.warn(msg.format(tz=tz), FutureWarning, stacklevel=2) else: raise ValueError("DatetimeTZDtype only supports ns units") if tz: tz = timezones.maybe_get_tz(tz) tz = timezones.tz_standardize(tz) elif tz is not None: raise pytz.UnknownTimeZoneError(tz) elif tz is None: raise TypeError("A 'tz' is required.") self._unit = unit self._tz = tz
def _simple_new(cls, values, freq=None, tz=None, **kwargs): """ we require the we have a dtype compat for the values if we are passed a non-dtype compat, then coerce using the constructor """ if getattr(values, 'dtype', None) is None: # empty, but with dtype compat if values is None: values = np.empty(0, dtype=_NS_DTYPE) return cls(values, freq=freq, tz=tz, **kwargs) values = np.array(values, copy=False) if not is_datetime64_dtype(values): values = _ensure_int64(values).view(_NS_DTYPE) result = object.__new__(cls) result._data = values result._freq = freq tz = timezones.maybe_get_tz(tz) result._tz = timezones.tz_standardize(tz) return result
def _simple_new(cls, values, freq=None, tz=None, **kwargs): """ we require the we have a dtype compat for the values if we are passed a non-dtype compat, then coerce using the constructor """ if getattr(values, 'dtype', None) is None: # empty, but with dtype compat if values is None: values = np.empty(0, dtype=_NS_DTYPE) return cls(values, freq=freq, tz=tz, **kwargs) values = np.array(values, copy=False) if not is_datetime64_dtype(values): values = ensure_int64(values).view(_NS_DTYPE) result = object.__new__(cls) result._data = values result._freq = freq tz = timezones.maybe_get_tz(tz) result._tz = timezones.tz_standardize(tz) return result