def ftp_list_of_files()

in datasets/noaa/pipelines/_images/run_csv_transform_kub/csv_transform.py [0:0]


def ftp_list_of_files(host: str, cwd: str, filter_expr: str = "") -> typing.List[str]:
    try_count = 0
    while True:
        try:
            ftp = ftplib.FTP(host)
            ftp.login()
            ftp.cwd(cwd)
            file_list = ftp.nlst()
            if filter != "":
                file_list = list(
                    filter(lambda x: str(x).find(filter_expr) >= 0, file_list)
                )
            ftp.quit()
            return file_list
        except TimeoutError as e:
            try_count += 1
            if try_count > 3:
                raise e
            else:
                logging.info(f"{e}, Retrying ...")
                time.sleep(try_count * 30)