class_docstr: Lineages of trials for workers in PBT
  
  This class regroup all lineages of trials generated by PBT for a given experiment.
  
  Each lineage is a path from a leaf trial (highest fidelity level) up to the root
  (lowest fidelity level). Multiple lineages can fork from the same root, forming a tree.
  A Lineages object may reference multiple trees of lineages. Iterating a Lineages object will
  iterate on the roots of these trees.
docstr: Add a trial to the lineages
  
  If the trial is already in the lineages, this will only return the corresponding lineage
  node. Otherwise, a new lineage node will be created and added as a root.
  
  Parameters
  ----------
  trial: ``orion.core.worker.trial.Trial``
      Trial from a `orion.algo.space.Space`.
  
  Returns
  -------
  orion.algo.pbt.pbt.LineageNode
      The lineage node for the given trial.
docstr_tok: ["Add","a","trial","to","the","lineages","If","the","trial","is","already","in","the","lineages",",","this","will","only","return","the","corresponding","lineage","node",".","Otherwise",",","a","new","lineage","node","will","be","created","and","added","as","a","root",".","Parameters","--","--","--","--","--","trial",":","``","orion.core.worker.trial.Trial","``","Trial","from","a","`","orion.algo.space.Space","`",".","Returns","--","--","--","-","orion.algo.pbt.pbt.LineageNode","The","lineage","node","for","the","given","trial","."]
code: def add(self, trial: Trial) -> LineageNode:
      """Add a trial to the lineages
  
      If the trial is already in the lineages, this will only return the corresponding lineage
      node. Otherwise, a new lineage node will be created and added as a root.
  
      Parameters
      ----------
      trial: ``orion.core.worker.trial.Trial``
          Trial from a `orion.algo.space.Space`.
  
      Returns
      -------
      orion.algo.pbt.pbt.LineageNode
          The lineage node for the given trial.
  
      """
      if trial.id in self._trial_to_lineages:
          return self._trial_to_lineages[trial.id]
  
      lineage = LineageNode(trial)
      self._lineage_roots.append(lineage)
      self._trial_to_lineages[trial.id] = lineage
      return lineage
  
imports: from __future__ import annotations
  import copy
  import logging
  import time
  from typing import Any, ClassVar, Iterable, Sequence
  import numpy
  from orion.algo.base import BaseAlgorithm
  from orion.algo.pbt.exploit import exploit_factory
  from orion.algo.pbt.explore import explore_factory
  from orion.algo.random import Random
  from orion.algo.space import Fidelity, Space
  from orion.core.utils.flatten import flatten
  from orion.core.utils.tree import TreeNode
  from orion.core.worker.transformer import TransformedDimension
  from orion.core.worker.trial import Trial
label_desc: Use image node_id 4 for calling the Lineages obj's underlying member method code with example usage: obj.add(trial) and returns: lineage, self