Skip to main content

A beautiful git changelog generator with semantic search capabilities

Project description

Itera

A beautiful git changelog generator with semantic search capabilities. Itera helps you generate detailed, well-formatted changelogs from your git repository and provides powerful semantic search functionality to find relevant commits.

Features

  • 🎨 Beautiful, rich-formatted changelogs
  • 🔍 Semantic search through commits using OpenAI embeddings
  • 📊 Detailed commit summaries with tags and change types
  • 📅 Date range filtering for changelogs
  • 🔎 Specific commit lookup
  • 📈 Commit history visualization
  • 🤖 AI-powered commit analysis

Installation

pip install itera

Usage

Basic Usage

from itera import Itera

# Initialize with default settings (uses OPENAI_KEY from environment)
changelog = Itera()

# Or initialize with explicit API key
changelog = Itera(openai_api_key="your-api-key")

# Generate changelog for last 30 commits
changes = changelog.generate_changelog(num_commits=30)

# Get latest changes
latest = changelog.get_latest_changes(num_commits=1)

CLI Commands and Options

Itera provides several CLI commands for different use cases:

Show All Commits

itera all [OPTIONS]

Options:
  -l, --limit INTEGER  Number of commits to show (default: 10)

Example:

# Show last 20 commits
itera all --limit 20

# Show last 10 commits (default)
itera all

Show Specific Commit

itera show [OPTIONS]

Options:
  -h, --hash TEXT  Specific commit hash to show changelog for (required)

Example:

# Show changelog for specific commit
itera show --hash abc123

# Using short option
itera show -h abc123

Show Commits in Date Range

itera range [OPTIONS]

Options:
  -s, --start TEXT  Start date (YYYY-MM-DD) [required]
  -e, --end TEXT    End date (YYYY-MM-DD) [required]

Example:

# Show commits between dates
itera range --start 2024-01-01 --end 2024-03-01

# Using short options
itera range -s 2024-01-01 -e 2024-03-01

Search Commits

itera search [OPTIONS]

Options:
  -q, --query TEXT    Search query to find relevant commits [required]
  -l, --limit INTEGER Number of similar commits to show (default: 5)

Example:

# Search for commits about authentication changes
itera search --query "authentication system changes"

# Search with custom limit
itera search -q "UI improvements" -l 10

Python API Parameters

Itera Class

Itera(
    repo_path: str = '.',              # Path to git repository
    storage_dir: Optional[str] = None, # Custom storage directory for changelogs
    openai_api_key: Optional[str] = None # OpenAI API key
)

Methods

# Generate changelog
generate_changelog(
    num_commits: int = 30,  # Number of commits to process
    use_cache: bool = True  # Whether to use cached results
) -> List[Dict[str, Any]]

# Get latest changes
get_latest_changes(
    num_commits: int = 1  # Number of most recent commits to process
) -> List[Dict[str, Any]]

Output Format

Each commit in the changelog contains:

{
    'commit_hash': str,        # First 8 characters of commit hash
    'author': str,            # Commit author
    'date': str,             # ISO format date (YYYY-MM-DD HH:MM:SS)
    'human_readable_date': str, # Friendly date format
    'message': str,          # Commit message
    'summary': {
        'summary': str,      # Detailed bullet-point summary
        'blurb': str,       # Brief overview
        'tags': List[str],  # Changed elements/files
        'changes_type': List[str]  # Types of changes (added/modified/deleted)
    }
}

Environment Variables

  • OPENAI_KEY: Your OpenAI API key (optional, can be passed directly to the Itera class)

Contributing

Pull requests are welcome! For major changes, please open an issue first to discuss what you would like to change.

License

MIT

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

itera-0.2.0.tar.gz (10.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

itera-0.2.0-py3-none-any.whl (11.4 kB view details)

Uploaded Python 3

File details

Details for the file itera-0.2.0.tar.gz.

File metadata

  • Download URL: itera-0.2.0.tar.gz
  • Upload date:
  • Size: 10.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.1

File hashes

Hashes for itera-0.2.0.tar.gz
Algorithm Hash digest
SHA256 8a6988319d55080db0165ea947ab0a2358a1e9ac42f2f5f93ac5474458a25253
MD5 527e8de79369ad7726aeb760fa6651f0
BLAKE2b-256 e6c6a4308ae8599e267219166a8df47d66710e7f4ec0bec67755bbf897dcf000

See more details on using hashes here.

File details

Details for the file itera-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: itera-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 11.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.1

File hashes

Hashes for itera-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 160fda83ff8d2bd8242ce13a97da685015d797950301199d7ed777c0c6cffc21
MD5 963dce871831105926b3df3c15199f8f
BLAKE2b-256 4f3b4ad9627fdef599c4c277d14dfddb018e7a669df96e7cb643ec6567c8fac5

See more details on using hashes here.

Supported by

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