Repos services¶
Fast sample:
from pygithub3 import Github
gh = Github()
django_compressor = gh.repos.get(user='jezdez', repo='django_compressor')
requests_collaborators = gh.repos.collaborators(user='kennethreitz',
repo='requests')
Config precedence¶
Some request always need user
and repo
parameters, both, to identify
a repository. Because there are a lot of requests which need that parameters,
you can Config each service with user
and repo
globally.
So several requests follow a simple precedence
user_in_arg > user_in_config | repo_in_arg > repo_in_config
You can see it better with an example:
from pygithub3 import Github
gh = Github(user='octocat', repo='oct_repo')
oct_repo = gh.repos.get()
another_repo_from_octocat = gh.repos.get(repo='another_repo')
django_compressor = gh.repos.get(user='jezdez', repo='django_compressor')
Note
Remember that each service is isolated from the rest
# continue example...
gh.repos.commits.set_user('copitux')
oct_repo = gh.repos.get()
oct_repo_collaborators = gh.repos.collaborators.list().all()
# Fail because copitux/oct_repo doesn't exist
gh.repos.commits.list_comments()
Repo¶
-
class
pygithub3.services.repos.
Repo
(**config)¶ Consume Repos API
-
collaborators
¶
-
create
(data, in_org=None)¶ Create a new repository
Parameters: - data (dict) – Input. See github repos doc
- in_org (str) – Organization where create the repository (optional)
Warning
You must be authenticated
If you use
in_org
arg, the authenticated user must be a member of <in_org>repo_service.create(dict(name='new_repo', description='desc')) repo_service.create(dict(name='new_repo_in_org', team_id=2300), in_org='myorganization')
-
delete
(user=None, repo=None)¶ Delete a single repo
Parameters: - user (str) – Username
- repo (str) – Repository
Note
Remember Config precedence
-
get
(user=None, repo=None)¶ Get a single repo
Parameters: - user (str) – Username
- repo (str) – Repository
Note
Remember Config precedence
-
list
(user=None, type='all')¶ Get user’s repositories
Parameters: - user (str) – Username
- type (str) – Filter by type (optional). See github repos doc
Returns: A Result
If you call it without user and you are authenticated, get the authenticated user’s repositories
Warning
If you aren’t authenticated and call without user, it returns 403
repo_service.list('copitux', type='owner') repo_service.list(type='private')
-
list_branches
(user=None, repo=None)¶ Get repository’s branches
Parameters: - user (str) – Username
- repo (str) – Repository
Returns: A Result
Note
Remember Config precedence
-
list_by_org
(org, type='all')¶ Get organization’s repositories
Parameters: - org (str) – Organization name
- type (str) – Filter by type (optional). See github repos doc
Returns: A Result
repo_service.list_by_org('myorganization', type='member')
-
list_contributors
(user=None, repo=None)¶ Get repository’s contributors
Parameters: - user (str) – Username
- repo (str) – Repository
Returns: A Result
Note
Remember Config precedence
-
list_contributors_with_anonymous
(user=None, repo=None)¶ Like
list_contributors
plus anonymous
-
list_languages
(user=None, repo=None)¶ Get repository’s languages
Parameters: - user (str) – Username
- repo (str) – Repository
Returns: A Result
Note
Remember Config precedence
Get repository’s tags
Parameters: - user (str) – Username
- repo (str) – Repository
Returns: A Result
Note
Remember Config precedence
-
list_teams
(user=None, repo=None)¶ Get repository’s teams
Parameters: - user (str) – Username
- repo (str) – Repository
Returns: A Result
Note
Remember Config precedence
-
update
(data, user=None, repo=None)¶ Update a single repository
Parameters: - data (dict) – Input. See github repos doc
- user (str) – Username
- repo (str) – Repository
Note
Remember Config precedence
Warning
You must be authenticated
repo_service.update(dict(has_issues=True), user='octocat', repo='oct_repo')
-
Collaborators¶
-
class
pygithub3.services.repos.
Collaborators
(**config)¶ Consume Repo Collaborators API
-
add
(collaborator, user=None, repo=None)¶ Add collaborator to a repository
Parameters: - collaborator (str) – Collaborator’s username
- user (str) – Username
- repo (str) – Repository
Note
Remember Config precedence
Warning
You must be authenticated and have perms in repository
-
delete
(collaborator, user=None, repo=None)¶ Remove collaborator from repository
Parameters: - collaborator (str) – Collaborator’s username
- user (str) – Username
- repo (str) – Repository
Note
Remember Config precedence
Warning
You must be authenticated and have perms in repository
-
is_collaborator
(collaborator, user=None, repo=None)¶ Check if a user is collaborator on repository
Parameters: - collaborator (str) – Collaborator’s username
- user (str) – Username
- repo (str) – Repository
Note
Remember Config precedence
-
list
(user=None, repo=None)¶ Get repository’s collaborators
Parameters: - user (str) – Username
- repo (str) – Repository
Returns: A Result
Note
Remember Config precedence
-
Commits¶
-
class
pygithub3.services.repos.
Commits
(**config)¶ Consume Commits API
Note
This service support MimeTypes configuration
-
compare
(base, head, user=None, repo=None)¶ Compare two commits
Parameters: - base (str) – Base commit sha
- head (str) – Head commit sha
- user (str) – Username
- repo (str) – Repository
Note
Remember Config precedence
commits_service.compare('6dcb09', 'master', user='octocat', repo='oct_repo')
-
create_comment
(data, sha, user=None, repo=None)¶ Create a commit comment
Parameters: - data (dict) – Input. See github commits doc
- sha (str) – Commit’s sha
- user (str) – Username
- repo (str) – Repository
Note
Remember Config precedence
Warning
You must be authenticated
data = { "body": "Nice change", "commit_id": "6dcb09b5b57875f334f61aebed695e2e4193db5e", "line": 1, "path": "file1.txt", "position": 4 } commits_service.create_comment(data, '6dcb09', user='octocat', repo='oct_repo')
-
delete_comment
(cid, user=None, repo=None)¶ Delete a single commit comment
Parameters: - cid (int) – Commit comment id
- user (str) – Username
- repo (str) – Repository
Note
Remember Config precedence
-
get
(sha, user=None, repo=None)¶ Get a single commit
Parameters: - sha (str) – Commit’s sha
- user (str) – Username
- repo (str) – Repository
Note
Remember Config precedence
-
get_comment
(cid, user=None, repo=None)¶ Get a single commit comment
Parameters: - cid (int) – Commit comment id
- user (str) – Username
- repo (str) – Repository
Note
Remember Config precedence
-
list
(user=None, repo=None, sha=None, path=None)¶ Get repository’s commits
Parameters: - user (str) – Username
- repo (str) – Repository
- sha (str) – Sha or branch to start listing commits from
- path (str) – Only commits containing this file path will be returned
Returns: A Result
Note
Remember Config precedence
Warning
Usually a repository has thousand of commits, so be careful when consume the result. You should filter with
sha
or directly clone the repositorycommits_service.list(user='octocat', repo='oct_repo') commits_service.list(user='octocat', repo='oct_repo', sha='dev') commits_service.list(user='django', repo='django', sha='master', path='django/db/utils.py')
-
list_comments
(sha=None, user=None, repo=None)¶ Get commit’s comments
Parameters: - sha (str) – Commit’s sha
- user (str) – Username
- repo (str) – Repository
Returns: A Result
Note
Remember Config precedence
If you call it without
sha
, get all commit’s comments of a repositorycommits_service.list_comments('6dcb09', user='octocat', repo='oct_repo') commits_service.list_comments(user='octocat', repo='oct_repo')
-
update_comment
(data, cid, user=None, repo=None)¶ Update a single commit comment
Parameters: - data (dict) – Input. See github commits doc
- cid (int) – Commit comment id
- user (str) – Username
- repo (str) – Repository
Note
Remember Config precedence
Warning
You must be authenticated
commits_service.update_comment(dict(body='nice change'), 42, user='octocat', repo='oct_repo')
-
Downloads¶
-
class
pygithub3.services.repos.
Downloads
(**config)¶ Consume Downloads API
-
create
(data, user=None, repo=None)¶ Create a new download
Parameters: - data (dict) – Input. See github downloads doc
- user (str) – Username
- repo (str) – Repository
Note
Remember Config precedence
It is a two step process. After you create the download, you must call the
upload
function ofDownload
resource withfile_path
Warning
In alpha state
# Step 1 download = downloads_service.create( dict(name='new_download', size=1130), user='octocat', repo='oct_repo') # Step 2 download.upload('/home/user/file.ext')
-
delete
(id, user=None, repo=None)¶ Delete a download
Parameters: - id (int) – Download id
- user (str) – Username
- repo (str) – Repository
Note
Remember Config precedence
-
get
(id, user=None, repo=None)¶ Get a single download
Parameters: - id (int) – Download id
- user (str) – Username
- repo (str) – Repository
Note
Remember Config precedence
-
list
(user=None, repo=None)¶ Get repository’s downloads
Parameters: - user (str) – Username
- repo (str) – Repository
Returns: A Result
Note
Remember Config precedence
-
Forks¶
-
class
pygithub3.services.repos.
Forks
(**config)¶ Consume Forks API
-
create
(user=None, repo=None, org=None)¶ Fork a repository
Parameters: - user (str) – Username
- repo (str) – Repository
- org (str) – Organization name (optional)
Note
Remember Config precedence
Warning
You must be authenticated
If you call it with
org
, the repository will be forked into this organization.forks_service.create(user='octocat', repo='oct_repo') forks_service.create(user='octocat', repo='oct_repo', org='myorganization')
-
list
(user=None, repo=None, sort='newest')¶ Get repository’s forks
Parameters: - user (str) – Username
- repo (str) – Repository
- sort (str) – Order resources (optional). See github forks doc
Returns: A Result
Note
Remember Config precedence
forks_service.list(user='octocat', repo='oct_repo', sort='oldest')
-
Keys¶
-
class
pygithub3.services.repos.
Keys
(**config)¶ Consume Deploy keys API
-
create
(data, user=None, repo=None)¶ Create a repository key
Parameters: - data (dict) – Input. See github keys doc
- user (str) – Username
- repo (str) – Repository
Note
Remember Config precedence
Warning
You must be authenticated and have perms in the repository
keys_service.create(dict(title='new key', key='ssh-rsa AAA...'), user='octocat', repo='oct_repo')
-
delete
(id, user=None, repo=None)¶ Delete a repository key
Parameters: - id (int) – Repository key id
- user (str) – Username
- repo (str) – Repository
Note
Remember Config precedence
-
get
(id, user=None, repo=None)¶ Get a single repository key
Parameters: - id (int) – Repository key id
- user (str) – Username
- repo (str) – Repository
Note
Remember Config precedence
-
list
(user=None, repo=None)¶ Get repository’s keys
Parameters: - user (str) – Username
- repo (str) – Repository
Returns: A Result
Note
Remember Config precedence
-
update
(id, data, user=None, repo=None)¶ Update a repository key
Parameters: - id (int) – Repository key id
- data (dict) – Input. See github keys doc
- user (str) – Username
- repo (str) – Repository
Note
Remember Config precedence
Warning
You must be authenticated and have perms in the repository
keys_service.update(42, dict(title='new title'), user='octocat', repo='oct_repo')
-
Watchers¶
-
class
pygithub3.services.repos.
Watchers
(**config)¶ Consume Watching API
-
is_watching
(user=None, repo=None)¶ Check if authenticated user is watching a repository
Parameters: - user (str) – Username
- repo (str) – Repository
Note
Remember Config precedence
Warning
You must be authenticated
-
list
(user=None, repo=None)¶ Get repository’s watchers
Parameters: - user (str) – Username
- repo (str) – Repository
Returns: A Result
Note
Remember Config precedence
-
list_repos
(user=None)¶ Get repositories being watched by a user
Parameters: user (str) – Username Returns: A Result If you call it without user and you are authenticated, get the repositories being watched by the authenticated user.
Warning
If you aren’t authenticated and call without user, it returns 403
watchers_service.list_repos('copitux') watchers_service.list_repos()
-
unwatch
(user=None, repo=None)¶ Stop watching a repository
Parameters: - user (str) – Username
- repo (str) – Repository
Note
Remember Config precedence
Warning
You must be authenticated
-
watch
(user=None, repo=None)¶ Watch a repository
Parameters: - user (str) – Username
- repo (str) – Repository
Note
Remember Config precedence
Warning
You must be authenticated
-
Hooks¶
-
class
pygithub3.services.repos.
Hooks
(**config)¶ Consume Hooks API
Warning
You must be authenticated and have repository’s admin-permission
-
create
(data, user=None, repo=None)¶ Create a hook
Parameters: - data (dict) – Input. See github hooks doc
- user (str) – Username
- repo (str) – Repository
Note
Remember Config precedence
data = { "name": "acunote", "active": True, "config": { 'token': 'AAA...', }, "events": ['push', 'issues'], } hooks_service.create(data, user='octocat', repo='oct_repo')
-
delete
(hook_id, user=None, repo=None)¶ Delete a single hook
Parameters: - hook_id (int) – Hook id
- user (str) – Username
- repo (str) – Repository
Note
Remember Config precedence
-
get
(hook_id, user=None, repo=None)¶ Get a single hook
Parameters: - hook_id (int) – Hook id
- user (str) – Username
- repo (str) – Repository
Note
Remember Config precedence
-
list
(user=None, repo=None)¶ Get repository’s hooks
Parameters: - user (str) – Username
- repo (str) – Repository
Returns: A Result
Note
Remember Config precedence
-
test
(hook_id, user=None, repo=None)¶ Test a hook
Parameters: - user (str) – Username
- repo (str) – Repository
Note
Remember Config precedence
This will trigger the hook with the latest push to the current repository.
-
update
(hook_id, data, user=None, repo=None)¶ Update a single hook
Parameters: - hook_id (int) – Hook id
- data (dict) – Input. See github hooks doc
- user (str) – Username
- repo (str) – Repository
Note
Remember Config precedence
hooks_service.update(42, dict(active=False), user='octocat', repo='oct_repo')
-