class_docstr: Airtable connector to retrieving record data.
class_docstr_tok: ["Airtable","connector","to","retrieving","record","data","."]
code: def __init__(
      self,
      config: Optional[Union[AirtableConnectorConfig, dict]] = None,
      cache_interval: int = 600,
  ):
      if isinstance(config, dict):
          if (
              "api_key" in config
              and "base_id" in config
              and "table" in config
          ):
              config = AirtableConnectorConfig(**config)
          else:
              raise KeyError(
                  "Please specify all api_key,table,base_id properly in config ."
              )
  
      elif not config:
          airtable_env_vars = {
              "api_key": "AIRTABLE_API_TOKEN",
              "base_id": "AIRTABLE_BASE_ID",
              "table": "AIRTABLE_TABLE_NAME",
          }
          config = AirtableConnectorConfig(
              **self._populate_config_from_env(
                  config, airtable_env_vars
              )
          )
  
      self._root_url: str = "https://api.airtable.com/v0/"
      self._cache_interval = cache_interval
  
      super().__init__(config)
  
imports: from .base import AirtableConnectorConfig, BaseConnector, BaseConnectorConfig
  from typing import Union, Optional
  import requests
  import pandas
  import os
  from ..helpers.path import find_project_root
  import time
  import hashlib
  from ..exceptions import InvalidRequestError
  from functools import cache, cached_property
label_desc: Use image node_id 1 to create a new AirtableConnector object from inherited base classes: BaseConnector with example: obj = AirtableConnector(config, cache_interval)