class_docstr: Creates new connection to Salesforce and allows you to pull data out of SFDC and save it to a file.
  
  You can then use that file with other Airflow operators to move the data into another data source.
  
  :param conn_id: The name of the connection that has the parameters needed to connect to Salesforce.
      The connection should be of type `Salesforce`.
  :param session_id: The access token for a given HTTP request session.
  :param session: A custom HTTP request session. This enables the use of requests Session features not
      otherwise exposed by `simple_salesforce`.
  
  .. note::
      A connection to Salesforce can be created via several authentication options:
  
      * Password: Provide Username, Password, and Security Token
      * Direct Session: Provide a `session_id` and either Instance or Instance URL
      * OAuth 2.0 JWT: Provide a Consumer Key and either a Private Key or Private Key File Path
      * IP Filtering: Provide Username, Password, and an Organization ID
  
      If in sandbox, enter a Domain value of 'test'.
docstr: Returns connection widgets to add to connection form.
docstr_tok: ["Returns","connection","widgets","to","add","to","connection","form","."]
code: def get_connection_form_widgets(cls) -> dict[str, Any]:
      """Returns connection widgets to add to connection form."""
      from flask_appbuilder.fieldwidgets import (
          BS3PasswordFieldWidget,
          BS3TextFieldWidget,
      )
      from flask_babel import lazy_gettext
      from wtforms import PasswordField, StringField
  
      return {
          "security_token": PasswordField(
              lazy_gettext("Security Token"),
              widget=BS3PasswordFieldWidget(),
          ),
          "domain": StringField(
              lazy_gettext("Domain"), widget=BS3TextFieldWidget()
          ),
          "consumer_key": StringField(
              lazy_gettext("Consumer Key"), widget=BS3TextFieldWidget()
          ),
          "private_key_file_path": PasswordField(
              lazy_gettext("Private Key File Path"),
              widget=BS3PasswordFieldWidget(),
          ),
          "private_key": PasswordField(
              lazy_gettext("Private Key"),
              widget=BS3PasswordFieldWidget(),
          ),
          "organization_id": StringField(
              lazy_gettext("Organization ID"),
              widget=BS3TextFieldWidget(),
          ),
          "instance": StringField(
              lazy_gettext("Instance"), widget=BS3TextFieldWidget()
          ),
          "instance_url": StringField(
              lazy_gettext("Instance URL"), widget=BS3TextFieldWidget()
          ),
          "proxies": StringField(
              lazy_gettext("Proxies"), widget=BS3TextFieldWidget()
          ),
          "version": StringField(
              lazy_gettext("API Version"), widget=BS3TextFieldWidget()
          ),
          "client_id": StringField(
              lazy_gettext("Client ID"), widget=BS3TextFieldWidget()
          ),
      }
  
imports: from __future__ import annotations
  import logging
  import time
  from functools import cached_property
  from typing import TYPE_CHECKING, Any, Iterable
  from simple_salesforce import Salesforce, api
  from airflow.hooks.base import BaseHook
label_desc: Use image node_id 3 for calling the SalesforceHook obj's underlying member method code with example usage: obj.get_connection_form_widgets(cls) and returns: dict