Skip to main content

A diagnostic tool for Python Azure Functions

Project description

Azure Functions Doctor Logo

Test Status Release Status PyPI Version License Codecov Coverage Python Versions


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-functions package
  • 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
Sample output

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


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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

azure_functions_doctor-0.4.1.tar.gz (4.3 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

azure_functions_doctor-0.4.1-py3-none-any.whl (19.2 kB view details)

Uploaded Python 3

File details

Details for the file azure_functions_doctor-0.4.1.tar.gz.

File metadata

File hashes

Hashes for azure_functions_doctor-0.4.1.tar.gz
Algorithm Hash digest
SHA256 81a0a733632218285800ed601084d6da4fb9cdf399b0201506515c86716f72ed
MD5 200086ba5bbfeb4bd2357ffeb47eec05
BLAKE2b-256 74f5a74ca77a5e4e01b43b474ab3a4898aaabcb245788e610cf0e409b6d642d4

See more details on using hashes here.

File details

Details for the file azure_functions_doctor-0.4.1-py3-none-any.whl.

File metadata

File hashes

Hashes for azure_functions_doctor-0.4.1-py3-none-any.whl
Algorithm Hash digest
SHA256 c5999e1cecdc36beaac4f84ddc9342c3a3b4ef1066354883e2cd7338095cf5e7
MD5 fd939fb0f0ee4a436a33b36d94bf538a
BLAKE2b-256 f2349c279dcbd359910fb695c6f2fef25af0a68fa3636f1c2c3344099d00faef

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page