class_docstr: This class extracts a number of basic text descriptives from FeedbackDataset
  records using the TextDescriptives library and adds them as record metadata.
class_docstr_tok: ["This","class","extracts","a","number","of","basic","text","descriptives","from","FeedbackDataset","records","using","the","TextDescriptives","library","and","adds","them","as","record","metadata","."]
docstr: Generate metadata properties based on dataframe columns and data types.
  
  Args:
      df (pd.DataFrame): The text descriptives dataframe.
  
  Returns:
      List: A list of metadata properties.
docstr_tok: ["Generate","metadata","properties","based","on","dataframe","columns","and","data","types",".","Args",":","df","(","pd.DataFrame",")",":","The","text","descriptives","dataframe",".","Returns",":","List",":","A","list","of","metadata","properties","."]
code: def _create_metadata_properties(self, df: pd.DataFrame) -> List:
      """
      Generate metadata properties based on dataframe columns and data types.
  
      Args:
          df (pd.DataFrame): The text descriptives dataframe.
  
      Returns:
          List: A list of metadata properties.
      """
      properties = []
      for col, dtype in df.dtypes.items():
          name = col
          title = name.replace("_", " ").title()
          if dtype in ["object", "bool"]:
              prop = TermsMetadataProperty(
                  name=name,
                  title=title,
                  visible_for_annotators=self.visible_for_annotators,
                  values=df[col].unique().tolist(),
              )
          elif dtype in [
              "int64",
              "int32",
              "int16",
              "int8",
              "int128",
              "int256",
              "int",
          ]:
              prop = IntegerMetadataProperty(
                  name=name,
                  title=title,
                  visible_for_annotators=self.visible_for_annotators,
              )
          elif dtype in [
              "float64",
              "float32",
              "float16",
              "float128",
              "float256",
              "float",
          ]:
              prop = FloatMetadataProperty(
                  name=name,
                  title=title,
                  visible_for_annotators=self.visible_for_annotators,
              )
          else:
              warnings.warn(
                  f"Unhandled data type for column {col}: {dtype}"
              )
              prop = None
          if prop is not None:
              properties.append(prop)
      return properties
  
imports: import logging
  import re
  import warnings
  from typing import Any, List, Optional, Union
  import numpy
  import pandas
  from rich.progress import Progress
  from argilla.client.feedback.dataset.local.dataset import FeedbackDataset
  from argilla.client.feedback.dataset.remote.dataset import RemoteFeedbackDataset
  from argilla.client.feedback.schemas.metadata import FloatMetadataProperty, IntegerMetadataProperty, TermsMetadataProperty
  from argilla.client.feedback.schemas.records import FeedbackRecord
  from argilla.client.feedback.schemas.remote.records import RemoteFeedbackRecord
  from argilla.utils.dependency import require_dependencies
label_desc: Use image node_id 6 for calling the TextDescriptivesExtractor obj's underlying member method code with example usage: obj._create_metadata_properties(df) and returns: properties