Skip to main content

A Python package for interacting with the GitHub API.

Project description

ghmate

A comprehensive Python package for interacting with the GitHub API. This package simplifies GitHub API calls by providing a set of high-level commands encapsulated in easy-to-use classes.

Prerequisites

Prerequisites

  • Python 3.8 or higher (specify other supported versions if applicable)
  • pip for installing packages
  • A GitHub account and Personal Access Token (required for making authenticated API requests)

Installation

To install ghmate, ensure you have Python 3.8 or higher and pip installed. Run the following command:

pip install ghmate

Setup

Before using ghmate, set up your environment with your GitHub personal access token:

export GITHUB_TOKEN='your_personal_access_token'

(Optional) Use a .env file with python-dotenv to load environment variables. Create a .env file in your project directory and add your GitHub Personal Access Token, repository owner, and repository name.

GITHUB_TOKEN=your_personal_access_token_here
OWNER=repository_owner_here
REPO=repository_name_here

Load environment variables using python-dotenv.

import os
from dotenv import load_dotenv

# Load environment variables
load_dotenv()

# Get environment variables
token = os.getenv('GITHUB_TOKEN')
owner = os.getenv('OWNER')
repo = os.getenv('REPO')

Usage

Initialize the GitHubClient with your repository owner, name, and token. Replace owner_name, repository_name, and your_token with your actual GitHub information.

To start using ghmate, initialize the GitHubClient:

from ghmate.github_client import GitHubClient

github_client = GitHubClient(
    owner="owner_name",
    repo="repository_name",
    token="your_token"
)

Use CoreCommands for basic operations and ActionsCommands for GitHub Actions-related tasks. Here are some examples:

Core Commands

CoreCommands provides essential GitHub operations:

from ghmate.core_commands import CoreCommands

core_commands = CoreCommands(
    token="your_token",
    owner="owner_name",
    repo="repository_name"
)

# Authenticate and get user information
user_info = core_commands.auth()

# Browse topics
topics = core_commands.browse()

# Create an issue
issue = core_commands.issue(action='create', title='Issue Title', body='Issue description')

Actions Commands

ActionsCommands focuses on GitHub Actions-related tasks:

from ghmate.actions_commands import ActionsCommands

actions_commands = ActionsCommands(owner="owner_name", repo="repository_name", token="your_token")

# List artifacts
artifacts = actions_commands.list_artifacts()

# Cache management
cache_list = actions_commands.cache(action='list')
cache_restore = actions_commands.cache(action='restore', key='cache_key')

Handle exceptions that may occur during API calls.

Tests

Unit Test

Run tests to ensure the package is working as expected.

python -m unittest discover -s tests/unit
# OR
python3 -m unittest discover -s tests/unit

Mock external API calls when writing unit tests. Integration tests will make actual API calls, so ensure you have the correct setup. When writing unit tests, use the unittest.mock module to mock external API calls.

For example:

from unittest import TestCase
from unittest.mock import patch
from ghmate.actions_commands import ActionsCommands

class TestActionsCommandsUnit(TestCase):
    @patch.object(ActionsCommands, '_make_request')
    def test_list_artifacts(self, mock_request):
        # Your test code here
        pass

Integration Tests

For integration tests, ensure your .env file contains the necessary environment variables and run:

python -m unittest discover -s tests/integration

Examples

Examples The examples directory contains a sample project setup and usage examples.

example/
├── .env                 # Storing environment variables
├── using_dotenv.py     # Example script utilizing the ghmate package
└── requirements.txt     # Required packages

Contributing

Contributions are welcome! Please read our contributing guidelines to get started.

License

ghmate is licensed under the MIT License - see the LICENSE file for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ghmate-1.0.0.tar.gz (9.3 kB view details)

Uploaded Source

Built Distribution

ghmate-1.0.0-py3-none-any.whl (10.4 kB view details)

Uploaded Python 3

File details

Details for the file ghmate-1.0.0.tar.gz.

File metadata

  • Download URL: ghmate-1.0.0.tar.gz
  • Upload date:
  • Size: 9.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.6

File hashes

Hashes for ghmate-1.0.0.tar.gz
Algorithm Hash digest
SHA256 c063aba0e3e0a46236aaaca087f1bc8c4b1ed60597148687094e169838fa9d3b
MD5 d5b9fde14b3ea993185aecfcb78790bf
BLAKE2b-256 36f986999ea2a051f1a026f7aad2b1c7a5a038e5345a2a30cb7410d210907857

See more details on using hashes here.

File details

Details for the file ghmate-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: ghmate-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 10.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.6

File hashes

Hashes for ghmate-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 173d0afd19efda9a9d8118978be9a5b54c3945a18d8a361a0c9c1c04727f245e
MD5 8bac95055b0653ed4094a99ae1c9352b
BLAKE2b-256 84a6bb793f9b1a750025a1433b80792943442b68ac7c7b4932baa6004a568cce

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page