Main class: Github

class github.MainClass.Github(login_or_token: str | None = None, password: str | None = None, jwt: str | None = None, app_auth: AppAuthentication | None = None, base_url: str = 'https://api.github.com', timeout: int = 15, user_agent: str = 'PyGithub/Python', per_page: int = 30, verify: bool | str = True, retry: int | Retry | None = GithubRetry(total=10, connect=None, read=None, redirect=None, status=None), pool_size: int | None = None, seconds_between_requests: float | None = 0.25, seconds_between_writes: float | None = 1.0, auth: github.Auth.Auth | None = None, lazy: bool = False)

This is the main class you instantiate to access the Github API v3.

Optional parameters allow different authentication methods.

Parameters:
  • login_or_token – string deprecated, use auth=github.Auth.Login(…) or auth=github.Auth.Token(…) instead

  • password – string deprecated, use auth=github.Auth.Login(…) instead

  • jwt – string deprecated, use auth=github.Auth.AppAuth(…) or auth=github.Auth.AppAuthToken(…) instead

  • app_auth – github.AppAuthentication deprecated, use auth=github.Auth.AppInstallationAuth(…) instead

  • base_url – string

  • timeout – integer

  • user_agent – string

  • per_page – int

  • verify – boolean or string

  • retry – int or urllib3.util.retry.Retry object, defaults to github.Github.default_retry, set to None to disable retries

  • pool_size – int

  • seconds_between_requests – float

  • seconds_between_writes – float

  • auth – authentication method

  • lazy – completable objects created from this instance are lazy, as well as completable objects created from those, and so on

withLazy(lazy: bool) Github

Create a Github instance with identical configuration but the given lazy setting.

Parameters:

lazy – completable objects created from this instance are lazy, as well as completable objects created from those, and so on

Returns:

new Github instance

close() None

Close connections to the server. Alternatively, use the Github object as a context manager:

with github.Github(...) as gh:
  # do something
property requester: Requester

Return my Requester object.

For example, to make requests to API endpoints not yet supported by PyGitHub.

property rate_limiting: tuple[int, int]

First value is requests remaining, second value is request limit.

property rate_limiting_resettime: int

Unix timestamp indicating when rate limiting will reset.

get_rate_limit() RateLimitOverview

Rate limit overview that provides general status and status for different resources (core/search/graphql).

Calls:

GET /rate_limit

property oauth_scopes: list[str] | None
Type:

list of string

get_license(key: Opt[str] = NotSet) License
Calls:

GET /license/{license}

get_licenses() PaginatedList[License]
Calls:

GET /licenses

get_events() PaginatedList[Event]
Calls:

GET /events

get_user(login: Opt[str] = NotSet, lazy: Opt[bool] = NotSet) NamedUser | AuthenticatedUser
Calls:

GET /users/{username} or GET /user

get_user_by_id(user_id: int) NamedUser
Calls:

GET /user/{account_id}

Parameters:

user_id – int

Return type:

github.NamedUser.NamedUser

get_users(since: Opt[int] = NotSet) PaginatedList[NamedUser]
Calls:

GET /users

get_organization(org: str) Organization
Calls:

GET /orgs/{org}

get_organizations(since: Opt[int] = NotSet) PaginatedList[Organization]
Calls:

GET /organizations

get_enterprise(enterprise: str) Enterprise
Calls:

GET /enterprises/{enterprise}

Parameters:

enterprise – string

Return type:

Enterprise

get_repo(full_name_or_id: int | str, lazy: Opt[bool] = NotSet) Repository
Calls:

GET /repos/{owner}/{repo} or GET /repositories/{repository_id}

get_repos(since: Opt[int] = NotSet, visibility: Opt[str] = NotSet) PaginatedList[Repository]
Calls:

GET /repositories

Parameters:
  • since – integer

  • visibility – string (‘all’,’public’)

get_project(id: int) Project
Calls:

GET /projects/{project_id}

get_project_column(id: int) ProjectColumn
Calls:

GET /projects/columns/{column_id}

get_gist(id: str) Gist
Calls:

GET /gists/{gist_id}

get_gists(since: Opt[datetime] = NotSet) PaginatedList[Gist]
Calls:

GET /gists/public

get_global_advisory(ghsa_id: str) GlobalAdvisory
Calls:

GET /advisories/{ghsa_id}

Parameters:

ghsa_id – string

Return type:

github.GlobalAdvisory.GlobalAdvisory

get_global_advisories(type: Opt[str] = NotSet, ghsa_id: Opt[str] = NotSet, cve_id: Opt[str] = NotSet, ecosystem: Opt[str] = NotSet, severity: Opt[str] = NotSet, cwes: list[Opt[str]] | Opt[str] = NotSet, is_withdrawn: Opt[bool] = NotSet, affects: list[str] | Opt[str] = NotSet, published: Opt[str] = NotSet, updated: Opt[str] = NotSet, modified: Opt[str] = NotSet, keywords: Opt[str] = NotSet, before: Opt[str] = NotSet, after: Opt[str] = NotSet, per_page: Opt[str] = NotSet, sort: Opt[str] = NotSet, direction: Opt[str] = NotSet) PaginatedList[GlobalAdvisory]
Calls:

GET /advisories <https://docs.github.com/en/rest/security-advisories/global-advisories>

