From 0c84dcb77c3071db22f400bd69b47deef07900a6 Mon Sep 17 00:00:00 2001 From: Will Ayd Date: Mon, 26 Nov 2018 22:08:47 -0500 Subject: [PATCH 01/11] Updated setup --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index cb52db98905d3..3d538fb218218 100755 --- a/setup.py +++ b/setup.py @@ -445,7 +445,7 @@ def get_tag(self): # Note: if not using `cythonize`, coverage can be enabled by # pinning `ext.cython_directives = directives` to each ext in extensions. # github.com/cython/cython/wiki/enhancements-compilerdirectives#in-setuppy -directives = {'linetrace': False} +directives = {'linetrace': False, 'language_level': 3} macros = [] if linetrace: # https://pypkg.com/pypi/pytest-cython/f/tests/example-project/setup.py From 0e90b55915cd635ac06fe1bba6faf4683a7ca1cf Mon Sep 17 00:00:00 2001 From: Will Ayd Date: Mon, 26 Nov 2018 22:08:56 -0500 Subject: [PATCH 02/11] Conversion to absolute imports --- pandas/_libs/algos.pxd | 2 +- pandas/_libs/algos.pyx | 13 ++++----- pandas/_libs/groupby.pyx | 10 ++++--- pandas/_libs/hashing.pyx | 2 +- pandas/_libs/hashtable.pxd | 5 ++-- pandas/_libs/hashtable.pyx | 6 ++-- pandas/_libs/index.pyx | 6 ++-- pandas/_libs/internals.pyx | 2 +- pandas/_libs/interval.pyx | 6 ++-- pandas/_libs/lib.pyx | 19 ++++++------ pandas/_libs/missing.pyx | 7 +++-- pandas/_libs/ops.pyx | 4 +-- pandas/_libs/parsers.pyx | 6 ++-- pandas/_libs/reduction.pyx | 2 +- pandas/_libs/tslib.pyx | 28 +++++++++--------- pandas/_libs/tslibs/conversion.pyx | 25 ++++++++-------- pandas/_libs/tslibs/fields.pyx | 15 ++++++---- pandas/_libs/tslibs/frequencies.pyx | 4 +-- pandas/_libs/tslibs/nattype.pyx | 8 ++--- pandas/_libs/tslibs/offsets.pyx | 19 ++++++------ pandas/_libs/tslibs/parsing.pyx | 4 +-- pandas/_libs/tslibs/period.pyx | 45 +++++++++++++++-------------- pandas/_libs/tslibs/resolution.pyx | 16 +++++----- pandas/_libs/tslibs/strptime.pyx | 6 ++-- pandas/_libs/tslibs/timedeltas.pyx | 20 ++++++------- pandas/_libs/tslibs/timestamps.pxd | 2 +- pandas/_libs/tslibs/timestamps.pyx | 43 ++++++++++++++------------- pandas/_libs/tslibs/timezones.pyx | 3 +- pandas/_libs/util.pxd | 2 +- pandas/_libs/window.pyx | 6 ++-- 30 files changed, 176 insertions(+), 160 deletions(-) diff --git a/pandas/_libs/algos.pxd b/pandas/_libs/algos.pxd index 5df1e381ea3ce..4bca5b33a3c62 100644 --- a/pandas/_libs/algos.pxd +++ b/pandas/_libs/algos.pxd @@ -1,4 +1,4 @@ -from util cimport numeric +from pandas._libs.util cimport numeric cdef inline Py_ssize_t swap(numeric *a, numeric *b) nogil: diff --git a/pandas/_libs/algos.pyx b/pandas/_libs/algos.pyx index e77899507833f..a064aec492df2 100644 --- a/pandas/_libs/algos.pyx +++ b/pandas/_libs/algos.pyx @@ -19,15 +19,14 @@ from numpy cimport (ndarray, cnp.import_array() -cimport util -from util cimport numeric, get_nat +cimport pandas._libs.util as util +from pandas._libs.util cimport numeric, get_nat -from khash cimport (khiter_t, - kh_destroy_int64, kh_put_int64, - kh_init_int64, kh_int64_t, - kh_resize_int64, kh_get_int64) +from pandas._libs.khash cimport ( + khiter_t, kh_destroy_int64, kh_put_int64, kh_init_int64, kh_int64_t, + kh_resize_int64, kh_get_int64) -import missing +import pandas._libs.missing as missing cdef float64_t FP_ERR = 1e-13 diff --git a/pandas/_libs/groupby.pyx b/pandas/_libs/groupby.pyx index 7c16b29f3e42b..e6036654c71c3 100644 --- a/pandas/_libs/groupby.pyx +++ b/pandas/_libs/groupby.pyx @@ -13,11 +13,13 @@ from numpy cimport (ndarray, cnp.import_array() -from util cimport numeric, get_nat +from pandas._libs.util cimport numeric, get_nat -from algos cimport (swap, TiebreakEnumType, TIEBREAK_AVERAGE, TIEBREAK_MIN, - TIEBREAK_MAX, TIEBREAK_FIRST, TIEBREAK_DENSE) -from algos import take_2d_axis1_float64_float64, groupsort_indexer, tiebreakers +from pandas._libs.algos cimport (swap, TiebreakEnumType, TIEBREAK_AVERAGE, + TIEBREAK_MIN, TIEBREAK_MAX, TIEBREAK_FIRST, + TIEBREAK_DENSE) +from pandas._libs.algos import (take_2d_axis1_float64_float64, + groupsort_indexer, tiebreakers) cdef int64_t NPY_NAT = get_nat() diff --git a/pandas/_libs/hashing.pyx b/pandas/_libs/hashing.pyx index 6e66693decc01..21d6c5378e170 100644 --- a/pandas/_libs/hashing.pyx +++ b/pandas/_libs/hashing.pyx @@ -9,7 +9,7 @@ import numpy as np from numpy cimport uint8_t, uint32_t, uint64_t, import_array import_array() -from util cimport is_nan +from pandas._libs.util cimport is_nan DEF cROUNDS = 2 DEF dROUNDS = 4 diff --git a/pandas/_libs/hashtable.pxd b/pandas/_libs/hashtable.pxd index d735b3c0673b2..609420f429798 100644 --- a/pandas/_libs/hashtable.pxd +++ b/pandas/_libs/hashtable.pxd @@ -1,5 +1,6 @@ -from khash cimport (kh_int64_t, kh_uint64_t, kh_float64_t, kh_pymap_t, - kh_str_t, uint64_t, int64_t, float64_t) +from pandas._libs.khash cimport ( + kh_int64_t, kh_uint64_t, kh_float64_t, kh_pymap_t, kh_str_t, uint64_t, + int64_t, float64_t) from numpy cimport ndarray # prototypes for sharing diff --git a/pandas/_libs/hashtable.pyx b/pandas/_libs/hashtable.pyx index 9aa887727a765..47fa5932290af 100644 --- a/pandas/_libs/hashtable.pyx +++ b/pandas/_libs/hashtable.pyx @@ -16,7 +16,7 @@ cdef extern from "numpy/npy_math.h": float64_t NAN "NPY_NAN" -from khash cimport ( +from pandas._libs.khash cimport ( khiter_t, kh_str_t, kh_init_str, kh_put_str, kh_exist_str, @@ -37,9 +37,9 @@ from khash cimport ( kh_put_pymap, kh_resize_pymap) -cimport util +cimport pandas._libs.util as util -from missing cimport checknull +from pandas._libs.missing cimport checknull cdef int64_t NPY_NAT = util.get_nat() diff --git a/pandas/_libs/index.pyx b/pandas/_libs/index.pyx index d828c3dd8e923..365713d579d60 100644 --- a/pandas/_libs/index.pyx +++ b/pandas/_libs/index.pyx @@ -15,11 +15,11 @@ from numpy cimport (ndarray, intp_t, cnp.import_array() -cimport util +cimport pandas._libs.util as util -from tslibs.conversion cimport maybe_datetimelike_to_i8 +from pandas._libs.tslibs.conversion cimport maybe_datetimelike_to_i8 -from hashtable cimport HashTable +from pandas._libs.hashtable cimport HashTable from pandas._libs import algos, hashtable as _hash from pandas._libs.tslibs import Timestamp, Timedelta, period as periodlib diff --git a/pandas/_libs/internals.pyx b/pandas/_libs/internals.pyx index 681530ed494d7..fe94cf1d6db73 100644 --- a/pandas/_libs/internals.pyx +++ b/pandas/_libs/internals.pyx @@ -18,7 +18,7 @@ cdef extern from "compat_helper.h": Py_ssize_t *slicelength) except -1 -from algos import ensure_int64 +from pandas._libs.algos import ensure_int64 cdef class BlockPlacement: diff --git a/pandas/_libs/interval.pyx b/pandas/_libs/interval.pyx index dae88d3b707bf..4a08c8cf32b03 100644 --- a/pandas/_libs/interval.pyx +++ b/pandas/_libs/interval.pyx @@ -20,10 +20,10 @@ cnp.import_array() cimport util util.import_array() -from hashtable cimport Int64Vector, Int64VectorData +from pandas._libs.hashtable cimport Int64Vector, Int64VectorData -from tslibs import Timestamp -from tslibs.timezones cimport tz_compare +from pandas._libs.tslibs import Timestamp +from pandas._libs.tslibs.timezones cimport tz_compare _VALID_CLOSED = frozenset(['left', 'right', 'both', 'neither']) diff --git a/pandas/_libs/lib.pyx b/pandas/_libs/lib.pyx index ad538ff103c2f..f90cc4c17acfc 100644 --- a/pandas/_libs/lib.pyx +++ b/pandas/_libs/lib.pyx @@ -52,15 +52,16 @@ cdef extern from "src/parse_helper.h": cimport util from util cimport is_nan, UINT64_MAX, INT64_MAX, INT64_MIN -from tslib import array_to_datetime -from tslibs.nattype cimport NPY_NAT -from tslibs.nattype import NaT -from tslibs.conversion cimport convert_to_tsobject -from tslibs.timedeltas cimport convert_to_timedelta64 -from tslibs.timezones cimport get_timezone, tz_compare - -from missing cimport (checknull, isnaobj, - is_null_datetime64, is_null_timedelta64, is_null_period) +from pandas._libs.tslib import array_to_datetime +from pandas._libs.tslibs.nattype cimport NPY_NAT +from pandas._libs.tslibs.nattype import NaT +from pandas._libs.tslibs.conversion cimport convert_to_tsobject +from pandas._libs.tslibs.timedeltas cimport convert_to_timedelta64 +from pandas._libs.tslibs.timezones cimport get_timezone, tz_compare + +from pandas._libs.missing cimport ( + checknull, isnaobj, is_null_datetime64, is_null_timedelta64, is_null_period +) # constants that will be compared to potentially arbitrarily large diff --git a/pandas/_libs/missing.pyx b/pandas/_libs/missing.pyx index 1fdb04dd10d8e..137229c6aec5f 100644 --- a/pandas/_libs/missing.pyx +++ b/pandas/_libs/missing.pyx @@ -10,9 +10,10 @@ cnp.import_array() cimport util -from tslibs.np_datetime cimport get_timedelta64_value, get_datetime64_value -from tslibs.nattype cimport checknull_with_nat -from tslibs.nattype import NaT +from pandas._libs.tslibs.np_datetime cimport ( + get_timedelta64_value, get_datetime64_value) +from pandas._libs.tslibs.nattype cimport checknull_with_nat +from pandas._libs.tslibs.nattype import NaT cdef float64_t INF = np.inf cdef float64_t NEGINF = -INF diff --git a/pandas/_libs/ops.pyx b/pandas/_libs/ops.pyx index e21bce177b38b..fb1d2e379958c 100644 --- a/pandas/_libs/ops.pyx +++ b/pandas/_libs/ops.pyx @@ -12,9 +12,9 @@ from numpy cimport ndarray, uint8_t, import_array import_array() -from util cimport UINT8_MAX, is_nan +from pandas._libs.util cimport UINT8_MAX, is_nan -from missing cimport checknull +from pandas._libs.missing cimport checknull @cython.wraparound(False) diff --git a/pandas/_libs/parsers.pyx b/pandas/_libs/parsers.pyx index f74de79542628..35a9f08fd5910 100644 --- a/pandas/_libs/parsers.pyx +++ b/pandas/_libs/parsers.pyx @@ -32,10 +32,10 @@ cimport numpy as cnp from numpy cimport ndarray, uint8_t, uint64_t, int64_t, float64_t cnp.import_array() -from util cimport UINT64_MAX, INT64_MAX, INT64_MIN -import lib +from pandas._libs.util cimport UINT64_MAX, INT64_MAX, INT64_MIN +import pandas._libs.lib as lib -from khash cimport ( +from pandas._libs.khash cimport ( khiter_t, kh_str_t, kh_init_str, kh_put_str, kh_exist_str, kh_get_str, kh_destroy_str, diff --git a/pandas/_libs/reduction.pyx b/pandas/_libs/reduction.pyx index 6f892c928805e..2d5a6fb1045af 100644 --- a/pandas/_libs/reduction.pyx +++ b/pandas/_libs/reduction.pyx @@ -16,7 +16,7 @@ from numpy cimport (ndarray, cnp.import_array() cimport util -from lib import maybe_convert_objects +from pandas._libs.lib import maybe_convert_objects cdef _get_result_array(object obj, Py_ssize_t size, Py_ssize_t cnt): diff --git a/pandas/_libs/tslib.pyx b/pandas/_libs/tslib.pyx index c5bc969ede3c9..60ab473561473 100644 --- a/pandas/_libs/tslib.pyx +++ b/pandas/_libs/tslib.pyx @@ -17,36 +17,36 @@ cnp.import_array() import pytz -from util cimport (is_integer_object, is_float_object, is_string_object, - is_datetime64_object) +from pandas._libs.util cimport ( + is_integer_object, is_float_object, is_string_object, is_datetime64_object) -from tslibs.np_datetime cimport (check_dts_bounds, +from pandas._libs.tslibs.np_datetime cimport (check_dts_bounds, npy_datetimestruct, _string_to_dts, dt64_to_dtstruct, dtstruct_to_dt64, pydatetime_to_dt64, pydate_to_dt64, get_datetime64_value) -from tslibs.np_datetime import OutOfBoundsDatetime +from pandas._libs.tslibs.np_datetime import OutOfBoundsDatetime -from tslibs.parsing import parse_datetime_string +from pandas._libs.tslibs.parsing import parse_datetime_string -from tslibs.timedeltas cimport cast_from_unit -from tslibs.timezones cimport is_utc, is_tzlocal, get_dst_info -from tslibs.timezones import UTC -from tslibs.conversion cimport (tz_convert_single, _TSObject, +from pandas._libs.tslibs.timedeltas cimport cast_from_unit +from pandas._libs.tslibs.timezones cimport is_utc, is_tzlocal, get_dst_info +from pandas._libs.tslibs.timezones import UTC +from pandas._libs.tslibs.conversion cimport (tz_convert_single, _TSObject, convert_datetime_to_tsobject, get_datetime64_nanos, tz_convert_utc_to_tzlocal) # many modules still look for NaT and iNaT here despite them not being needed -from tslibs.nattype import nat_strings, NaT, iNaT # noqa:F821 -from tslibs.nattype cimport checknull_with_nat, NPY_NAT +from pandas._libs.tslibs.nattype import nat_strings, NaT, iNaT # noqa:F821 +from pandas._libs.tslibs.nattype cimport checknull_with_nat, NPY_NAT -from tslibs.offsets cimport to_offset +from pandas._libs.tslibs.offsets cimport to_offset -from tslibs.timestamps cimport create_timestamp_from_ts -from tslibs.timestamps import Timestamp +from pandas._libs.tslibs.timestamps cimport create_timestamp_from_ts +from pandas._libs.tslibs.timestamps import Timestamp cdef bint PY2 = str == bytes diff --git a/pandas/_libs/tslibs/conversion.pyx b/pandas/_libs/tslibs/conversion.pyx index 9d6daf3d42523..c2bf7d6ee21e8 100644 --- a/pandas/_libs/tslibs/conversion.pyx +++ b/pandas/_libs/tslibs/conversion.pyx @@ -28,19 +28,18 @@ from np_datetime cimport (check_dts_bounds, pydatetime_to_dt64, NPY_DATETIMEUNIT, NPY_FR_ns) from np_datetime import OutOfBoundsDatetime -from util cimport (is_string_object, - is_datetime64_object, - is_integer_object, is_float_object) - -from timedeltas cimport cast_from_unit -from timezones cimport (is_utc, is_tzlocal, is_fixed_offset, - get_utcoffset, get_dst_info, - get_timezone, maybe_get_tz, tz_compare) -from timezones import UTC -from parsing import parse_datetime_string - -from nattype import nat_strings, NaT -from nattype cimport NPY_NAT, checknull_with_nat +from pandas._libs.tslibs.util cimport ( + is_string_object, is_datetime64_object, is_integer_object, is_float_object) + +from pandas._libs.tslibs.timedeltas cimport cast_from_unit +from pandas._libs.tslibs.timezones cimport ( + is_utc, is_tzlocal, is_fixed_offset, get_utcoffset, get_dst_info, + get_timezone, maybe_get_tz, tz_compare) +from pandas._libs.tslibs.timezones import UTC +from pandas._libs.tslibs.parsing import parse_datetime_string + +from pandas._libs.tslibs.nattype import nat_strings, NaT +from pandas._libs.tslibs.nattype cimport NPY_NAT, checknull_with_nat # ---------------------------------------------------------------------- # Constants diff --git a/pandas/_libs/tslibs/fields.pyx b/pandas/_libs/tslibs/fields.pyx index 72157c2fcb2f3..346afbe9227a0 100644 --- a/pandas/_libs/tslibs/fields.pyx +++ b/pandas/_libs/tslibs/fields.pyx @@ -12,12 +12,15 @@ cimport numpy as cnp from numpy cimport ndarray, int64_t, int32_t, int8_t cnp.import_array() -from ccalendar import get_locale_names, MONTHS_FULL, DAYS_FULL, DAY_SECONDS -from ccalendar cimport (get_days_in_month, is_leapyear, dayofweek, - get_week_of_year, get_day_of_year) -from np_datetime cimport (npy_datetimestruct, pandas_timedeltastruct, - dt64_to_dtstruct, td64_to_tdstruct) -from nattype cimport NPY_NAT +from pandas._libs.tslibs.ccalendar import ( + get_locale_names, MONTHS_FULL, DAYS_FULL, DAY_SECONDS) +from pandas._libs.tslibs.ccalendar cimport ( + get_days_in_month, is_leapyear, dayofweek, get_week_of_year, + get_day_of_year) +from pandas._libs.tslibs.np_datetime cimport ( + npy_datetimestruct, pandas_timedeltastruct, dt64_to_dtstruct, + td64_to_tdstruct) +from pandas._libs.tslibs.nattype cimport NPY_NAT def get_time_micros(ndarray[int64_t] dtindex): diff --git a/pandas/_libs/tslibs/frequencies.pyx b/pandas/_libs/tslibs/frequencies.pyx index fff4d04399481..bd9e68e134407 100644 --- a/pandas/_libs/tslibs/frequencies.pyx +++ b/pandas/_libs/tslibs/frequencies.pyx @@ -4,9 +4,9 @@ import re cimport numpy as cnp cnp.import_array() -from util cimport is_integer_object, is_string_object +from pandas._libs.tslibs.util cimport is_integer_object, is_string_object -from ccalendar import MONTH_NUMBERS +from pandas._libs.tslibs.ccalendar import MONTH_NUMBERS # ---------------------------------------------------------------------- # Constants diff --git a/pandas/_libs/tslibs/nattype.pyx b/pandas/_libs/tslibs/nattype.pyx index 7b7f5f2e34c5f..17a7fb7e23012 100644 --- a/pandas/_libs/tslibs/nattype.pyx +++ b/pandas/_libs/tslibs/nattype.pyx @@ -14,10 +14,10 @@ cimport numpy as cnp from numpy cimport int64_t cnp.import_array() -cimport util -from util cimport (get_nat, - is_integer_object, is_float_object, - is_datetime64_object, is_timedelta64_object) +cimport pandas._libs.tslibs.util as util +from pandas._libs.tslibs.util cimport ( + get_nat, is_integer_object, is_float_object, is_datetime64_object, + is_timedelta64_object) # ---------------------------------------------------------------------- # Constants diff --git a/pandas/_libs/tslibs/offsets.pyx b/pandas/_libs/tslibs/offsets.pyx index f3ac102bf177e..f5295c6506eac 100644 --- a/pandas/_libs/tslibs/offsets.pyx +++ b/pandas/_libs/tslibs/offsets.pyx @@ -18,15 +18,16 @@ from numpy cimport int64_t cnp.import_array() -from util cimport is_string_object, is_integer_object - -from ccalendar import MONTHS, DAYS -from ccalendar cimport get_days_in_month, dayofweek -from conversion cimport tz_convert_single, pydt_to_i8, localize_pydatetime -from nattype cimport NPY_NAT -from np_datetime cimport (npy_datetimestruct, - dtstruct_to_dt64, dt64_to_dtstruct) -from timezones import UTC +from pandas._libs.tslibs.util cimport is_string_object, is_integer_object + +from pandas._libs.tslibs.ccalendar import MONTHS, DAYS +from pandas._libs.tslibs.ccalendar cimport get_days_in_month, dayofweek +from pandas._libs.tslibs.conversion cimport ( + tz_convert_single, pydt_to_i8, localize_pydatetime) +from pandas._libs.tslibs.nattype cimport NPY_NAT +from pandas._libs.tslibs.np_datetime cimport ( + npy_datetimestruct, dtstruct_to_dt64, dt64_to_dtstruct) +from pandas._libs.tslibs.timezones import UTC # --------------------------------------------------------------------- # Constants diff --git a/pandas/_libs/tslibs/parsing.pyx b/pandas/_libs/tslibs/parsing.pyx index 71bb8f79642dc..67063d4e397ff 100644 --- a/pandas/_libs/tslibs/parsing.pyx +++ b/pandas/_libs/tslibs/parsing.pyx @@ -29,8 +29,8 @@ from dateutil.relativedelta import relativedelta from dateutil.parser import DEFAULTPARSER from dateutil.parser import parse as du_parse -from ccalendar import MONTH_NUMBERS -from nattype import nat_strings, NaT +from pandas._libs.tslibs.ccalendar import MONTH_NUMBERS +from pandas._libs.tslibs.nattype import nat_strings, NaT # ---------------------------------------------------------------------- # Constants diff --git a/pandas/_libs/tslibs/period.pyx b/pandas/_libs/tslibs/period.pyx index e02e493c32a00..ba2fe7e32eb87 100644 --- a/pandas/_libs/tslibs/period.pyx +++ b/pandas/_libs/tslibs/period.pyx @@ -29,27 +29,30 @@ cdef extern from "src/datetime/np_datetime.h": int64_t npy_datetimestruct_to_datetime(NPY_DATETIMEUNIT fr, npy_datetimestruct *d) nogil -cimport util -from util cimport is_period_object, is_string_object - -from timestamps import Timestamp, maybe_integer_op_deprecated -from timezones cimport is_utc, is_tzlocal, get_dst_info -from timedeltas import Timedelta -from timedeltas cimport delta_to_nanoseconds - -cimport ccalendar -from ccalendar cimport dayofweek, get_day_of_year, is_leapyear -from ccalendar import MONTH_NUMBERS -from conversion cimport tz_convert_utc_to_tzlocal -from frequencies cimport (get_freq_code, get_base_alias, - get_to_timestamp_base, get_freq_str, - get_rule_month) -from parsing import parse_time_string -from resolution import Resolution -from nattype import nat_strings, NaT -from nattype cimport _nat_scalar_rules, NPY_NAT, is_null_datetimelike -from offsets cimport to_offset -from offsets import _Tick +cimport pandas._libs.tslibs.util as util +from pandas._libs.tslibs.util cimport is_period_object, is_string_object + +from pandas._libs.tslibs.timestamps import ( + Timestamp, maybe_integer_op_deprecated) +from pandas._libs.tslibs.timezones cimport is_utc, is_tzlocal, get_dst_info +from pandas._libs.tslibs.timedeltas import Timedelta +from pandas._libs.tslibs.timedeltas cimport delta_to_nanoseconds + +cimport pandas._libs.tslibs.ccalendar +from pandas._libs.tslibs.ccalendar cimport ( + dayofweek, get_day_of_year, is_leapyear) +from pandas._libs.tslibs.ccalendar import MONTH_NUMBERS +from pandas._libs.tslibs.conversion cimport tz_convert_utc_to_tzlocal +from pandas._libs.tslibs.frequencies cimport ( + get_freq_code, get_base_alias, get_to_timestamp_base, get_freq_str, + get_rule_month) +from pandas._libs.tslibs.parsing import parse_time_string +from pandas._libs.tslibs.resolution import Resolution +from pandas._libs.tslibs.nattype import nat_strings, NaT +from pandas._libs.tslibs.nattype cimport ( + _nat_scalar_rules, NPY_NAT, is_null_datetimelike) +from pandas._libs.tslibs.offsets cimport to_offset +from pandas._libs.tslibs.offsets import _Tick cdef bint PY2 = str == bytes cdef enum: diff --git a/pandas/_libs/tslibs/resolution.pyx b/pandas/_libs/tslibs/resolution.pyx index 4acffdea78f55..5e06ef3aafbea 100644 --- a/pandas/_libs/tslibs/resolution.pyx +++ b/pandas/_libs/tslibs/resolution.pyx @@ -5,13 +5,15 @@ from cython import Py_ssize_t import numpy as np from numpy cimport ndarray, int64_t, int32_t -from util cimport is_string_object, get_nat - -from np_datetime cimport npy_datetimestruct, dt64_to_dtstruct -from frequencies cimport get_freq_code -from timezones cimport is_utc, is_tzlocal, maybe_get_tz, get_dst_info -from conversion cimport tz_convert_utc_to_tzlocal -from ccalendar cimport get_days_in_month +from pandas._libs.tslibs.util cimport is_string_object, get_nat + +from pandas._libs.tslibs.np_datetime cimport ( + npy_datetimestruct, dt64_to_dtstruct) +from pandas._libs.tslibs.frequencies cimport get_freq_code +from pandas._libs.tslibs.timezones cimport ( + is_utc, is_tzlocal, maybe_get_tz, get_dst_info) +from pandas._libs.tslibs.conversion cimport tz_convert_utc_to_tzlocal +from pandas._libs.tslibs.ccalendar cimport get_days_in_month # ---------------------------------------------------------------------- # Constants diff --git a/pandas/_libs/tslibs/strptime.pyx b/pandas/_libs/tslibs/strptime.pyx index 46a1145009857..be49fb0ada560 100644 --- a/pandas/_libs/tslibs/strptime.pyx +++ b/pandas/_libs/tslibs/strptime.pyx @@ -32,10 +32,10 @@ from numpy cimport int64_t from np_datetime cimport (check_dts_bounds, dtstruct_to_dt64, npy_datetimestruct) -from util cimport is_string_object +from pandas._libs.tslibs.util cimport is_string_object -from nattype cimport checknull_with_nat, NPY_NAT -from nattype import nat_strings +from pandas._libs.tslibs.nattype cimport checknull_with_nat, NPY_NAT +from pandas._libs.tslibs.nattype import nat_strings cdef dict _parse_code_table = {'y': 0, 'Y': 1, diff --git a/pandas/_libs/tslibs/timedeltas.pyx b/pandas/_libs/tslibs/timedeltas.pyx index 4d612a6f43107..dffd63ceae41f 100644 --- a/pandas/_libs/tslibs/timedeltas.pyx +++ b/pandas/_libs/tslibs/timedeltas.pyx @@ -23,19 +23,19 @@ from cpython.datetime cimport (datetime, timedelta, PyDateTime_IMPORT -cimport util -from util cimport (is_timedelta64_object, is_datetime64_object, - is_integer_object, is_float_object, - is_string_object) +cimport pandas._libs.tslibs.util as util +from pandas._libs.tslibs.util cimport ( + is_timedelta64_object, is_datetime64_object, is_integer_object, + is_float_object, is_string_object) -from ccalendar import DAY_SECONDS +from pandas._libs.tslibs.ccalendar import DAY_SECONDS -from np_datetime cimport (cmp_scalar, reverse_ops, td64_to_tdstruct, - pandas_timedeltastruct) +from pandas._libs.tslibs.np_datetime cimport ( + cmp_scalar, reverse_ops, td64_to_tdstruct, pandas_timedeltastruct) -from nattype import nat_strings, NaT -from nattype cimport checknull_with_nat, NPY_NAT -from offsets cimport to_offset +from pandas._libs.tslibs.nattype import nat_strings, NaT +from pandas._libs.tslibs.nattype cimport checknull_with_nat, NPY_NAT +from pandas._libs.tslibs.offsets cimport to_offset # ---------------------------------------------------------------------- # Constants diff --git a/pandas/_libs/tslibs/timestamps.pxd b/pandas/_libs/tslibs/timestamps.pxd index a162799828cba..b7282e02ff117 100644 --- a/pandas/_libs/tslibs/timestamps.pxd +++ b/pandas/_libs/tslibs/timestamps.pxd @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- from numpy cimport int64_t -from np_datetime cimport npy_datetimestruct +from pandas._libs.tslibs.np_datetime cimport npy_datetimestruct cdef object create_timestamp_from_ts(int64_t value, npy_datetimestruct dts, diff --git a/pandas/_libs/tslibs/timestamps.pyx b/pandas/_libs/tslibs/timestamps.pyx index bb7a9a57b8a75..0c9f6443a72a3 100644 --- a/pandas/_libs/tslibs/timestamps.pyx +++ b/pandas/_libs/tslibs/timestamps.pyx @@ -16,27 +16,30 @@ from cpython.datetime cimport (datetime, PyDateTime_IMPORT) PyDateTime_IMPORT -from util cimport (is_datetime64_object, is_timedelta64_object, - is_integer_object, is_string_object, is_array, - is_offset_object) - -cimport ccalendar -from ccalendar import DAY_SECONDS -from conversion import tz_localize_to_utc, normalize_i8_timestamps -from conversion cimport (tz_convert_single, _TSObject, - convert_to_tsobject, convert_datetime_to_tsobject) -from fields import get_start_end_field, get_date_name_field -from nattype import NaT -from nattype cimport NPY_NAT -from np_datetime import OutOfBoundsDatetime -from np_datetime cimport (reverse_ops, cmp_scalar, check_dts_bounds, - npy_datetimestruct, dt64_to_dtstruct) -from offsets cimport to_offset -from timedeltas import Timedelta -from timedeltas cimport delta_to_nanoseconds -from timezones cimport ( +from pandas._libsutil cimport (is_datetime64_object, is_timedelta64_object, + is_integer_object, is_string_object, is_array, + is_offset_object) + +cimport pandas._libs.tslibs.ccalendar +from pandas._libs.tslibs.ccalendar import DAY_SECONDS +from pandas._libs.tslibs.conversion import ( + tz_localize_to_utc, normalize_i8_timestamps) +from pandas._libs.tslibs.conversion cimport ( + tz_convert_single, _TSObject, convert_to_tsobject, + convert_datetime_to_tsobject) +from pandas._libs.tslibs.fields import get_start_end_field, get_date_name_field +from pandas._libs.tslibs.nattype import NaT +from pandas._libs.tslibs.nattype cimport NPY_NAT +from pandas._libs.tslibs.np_datetime import OutOfBoundsDatetime +from pandas._libs.tslibs.np_datetime cimport ( + reverse_ops, cmp_scalar, check_dts_bounds, npy_datetimestruct, + dt64_to_dtstruct) +from pandas._libs.tslibs.offsets cimport to_offset +from pandas._libs.tslibs.timedeltas import Timedelta +from pandas._libs.tslibs.timedeltas cimport delta_to_nanoseconds +from pandas._libs.tslibs.timezones cimport ( get_timezone, is_utc, maybe_get_tz, treat_tz_as_pytz, tz_compare) -from timezones import UTC +from pandas._libs.tslibs.timezones import UTC # ---------------------------------------------------------------------- # Constants diff --git a/pandas/_libs/tslibs/timezones.pyx b/pandas/_libs/tslibs/timezones.pyx index 5fa8a45af3083..bb9e333b4b016 100644 --- a/pandas/_libs/tslibs/timezones.pyx +++ b/pandas/_libs/tslibs/timezones.pyx @@ -21,7 +21,8 @@ from numpy cimport int64_t cnp.import_array() # ---------------------------------------------------------------------- -from util cimport is_string_object, is_integer_object, get_nat +from pandas._libs.tslibs.util cimport ( + is_string_object, is_integer_object, get_nat) cdef int64_t NPY_NAT = get_nat() diff --git a/pandas/_libs/util.pxd b/pandas/_libs/util.pxd index e05795d74c503..05a013ec0d7c9 100644 --- a/pandas/_libs/util.pxd +++ b/pandas/_libs/util.pxd @@ -1,4 +1,4 @@ -from tslibs.util cimport * +from pandas._libs.tslibs.util cimport * from cython cimport Py_ssize_t diff --git a/pandas/_libs/window.pyx b/pandas/_libs/window.pyx index f517e0933264a..8276606a04b56 100644 --- a/pandas/_libs/window.pyx +++ b/pandas/_libs/window.pyx @@ -19,10 +19,10 @@ cdef extern from "src/headers/cmath" namespace "std": int signbit(float64_t) nogil float64_t sqrt(float64_t x) nogil -cimport util -from util cimport numeric +cimport pandas._libs.util as util +from pandas._libs.util cimport numeric -from skiplist cimport (skiplist_t, +from pandas._libs.skiplist cimport (skiplist_t, skiplist_init, skiplist_destroy, skiplist_get, skiplist_insert, skiplist_remove) From 62bee57d0fc07c35bd4b89cb18a3dd99aec0dc3e Mon Sep 17 00:00:00 2001 From: Will Ayd Date: Mon, 26 Nov 2018 22:30:27 -0500 Subject: [PATCH 03/11] Missed imports, division, unicode compat --- pandas/_libs/groupby.pyx | 6 +++--- pandas/_libs/interval.pyx | 2 +- pandas/_libs/join.pyx | 2 +- pandas/_libs/lib.pyx | 4 ++-- pandas/_libs/missing.pyx | 2 +- pandas/_libs/reduction.pyx | 2 +- pandas/_libs/tslib.pyx | 2 +- pandas/_libs/tslibs/ccalendar.pyx | 2 +- pandas/_libs/tslibs/conversion.pxd | 2 +- pandas/_libs/tslibs/conversion.pyx | 19 +++++++++---------- pandas/_libs/tslibs/fields.pyx | 4 ++-- pandas/_libs/tslibs/offsets.pyx | 2 +- pandas/_libs/tslibs/period.pyx | 9 ++++----- pandas/_libs/tslibs/strptime.pyx | 10 +++++----- pandas/_libs/tslibs/timestamps.pyx | 10 +++++----- pandas/_libs/writers.pyx | 1 - 16 files changed, 38 insertions(+), 41 deletions(-) diff --git a/pandas/_libs/groupby.pyx b/pandas/_libs/groupby.pyx index e6036654c71c3..8e77389d715d6 100644 --- a/pandas/_libs/groupby.pyx +++ b/pandas/_libs/groupby.pyx @@ -56,10 +56,10 @@ cdef inline float64_t median_linear(float64_t* a, int n) nogil: n -= na_count if n % 2: - result = kth_smallest_c( a, n / 2, n) + result = kth_smallest_c( a, n // 2, n) else: - result = (kth_smallest_c(a, n / 2, n) + - kth_smallest_c(a, n / 2 - 1, n)) / 2 + result = (kth_smallest_c(a, n // 2, n) + + kth_smallest_c(a, n // 2 - 1, n)) / 2 if na_count: free(a) diff --git a/pandas/_libs/interval.pyx b/pandas/_libs/interval.pyx index 4a08c8cf32b03..5658bf9e16a60 100644 --- a/pandas/_libs/interval.pyx +++ b/pandas/_libs/interval.pyx @@ -17,7 +17,7 @@ from numpy cimport ( cnp.import_array() -cimport util +cimport pandas._libs.util as util util.import_array() from pandas._libs.hashtable cimport Int64Vector, Int64VectorData diff --git a/pandas/_libs/join.pyx b/pandas/_libs/join.pyx index 54dfeeff1452d..e4440ac3d9fd8 100644 --- a/pandas/_libs/join.pyx +++ b/pandas/_libs/join.pyx @@ -656,7 +656,7 @@ outer_join_indexer_uint64 = outer_join_indexer["uint64_t"] # asof_join_by # ---------------------------------------------------------------------- -from hashtable cimport ( +from pandas._libs.hashtable cimport ( HashTable, PyObjectHashTable, UInt64HashTable, Int64HashTable) ctypedef fused asof_t: diff --git a/pandas/_libs/lib.pyx b/pandas/_libs/lib.pyx index f90cc4c17acfc..31d9219c398ac 100644 --- a/pandas/_libs/lib.pyx +++ b/pandas/_libs/lib.pyx @@ -49,8 +49,8 @@ cdef extern from "numpy/arrayobject.h": cdef extern from "src/parse_helper.h": int floatify(object, float64_t *result, int *maybe_int) except -1 -cimport util -from util cimport is_nan, UINT64_MAX, INT64_MAX, INT64_MIN +cimport pandas._libs.util as util +from pandas._libs.util cimport is_nan, UINT64_MAX, INT64_MAX, INT64_MIN from pandas._libs.tslib import array_to_datetime from pandas._libs.tslibs.nattype cimport NPY_NAT diff --git a/pandas/_libs/missing.pyx b/pandas/_libs/missing.pyx index 137229c6aec5f..c7f06bc5d7d4f 100644 --- a/pandas/_libs/missing.pyx +++ b/pandas/_libs/missing.pyx @@ -8,7 +8,7 @@ cimport numpy as cnp from numpy cimport ndarray, int64_t, uint8_t, float64_t cnp.import_array() -cimport util +cimport pandas._libs.util as util from pandas._libs.tslibs.np_datetime cimport ( get_timedelta64_value, get_datetime64_value) diff --git a/pandas/_libs/reduction.pyx b/pandas/_libs/reduction.pyx index 2d5a6fb1045af..42494abde7c39 100644 --- a/pandas/_libs/reduction.pyx +++ b/pandas/_libs/reduction.pyx @@ -15,7 +15,7 @@ from numpy cimport (ndarray, flatiter) cnp.import_array() -cimport util +cimport pandas._libs.util as util from pandas._libs.lib import maybe_convert_objects diff --git a/pandas/_libs/tslib.pyx b/pandas/_libs/tslib.pyx index 60ab473561473..d7e1afe4712e6 100644 --- a/pandas/_libs/tslib.pyx +++ b/pandas/_libs/tslib.pyx @@ -277,7 +277,7 @@ def format_array_from_datetime(ndarray[int64_t] values, object tz=None, dts.sec) if show_ns: - ns = dts.ps / 1000 + ns = dts.ps // 1000 res += '.%.9d' % (ns + 1000 * dts.us) elif show_us: res += '.%.6d' % dts.us diff --git a/pandas/_libs/tslibs/ccalendar.pyx b/pandas/_libs/tslibs/ccalendar.pyx index 587213049af85..c713f8f31578c 100644 --- a/pandas/_libs/tslibs/ccalendar.pyx +++ b/pandas/_libs/tslibs/ccalendar.pyx @@ -163,7 +163,7 @@ cpdef int32_t get_week_of_year(int year, int month, int day) nogil: # estimate woy = (doy - 1) - dow + 3 if woy >= 0: - woy = woy / 7 + 1 + woy = woy // 7 + 1 # verify if woy < 0: diff --git a/pandas/_libs/tslibs/conversion.pxd b/pandas/_libs/tslibs/conversion.pxd index 4eb93c35b4afc..8aca9ca185243 100644 --- a/pandas/_libs/tslibs/conversion.pxd +++ b/pandas/_libs/tslibs/conversion.pxd @@ -4,7 +4,7 @@ from cpython.datetime cimport datetime, tzinfo from numpy cimport int64_t, int32_t -from np_datetime cimport npy_datetimestruct +from pandas._libs.tslibs.np_datetime cimport npy_datetimestruct cdef class _TSObject: diff --git a/pandas/_libs/tslibs/conversion.pyx b/pandas/_libs/tslibs/conversion.pyx index c2bf7d6ee21e8..50f69ba08bdae 100644 --- a/pandas/_libs/tslibs/conversion.pyx +++ b/pandas/_libs/tslibs/conversion.pyx @@ -17,16 +17,15 @@ from cpython.datetime cimport (datetime, tzinfo, PyDateTime_CheckExact, PyDateTime_IMPORT) PyDateTime_IMPORT -from ccalendar import DAY_SECONDS, HOUR_SECONDS +from pandas._libs.tslibs.ccalendar import DAY_SECONDS, HOUR_SECONDS -from np_datetime cimport (check_dts_bounds, - npy_datetimestruct, - pandas_datetime_to_datetimestruct, _string_to_dts, - npy_datetime, - dt64_to_dtstruct, dtstruct_to_dt64, - get_datetime64_unit, get_datetime64_value, - pydatetime_to_dt64, NPY_DATETIMEUNIT, NPY_FR_ns) -from np_datetime import OutOfBoundsDatetime +from pandas._libs.tslibs.np_datetime cimport ( + check_dts_bounds, npy_datetimestruct, + pandas_datetime_to_datetimestruct, _string_to_dts, + npy_datetime, dt64_to_dtstruct, dtstruct_to_dt64, + get_datetime64_unit, get_datetime64_value, + pydatetime_to_dt64, NPY_DATETIMEUNIT, NPY_FR_ns) +from pandas._libs.tslibs.np_datetime import OutOfBoundsDatetime from pandas._libs.tslibs.util cimport ( is_string_object, is_datetime64_object, is_integer_object, is_float_object) @@ -454,7 +453,7 @@ cdef _TSObject convert_str_to_tsobject(object ts, object tz, object unit, obj.dts.hour, obj.dts.min, obj.dts.sec, obj.dts.us, obj.tzinfo) obj = convert_datetime_to_tsobject(dt, tz, - nanos=obj.dts.ps / 1000) + nanos=obj.dts.ps // 1000) return obj else: diff --git a/pandas/_libs/tslibs/fields.pyx b/pandas/_libs/tslibs/fields.pyx index 346afbe9227a0..b895319484d27 100644 --- a/pandas/_libs/tslibs/fields.pyx +++ b/pandas/_libs/tslibs/fields.pyx @@ -483,7 +483,7 @@ def get_date_field(ndarray[int64_t] dtindex, object field): continue dt64_to_dtstruct(dtindex[i], &dts) - out[i] = dts.ps / 1000 + out[i] = dts.ps // 1000 return out elif field == 'doy': with nogil: @@ -527,7 +527,7 @@ def get_date_field(ndarray[int64_t] dtindex, object field): dt64_to_dtstruct(dtindex[i], &dts) out[i] = dts.month - out[i] = ((out[i] - 1) / 3) + 1 + out[i] = ((out[i] - 1) // 3) + 1 return out elif field == 'dim': diff --git a/pandas/_libs/tslibs/offsets.pyx b/pandas/_libs/tslibs/offsets.pyx index f5295c6506eac..ef3e92fe1fa66 100644 --- a/pandas/_libs/tslibs/offsets.pyx +++ b/pandas/_libs/tslibs/offsets.pyx @@ -534,7 +534,7 @@ def shift_day(other: datetime, days: int) -> datetime: cdef inline int year_add_months(npy_datetimestruct dts, int months) nogil: """new year number after shifting npy_datetimestruct number of months""" - return dts.year + (dts.month + months - 1) / 12 + return dts.year + (dts.month + months - 1) // 12 cdef inline int month_add_months(npy_datetimestruct dts, int months) nogil: diff --git a/pandas/_libs/tslibs/period.pyx b/pandas/_libs/tslibs/period.pyx index ba2fe7e32eb87..50a393fe6aef9 100644 --- a/pandas/_libs/tslibs/period.pyx +++ b/pandas/_libs/tslibs/period.pyx @@ -20,10 +20,9 @@ from cpython.datetime cimport (PyDateTime_Check, PyDelta_Check, PyDate_Check, # import datetime C API PyDateTime_IMPORT -from np_datetime cimport (npy_datetimestruct, dtstruct_to_dt64, - dt64_to_dtstruct, - pandas_datetime_to_datetimestruct, - NPY_DATETIMEUNIT, NPY_FR_D) +from pandas._libs.tslibs.np_datetime cimport ( + npy_datetimestruct, dtstruct_to_dt64, dt64_to_dtstruct, + pandas_datetime_to_datetimestruct, NPY_DATETIMEUNIT, NPY_FR_D) cdef extern from "src/datetime/np_datetime.h": int64_t npy_datetimestruct_to_datetime(NPY_DATETIMEUNIT fr, @@ -38,7 +37,7 @@ from pandas._libs.tslibs.timezones cimport is_utc, is_tzlocal, get_dst_info from pandas._libs.tslibs.timedeltas import Timedelta from pandas._libs.tslibs.timedeltas cimport delta_to_nanoseconds -cimport pandas._libs.tslibs.ccalendar +cimport pandas._libs.tslibs.ccalendar as ccalendar from pandas._libs.tslibs.ccalendar cimport ( dayofweek, get_day_of_year, is_leapyear) from pandas._libs.tslibs.ccalendar import MONTH_NUMBERS diff --git a/pandas/_libs/tslibs/strptime.pyx b/pandas/_libs/tslibs/strptime.pyx index be49fb0ada560..c19169839e972 100644 --- a/pandas/_libs/tslibs/strptime.pyx +++ b/pandas/_libs/tslibs/strptime.pyx @@ -29,8 +29,8 @@ import numpy as np from numpy cimport int64_t -from np_datetime cimport (check_dts_bounds, - dtstruct_to_dt64, npy_datetimestruct) +from pandas._libs.tslibs.np_datetime cimport ( + check_dts_bounds, dtstruct_to_dt64, npy_datetimestruct) from pandas._libs.tslibs.util cimport is_string_object @@ -242,7 +242,7 @@ def array_strptime(object[:] values, object fmt, s += "0" * (9 - len(s)) us = long(s) ns = us % 1000 - us = us / 1000 + us = us // 1000 elif parse_code == 11: weekday = locale_time.f_weekday.index(found_dict['A'].lower()) elif parse_code == 12: @@ -664,7 +664,7 @@ cdef parse_timezone_directive(object z): gmtoff_remainder_padding = "0" * pad_number microseconds = int(gmtoff_remainder + gmtoff_remainder_padding) - total_minutes = ((hours * 60) + minutes + (seconds / 60) + - (microseconds / 60000000)) + total_minutes = ((hours * 60) + minutes + (seconds // 60) + + (microseconds // 60000000)) total_minutes = -total_minutes if z.startswith("-") else total_minutes return pytz.FixedOffset(total_minutes) diff --git a/pandas/_libs/tslibs/timestamps.pyx b/pandas/_libs/tslibs/timestamps.pyx index 0c9f6443a72a3..6a72674e10772 100644 --- a/pandas/_libs/tslibs/timestamps.pyx +++ b/pandas/_libs/tslibs/timestamps.pyx @@ -16,11 +16,11 @@ from cpython.datetime cimport (datetime, PyDateTime_IMPORT) PyDateTime_IMPORT -from pandas._libsutil cimport (is_datetime64_object, is_timedelta64_object, - is_integer_object, is_string_object, is_array, - is_offset_object) +from pandas._libs.util cimport (is_datetime64_object, is_timedelta64_object, + is_integer_object, is_string_object, is_array, + is_offset_object) -cimport pandas._libs.tslibs.ccalendar +cimport pandas._libs.tslibs.ccalendar as ccalendar from pandas._libs.tslibs.ccalendar import DAY_SECONDS from pandas._libs.tslibs.conversion import ( tz_localize_to_utc, normalize_i8_timestamps) @@ -70,7 +70,7 @@ cdef inline object create_timestamp_from_ts(int64_t value, dts.sec, dts.us, tz) ts_base.value = value ts_base.freq = freq - ts_base.nanosecond = dts.ps / 1000 + ts_base.nanosecond = dts.ps // 1000 return ts_base diff --git a/pandas/_libs/writers.pyx b/pandas/_libs/writers.pyx index 6449a331689ad..8f035d0c205e3 100644 --- a/pandas/_libs/writers.pyx +++ b/pandas/_libs/writers.pyx @@ -16,7 +16,6 @@ from numpy cimport ndarray, uint8_t ctypedef fused pandas_string: str - unicode bytes From 43c809857a93ee1d034437b1a8a611795475b007 Mon Sep 17 00:00:00 2001 From: Will Ayd Date: Tue, 27 Nov 2018 01:30:51 -0500 Subject: [PATCH 04/11] Missing import resolution for strptime --- pandas/_libs/tslibs/ccalendar.pyx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pandas/_libs/tslibs/ccalendar.pyx b/pandas/_libs/tslibs/ccalendar.pyx index c713f8f31578c..d7acb03bd717e 100644 --- a/pandas/_libs/tslibs/ccalendar.pyx +++ b/pandas/_libs/tslibs/ccalendar.pyx @@ -10,7 +10,7 @@ from cython import Py_ssize_t from numpy cimport int64_t, int32_t from locale import LC_TIME -from strptime import LocaleTime +from pandas._libs.tslibs.strptime import LocaleTime # ---------------------------------------------------------------------- # Constants From 385e2da7db004f10e8f177712669915553b799d7 Mon Sep 17 00:00:00 2001 From: Will Ayd Date: Tue, 27 Nov 2018 01:55:26 -0500 Subject: [PATCH 05/11] Timestamp import failure --- pandas/_libs/tslibs/conversion.pyx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pandas/_libs/tslibs/conversion.pyx b/pandas/_libs/tslibs/conversion.pyx index 50f69ba08bdae..4cd3da349761b 100644 --- a/pandas/_libs/tslibs/conversion.pyx +++ b/pandas/_libs/tslibs/conversion.pyx @@ -1082,7 +1082,7 @@ cdef inline Py_ssize_t bisect_right_i8(int64_t *data, cdef inline str _render_tstamp(int64_t val): """ Helper function to render exception messages""" - from timestamps import Timestamp + from pandas._libs.tslibs.timestamps import Timestamp return str(Timestamp(val)) From 7522818320e7e4f6df37968fba4e0b3ab22b9c6b Mon Sep 17 00:00:00 2001 From: Will Ayd Date: Tue, 27 Nov 2018 17:52:36 -0800 Subject: [PATCH 06/11] Reverted non-import changes --- pandas/_libs/writers.pyx | 1 + setup.py | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/pandas/_libs/writers.pyx b/pandas/_libs/writers.pyx index 8f035d0c205e3..6449a331689ad 100644 --- a/pandas/_libs/writers.pyx +++ b/pandas/_libs/writers.pyx @@ -16,6 +16,7 @@ from numpy cimport ndarray, uint8_t ctypedef fused pandas_string: str + unicode bytes diff --git a/setup.py b/setup.py index 3d538fb218218..cb52db98905d3 100755 --- a/setup.py +++ b/setup.py @@ -445,7 +445,7 @@ def get_tag(self): # Note: if not using `cythonize`, coverage can be enabled by # pinning `ext.cython_directives = directives` to each ext in extensions. # github.com/cython/cython/wiki/enhancements-compilerdirectives#in-setuppy -directives = {'linetrace': False, 'language_level': 3} +directives = {'linetrace': False} macros = [] if linetrace: # https://pypkg.com/pypi/pytest-cython/f/tests/example-project/setup.py From ea818aa1f6c66e2c1a3d8d4a9cb3b210380670bc Mon Sep 17 00:00:00 2001 From: Will Ayd Date: Tue, 27 Nov 2018 17:55:22 -0800 Subject: [PATCH 07/11] Reverted floor div changes --- pandas/_libs/groupby.pyx | 6 +++--- pandas/_libs/tslib.pyx | 2 +- pandas/_libs/tslibs/ccalendar.pyx | 2 +- pandas/_libs/tslibs/conversion.pyx | 2 +- pandas/_libs/tslibs/fields.pyx | 4 ++-- pandas/_libs/tslibs/offsets.pyx | 2 +- pandas/_libs/tslibs/strptime.pyx | 6 +++--- pandas/_libs/tslibs/timestamps.pyx | 2 +- 8 files changed, 13 insertions(+), 13 deletions(-) diff --git a/pandas/_libs/groupby.pyx b/pandas/_libs/groupby.pyx index 8e77389d715d6..e6036654c71c3 100644 --- a/pandas/_libs/groupby.pyx +++ b/pandas/_libs/groupby.pyx @@ -56,10 +56,10 @@ cdef inline float64_t median_linear(float64_t* a, int n) nogil: n -= na_count if n % 2: - result = kth_smallest_c( a, n // 2, n) + result = kth_smallest_c( a, n / 2, n) else: - result = (kth_smallest_c(a, n // 2, n) + - kth_smallest_c(a, n // 2 - 1, n)) / 2 + result = (kth_smallest_c(a, n / 2, n) + + kth_smallest_c(a, n / 2 - 1, n)) / 2 if na_count: free(a) diff --git a/pandas/_libs/tslib.pyx b/pandas/_libs/tslib.pyx index d7e1afe4712e6..60ab473561473 100644 --- a/pandas/_libs/tslib.pyx +++ b/pandas/_libs/tslib.pyx @@ -277,7 +277,7 @@ def format_array_from_datetime(ndarray[int64_t] values, object tz=None, dts.sec) if show_ns: - ns = dts.ps // 1000 + ns = dts.ps / 1000 res += '.%.9d' % (ns + 1000 * dts.us) elif show_us: res += '.%.6d' % dts.us diff --git a/pandas/_libs/tslibs/ccalendar.pyx b/pandas/_libs/tslibs/ccalendar.pyx index d7acb03bd717e..d14c008b95d5a 100644 --- a/pandas/_libs/tslibs/ccalendar.pyx +++ b/pandas/_libs/tslibs/ccalendar.pyx @@ -163,7 +163,7 @@ cpdef int32_t get_week_of_year(int year, int month, int day) nogil: # estimate woy = (doy - 1) - dow + 3 if woy >= 0: - woy = woy // 7 + 1 + woy = woy / 7 + 1 # verify if woy < 0: diff --git a/pandas/_libs/tslibs/conversion.pyx b/pandas/_libs/tslibs/conversion.pyx index 4cd3da349761b..37286eaa722fd 100644 --- a/pandas/_libs/tslibs/conversion.pyx +++ b/pandas/_libs/tslibs/conversion.pyx @@ -453,7 +453,7 @@ cdef _TSObject convert_str_to_tsobject(object ts, object tz, object unit, obj.dts.hour, obj.dts.min, obj.dts.sec, obj.dts.us, obj.tzinfo) obj = convert_datetime_to_tsobject(dt, tz, - nanos=obj.dts.ps // 1000) + nanos=obj.dts.ps / 1000) return obj else: diff --git a/pandas/_libs/tslibs/fields.pyx b/pandas/_libs/tslibs/fields.pyx index b895319484d27..346afbe9227a0 100644 --- a/pandas/_libs/tslibs/fields.pyx +++ b/pandas/_libs/tslibs/fields.pyx @@ -483,7 +483,7 @@ def get_date_field(ndarray[int64_t] dtindex, object field): continue dt64_to_dtstruct(dtindex[i], &dts) - out[i] = dts.ps // 1000 + out[i] = dts.ps / 1000 return out elif field == 'doy': with nogil: @@ -527,7 +527,7 @@ def get_date_field(ndarray[int64_t] dtindex, object field): dt64_to_dtstruct(dtindex[i], &dts) out[i] = dts.month - out[i] = ((out[i] - 1) // 3) + 1 + out[i] = ((out[i] - 1) / 3) + 1 return out elif field == 'dim': diff --git a/pandas/_libs/tslibs/offsets.pyx b/pandas/_libs/tslibs/offsets.pyx index ef3e92fe1fa66..f5295c6506eac 100644 --- a/pandas/_libs/tslibs/offsets.pyx +++ b/pandas/_libs/tslibs/offsets.pyx @@ -534,7 +534,7 @@ def shift_day(other: datetime, days: int) -> datetime: cdef inline int year_add_months(npy_datetimestruct dts, int months) nogil: """new year number after shifting npy_datetimestruct number of months""" - return dts.year + (dts.month + months - 1) // 12 + return dts.year + (dts.month + months - 1) / 12 cdef inline int month_add_months(npy_datetimestruct dts, int months) nogil: diff --git a/pandas/_libs/tslibs/strptime.pyx b/pandas/_libs/tslibs/strptime.pyx index c19169839e972..7306000332f30 100644 --- a/pandas/_libs/tslibs/strptime.pyx +++ b/pandas/_libs/tslibs/strptime.pyx @@ -242,7 +242,7 @@ def array_strptime(object[:] values, object fmt, s += "0" * (9 - len(s)) us = long(s) ns = us % 1000 - us = us // 1000 + us = us / 1000 elif parse_code == 11: weekday = locale_time.f_weekday.index(found_dict['A'].lower()) elif parse_code == 12: @@ -664,7 +664,7 @@ cdef parse_timezone_directive(object z): gmtoff_remainder_padding = "0" * pad_number microseconds = int(gmtoff_remainder + gmtoff_remainder_padding) - total_minutes = ((hours * 60) + minutes + (seconds // 60) + - (microseconds // 60000000)) + total_minutes = ((hours * 60) + minutes + (seconds / 60) + + (microseconds / 60000000)) total_minutes = -total_minutes if z.startswith("-") else total_minutes return pytz.FixedOffset(total_minutes) diff --git a/pandas/_libs/tslibs/timestamps.pyx b/pandas/_libs/tslibs/timestamps.pyx index 6a72674e10772..7d2fcd725eded 100644 --- a/pandas/_libs/tslibs/timestamps.pyx +++ b/pandas/_libs/tslibs/timestamps.pyx @@ -70,7 +70,7 @@ cdef inline object create_timestamp_from_ts(int64_t value, dts.sec, dts.us, tz) ts_base.value = value ts_base.freq = freq - ts_base.nanosecond = dts.ps // 1000 + ts_base.nanosecond = dts.ps / 1000 return ts_base From 1d6d19607e88ec7d27cb1ceccbe9cb54522fdb76 Mon Sep 17 00:00:00 2001 From: Will Ayd Date: Sat, 1 Dec 2018 12:58:38 -0800 Subject: [PATCH 08/11] LINT fixup --- pandas/_libs/tslib.pyx | 16 ++++++---------- pandas/_libs/window.pyx | 6 +++--- 2 files changed, 9 insertions(+), 13 deletions(-) diff --git a/pandas/_libs/tslib.pyx b/pandas/_libs/tslib.pyx index 60ab473561473..b02d31b862eb0 100644 --- a/pandas/_libs/tslib.pyx +++ b/pandas/_libs/tslib.pyx @@ -21,12 +21,9 @@ from pandas._libs.util cimport ( is_integer_object, is_float_object, is_string_object, is_datetime64_object) -from pandas._libs.tslibs.np_datetime cimport (check_dts_bounds, - npy_datetimestruct, - _string_to_dts, - dt64_to_dtstruct, dtstruct_to_dt64, - pydatetime_to_dt64, pydate_to_dt64, - get_datetime64_value) +from pandas._libs.tslibs.np_datetime cimport ( + check_dts_bounds, npy_datetimestruct, _string_to_dts, dt64_to_dtstruct, + dtstruct_to_dt64, pydatetime_to_dt64, pydate_to_dt64, get_datetime64_value) from pandas._libs.tslibs.np_datetime import OutOfBoundsDatetime from pandas._libs.tslibs.parsing import parse_datetime_string @@ -34,10 +31,9 @@ from pandas._libs.tslibs.parsing import parse_datetime_string from pandas._libs.tslibs.timedeltas cimport cast_from_unit from pandas._libs.tslibs.timezones cimport is_utc, is_tzlocal, get_dst_info from pandas._libs.tslibs.timezones import UTC -from pandas._libs.tslibs.conversion cimport (tz_convert_single, _TSObject, - convert_datetime_to_tsobject, - get_datetime64_nanos, - tz_convert_utc_to_tzlocal) +from pandas._libs.tslibs.conversion cimport ( + tz_convert_single, _TSObject, convert_datetime_to_tsobject, + get_datetime64_nanos, tz_convert_utc_to_tzlocal) # many modules still look for NaT and iNaT here despite them not being needed from pandas._libs.tslibs.nattype import nat_strings, NaT, iNaT # noqa:F821 diff --git a/pandas/_libs/window.pyx b/pandas/_libs/window.pyx index 8276606a04b56..5f2c0233a0f13 100644 --- a/pandas/_libs/window.pyx +++ b/pandas/_libs/window.pyx @@ -22,9 +22,9 @@ cdef extern from "src/headers/cmath" namespace "std": cimport pandas._libs.util as util from pandas._libs.util cimport numeric -from pandas._libs.skiplist cimport (skiplist_t, - skiplist_init, skiplist_destroy, - skiplist_get, skiplist_insert, skiplist_remove) +from pandas._libs.skiplist cimport ( + skiplist_t, skiplist_init, skiplist_destroy, skiplist_get, skiplist_insert, + skiplist_remove) cdef float32_t MINfloat32 = np.NINF cdef float64_t MINfloat64 = np.NINF From 5d092853c4655983191d5c9a79f1b5d062df8209 Mon Sep 17 00:00:00 2001 From: Will Ayd Date: Sun, 2 Dec 2018 22:21:08 -0800 Subject: [PATCH 09/11] Relative imports in tslibs folder --- pandas/_libs/tslibs/ccalendar.pyx | 2 +- pandas/_libs/tslibs/fields.pyx | 15 ++++++--------- pandas/_libs/tslibs/frequencies.pyx | 4 ++-- pandas/_libs/tslibs/nattype.pyx | 5 ++--- pandas/_libs/tslibs/offsets.pyx | 17 ++++++++--------- pandas/_libs/tslibs/parsing.pyx | 4 ++-- pandas/_libs/tslibs/period.pyx | 4 ++-- pandas/_libs/tslibs/resolution.pyx | 16 +++++++--------- pandas/_libs/tslibs/strptime.pyx | 8 ++++---- pandas/_libs/tslibs/timestamps.pxd | 2 +- pandas/_libs/tslibs/timestamps.pyx | 4 ++-- 11 files changed, 37 insertions(+), 44 deletions(-) diff --git a/pandas/_libs/tslibs/ccalendar.pyx b/pandas/_libs/tslibs/ccalendar.pyx index d14c008b95d5a..23f9e04815bf3 100644 --- a/pandas/_libs/tslibs/ccalendar.pyx +++ b/pandas/_libs/tslibs/ccalendar.pyx @@ -10,7 +10,7 @@ from cython import Py_ssize_t from numpy cimport int64_t, int32_t from locale import LC_TIME -from pandas._libs.tslibs.strptime import LocaleTime +from .strptime import LocaleTime # ---------------------------------------------------------------------- # Constants diff --git a/pandas/_libs/tslibs/fields.pyx b/pandas/_libs/tslibs/fields.pyx index 346afbe9227a0..bc51ffc9b4708 100644 --- a/pandas/_libs/tslibs/fields.pyx +++ b/pandas/_libs/tslibs/fields.pyx @@ -12,15 +12,12 @@ cimport numpy as cnp from numpy cimport ndarray, int64_t, int32_t, int8_t cnp.import_array() -from pandas._libs.tslibs.ccalendar import ( - get_locale_names, MONTHS_FULL, DAYS_FULL, DAY_SECONDS) -from pandas._libs.tslibs.ccalendar cimport ( - get_days_in_month, is_leapyear, dayofweek, get_week_of_year, - get_day_of_year) -from pandas._libs.tslibs.np_datetime cimport ( - npy_datetimestruct, pandas_timedeltastruct, dt64_to_dtstruct, - td64_to_tdstruct) -from pandas._libs.tslibs.nattype cimport NPY_NAT +from .ccalendar import get_locale_names, MONTHS_FULL, DAYS_FULL, DAY_SECONDS +from .ccalendar cimport (get_days_in_month, is_leapyear, dayofweek, + get_week_of_year, get_day_of_year) +from .np_datetime cimport (npy_datetimestruct, pandas_timedeltastruct, + dt64_to_dtstruct, td64_to_tdstruct) +from .nattype cimport NPY_NAT def get_time_micros(ndarray[int64_t] dtindex): diff --git a/pandas/_libs/tslibs/frequencies.pyx b/pandas/_libs/tslibs/frequencies.pyx index bd9e68e134407..c72c2dfcedc8d 100644 --- a/pandas/_libs/tslibs/frequencies.pyx +++ b/pandas/_libs/tslibs/frequencies.pyx @@ -4,9 +4,9 @@ import re cimport numpy as cnp cnp.import_array() -from pandas._libs.tslibs.util cimport is_integer_object, is_string_object +from .util cimport is_integer_object, is_string_object -from pandas._libs.tslibs.ccalendar import MONTH_NUMBERS +from .ccalendar import MONTH_NUMBERS # ---------------------------------------------------------------------- # Constants diff --git a/pandas/_libs/tslibs/nattype.pyx b/pandas/_libs/tslibs/nattype.pyx index d1b68d25744c2..d77cd70212471 100644 --- a/pandas/_libs/tslibs/nattype.pyx +++ b/pandas/_libs/tslibs/nattype.pyx @@ -15,9 +15,8 @@ from numpy cimport int64_t cnp.import_array() cimport pandas._libs.tslibs.util as util -from pandas._libs.tslibs.util cimport ( - get_nat, is_integer_object, is_float_object, is_datetime64_object, - is_timedelta64_object) +from .util cimport (get_nat, is_integer_object, is_float_object, + is_datetime64_object, is_timedelta64_object) # ---------------------------------------------------------------------- # Constants diff --git a/pandas/_libs/tslibs/offsets.pyx b/pandas/_libs/tslibs/offsets.pyx index f5295c6506eac..612cd1d6f2e81 100644 --- a/pandas/_libs/tslibs/offsets.pyx +++ b/pandas/_libs/tslibs/offsets.pyx @@ -18,16 +18,15 @@ from numpy cimport int64_t cnp.import_array() -from pandas._libs.tslibs.util cimport is_string_object, is_integer_object - -from pandas._libs.tslibs.ccalendar import MONTHS, DAYS -from pandas._libs.tslibs.ccalendar cimport get_days_in_month, dayofweek -from pandas._libs.tslibs.conversion cimport ( - tz_convert_single, pydt_to_i8, localize_pydatetime) -from pandas._libs.tslibs.nattype cimport NPY_NAT -from pandas._libs.tslibs.np_datetime cimport ( +from .util cimport is_string_object, is_integer_object + +from .ccalendar import MONTHS, DAYS +from .ccalendar cimport get_days_in_month, dayofweek +from .conversion cimport tz_convert_single, pydt_to_i8, localize_pydatetime +from .nattype cimport NPY_NAT +from .np_datetime cimport ( npy_datetimestruct, dtstruct_to_dt64, dt64_to_dtstruct) -from pandas._libs.tslibs.timezones import UTC +from .timezones import UTC # --------------------------------------------------------------------- # Constants diff --git a/pandas/_libs/tslibs/parsing.pyx b/pandas/_libs/tslibs/parsing.pyx index 67063d4e397ff..241197f3d087b 100644 --- a/pandas/_libs/tslibs/parsing.pyx +++ b/pandas/_libs/tslibs/parsing.pyx @@ -29,8 +29,8 @@ from dateutil.relativedelta import relativedelta from dateutil.parser import DEFAULTPARSER from dateutil.parser import parse as du_parse -from pandas._libs.tslibs.ccalendar import MONTH_NUMBERS -from pandas._libs.tslibs.nattype import nat_strings, NaT +from .ccalendar import MONTH_NUMBERS +from .nattype import nat_strings, NaT # ---------------------------------------------------------------------- # Constants diff --git a/pandas/_libs/tslibs/period.pyx b/pandas/_libs/tslibs/period.pyx index 8f8c4e9e90ed7..eaddb3e2445df 100644 --- a/pandas/_libs/tslibs/period.pyx +++ b/pandas/_libs/tslibs/period.pyx @@ -28,7 +28,7 @@ cdef extern from "src/datetime/np_datetime.h": int64_t npy_datetimestruct_to_datetime(NPY_DATETIMEUNIT fr, npy_datetimestruct *d) nogil -cimport .util +cimport pandas._libs.tslibs.util as util from .util cimport is_period_object, is_string_object from .timestamps import Timestamp, maybe_integer_op_deprecated @@ -36,7 +36,7 @@ from .timezones cimport is_utc, is_tzlocal, get_dst_info from .timedeltas import Timedelta from .timedeltas cimport delta_to_nanoseconds -cimport .ccalendar +cimport pandas._libs.tslibs.ccalendar as ccalendar from .ccalendar cimport dayofweek, get_day_of_year, is_leapyear from .ccalendar import MONTH_NUMBERS from .conversion cimport tz_convert_utc_to_tzlocal diff --git a/pandas/_libs/tslibs/resolution.pyx b/pandas/_libs/tslibs/resolution.pyx index 5e06ef3aafbea..ce2b48915b13b 100644 --- a/pandas/_libs/tslibs/resolution.pyx +++ b/pandas/_libs/tslibs/resolution.pyx @@ -5,15 +5,13 @@ from cython import Py_ssize_t import numpy as np from numpy cimport ndarray, int64_t, int32_t -from pandas._libs.tslibs.util cimport is_string_object, get_nat - -from pandas._libs.tslibs.np_datetime cimport ( - npy_datetimestruct, dt64_to_dtstruct) -from pandas._libs.tslibs.frequencies cimport get_freq_code -from pandas._libs.tslibs.timezones cimport ( - is_utc, is_tzlocal, maybe_get_tz, get_dst_info) -from pandas._libs.tslibs.conversion cimport tz_convert_utc_to_tzlocal -from pandas._libs.tslibs.ccalendar cimport get_days_in_month +from .util cimport is_string_object, get_nat + +from .np_datetime cimport npy_datetimestruct, dt64_to_dtstruct +from .frequencies cimport get_freq_code +from .timezones cimport is_utc, is_tzlocal, maybe_get_tz, get_dst_info +from .conversion cimport tz_convert_utc_to_tzlocal +from .ccalendar cimport get_days_in_month # ---------------------------------------------------------------------- # Constants diff --git a/pandas/_libs/tslibs/strptime.pyx b/pandas/_libs/tslibs/strptime.pyx index 7306000332f30..e201c3a90bcff 100644 --- a/pandas/_libs/tslibs/strptime.pyx +++ b/pandas/_libs/tslibs/strptime.pyx @@ -29,13 +29,13 @@ import numpy as np from numpy cimport int64_t -from pandas._libs.tslibs.np_datetime cimport ( +from .np_datetime cimport ( check_dts_bounds, dtstruct_to_dt64, npy_datetimestruct) -from pandas._libs.tslibs.util cimport is_string_object +from .util cimport is_string_object -from pandas._libs.tslibs.nattype cimport checknull_with_nat, NPY_NAT -from pandas._libs.tslibs.nattype import nat_strings +from .nattype cimport checknull_with_nat, NPY_NAT +from .nattype import nat_strings cdef dict _parse_code_table = {'y': 0, 'Y': 1, diff --git a/pandas/_libs/tslibs/timestamps.pxd b/pandas/_libs/tslibs/timestamps.pxd index b7282e02ff117..e58af7e3236e8 100644 --- a/pandas/_libs/tslibs/timestamps.pxd +++ b/pandas/_libs/tslibs/timestamps.pxd @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- from numpy cimport int64_t -from pandas._libs.tslibs.np_datetime cimport npy_datetimestruct +from .np_datetime cimport npy_datetimestruct cdef object create_timestamp_from_ts(int64_t value, npy_datetimestruct dts, diff --git a/pandas/_libs/tslibs/timestamps.pyx b/pandas/_libs/tslibs/timestamps.pyx index 83dfd3fd922dc..5b1aa3f467267 100644 --- a/pandas/_libs/tslibs/timestamps.pyx +++ b/pandas/_libs/tslibs/timestamps.pyx @@ -20,7 +20,7 @@ from pandas._libs.util cimport (is_datetime64_object, is_timedelta64_object, is_integer_object, is_string_object, is_array, is_offset_object) -cimport .ccalendar as ccalendar +cimport pandas._libs.tslibs.ccalendar as ccalendar from .ccalendar import DAY_SECONDS from .conversion import tz_localize_to_utc, normalize_i8_timestamps from .conversion cimport (tz_convert_single, _TSObject, @@ -35,7 +35,7 @@ from .timedeltas import Timedelta from .timedeltas cimport delta_to_nanoseconds from .timezones cimport ( get_timezone, is_utc, maybe_get_tz, treat_tz_as_pytz, tz_compare) -from pandas._libs.tslibs.timezones import UTC +from .timezones import UTC # ---------------------------------------------------------------------- # Constants From db2acb414c5aec6b390b6f0000cccef763c4a227 Mon Sep 17 00:00:00 2001 From: Will Ayd Date: Mon, 3 Dec 2018 07:03:20 -0800 Subject: [PATCH 10/11] Missed relative imports --- pandas/_libs/tslibs/conversion.pyx | 2 +- pandas/_libs/tslibs/period.pyx | 2 +- pandas/_libs/tslibs/timedeltas.pyx | 11 +++++------ pandas/_libs/tslibs/timestamps.pyx | 6 +++--- pandas/_libs/tslibs/timezones.pyx | 3 +-- 5 files changed, 11 insertions(+), 13 deletions(-) diff --git a/pandas/_libs/tslibs/conversion.pyx b/pandas/_libs/tslibs/conversion.pyx index bd216ec43a12a..29eec93e45eaa 100644 --- a/pandas/_libs/tslibs/conversion.pyx +++ b/pandas/_libs/tslibs/conversion.pyx @@ -1089,7 +1089,7 @@ cdef inline Py_ssize_t bisect_right_i8(int64_t *data, cdef inline str _render_tstamp(int64_t val): """ Helper function to render exception messages""" - from pandas._libs.tslibs.timestamps import Timestamp + from .timestamps import Timestamp return str(Timestamp(val)) diff --git a/pandas/_libs/tslibs/period.pyx b/pandas/_libs/tslibs/period.pyx index eaddb3e2445df..e1799161eb6bb 100644 --- a/pandas/_libs/tslibs/period.pyx +++ b/pandas/_libs/tslibs/period.pyx @@ -20,7 +20,7 @@ from cpython.datetime cimport (PyDateTime_Check, PyDelta_Check, PyDate_Check, # import datetime C API PyDateTime_IMPORT -from pandas._libs.tslibs.np_datetime cimport ( +from .np_datetime cimport ( npy_datetimestruct, dtstruct_to_dt64, dt64_to_dtstruct, pandas_datetime_to_datetimestruct, NPY_DATETIMEUNIT, NPY_FR_D) diff --git a/pandas/_libs/tslibs/timedeltas.pyx b/pandas/_libs/tslibs/timedeltas.pyx index 1bb30753f3d70..de426c89a78ab 100644 --- a/pandas/_libs/tslibs/timedeltas.pyx +++ b/pandas/_libs/tslibs/timedeltas.pyx @@ -24,14 +24,13 @@ PyDateTime_IMPORT cimport pandas._libs.tslibs.util as util -from pandas._libs.tslibs.util cimport ( - is_timedelta64_object, is_datetime64_object, is_integer_object, - is_float_object, is_string_object) +from .util cimport (is_timedelta64_object, is_datetime64_object, + is_integer_object, is_float_object, is_string_object) -from pandas._libs.tslibs.ccalendar import DAY_SECONDS +from .ccalendar import DAY_SECONDS -from pandas._libs.tslibs.np_datetime cimport ( - cmp_scalar, reverse_ops, td64_to_tdstruct, pandas_timedeltastruct) +from .np_datetime cimport (cmp_scalar, reverse_ops, td64_to_tdstruct, + pandas_timedeltastruct) from .nattype import nat_strings from .nattype cimport checknull_with_nat, NPY_NAT, c_NaT as NaT diff --git a/pandas/_libs/tslibs/timestamps.pyx b/pandas/_libs/tslibs/timestamps.pyx index 5b1aa3f467267..5a14376d92d03 100644 --- a/pandas/_libs/tslibs/timestamps.pyx +++ b/pandas/_libs/tslibs/timestamps.pyx @@ -16,9 +16,9 @@ from cpython.datetime cimport (datetime, PyDateTime_IMPORT) PyDateTime_IMPORT -from pandas._libs.util cimport (is_datetime64_object, is_timedelta64_object, - is_integer_object, is_string_object, is_array, - is_offset_object) +from .util cimport (is_datetime64_object, is_timedelta64_object, + is_integer_object, is_string_object, is_array, + is_offset_object) cimport pandas._libs.tslibs.ccalendar as ccalendar from .ccalendar import DAY_SECONDS diff --git a/pandas/_libs/tslibs/timezones.pyx b/pandas/_libs/tslibs/timezones.pyx index 94dcbcdb6585a..0be4c6bfb9252 100644 --- a/pandas/_libs/tslibs/timezones.pyx +++ b/pandas/_libs/tslibs/timezones.pyx @@ -23,8 +23,7 @@ from numpy cimport int64_t cnp.import_array() # ---------------------------------------------------------------------- -from pandas._libs.tslibs.util cimport ( - is_string_object, is_integer_object, get_nat) +from .util cimport is_string_object, is_integer_object, get_nat cdef int64_t NPY_NAT = get_nat() From f25c0d00efa9155fbec0b2db13be91d46a293a43 Mon Sep 17 00:00:00 2001 From: Will Ayd Date: Mon, 3 Dec 2018 23:11:18 -0800 Subject: [PATCH 11/11] Back to absolute --- pandas/_libs/tslibs/ccalendar.pyx | 2 +- pandas/_libs/tslibs/conversion.pyx | 30 +++++++++++------------ pandas/_libs/tslibs/fields.pyx | 15 +++++++----- pandas/_libs/tslibs/frequencies.pyx | 4 +-- pandas/_libs/tslibs/nattype.pyx | 5 ++-- pandas/_libs/tslibs/offsets.pyx | 17 +++++++------ pandas/_libs/tslibs/parsing.pyx | 4 +-- pandas/_libs/tslibs/period.pyx | 38 +++++++++++++++-------------- pandas/_libs/tslibs/resolution.pyx | 16 ++++++------ pandas/_libs/tslibs/strptime.pyx | 8 +++--- pandas/_libs/tslibs/timedeltas.pyx | 18 ++++++++------ pandas/_libs/tslibs/timestamps.pxd | 2 +- pandas/_libs/tslibs/timestamps.pyx | 37 +++++++++++++++------------- pandas/_libs/tslibs/timezones.pyx | 3 ++- 14 files changed, 107 insertions(+), 92 deletions(-) diff --git a/pandas/_libs/tslibs/ccalendar.pyx b/pandas/_libs/tslibs/ccalendar.pyx index 23f9e04815bf3..d14c008b95d5a 100644 --- a/pandas/_libs/tslibs/ccalendar.pyx +++ b/pandas/_libs/tslibs/ccalendar.pyx @@ -10,7 +10,7 @@ from cython import Py_ssize_t from numpy cimport int64_t, int32_t from locale import LC_TIME -from .strptime import LocaleTime +from pandas._libs.tslibs.strptime import LocaleTime # ---------------------------------------------------------------------- # Constants diff --git a/pandas/_libs/tslibs/conversion.pyx b/pandas/_libs/tslibs/conversion.pyx index 29eec93e45eaa..626dbae2cf90e 100644 --- a/pandas/_libs/tslibs/conversion.pyx +++ b/pandas/_libs/tslibs/conversion.pyx @@ -17,28 +17,28 @@ from cpython.datetime cimport (datetime, tzinfo, PyDateTime_CheckExact, PyDateTime_IMPORT) PyDateTime_IMPORT -from .ccalendar import DAY_SECONDS, HOUR_SECONDS +from pandas._libs.tslibs.ccalendar import DAY_SECONDS, HOUR_SECONDS -from .np_datetime cimport ( +from pandas._libs.tslibs.np_datetime cimport ( check_dts_bounds, npy_datetimestruct, pandas_datetime_to_datetimestruct, _string_to_dts, npy_datetime, dt64_to_dtstruct, dtstruct_to_dt64, get_datetime64_unit, get_datetime64_value, pydatetime_to_dt64, NPY_DATETIMEUNIT, NPY_FR_ns) -from .np_datetime import OutOfBoundsDatetime +from pandas._libs.tslibs.np_datetime import OutOfBoundsDatetime -from .util cimport (is_string_object, - is_datetime64_object, - is_integer_object, is_float_object) +from pandas._libs.tslibs.util cimport ( + is_string_object, is_datetime64_object, is_integer_object, is_float_object) -from .timedeltas cimport cast_from_unit -from .timezones cimport (is_utc, is_tzlocal, is_fixed_offset, - get_utcoffset, get_dst_info, - get_timezone, maybe_get_tz, tz_compare) -from .timezones import UTC -from .parsing import parse_datetime_string +from pandas._libs.tslibs.timedeltas cimport cast_from_unit +from pandas._libs.tslibs.timezones cimport ( + is_utc, is_tzlocal, is_fixed_offset, get_utcoffset, get_dst_info, + get_timezone, maybe_get_tz, tz_compare) +from pandas._libs.tslibs.timezones import UTC +from pandas._libs.tslibs.parsing import parse_datetime_string -from .nattype import nat_strings -from .nattype cimport NPY_NAT, checknull_with_nat, c_NaT as NaT +from pandas._libs.tslibs.nattype import nat_strings +from pandas._libs.tslibs.nattype cimport ( + NPY_NAT, checknull_with_nat, c_NaT as NaT) # ---------------------------------------------------------------------- # Constants @@ -1089,7 +1089,7 @@ cdef inline Py_ssize_t bisect_right_i8(int64_t *data, cdef inline str _render_tstamp(int64_t val): """ Helper function to render exception messages""" - from .timestamps import Timestamp + from pandas._libs.tslibs.timestamps import Timestamp return str(Timestamp(val)) diff --git a/pandas/_libs/tslibs/fields.pyx b/pandas/_libs/tslibs/fields.pyx index bc51ffc9b4708..346afbe9227a0 100644 --- a/pandas/_libs/tslibs/fields.pyx +++ b/pandas/_libs/tslibs/fields.pyx @@ -12,12 +12,15 @@ cimport numpy as cnp from numpy cimport ndarray, int64_t, int32_t, int8_t cnp.import_array() -from .ccalendar import get_locale_names, MONTHS_FULL, DAYS_FULL, DAY_SECONDS -from .ccalendar cimport (get_days_in_month, is_leapyear, dayofweek, - get_week_of_year, get_day_of_year) -from .np_datetime cimport (npy_datetimestruct, pandas_timedeltastruct, - dt64_to_dtstruct, td64_to_tdstruct) -from .nattype cimport NPY_NAT +from pandas._libs.tslibs.ccalendar import ( + get_locale_names, MONTHS_FULL, DAYS_FULL, DAY_SECONDS) +from pandas._libs.tslibs.ccalendar cimport ( + get_days_in_month, is_leapyear, dayofweek, get_week_of_year, + get_day_of_year) +from pandas._libs.tslibs.np_datetime cimport ( + npy_datetimestruct, pandas_timedeltastruct, dt64_to_dtstruct, + td64_to_tdstruct) +from pandas._libs.tslibs.nattype cimport NPY_NAT def get_time_micros(ndarray[int64_t] dtindex): diff --git a/pandas/_libs/tslibs/frequencies.pyx b/pandas/_libs/tslibs/frequencies.pyx index c72c2dfcedc8d..bd9e68e134407 100644 --- a/pandas/_libs/tslibs/frequencies.pyx +++ b/pandas/_libs/tslibs/frequencies.pyx @@ -4,9 +4,9 @@ import re cimport numpy as cnp cnp.import_array() -from .util cimport is_integer_object, is_string_object +from pandas._libs.tslibs.util cimport is_integer_object, is_string_object -from .ccalendar import MONTH_NUMBERS +from pandas._libs.tslibs.ccalendar import MONTH_NUMBERS # ---------------------------------------------------------------------- # Constants diff --git a/pandas/_libs/tslibs/nattype.pyx b/pandas/_libs/tslibs/nattype.pyx index d77cd70212471..d1b68d25744c2 100644 --- a/pandas/_libs/tslibs/nattype.pyx +++ b/pandas/_libs/tslibs/nattype.pyx @@ -15,8 +15,9 @@ from numpy cimport int64_t cnp.import_array() cimport pandas._libs.tslibs.util as util -from .util cimport (get_nat, is_integer_object, is_float_object, - is_datetime64_object, is_timedelta64_object) +from pandas._libs.tslibs.util cimport ( + get_nat, is_integer_object, is_float_object, is_datetime64_object, + is_timedelta64_object) # ---------------------------------------------------------------------- # Constants diff --git a/pandas/_libs/tslibs/offsets.pyx b/pandas/_libs/tslibs/offsets.pyx index 612cd1d6f2e81..f5295c6506eac 100644 --- a/pandas/_libs/tslibs/offsets.pyx +++ b/pandas/_libs/tslibs/offsets.pyx @@ -18,15 +18,16 @@ from numpy cimport int64_t cnp.import_array() -from .util cimport is_string_object, is_integer_object - -from .ccalendar import MONTHS, DAYS -from .ccalendar cimport get_days_in_month, dayofweek -from .conversion cimport tz_convert_single, pydt_to_i8, localize_pydatetime -from .nattype cimport NPY_NAT -from .np_datetime cimport ( +from pandas._libs.tslibs.util cimport is_string_object, is_integer_object + +from pandas._libs.tslibs.ccalendar import MONTHS, DAYS +from pandas._libs.tslibs.ccalendar cimport get_days_in_month, dayofweek +from pandas._libs.tslibs.conversion cimport ( + tz_convert_single, pydt_to_i8, localize_pydatetime) +from pandas._libs.tslibs.nattype cimport NPY_NAT +from pandas._libs.tslibs.np_datetime cimport ( npy_datetimestruct, dtstruct_to_dt64, dt64_to_dtstruct) -from .timezones import UTC +from pandas._libs.tslibs.timezones import UTC # --------------------------------------------------------------------- # Constants diff --git a/pandas/_libs/tslibs/parsing.pyx b/pandas/_libs/tslibs/parsing.pyx index 241197f3d087b..67063d4e397ff 100644 --- a/pandas/_libs/tslibs/parsing.pyx +++ b/pandas/_libs/tslibs/parsing.pyx @@ -29,8 +29,8 @@ from dateutil.relativedelta import relativedelta from dateutil.parser import DEFAULTPARSER from dateutil.parser import parse as du_parse -from .ccalendar import MONTH_NUMBERS -from .nattype import nat_strings, NaT +from pandas._libs.tslibs.ccalendar import MONTH_NUMBERS +from pandas._libs.tslibs.nattype import nat_strings, NaT # ---------------------------------------------------------------------- # Constants diff --git a/pandas/_libs/tslibs/period.pyx b/pandas/_libs/tslibs/period.pyx index e1799161eb6bb..3a2390a234e85 100644 --- a/pandas/_libs/tslibs/period.pyx +++ b/pandas/_libs/tslibs/period.pyx @@ -20,7 +20,7 @@ from cpython.datetime cimport (PyDateTime_Check, PyDelta_Check, PyDate_Check, # import datetime C API PyDateTime_IMPORT -from .np_datetime cimport ( +from pandas._libs.tslibs.np_datetime cimport ( npy_datetimestruct, dtstruct_to_dt64, dt64_to_dtstruct, pandas_datetime_to_datetimestruct, NPY_DATETIMEUNIT, NPY_FR_D) @@ -29,27 +29,29 @@ cdef extern from "src/datetime/np_datetime.h": npy_datetimestruct *d) nogil cimport pandas._libs.tslibs.util as util -from .util cimport is_period_object, is_string_object +from pandas._libs.tslibs.util cimport is_period_object, is_string_object -from .timestamps import Timestamp, maybe_integer_op_deprecated -from .timezones cimport is_utc, is_tzlocal, get_dst_info -from .timedeltas import Timedelta -from .timedeltas cimport delta_to_nanoseconds +from pandas._libs.tslibs.timestamps import ( + Timestamp, maybe_integer_op_deprecated) +from pandas._libs.tslibs.timezones cimport is_utc, is_tzlocal, get_dst_info +from pandas._libs.tslibs.timedeltas import Timedelta +from pandas._libs.tslibs.timedeltas cimport delta_to_nanoseconds cimport pandas._libs.tslibs.ccalendar as ccalendar -from .ccalendar cimport dayofweek, get_day_of_year, is_leapyear -from .ccalendar import MONTH_NUMBERS -from .conversion cimport tz_convert_utc_to_tzlocal -from .frequencies cimport (get_freq_code, get_base_alias, - get_to_timestamp_base, get_freq_str, - get_rule_month) -from .parsing import parse_time_string -from .resolution import Resolution -from .nattype import nat_strings -from .nattype cimport ( +from pandas._libs.tslibs.ccalendar cimport ( + dayofweek, get_day_of_year, is_leapyear) +from pandas._libs.tslibs.ccalendar import MONTH_NUMBERS +from pandas._libs.tslibs.conversion cimport tz_convert_utc_to_tzlocal +from pandas._libs.tslibs.frequencies cimport ( + get_freq_code, get_base_alias, get_to_timestamp_base, get_freq_str, + get_rule_month) +from pandas._libs.tslibs.parsing import parse_time_string +from pandas._libs.tslibs.resolution import Resolution +from pandas._libs.tslibs.nattype import nat_strings +from pandas._libs.tslibs.nattype cimport ( _nat_scalar_rules, NPY_NAT, is_null_datetimelike, c_NaT as NaT) -from .offsets cimport to_offset -from .offsets import _Tick +from pandas._libs.tslibs.offsets cimport to_offset +from pandas._libs.tslibs.offsets import _Tick cdef bint PY2 = str == bytes cdef enum: diff --git a/pandas/_libs/tslibs/resolution.pyx b/pandas/_libs/tslibs/resolution.pyx index ce2b48915b13b..5e06ef3aafbea 100644 --- a/pandas/_libs/tslibs/resolution.pyx +++ b/pandas/_libs/tslibs/resolution.pyx @@ -5,13 +5,15 @@ from cython import Py_ssize_t import numpy as np from numpy cimport ndarray, int64_t, int32_t -from .util cimport is_string_object, get_nat - -from .np_datetime cimport npy_datetimestruct, dt64_to_dtstruct -from .frequencies cimport get_freq_code -from .timezones cimport is_utc, is_tzlocal, maybe_get_tz, get_dst_info -from .conversion cimport tz_convert_utc_to_tzlocal -from .ccalendar cimport get_days_in_month +from pandas._libs.tslibs.util cimport is_string_object, get_nat + +from pandas._libs.tslibs.np_datetime cimport ( + npy_datetimestruct, dt64_to_dtstruct) +from pandas._libs.tslibs.frequencies cimport get_freq_code +from pandas._libs.tslibs.timezones cimport ( + is_utc, is_tzlocal, maybe_get_tz, get_dst_info) +from pandas._libs.tslibs.conversion cimport tz_convert_utc_to_tzlocal +from pandas._libs.tslibs.ccalendar cimport get_days_in_month # ---------------------------------------------------------------------- # Constants diff --git a/pandas/_libs/tslibs/strptime.pyx b/pandas/_libs/tslibs/strptime.pyx index e201c3a90bcff..7306000332f30 100644 --- a/pandas/_libs/tslibs/strptime.pyx +++ b/pandas/_libs/tslibs/strptime.pyx @@ -29,13 +29,13 @@ import numpy as np from numpy cimport int64_t -from .np_datetime cimport ( +from pandas._libs.tslibs.np_datetime cimport ( check_dts_bounds, dtstruct_to_dt64, npy_datetimestruct) -from .util cimport is_string_object +from pandas._libs.tslibs.util cimport is_string_object -from .nattype cimport checknull_with_nat, NPY_NAT -from .nattype import nat_strings +from pandas._libs.tslibs.nattype cimport checknull_with_nat, NPY_NAT +from pandas._libs.tslibs.nattype import nat_strings cdef dict _parse_code_table = {'y': 0, 'Y': 1, diff --git a/pandas/_libs/tslibs/timedeltas.pyx b/pandas/_libs/tslibs/timedeltas.pyx index de426c89a78ab..41a445700b38a 100644 --- a/pandas/_libs/tslibs/timedeltas.pyx +++ b/pandas/_libs/tslibs/timedeltas.pyx @@ -24,17 +24,19 @@ PyDateTime_IMPORT cimport pandas._libs.tslibs.util as util -from .util cimport (is_timedelta64_object, is_datetime64_object, - is_integer_object, is_float_object, is_string_object) +from pandas._libs.tslibs.util cimport ( + is_timedelta64_object, is_datetime64_object, is_integer_object, + is_float_object, is_string_object) -from .ccalendar import DAY_SECONDS +from pandas._libs.tslibs.ccalendar import DAY_SECONDS -from .np_datetime cimport (cmp_scalar, reverse_ops, td64_to_tdstruct, - pandas_timedeltastruct) +from pandas._libs.tslibs.np_datetime cimport ( + cmp_scalar, reverse_ops, td64_to_tdstruct, pandas_timedeltastruct) -from .nattype import nat_strings -from .nattype cimport checknull_with_nat, NPY_NAT, c_NaT as NaT -from .offsets cimport to_offset +from pandas._libs.tslibs.nattype import nat_strings +from pandas._libs.tslibs.nattype cimport ( + checknull_with_nat, NPY_NAT, c_NaT as NaT) +from pandas._libs.tslibs.offsets cimport to_offset # ---------------------------------------------------------------------- # Constants diff --git a/pandas/_libs/tslibs/timestamps.pxd b/pandas/_libs/tslibs/timestamps.pxd index e58af7e3236e8..b7282e02ff117 100644 --- a/pandas/_libs/tslibs/timestamps.pxd +++ b/pandas/_libs/tslibs/timestamps.pxd @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- from numpy cimport int64_t -from .np_datetime cimport npy_datetimestruct +from pandas._libs.tslibs.np_datetime cimport npy_datetimestruct cdef object create_timestamp_from_ts(int64_t value, npy_datetimestruct dts, diff --git a/pandas/_libs/tslibs/timestamps.pyx b/pandas/_libs/tslibs/timestamps.pyx index 5a14376d92d03..39a2a66c0fa39 100644 --- a/pandas/_libs/tslibs/timestamps.pyx +++ b/pandas/_libs/tslibs/timestamps.pyx @@ -16,26 +16,29 @@ from cpython.datetime cimport (datetime, PyDateTime_IMPORT) PyDateTime_IMPORT -from .util cimport (is_datetime64_object, is_timedelta64_object, - is_integer_object, is_string_object, is_array, - is_offset_object) +from pandas._libs.tslibs.util cimport ( + is_datetime64_object, is_timedelta64_object, is_integer_object, + is_string_object, is_array, is_offset_object) cimport pandas._libs.tslibs.ccalendar as ccalendar -from .ccalendar import DAY_SECONDS -from .conversion import tz_localize_to_utc, normalize_i8_timestamps -from .conversion cimport (tz_convert_single, _TSObject, - convert_to_tsobject, convert_datetime_to_tsobject) -from .fields import get_start_end_field, get_date_name_field -from .nattype cimport NPY_NAT, c_NaT as NaT -from .np_datetime import OutOfBoundsDatetime -from .np_datetime cimport (reverse_ops, cmp_scalar, check_dts_bounds, - npy_datetimestruct, dt64_to_dtstruct) -from .offsets cimport to_offset -from .timedeltas import Timedelta -from .timedeltas cimport delta_to_nanoseconds -from .timezones cimport ( +from pandas._libs.tslibs.ccalendar import DAY_SECONDS +from pandas._libs.tslibs.conversion import ( + tz_localize_to_utc, normalize_i8_timestamps) +from pandas._libs.tslibs.conversion cimport ( + tz_convert_single, _TSObject, convert_to_tsobject, + convert_datetime_to_tsobject) +from pandas._libs.tslibs.fields import get_start_end_field, get_date_name_field +from pandas._libs.tslibs.nattype cimport NPY_NAT, c_NaT as NaT +from pandas._libs.tslibs.np_datetime import OutOfBoundsDatetime +from pandas._libs.tslibs.np_datetime cimport ( + reverse_ops, cmp_scalar, check_dts_bounds, npy_datetimestruct, + dt64_to_dtstruct) +from pandas._libs.tslibs.offsets cimport to_offset +from pandas._libs.tslibs.timedeltas import Timedelta +from pandas._libs.tslibs.timedeltas cimport delta_to_nanoseconds +from pandas._libs.tslibs.timezones cimport ( get_timezone, is_utc, maybe_get_tz, treat_tz_as_pytz, tz_compare) -from .timezones import UTC +from pandas._libs.tslibs.timezones import UTC # ---------------------------------------------------------------------- # Constants diff --git a/pandas/_libs/tslibs/timezones.pyx b/pandas/_libs/tslibs/timezones.pyx index 0be4c6bfb9252..94dcbcdb6585a 100644 --- a/pandas/_libs/tslibs/timezones.pyx +++ b/pandas/_libs/tslibs/timezones.pyx @@ -23,7 +23,8 @@ from numpy cimport int64_t cnp.import_array() # ---------------------------------------------------------------------- -from .util cimport is_string_object, is_integer_object, get_nat +from pandas._libs.tslibs.util cimport ( + is_string_object, is_integer_object, get_nat) cdef int64_t NPY_NAT = get_nat()