Welcome to aiohttp_github_helpers’s documentation!

aiohttp_github_helpers.github_add_labels_on_issue(client_session, owner, repo, issue_number, labels_to_add)[source]

Add somes labels to a github issue.

Parameters
  • client_session – aiohttp ClientSession.

  • owner – owner of the repository at github.

  • repo – repository name at github (without owner part).

  • issue_number (int) – number of the issue at github.

  • labels_to_add (list) – list of strings to add as labels.

Returns

True if it’s ok, False else

Return type

boolean

aiohttp_github_helpers.github_check_github_event(request, handler)[source]

Check the GitHub event or return an HTTP/400.

This is an aiohttp middleware. If we can’t get the X-GitHub-Event in request headers, we return an HTTP/400 error. Else, the value is stored in the request object dict in the key ‘github_event’.

Parameters
  • request – aiohttp.web.Request object corresponding to the incoming http request from the client.

  • handler – aiohttp handler (see middlewares documentation).

Returns

aiohttp Response (see middlewares documentation).

aiohttp_github_helpers.github_check_signature_middleware_factory(signature_secret)[source]

Build and return an aiohttp middleware to check the GitHub signature.

We check the GitHub hook signature (see corresponding doc at github on hook secrets). If it doesn’t match to the given signature_secret, we return a HTTP/400 error.

Parameters

signature_secret (bytes) – the signature secret (as bytes).

Returns

aiohttp middlerware (see aiohttp middlewares documentation).

aiohttp_github_helpers.github_conditional_add_label_on_issue(client_session, owner, repo, issue_number, label_to_add, glob_not_to_match)[source]

Add label to a github issue if none on current labels match the given glob.

Parameters
  • client_session – aiohttp ClientSession.

  • owner – owner of the repository at github.

  • repo – repository name at github (without owner part).

  • issue_number (int) – number of the issue at github.

  • lable_to_add (string) – the label to add.

  • glob_not_to_match (string) – glob string (as defined in fnmatch module) to test with every current labels on the issue.

Returns

True if the label was added, False else.

Return type

boolean

aiohttp_github_helpers.github_create_status(client_session, owner, repo, sha, status_state, status_target_url, status_description, status_context)[source]

Create a status for the given sha.

see https://developer.github.com/v3/repos/statuses/#create-a-status

Parameters
  • client_session – aiohttp ClientSession.

  • owner – owner of the repository at github.

  • repo – repository name at github (without owner part).

  • sha (string) – the sha of the commit.

  • status_state (string) – the state of the status (error, failure, pending or success).

  • status_target_url – status target url (see github doc).

  • status_description – status description (see github doc).

  • status_context – status context (see github doc).

Returns

True if the status was created, False else.

Return type

boolean

aiohttp_github_helpers.github_delete_label_on_issue(client_session, owner, repo, issue_number, label)[source]

Delete a label from a github issue.

Parameters
  • client_session – aiohttp ClientSession.

  • owner – owner of the repository at github.

  • repo – repository name at github (without owner part).

  • issue_number (int) – number of the issue at github.

  • label (string) – label string to delete

Returns

True if ok, False else

Return type

boolean

aiohttp_github_helpers.github_delete_labels_on_issue_with_globs(client_session, owner, repo, issue_number, glob_include, glob_exclude='')[source]

Delete some labels from a github issue with globs (see fnmatch module).

To be deleted a label must match to the glob_include pattern AND NOT match to the glob_exclude pattern.

Parameters
  • client_session – aiohttp ClientSession.

  • owner – owner of the repository at github.

  • repo – repository name at github (without owner part).

  • issue_number (int) – number of the issue at github.

  • glob_include (string) – glob string (as defined in fnmatch module) to select which labels to delete.

  • glob_exclude (string) – glob string (as defined in fnmatch module) to select which labels NOT to delete.

Returns

tuple of lists. The first element is the list of

remaining labels (or None if problems), Second element is the original list of labels (or None if problems).

Return type

(list, list)

aiohttp_github_helpers.github_get_labels_on_issue(client_session, owner, repo, issue_number)[source]

Get the list of labels of a github issue.

Parameters
  • client_session – aiohttp ClientSession.

  • owner – owner of the repository at github.

  • repo – repository name at github (without owner part).

  • issue_number (int) – number of the issue at github.

Returns

list of labels (as strings) or None (if problems).

