Skip to main content

WUP (What's Up) - Intelligent file watcher for regression testing in large projects

Project description

WUP (What's Up)

AI Cost Tracking

PyPI Version Python License AI Cost Human Time Model

  • ๐Ÿค– LLM usage: $0.4500 (3 commits)
  • ๐Ÿ‘ค Human dev: ~$200 (2.0h @ $100/h, 30min dedup)

Generated on 2026-04-29 using openrouter/qwen/qwen3-coder-next


PyPI Version Python License

WUP (What's Up) - Intelligent file watcher for regression testing in large projects.

WUP monitors file changes and runs intelligent regression tests using a 3-layer approach:

  1. Detection Layer: File watching with heuristics
  2. Priority Layer: Quick tests of related services (3 endpoints max)
  3. Detail Layer: Full tests with blame reports (only on failure)

Features

  • ๐ŸŽฏ Intelligent Testing: Only tests related services when files change
  • โšก CPU Throttling: Respects system resources with configurable CPU limits
  • ๐Ÿ”„ 3-Layer Architecture: Quick smoke tests first, detailed tests only on failure
  • ๐Ÿ“Š Live Dashboard: Real-time status monitoring with Rich CLI
  • ๐Ÿ” Dependency Mapping: Automatic detection of files โ†’ endpoints โ†’ services
  • ๐Ÿš€ Framework Support: FastAPI, Flask, Django, Express.js, and more
  • ๐Ÿ“ Blame Reports: Detailed regression reports with file/line/commit info

Installation

# Install from source
pip install -e .

# Install with development dependencies
pip install -e ".[dev]"

Quick Start

# 1. Build dependency map (one-time setup)
wup map-deps ./my-project

# 2. Start watching for changes
wup watch ./my-project

# 3. Start with live dashboard
wup watch ./my-project --dashboard

Usage

Build Dependency Map

# Auto-detect framework
wup map-deps ./my-project

# Specify framework
wup map-deps ./my-project --framework fastapi

# Custom output file
wup map-deps ./my-project --output my-deps.json

Watch Project

# Basic watching
wup watch ./my-project

# With custom settings
wup watch ./my-project \
  --cpu-throttle 0.5 \
  --debounce 3 \
  --cooldown 600

# With live dashboard
wup watch ./my-project --dashboard

Check Status

# View dependency map status
wup status

# Custom deps file
wup status --deps my-deps.json

Architecture

3-Layer Testing Approach

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                    DETECTION LAYER                           โ”‚
โ”‚  File watching with watchdog + heuristics                   โ”‚
โ”‚  Skips: .git, __pycache__, node_modules, .venv              โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                       โ”‚ File change
                       โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                   PRIORITY LAYER                             โ”‚
โ”‚  Quick test: 3 endpoints max per service                    โ”‚
โ”‚  Duration: ~1-2 seconds                                      โ”‚
โ”‚  Result: Pass โ†’ Done, Fail โ†’ Escalate                        โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                       โ”‚ Failure
                       โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                    DETAIL LAYER                              โ”‚
โ”‚  Full test: All endpoints with blame report                 โ”‚
โ”‚  Duration: ~3-5 seconds                                      โ”‚
โ”‚  Result: Regression report with file/line/commit            โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Performance Characteristics

Idle:           0.1% CPU, 10MB RAM
File change:    5s test โ†’ 2% CPU spike
Full regression: 15s test โ†’ 15% CPU spike
200+ files/min: 100 req/s โ†’ OK (throttled)

Configuration

CLI Options

Option Default Description
--cpu-throttle 0.8 CPU usage threshold (0.0-1.0)
--debounce 2 Debounce time in seconds
--cooldown 300 Test cooldown in seconds
--dashboard false Enable live dashboard
--deps deps.json Dependency map file path

Environment Variables

# Set default CPU throttle
export WUP_CPU_THROTTLE=0.5

# Set default debounce time
export WUP_DEBOUNCE=3

Integration with Test Frameworks

WUP is designed to work with any test framework. The current implementation includes placeholder test methods that you can customize:

# In wup/core.py, customize these methods:

async def run_quick_test(self, service: str, endpoints: List[str]) -> bool:
    # Integrate with your test framework (pytest, unittest, TestQL, etc.)
    # Example:
    result = subprocess.run([
        "pytest", f"tests/{service}/test_smoke.py",
        "--maxfail=1", "-q"
    ])
    return result.returncode == 0

async def run_detail_test(self, service: str, endpoints: List[str]) -> Dict:
    # Run full test suite with blame reporting
    # Example:
    result = subprocess.run([
        "pytest", f"tests/{service}/",
        "--cov", f"app/{service}",
        "--cov-report=json"
    ])
    return parse_coverage_report("coverage.json")

Project Structure

wup/
โ”œโ”€โ”€ wup/
โ”‚   โ”œโ”€โ”€ __init__.py           # Package exports
โ”‚   โ”œโ”€โ”€ core.py               # WupWatcher implementation
โ”‚   โ”œโ”€โ”€ dependency_mapper.py  # Dependency mapping logic
โ”‚   โ””โ”€โ”€ cli.py                # CLI interface
โ”œโ”€โ”€ tests/
โ”‚   โ””โ”€โ”€ test_wup.py           # Unit tests
โ”œโ”€โ”€ pyproject.toml           # Package configuration
โ””โ”€โ”€ README.md                 # This file

Development

Running Tests

# Run all tests
pytest

# Run with coverage
pytest --cov=wup

# Run specific test
pytest tests/test_wup.py::TestDependencyMapper::test_init

Building for Distribution

# Build wheel and source distribution
python -m build

# Install from dist
pip install dist/wup-0.1.6-py3-none-any.whl

License

Licensed under Apache-2.0.

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

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

wup-0.1.9.tar.gz (18.4 kB view details)

Uploaded Source

Built Distribution

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

wup-0.1.9-py3-none-any.whl (16.4 kB view details)

Uploaded Python 3

File details

Details for the file wup-0.1.9.tar.gz.

File metadata

  • Download URL: wup-0.1.9.tar.gz
  • Upload date:
  • Size: 18.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for wup-0.1.9.tar.gz
Algorithm Hash digest
SHA256 ea20f826f00af331b7c7b0b2117754489850edca13b9e58976f8dd043922042e
MD5 56963dc8f34d8eca67d129169d01f3c4
BLAKE2b-256 3c5095b4fda3df192e8ceb54d4caeb198ecb76a0d4510eec35e605b247688d40

See more details on using hashes here.

File details

Details for the file wup-0.1.9-py3-none-any.whl.

File metadata

  • Download URL: wup-0.1.9-py3-none-any.whl
  • Upload date:
  • Size: 16.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for wup-0.1.9-py3-none-any.whl
Algorithm Hash digest
SHA256 c8dca77ab3c576039a9578136f6a0fdcc7827de8cf002afac56e270c9d4336aa
MD5 a4cc5a66e76bdfa021385865b5d4ba54
BLAKE2b-256 09c6aba1330a05b12ec01d1276c7b9a212b8e7a9d06ea186fa2175d7b2a463ce

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