Skip to content

Commit 7312b1b

Browse files
committed
de-duplicate get_rule_month, stronger typingi
1 parent 2ba5426 commit 7312b1b

File tree

3 files changed

+7
-28
lines changed

3 files changed

+7
-28
lines changed

pandas/_libs/tslibs/frequencies.pxd

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# -*- coding: utf-8 -*-
22

3-
cpdef object get_rule_month(object source, object default=*)
3+
cpdef str get_rule_month(object source, str default=*)
44

55
cpdef get_freq_code(freqstr)
66
cpdef object get_freq(object freq)

pandas/_libs/tslibs/frequencies.pyx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -485,18 +485,18 @@ cdef bint _is_weekly(str rule):
485485

486486
# ----------------------------------------------------------------------
487487

488-
cpdef object get_rule_month(object source, object default='DEC'):
488+
cpdef str get_rule_month(object source, str default="DEC"):
489489
"""
490490
Return starting month of given freq, default is December.
491491
492492
Parameters
493493
----------
494494
source : object
495-
default : object (default "DEC")
495+
default : str, default "DEC"
496496
497497
Returns
498498
-------
499-
rule_month: object (usually string)
499+
rule_month: str
500500
501501
Examples
502502
--------

pandas/_libs/tslibs/parsing.pyx

Lines changed: 3 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ from pandas._config import get_option
3737
from pandas._libs.tslibs.ccalendar import MONTH_NUMBERS
3838
from pandas._libs.tslibs.nattype import nat_strings, NaT
3939
from pandas._libs.tslibs.util cimport is_array, get_c_string_buf_and_size
40+
from pandas._libs.tslibs.frequencies cimport get_rule_month
4041

4142
cdef extern from "../src/headers/portable.h":
4243
int getdigit_ascii(char c, int default) nogil
@@ -429,7 +430,7 @@ cdef inline object _parse_dateabbr_string(object date_string, object default,
429430
if freq is not None:
430431
# hack attack, #1228
431432
try:
432-
mnum = MONTH_NUMBERS[_get_rule_month(freq)] + 1
433+
mnum = MONTH_NUMBERS[get_rule_month(freq)] + 1
433434
except (KeyError, ValueError):
434435
raise DateParseError(f'Unable to retrieve month '
435436
f'information from given '
@@ -469,7 +470,7 @@ cdef inline object _parse_dateabbr_string(object date_string, object default,
469470
raise ValueError(f'Unable to parse {date_string}')
470471

471472

472-
cdef dateutil_parse(object timestr, object default, ignoretz=False,
473+
cdef dateutil_parse(str timestr, object default, ignoretz=False,
473474
tzinfos=None, dayfirst=None, yearfirst=None):
474475
""" lifted from dateutil to get resolution"""
475476

@@ -532,28 +533,6 @@ cdef dateutil_parse(object timestr, object default, ignoretz=False,
532533
return ret, reso
533534

534535

535-
cdef str _get_rule_month(object source):
536-
"""
537-
Return starting month of given freq, default is December.
538-
539-
Example
540-
-------
541-
>>> _get_rule_month('D')
542-
'DEC'
543-
544-
>>> _get_rule_month('A-JAN')
545-
'JAN'
546-
"""
547-
if hasattr(source, 'freqstr'):
548-
source = source.freqstr
549-
source = source.upper()
550-
if '-' not in source:
551-
# Default is December
552-
return "DEC"
553-
else:
554-
return source.split('-')[1]
555-
556-
557536
# ----------------------------------------------------------------------
558537
# Parsing for type-inference
559538

0 commit comments

Comments
 (0)