todonotifier

TODO Notifier - Automated TODO tracking and notifications for your codebase

Never forget a TODO again! Automatically parse, track, and get notified about TODO items in your code.

Features

  • Smart TODO Detection - Automatically discovers TODO items across your entire codebase
  • Date-based Tracking - Set completion dates and get notified about overdue items
  • User Assignment - Assign TODOs to specific team members
  • Multiple Report Types - Module-wise, user-wise, and deadline-based summaries
  • Email Notifications - Automated email reports with HTML formatting
  • Flexible Configuration - Extensive customization options for different workflows
  • Multiple Integration Methods - Works with Git repositories, local directories, or single files
  • Export Options - Save reports as HTML files for sharing and archiving

Quick Start

from todonotifier.config import DefaultConfig
from todonotifier.connect import ConnectMethod, Connect
from todonotifier.driver import run as driver_run

# Configure for a Git repository
git_url = "https://github.com/your-username/your-repo.git"
project_name = "your-project"

connect = Connect(
    connect_method=ConnectMethod.GIT_CLONE,
    project_dir_name=project_name,
    url=git_url,
    branch_name="main"
)

config = DefaultConfig(
    save_html_reports=True,
    ignore_todo_case=True
)

# Generate TODO reports
driver_run(connect=connect, config=config)

TODO Format

TODO Notifier supports a flexible format for TODO items:

# Full format with all components
# TODO {2024-12-31} @john_doe Implement user authentication

# Date only
# TODO {2024-12-31} Add error handling

# User only
# TODO @jane_smith Review this logic

# Simple TODO
# TODO Fix this bug

Format Components:

  • TODO - The keyword (case-insensitive option available)
  • {YYYY-MM-DD} - Optional completion date
  • @username - Optional assignee
  • message - Optional description

Architecture

The system consists of several key components:

  • todo_notifier.py - Main parsing logic that extracts TODO items using regex patterns
  • models.py - Core data models (TODO, USER, POSITION) with date parsing and validation
  • config.py - Configuration system with BaseConfig and DefaultConfig classes
  • driver.py - Main orchestration layer that coordinates parsing, summary generation, and notifications
  • connect.py - Repository connection handlers for git repos, local directories, and files
  • summary_generators.py - Pluggable summary generators (by module, expired TODOs, upcoming TODOs)
  • notifier.py - Notification system with email support and extensible base classes

Generated Reports

TODO Notifier generates three types of reports by default:

  1. Module-wise Summary - Lists all TODO items organized by file/module
  2. Expired TODOs by User - Highlights overdue TODO items assigned to each team member
  3. Upcoming Week TODOs - Shows TODO items due within the next 7 days

All reports can be saved as HTML files and/or sent via email notifications.

Installation

pip install todonotifier

For more examples and advanced usage, see the individual module documentation.

  1"""
  2TODO Notifier - Automated TODO tracking and notifications for your codebase
  3
  4Never forget a TODO again! Automatically parse, track, and get notified about TODO items
  5in your code.
  6
  7## Features
  8
  9- **Smart TODO Detection** - Automatically discovers TODO items across your entire
 10  codebase
 11- **Date-based Tracking** - Set completion dates and get notified about overdue items
 12- **User Assignment** - Assign TODOs to specific team members
 13- **Multiple Report Types** - Module-wise, user-wise, and deadline-based summaries
 14- **Email Notifications** - Automated email reports with HTML formatting
 15- **Flexible Configuration** - Extensive customization options for different workflows
 16- **Multiple Integration Methods** - Works with Git repositories, local directories, or
 17  single files
 18- **Export Options** - Save reports as HTML files for sharing and archiving
 19
 20## Quick Start
 21
 22```python
 23from todonotifier.config import DefaultConfig
 24from todonotifier.connect import ConnectMethod, Connect
 25from todonotifier.driver import run as driver_run
 26
 27# Configure for a Git repository
 28git_url = "https://github.com/your-username/your-repo.git"
 29project_name = "your-project"
 30
 31connect = Connect(
 32    connect_method=ConnectMethod.GIT_CLONE,
 33    project_dir_name=project_name,
 34    url=git_url,
 35    branch_name="main"
 36)
 37
 38config = DefaultConfig(
 39    save_html_reports=True,
 40    ignore_todo_case=True
 41)
 42
 43# Generate TODO reports
 44driver_run(connect=connect, config=config)
 45```
 46
 47## TODO Format
 48
 49TODO Notifier supports a flexible format for TODO items:
 50
 51```python
 52# Full format with all components
 53# TODO {2024-12-31} @john_doe Implement user authentication
 54
 55# Date only
 56# TODO {2024-12-31} Add error handling
 57
 58# User only
 59# TODO @jane_smith Review this logic
 60
 61# Simple TODO
 62# TODO Fix this bug
 63```
 64
 65**Format Components:**
 66- `TODO` - The keyword (case-insensitive option available)
 67- `{YYYY-MM-DD}` - Optional completion date
 68- `@username` - Optional assignee
 69- `message` - Optional description
 70
 71## Architecture
 72
 73The system consists of several key components:
 74
 75- **todo_notifier.py** - Main parsing logic that extracts TODO items using regex
 76  patterns
 77- **models.py** - Core data models (`TODO`, `USER`, `POSITION`) with date parsing and
 78  validation
 79- **config.py** - Configuration system with `BaseConfig` and `DefaultConfig` classes
 80- **driver.py** - Main orchestration layer that coordinates parsing, summary generation,
 81  and notifications
 82- **connect.py** - Repository connection handlers for git repos, local directories, and
 83  files
 84- **summary_generators.py** - Pluggable summary generators (by module, expired TODOs,
 85  upcoming TODOs)
 86- **notifier.py** - Notification system with email support and extensible base classes
 87
 88## Generated Reports
 89
 90TODO Notifier generates three types of reports by default:
 91
 921. **Module-wise Summary** - Lists all TODO items organized by file/module
 932. **Expired TODOs by User** - Highlights overdue TODO items assigned to each team
 94   member
 953. **Upcoming Week TODOs** - Shows TODO items due within the next 7 days
 96
 97All reports can be saved as HTML files and/or sent via email notifications.
 98
 99## Installation
100
101```bash
102pip install todonotifier
103```
104
105For more examples and advanced usage, see the individual module documentation.
106"""