code: def _job_name(
      self, user, flow_name, run_id, step_name, task_id, retry_count
  ):
      return "{user}-{flow_name}-{run_id}-{step_name}-{task_id}-{retry_count}".format(
          user=user,
          flow_name=flow_name,
          run_id=str(run_id) if run_id is not None else "",
          step_name=step_name,
          task_id=str(task_id) if task_id is not None else "",
          retry_count=str(retry_count)
          if retry_count is not None
          else "",
      )
  
imports: import atexit
  import copy
  import json
  import os
  import select
  import shlex
  import time
  from metaflow import util
  from metaflow.plugins.datatools.s3.s3tail import S3Tail
  from metaflow.plugins.aws.aws_utils import sanitize_batch_tag
  from metaflow.exception import MetaflowException
  from metaflow.metaflow_config import SERVICE_INTERNAL_URL, DATATOOLS_S3ROOT, DATASTORE_SYSROOT_S3, DEFAULT_METADATA, SERVICE_HEADERS, BATCH_EMIT_TAGS, CARD_S3ROOT, S3_ENDPOINT_URL, DEFAULT_SECRETS_BACKEND_TYPE, AWS_SECRETS_MANAGER_DEFAULT_REGION, S3_SERVER_SIDE_ENCRYPTION
  from metaflow.metaflow_config_funcs import config_values
  from metaflow.mflog import export_mflog_env_vars, bash_capture_logs, tail_logs, BASH_SAVE_LOGS
  from .batch_client import BatchClient
label_desc: Use image node_id 4 for calling the Batch obj's underlying member method code with example usage: obj._job_name(user, flow_name, run_id, step_name, task_id, retry_count) and returns: str