Skip to content

Commit 019d891

Browse files
authored
REF: add to_offset to tslibs namespace (#34538)
1 parent 070da05 commit 019d891

File tree

20 files changed

+59
-66
lines changed

20 files changed

+59
-66
lines changed

pandas/_libs/tslibs/__init__.py

+2
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,14 @@
1414
"ints_to_pytimedelta",
1515
"Timestamp",
1616
"tz_convert_single",
17+
"to_offset",
1718
]
1819

1920

2021
from .conversion import localize_pydatetime
2122
from .nattype import NaT, NaTType, iNaT, is_null_datetimelike, nat_strings
2223
from .np_datetime import OutOfBoundsDatetime
24+
from .offsets import to_offset
2325
from .period import IncompatibleFrequency, Period
2426
from .resolution import Resolution
2527
from .timedeltas import Timedelta, delta_to_nanoseconds, ints_to_pytimedelta

pandas/core/arrays/datetimelike.py

+5-4
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
Timestamp,
1515
delta_to_nanoseconds,
1616
iNaT,
17+
to_offset,
1718
)
1819
from pandas._libs.tslibs.timestamps import (
1920
RoundTo,
@@ -427,7 +428,7 @@ def _with_freq(self, freq):
427428
else:
428429
# As an internal method, we can ensure this assertion always holds
429430
assert freq == "infer"
430-
freq = frequencies.to_offset(self.inferred_freq)
431+
freq = to_offset(self.inferred_freq)
431432

432433
arr = self.view()
433434
arr._freq = freq
@@ -1081,7 +1082,7 @@ def freq(self):
10811082
@freq.setter
10821083
def freq(self, value):
10831084
if value is not None:
1084-
value = frequencies.to_offset(value)
1085+
value = to_offset(value)
10851086
self._validate_frequency(self, value)
10861087

10871088
self._freq = value
@@ -1367,7 +1368,7 @@ def _time_shift(self, periods, freq=None):
13671368
"""
13681369
if freq is not None and freq != self.freq:
13691370
if isinstance(freq, str):
1370-
freq = frequencies.to_offset(freq)
1371+
freq = to_offset(freq)
13711372
offset = periods * freq
13721373
result = self + offset
13731374
return result
@@ -1779,7 +1780,7 @@ def maybe_infer_freq(freq):
17791780
if not isinstance(freq, DateOffset):
17801781
# if a passed freq is None, don't infer automatically
17811782
if freq != "infer":
1782-
freq = frequencies.to_offset(freq)
1783+
freq = to_offset(freq)
17831784
else:
17841785
freq_infer = True
17851786
freq = None

pandas/core/arrays/datetimes.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
iNaT,
1616
resolution as libresolution,
1717
timezones,
18+
to_offset,
1819
tzconversion,
1920
)
2021
from pandas.errors import PerformanceWarning
@@ -46,7 +47,7 @@
4647
from pandas.core.arrays._ranges import generate_regular_range
4748
import pandas.core.common as com
4849

49-
from pandas.tseries.frequencies import get_period_alias, to_offset
50+
from pandas.tseries.frequencies import get_period_alias
5051
from pandas.tseries.offsets import BDay, Day, Tick
5152

5253
_midnight = time(0, 0)

pandas/core/arrays/period.py

+4-3
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,12 @@
77
from pandas._libs.tslibs import (
88
NaT,
99
NaTType,
10+
Timedelta,
11+
delta_to_nanoseconds,
1012
frequencies as libfrequencies,
1113
iNaT,
1214
period as libperiod,
15+
to_offset,
1316
)
1417
from pandas._libs.tslibs.fields import isleapyear_arr
1518
from pandas._libs.tslibs.offsets import Tick, delta_to_tick
@@ -20,7 +23,6 @@
2023
get_period_field_arr,
2124
period_asfreq_arr,
2225
)
23-
from pandas._libs.tslibs.timedeltas import Timedelta, delta_to_nanoseconds
2426
from pandas._typing import AnyArrayLike
2527
from pandas.util._decorators import cache_readonly
2628

@@ -45,7 +47,6 @@
4547
from pandas.core.arrays import datetimelike as dtl
4648
import pandas.core.common as com
4749

48-
from pandas.tseries import frequencies
4950
from pandas.tseries.offsets import DateOffset
5051

5152

@@ -902,7 +903,7 @@ def validate_dtype_freq(dtype, freq):
902903
IncompatibleFrequency : mismatch between dtype and freq
903904
"""
904905
if freq is not None:
905-
freq = frequencies.to_offset(freq)
906+
freq = to_offset(freq)
906907

907908
if dtype is not None:
908909
dtype = pandas_dtype(dtype)

pandas/core/arrays/timedeltas.py

+1-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import numpy as np
55

66
from pandas._libs import lib, tslibs
7-
from pandas._libs.tslibs import NaT, Period, Timedelta, Timestamp, iNaT
7+
from pandas._libs.tslibs import NaT, Period, Timedelta, Timestamp, iNaT, to_offset
88
from pandas._libs.tslibs.conversion import precision_from_unit
99
from pandas._libs.tslibs.fields import get_timedelta_field
1010
from pandas._libs.tslibs.timedeltas import array_to_timedelta64, parse_timedelta_unit
@@ -35,7 +35,6 @@
3535
from pandas.core.construction import extract_array
3636
from pandas.core.ops.common import unpack_zerodim_and_defer
3737

38-
from pandas.tseries.frequencies import to_offset
3938
from pandas.tseries.offsets import Tick
4039

4140

pandas/core/dtypes/dtypes.py

+1-2
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
import pytz
2121

2222
from pandas._libs.interval import Interval
23-
from pandas._libs.tslibs import NaT, Period, Timestamp, timezones
23+
from pandas._libs.tslibs import NaT, Period, Timestamp, timezones, to_offset
2424
from pandas._libs.tslibs.offsets import BaseOffset
2525
from pandas._typing import DtypeObj, Ordered
2626

@@ -925,7 +925,6 @@ def _parse_dtype_strict(cls, freq):
925925
m = cls._match.search(freq)
926926
if m is not None:
927927
freq = m.group("freq")
928-
from pandas.tseries.frequencies import to_offset
929928

930929
freq = to_offset(freq)
931930
if freq is not None:

pandas/core/generic.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,8 @@
3030

3131
from pandas._config import config
3232

33-
from pandas._libs import Timestamp, lib
33+
from pandas._libs import lib
34+
from pandas._libs.tslibs import Timestamp, to_offset
3435
from pandas._typing import (
3536
Axis,
3637
FilePathOrBuffer,
@@ -106,7 +107,6 @@
106107
from pandas.io.formats import format as fmt
107108
from pandas.io.formats.format import DataFrameFormatter, format_percentiles
108109
from pandas.io.formats.printing import pprint_thing
109-
from pandas.tseries.frequencies import to_offset
110110
from pandas.tseries.offsets import Tick
111111

112112
if TYPE_CHECKING:

pandas/core/indexes/datetimes.py

+1-3
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import numpy as np
77

88
from pandas._libs import NaT, Period, Timestamp, index as libindex, lib, tslib
9-
from pandas._libs.tslibs import Resolution, fields, parsing, timezones
9+
from pandas._libs.tslibs import Resolution, fields, parsing, timezones, to_offset
1010
from pandas._libs.tslibs.frequencies import get_freq_group
1111
from pandas._libs.tslibs.offsets import prefix_mapping
1212
from pandas._typing import DtypeObj, Label
@@ -30,8 +30,6 @@
3030
from pandas.core.indexes.extension import inherit_names
3131
from pandas.core.tools.times import to_time
3232

33-
from pandas.tseries.frequencies import to_offset
34-
3533

3634
def _new_DatetimeIndex(cls, d):
3735
"""

pandas/core/indexes/interval.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,9 @@
77

88
from pandas._config import get_option
99

10-
from pandas._libs import Timedelta, Timestamp, lib
10+
from pandas._libs import lib
1111
from pandas._libs.interval import Interval, IntervalMixin, IntervalTree
12+
from pandas._libs.tslibs import Timedelta, Timestamp, to_offset
1213
from pandas._typing import AnyArrayLike, Label
1314
from pandas.util._decorators import Appender, Substitution, cache_readonly
1415
from pandas.util._exceptions import rewrite_exception
@@ -55,7 +56,6 @@
5556
from pandas.core.indexes.timedeltas import TimedeltaIndex, timedelta_range
5657
from pandas.core.ops import get_op_result_name
5758

58-
from pandas.tseries.frequencies import to_offset
5959
from pandas.tseries.offsets import DateOffset
6060

6161
_VALID_CLOSED = {"left", "right", "both", "neither"}

pandas/core/indexes/timedeltas.py

+2-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
""" implement the TimedeltaIndex """
22

3-
from pandas._libs import Timedelta, index as libindex, lib
3+
from pandas._libs import index as libindex, lib
4+
from pandas._libs.tslibs import Timedelta, to_offset
45
from pandas._typing import DtypeObj, Label
56
from pandas.util._decorators import doc
67

@@ -24,8 +25,6 @@
2425
)
2526
from pandas.core.indexes.extension import inherit_names
2627

27-
from pandas.tseries.frequencies import to_offset
28-
2928

3029
@inherit_names(
3130
["__neg__", "__pos__", "__abs__", "total_seconds", "round", "floor", "ceil"]

pandas/core/resample.py

+9-3
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,14 @@
66
import numpy as np
77

88
from pandas._libs import lib
9-
from pandas._libs.tslibs import NaT, Period, Timedelta, Timestamp
10-
from pandas._libs.tslibs.period import IncompatibleFrequency
9+
from pandas._libs.tslibs import (
10+
IncompatibleFrequency,
11+
NaT,
12+
Period,
13+
Timedelta,
14+
Timestamp,
15+
to_offset,
16+
)
1117
from pandas._typing import TimedeltaConvertibleTypes, TimestampConvertibleTypes
1218
from pandas.compat.numpy import function as nv
1319
from pandas.errors import AbstractMethodError
@@ -28,7 +34,7 @@
2834
from pandas.core.indexes.period import PeriodIndex, period_range
2935
from pandas.core.indexes.timedeltas import TimedeltaIndex, timedelta_range
3036

31-
from pandas.tseries.frequencies import is_subperiod, is_superperiod, to_offset
37+
from pandas.tseries.frequencies import is_subperiod, is_superperiod
3238
from pandas.tseries.offsets import DateOffset, Day, Nano, Tick
3339

3440
_shared_docs_kwargs: Dict[str, str] = dict()

pandas/core/window/rolling.py

+1-2
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
import numpy as np
1212

13+
from pandas._libs.tslibs import to_offset
1314
import pandas._libs.window.aggregations as window_aggregations
1415
from pandas._typing import Axis, FrameOrSeries, Scalar
1516
from pandas.compat._optional import import_optional_dependency
@@ -1977,8 +1978,6 @@ def _validate_freq(self):
19771978
"""
19781979
Validate & return window frequency.
19791980
"""
1980-
from pandas.tseries.frequencies import to_offset
1981-
19821981
try:
19831982
return to_offset(self.window)
19841983
except (TypeError, ValueError) as err:

pandas/plotting/_matplotlib/timeseries.py

+2-7
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55

66
import numpy as np
77

8+
from pandas._libs.tslibs import Period, to_offset
89
from pandas._libs.tslibs.frequencies import FreqGroup, base_and_stride, get_freq_code
9-
from pandas._libs.tslibs.period import Period
1010

1111
from pandas.core.dtypes.generic import (
1212
ABCDatetimeIndex,
@@ -20,12 +20,7 @@
2020
TimeSeries_DateLocator,
2121
TimeSeries_TimedeltaFormatter,
2222
)
23-
from pandas.tseries.frequencies import (
24-
get_period_alias,
25-
is_subperiod,
26-
is_superperiod,
27-
to_offset,
28-
)
23+
from pandas.tseries.frequencies import get_period_alias, is_subperiod, is_superperiod
2924
from pandas.tseries.offsets import DateOffset
3025

3126
if TYPE_CHECKING:

pandas/tests/arithmetic/test_period.py

+2-4
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,15 @@
66
import numpy as np
77
import pytest
88

9-
from pandas._libs.tslibs.period import IncompatibleFrequency
9+
from pandas._libs.tslibs import IncompatibleFrequency, Period, Timestamp, to_offset
1010
from pandas.errors import PerformanceWarning
1111

1212
import pandas as pd
13-
from pandas import Period, PeriodIndex, Series, TimedeltaIndex, Timestamp, period_range
13+
from pandas import PeriodIndex, Series, TimedeltaIndex, period_range
1414
import pandas._testing as tm
1515
from pandas.core import ops
1616
from pandas.core.arrays import TimedeltaArray
1717

18-
from pandas.tseries.frequencies import to_offset
19-
2018
from .common import assert_invalid_comparison
2119

2220
# ------------------------------------------------------------------

pandas/tests/indexes/datetimes/test_scalar_compat.py

+1-3
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,12 @@
66
import numpy as np
77
import pytest
88

9-
from pandas._libs.tslibs.np_datetime import OutOfBoundsDatetime
9+
from pandas._libs.tslibs import OutOfBoundsDatetime, to_offset
1010

1111
import pandas as pd
1212
from pandas import DatetimeIndex, Timestamp, date_range
1313
import pandas._testing as tm
1414

15-
from pandas.tseries.frequencies import to_offset
16-
1715

1816
class TestDatetimeIndexOps:
1917
def test_dti_time(self):

pandas/tests/scalar/timestamp/test_arithmetic.py

+7-5
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,16 @@
33
import numpy as np
44
import pytest
55

6-
from pandas.errors import OutOfBoundsDatetime
6+
from pandas._libs.tslibs import (
7+
OutOfBoundsDatetime,
8+
Timedelta,
9+
Timestamp,
10+
offsets,
11+
to_offset,
12+
)
713

8-
from pandas import Timedelta, Timestamp
914
import pandas._testing as tm
1015

11-
from pandas.tseries import offsets
12-
from pandas.tseries.frequencies import to_offset
13-
1416

1517
class TestTimestampArithmetic:
1618
def test_overflow_offset(self):

pandas/tests/scalar/timestamp/test_unary_ops.py

+1-4
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,12 @@
55
import pytz
66
from pytz import utc
77

8-
from pandas._libs.tslibs import conversion
8+
from pandas._libs.tslibs import NaT, Timestamp, conversion, to_offset
99
from pandas._libs.tslibs.frequencies import INVALID_FREQ_ERR_MSG
1010
import pandas.util._test_decorators as td
1111

12-
from pandas import NaT, Timestamp
1312
import pandas._testing as tm
1413

15-
from pandas.tseries.frequencies import to_offset
16-
1714

1815
class TestTimestampUnaryOps:
1916

pandas/tests/tseries/frequencies/test_freq_code.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import pytest
22

3+
from pandas._libs.tslibs import to_offset
34
from pandas._libs.tslibs.frequencies import (
45
FreqGroup,
56
_attrname_to_abbrevs,
@@ -10,7 +11,6 @@
1011
)
1112
from pandas._libs.tslibs.resolution import Resolution as _reso
1213

13-
from pandas.tseries.frequencies import to_offset
1414
import pandas.tseries.offsets as offsets
1515

1616

0 commit comments

Comments
 (0)