The GCSToLocalFilesystemOperator in Google Provider <=3.0.0  had wrong import for apply_defaults. It used

```
from airflow.sensors.base_sensor_operator import apply_defaults
```

instead of 

```
from airflow.utils.decorators import apply_defaults
```

When we removed `apply_defaults` in #15667, the base_sensor_operator import was removed as well which made the GCSToLocalFilestystemOperator stops working in 2.1.0

The import in base_sensor_operator will be restored in 2.1.1  and Google Provider 4.0.0 will work without problems after it is released. Workaround for 2.1.0 Airflow is to copy the code of the operator to DAG and use it temporarily until new versions are released. 
airflow/sensors/base.py
"""
        Return a dictionary with all attributes in execution_fields. The
        execution_context include execution requirement for each sensor task
        such as timeout setup, email_alert setup.
        :param context: TaskInstance template context.
        :return: A dictionary with key in execution_fields.
        """
        if not context:
            self.log.info("Function get_execution_context doesn't have a context input.")
        execution_fields = self.__class__.execution_fields
        result = {key: getattr(self, key, None) for key in execution_fields}
        if result['execution_timeout'] and isinstance(result['execution_timeout'], datetime.timedelta):
            result['execution_timeout'] = result['execution_timeout'].total_seconds()
        return result
    def execute(self, context: Dict) -> Any:
        started_at = None
        if self.reschedule:
            
            task_reschedules = TaskReschedule.find_for_task_instance(context['ti'])
            if task_reschedules:
                started_at = task_reschedules[0].start_date
                try_number = len(task_reschedules) + 1
            else:
                started_at = timezone.utcnow()
            def run_duration() -> float: