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 a Salesforce instance. (cached).
docstr_tok: ["Returns","a","Salesforce","instance",".","(","cached",")","."]
code: def conn(self) -> api.Salesforce:
      """Returns a Salesforce instance. (cached)."""
      connection = self.get_connection(self.conn_id)
      extras = connection.extra_dejson
      # all extras below (besides the version one) are explicitly defaulted to None
      # because simple-salesforce has a built-in authentication-choosing method that
      # relies on which arguments are None and without "or None" setting this connection
      # in the UI will result in the blank extras being empty strings instead of None,
      # which would break the connection if "get" was used on its own.
      conn = Salesforce(
          username=connection.login,
          password=connection.password,
          security_token=self._get_field(extras, "security_token")
          or None,
          domain=self._get_field(extras, "domain") or None,
          session_id=self.session_id,
          instance=self._get_field(extras, "instance") or None,
          instance_url=self._get_field(extras, "instance_url") or None,
          organizationId=self._get_field(extras, "organization_id")
          or None,
          version=self._get_field(extras, "version")
          or api.DEFAULT_API_VERSION,
          proxies=self._get_field(extras, "proxies") or None,
          session=self.session,
          client_id=self._get_field(extras, "client_id") or None,
          consumer_key=self._get_field(extras, "consumer_key") or None,
          privatekey_file=self._get_field(
              extras, "private_key_file_path"
          )
          or None,
          privatekey=self._get_field(extras, "private_key") or None,
      )
      return conn
  
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 5 for calling the SalesforceHook obj's underlying member method code with example usage: obj.conn() and returns: conn