Source code for IGitt.Interfaces.MergeRequest

"""
Contains a class that represents a request to merge something into some git
branch.
"""
from datetime import datetime
from typing import List
from typing import Set

from IGitt.Interfaces import MergeRequestStates
from IGitt.Interfaces.Commit import Commit
from IGitt.Interfaces.CommitStatus import Status
from IGitt.Interfaces.Issue import Issue
from IGitt.Interfaces.User import User
from IGitt.Interfaces.Milestone import Milestone


[docs]class MergeRequest(Issue): """ A request to merge something into the main codebase. Can be a patch in a mail or a pull request on GitHub. """
[docs] def close(self): """ Closes the merge request. :raises RuntimeError: If something goes wrong (network, auth...). """ raise NotImplementedError
[docs] def reopen(self): """ Reopens the merge request. :raises RuntimeError: If something goes wrong (network, auth...). """ raise NotImplementedError
@property def state(self) -> MergeRequestStates: """ Get's the state of the merge request. :return: A MergeRequestStates object indicating current state. """ raise NotImplementedError @property def base(self) -> Commit: """ Retrieves the base commit of the merge request, i.e. the one it should be merged into. :return: A Commit object. """ raise NotImplementedError @property def base_branch_name(self) -> str: """ Retrieves the base branch name of the merge request, i.e. the one it should be merged into. :return: A string. """ raise NotImplementedError @property def head(self) -> Commit: """ Retrieves the head commit of the merge request, i.e. the one which would be merged. :return: A Commit object. """ raise NotImplementedError @property def head_branch_name(self) -> str: """ Retrieves the head branch name of the merge request, i.e. the one that will be merged. :return: A string. """ raise NotImplementedError @property def commits(self) -> List[Commit]: """ Retrieves all commits that are contained in this request. :return: A list of Commits. """ raise NotImplementedError @property def repository(self): """ Retrieves the repository where this PR is opened at. :return: A Repository object. """ raise NotImplementedError @property def target_repository(self): """ Retrieves the repository where this PR is opened at. An alias to ``self.repository`` property. :return: A Repository object. """ return self.repository @property def source_repository(self): """ Retrieves the repository where this PR's head branch is located at. :return: A Repository object. """ raise NotImplementedError @property def affected_files(self): """ Retrieves the affected files. :return: A set of filenames relative to repo root. """ raise NotImplementedError @property def diffstat(self): """ Gets additions and deletions of a merge request. :return: An (additions, deletions) tuple. """ raise NotImplementedError @property def created(self) -> datetime: """ Retrieves a timestamp on when the merge request was created. """ raise NotImplementedError @property def updated(self) -> datetime: """ Retrieves a timestamp on when the merge request was updated the last time. """ raise NotImplementedError @property def number(self) -> int: """ Returns the MR "number" or id. """ raise NotImplementedError @property def closes_issues(self) -> Set[Issue]: """ Returns a set of Issue objects which would be closed upon merging this pull request. """ raise NotImplementedError @property def tests_passed(self) -> bool: """ Returns True if all commits of the merge request have a success state. If you wish to only get the head state, use mr.head.combined_status. """ statuses = set(map(lambda commit: commit.combined_status, self.commits)) if Status.PENDING in statuses or Status.FAILED in statuses: return False return True @property def mentioned_issues(self) -> Set[Issue]: """ Returns a set of Issue objects which are related to the pull request. """ raise NotImplementedError @property def author(self) -> User: """ Returns the author of the MR wrapped in a User object. """ raise NotImplementedError
[docs] def merge(self, message: str=None, sha: str=None, should_remove_source_branch: bool=False, _github_merge_method: str=None, _gitlab_merge_when_pipeline_succeeds: bool=False): """ Merges the merge request. :param message: The commit message. :param sha: The commit sha that the HEAD must match in order to merge. :param should_remove_source_branch: Whether the source branch should be removed upon a successful merge. :param _github_merge_method: On GitHub, the merge method to use when merging the MR. Can be one of `merge`, `squash` or `rebase`. :param _gitlab_wait_for_pipeline: On GitLab, whether the MR should be merged immediately after the pipeline succeeds. :raises RuntimeError: If something goes wrong (network, auth...). :raises NotImplementedError: If an unused parameter is passed. """ raise NotImplementedError
@property def milestone(self) -> Milestone: """ Retrieves the milestone. """ raise NotImplementedError @milestone.setter def milestone(self, new_milestone) -> Milestone: """ Setter for the Milestone. """ raise NotImplementedError @property def mergeable(self) -> bool: """ Returns true if there is no merge conflict. """ raise NotImplementedError