diff --git a/pandas/_libs/tslibs/frequencies.pyx b/pandas/_libs/tslibs/frequencies.pyx index f2dcd37b191ed..b29c841896072 100644 --- a/pandas/_libs/tslibs/frequencies.pyx +++ b/pandas/_libs/tslibs/frequencies.pyx @@ -138,6 +138,10 @@ cpdef get_freq_code(freqstr): ------- return : tuple of base frequency code and stride (mult) + Raises + ------ + TypeError : if passed a tuple witth incorrect types + Examples -------- >>> get_freq_code('3D') @@ -156,16 +160,16 @@ cpdef get_freq_code(freqstr): if is_integer_object(freqstr[0]) and is_integer_object(freqstr[1]): # e.g., freqstr = (2000, 1) return freqstr + elif is_integer_object(freqstr[0]): + # Note: passing freqstr[1] below will raise TypeError if that + # is not a str + code = _period_str_to_code(freqstr[1]) + stride = freqstr[0] + return code, stride else: # e.g., freqstr = ('T', 5) - try: - code = _period_str_to_code(freqstr[0]) - stride = freqstr[1] - except: - if is_integer_object(freqstr[1]): - raise - code = _period_str_to_code(freqstr[1]) - stride = freqstr[0] + code = _period_str_to_code(freqstr[0]) + stride = freqstr[1] return code, stride if is_integer_object(freqstr): @@ -177,7 +181,7 @@ cpdef get_freq_code(freqstr): return code, stride -cpdef _base_and_stride(freqstr): +cpdef _base_and_stride(str freqstr): """ Return base freq and stride info from string representation @@ -207,7 +211,7 @@ cpdef _base_and_stride(freqstr): return base, stride -cpdef _period_str_to_code(freqstr): +cpdef _period_str_to_code(str freqstr): freqstr = _lite_rule_alias.get(freqstr, freqstr) if freqstr not in _dont_uppercase: