in mozci/push.py [0:0]
def __init__(self, revs, branch="autoland"):
if isinstance(revs, str):
# Direct usage of a single revision reference
self._revs = None
head_revision = revs
self._bugs = None
elif isinstance(revs, list) and len(revs) > 0:
if all(map(lambda r: isinstance(r, dict), revs)):
# We should get detailed revision objects here
# and get the list of Bugzilla Bug Ids from the description
self._bugs = set(
itertools.chain(*[parse_bugs(rev.get("desc", "")) for rev in revs])
)
self._revs = [r["node"] for r in revs]
else:
# Support list of changeset IDs
self._bugs = None
self._revs = revs
head_revision = self._revs[0]
else:
raise NotImplementedError(f"Cannot process revisions: {revs}")
self.branch = branch
self._hgmo = HgRev.create(head_revision, branch=self.branch)
self._id = None
self._date = None
self._author = None
# Need to use full hash in the index.
if len(head_revision) == 40:
self.rev = head_revision
else:
self.rev = self._hgmo.node
self.index = BASE_INDEX.format(branch=self.branch, rev=self.rev)
# Unique identifier for a Push across branches
self.push_uuid = "{}/{}".format(self.branch, self.rev)