Return type

list

aiohttp_github_helpers.github_get_latest_commit(client_session, owner, repo, branch, timezone='Europe/Paris')[source]

Get the latest commit for a particular branch on a repo.

Parameters
  • client_session – aiohttp ClientSession.

  • owner – owner of the repository at github.

  • repo – repository name at github (without owner part).

  • branch (string) – the branch name.

  • timezone (string) – the current timezone.

Returns

(“sha”, age_in_seconds) or None if problem.

Return type

latest commit as a tuple

aiohttp_github_helpers.github_get_open_prs_by_sha(client_session, owner, repo, sha, state='open')[source]

Get the list of pr where head is the given sha.

Parameters
  • client_session – aiohttp ClientSession.

  • owner – owner of the repository at github.

  • repo – repository name at github (without owner part).

  • sha (string) – the SHA to search.

  • state (string) – either open, closed, all to filter by pr state.

Returns

pr numbers as list of int

Return type

pr numbers (list)

aiohttp_github_helpers.github_get_org_repos_by_topic(client_session, org, topics_to_include=None, topics_to_excludes=[])[source]

Get the repo names of an organization by filtering by topics.

Parameters
  • client_session – aiohttp ClientSession.

  • org – organization name

  • topics_to_include (list) – list of topics (AND) each repo must have (if None, no filtering).

  • topics_to_exlude (list) – list of topics (OR) each repo must not have to be in result.

Returns

list or repo names.

Return type

repo names (list)

aiohttp_github_helpers.github_get_pr_commit_messages_list(client_session, owner, repo, pr_number)[source]

Get the list of commit messages for a given pull-request.

Parameters
  • client_session – aiohttp ClientSession.

  • owner – owner of the repository at github.

  • repo – repository name at github (without owner part).

  • pr_number (int) – the pull-request number.

Returns

list of commit messages (of the PR) as strings (or None if

problems)

Return type

list

aiohttp_github_helpers.github_get_pr_reviews(client_session, owner, repo, pr_number)[source]

Get the reviews of a given pull-request.

Parameters
  • client_session – aiohttp ClientSession.

  • owner – owner of the repository at github.

  • repo – repository name at github (without owner part).

  • pr_number (int) – the pull-request number.

Returns

list of reviews (each review is a dict with

user_login, state, and sha keys)

Return type

list

aiohttp_github_helpers.github_get_repo_topics(client_session, owner, repo)[source]

Get the topics of a repository.

Parameters
  • client_session – aiohttp ClientSession.

  • owner – owner of the repository at github.

  • repo – repository name at github (without owner part).

Returns

list of repo topics.

Return type

topics (list)

aiohttp_github_helpers.github_get_status(client_session, owner, repo, ref, ignore_context_globs=[])[source]

Get the combined status for a given ref.

Parameters
  • client_session – aiohttp ClientSession.

  • owner – owner of the repository at github.

  • repo – repository name at github (without owner part).

  • ref (string) – the ref can be a SHA, a branch name, or a tag name.

  • ignore_context_globs (list) – list of context to ignore (globs as defined by fnmatch module).

Returns

combined state (failure, success…)

Return type

combined state (string)

aiohttp_github_helpers.github_post_comment(client_session, owner, repo, issue_number, comment_body)[source]

Post a comment to a github issue.

Parameters
  • client_session – aiohttp ClientSession.

  • owner – owner of the repository at github.

  • repo – repository name at github (without owner part).

  • issue_number (int) – the issue number.

  • comment_body (string) – the body of the comment.

Returns

True if the comment was created, False else.

Return type

boolean

aiohttp_github_helpers.github_replace_labels_with(client_session, owner, repo, issue_number, glob_to_remove, new_label, always_add=False)[source]

Replace some labels from a github issue matching with a glob by a new one.

Note: if the new_label to add is already present, it is not removed then added another time.

Parameters
  • client_session – aiohttp ClientSession.

  • owner – owner of the repository at github.

  • repo – repository name at github (without owner part).

  • issue_number (int) – number of the issue at github.

  • glob_to_remove (string) – glob string (as defined in fnmatch module) to select which labels to delete.

  • new_label (string) – new label to add.

  • always_add (boolean) – True if you want to add the new_label even if no label was removed.

Returns

True if new_label was added (or was already here),

False else, None if problems.

Return type

boolean