30 lines
1.1 KiB
Python
30 lines
1.1 KiB
Python
|
|
"""Map a COL city slug to a tax jurisdiction the simulator models.
|
||
|
|
|
||
|
|
Cities without a dedicated tax engine fall back to ``nomad`` (a neutral 1%
|
||
|
|
regulatory-premium regime) — a deliberate, documented approximation. Adding a
|
||
|
|
real regime (e.g. Portugal NHR, Greece, Spain Beckham) is a separate change;
|
||
|
|
until then their countdown targets carry the nomad assumption.
|
||
|
|
"""
|
||
|
|
from __future__ import annotations
|
||
|
|
|
||
|
|
# Only slugs whose jurisdiction has a dedicated engine in `tax/`. Everything
|
||
|
|
# else (Lisbon, Porto, Athens, Tallinn, Tbilisi, Madrid, Valencia, Singapore,
|
||
|
|
# Taipei, Bali, Medellin, Mexico City, Bucharest, Ho Chi Minh City) -> nomad.
|
||
|
|
CITY_JURISDICTION: dict[str, str] = {
|
||
|
|
"sofia": "bulgaria",
|
||
|
|
"limassol": "cyprus",
|
||
|
|
"bangkok": "thailand",
|
||
|
|
"chiang-mai": "thailand",
|
||
|
|
"kuala-lumpur": "malaysia",
|
||
|
|
"penang": "malaysia",
|
||
|
|
"dubai": "uae",
|
||
|
|
"london": "uk",
|
||
|
|
}
|
||
|
|
|
||
|
|
FALLBACK_JURISDICTION = "nomad"
|
||
|
|
|
||
|
|
|
||
|
|
def jurisdiction_for_city(slug: str) -> str:
|
||
|
|
"""Return the tax-jurisdiction key for a COL city slug (``nomad`` if none)."""
|
||
|
|
return CITY_JURISDICTION.get(slug, FALLBACK_JURISDICTION)
|