Parameters:
  • type – Optional string

  • ghsa_id – Optional string

  • cve_id – Optional string

  • ecosystem – Optional string

  • severity – Optional string

  • cwes – Optional comma separated string or list of integer or string

  • is_withdrawn – Optional bool

  • affects – Optional comma separated string or list of string

  • published – Optional string

  • updated – Optional string

  • modified – Optional string

  • before – Optional string

  • after – Optional string

  • sort – Optional string

  • direction – Optional string

Return type:

github.PaginatedList.PaginatedList of github.GlobalAdvisory.GlobalAdvisory

search_repositories(query: str, sort: Opt[str] = NotSet, order: Opt[str] = NotSet, **qualifiers: Any) PaginatedList[RepositorySearchResult]
Calls:

GET /search/repositories

Parameters:
  • query – string

  • sort – string (‘stars’, ‘forks’, ‘updated’)

  • order – string (‘asc’, ‘desc’)

  • qualifiers – keyword dict query qualifiers

search_users(query: str, sort: Opt[str] = NotSet, order: Opt[str] = NotSet, **qualifiers: Any) PaginatedList[NamedUserSearchResult]
Calls:

GET /search/users

Parameters:
  • query – string

  • sort – string (‘followers’, ‘repositories’, ‘joined’)

  • order – string (‘asc’, ‘desc’)

  • qualifiers – keyword dict query qualifiers

Return type:

PaginatedList of github.NamedUser.NamedUserSearchResult

search_issues(query: str, sort: Opt[str] = NotSet, order: Opt[str] = NotSet, **qualifiers: Any) PaginatedList[IssueSearchResult]
Calls:

GET /search/issues

Parameters:
  • query – string

  • sort – string (‘comments’, ‘created’, ‘updated’)

  • order – string (‘asc’, ‘desc’)

  • qualifiers – keyword dict query qualifiers

Return type:

PaginatedList of github.Issue.IssueSearchResult

search_code(query: str, sort: Opt[str] = NotSet, order: Opt[str] = NotSet, highlight: bool = False, **qualifiers: Any) PaginatedList[ContentFileSearchResult]
Calls:

GET /search/code

Parameters:
  • query – string

  • sort – string (‘indexed’)

  • order – string (‘asc’, ‘desc’)

  • highlight – boolean (True, False)

  • qualifiers – keyword dict query qualifiers

Return type:

PaginatedList of github.ContentFile.ContentFileSearchResult

search_commits(query: str, sort: Opt[str] = NotSet, order: Opt[str] = NotSet, **qualifiers: Any) PaginatedList[CommitSearchResult]
Calls:

GET /search/commits

Parameters:
  • query – string

  • sort – string (‘author-date’, ‘committer-date’)

  • order – string (‘asc’, ‘desc’)

  • qualifiers – keyword dict query qualifiers

Return type:

PaginatedList of github.Commit.CommitSearchResult

search_topics(query: str, **qualifiers: Any) PaginatedList[Topic]
Calls:

GET /search/topics

Parameters:
  • query – string

  • qualifiers – keyword dict query qualifiers

Return type:

PaginatedList of github.Topic.Topic

render_markdown(text: str, context: Opt[Repository] = NotSet) str
Calls:

POST /markdown

Parameters:
Return type:

string

get_hook(name: str) HookDescription
Calls:

GET /hooks/{name}

get_hooks() list[HookDescription]
Calls:

GET /hooks

Return type:

list of github.HookDescription.HookDescription

get_hook_delivery(hook_id: int, delivery_id: int) HookDelivery
Calls:

GET /hooks/{hook_id}/deliveries/{delivery_id}

Parameters:
  • hook_id – integer

  • delivery_id – integer

Return type:

HookDelivery

get_hook_deliveries(hook_id: int) list[HookDeliverySummary]
Calls:

GET /hooks/{hook_id}/deliveries

Parameters:

hook_id – integer

Return type:

list of HookDeliverySummary

get_gitignore_templates() list[str]
Calls:

GET /gitignore/templates

get_gitignore_template(name: str) GitignoreTemplate
Calls:

GET /gitignore/templates/{name}

get_emojis() dict[str, str]
Calls:

GET /emojis

Return type:

dictionary of type => url for emoji`

create_from_raw_data(klass: type[TGithubObject], raw_data: dict[str, Any], headers: dict[str, str | int] | None = None) TGithubObject

Creates an object from raw_data previously obtained by GithubObject.raw_data, and optionally headers previously obtained by GithubObject.raw_headers.

Parameters:
  • klass – the class of the object to create

  • raw_data – dict

  • headers – dict

Return type:

instance of class klass

dump(obj: GithubObject, file: BinaryIO, protocol: int = 0) None

Dumps (pickles) a PyGithub object to a file-like object. Some effort is made to not pickle sensitive information like the Github credentials used in the Github instance. But NO EFFORT is made to remove sensitive information from the object’s attributes.

Parameters:
  • obj – the object to pickle

  • file – the file-like object to pickle to

  • protocol – the pickling protocol

load(f: BinaryIO) Any

Loads (unpickles) a PyGithub object from a file-like object.

Parameters:

f – the file-like object to unpickle from

Returns:

the unpickled object

get_app(slug: Opt[str] = NotSet) GithubApp
Calls:

GET /apps/{app_slug} or GET /app