Universal Git webhook data parser supporting GitHub, GitLab, and other SCM platforms
Project description
Universal Git Data Parser
Universal Git webhook data parser supporting GitHub, GitLab, and other SCM platforms.
Features
- Multi-Platform Support: GitHub, GitLab, Bitbucket webhook parsing
- Data Validation: Comprehensive validation of webhook payloads
- Structured Output: Convert raw webhooks to structured data models
- Error Handling: Robust error handling for malformed data
- Type Safety: Complete type annotations with Pydantic models
- Extensible: Easy to add support for new SCM platforms
- Performance: Optimized parsing for high-throughput scenarios
Installation
# Basic installation
pip install yeonjae-universal-git-data-parser
# With GitHub support
pip install yeonjae-universal-git-data-parser[github]
# With GitLab support
pip install yeonjae-universal-git-data-parser[gitlab]
# With validation features
pip install yeonjae-universal-git-data-parser[validation]
# With all features
pip install yeonjae-universal-git-data-parser[all]
Quick Start
GitHub Webhook Parsing
from yeonjae_universal_git_data_parser import GitDataParserService
# Initialize parser
parser = GitDataParserService()
# Parse GitHub push webhook
headers = {"X-GitHub-Event": "push"}
payload = {
"repository": {"name": "my-repo", "full_name": "user/my-repo"},
"ref": "refs/heads/main",
"commits": [
{
"id": "abc123",
"message": "Fix bug in parser",
"author": {"name": "Developer", "email": "dev@example.com"},
"timestamp": "2024-01-01T12:00:00Z",
"added": ["file1.py"],
"modified": ["file2.py"],
"removed": []
}
]
}
# Parse and validate
validated_event = parser.parse_github_push(headers, payload)
print(f"Repository: {validated_event.repository}")
print(f"Branch: {validated_event.ref}")
print(f"Commits: {len(validated_event.commits)}")
Advanced Usage
from yeonjae_universal_git_data_parser import (
GitDataParserService, ValidatedEvent, CommitInfo
)
parser = GitDataParserService()
# Custom validation options
try:
event = parser.parse_github_push(
headers=headers,
payload=payload,
validate_signatures=True,
strict_mode=True
)
# Access structured data
for commit in event.commits:
print(f"Commit: {commit.id}")
print(f"Author: {commit.author}")
print(f"Message: {commit.message}")
print(f"Files changed: {len(commit.added + commit.modified + commit.removed)}")
except InvalidPayloadError as e:
print(f"Invalid payload: {e}")
except UnsupportedPlatformError as e:
print(f"Platform not supported: {e}")
Supported Platforms
| Platform | Push Events | Pull Request | Issues | Tags |
|---|---|---|---|---|
| GitHub | ✅ Full | ✅ Full | ⏳ Planned | ⏳ Planned |
| GitLab | ✅ Basic | ⏳ Planned | ⏳ Planned | ⏳ Planned |
| Bitbucket | ⏳ Planned | ⏳ Planned | ⏳ Planned | ⏳ Planned |
Data Models
The parser outputs structured Pydantic models:
ValidatedEvent: Main event containerCommitInfo: Individual commit informationDiffData: File change detailsAuthor: Commit author informationFileChange: File modification details
Error Handling
Comprehensive exception hierarchy:
GitDataParserError: Base exceptionInvalidPayloadError: Malformed webhook dataUnsupportedPlatformError: Platform not supportedDiffParsingError: Error parsing file changesTimestampParsingError: Invalid timestamp format
License
MIT License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file yeonjae_universal_git_data_parser-1.0.5.tar.gz.
File metadata
- Download URL: yeonjae_universal_git_data_parser-1.0.5.tar.gz
- Upload date:
- Size: 12.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8635a1799e23ef8ae73f75d3d17c7dd61f62dbcc46be9648a5a6758ef1b9057e
|
|
| MD5 |
18398cfae79492ad26442baca4bdd505
|
|
| BLAKE2b-256 |
0bab074d4258eb923b3109795dec16b2ca22cc5f2d873be7e55304780382d42e
|
File details
Details for the file yeonjae_universal_git_data_parser-1.0.5-py3-none-any.whl.
File metadata
- Download URL: yeonjae_universal_git_data_parser-1.0.5-py3-none-any.whl
- Upload date:
- Size: 10.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
906048696a68da29d7a1a4f26c19175d6241d0fca6b10256d1991c2a2132d914
|
|
| MD5 |
b605943ff7f878080d2af3ea12df9ff2
|
|
| BLAKE2b-256 |
5693fb302e394ed60b86bc0d5d1b080aa9d1c9693f9d1567cbaded874bbba39c
|