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)

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
close() → None

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

with github.Github(...) as gh:
  # do something
rate_limiting

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

rate_limiting_resettime

Unix timestamp indicating when rate limiting will reset.

get_rate_limit() → github.RateLimit.RateLimit

Rate limit status for different resources (core/search/graphql).

Calls:GET /rate_limit
oauth_scopes
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) → NamedUser | AuthenticatedUser
Calls:GET /users/{user} or GET /user
get_user_by_id(user_id: int) → NamedUser
Calls:GET /user/{id}
Parameters:user_id – int
Return type:github.NamedUser.NamedUser
get_users(since: Opt[int] = NotSet) → PaginatedList[NamedUser]
Calls:GET /users
get_organization(login: str) → Organization
Calls:GET /orgs/{org}
get_organizations(since: Opt[int] = NotSet) → PaginatedList[Organization]
Calls:GET /organizations
get_enterprise(enterprise: str) → github.Enterprise.Enterprise
Calls:GET /enterprises/{enterprise}
Parameters:enterprise – string
Return type:Enterprise
get_repo(full_name_or_id: int | str, lazy: bool = False) → Repository
Calls:GET /repos/{owner}/{repo} or GET /repositories/{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/{id}
get_gists(since: Opt[datetime] = NotSet) → PaginatedList[Gist]
Calls:GET /gists/public
search_repositories(query: str, sort: Opt[str] = NotSet, order: Opt[str] = NotSet, **qualifiers) → PaginatedList[Repository]
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) → PaginatedList[NamedUser]
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.NamedUser

search_issues(query: str, sort: Opt[str] = NotSet, order: Opt[str] = NotSet, **qualifiers) → PaginatedList[Issue]
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.Issue

search_code(query: str, sort: Opt[str] = NotSet, order: Opt[str] = NotSet, highlight: bool = False, **qualifiers) → PaginatedList[ContentFile]
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.ContentFile

search_commits(query: str, sort: Opt[str] = NotSet, order: Opt[str] = NotSet, **qualifiers) → PaginatedList[Commit]
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.Commit

search_topics(query: str, **qualifiers) → 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) → github.HookDescription.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) → github.HookDelivery.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: github.GithubObject.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/{slug} or GET /app