I just noticed you are parsing these args in multiple functions, so create a new function

```
def _try_parse_dates(year,month,dt):

    # catch backwards compat
    if isinstance(year,int) or isinstance(month,int):
          do your warning
          then create the dt argument

   # in case the new date argument is passed as the first argument
    if year is not None:
         dt = year
     try:
         year = dt.year
         month = dt.month
     except:
          cannot create argument (or dt is None), so create the default
  ```