class_docstr: Waits for a file or directory to be present on FTP.
  
  :param path: Remote file or directory path
  :param fail_on_transient_errors: Fail on all errors,
      including 4xx transient errors. Default True.
  :param ftp_conn_id: The :ref:`ftp connection id <howto/connection:ftp>`
      reference to run the sensor against.
docstr: Return connection hook.
docstr_tok: ["Return","connection","hook","."]
code: def _create_hook(self) -> FTPHook:
      """Return connection hook."""
      return FTPHook(ftp_conn_id=self.ftp_conn_id)
  
file_path: airflow/airflow/providers/ftp/sensors/ftp.py
imports: from __future__ import annotations
  import ftplib
  import re
  from typing import TYPE_CHECKING, Sequence
  from airflow.exceptions import AirflowSkipException
  from airflow.providers.ftp.hooks.ftp import FTPHook, FTPSHook
  from airflow.sensors.base import BaseSensorOperator
label_desc: Use image node_id 2 for calling the FTPSensor obj's underlying member method code with example usage: obj._create_hook() and returns: FTPHook