def __init__()

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)