class_docstr: Hubspot Contacts table.
docstr: Deletes data from HubSpot "DELETE /crm/v3/objects/contacts/batch/archive" API endpoint.
  
  Parameters
  ----------
  query : ast.Delete
     Given SQL DELETE query
  
  Returns
  -------
  None
  
  Raises
  ------
  ValueError
      If the query contains an unsupported condition
code: def delete(self, query: ast.Delete) -> None:
      """
      Deletes data from HubSpot "DELETE /crm/v3/objects/contacts/batch/archive" API endpoint.
  
      Parameters
      ----------
      query : ast.Delete
         Given SQL DELETE query
  
      Returns
      -------
      None
  
      Raises
      ------
      ValueError
          If the query contains an unsupported condition
      """
      delete_statement_parser = DELETEQueryParser(query)
      where_conditions = delete_statement_parser.parse_query()
  
      contacts_df = pd.json_normalize(self.get_contacts())
      delete_query_executor = DELETEQueryExecutor(
          contacts_df, where_conditions
      )
  
      contacts_df = delete_query_executor.execute_query()
      contact_ids = contacts_df["id"].tolist()
      self.delete_contacts(contact_ids)
  
imports: import pandas
  from hubspot.crm.objects import SimplePublicObjectId, SimplePublicObjectBatchInput, SimplePublicObjectInputForCreate, BatchInputSimplePublicObjectId, BatchInputSimplePublicObjectBatchInput, BatchInputSimplePublicObjectInputForCreate
  from mindsdb_sql.parser import ast
  from mindsdb.integrations.handlers.utilities.query_utilities import INSERTQueryParser, SELECTQueryParser, UPDATEQueryParser, DELETEQueryParser, SELECTQueryExecutor, UPDATEQueryExecutor, DELETEQueryExecutor
  from mindsdb.integrations.libs.api_handler import APITable
  from mindsdb.utilities import log
label_desc: Use image node_id 4 for calling the ContactsTable obj's underlying member method code with example usage: obj.delete(query) without return types