GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com โ€” GitHub - semcod/weekly: Weekly

BranchesTags
Open more actions menu

Latest commit

 

History

38 Commits
38 Commits

Folders and files

NameName
Last commit message
Last commit date
.github/workflows
.github/workflows
 
 
.taskill
.taskill
 
 
docs
docs
 
 
examples
examples
 
 
project
project
 
 
tests
tests
 
 
weekly
weekly
 
 
.gitignore
.gitignore
 
 
.nojekyll
.nojekyll
 
 
.pre-commit-config.yaml
.pre-commit-config.yaml
 
 
AGENTS.md
AGENTS.md
 
 
CHANGELOG.md
CHANGELOG.md
 
 
CODE_OF_CONDUCT.md
CODE_OF_CONDUCT.md
 
 
CONTRIBUTING.md
CONTRIBUTING.md
 
 
LICENSE
LICENSE
 
 
MANIFEST.in
MANIFEST.in
 
 
Makefile
Makefile
 
 
NOTICE
NOTICE
 
 
README.md
README.md
 
 
SECURITY.md
SECURITY.md
 
 
TODO.md
TODO.md
 
 
Taskfile.yml
Taskfile.yml
 
 
VERSION
VERSION
 
 
app.doql.css
app.doql.css
 
 
app.doql.less
app.doql.less
 
 
goal.yaml
goal.yaml
 
 
index.html
index.html
 
 
local.dev.txt
local.dev.txt
 
 
mkdocs.yml
mkdocs.yml
 
 
planfile.yaml
planfile.yaml
 
 
prefact.yaml
prefact.yaml
 
 
project.functions.toon
project.functions.toon
 
 
project.sh
project.sh
 
 
project.toon-schema.json
project.toon-schema.json
 
 
pyproject.toml
pyproject.toml
 
 
pyqual.yaml
pyqual.yaml
 
 
requirements-dev.txt
requirements-dev.txt
 
 
requirements.txt
requirements.txt
 
 
setup.cfg
setup.cfg
 
 
setup.py
setup.py
 
 
test_change.py
test_change.py
 
 
uv.lock
uv.lock
 
 

Repository files navigation

Weekly - Project Quality Analyzer

AI Cost Tracking

PyPI Version Python License AI Cost Human Time Model

  • ๐Ÿค– LLM usage: $0.9157 (14 commits)
  • ๐Ÿ‘ค Human dev: ~$1557 (15.6h @ $100/h, 30min dedup)

Generated on 2026-07-06 using openrouter/qwen/qwen3-coder-next


PyPI PyPI - Downloads Python Versions License: Apache-2.0 Documentation Code style: black Imports: isort Checked with mypy codecov Build Status CodeQL pre-commit.ci status Ruff CodeFactor OpenSSF Scorecard Dependabot Contributor Covenant Discussions Twitter Follow

Weekly is a comprehensive Python project quality analyzer that helps developers maintain high code quality by automatically detecting issues and suggesting improvements. It analyzes various aspects of your Python projects and generates actionable reports with clear next steps.

โœจ Features

  • ๐Ÿงช Test Coverage Analysis: Check test coverage and test configuration (now parses coverage.xml)
  • ๐Ÿ“š Documentation Check: Verify README, LICENSE, CHANGELOG, and API docs
  • ๐Ÿ”„ CI/CD Integration: Detect CI/CD configuration and best practices
  • ๐Ÿ“ฆ Dependency Analysis: Identify outdated or vulnerable dependencies (now with pip-audit integration and AST parsing)
  • ๐Ÿ› ๏ธ Code Quality: Check for code style, formatting, and common issues
  • ๐Ÿ”’ Security Checks: Detect hardcoded secrets and insecure function usage
  • ๐Ÿ“ฆ Packaging Check: Verify PEP 517/518 compliance and distribution metadata
  • ๐Ÿš€ Release Readiness: Check version consistency and changelog status
  • ๐Ÿ“Š Interactive Reports: Generate detailed reports in multiple formats (JSON, Markdown, Text, HTML)
  • ๐Ÿ” Multi-Repo Scanning: Scan multiple Git repositories with parallel processing
  • ๐Ÿ“… Date-based Filtering: Flexible date parsing for analyzing recent changes

