Metadata-Version: 2.4
Name: gov-data-api-suite
Version: 0.2.0
Summary: Async adapters for free/open government and public data APIs
Author-email: Tomas Amlov <tomasamlov@gmail.com>
License-Expression: MIT
Project-URL: Homepage, https://github.com/tomasamlov/gov-data-api-suite
Project-URL: Repository, https://github.com/tomasamlov/gov-data-api-suite
Keywords: government,open-data,async,api,sweden,statistics
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Framework :: AsyncIO
Classifier: Typing :: Typed
Requires-Python: >=3.12
Description-Content-Type: text/markdown
Requires-Dist: async-rest-adapter>=0.1.0
Requires-Dist: httpx<1.0,>=0.27
Requires-Dist: pydantic>=2.0
Requires-Dist: rich>=13.0
Provides-Extra: kolada
Provides-Extra: scb
Provides-Extra: riksdag
Provides-Extra: smhi
Provides-Extra: bolagsverket
Provides-Extra: valmyndigheten
Provides-Extra: riksbanken
Provides-Extra: arbetsformedlingen
Provides-Extra: polisen
Provides-Extra: sgu
Provides-Extra: skatteverket
Provides-Extra: skolverket
Provides-Extra: naturvardsverket
Provides-Extra: boverket
Provides-Extra: havochvatten
Provides-Extra: ecb
Provides-Extra: eurostat
Provides-Extra: imf
Provides-Extra: worldbank
Provides-Extra: duckduckgo
Provides-Extra: osm
Provides-Extra: swedish-gov
Provides-Extra: international
Provides-Extra: search
Provides-Extra: mcp
Requires-Dist: fastmcp>=0.1; extra == "mcp"
Provides-Extra: compliance
Requires-Dist: click>=8.0; extra == "compliance"
Provides-Extra: all
Requires-Dist: gov-data-api-suite[compliance,international,mcp,search,swedish-gov]; extra == "all"

# gov-data-api-suite

Async Python adapters for free/open government and public data APIs.

Built on [async-rest-adapter](https://pypi.org/project/async-rest-adapter/) — every adapter handles retry, rate-limit, attribution injection, and typed error responses automatically.

## Installation

```bash
pip install gov-data-api-suite
```

## Quick start

```python
from backend import KoladaAdapter, KoladaConfig, SMHIAdapter, SMHIConfig

# Swedish municipality KPIs (Kolada)
async with KoladaAdapter(config=KoladaConfig()) as adapter:
    result = await adapter.search_kpis("befolkning")
    print(result.data)

# Weather forecasts (SMHI)
async with SMHIAdapter(config=SMHIConfig()) as adapter:
    forecast = await adapter.get_point_forecast(59.33, 18.07)
    print(forecast.data)
```

## Providers

### Swedish government
| Adapter | Description |
|---|---|
| `ArbetsformedlingenAdapter` | Swedish Public Employment Service |
| `BolagsverketAdapter` | Swedish Companies Registration Office |
| `BoverketAdapter` | Swedish National Board of Housing |
| `HavochvattenAdapter` | Swedish Agency for Marine and Water Management |
| `KoladaAdapter` | Municipal KPI database |
| `NaturvardsverketAdapter` | Swedish Environmental Protection Agency |
| `PolisenAdapter` | Swedish Police — public events |
| `RiksbankenAdapter` | Swedish central bank — interest rates, exchange rates |
| `RiksdagAdapter` | Swedish Parliament — members, votes, documents |
| `SCBAdapter` | Statistics Sweden |
| `SGUAdapter` | Geological Survey of Sweden |
| `SkatteverketAdapter` | Swedish Tax Agency |
| `SkolverketAdapter` | Swedish National Agency for Education |
| `SMHIAdapter` | Swedish weather and hydrology institute |
| `ValmyndighetenAdapter` | Swedish Election Authority |

### International
| Adapter | Description |
|---|---|
| `ECBAdapter` | European Central Bank |
| `EurostatAdapter` | EU statistics |
| `IMFAdapter` | International Monetary Fund |
| `WorldBankAdapter` | World Bank open data |

### Search / Geo
| Adapter | Description |
|---|---|
| `DuckDuckGoAdapter` | DuckDuckGo Instant Answer API |
| `OpenStreetMapAdapter` | Nominatim geocoding |

## Attribution

All adapters inject `metadata["attribution"]` into every successful response with the correct license, source text, and URL for the provider.

## Requirements

- Python 3.12+
- async-rest-adapter ≥ 0.1.0
- httpx ≥ 0.27
- pydantic ≥ 2.0

## License

MIT
