A diagnostic tool for Python Azure Functions
Project description
Azure Functions Doctor for Python
A fast and extensible diagnostic CLI for Python-based Azure Functions projects. Supports both Programming Model v1 (function.json-based) and Programming Model v2 (decorator-based) projects.
Why Azure Functions Doctor?
- Getting random 500 errors and suspect misconfiguration?
- Need to verify your dev environment before CI/CD deployment?
- Want a quick health check without digging through docs?
Azure Functions Doctor helps save time by automating common environment diagnostics.
Key Features
- Multi-Model Support: Works with both v1 (function.json) and v2 (decorator) projects
- Automatic Detection: Automatically detects your project's programming model
- Model-Specific Checks: Different requirements for v1 vs v2 (Python version, packages, etc.)
- Rich Diagnostics: Python version, venv, required packages, project files
- Extensible Rules: Customizable rules system for both programming models
- Rich Console Output: Clear formatting with hints and suggestions
- CI/CD Ready: JSON output for automated environments
Architecture
Azure Functions Doctor uses a modular, rule-based architecture for extensibility and maintainability:
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ CLI Interface │ │ Core Diagnostic │ │ Rule System │
│ (cli.py) │───▶│ Engine │───▶│ (assets/rules/v2.json or v1.json) │
│ │ │ (doctor.py) │ │ │
└─────────────────┘ └──────────────────┘ └─────────────────┘
│ │ │
│ ▼ ▼
│ ┌──────────────────┐ ┌─────────────────┐
│ │ Handler │ │ Target/Version │
│ │ Dispatcher │ │ Resolver │
│ │ (handlers.py) │ │ (target_resolver │
│ └──────────────────┘ │ .py) │
│ │ └─────────────────┘
│ ▼
│ ┌──────────────────┐
│ │ Individual │
│ │ Handlers │
│ │ • file_exists │
│ │ • compare_version│
│ │ • check_package │
│ │ • validate_json │
│ └──────────────────┘
│ │
▼ ▼
┌─────────────────┐ ┌──────────────────┐
│ Output Formatter│ │ Results │
│ JSON / CLI │◀───│ Aggregator │
│ │ │ │
└─────────────────┘ └──────────────────┘
Key Components
- CLI Interface: Entry point handling commands, flags, and output formatting
- Diagnostic Engine: Core orchestration logic loading rules and coordinating execution
- Rule System: Declarative JSON-based rule definitions for extensibility
- Handler Dispatcher: Routes rule types to appropriate handler functions
- Individual Handlers: Specific diagnostic implementations (file checks, version validation, etc.)
- Results Aggregator: Collects and structures all diagnostic outcomes
- Output Formatter: Renders results as colorized CLI output or machine-readable JSON
This design allows easy extension by adding new rules to src/azure_functions_doctor/assets/rules/v2.json (and v1.json for v1 projects) and implementing corresponding handlers, without modifying core engine logic.
Requirements
- Python 3.9+
- Git
- (Optional) Azure Functions Core Tools v4+ (
npm i -g azure-functions-core-tools@4) - (Recommended) Unix-like shell or PowerShell for Makefile support
Installation
From PyPI:
pip install azure-functions-doctor
Or from source:
git clone https://github.com/yeongseon/azure-functions-doctor-for-python.git
cd azure-functions-doctor-for-python
python3 -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
pip install -e .
Usage
Run the Doctor
azure-functions doctor
Show Help
azure-functions --help
Sample: examples/basic-hello/diagnose-output.md
Example
See examples/basic-hello for:
- Minimal Azure Functions structure setup
- Running the CLI and inspecting results
Documentation
- Getting Started: docs/index.md
- Custom Rules: docs/rules.md
- Developer Guide: docs/development.md
Contributing
We welcome issues and PRs!
Please see CONTRIBUTING.md for contribution guidelines.
If you find this useful, please star the repo!
License
This project is licensed under the MIT License.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file azure_functions_doctor-0.10.0.tar.gz.
File metadata
- Download URL: azure_functions_doctor-0.10.0.tar.gz
- Upload date:
- Size: 4.3 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2371cc04011741856ccd7257cdee5abc8846d4b57c15fe0865fc2c33aad0112b
|
|
| MD5 |
549499dbd807ddd5f85bc3d925b90cea
|
|
| BLAKE2b-256 |
337e3c1362998f5d8e0c7f3f5db1d0273039ca52827adc1e2c9a2cac9faa481c
|
File details
Details for the file azure_functions_doctor-0.10.0-py3-none-any.whl.
File metadata
- Download URL: azure_functions_doctor-0.10.0-py3-none-any.whl
- Upload date:
- Size: 26.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d9316a29964c14fb5af522d6d96f6df60306e6ca409f1ac27b14a0806c9d7950
|
|
| MD5 |
519b402b9ef6851c8b7517b2f7f41657
|
|
| BLAKE2b-256 |
049c9e76716839e443934ff60c6b9c8f7514e4d7ecca1e524f91050abaffb1fa
|