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.
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
- Diagnose Python version, venv,
azure-functionspackage - Validate
host.json,local.settings.json, function structure - Fully customizable via
rules.json - Output: colorized CLI or machine-readable JSON
- Built-in rule engine, easily extensible
Architecture
Azure Functions Doctor uses a modular, rule-based architecture for extensibility and maintainability:
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ CLI Interface │ │ Core Diagnostic │ │ Rule System │
│ (cli.py) │───▶│ Engine │───▶│ (rules.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 rules.json 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
func-doctor diagnose
Show Help
func-doctor --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.5.0.tar.gz.
File metadata
- Download URL: azure_functions_doctor-0.5.0.tar.gz
- Upload date:
- Size: 4.3 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
17d751147e60beb57b7aad3235a1b7bab67686d01997d8bb09a84f1fbbbfdecd
|
|
| MD5 |
7dea2abebfb35796db9780ac59b6acb0
|
|
| BLAKE2b-256 |
ba261387d27a9b412194fc7bb26bf1e9dc5e5be4659d36855320c8f04619c1b6
|
File details
Details for the file azure_functions_doctor-0.5.0-py3-none-any.whl.
File metadata
- Download URL: azure_functions_doctor-0.5.0-py3-none-any.whl
- Upload date:
- Size: 20.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a7f28f6bf0ed2b01d38918c2366b8da61f6f031f6d581bb2c6c415f8d7c43926
|
|
| MD5 |
1a60854c00790f66706a221b2768778a
|
|
| BLAKE2b-256 |
ddff0ded869a2c37bd9ebb1cf5b449b19deae79246a72d5199caff680049737e
|