Skip to content

BUG: guess_datetime_format fails to read 13/2019 in dateutil==2.8.1 #49144

@MarcoGorelli

Description

@MarcoGorelli

Pandas version checks

  • I have checked that this issue has not already been reported.

  • I have confirmed this bug exists on the latest version of pandas.

  • I have confirmed this bug exists on the main branch of pandas.

Reproducible Example

guess_datetime_format('13/2019')

Issue Description

It returns

---------------------------------------------------------------------------
IllegalMonthError                         Traceback (most recent call last)
File ~/mambaforge/envs/pandas-dev/lib/python3.8/site-packages/dateutil/parser/_parser.py:655, in parser.parse(self, timestr, default, ignoretz, tzinfos, **kwargs)
    654 try:
--> 655     ret = self._build_naive(res, default)
    656 except ValueError as e:

File ~/mambaforge/envs/pandas-dev/lib/python3.8/site-packages/dateutil/parser/_parser.py:1238, in parser._build_naive(self, res, default)
   1236 cday = default.day if res.day is None else res.day
-> 1238 if cday > monthrange(cyear, cmonth)[1]:
   1239     repl['day'] = monthrange(cyear, cmonth)[1]

File ~/mambaforge/envs/pandas-dev/lib/python3.8/calendar.py:124, in monthrange(year, month)
    123 if not 1 <= month <= 12:
--> 124     raise IllegalMonthError(month)
    125 day1 = weekday(year, month, 1)

IllegalMonthError: bad month number 13; must be 1-12

During handling of the above exception, another exception occurred:

TypeError                                 Traceback (most recent call last)
Cell In [1], line 1
----> 1 guess_datetime_format('13/2019')

File ~/pandas-dev/pandas/_libs/tslibs/parsing.pyx:991, in pandas._libs.tslibs.parsing.guess_datetime_format()
    989 
    990     try:
--> 991         parsed_datetime = du_parse(dt_str, dayfirst=dayfirst)
    992     except (ValueError, OverflowError):
    993         # In case the datetime can't be parsed, its format cannot be guessed

File ~/mambaforge/envs/pandas-dev/lib/python3.8/site-packages/dateutil/parser/_parser.py:1374, in parse(timestr, parserinfo, **kwargs)
   1372     return parser(parserinfo).parse(timestr, **kwargs)
   1373 else:
-> 1374     return DEFAULTPARSER.parse(timestr, **kwargs)

File ~/mambaforge/envs/pandas-dev/lib/python3.8/site-packages/dateutil/parser/_parser.py:657, in parser.parse(self, timestr, default, ignoretz, tzinfos, **kwargs)
    655     ret = self._build_naive(res, default)
    656 except ValueError as e:
--> 657     six.raise_from(ParserError(e.args[0] + ": %s", timestr), e)
    659 if not ignoretz:
    660     ret = self._build_tzaware(ret, res, tzinfos)

TypeError: unsupported operand type(s) for +: 'int' and 'str'

Expected Behavior

It should just return None, as it does with dateutil version 2.8.2

Installed Versions

INSTALLED VERSIONS

commit : b07e31c
python : 3.8.13.final.0
python-bits : 64
OS : Linux
OS-release : 5.10.102.1-microsoft-standard-WSL2
Version : #1 SMP Wed Mar 2 00:30:59 UTC 2022
machine : x86_64
processor : x86_64
byteorder : little
LC_ALL : None
LANG : en_GB.UTF-8
LOCALE : en_GB.UTF-8

pandas : 1.6.0.dev0+353.gb07e31cfce
numpy : 1.23.3
pytz : 2022.2.1
dateutil : 2.8.1
setuptools : 59.8.0
pip : 22.2.2
Cython : 0.29.32
pytest : 7.1.3
hypothesis : 6.54.6
sphinx : 4.5.0
blosc : None
feather : None
xlsxwriter : 3.0.3
lxml.etree : 4.9.1
html5lib : 1.1
pymysql : 1.0.2
psycopg2 : 2.9.3
jinja2 : 3.0.3
IPython : 8.5.0
pandas_datareader: 0.10.0
bs4 : 4.11.1
bottleneck : 1.3.5
brotli :
fastparquet : 0.8.3
fsspec : 2021.11.0
gcsfs : 2021.11.0
matplotlib : 3.6.0
numba : 0.56.2
numexpr : 2.8.3
odfpy : None
openpyxl : 3.0.10
pandas_gbq : 0.17.8
pyarrow : 9.0.0
pyreadstat : 1.1.9
pyxlsb : 1.0.9
s3fs : 2021.11.0
scipy : 1.9.1
snappy :
sqlalchemy : 1.4.41
tables : 3.7.0
tabulate : 0.8.10
xarray : 2022.9.0
xlrd : 2.0.1
xlwt : 1.3.0
zstandard : 0.18.0
tzdata : None
None

Metadata

Metadata

Assignees

No one assigned

    Labels

    BugDatetimeDatetime data dtypeDependenciesRequired and optional dependencies

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions