Python Package PyGithub: Difference between revisions
Line 65: | Line 65: | ||
sort='...', | sort='...', | ||
direction='...' | direction='...' | ||
per_page=30 | |||
) | ) | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Line 79: | Line 80: | ||
====<tt>direction</tt>==== | ====<tt>direction</tt>==== | ||
The direction of the sort. Default: 'desc' when sort is created or sort is not specified, otherwise 'asc'. | The direction of the sort. Default: 'desc' when sort is created or sort is not specified, otherwise 'asc'. | ||
====<tt>per_page</tt>==== | |||
Number of results per page, as integer. Default 30, max 100. | |||
====<tt>page</tt>==== | |||
Page number of the results to fetch, default 1. | |||
===Get One PR from a Repository=== | ===Get One PR from a Repository=== |
Revision as of 23:07, 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
Attributes:
full_name
Get a Repository
github = Github(...)
repo = github.get_repo('some-owner/some-repo')
Issues
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='...',
direction='...'
per_page=30
)
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.
direction
The direction of the sort. Default: 'desc' when sort is created or sort is not specified, otherwise 'asc'.
per_page
Number of results per page, as integer. Default 30, max 100.
page
Page number of the results to fetch, default 1.
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
.