az-scout plugin for comparing Azure costs between regions using Cost Management exports
Project description
az-scout-plugin-compare-cost-between-regions
An az-scout plugin for comparing Azure costs between regions using Enterprise Agreement billing exports.
What it does
Upload your Detail Enrollment CSV (usage details) and optionally your PriceSheet ZIP to:
- Analyse usage — Aggregate monthly costs per SKU for a selected MeterRegion, with a billing summary breakdown by service category
- Compare regions — Upload your EA PriceSheet ZIP and select a target region to estimate what the same workload would cost in a different Azure region
3-step workflow
| Step | Name | Description |
|---|---|---|
| 1 | Prerequisites | Select billing account type (EA or MCA) and follow download instructions for the required files |
| 2 | Usage Analysis | Upload the Detail Enrollment CSV, select a source MeterRegion, view aggregated SKU costs and billing summary |
| 3 | Region Comparison | Upload the PriceSheet ZIP, select a target region, compare costs side-by-side |
Key features
- 2-step SKU matching — MeterId → source PriceSheet row → region-agnostic product key → target region lookup
- UoM normalization — Handles different UnitOfMeasure formats across regions (e.g.
1 TB/Monthvs100 GB/Month) - BasePrice disambiguation — Correctly matches pricing tiers when the same product has multiple SkuIDs
- ARM ↔ MeterRegion mapping — 65+ region mappings between ARM slugs and PriceSheet abbreviations
- Sortable tables — via simpleDatatables with numeric column sorting
- CSV export — Download usage analysis and comparison results
- EA/MCA documentation — Step-by-step download instructions aligned with Microsoft documentation
Supported billing account types
- Enterprise Agreement (EA) — fully supported
- MCA / MPA — download instructions shown, but analysis not yet validated
Setup
# Install the plugin (editable mode for development)
cd az-scout-plugin-compare-cost-between-regions
uv sync --group dev
uv pip install -e .
# Start az-scout — the plugin is auto-discovered
az-scout
Structure
src/az_scout_compare_cost_between_regions/
├── __init__.py # Plugin class + module-level instance
├── _log.py # Logger helper
├── pricing.py # PriceSheet matching, UoM normalization, cost comparison engine
├── routes.py # FastAPI routes: /compare-pricesheet, /region-mapping
├── tools.py # MCP tool: compare_cost_between_regions
└── static/
├── css/ # Plugin styles (dark/light theme support)
├── html/ # HTML fragment (3-step wizard)
└── js/ # Tab UI logic, CSV parsing, aggregation
API routes
| Method | Path | Description |
|---|---|---|
POST |
/compare-pricesheet |
Upload PriceSheet ZIP + items JSON, returns comparison results |
GET |
/region-mapping |
Returns ARM ↔ MeterRegion mapping dictionaries |
MCP tool
compare_cost_between_regions(file_path, meter_region, source_arm_region, target_arm_region)— Analyse a Detail Enrollment CSV and return a comparison structure
Quality checks
uv run ruff check src/ tests/
uv run ruff format --check src/ tests/
uv run mypy src/
uv run pytest
CI/CD
- CI (
.github/workflows/ci.yml): Runs lint and tests on push/PR tomain - Publish (
.github/workflows/publish.yml): Triggered on version tags (v*), builds package, creates GitHub Release, publishes to PyPI via trusted publishing (OIDC)
Versioning
Version is derived from git tags via hatch-vcs. Tags follow CalVer: v2026.4.0, v2026.4.1, etc.
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 az_scout_plugin_compare_cost_between_regions-2026.5.0.tar.gz.
File metadata
- Download URL: az_scout_plugin_compare_cost_between_regions-2026.5.0.tar.gz
- Upload date:
- Size: 144.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4240f5e62024df16e8a0c20842c0f9d638d9305a5f850911e52b20fca5341716
|
|
| MD5 |
33939eb9e97941e95f8dfe64da023a53
|
|
| BLAKE2b-256 |
bed973900cc7aea742c1cc3bc173d612002830043bf4d61ed6c2aaabb83ec673
|
Provenance
The following attestation bundles were made for az_scout_plugin_compare_cost_between_regions-2026.5.0.tar.gz:
Publisher:
publish.yml on az-scout/az-scout-plugin-compare-cost-between-regions
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
az_scout_plugin_compare_cost_between_regions-2026.5.0.tar.gz -
Subject digest:
4240f5e62024df16e8a0c20842c0f9d638d9305a5f850911e52b20fca5341716 - Sigstore transparency entry: 1418062319
- Sigstore integration time:
-
Permalink:
az-scout/az-scout-plugin-compare-cost-between-regions@cdde4f762e04f8f639939cfc7509b7934d5ba81d -
Branch / Tag:
refs/tags/v2026.5.0 - Owner: https://github.com/az-scout
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@cdde4f762e04f8f639939cfc7509b7934d5ba81d -
Trigger Event:
push
-
Statement type:
File details
Details for the file az_scout_plugin_compare_cost_between_regions-2026.5.0-py3-none-any.whl.
File metadata
- Download URL: az_scout_plugin_compare_cost_between_regions-2026.5.0-py3-none-any.whl
- Upload date:
- Size: 28.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
af76204487156b85c9f2c8b921b9ef6e46f8b117af6a729566775aec97e73236
|
|
| MD5 |
a276b5b2d7fbe29dc531d83b29a06582
|
|
| BLAKE2b-256 |
fd553c73ab99cdf8234fc7df62775b996386e1e1b98c7724ec0bec7e7cc9e679
|
Provenance
The following attestation bundles were made for az_scout_plugin_compare_cost_between_regions-2026.5.0-py3-none-any.whl:
Publisher:
publish.yml on az-scout/az-scout-plugin-compare-cost-between-regions
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
az_scout_plugin_compare_cost_between_regions-2026.5.0-py3-none-any.whl -
Subject digest:
af76204487156b85c9f2c8b921b9ef6e46f8b117af6a729566775aec97e73236 - Sigstore transparency entry: 1418062323
- Sigstore integration time:
-
Permalink:
az-scout/az-scout-plugin-compare-cost-between-regions@cdde4f762e04f8f639939cfc7509b7934d5ba81d -
Branch / Tag:
refs/tags/v2026.5.0 - Owner: https://github.com/az-scout
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@cdde4f762e04f8f639939cfc7509b7934d5ba81d -
Trigger Event:
push
-
Statement type: