code: def create_custom_tagged_objects(
      object_type: ObjectType, object_id: int, tag_names: list[str]
  ) -> None:
      tagged_objects = []
      for name in tag_names:
          type_ = TagType.custom
          tag_name = name.strip()
          tag = TagDAO.get_by_name(tag_name, type_)
          tagged_objects.append(
              TaggedObject(
                  object_id=object_id, object_type=object_type, tag=tag
              )
          )
  
      db.session.add_all(tagged_objects)
      db.session.commit()
  
imports: import logging
  from operator import and_
  from typing import Any, Optional
  from flask import g
  from sqlalchemy.exc import SQLAlchemyError
  from superset.commands.tag.exceptions import TagNotFoundError
  from superset.commands.tag.utils import to_object_type
  from superset.daos.base import BaseDAO
  from superset.daos.exceptions import DAODeleteFailedError
  from superset.exceptions import MissingUserContextException
  from superset.extensions import db
  from superset.models.dashboard import Dashboard
  from superset.models.slice import Slice
  from superset.models.sql_lab import SavedQuery
  from superset.tags.models import get_tag, ObjectType, Tag, TaggedObject, TagType, user_favorite_tag_table
  from superset.utils.core import get_user_id
label_desc: Use image node_id 1 for calling the TagDAO obj's underlying member method code with example usage: obj.create_custom_tagged_objects(object_type, object_id, tag_names) without return types