[docs]classAirtableLoader(BaseLoader):"""Load the `Airtable` tables."""
[docs]def__init__(self,api_token:str,table_id:str,base_id:str,**kwargs:Any)->None:"""Initialize with API token and the IDs for table and base. Args: api_token: Airtable API token. table_id: Airtable table ID. base_id: kwargs: Additional parameters to pass to Table.all(). Refer to the pyairtable documentation for available options: https://pyairtable.readthedocs.io/en/latest/api.html#pyairtable.Table.all """# noqa: E501self.api_token=api_tokenself.table_id=table_idself.base_id=base_idself.kwargs=kwargs
[docs]deflazy_load(self)->Iterator[Document]:"""Lazy load Documents from table."""frompyairtableimportTabletable=Table(self.api_token,self.base_id,self.table_id)records=table.all(**self.kwargs)forrecordinrecords:metadata={"source":self.base_id+"_"+self.table_id,"base_id":self.base_id,"table_id":self.table_id,}if"view"inself.kwargs:metadata["view"]=self.kwargs["view"]# Need to convert record from dict to stryieldDocument(page_content=str(record),metadata=metadata)