๐Ÿ” Git Repository Scanning

Weekly can scan multiple Git repositories in a directory structure and generate comprehensive reports for each one, plus a summary report.

It also extracts Recent Changes (commits, files/lines changed, commit type breakdown) and writes a per-repo changelog.md into the report directory.

Basic Usage

# Scan all Git repositories in ~/github
weekly scan ~/github

# Only show repositories with changes in the last 7 days (default)
weekly scan ~/github --since "7 days ago"

# Specify a custom output directory
weekly scan ~/github -o ./weekly-reports

# Run with 8 parallel jobs for faster scanning
weekly scan ~/github -j 8

# Generate JSON reports instead of HTML
weekly scan ~/github --format json

Recent Changes + changelog.md

When you run weekly scan ... --since "...", the per-repo reports include a Recent Changes section and a changelog.md file in the repository report directory.

  • If git-cliff is available, Weekly uses it to generate changelog.md.
  • If git-cliff is not available, Weekly falls back to an internal summary (commit + diff stats).

Optional installation (recommended) for richer changelog output:

cargo install git-cliff

Example Output

๐Ÿ” Scanning Git repositories in /Users/username/github...
โœ… Scan complete! Generated reports for 3 repositories.
๐Ÿ“Š Summary report: weekly-reports/summary.html

โœ… org1/repo1: 5 checks
   โœ“ style: Passed
   โœ“ code_quality: Passed
   โœ“ dependencies: 2 outdated packages found
   โœ“ docs: Documentation is 85% complete
   โœ“ tests: 92% test coverage

Command Options

Usage: weekly scan [OPTIONS] [ROOT_DIR]

  Scan multiple Git repositories and generate reports.

  ROOT_DIR: Directory containing Git repositories (default: current directory)

Options:
  -o, --output PATH      Output directory for reports (default: ./weekly-reports)
  -s, --since TEXT        Only include repositories with changes since this date (e.g., "7 days ago", "2023-01-01")
  --recursive / --no-recursive  Scan directories recursively (default: True)
  -j, --jobs INTEGER      Number of parallel jobs (default: 4)
  -f, --format [html|json|markdown]  Output format (default: html)
  --summary-only          Only generate a summary report, not individual reports
  -v, --verbose           Show detailed output
  --help                  Show this message and exit.

Programmatic Usage

from pathlib import Path
from datetime import datetime, timedelta
from weekly import GitScanner

# Create a scanner instance
scanner = GitScanner(
    root_dir=Path.home() / "github",
    output_dir="weekly-reports",
    since=datetime.now() - timedelta(days=7),
    recursive=True,
    jobs=4
)

# Run the scan
results = scanner.scan_all()

# Process results
for result in results:
    print(f"{result.repo.org}/{result.repo.name}:")
    for name, check in result.results.items():
        status = "โœ“" if check.is_ok else "โœ—"
        print(f"  {status} {name}: {check.message}")

๐Ÿš€ Installation

Using pip

pip install weekly

Using Poetry (recommended)

poetry add weekly

For Development

# Clone the repository
git clone https://github.com/wronai/weekly.git
cd weekly

# Install with Poetry
poetry install --with dev

# Install pre-commit hooks
pre-commit install

# Activate the virtual environment
poetry shell

Usage

Basic Usage

Analyze a Python project:

weekly analyze /path/to/your/project

Command Line Options

Usage: weekly analyze [OPTIONS] PROJECT_PATH

  Analyze a Python project and provide quality insights.

  PROJECT_PATH: Path to the project directory (default: current directory)

Options:
  -f, --format [text|json|markdown]  Output format (default: text)
  -o, --output FILE                  Output file (default: stdout)
  --show-suggestions / --no-suggestions
                                      Show improvement suggestions (default: true)
  -v, --verbose                      Show detailed output
  --help                             Show this message and exit.

Examples

  1. Analyze current directory and show results in the terminal:

    weekly analyze .
  2. Generate a Markdown report:

    weekly analyze -f markdown -o report.md /path/to/project
  3. Generate a JSON report for programmatic use:

    weekly analyze -f json -o report.json /path/to/project

Output Example

Text Output

