linkguard


Namelinkguard JSON
Version 1.0.1 PyPI version JSON
download
home_pageNone
SummaryCLI tool for detecting broken links and localhost URLs in project files
upload_time2025-10-17 20:36:26
maintainerNone
docs_urlNone
authorNone
requires_python>=3.10
licenseNone
keywords link-checker broken-links url-validator markdown documentation ci-cd async cli
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # 🛡️ LinkGuard

> **Fast, async link validation for developers. Catch broken links before your users do.**

[![Python Version](https://img.shields.io/badge/python-3.10%2B-blue.svg)](https://www.python.org/downloads/)
[![Version](https://img.shields.io/badge/version-1.0.1-green.svg)](https://github.com/anubhabx/link-guard/releases)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Tests](https://img.shields.io/badge/tests-91%20passing-brightgreen.svg)](tests/)
[![Test Coverage](https://img.shields.io/badge/coverage-71%25-yellow.svg)](htmlcov/index.html)
[![Status](https://img.shields.io/badge/status-production-success.svg)](RELEASE_NOTES.md)
[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](CONTRIBUTING.md)

LinkGuard is a fast, async Python CLI tool that scans your project files for broken links and development URLs. Catch 404s before your users do, and ensure localhost references don't leak into production.

---

## ✨ Features

- 🚀 **Blazing Fast** - Async validation checks hundreds of links in seconds
- 🎯 **Environment-Aware** - Detect localhost/dev URLs that shouldn't reach production
- 🎨 **Beautiful CLI** - Rich progress bars and color-coded results
- 📊 **Multiple Exports** - JSON, CSV, and Markdown reports for automation
- 🔍 **Smart Extraction** - Supports Markdown, HTML, JSON, JS/TS, and plain text
- ⚙️ **Zero Config** - Works out of the box with sensible defaults
- 🛠️ **Configurable** - `.linkguardignore` and `linkguard.config.json` support
- ✅ **Production Ready** - 91 tests, 71% coverage, comprehensive documentation

---

## 📦 Installation

```bash
# Install from PyPI (coming soon)
pip install linkguard

# Or install from source
git clone https://github.com/anubhabx/link-guard.git
cd link-guard

# Create virtual environment
python -m venv venv

# Activate virtual environment
# Windows (PowerShell)
.\venv\Scripts\Activate.ps1
# Linux/Mac
source venv/bin/activate

# Install in development mode (includes all dependencies)
pip install -e ".[dev]"
```

> **💡 Tip**: After installation with `pip install -e ".[dev]"`, you can use `linkguard` directly instead of `python -m linkguard.cli`

---

## 🚀 Quick Start

```bash
# Scan current directory
linkguard

# Scan specific directory
linkguard ./docs

# Production mode (flags localhost URLs as errors)
linkguard --mode prod

# Export results to JSON
linkguard --export report.json

# Custom timeout
linkguard --timeout 15
```

**Example Output:**

```
🔍 Scanning directory: ./docs
Mode: dev | Timeout: 10s

✓ Found 42 files to scan
✓ Extracted 156 URLs

🌐 Checking links...
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 156/156

╭─ Scan Summary ─────────────╮
│ Files scanned       42     │
│ URLs found          156    │
│ Working links       152    │
│ Broken links        4      │
│ Rule violations     0      │
╰────────────────────────────╯
```

---

## 📖 Documentation

| Document | Description |
|----------|-------------|
| **[QUICKSTART.md](QUICKSTART.MD)** | Installation, basic usage, and common examples |
| **[FEATURES.md](FEATURES.MD)** | Complete feature list and capabilities |
| **[CONTRIBUTING.md](CONTRIBUTING.md)** | Development setup, testing, and contribution guidelines |
| **[RELEASE_NOTES.md](RELEASE_NOTES.md)** | v1.0 release details and highlights |
| **[CHANGELOG.md](CHANGELOG.MD)** | Full version history and changes |

---

## ⚙️ Configuration

### Command-Line Options

```bash
linkguard [DIRECTORY] [OPTIONS]

Options:
  --mode, -m          dev|prod        Scanning mode (default: dev)
  --timeout, -t       INTEGER         Request timeout in seconds (default: 10)
  --export, -e        PATH            Export to JSON/CSV/Markdown
  --concurrency, -c   INTEGER         Max concurrent requests (default: 50)
  --ignore, -i        TEXT            Comma-separated ignore patterns
  --verbose, -v                       Detailed output
  --help                              Show help
```

### Configuration File

Create `linkguard.config.json` in your project root:

```json
{
  "mode": "prod",
  "timeout": 15,
  "concurrency": 100,
  "ignore_patterns": ["node_modules/**", "*.min.js"],
  "exclude_urls": ["https://example.local"],
  "strict_ssl": false
}
```

See [linkguard.config.json.example](linkguard.config.json.example) for all options.

### Ignore File

Create `.linkguardignore` (gitignore-style syntax):

```
# Ignore directories
node_modules/
dist/**
build/

# Ignore file patterns
*.draft.md
temp-*.json

# Ignore domains
*.internal.company.com
example.local
```

---

## 🏗️ Supported File Types

| Type | Extensions | What's Extracted |
|------|-----------|------------------|
| Markdown | `.md`, `.markdown` | `[text](url)` and bare URLs |
| HTML | `.html`, `.htm` | `href`, `src` attributes |
| JSON | `.json` | URL strings in values |
| JavaScript/TypeScript | `.js`, `.jsx`, `.ts`, `.tsx` | Bare URL patterns |
| Plain Text | `.txt` | HTTP/HTTPS URLs |

**Auto-excluded**: `.git`, `.venv`, `node_modules`, `__pycache__`, `dist`, `build`

---

## 🔧 CI/CD Integration

### GitHub Actions

```yaml
name: Link Validation

on: [push, pull_request]

jobs:
  check-links:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-python@v4
        with:
          python-version: '3.10'
      - name: Install LinkGuard
        run: pip install linkguard
      - name: Check links
        run: linkguard --mode prod --export report.json
      - name: Upload report
        if: failure()
        uses: actions/upload-artifact@v3
        with:
          name: link-report
          path: report.json
```

**Exit Codes:**
- `0` - All links valid
- `1` - Broken links or rule violations found
- `2` - Configuration error

---

## 🎯 Use Cases

✅ **Documentation Sites** - Ensure all links work before publishing  
✅ **Open Source Projects** - Validate README and wiki links  
✅ **Marketing Sites** - Check landing pages and blog posts  
✅ **CI/CD Pipelines** - Automated link checking on every commit  
✅ **Pre-Production Checks** - Catch localhost URLs before deployment  
✅ **Content Migration** - Validate links after CMS migrations

---

## 🤝 Contributing

We welcome contributions! See [CONTRIBUTING.md](CONTRIBUTING.md) for:
- Development setup and workflow
- Testing guidelines (91 tests, 71% coverage)
- Code style requirements (PEP 8, Black, type hints)
- Pull request process

**Quick Start:**

```bash
git clone https://github.com/anubhabx/link-guard.git
cd link-guard
python -m venv venv
source venv/bin/activate  # or .\venv\Scripts\Activate.ps1 on Windows
pip install -e ".[dev]"
pytest tests/ -v
```

---

## 🗺️ Roadmap

### ✅ v1.0 (Current - October 2025)
- Production-ready release
- Comprehensive documentation
- 91 passing tests with 71% coverage
- GitHub Actions CI/CD
- Published to PyPI

### 🚧 v1.1.0 (Planned)
- Retry logic with exponential backoff
- Custom HTTP headers support
- Relative URL resolution
- Enhanced performance optimizations

### 🔮 v2.0.0 (Future)
- Anchor link validation (`#section`)
- Browser automation (Playwright) for bot detection bypass
- Web dashboard for analytics
- Webhook notifications (Slack/Discord)

See [FEATURES.MD](FEATURES.MD) for complete roadmap.

---

## 📊 Performance

**Benchmarks** (typical projects):
- ✅ 100 links validated in ~2 seconds
- ✅ 1,000 links validated in ~5 seconds
- ✅ 10,000 files scanned in <30 seconds

**Architecture:**
- Async I/O with `aiohttp` for concurrent requests
- Semaphore-based concurrency control (default: 50)
- Memory-efficient streaming file reads
- HEAD request with smart GET fallback

---

## 🐛 Troubleshooting

**Valid links marked as broken?**
- Some servers block automated requests → Increase timeout: `--timeout 20`

**"Connection timeout" errors?**
- Network latency or slow servers → Try: `--timeout 30`

**Ignore specific files/URLs?**
- Use `.linkguardignore` or add to `linkguard.config.json`

**Command not found?**
- Ensure installed: `pip install -e ".[dev]"`
- Or use: `python -m linkguard.cli`

**SSL certificate errors?**
- LinkGuard skips SSL verification by default
- Coming soon: `--strict-ssl` flag

See [QUICKSTART.MD](QUICKSTART.MD) for more troubleshooting tips.

---

## 📄 License

MIT License - see [LICENSE](LICENSE) file for details.

---

## 🙏 Acknowledgments

Built with these amazing tools:
- [aiohttp](https://docs.aiohttp.org/) - Async HTTP client
- [typer](https://typer.tiangolo.com/) - Modern CLI framework
- [rich](https://rich.readthedocs.io/) - Beautiful terminal formatting
- [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/) - HTML parsing

Special thanks to all [contributors](https://github.com/anubhabx/link-guard/graphs/contributors)! 🎉

---

## 📞 Support

- 🐛 **Bug Reports**: [GitHub Issues](https://github.com/anubhabx/link-guard/issues)
- 💬 **Discussions**: [GitHub Discussions](https://github.com/anubhabx/link-guard/discussions)
- 💡 **Feature Requests**: [Open an Issue](https://github.com/anubhabx/link-guard/issues/new)
- 📧 **Contact**: anubhabxdev@gmail.com

---

<div align="center">

**Made with ❤️ for the open-source community**

If you find LinkGuard useful, please give it a ⭐!

[Documentation](QUICKSTART.MD) • [Features](FEATURES.MD) • [Contributing](CONTRIBUTING.md) • [Changelog](CHANGELOG.MD)

</div>

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "linkguard",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.10",
    "maintainer_email": "Anubhab Debnath <anubhabxdev@gmail.com>",
    "keywords": "link-checker, broken-links, url-validator, markdown, documentation, ci-cd, async, cli",
    "author": null,
    "author_email": "Anubhab Debnath <anubhabxdev@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/e9/92/cbf55185bbb855e18182ead6742aa3ea4662a72908fd5b5d7c1ed80d01dd/linkguard-1.0.1.tar.gz",
    "platform": null,
    "description": "# \ud83d\udee1\ufe0f LinkGuard\r\n\r\n> **Fast, async link validation for developers. Catch broken links before your users do.**\r\n\r\n[![Python Version](https://img.shields.io/badge/python-3.10%2B-blue.svg)](https://www.python.org/downloads/)\r\n[![Version](https://img.shields.io/badge/version-1.0.1-green.svg)](https://github.com/anubhabx/link-guard/releases)\r\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\r\n[![Tests](https://img.shields.io/badge/tests-91%20passing-brightgreen.svg)](tests/)\r\n[![Test Coverage](https://img.shields.io/badge/coverage-71%25-yellow.svg)](htmlcov/index.html)\r\n[![Status](https://img.shields.io/badge/status-production-success.svg)](RELEASE_NOTES.md)\r\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](CONTRIBUTING.md)\r\n\r\nLinkGuard is a fast, async Python CLI tool that scans your project files for broken links and development URLs. Catch 404s before your users do, and ensure localhost references don't leak into production.\r\n\r\n---\r\n\r\n## \u2728 Features\r\n\r\n- \ud83d\ude80 **Blazing Fast** - Async validation checks hundreds of links in seconds\r\n- \ud83c\udfaf **Environment-Aware** - Detect localhost/dev URLs that shouldn't reach production\r\n- \ud83c\udfa8 **Beautiful CLI** - Rich progress bars and color-coded results\r\n- \ud83d\udcca **Multiple Exports** - JSON, CSV, and Markdown reports for automation\r\n- \ud83d\udd0d **Smart Extraction** - Supports Markdown, HTML, JSON, JS/TS, and plain text\r\n- \u2699\ufe0f **Zero Config** - Works out of the box with sensible defaults\r\n- \ud83d\udee0\ufe0f **Configurable** - `.linkguardignore` and `linkguard.config.json` support\r\n- \u2705 **Production Ready** - 91 tests, 71% coverage, comprehensive documentation\r\n\r\n---\r\n\r\n## \ud83d\udce6 Installation\r\n\r\n```bash\r\n# Install from PyPI (coming soon)\r\npip install linkguard\r\n\r\n# Or install from source\r\ngit clone https://github.com/anubhabx/link-guard.git\r\ncd link-guard\r\n\r\n# Create virtual environment\r\npython -m venv venv\r\n\r\n# Activate virtual environment\r\n# Windows (PowerShell)\r\n.\\venv\\Scripts\\Activate.ps1\r\n# Linux/Mac\r\nsource venv/bin/activate\r\n\r\n# Install in development mode (includes all dependencies)\r\npip install -e \".[dev]\"\r\n```\r\n\r\n> **\ud83d\udca1 Tip**: After installation with `pip install -e \".[dev]\"`, you can use `linkguard` directly instead of `python -m linkguard.cli`\r\n\r\n---\r\n\r\n## \ud83d\ude80 Quick Start\r\n\r\n```bash\r\n# Scan current directory\r\nlinkguard\r\n\r\n# Scan specific directory\r\nlinkguard ./docs\r\n\r\n# Production mode (flags localhost URLs as errors)\r\nlinkguard --mode prod\r\n\r\n# Export results to JSON\r\nlinkguard --export report.json\r\n\r\n# Custom timeout\r\nlinkguard --timeout 15\r\n```\r\n\r\n**Example Output:**\r\n\r\n```\r\n\ud83d\udd0d Scanning directory: ./docs\r\nMode: dev | Timeout: 10s\r\n\r\n\u2713 Found 42 files to scan\r\n\u2713 Extracted 156 URLs\r\n\r\n\ud83c\udf10 Checking links...\r\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501 100% 156/156\r\n\r\n\u256d\u2500 Scan Summary \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\r\n\u2502 Files scanned       42     \u2502\r\n\u2502 URLs found          156    \u2502\r\n\u2502 Working links       152    \u2502\r\n\u2502 Broken links        4      \u2502\r\n\u2502 Rule violations     0      \u2502\r\n\u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\r\n```\r\n\r\n---\r\n\r\n## \ud83d\udcd6 Documentation\r\n\r\n| Document | Description |\r\n|----------|-------------|\r\n| **[QUICKSTART.md](QUICKSTART.MD)** | Installation, basic usage, and common examples |\r\n| **[FEATURES.md](FEATURES.MD)** | Complete feature list and capabilities |\r\n| **[CONTRIBUTING.md](CONTRIBUTING.md)** | Development setup, testing, and contribution guidelines |\r\n| **[RELEASE_NOTES.md](RELEASE_NOTES.md)** | v1.0 release details and highlights |\r\n| **[CHANGELOG.md](CHANGELOG.MD)** | Full version history and changes |\r\n\r\n---\r\n\r\n## \u2699\ufe0f Configuration\r\n\r\n### Command-Line Options\r\n\r\n```bash\r\nlinkguard [DIRECTORY] [OPTIONS]\r\n\r\nOptions:\r\n  --mode, -m          dev|prod        Scanning mode (default: dev)\r\n  --timeout, -t       INTEGER         Request timeout in seconds (default: 10)\r\n  --export, -e        PATH            Export to JSON/CSV/Markdown\r\n  --concurrency, -c   INTEGER         Max concurrent requests (default: 50)\r\n  --ignore, -i        TEXT            Comma-separated ignore patterns\r\n  --verbose, -v                       Detailed output\r\n  --help                              Show help\r\n```\r\n\r\n### Configuration File\r\n\r\nCreate `linkguard.config.json` in your project root:\r\n\r\n```json\r\n{\r\n  \"mode\": \"prod\",\r\n  \"timeout\": 15,\r\n  \"concurrency\": 100,\r\n  \"ignore_patterns\": [\"node_modules/**\", \"*.min.js\"],\r\n  \"exclude_urls\": [\"https://example.local\"],\r\n  \"strict_ssl\": false\r\n}\r\n```\r\n\r\nSee [linkguard.config.json.example](linkguard.config.json.example) for all options.\r\n\r\n### Ignore File\r\n\r\nCreate `.linkguardignore` (gitignore-style syntax):\r\n\r\n```\r\n# Ignore directories\r\nnode_modules/\r\ndist/**\r\nbuild/\r\n\r\n# Ignore file patterns\r\n*.draft.md\r\ntemp-*.json\r\n\r\n# Ignore domains\r\n*.internal.company.com\r\nexample.local\r\n```\r\n\r\n---\r\n\r\n## \ud83c\udfd7\ufe0f Supported File Types\r\n\r\n| Type | Extensions | What's Extracted |\r\n|------|-----------|------------------|\r\n| Markdown | `.md`, `.markdown` | `[text](url)` and bare URLs |\r\n| HTML | `.html`, `.htm` | `href`, `src` attributes |\r\n| JSON | `.json` | URL strings in values |\r\n| JavaScript/TypeScript | `.js`, `.jsx`, `.ts`, `.tsx` | Bare URL patterns |\r\n| Plain Text | `.txt` | HTTP/HTTPS URLs |\r\n\r\n**Auto-excluded**: `.git`, `.venv`, `node_modules`, `__pycache__`, `dist`, `build`\r\n\r\n---\r\n\r\n## \ud83d\udd27 CI/CD Integration\r\n\r\n### GitHub Actions\r\n\r\n```yaml\r\nname: Link Validation\r\n\r\non: [push, pull_request]\r\n\r\njobs:\r\n  check-links:\r\n    runs-on: ubuntu-latest\r\n    steps:\r\n      - uses: actions/checkout@v3\r\n      - uses: actions/setup-python@v4\r\n        with:\r\n          python-version: '3.10'\r\n      - name: Install LinkGuard\r\n        run: pip install linkguard\r\n      - name: Check links\r\n        run: linkguard --mode prod --export report.json\r\n      - name: Upload report\r\n        if: failure()\r\n        uses: actions/upload-artifact@v3\r\n        with:\r\n          name: link-report\r\n          path: report.json\r\n```\r\n\r\n**Exit Codes:**\r\n- `0` - All links valid\r\n- `1` - Broken links or rule violations found\r\n- `2` - Configuration error\r\n\r\n---\r\n\r\n## \ud83c\udfaf Use Cases\r\n\r\n\u2705 **Documentation Sites** - Ensure all links work before publishing  \r\n\u2705 **Open Source Projects** - Validate README and wiki links  \r\n\u2705 **Marketing Sites** - Check landing pages and blog posts  \r\n\u2705 **CI/CD Pipelines** - Automated link checking on every commit  \r\n\u2705 **Pre-Production Checks** - Catch localhost URLs before deployment  \r\n\u2705 **Content Migration** - Validate links after CMS migrations\r\n\r\n---\r\n\r\n## \ud83e\udd1d Contributing\r\n\r\nWe welcome contributions! See [CONTRIBUTING.md](CONTRIBUTING.md) for:\r\n- Development setup and workflow\r\n- Testing guidelines (91 tests, 71% coverage)\r\n- Code style requirements (PEP 8, Black, type hints)\r\n- Pull request process\r\n\r\n**Quick Start:**\r\n\r\n```bash\r\ngit clone https://github.com/anubhabx/link-guard.git\r\ncd link-guard\r\npython -m venv venv\r\nsource venv/bin/activate  # or .\\venv\\Scripts\\Activate.ps1 on Windows\r\npip install -e \".[dev]\"\r\npytest tests/ -v\r\n```\r\n\r\n---\r\n\r\n## \ud83d\uddfa\ufe0f Roadmap\r\n\r\n### \u2705 v1.0 (Current - October 2025)\r\n- Production-ready release\r\n- Comprehensive documentation\r\n- 91 passing tests with 71% coverage\r\n- GitHub Actions CI/CD\r\n- Published to PyPI\r\n\r\n### \ud83d\udea7 v1.1.0 (Planned)\r\n- Retry logic with exponential backoff\r\n- Custom HTTP headers support\r\n- Relative URL resolution\r\n- Enhanced performance optimizations\r\n\r\n### \ud83d\udd2e v2.0.0 (Future)\r\n- Anchor link validation (`#section`)\r\n- Browser automation (Playwright) for bot detection bypass\r\n- Web dashboard for analytics\r\n- Webhook notifications (Slack/Discord)\r\n\r\nSee [FEATURES.MD](FEATURES.MD) for complete roadmap.\r\n\r\n---\r\n\r\n## \ud83d\udcca Performance\r\n\r\n**Benchmarks** (typical projects):\r\n- \u2705 100 links validated in ~2 seconds\r\n- \u2705 1,000 links validated in ~5 seconds\r\n- \u2705 10,000 files scanned in <30 seconds\r\n\r\n**Architecture:**\r\n- Async I/O with `aiohttp` for concurrent requests\r\n- Semaphore-based concurrency control (default: 50)\r\n- Memory-efficient streaming file reads\r\n- HEAD request with smart GET fallback\r\n\r\n---\r\n\r\n## \ud83d\udc1b Troubleshooting\r\n\r\n**Valid links marked as broken?**\r\n- Some servers block automated requests \u2192 Increase timeout: `--timeout 20`\r\n\r\n**\"Connection timeout\" errors?**\r\n- Network latency or slow servers \u2192 Try: `--timeout 30`\r\n\r\n**Ignore specific files/URLs?**\r\n- Use `.linkguardignore` or add to `linkguard.config.json`\r\n\r\n**Command not found?**\r\n- Ensure installed: `pip install -e \".[dev]\"`\r\n- Or use: `python -m linkguard.cli`\r\n\r\n**SSL certificate errors?**\r\n- LinkGuard skips SSL verification by default\r\n- Coming soon: `--strict-ssl` flag\r\n\r\nSee [QUICKSTART.MD](QUICKSTART.MD) for more troubleshooting tips.\r\n\r\n---\r\n\r\n## \ud83d\udcc4 License\r\n\r\nMIT License - see [LICENSE](LICENSE) file for details.\r\n\r\n---\r\n\r\n## \ud83d\ude4f Acknowledgments\r\n\r\nBuilt with these amazing tools:\r\n- [aiohttp](https://docs.aiohttp.org/) - Async HTTP client\r\n- [typer](https://typer.tiangolo.com/) - Modern CLI framework\r\n- [rich](https://rich.readthedocs.io/) - Beautiful terminal formatting\r\n- [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/) - HTML parsing\r\n\r\nSpecial thanks to all [contributors](https://github.com/anubhabx/link-guard/graphs/contributors)! \ud83c\udf89\r\n\r\n---\r\n\r\n## \ud83d\udcde Support\r\n\r\n- \ud83d\udc1b **Bug Reports**: [GitHub Issues](https://github.com/anubhabx/link-guard/issues)\r\n- \ud83d\udcac **Discussions**: [GitHub Discussions](https://github.com/anubhabx/link-guard/discussions)\r\n- \ud83d\udca1 **Feature Requests**: [Open an Issue](https://github.com/anubhabx/link-guard/issues/new)\r\n- \ud83d\udce7 **Contact**: anubhabxdev@gmail.com\r\n\r\n---\r\n\r\n<div align=\"center\">\r\n\r\n**Made with \u2764\ufe0f for the open-source community**\r\n\r\nIf you find LinkGuard useful, please give it a \u2b50!\r\n\r\n[Documentation](QUICKSTART.MD) \u2022 [Features](FEATURES.MD) \u2022 [Contributing](CONTRIBUTING.md) \u2022 [Changelog](CHANGELOG.MD)\r\n\r\n</div>\r\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "CLI tool for detecting broken links and localhost URLs in project files",
    "version": "1.0.1",
    "project_urls": {
        "Changelog": "https://github.com/anubhabx/link-guard/releases",
        "Documentation": "https://github.com/anubhabx/link-guard#readme",
        "Homepage": "https://github.com/anubhabx/link-guard",
        "Issues": "https://github.com/anubhabx/link-guard/issues",
        "Repository": "https://github.com/anubhabx/link-guard"
    },
    "split_keywords": [
        "link-checker",
        " broken-links",
        " url-validator",
        " markdown",
        " documentation",
        " ci-cd",
        " async",
        " cli"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "e75df4094ec5f9e077d267a2c78c82ce4e5786cd47b16441a8ed39f0eb3448fb",
                "md5": "2a142c24408d756fb93a38ac6fbf0c4c",
                "sha256": "7c9f3b8a93a1e9c85ce5ffde8960c3278eb877366dbb2fad30d561662384e476"
            },
            "downloads": -1,
            "filename": "linkguard-1.0.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "2a142c24408d756fb93a38ac6fbf0c4c",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.10",
            "size": 30243,
            "upload_time": "2025-10-17T20:36:24",
            "upload_time_iso_8601": "2025-10-17T20:36:24.720800Z",
            "url": "https://files.pythonhosted.org/packages/e7/5d/f4094ec5f9e077d267a2c78c82ce4e5786cd47b16441a8ed39f0eb3448fb/linkguard-1.0.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "e992cbf55185bbb855e18182ead6742aa3ea4662a72908fd5b5d7c1ed80d01dd",
                "md5": "680ea5c071e8748247aff5989d53fc4f",
                "sha256": "82eaa59eb62189f930234c2190b1e15866fd8b311db3fe605f6d28ef38143917"
            },
            "downloads": -1,
            "filename": "linkguard-1.0.1.tar.gz",
            "has_sig": false,
            "md5_digest": "680ea5c071e8748247aff5989d53fc4f",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.10",
            "size": 44055,
            "upload_time": "2025-10-17T20:36:26",
            "upload_time_iso_8601": "2025-10-17T20:36:26.353877Z",
            "url": "https://files.pythonhosted.org/packages/e9/92/cbf55185bbb855e18182ead6742aa3ea4662a72908fd5b5d7c1ed80d01dd/linkguard-1.0.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-10-17 20:36:26",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "anubhabx",
    "github_project": "link-guard",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "linkguard"
}
        
Elapsed time: 2.62091s