class_docstr: Test that the current singleton returns the right values
class_docstr_tok: ["Test","that","the","current","singleton","returns","the","right","values"]
code: def step_join(self):
      from uuid import uuid4
      from metaflow import current
  
      # merge all incoming branches
      # join step needs to reassign all artifacts.
      from itertools import chain
  
      self.project_names = set(
          chain(*(i.project_names for i in inputs))
      )
      self.branch_names = set(chain(*(i.branch_names for i in inputs)))
      self.project_flow_names = set(
          chain(*(i.project_flow_names for i in inputs))
      )
      self.is_production = set(
          chain(*(i.is_production for i in inputs))
      )
  
      self.flow_names = set(chain(*(i.flow_names for i in inputs)))
      self.run_ids = set(chain(*(i.run_ids for i in inputs)))
      self.origin_run_ids = set(
          chain(*(i.origin_run_ids for i in inputs))
      )
      self.steps = set(chain(*(i.steps for i in inputs)))
      self.namespaces = set(chain(*(i.namespaces for i in inputs)))
      self.usernames = set(chain(*(i.usernames for i in inputs)))
      self.task_data = {}
      for i in inputs:
          self.task_data.update(i.task_data)
      self.tags = set(chain(*(i.tags for i in inputs)))
  
      # add data for the join step
      self.project_names.add(current.project_name)
      self.branch_names.add(current.branch_name)
      self.project_flow_names.add(current.project_flow_name)
      self.is_production.add(current.is_production)
      self.step_name = current.step_name
      self.flow_names.add(current.flow_name)
      self.run_ids.add(current.run_id)
      self.origin_run_ids.add(current.origin_run_id)
      self.namespaces.add(current.namespace)
      self.usernames.add(current.username)
      self.steps.add(current.step_name)
      self.uuid = str(uuid4())
      self.task_data[current.pathspec] = self.uuid
      self.tags.update(current.tags)
      self.task_obj = current.task
      self.run_obj = current.run
  
imports: from metaflow_test import MetaflowTest, ExpectationFailed, steps
label_desc: Use image node_id 2 for calling the CurrentSingletonTest obj's underlying member method code with example usage: obj.step_join() without return types