code: def _check_property_value_type(
      property_name: str,
      property_value: types.Property,
      artifact_type: metadata_store_pb2.ArtifactType,
  ):
      prop_value_type = data_types_utils.get_metadata_value_type(
          property_value
      )
      if prop_value_type != artifact_type.properties[property_name]:
          raise TypeError(
              "Unexpected value type of property '{}' in output artifact '{}': "
              "Expected {} but given {} (value:{!r})".format(
                  property_name,
                  artifact_type.name,
                  metadata_store_pb2.PropertyType.Name(
                      artifact_type.properties[property_name]
                  ),
                  metadata_store_pb2.PropertyType.Name(prop_value_type),
                  property_value,
              )
          )
  
imports: from typing import cast, List, Optional, Sequence, Tuple, Type, Union, Dict, Any, Set
  from tfx import types
  from tfx.dsl.compiler import constants
  from tfx.dsl.components.base import base_node
  from tfx.dsl.components.common import importer
  from tfx.dsl.components.common import resolver
  from tfx.dsl.context_managers import dsl_context_registry
  from tfx.dsl.placeholder import placeholder
  from tfx.orchestration import data_types_utils
  from tfx.orchestration import pipeline
  from tfx.proto.orchestration import pipeline_pb2
  from tfx.types import channel
  from ml_metadata.proto import metadata_store_pb2
label_desc: Use image node_id 22 for calling a global function with example usage: _check_property_value_type(property_name, property_value, artifact_type) without return types