Imn trying to write a function that will handle dates in a given format however, i'm having a few issues.
The first issue is when im applying this function using
df['AppointmentDate'] = df['AppointmentDate'].apply(func=date_handler)
The function works as intended while passing my own list, but it doesnt work when applying to DATAFRAME?
if __name__ == "__main__":
    date_handler(
        date_list=[
            '2022-07-18', '2022-07-02', '2022-07-25',  # YYYY-MM-DD
            '19-07-2022', '03-07-2022', '26-07-2022',  # DD-MM-YYYY
            '12-20-2023', '09-08-2022', '05-06-2023',  # MM-DD-YYYY
            '2022/08/17', '2023/10/20', '2023/01/01',  # YYYY/MM/DD
            '18/08/2022', '22/10/2023', '01/01/2023',  # DD/MM/YYYY
            '02/02/2023', '10/23/2023', '12/02/2023',  # MM/DD/YYYY
            '20230920', '20230822', '20230909',  # YYYYMMDD
            '20230920', '20230822', '20230909',  # DDMMYYYY
            '20230920', '20230822', '20230909',  # MMDDYYYY
my dataframe returns with empty values!
The second issue is when i am trying to add more try and excepts (to handle date time (YYYYMMDDHHMMSS+ TIMEZONE) i get the error: SyntaxError: too many statically nested blocks.
Here is my function.
@typechecked
def date_handler(date_list: any) -> print:
    for date in date_list:
        try:
            date_obj = datetime.datetime.strptime(date, '%Y-%m-%d')
        except ValueError:
            try:
                date_obj = datetime.datetime.strptime(date, '%d-%m-%Y')
            except ValueError:
                try:
                    date_obj = datetime.datetime.strptime(date, '%m-%d-%Y')
                except ValueError:
                    try:
                        date_obj = datetime.datetime.strptime(date, '%Y/%m/%d')
                    except ValueError:
                        try:
                            date_obj = datetime.datetime.strptime(date, '%d/%m/%Y')
                        except ValueError:
                            try:
                                date_obj = datetime.datetime.strptime(date, '%m/%d/%Y')
                            except ValueError:
                                try:
                                    date_obj = datetime.datetime.strptime(date, '%Y%m%d')
                                except ValueError:
                                    try:
                                        date_obj = datetime.datetime.strptime(date, '%d%m%Y')
                                    except ValueError:
                                        try:
                                            date_obj = datetime.datetime.strptime(date, '%m%d%Y')
                                        except ValueError:
                                            print(f"Invalid date format: {date}")
                                            continue
                                        else:
                                            return None
                                    else:
                                        return date_obj.strftime('%Y-%m-%d')
Any reasons why this is?
 
     
     
    