def update_pull_request()

in azure-devops/azext_devops/dev/repos/pull_request.py [0:0]


def update_pull_request(id, title=None, description=None, auto_complete=None,  # pylint: disable=redefined-builtin
                        squash=None, delete_source_branch=None, bypass_policy=None, draft=None,
                        bypass_policy_reason=None, merge_commit_message=None, organization=None, detect=None,
                        transition_work_items=None, status=None):
    """Update a pull request.
    :param id: ID of the pull request.
    :type id: int
    :param title: New title for the pull request.
    :type title: str
    :param description: New description for the pull request.  Can include markdown.  Each value sent to this
                        arg will be a new line. For example: --description "First Line" "Second Line"
    :type description: list of str
    :param auto_complete: Set the pull request to complete automatically when all policies have passed and
                          the source branch can be merged into the target branch.
    :type auto_complete: bool
    :param squash: Squash the commits in the source branch when merging into the target branch.
    :type squash: bool
    :param delete_source_branch: Delete the source branch after the pull request has been completed
                                 and merged into the target branch.
    :type delete_source_branch: bool
    :param bypass_policy: Bypass required policies (if any) and completes the pull request once it
                          can be merged.
    :type bypass_policy: bool
    :param bypass_policy_reason: Reason for bypassing the required policies.
    :type bypass_policy_reason: str
    :param draft: Publish the PR or convert to draft mode.
    :type draft: bool
    :param merge_commit_message: Message displayed when commits are merged.
    :type merge_commit_message: str
    :param transition_work_items: Transition any work items linked to the pull request into the next logical state.
                   (e.g. Active -> Resolved)
    :type transition_work_items: bool
    :param status: Set the new state of pull request.
    :type status: str
    :rtype: :class:`GitPullRequest <v5_0.git.models.GitPullRequest>`
    """
    organization = resolve_instance(detect=detect, organization=organization)
    client = get_git_client(organization)
    existing_pr = client.get_pull_request_by_id(id)
    if description is not None:
        multi_line_description = '\n'.join(description)
    else:
        multi_line_description = None
    pr = GitPullRequest(title=title, description=multi_line_description)
    if (bypass_policy is not None or   # pylint: disable=too-many-boolean-expressions
            bypass_policy_reason is not None or
            squash is not None or
            merge_commit_message is not None or
            delete_source_branch is not None or
            transition_work_items is not None):
        completion_options = existing_pr.completion_options
        if completion_options is None:
            completion_options = GitPullRequestCompletionOptions()
        if bypass_policy is not None:
            completion_options.bypass_policy = bypass_policy
        if bypass_policy_reason is not None:
            completion_options.bypass_reason = bypass_policy_reason
        if delete_source_branch is not None:
            completion_options.delete_source_branch = delete_source_branch
        if squash is not None:
            completion_options.squash_merge = squash
        if merge_commit_message is not None:
            completion_options.merge_commit_message = merge_commit_message
        if transition_work_items is not None:
            completion_options.transition_work_items = transition_work_items
        pr.completion_options = completion_options
    if auto_complete is not None:
        if auto_complete:
            pr.auto_complete_set_by = IdentityRef(id=resolve_identity_as_id(ME, organization))
        else:
            pr.auto_complete_set_by = IdentityRef(id=EMPTY_UUID)
    if draft is not None:
        pr.is_draft = draft
    if status is not None:
        pr.status = status
        if status == 'completed':
            pr.last_merge_source_commit = existing_pr.last_merge_source_commit
            if not pr.completion_options:
                pr.completion_options = existing_pr.completion_options
    pr = client.update_pull_request(git_pull_request_to_update=pr,
                                    project=existing_pr.repository.project.name,
                                    repository_id=existing_pr.repository.name,
                                    pull_request_id=id)
    return pr