Python Package PyGithub: Difference between revisions

From NovaOrdis Knowledge Base
Jump to navigation Jump to search
Line 62: Line 62:
paginated_list = repository.get_pulls(
paginated_list = repository.get_pulls(
   state='open'|'closed'|'all',
   state='open'|'closed'|'all',
   base='<base-branch-name>'
   base='...',
   )
   sort='...',
)
</syntaxhighlight>
</syntaxhighlight>


====<tt>state</tt>====
If the state is invalid (not one of 'open', 'closed' or 'all'), the method returns a result corresponding to 'open'.
If the state is invalid (not one of 'open', 'closed' or 'all'), the method returns a result corresponding to 'open'.
====<tt>base</tt>====
The base branch name. If no such branch, the method returns an empty list.
====<tt>sort</tt>====
A string indicating what to sort results by:
* 'popularity': sort by the number of comments.
* 'created': (default)
* 'updated':
* 'long-running': will sort by date created and will limit the results to pull requests that have been open for more than a month and have had activity within the past month.


===Get One PR from a Repository===
===Get One PR from a Repository===

Revision as of 23:03, 9 January 2023

External

Internal

Overview

A package used to interact with GitHub APIs.

Example

import os
from github import Github
from urllib3 import Retry


def access_github():
    # github = Github('user', 'password')
    github_pat = os.environ.get('GITHUB_PAT')
    if not github_pat:
        raise ValueError("'GITHUB_PAT' not setup")
    base_url = 'https://github.com'
    api_endpoint = 'api/v3'
    status_forcelist = [403, 500, 502, 504]  # retry 403s, 5XX from GitHub
    retry = Retry(total=10, backoff_factor=0.2, raise_on_status=True, status_forcelist=status_forcelist)
    github = Github(base_url=f'{base_url}/{api_endpoint}', login_or_token=github_pat, retry=retry, per_page=100)

    for repo in github.get_user().get_repos():
        print(repo.name)

Programming Model

Repository

https://pygithub.readthedocs.io/en/latest/examples/Repository.html

Attributes:

  • full_name

Get a Repository

github = Github(...)
repo = github.get_repo('some-owner/some-repo')

Issues

https://pygithub.readthedocs.io/en/latest/examples/Issue.html
repo = ...
issues = repo.get_issues(state=state, milestone=milestone)

Milestones

repo = ...
milestones = repo.get_milestones()

Pull Requests (PRs)

Get Multiple PRs from a Repository

Calls GET /repos/<owner>/<repo>/pulls. See: https://docs.github.com/en/rest/reference/pulls for reference. Returns a paginated list of PullRequest instances.

repository = ...
paginated_list = repository.get_pulls(
  state='open'|'closed'|'all',
  base='...',
  sort='...',
)

state

If the state is invalid (not one of 'open', 'closed' or 'all'), the method returns a result corresponding to 'open'.

base

The base branch name. If no such branch, the method returns an empty list.

sort

A string indicating what to sort results by:

  • 'popularity': sort by the number of comments.
  • 'created': (default)
  • 'updated':
  • 'long-running': will sort by date created and will limit the results to pull requests that have been open for more than a month and have had activity within the past month.

Get One PR from a Repository

Calls GET /repos/<owner>/<repo>/pulls/<pr-number>.

See: https://docs.github.com/en/rest/reference/pulls

Utilities

PaginatedList

The total number of elements can be obtained with paginated_list.totalCount.