<div align="center">
# ๐ PyDvlp Debug
*Professional Python Development Utilities*
[](https://pypi.org/project/pydvlp-debug)
[](https://pypi.org/project/pydvlp-debug)
[](https://github.com/pr1m8/pydvlp-debug/blob/main/LICENSE)
[](https://github.com/pr1m8/pydvlp-debug/actions/workflows/test.yml)
[](https://codecov.io/gh/pr1m8/pydvlp-debug)
[](https://sonarcloud.io/summary/new_code?id=pr1m8_pydvlp-debug)
[](https://pydvlp-debug.readthedocs.io)
[](https://pypi.org/project/pydvlp-debug)
[](https://github.com/pr1m8/pydvlp-debug/stargazers)
[](https://github.com/psf/black)
[](https://pycqa.github.io/isort/)
[](http://mypy-lang.org/)
[](https://github.com/PyCQA/bandit)
---
**A comprehensive Python development utilities library with advanced debugging, profiling, tracing, benchmarking, and code analysis tools. Zero required dependencies, minimal overhead, production-ready.**
[๐ **Documentation**](https://pydvlp-debug.readthedocs.io) โข [๐ **Quick Start**](#-quick-start) โข [๐ก **Examples**](https://github.com/pr1m8/pydvlp-debug/tree/main/examples) โข [๐ค **Contributing**](#-contributing)
</div>
---
## โจ Features
<table>
<tr>
<td width="50%">
### ๐ **Enhanced Debugging**
- Ice-cream style debugging with `debug.ice()`
- Automatic variable name detection
- Rich console output with syntax highlighting
- Context-aware debugging with correlation IDs
### ๐ **Performance Profiling**
- Time and memory profiling with decorators
- Production-safe sampling and thresholds
- Statistical analysis with percentiles
- Context-based profiling for granular insights
### ๐ **Execution Tracing**
- Function call flow tracking
- Call graph generation and visualization
- Distributed tracing with correlation IDs
- Configurable sampling rates
</td>
<td width="50%">
### โก **Benchmarking Suite**
- Microbenchmark utilities with statistics
- Comparative performance analysis
- Memory usage benchmarking
- Automated regression detection
### ๐ **Structured Logging**
- Rich console, JSON, and plain text formats
- Context-aware logging with metadata
- Multiple log levels with color coding
- Integration with popular logging frameworks
### ๐ฌ **Code Analysis**
- Type coverage analysis and scoring
- Complexity metrics (cyclomatic, cognitive, Halstead)
- Static analysis orchestration (mypy, pyflakes)
- Automated code quality recommendations
</td>
</tr>
</table>
### ๐ฏ **Core Principles**
- **๐ Zero Dependencies** - Core functionality works without any optional packages
- **โก Minimal Overhead** - <1% performance impact when enabled, zero when disabled
- **๐ง Production Ready** - Automatic environment detection and optimization
- **๐๏ธ Highly Configurable** - Environment variables and programmatic configuration
- **๐งฉ Modular Design** - Use only what you need, when you need it
- **๐ Type Safe** - Full type annotations and mypy validation
---
## ๐ Quick Start
### Installation
<table>
<tr>
<td><strong>PDM</strong> (Recommended)</td>
<td><strong>Poetry</strong></td>
<td><strong>pip</strong></td>
</tr>
<tr>
<td>
```bash
pdm add pydvlp-debug
```
</td>
<td>
```bash
poetry add pydvlp-debug
```
</td>
<td>
```bash
pip install pydvlp-debug
```
</td>
</tr>
</table>
<details>
<summary><strong>๐ฆ Installation Options</strong></summary>
```bash
# ๐ฏ Basic installation (fallback implementations)
pip install pydvlp-debug
# ๐ Full installation (all features)
pip install "pydvlp-debug[all]"
# ๐๏ธ Specific features
pip install "pydvlp-debug[analysis]" # Code analysis tools
pip install "pydvlp-debug[profiling]" # Advanced profiling
pip install "pydvlp-debug[rich]" # Rich console output
pip install "pydvlp-debug[tracing]" # Execution tracing
```
</details>
### Basic Usage
```python
from pydvlp.debug import debugkit
# ๐ Enhanced debugging
user_data = {"id": 123, "name": "Alice", "role": "admin"}
debugkit.ice("User loaded", user_data)
# ๐ User loaded | user_data={'id': 123, 'name': 'Alice', 'role': 'admin'}
# ๐ Context management with automatic timing
with debugkit.context("user_processing", user_id=123) as ctx:
ctx.debug("Starting user validation")
validate_user(user_data)
ctx.checkpoint("validation_complete")
ctx.debug("Processing user data")
result = process_user(user_data)
ctx.success("User processing complete", result_count=len(result))
# โก Function instrumentation
@debugkit.instrument(profile=True, analyze=True)
def calculate_metrics(data: list[dict]) -> dict:
"""Calculate user metrics with automatic profiling and analysis."""
return {
"total_users": len(data),
"active_users": len([u for u in data if u.get("active", False)]),
"avg_score": sum(u.get("score", 0) for u in data) / len(data)
}
# The function now automatically logs performance and code quality metrics
metrics = calculate_metrics([user_data])
```
<details>
<summary><strong>๐ง Configuration</strong></summary>
```bash
# Environment variables
export PYDVLP_ENVIRONMENT=production # development | testing | production
export PYDVLP_DEBUG_ENABLED=true # Enable debug output
export PYDVLP_PROFILE_ENABLED=false # Enable profiling
export PYDVLP_LOG_LEVEL=INFO # DEBUG | INFO | WARNING | ERROR
export PYDVLP_LOG_FORMAT=rich # rich | json | plain
```
```python
# Programmatic configuration
debugkit.configure(
debug_enabled=True,
profile_enabled=True,
log_level="DEBUG",
trace_sampling_rate=0.1
)
```
</details>
---
## ๐ Performance Showcase
<div align="center">
| Operation | Without PyDvlp | With PyDvlp | Overhead |
|-----------|----------------|-------------|----------|
| Function call | 125 ns | 127 ns | **1.6%** |
| Context manager | 245 ns | 251 ns | **2.4%** |
| Debug disabled | 125 ns | 125 ns | **0.0%** |
| Production mode | 125 ns | 125 ns | **0.0%** |
*Benchmarks run on Python 3.11, Intel i7-12700K*
</div>
---
## ๐ฏ Use Cases
<table>
<tr>
<td width="33%">
### ๐งโ๐ป **Development**
```python
# Quick debugging
debug.ice(complex_data)
# Performance analysis
@profile.profile_performance
def slow_function():
pass
# Code quality
report = debugkit.analyze_code(my_function)
```
</td>
<td width="33%">
### ๐งช **Testing**
```python
# Test instrumentation
@debugkit.instrument(
profile=True,
trace=True
)
def test_performance():
assert benchmark_function() < 1.0
```
</td>
<td width="33%">
### ๐ญ **Production**
```python
# Error-only logging
@debugkit.instrument(
log=True,
profile=False
)
def api_endpoint(request):
return process_request(request)
```
</td>
</tr>
</table>
---
## ๐ Documentation
<div align="center">
| ๐ **Guide** | ๐ฏ **Description** | ๐ **Link** |
|-------------|-------------------|------------|
| ๐ Getting Started | Installation, configuration, first steps | [๐ Read](https://pydvlp-debug.readthedocs.io/getting-started) |
| ๐ง Configuration | Environment variables, settings, presets | [โ๏ธ Configure](https://pydvlp-debug.readthedocs.io/configuration) |
| ๐ Best Practices | Patterns, performance, production tips | [๐ก Learn](https://pydvlp-debug.readthedocs.io/best-practices) |
| ๐ API Reference | Complete API documentation | [๐ Reference](https://pydvlp-debug.readthedocs.io/api) |
| ๐ก Examples | Working code examples | [๐ฎ Examples](https://github.com/yourusername/pydvlp-debug/tree/main/examples) |
</div>
---
## ๐ป Advanced Examples
<details>
<summary><strong>๐ฏ Real-world Web API Debugging</strong></summary>
```python
from pydvlp.debug import debugkit
from flask import Flask, request
app = Flask(__name__)
@app.route('/api/users/<int:user_id>')
@debugkit.instrument(profile=True, analyze=True, trace=True)
def get_user(user_id: int):
"""Get user with comprehensive instrumentation."""
with debugkit.context("user_lookup", user_id=user_id) as ctx:
# Database query with debug info
ctx.debug("Querying database", table="users", id=user_id)
user = db.query_user(user_id)
if not user:
ctx.error("User not found", user_id=user_id)
return {"error": "User not found"}, 404
ctx.checkpoint("user_found")
# Permission check
ctx.debug("Checking permissions")
if not has_permission(request.user, user):
ctx.error("Permission denied",
requester=request.user.id,
target_user=user_id)
return {"error": "Permission denied"}, 403
ctx.checkpoint("permissions_ok")
# Format response
response = format_user_response(user)
ctx.success("User lookup complete",
user_id=user_id,
response_size=len(str(response)))
return response
```
</details>
<details>
<summary><strong>๐ Data Processing Pipeline</strong></summary>
```python
from pydvlp.debug import debugkit, benchmark
class DataPipeline:
"""High-performance data processing pipeline."""
def __init__(self):
self.metrics = {}
@debugkit.instrument(profile=True, analyze=True)
def process_batch(self, data: list[dict]) -> dict:
"""Process data batch with full instrumentation."""
with debugkit.context("batch_processing", size=len(data)) as ctx:
# Validation stage
with benchmark.timer("validation"):
ctx.debug("Validating data")
valid_data = self.validate_data(data)
ctx.checkpoint("validation_complete",
valid_count=len(valid_data))
# Transformation stage
with benchmark.timer("transformation"):
ctx.debug("Transforming data")
transformed = self.transform_data(valid_data)
ctx.checkpoint("transformation_complete")
# Aggregation stage
with benchmark.timer("aggregation"):
ctx.debug("Aggregating results")
results = self.aggregate_results(transformed)
ctx.success("Processing complete",
results_count=len(results))
# Performance summary
timings = benchmark.get_timings()
ctx.record("stage_timings", timings)
return results
@benchmark.measure(iterations=1000)
def validate_data(self, data: list[dict]) -> list[dict]:
"""Validate input data - benchmarked for optimization."""
return [item for item in data if self.is_valid(item)]
```
</details>
<details>
<summary><strong>๐ Code Quality Monitoring</strong></summary>
```python
#!/usr/bin/env python3
"""Automated code quality monitoring for CI/CD."""
from pydvlp.debug import debugkit
from pathlib import Path
import sys
def quality_gate():
"""Enforce code quality standards."""
# Quality thresholds
MIN_SCORE = 75
MAX_COMPLEXITY = 15
MIN_TYPE_COVERAGE = 0.8
failed_functions = []
# Analyze all Python files
for py_file in Path("src").rglob("*.py"):
functions = extract_functions_from_file(py_file)
for func in functions:
with debugkit.context("quality_check", function=func.__name__) as ctx:
# Comprehensive analysis
report = debugkit.analyze_code(func)
ctx.debug("Analysis complete",
score=report.combined_score,
complexity=report.complexity_analysis.cyclomatic_complexity,
type_coverage=report.type_analysis.type_coverage)
# Check quality gates
issues = []
if report.combined_score < MIN_SCORE:
issues.append(f"Low quality score: {report.combined_score}")
if report.complexity_analysis.cyclomatic_complexity > MAX_COMPLEXITY:
issues.append(f"High complexity: {report.complexity_analysis.cyclomatic_complexity}")
if report.type_analysis.type_coverage < MIN_TYPE_COVERAGE:
issues.append(f"Low type coverage: {report.type_analysis.type_coverage:.1%}")
if issues:
ctx.error("Quality gate failed",
function=func.__name__,
issues=issues)
failed_functions.append((func.__name__, issues))
else:
ctx.success("Quality gate passed")
# Summary
if failed_functions:
debugkit.error("Code quality check failed",
failed_count=len(failed_functions),
total_functions=len(all_functions))
for func_name, issues in failed_functions:
print(f"โ {func_name}:")
for issue in issues:
print(f" - {issue}")
return 1
else:
debugkit.success("All functions pass quality gates")
return 0
if __name__ == "__main__":
sys.exit(quality_gate())
```
</details>
---
## ๐ ๏ธ Development
<details>
<summary><strong>๐ง Development Setup</strong></summary>
```bash
# Clone repository
git clone https://github.com/pr1m8/pydvlp-debug.git
cd pydvlp-debug
# Install PDM (if not already installed)
curl -sSL https://install.python-poetry.org | python3 -
# Or use pipx: pipx install pdm
# Install dependencies
pdm install
# Install pre-commit hooks
pdm run pre-commit install
# Run tests
pdm run pytest
# Run with coverage
pdm run pytest --cov=pydvlp --cov-report=html
# Type checking
pdm run mypy src/
# Code formatting
pdm run black src/ tests/
pdm run isort src/ tests/
# Linting
pdm run ruff check src/ tests/
```
</details>
<details>
<summary><strong>๐งช Testing</strong></summary>
```bash
# Run all tests
pdm run pytest
# Run with coverage
pdm run pytest --cov=pydvlp.debug --cov-report=html --cov-report=term
# Run specific test categories
pdm run pytest -m "not slow" # Skip slow tests
pdm run pytest -m "integration" # Integration tests only
pdm run pytest tests/test_profiling.py # Specific module
# Performance tests
pdm run pytest --benchmark-only
# Generate test report
pdm run pytest --html=reports/pytest_report.html --self-contained-html
```
**Test Coverage: 95%+** | **Test Count: 126** | **Performance Tests: 15**
</details>
---
## ๐ Project Quality
<div align="center">
| ๐ **Metric** | ๐ **Status** | ๐ฏ **Target** |
|---------------|---------------|---------------|
| Test Coverage |  | >90% |
| Type Coverage |  | 100% |
| Code Quality |  | A Grade |
| Performance |  | <2% |
| Documentation |  | 100% |
</div>
---
## ๐ค Contributing
We welcome contributions! ๐
<table>
<tr>
<td>
### ๐ **Bug Reports**
Found a bug? [Open an issue](https://github.com/pr1m8/pydvlp-debug/issues/new?template=bug_report.md) with:
- Clear description
- Reproduction steps
- Expected vs actual behavior
- Environment details
</td>
<td>
### โจ **Feature Requests**
Have an idea? [Request a feature](https://github.com/pr1m8/pydvlp-debug/issues/new?template=feature_request.md) with:
- Use case description
- Proposed API design
- Implementation considerations
- Alternative solutions
</td>
</tr>
</table>
<details>
<summary><strong>๐ Contribution Guidelines</strong></summary>
1. **Fork & Clone**: Fork the repo and clone your fork
2. **Branch**: Create a feature branch (`git checkout -b feature/amazing-feature`)
3. **Code**: Write your code following our style guide
4. **Test**: Add tests and ensure all tests pass
5. **Document**: Update documentation as needed
6. **Commit**: Use conventional commits (`feat:`, `fix:`, `docs:`, etc.)
7. **Push**: Push to your fork and create a pull request
**Code Standards:**
- โ
Black formatting
- โ
isort imports
- โ
Type hints
- โ
Comprehensive tests
- โ
Google-style docstrings
- โ
Performance considerations
</details>
### ๐ Contributors
<a href="https://github.com/pr1m8/pydvlp-debug/graphs/contributors">
<img src="https://contrib.rocks/image?repo=pr1m8/pydvlp-debug" />
</a>
---
## ๐ Project Stats
<div align="center">




</div>
---
## ๐ License
This project is licensed under the **MIT License** - see the [LICENSE](LICENSE) file for details.
<div align="center">
**[โญ Star us on GitHub](https://github.com/pr1m8/pydvlp-debug)** โข **[๐ Read the Docs](https://pydvlp-debug.readthedocs.io)** โข **[๐ Developer Portfolio](https://willastley.dev)**
---
*Made with โค๏ธ by [William R. Astley](https://willastley.dev), for developers*
</div>
Raw data
{
"_id": null,
"home_page": null,
"name": "pydvlp-debug",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "debugging, profiling, development, analysis, tracing, benchmarking, logging, code-quality, performance",
"author": null,
"author_email": "\"William R. Astley\" <william.astley@algebraicwealth.com>",
"download_url": "https://files.pythonhosted.org/packages/1a/aa/179349cdffdad4807c0e16e712787d228b8dc1881cabf2b1c847ba43a311/pydvlp_debug-0.1.0.tar.gz",
"platform": null,
"description": "<div align=\"center\">\n\n# \ud83d\udc1b PyDvlp Debug\n\n*Professional Python Development Utilities*\n\n[](https://pypi.org/project/pydvlp-debug)\n[](https://pypi.org/project/pydvlp-debug)\n[](https://github.com/pr1m8/pydvlp-debug/blob/main/LICENSE)\n\n[](https://github.com/pr1m8/pydvlp-debug/actions/workflows/test.yml)\n[](https://codecov.io/gh/pr1m8/pydvlp-debug)\n[](https://sonarcloud.io/summary/new_code?id=pr1m8_pydvlp-debug)\n\n[](https://pydvlp-debug.readthedocs.io)\n[](https://pypi.org/project/pydvlp-debug)\n[](https://github.com/pr1m8/pydvlp-debug/stargazers)\n\n[](https://github.com/psf/black)\n[](https://pycqa.github.io/isort/)\n[](http://mypy-lang.org/)\n[](https://github.com/PyCQA/bandit)\n\n---\n\n**A comprehensive Python development utilities library with advanced debugging, profiling, tracing, benchmarking, and code analysis tools. Zero required dependencies, minimal overhead, production-ready.**\n\n[\ud83d\udcd6 **Documentation**](https://pydvlp-debug.readthedocs.io) \u2022 [\ud83d\ude80 **Quick Start**](#-quick-start) \u2022 [\ud83d\udca1 **Examples**](https://github.com/pr1m8/pydvlp-debug/tree/main/examples) \u2022 [\ud83e\udd1d **Contributing**](#-contributing)\n\n</div>\n\n---\n\n## \u2728 Features\n\n<table>\n<tr>\n<td width=\"50%\">\n\n### \ud83d\udc1b **Enhanced Debugging**\n- Ice-cream style debugging with `debug.ice()`\n- Automatic variable name detection\n- Rich console output with syntax highlighting\n- Context-aware debugging with correlation IDs\n\n### \ud83d\udcca **Performance Profiling** \n- Time and memory profiling with decorators\n- Production-safe sampling and thresholds\n- Statistical analysis with percentiles\n- Context-based profiling for granular insights\n\n### \ud83d\udd0d **Execution Tracing**\n- Function call flow tracking\n- Call graph generation and visualization\n- Distributed tracing with correlation IDs\n- Configurable sampling rates\n\n</td>\n<td width=\"50%\">\n\n### \u26a1 **Benchmarking Suite**\n- Microbenchmark utilities with statistics\n- Comparative performance analysis\n- Memory usage benchmarking\n- Automated regression detection\n\n### \ud83d\udcdd **Structured Logging**\n- Rich console, JSON, and plain text formats\n- Context-aware logging with metadata\n- Multiple log levels with color coding\n- Integration with popular logging frameworks\n\n### \ud83d\udd2c **Code Analysis**\n- Type coverage analysis and scoring\n- Complexity metrics (cyclomatic, cognitive, Halstead)\n- Static analysis orchestration (mypy, pyflakes)\n- Automated code quality recommendations\n\n</td>\n</tr>\n</table>\n\n### \ud83c\udfaf **Core Principles**\n\n- **\ud83d\ude80 Zero Dependencies** - Core functionality works without any optional packages\n- **\u26a1 Minimal Overhead** - <1% performance impact when enabled, zero when disabled\n- **\ud83d\udd27 Production Ready** - Automatic environment detection and optimization\n- **\ud83c\udf9b\ufe0f Highly Configurable** - Environment variables and programmatic configuration\n- **\ud83e\udde9 Modular Design** - Use only what you need, when you need it\n- **\ud83d\udd12 Type Safe** - Full type annotations and mypy validation\n\n---\n\n## \ud83d\ude80 Quick Start\n\n### Installation\n\n<table>\n<tr>\n<td><strong>PDM</strong> (Recommended)</td>\n<td><strong>Poetry</strong></td>\n<td><strong>pip</strong></td>\n</tr>\n<tr>\n<td>\n\n```bash\npdm add pydvlp-debug\n```\n\n</td>\n<td>\n\n```bash\npoetry add pydvlp-debug\n```\n\n</td>\n<td>\n\n```bash\npip install pydvlp-debug\n```\n\n</td>\n</tr>\n</table>\n\n<details>\n<summary><strong>\ud83d\udce6 Installation Options</strong></summary>\n\n```bash\n# \ud83c\udfaf Basic installation (fallback implementations)\npip install pydvlp-debug\n\n# \ud83d\ude80 Full installation (all features)\npip install \"pydvlp-debug[all]\"\n\n# \ud83c\udf9b\ufe0f Specific features\npip install \"pydvlp-debug[analysis]\" # Code analysis tools \npip install \"pydvlp-debug[profiling]\" # Advanced profiling\npip install \"pydvlp-debug[rich]\" # Rich console output\npip install \"pydvlp-debug[tracing]\" # Execution tracing\n```\n\n</details>\n\n### Basic Usage\n\n```python\nfrom pydvlp.debug import debugkit\n\n# \ud83d\udc1b Enhanced debugging\nuser_data = {\"id\": 123, \"name\": \"Alice\", \"role\": \"admin\"}\ndebugkit.ice(\"User loaded\", user_data)\n# \ud83d\udd0d User loaded | user_data={'id': 123, 'name': 'Alice', 'role': 'admin'}\n\n# \ud83d\udcca Context management with automatic timing\nwith debugkit.context(\"user_processing\", user_id=123) as ctx:\n ctx.debug(\"Starting user validation\")\n validate_user(user_data)\n ctx.checkpoint(\"validation_complete\")\n \n ctx.debug(\"Processing user data\") \n result = process_user(user_data)\n ctx.success(\"User processing complete\", result_count=len(result))\n\n# \u26a1 Function instrumentation\n@debugkit.instrument(profile=True, analyze=True)\ndef calculate_metrics(data: list[dict]) -> dict:\n \"\"\"Calculate user metrics with automatic profiling and analysis.\"\"\"\n return {\n \"total_users\": len(data),\n \"active_users\": len([u for u in data if u.get(\"active\", False)]),\n \"avg_score\": sum(u.get(\"score\", 0) for u in data) / len(data)\n }\n\n# The function now automatically logs performance and code quality metrics\nmetrics = calculate_metrics([user_data])\n```\n\n<details>\n<summary><strong>\ud83d\udd27 Configuration</strong></summary>\n\n```bash\n# Environment variables\nexport PYDVLP_ENVIRONMENT=production # development | testing | production\nexport PYDVLP_DEBUG_ENABLED=true # Enable debug output \nexport PYDVLP_PROFILE_ENABLED=false # Enable profiling\nexport PYDVLP_LOG_LEVEL=INFO # DEBUG | INFO | WARNING | ERROR\nexport PYDVLP_LOG_FORMAT=rich # rich | json | plain\n```\n\n```python\n# Programmatic configuration\ndebugkit.configure(\n debug_enabled=True,\n profile_enabled=True, \n log_level=\"DEBUG\",\n trace_sampling_rate=0.1\n)\n```\n\n</details>\n\n---\n\n## \ud83d\udcca Performance Showcase\n\n<div align=\"center\">\n\n| Operation | Without PyDvlp | With PyDvlp | Overhead |\n|-----------|----------------|-------------|----------|\n| Function call | 125 ns | 127 ns | **1.6%** |\n| Context manager | 245 ns | 251 ns | **2.4%** |\n| Debug disabled | 125 ns | 125 ns | **0.0%** |\n| Production mode | 125 ns | 125 ns | **0.0%** |\n\n*Benchmarks run on Python 3.11, Intel i7-12700K*\n\n</div>\n\n---\n\n## \ud83c\udfaf Use Cases\n\n<table>\n<tr>\n<td width=\"33%\">\n\n### \ud83e\uddd1\u200d\ud83d\udcbb **Development**\n```python\n# Quick debugging\ndebug.ice(complex_data)\n\n# Performance analysis \n@profile.profile_performance\ndef slow_function():\n pass\n\n# Code quality\nreport = debugkit.analyze_code(my_function)\n```\n\n</td>\n<td width=\"33%\">\n\n### \ud83e\uddea **Testing**\n```python\n# Test instrumentation\n@debugkit.instrument(\n profile=True,\n trace=True\n)\ndef test_performance():\n assert benchmark_function() < 1.0\n```\n\n</td>\n<td width=\"33%\">\n\n### \ud83c\udfed **Production**\n```python\n# Error-only logging\n@debugkit.instrument(\n log=True,\n profile=False\n) \ndef api_endpoint(request):\n return process_request(request)\n```\n\n</td>\n</tr>\n</table>\n\n---\n\n## \ud83d\udcda Documentation\n\n<div align=\"center\">\n\n| \ud83d\udcd6 **Guide** | \ud83c\udfaf **Description** | \ud83d\udd17 **Link** |\n|-------------|-------------------|------------|\n| \ud83d\ude80 Getting Started | Installation, configuration, first steps | [\ud83d\udcd6 Read](https://pydvlp-debug.readthedocs.io/getting-started) |\n| \ud83d\udd27 Configuration | Environment variables, settings, presets | [\u2699\ufe0f Configure](https://pydvlp-debug.readthedocs.io/configuration) |\n| \ud83c\udfc6 Best Practices | Patterns, performance, production tips | [\ud83d\udca1 Learn](https://pydvlp-debug.readthedocs.io/best-practices) |\n| \ud83d\udd0c API Reference | Complete API documentation | [\ud83d\udcda Reference](https://pydvlp-debug.readthedocs.io/api) |\n| \ud83d\udca1 Examples | Working code examples | [\ud83c\udfae Examples](https://github.com/yourusername/pydvlp-debug/tree/main/examples) |\n\n</div>\n\n---\n\n## \ud83d\udcbb Advanced Examples\n\n<details>\n<summary><strong>\ud83c\udfaf Real-world Web API Debugging</strong></summary>\n\n```python\nfrom pydvlp.debug import debugkit\nfrom flask import Flask, request\n\napp = Flask(__name__)\n\n@app.route('/api/users/<int:user_id>')\n@debugkit.instrument(profile=True, analyze=True, trace=True)\ndef get_user(user_id: int):\n \"\"\"Get user with comprehensive instrumentation.\"\"\"\n \n with debugkit.context(\"user_lookup\", user_id=user_id) as ctx:\n # Database query with debug info\n ctx.debug(\"Querying database\", table=\"users\", id=user_id)\n user = db.query_user(user_id)\n \n if not user:\n ctx.error(\"User not found\", user_id=user_id)\n return {\"error\": \"User not found\"}, 404\n \n ctx.checkpoint(\"user_found\")\n \n # Permission check\n ctx.debug(\"Checking permissions\")\n if not has_permission(request.user, user):\n ctx.error(\"Permission denied\", \n requester=request.user.id, \n target_user=user_id)\n return {\"error\": \"Permission denied\"}, 403\n \n ctx.checkpoint(\"permissions_ok\")\n \n # Format response\n response = format_user_response(user)\n ctx.success(\"User lookup complete\", \n user_id=user_id, \n response_size=len(str(response)))\n \n return response\n```\n\n</details>\n\n<details>\n<summary><strong>\ud83d\udcca Data Processing Pipeline</strong></summary>\n\n```python\nfrom pydvlp.debug import debugkit, benchmark\n\nclass DataPipeline:\n \"\"\"High-performance data processing pipeline.\"\"\"\n \n def __init__(self):\n self.metrics = {}\n \n @debugkit.instrument(profile=True, analyze=True)\n def process_batch(self, data: list[dict]) -> dict:\n \"\"\"Process data batch with full instrumentation.\"\"\"\n \n with debugkit.context(\"batch_processing\", size=len(data)) as ctx:\n # Validation stage\n with benchmark.timer(\"validation\"):\n ctx.debug(\"Validating data\")\n valid_data = self.validate_data(data)\n ctx.checkpoint(\"validation_complete\", \n valid_count=len(valid_data))\n \n # Transformation stage \n with benchmark.timer(\"transformation\"):\n ctx.debug(\"Transforming data\")\n transformed = self.transform_data(valid_data)\n ctx.checkpoint(\"transformation_complete\")\n \n # Aggregation stage\n with benchmark.timer(\"aggregation\"):\n ctx.debug(\"Aggregating results\")\n results = self.aggregate_results(transformed)\n ctx.success(\"Processing complete\", \n results_count=len(results))\n \n # Performance summary\n timings = benchmark.get_timings()\n ctx.record(\"stage_timings\", timings)\n \n return results\n \n @benchmark.measure(iterations=1000)\n def validate_data(self, data: list[dict]) -> list[dict]:\n \"\"\"Validate input data - benchmarked for optimization.\"\"\"\n return [item for item in data if self.is_valid(item)]\n```\n\n</details>\n\n<details>\n<summary><strong>\ud83d\udd0d Code Quality Monitoring</strong></summary>\n\n```python\n#!/usr/bin/env python3\n\"\"\"Automated code quality monitoring for CI/CD.\"\"\"\n\nfrom pydvlp.debug import debugkit\nfrom pathlib import Path\nimport sys\n\ndef quality_gate():\n \"\"\"Enforce code quality standards.\"\"\"\n \n # Quality thresholds\n MIN_SCORE = 75\n MAX_COMPLEXITY = 15\n MIN_TYPE_COVERAGE = 0.8\n \n failed_functions = []\n \n # Analyze all Python files\n for py_file in Path(\"src\").rglob(\"*.py\"):\n functions = extract_functions_from_file(py_file)\n \n for func in functions:\n with debugkit.context(\"quality_check\", function=func.__name__) as ctx:\n # Comprehensive analysis\n report = debugkit.analyze_code(func)\n \n ctx.debug(\"Analysis complete\",\n score=report.combined_score,\n complexity=report.complexity_analysis.cyclomatic_complexity,\n type_coverage=report.type_analysis.type_coverage)\n \n # Check quality gates\n issues = []\n \n if report.combined_score < MIN_SCORE:\n issues.append(f\"Low quality score: {report.combined_score}\")\n \n if report.complexity_analysis.cyclomatic_complexity > MAX_COMPLEXITY:\n issues.append(f\"High complexity: {report.complexity_analysis.cyclomatic_complexity}\")\n \n if report.type_analysis.type_coverage < MIN_TYPE_COVERAGE:\n issues.append(f\"Low type coverage: {report.type_analysis.type_coverage:.1%}\")\n \n if issues:\n ctx.error(\"Quality gate failed\",\n function=func.__name__, \n issues=issues)\n failed_functions.append((func.__name__, issues))\n else:\n ctx.success(\"Quality gate passed\")\n \n # Summary\n if failed_functions:\n debugkit.error(\"Code quality check failed\",\n failed_count=len(failed_functions),\n total_functions=len(all_functions))\n \n for func_name, issues in failed_functions:\n print(f\"\u274c {func_name}:\")\n for issue in issues:\n print(f\" - {issue}\")\n \n return 1\n else:\n debugkit.success(\"All functions pass quality gates\")\n return 0\n\nif __name__ == \"__main__\":\n sys.exit(quality_gate())\n```\n\n</details>\n\n---\n\n## \ud83d\udee0\ufe0f Development\n\n<details>\n<summary><strong>\ud83d\udd27 Development Setup</strong></summary>\n\n```bash\n# Clone repository\ngit clone https://github.com/pr1m8/pydvlp-debug.git\ncd pydvlp-debug\n\n# Install PDM (if not already installed)\ncurl -sSL https://install.python-poetry.org | python3 -\n# Or use pipx: pipx install pdm\n\n# Install dependencies\npdm install\n\n# Install pre-commit hooks\npdm run pre-commit install\n\n# Run tests\npdm run pytest\n\n# Run with coverage\npdm run pytest --cov=pydvlp --cov-report=html\n\n# Type checking\npdm run mypy src/\n\n# Code formatting\npdm run black src/ tests/\npdm run isort src/ tests/\n\n# Linting\npdm run ruff check src/ tests/\n```\n\n</details>\n\n<details>\n<summary><strong>\ud83e\uddea Testing</strong></summary>\n\n```bash\n# Run all tests\npdm run pytest\n\n# Run with coverage\npdm run pytest --cov=pydvlp.debug --cov-report=html --cov-report=term\n\n# Run specific test categories\npdm run pytest -m \"not slow\" # Skip slow tests\npdm run pytest -m \"integration\" # Integration tests only\npdm run pytest tests/test_profiling.py # Specific module\n\n# Performance tests\npdm run pytest --benchmark-only\n\n# Generate test report\npdm run pytest --html=reports/pytest_report.html --self-contained-html\n```\n\n**Test Coverage: 95%+** | **Test Count: 126** | **Performance Tests: 15**\n\n</details>\n\n---\n\n## \ud83c\udfc6 Project Quality\n\n<div align=\"center\">\n\n| \ud83d\udcca **Metric** | \ud83d\udcc8 **Status** | \ud83c\udfaf **Target** |\n|---------------|---------------|---------------|\n| Test Coverage |  | >90% |\n| Type Coverage |  | 100% |\n| Code Quality |  | A Grade |\n| Performance |  | <2% |\n| Documentation |  | 100% |\n\n</div>\n\n---\n\n## \ud83e\udd1d Contributing\n\nWe welcome contributions! \ud83c\udf89\n\n<table>\n<tr>\n<td>\n\n### \ud83d\udc1b **Bug Reports**\nFound a bug? [Open an issue](https://github.com/pr1m8/pydvlp-debug/issues/new?template=bug_report.md) with:\n- Clear description\n- Reproduction steps \n- Expected vs actual behavior\n- Environment details\n\n</td>\n<td>\n\n### \u2728 **Feature Requests** \nHave an idea? [Request a feature](https://github.com/pr1m8/pydvlp-debug/issues/new?template=feature_request.md) with:\n- Use case description\n- Proposed API design\n- Implementation considerations\n- Alternative solutions\n\n</td>\n</tr>\n</table>\n\n<details>\n<summary><strong>\ud83d\udccb Contribution Guidelines</strong></summary>\n\n1. **Fork & Clone**: Fork the repo and clone your fork\n2. **Branch**: Create a feature branch (`git checkout -b feature/amazing-feature`)\n3. **Code**: Write your code following our style guide\n4. **Test**: Add tests and ensure all tests pass\n5. **Document**: Update documentation as needed\n6. **Commit**: Use conventional commits (`feat:`, `fix:`, `docs:`, etc.)\n7. **Push**: Push to your fork and create a pull request\n\n**Code Standards:**\n- \u2705 Black formatting\n- \u2705 isort imports \n- \u2705 Type hints\n- \u2705 Comprehensive tests\n- \u2705 Google-style docstrings\n- \u2705 Performance considerations\n\n</details>\n\n### \ud83c\udf1f Contributors\n\n<a href=\"https://github.com/pr1m8/pydvlp-debug/graphs/contributors\">\n <img src=\"https://contrib.rocks/image?repo=pr1m8/pydvlp-debug\" />\n</a>\n\n---\n\n## \ud83d\udcca Project Stats\n\n<div align=\"center\">\n\n\n\n\n\n\n</div>\n\n---\n\n## \ud83d\udcc4 License\n\nThis project is licensed under the **MIT License** - see the [LICENSE](LICENSE) file for details.\n\n<div align=\"center\">\n\n**[\u2b50 Star us on GitHub](https://github.com/pr1m8/pydvlp-debug)** \u2022 **[\ud83d\udcd6 Read the Docs](https://pydvlp-debug.readthedocs.io)** \u2022 **[\ud83c\udf10 Developer Portfolio](https://willastley.dev)**\n\n---\n\n*Made with \u2764\ufe0f by [William R. Astley](https://willastley.dev), for developers*\n\n</div>",
"bugtrack_url": null,
"license": "MIT",
"summary": "Professional Python development utilities with advanced debugging, profiling, tracing, benchmarking, and code analysis tools",
"version": "0.1.0",
"project_urls": {
"Changelog": "https://github.com/pr1m8/pydvlp-debug/blob/main/CHANGELOG.md",
"Documentation": "https://pydvlp-debug.readthedocs.io",
"Homepage": "https://github.com/pr1m8/pydvlp-debug",
"Issues": "https://github.com/pr1m8/pydvlp-debug/issues",
"Repository": "https://github.com/pr1m8/pydvlp-debug"
},
"split_keywords": [
"debugging",
" profiling",
" development",
" analysis",
" tracing",
" benchmarking",
" logging",
" code-quality",
" performance"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "7cea486f42ea22ab509a8db15b4a48cc6ab4d607830e4eb643ef7354220ff7dd",
"md5": "73ab1c6ef6f5e8f8d17b411e5b6f1e78",
"sha256": "1d47a6912c55fb8a568d8751531753bdc28a2da38536729a498824ea289c1821"
},
"downloads": -1,
"filename": "pydvlp_debug-0.1.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "73ab1c6ef6f5e8f8d17b411e5b6f1e78",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 8883,
"upload_time": "2025-08-23T11:23:46",
"upload_time_iso_8601": "2025-08-23T11:23:46.760775Z",
"url": "https://files.pythonhosted.org/packages/7c/ea/486f42ea22ab509a8db15b4a48cc6ab4d607830e4eb643ef7354220ff7dd/pydvlp_debug-0.1.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "1aaa179349cdffdad4807c0e16e712787d228b8dc1881cabf2b1c847ba43a311",
"md5": "5ea0aedda846918639161dce74d4e101",
"sha256": "f9de3bc76df67843501ce12cf542f924451e110c75d39d62994ad23440f54885"
},
"downloads": -1,
"filename": "pydvlp_debug-0.1.0.tar.gz",
"has_sig": false,
"md5_digest": "5ea0aedda846918639161dce74d4e101",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 27778,
"upload_time": "2025-08-23T11:23:48",
"upload_time_iso_8601": "2025-08-23T11:23:48.162899Z",
"url": "https://files.pythonhosted.org/packages/1a/aa/179349cdffdad4807c0e16e712787d228b8dc1881cabf2b1c847ba43a311/pydvlp_debug-0.1.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-23 11:23:48",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "pr1m8",
"github_project": "pydvlp-debug",
"github_not_found": true,
"lcname": "pydvlp-debug"
}