Convert Figma logo to code with AI

PyGithub logoPyGithub

Typed interactions with the GitHub API v3

6,901
1,759
6,901
337

Top Related Projects

GitPython is a python library used to interact with Git repositories.

1,606

Python bindings for libgit2

Hi, I'm a library for interacting with GItHub's REST API in a convenient and ergonomic way. I work on Python 3.6+.

Quick Overview

PyGithub is a Python library that provides a comprehensive wrapper for the GitHub API. It allows developers to interact with GitHub programmatically, enabling automation of various GitHub-related tasks such as managing repositories, issues, pull requests, and more.

Pros

  • Extensive coverage of GitHub API endpoints
  • Well-documented with clear examples
  • Active development and community support
  • Type hints for improved code completion and static analysis

Cons

  • Learning curve for new users due to the extensive API coverage
  • Rate limiting can be an issue for large-scale operations
  • Occasional breaking changes between major versions
  • Some advanced GitHub features may lag behind in implementation

Code Examples

  1. Authenticating and getting user information:
from github import Github

g = Github("your-access-token")
user = g.get_user()
print(f"Username: {user.login}")
print(f"Name: {user.name}")
print(f"Public repos: {user.public_repos}")
  1. Creating a new repository:
from github import Github

g = Github("your-access-token")
user = g.get_user()
repo = user.create_repo("new-repo-name", description="A new repository created with PyGithub")
print(f"Repository created: {repo.html_url}")
  1. Listing issues in a repository:
from github import Github

g = Github("your-access-token")
repo = g.get_repo("owner/repo-name")
open_issues = repo.get_issues(state="open")
for issue in open_issues:
    print(f"Issue #{issue.number}: {issue.title}")
  1. Creating a pull request:
from github import Github

g = Github("your-access-token")
repo = g.get_repo("owner/repo-name")
pr = repo.create_pull(title="New feature", body="Implementing a new feature", head="feature-branch", base="main")
print(f"Pull request created: {pr.html_url}")

Getting Started

To get started with PyGithub, follow these steps:

  1. Install PyGithub using pip:

    pip install PyGithub
    
  2. Import the library and create a Github instance:

    from github import Github
    
    # Using an access token
    g = Github("your-access-token")
    
    # Or using username and password (not recommended)
    # g = Github("username", "password")
    
  3. Start using the API:

    # Get the authenticated user
    user = g.get_user()
    
    # List repositories
    for repo in user.get_repos():
        print(repo.name)
    

Remember to handle rate limiting and exceptions appropriately in your code. Refer to the official documentation for more detailed information on available methods and best practices.

Competitor Comparisons

GitPython is a python library used to interact with Git repositories.

Pros of GitPython

  • Works with local Git repositories, allowing direct interaction with Git commands
  • Provides low-level access to Git objects and operations
  • Supports a wide range of Git operations, including branching, merging, and rebasing

Cons of GitPython

  • Limited to local Git operations, not designed for GitHub API interactions
  • May require more in-depth Git knowledge to use effectively
  • Can be slower for large repositories due to local operations

Code Comparison

GitPython:

from git import Repo

repo = Repo("/path/to/repo")
commit = repo.index.commit("Commit message")
origin = repo.remote("origin")
origin.push()

PyGithub:

from github import Github

g = Github("access_token")
repo = g.get_repo("user/repo")
repo.create_file("path/to/file", "Commit message", "file_content")

GitPython focuses on local Git operations, providing direct access to Git commands and objects. It's ideal for working with local repositories and performing complex Git operations. PyGithub, on the other hand, is designed specifically for interacting with the GitHub API, making it easier to perform GitHub-specific tasks like managing issues, pull requests, and repository settings. The choice between the two depends on whether you need local Git functionality or GitHub API integration.

1,606

Python bindings for libgit2

Pros of pygit2

  • Lower-level access to Git operations, allowing for more fine-grained control
  • Better performance for local repository operations
  • Supports both reading and writing Git data

Cons of pygit2

  • Steeper learning curve due to its lower-level nature
  • Primarily focused on local Git operations, less suited for GitHub API interactions
  • Requires libgit2 to be installed separately

Code Comparison

PyGithub example:

from github import Github

g = Github("access_token")
repo = g.get_repo("PyGithub/PyGithub")
contents = repo.get_contents("README.md")
print(contents.decoded_content)

pygit2 example:

import pygit2

repo = pygit2.Repository('/path/to/repo')
commit = repo.revparse_single('HEAD')
tree = commit.tree
blob = repo[tree['README.md'].id]
print(blob.data)

Summary

PyGithub is better suited for interacting with GitHub's API, making it easier to perform operations like managing issues, pull requests, and repository settings. It's more user-friendly for GitHub-specific tasks.

pygit2, on the other hand, excels at local Git operations and provides more low-level control. It's ideal for applications that need to work directly with Git repositories, offering better performance for tasks like cloning, committing, and branching.

Choose PyGithub for GitHub API interactions and pygit2 for local Git operations requiring fine-grained control and performance.

Hi, I'm a library for interacting with GItHub's REST API in a convenient and ergonomic way. I work on Python 3.6+.

Pros of github3.py

  • More comprehensive API coverage, including newer GitHub features
  • Better documentation and examples
  • Stricter adherence to Python best practices and PEP 8 guidelines

Cons of github3.py

  • Slightly steeper learning curve due to more complex architecture
  • Less frequent updates and releases compared to PyGithub

Code Comparison

PyGithub example:

from github import Github

g = Github("access_token")
repo = g.get_repo("PyGithub/PyGithub")
issue = repo.create_issue(title="New issue", body="This is the body")

github3.py example:

import github3

gh = github3.login(token="access_token")
repo = gh.repository("sigmavirus24", "github3.py")
issue = repo.create_issue(title="New issue", body="This is the body")

Both libraries offer similar functionality for basic GitHub operations. PyGithub uses a more straightforward approach, while github3.py provides a slightly more object-oriented interface. The choice between the two often comes down to personal preference and specific project requirements.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

PyGitHub

PyPI CI readthedocs License Slack Open Source Helpers codecov Code style: black

PyGitHub is a Python library to access the GitHub REST API. This library enables you to manage GitHub resources such as repositories, user profiles, and organizations in your Python applications.

Install

pip install PyGithub

Simple Demo

from github import Github

# Authentication is defined via github.Auth
from github import Auth

# using an access token
auth = Auth.Token("access_token")

# First create a Github instance:

# Public Web Github
g = Github(auth=auth)

# Github Enterprise with custom hostname
g = Github(base_url="https://{hostname}/api/v3", auth=auth)

# Then play with your Github objects:
for repo in g.get_user().get_repos():
    print(repo.name)

# To close connections after use
g.close()

Documentation

More information can be found on the PyGitHub documentation site.

Development

Contributing

Long-term discussion and bug reports are maintained via GitHub Issues. Code review is done via GitHub Pull Requests.

For more information read CONTRIBUTING.md.

Maintainership

We're actively seeking maintainers that will triage issues and pull requests and cut releases. If you work on a project that leverages PyGitHub and have a vested interest in keeping the code alive and well, send an email to someone in the MAINTAINERS file.