class_docstr: Waits for an attribute value to be present for an item in a DynamoDB table.
  
  .. seealso::
      For more information on how to use this sensor, take a look at the guide:
      :ref:`howto/sensor:DynamoDBValueSensor`
  
  :param table_name: DynamoDB table name
  :param partition_key_name: DynamoDB partition key name
  :param partition_key_value: DynamoDB partition key value
  :param attribute_name: DynamoDB attribute name
  :param attribute_value: DynamoDB attribute value
  :param sort_key_name: (optional) DynamoDB sort key name
  :param sort_key_value: (optional) DynamoDB sort key value
  :param aws_conn_id: The Airflow connection used for AWS credentials.
      If this is ``None`` or empty then the default boto3 behaviour is used. If
      running Airflow in a distributed manner and aws_conn_id is None or
      empty, then default boto3 configuration would be used (and must be
      maintained on each worker node).
  :param region_name: AWS region_name. If not specified then the default boto3 behaviour is used.
  :param verify: Whether or not to verify SSL certificates. See:
      https://boto3.amazonaws.com/v1/documentation/api/latest/reference/core/session.html
  :param botocore_config: Configuration dictionary (key-values) for botocore client. See:
      https://botocore.amazonaws.com/v1/documentation/api/latest/reference/config.html
docstr: Test DynamoDB item for matching attribute value.
code: def poke(self, context: Context) -> bool:
      """Test DynamoDB item for matching attribute value."""
      key = {self.partition_key_name: self.partition_key_value}
      msg = (
          f"Checking table {self.table_name} for "
          f"item Partition Key: {self.partition_key_name}={self.partition_key_value}"
      )
  
      if self.sort_key_name and self.sort_key_value:
          key = {
              self.partition_key_name: self.partition_key_value,
              self.sort_key_name: self.sort_key_value,
          }
          msg += (
              f"\nSort Key: {self.sort_key_name}={self.sort_key_value}"
          )
  
      msg += (
          f"\nattribute: {self.attribute_name}={self.attribute_value}"
      )
  
      self.log.info(msg)
      table = self.hook.conn.Table(self.table_name)
      self.log.info("Table: %s", table)
      self.log.info("Key: %s", key)
      response = table.get_item(Key=key)
      try:
          item_attribute_value = response["Item"][self.attribute_name]
          self.log.info("Response: %s", response)
          self.log.info(
              "Want: %s = %s", self.attribute_name, self.attribute_value
          )
          self.log.info(
              "Got: {response['Item'][self.attribute_name]} = %s",
              item_attribute_value,
          )
          return item_attribute_value in (
              [self.attribute_value]
              if isinstance(self.attribute_value, str)
              else self.attribute_value
          )
      except KeyError:
          return False
  
file_path: airflow/airflow/providers/amazon/aws/sensors/dynamodb.py
imports: from __future__ import annotations
  from typing import TYPE_CHECKING, Any, Iterable, Sequence
  from airflow.providers.amazon.aws.hooks.dynamodb import DynamoDBHook
  from airflow.providers.amazon.aws.sensors.base_aws import AwsBaseSensor
  from airflow.providers.amazon.aws.utils.mixins import aws_template_fields
label_desc: Use image node_id 2 for calling the DynamoDBValueSensor obj's underlying member method code with example usage: obj.poke(context) and returns: unknown, False