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

Collaborators

commits

Commits

downloads

Downloads

forks

Forks

keys

Keys

watchers

Watchers

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

list_tags(user=None, repo=None)

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 repository

commits_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 repository

commits_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:

Note

Remember Config precedence

It is a two step process. After you create the download, you must call the upload function of Download resource with file_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')