From 7748a45e0d137674b1292d72a9baf3a84eff37de Mon Sep 17 00:00:00 2001 From: Aaron Critchley Date: Tue, 28 Nov 2017 23:33:46 +0000 Subject: [PATCH 1/8] CLN: #18543, moving periods.pyx --- pandas/_libs/{ => tslibs}/period.pyx | 22 ++++++++++---------- pandas/compat/pickle_compat.py | 5 ++++- pandas/core/indexes/accessors.py | 2 +- pandas/core/indexes/datetimelike.py | 2 +- pandas/core/indexes/period.py | 6 +++--- pandas/core/resample.py | 2 +- pandas/tests/indexes/period/test_indexing.py | 2 +- pandas/tests/indexes/period/test_tools.py | 2 +- pandas/tests/scalar/test_period.py | 3 ++- pandas/tests/scalar/test_timestamp.py | 3 +-- pandas/tests/test_resample.py | 2 +- setup.py | 6 +++--- 12 files changed, 30 insertions(+), 27 deletions(-) rename pandas/_libs/{ => tslibs}/period.pyx (98%) diff --git a/pandas/_libs/period.pyx b/pandas/_libs/tslibs/period.pyx similarity index 98% rename from pandas/_libs/period.pyx rename to pandas/_libs/tslibs/period.pyx index 2b09e9376bd3d..461beea8cff97 100644 --- a/pandas/_libs/period.pyx +++ b/pandas/_libs/tslibs/period.pyx @@ -17,7 +17,7 @@ from pandas.compat import PY2 cimport cython -from tslibs.np_datetime cimport (pandas_datetimestruct, +from pandas._libs.tslibs.np_datetime cimport (pandas_datetimestruct, dtstruct_to_dt64, dt64_to_dtstruct, is_leapyear) @@ -25,18 +25,18 @@ from tslibs.np_datetime cimport (pandas_datetimestruct, cimport util from util cimport is_period_object, is_string_object, INT32_MIN -from missing cimport is_null_datetimelike +from pandas._libs.missing cimport is_null_datetimelike from pandas._libs.tslib import Timestamp -from tslibs.timezones cimport ( +from pandas._libs.tslibs.timezones cimport ( is_utc, is_tzlocal, get_utcoffset, get_dst_info) -from tslibs.timedeltas cimport delta_to_nanoseconds - -from tslibs.parsing import (parse_time_string, NAT_SENTINEL, - _get_rule_month, _MONTH_NUMBERS) -from tslibs.frequencies cimport get_freq_code -from tslibs.resolution import resolution, Resolution -from tslibs.nattype import nat_strings, NaT, iNaT -from tslibs.nattype cimport _nat_scalar_rules, NPY_NAT +from pandas._libs.tslibs.timedeltas cimport delta_to_nanoseconds + +from pandas._libs.tslibs.parsing import (parse_time_string, NAT_SENTINEL, + _get_rule_month, _MONTH_NUMBERS) +from pandas._libs.tslibs.frequencies cimport get_freq_code +from pandas._libs.tslibs.resolution import resolution, Resolution +from pandas._libs.tslibs.nattype import nat_strings, NaT, iNaT +from pandas._libs.tslibs.nattype cimport _nat_scalar_rules, NPY_NAT from pandas.tseries import offsets from pandas.tseries import frequencies diff --git a/pandas/compat/pickle_compat.py b/pandas/compat/pickle_compat.py index 8015642919611..c5a83d6daf43a 100644 --- a/pandas/compat/pickle_compat.py +++ b/pandas/compat/pickle_compat.py @@ -104,7 +104,10 @@ def load_reduce(self): ('pandas.tseries.index', 'DatetimeIndex'): ('pandas.core.indexes.datetimes', 'DatetimeIndex'), ('pandas.tseries.period', 'PeriodIndex'): - ('pandas.core.indexes.period', 'PeriodIndex') + ('pandas.core.indexes.period', 'PeriodIndex'), + + # 18543 moving period + ('pandas._libs.period', 'Period'): ('pandas._libs.tslibs.period', 'Period'), } diff --git a/pandas/core/indexes/accessors.py b/pandas/core/indexes/accessors.py index 2176338574304..27e1006c23174 100644 --- a/pandas/core/indexes/accessors.py +++ b/pandas/core/indexes/accessors.py @@ -14,7 +14,7 @@ from pandas.core.accessor import PandasDelegate from pandas.core.base import NoNewAttributesMixin, PandasObject from pandas.core.indexes.datetimes import DatetimeIndex -from pandas._libs.period import IncompatibleFrequency # noqa +from pandas._libs.tslibs.period import IncompatibleFrequency # noqa from pandas.core.indexes.period import PeriodIndex from pandas.core.indexes.timedeltas import TimedeltaIndex from pandas.core.algorithms import take_1d diff --git a/pandas/core/indexes/datetimelike.py b/pandas/core/indexes/datetimelike.py index 5643d886a4fec..2eb18279f5355 100644 --- a/pandas/core/indexes/datetimelike.py +++ b/pandas/core/indexes/datetimelike.py @@ -25,7 +25,7 @@ import pandas.io.formats.printing as printing from pandas._libs import lib, iNaT, NaT -from pandas._libs.period import Period +from pandas._libs.tslibs.period import Period from pandas._libs.tslibs.timedeltas import delta_to_nanoseconds from pandas.core.indexes.base import Index, _index_shared_docs diff --git a/pandas/core/indexes/period.py b/pandas/core/indexes/period.py index 6535eee386e8b..6b5bb623de2ea 100644 --- a/pandas/core/indexes/period.py +++ b/pandas/core/indexes/period.py @@ -31,12 +31,12 @@ import pandas.tseries.offsets as offsets from pandas._libs.lib import infer_dtype -from pandas._libs import tslib, period, index as libindex -from pandas._libs.period import (Period, IncompatibleFrequency, +from pandas._libs import tslib, index as libindex +from pandas._libs.tslibs.period import (Period, IncompatibleFrequency, get_period_field_arr, _validate_end_alias, _quarter_to_myear) from pandas._libs.tslibs.fields import isleapyear_arr -from pandas._libs.tslibs import resolution +from pandas._libs.tslibs import resolution, period from pandas._libs.tslibs.timedeltas import delta_to_nanoseconds from pandas.core.base import _shared_docs diff --git a/pandas/core/resample.py b/pandas/core/resample.py index bd441a8248841..9f5439b68558b 100644 --- a/pandas/core/resample.py +++ b/pandas/core/resample.py @@ -24,7 +24,7 @@ from pandas._libs import lib, tslib from pandas._libs.lib import Timestamp -from pandas._libs.period import IncompatibleFrequency +from pandas._libs.tslibs.period import IncompatibleFrequency from pandas.util._decorators import Appender from pandas.core.generic import _shared_docs diff --git a/pandas/tests/indexes/period/test_indexing.py b/pandas/tests/indexes/period/test_indexing.py index d20ed66c06ce9..6cb4226dffc5a 100644 --- a/pandas/tests/indexes/period/test_indexing.py +++ b/pandas/tests/indexes/period/test_indexing.py @@ -9,7 +9,7 @@ from pandas._libs import tslib, tslibs from pandas import (PeriodIndex, Series, DatetimeIndex, period_range, Period) -from pandas._libs import period as libperiod +from pandas._libs.tslibs import period as libperiod class TestGetItem(object): diff --git a/pandas/tests/indexes/period/test_tools.py b/pandas/tests/indexes/period/test_tools.py index 074678164e6f9..3774111f44fb2 100644 --- a/pandas/tests/indexes/period/test_tools.py +++ b/pandas/tests/indexes/period/test_tools.py @@ -6,7 +6,7 @@ import pandas.core.indexes.period as period from pandas.compat import lrange from pandas.tseries.frequencies import get_freq, MONTHS -from pandas._libs.period import period_ordinal, period_asfreq +from pandas._libs.tslibs.period import period_ordinal, period_asfreq from pandas import (PeriodIndex, Period, DatetimeIndex, Timestamp, Series, date_range, to_datetime, period_range) diff --git a/pandas/tests/scalar/test_period.py b/pandas/tests/scalar/test_period.py index 8cfdf7a461879..f5c5eaf81235d 100644 --- a/pandas/tests/scalar/test_period.py +++ b/pandas/tests/scalar/test_period.py @@ -10,7 +10,8 @@ from pandas.compat import text_type, iteritems from pandas.compat.numpy import np_datetime64_compat -from pandas._libs import tslib, period as libperiod +from pandas._libs import tslib +from pandas._libs.tslibs import period as libperiod from pandas._libs.tslibs.parsing import DateParseError from pandas import Period, Timestamp, offsets from pandas._libs.tslibs.resolution import DAYS, _MONTHS as MONTHS diff --git a/pandas/tests/scalar/test_timestamp.py b/pandas/tests/scalar/test_timestamp.py index 545ed7f1ebbf3..8c7d3b13afcb8 100644 --- a/pandas/tests/scalar/test_timestamp.py +++ b/pandas/tests/scalar/test_timestamp.py @@ -16,9 +16,8 @@ import pandas.util.testing as tm from pandas.tseries import offsets, frequencies -from pandas._libs import period from pandas._libs.tslibs.timezones import get_timezone -from pandas._libs.tslibs import conversion +from pandas._libs.tslibs import conversion, period from pandas.compat import long, PY3 from pandas.util.testing import assert_series_equal diff --git a/pandas/tests/test_resample.py b/pandas/tests/test_resample.py index b0154f6db7022..1ebe59047b998 100644 --- a/pandas/tests/test_resample.py +++ b/pandas/tests/test_resample.py @@ -33,7 +33,7 @@ from pandas.core.indexes.timedeltas import timedelta_range, TimedeltaIndex from pandas.util.testing import (assert_series_equal, assert_almost_equal, assert_frame_equal, assert_index_equal) -from pandas._libs.period import IncompatibleFrequency +from pandas._libs.tslibs.period import IncompatibleFrequency bday = BDay() diff --git a/setup.py b/setup.py index 37be0b696503d..610796c4822b6 100755 --- a/setup.py +++ b/setup.py @@ -331,7 +331,6 @@ class CheckSDist(sdist_class): _pyxfiles = ['pandas/_libs/lib.pyx', 'pandas/_libs/hashtable.pyx', 'pandas/_libs/tslib.pyx', - 'pandas/_libs/period.pyx', 'pandas/_libs/index.pyx', 'pandas/_libs/algos.pyx', 'pandas/_libs/join.pyx', @@ -344,6 +343,7 @@ class CheckSDist(sdist_class): 'pandas/_libs/skiplist.pyx', 'pandas/_libs/sparse.pyx', 'pandas/_libs/parsers.pyx', + 'pandas/_libs/tslibs/period.pyx', 'pandas/_libs/tslibs/strptime.pyx', 'pandas/_libs/tslibs/np_datetime.pyx', 'pandas/_libs/tslibs/timedeltas.pyx', @@ -530,8 +530,8 @@ def pxd(name): 'pandas/_libs/src/numpy_helper.h'], 'sources': ['pandas/_libs/src/parser/tokenizer.c', 'pandas/_libs/src/parser/io.c']}, - '_libs.period': { - 'pyxfile': '_libs/period', + '_libs.tslibs.period': { + 'pyxfile': '_libs/tslibs/period', 'pxdfiles': ['_libs/src/util', '_libs/lib', '_libs/tslibs/timedeltas', From b093f40052c85330cb9571e345d97f254549348a Mon Sep 17 00:00:00 2001 From: Aaron Critchley Date: Tue, 28 Nov 2017 23:37:38 +0000 Subject: [PATCH 2/8] Flake8 pass --- pandas/compat/pickle_compat.py | 3 ++- pandas/core/indexes/period.py | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/pandas/compat/pickle_compat.py b/pandas/compat/pickle_compat.py index c5a83d6daf43a..9eecd1041ee2c 100644 --- a/pandas/compat/pickle_compat.py +++ b/pandas/compat/pickle_compat.py @@ -107,7 +107,8 @@ def load_reduce(self): ('pandas.core.indexes.period', 'PeriodIndex'), # 18543 moving period - ('pandas._libs.period', 'Period'): ('pandas._libs.tslibs.period', 'Period'), + ('pandas._libs.period', 'Period'): + ('pandas._libs.tslibs.period', 'Period'), } diff --git a/pandas/core/indexes/period.py b/pandas/core/indexes/period.py index 6b5bb623de2ea..ac9b511606066 100644 --- a/pandas/core/indexes/period.py +++ b/pandas/core/indexes/period.py @@ -33,8 +33,8 @@ from pandas._libs.lib import infer_dtype from pandas._libs import tslib, index as libindex from pandas._libs.tslibs.period import (Period, IncompatibleFrequency, - get_period_field_arr, _validate_end_alias, - _quarter_to_myear) + get_period_field_arr, + _validate_end_alias, _quarter_to_myear) from pandas._libs.tslibs.fields import isleapyear_arr from pandas._libs.tslibs import resolution, period from pandas._libs.tslibs.timedeltas import delta_to_nanoseconds From 0959e6713b3611e697eb15f38f5b8a50ebe7a2d2 Mon Sep 17 00:00:00 2001 From: Aaron Critchley Date: Tue, 28 Nov 2017 23:39:52 +0000 Subject: [PATCH 3/8] Flake8 pass --- pandas/_libs/tslibs/period.pyx | 4 ++-- pandas/compat/pickle_compat.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pandas/_libs/tslibs/period.pyx b/pandas/_libs/tslibs/period.pyx index 461beea8cff97..a3bf70bb0439e 100644 --- a/pandas/_libs/tslibs/period.pyx +++ b/pandas/_libs/tslibs/period.pyx @@ -18,8 +18,8 @@ from pandas.compat import PY2 cimport cython from pandas._libs.tslibs.np_datetime cimport (pandas_datetimestruct, - dtstruct_to_dt64, dt64_to_dtstruct, - is_leapyear) + dtstruct_to_dt64, + dt64_to_dtstruct, is_leapyear) cimport util diff --git a/pandas/compat/pickle_compat.py b/pandas/compat/pickle_compat.py index 9eecd1041ee2c..c043ed653359a 100644 --- a/pandas/compat/pickle_compat.py +++ b/pandas/compat/pickle_compat.py @@ -108,7 +108,7 @@ def load_reduce(self): # 18543 moving period ('pandas._libs.period', 'Period'): - ('pandas._libs.tslibs.period', 'Period'), + ('pandas._libs.tslibs.period', 'Period') } From 61e299dbd3a63aca7f5f3841116dbb3112c2e48f Mon Sep 17 00:00:00 2001 From: Aaron Critchley Date: Sat, 2 Dec 2017 16:44:48 +0000 Subject: [PATCH 4/8] Better imports, moving pickle_compat --- pandas/_libs/index.pyx | 3 ++- pandas/_libs/tslibs/period.pyx | 20 +++++++++----------- pandas/compat/pickle_compat.py | 10 +++++----- 3 files changed, 16 insertions(+), 17 deletions(-) diff --git a/pandas/_libs/index.pyx b/pandas/_libs/index.pyx index 03596d7d091e0..fa2e1271f4649 100644 --- a/pandas/_libs/index.pyx +++ b/pandas/_libs/index.pyx @@ -17,7 +17,8 @@ from tslibs.conversion cimport maybe_datetimelike_to_i8 from hashtable cimport HashTable -from pandas._libs import algos, period as periodlib, hashtable as _hash +from pandas._libs import algos, hashtable as _hash +from pandas._libs.tslibs import period as periodlib from pandas._libs.tslib import Timestamp, Timedelta from datetime import datetime, timedelta, date diff --git a/pandas/_libs/tslibs/period.pyx b/pandas/_libs/tslibs/period.pyx index a3bf70bb0439e..adeebc1084491 100644 --- a/pandas/_libs/tslibs/period.pyx +++ b/pandas/_libs/tslibs/period.pyx @@ -17,26 +17,24 @@ from pandas.compat import PY2 cimport cython -from pandas._libs.tslibs.np_datetime cimport (pandas_datetimestruct, - dtstruct_to_dt64, - dt64_to_dtstruct, is_leapyear) - +from np_datetime cimport (pandas_datetimestruct, dtstruct_to_dt64, + dt64_to_dtstruct, is_leapyear) cimport util from util cimport is_period_object, is_string_object, INT32_MIN from pandas._libs.missing cimport is_null_datetimelike from pandas._libs.tslib import Timestamp -from pandas._libs.tslibs.timezones cimport ( +from timezones cimport ( is_utc, is_tzlocal, get_utcoffset, get_dst_info) -from pandas._libs.tslibs.timedeltas cimport delta_to_nanoseconds +from timedeltas cimport delta_to_nanoseconds -from pandas._libs.tslibs.parsing import (parse_time_string, NAT_SENTINEL, +from parsing import (parse_time_string, NAT_SENTINEL, _get_rule_month, _MONTH_NUMBERS) -from pandas._libs.tslibs.frequencies cimport get_freq_code -from pandas._libs.tslibs.resolution import resolution, Resolution -from pandas._libs.tslibs.nattype import nat_strings, NaT, iNaT -from pandas._libs.tslibs.nattype cimport _nat_scalar_rules, NPY_NAT +from frequencies cimport get_freq_code +from resolution import resolution, Resolution +from nattype import nat_strings, NaT, iNaT +from nattype cimport _nat_scalar_rules, NPY_NAT from pandas.tseries import offsets from pandas.tseries import frequencies diff --git a/pandas/compat/pickle_compat.py b/pandas/compat/pickle_compat.py index c043ed653359a..dd8a57a469a31 100644 --- a/pandas/compat/pickle_compat.py +++ b/pandas/compat/pickle_compat.py @@ -74,7 +74,11 @@ def load_reduce(self): ('pandas._libs.sparse', 'BlockIndex'), ('pandas.tslib', 'Timestamp'): ('pandas._libs.tslib', 'Timestamp'), - ('pandas._period', 'Period'): ('pandas._libs.period', 'Period'), + ('pandas._period', 'Period'): ('pandas._libs.tslibs.period', 'Period'), + + # 18543 moving period + ('pandas._libs.period', 'Period'): + ('pandas._libs.tslibs.period', 'Period'), # 18014 moved __nat_unpickle from _libs.tslib-->_libs.tslibs.nattype ('pandas.tslib', '__nat_unpickle'): @@ -105,10 +109,6 @@ def load_reduce(self): ('pandas.core.indexes.datetimes', 'DatetimeIndex'), ('pandas.tseries.period', 'PeriodIndex'): ('pandas.core.indexes.period', 'PeriodIndex'), - - # 18543 moving period - ('pandas._libs.period', 'Period'): - ('pandas._libs.tslibs.period', 'Period') } From bb286a82622f6f83a8988f7efb704e9eeb8bec64 Mon Sep 17 00:00:00 2001 From: Aaron Critchley Date: Sat, 2 Dec 2017 16:51:09 +0000 Subject: [PATCH 5/8] Tidier imports --- pandas/_libs/tslibs/period.pyx | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/pandas/_libs/tslibs/period.pyx b/pandas/_libs/tslibs/period.pyx index dea53ce1c10fd..e0d2372dd406d 100644 --- a/pandas/_libs/tslibs/period.pyx +++ b/pandas/_libs/tslibs/period.pyx @@ -29,12 +29,11 @@ from util cimport is_period_object, is_string_object, INT32_MIN from pandas._libs.missing cimport is_null_datetimelike from pandas._libs.tslib import Timestamp -from timezones cimport ( - is_utc, is_tzlocal, get_utcoffset, get_dst_info) +from timezones cimport is_utc, is_tzlocal, get_utcoffset, get_dst_info from timedeltas cimport delta_to_nanoseconds from parsing import (parse_time_string, NAT_SENTINEL, - _get_rule_month, _MONTH_NUMBERS) + _get_rule_month, _MONTH_NUMBERS) from frequencies cimport get_freq_code from resolution import resolution, Resolution from nattype import nat_strings, NaT, iNaT From ece52189110dc87cae62bc5725c2cf29861dacf2 Mon Sep 17 00:00:00 2001 From: Aaron Critchley Date: Sat, 2 Dec 2017 16:53:39 +0000 Subject: [PATCH 6/8] Removing trailing comma in pickle_compat --- pandas/compat/pickle_compat.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pandas/compat/pickle_compat.py b/pandas/compat/pickle_compat.py index dd8a57a469a31..45f3b999be7f6 100644 --- a/pandas/compat/pickle_compat.py +++ b/pandas/compat/pickle_compat.py @@ -108,7 +108,7 @@ def load_reduce(self): ('pandas.tseries.index', 'DatetimeIndex'): ('pandas.core.indexes.datetimes', 'DatetimeIndex'), ('pandas.tseries.period', 'PeriodIndex'): - ('pandas.core.indexes.period', 'PeriodIndex'), + ('pandas.core.indexes.period', 'PeriodIndex') } From 331d3e614a00adc3e11e328724b90df3d6eb5590 Mon Sep 17 00:00:00 2001 From: Aaron Critchley Date: Sun, 3 Dec 2017 01:26:02 +0000 Subject: [PATCH 7/8] Moving usage in datetimes.py --- pandas/core/indexes/datetimes.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pandas/core/indexes/datetimes.py b/pandas/core/indexes/datetimes.py index ee6263a9f0aad..1578ae924c9bb 100644 --- a/pandas/core/indexes/datetimes.py +++ b/pandas/core/indexes/datetimes.py @@ -54,8 +54,9 @@ from pandas._libs import (lib, index as libindex, tslib as libts, algos as libalgos, join as libjoin, - Timestamp, period as libperiod) -from pandas._libs.tslibs import timezones, conversion, fields + Timestamp) +from pandas._libs.tslibs import (timezones, conversion, fields, + period as libperiod) # -------- some conversion wrapper functions From dd5021ff0105d18a83cb816b998dd7c839591e3a Mon Sep 17 00:00:00 2001 From: Aaron Critchley Date: Sun, 3 Dec 2017 16:24:15 +0000 Subject: [PATCH 8/8] Implementing suggested changes from PR --- pandas/_libs/tslibs/period.pyx | 2 +- pandas/compat/pickle_compat.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pandas/_libs/tslibs/period.pyx b/pandas/_libs/tslibs/period.pyx index e0d2372dd406d..cf73257caf227 100644 --- a/pandas/_libs/tslibs/period.pyx +++ b/pandas/_libs/tslibs/period.pyx @@ -28,7 +28,7 @@ cimport util from util cimport is_period_object, is_string_object, INT32_MIN from pandas._libs.missing cimport is_null_datetimelike -from pandas._libs.tslib import Timestamp +from timestamps import Timestamp from timezones cimport is_utc, is_tzlocal, get_utcoffset, get_dst_info from timedeltas cimport delta_to_nanoseconds diff --git a/pandas/compat/pickle_compat.py b/pandas/compat/pickle_compat.py index 45f3b999be7f6..07b34961ce25d 100644 --- a/pandas/compat/pickle_compat.py +++ b/pandas/compat/pickle_compat.py @@ -74,9 +74,9 @@ def load_reduce(self): ('pandas._libs.sparse', 'BlockIndex'), ('pandas.tslib', 'Timestamp'): ('pandas._libs.tslib', 'Timestamp'), - ('pandas._period', 'Period'): ('pandas._libs.tslibs.period', 'Period'), # 18543 moving period + ('pandas._period', 'Period'): ('pandas._libs.tslibs.period', 'Period'), ('pandas._libs.period', 'Period'): ('pandas._libs.tslibs.period', 'Period'),