๐Ÿ“Š Weekly Project Analysis Report
================================================================================
Project: example-project
Generated: 2025-06-07 12:34:56

Summary:
--------------------------------------------------------------------------------
โœ… 5 passed
โš ๏ธ  3 warnings
โŒ 1 errors

Detailed Results:
--------------------------------------------------------------------------------
โœ… Project Structure
  Found Python project with proper structure

โœ… Dependencies
  All dependencies are properly specified
  
โš ๏ธ  Test Coverage
  Test coverage is below 80% (currently 65%)
  
  Suggestions:
    โ€ข Add more test cases to improve coverage
    โ€ข Consider using pytest-cov for coverage reporting

โŒ Documentation
  Missing API documentation
  
  Suggestions:
    โ€ข Add docstrings to all public functions and classes
    โ€ข Consider using Sphinx or MkDocs for API documentation

Recommended Actions:
--------------------------------------------------------------------------------
1. Improve Test Coverage
   โ€ข Add unit tests for untested modules
   โ€ข Add integration tests for critical paths
   โ€ข Set up code coverage reporting in CI

2. Enhance Documentation
   โ€ข Add docstrings to all public APIs
   โ€ข Create API documentation using Sphinx or MkDocs
   โ€ข Add examples to the README

Programmatic Usage

from pathlib import Path
from weekly import analyze_project
from weekly.core.report import Report

# Analyze a project
report = analyze_project(Path("/path/to/your/project"))

# Get report as dictionary
report_data = report.to_dict()

# Get markdown report
markdown = report.to_markdown()

# Print summary
print(f"โœ… {report.summary['success']} passed")
print(f"โš ๏ธ  {report.summary['warnings']} warnings")
print(f"โŒ {report.summary['errors']} errors")

# Get suggestions
for suggestion in report.get_suggestions():
    print(f"\n{suggestion['title']}:")
    for item in suggestion['suggestions']:
        print(f"  โ€ข {item}")

### Most Active Files

- `src/main.py`: 12 changes
- `tests/test_main.py`: 8 changes
- `README.md`: 5 changes

### Languages Used

- `.py`: 15 files
- `.md`: 3 files
- `.json`: 2 files

## ๐Ÿ“‹ Next Steps

- [ ] Add tests for recent changes
- [ ] Refactor large files: src/utils.py, src/processor.py...

## ๐Ÿ“œ Recent Commits

- `a1b2c3d` Fix bug in data processing (2023-05-15)
- `f4e5d6a` Add new feature X (2023-05-14)
- `b3c4d5e` Update documentation (2023-05-13)
- `c6d7e8f` Refactor module Y (2023-05-12)
- `d9e0f1a` Initial commit (2023-05-10)

*[View full history in the JSON file]*

Development

Setup

  1. Clone the repository:

    git clone https://github.com/wronai/weekly.git
    cd weekly
  2. Install dependencies (recommended):

    poetry install --with dev

Running Tests

poetry run pytest

Code Style

This project uses:

  • Black for code formatting
  • isort for import sorting
  • flake8 for linting
  • mypy for type checking

Run all checks:

black .
isort .
flake8
mypy .

Contributing

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

License

Licensed under Apache-2.0.

Author

Tom Sapletta

Acknowledgments

  • Built with โค๏ธ by the WronAI team
  • Inspired by various Git analysis tools

Status

Last updated by taskill at 2026-04-25 13:49 UTC

Metric Value
HEAD 8545fd9
Coverage 73.0%
Failing tests โ€”
Commits in last cycle 21

Added a deep code analysis engine with seven supporting modules, introduced a CLI with validation and API hooks, and substantially improved test coverage and documentation. Several refactors and report-style improvements for LLM output were applied, and auto_update_config was disabled to preserve manual test strategy.

About

Weekly

semcod.github.io/weekly/

Topics

code-qualitypythonreportingsemcod

Resources

Readme
Apache-2.0 license

Code of conduct

Code of conduct

Contributing

Contributing

Security policy

Security policy
Activity
Custom properties

Stars

0 stars

Watchers

0 watching

Forks

0 forks
Report repository

Releases

Packages

Contributors

Languages

You are visitor 01402503 โ€” GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800ร—600. No cookies required.