# pydipapi - Python Client für die deutsche Bundestag API
[](https://badge.fury.io/py/pydipapi)
[](https://lichtbaer.github.io/pydipapi/)
[](https://opensource.org/licenses/MIT)
[](https://www.python.org/downloads/)
Ein moderner, vollständiger Python-Client für die deutsche Bundestag API (DIP) mit erweiterten Funktionen für Batch-Operationen, Caching und Performance-Optimierung.
## 🚀 Features
- **Vollständige API-Abdeckung** - Alle Endpunkte der Bundestag API
- **Batch-Operationen** - Mehrere IDs in einem Aufruf abrufen
- **Intelligentes Caching** - Automatisches Caching für bessere Performance
- **Rate Limiting** - Konfigurierbare Verzögerungen zwischen Requests
- **Retry-Logik** - Automatische Wiederholung bei Fehlern
- **Flexible Filterung** - Umfassende Such- und Filteroptionen
- **Convenience-Methoden** - Einfache Abfragen für häufige Anwendungsfälle
- **Vollständige Dokumentation** - Detaillierte API-Referenz und Beispiele
## 📦 Installation
```bash
pip install pydipapi
```
## 🔑 API-Key erhalten
1. Besuchen Sie [https://dip.bundestag.de/über-dip/hilfe/api](https://dip.bundestag.de/über-dip/hilfe/api)
2. Registrieren Sie sich für einen API-Key
3. Setzen Sie die Umgebungsvariable: `export DIP_API_KEY='ihr_api_key'`
## 🎯 Schnellstart
```python
from pydipapi import DipAnfrage
# Client initialisieren
dip = DipAnfrage(api_key='ihr_api_key')
# Personen abrufen
persons = dip.get_person(anzahl=10)
# Dokumente durchsuchen
docs = dip.search_documents("Bundeshaushalt", anzahl=5)
# Batch-Operationen
person_ids = [12345, 67890, 11111]
persons_batch = dip.get_person_ids(person_ids)
# Convenience-Methoden
recent_activities = dip.get_recent_activities(days=7)
```
## 📚 Dokumentation
Die vollständige Dokumentation ist verfügbar unter: **[https://lichtbaer.github.io/pydipapi/](https://lichtbaer.github.io/pydipapi/)**
### Dokumentationsseiten
- **[Grundlegende Verwendung](https://lichtbaer.github.io/pydipapi/usage/)** - Erste Schritte und grundlegende Funktionen
- **[Interaktive Notebooks](https://lichtbaer.github.io/pydipapi/notebooks/)** - Jupyter Notebooks für praktisches Lernen
- **[API-Referenz](https://lichtbaer.github.io/pydipapi/api_reference/)** - Vollständige API-Dokumentation mit Filter-Mapping
- **[OpenAPI-Spezifikation](https://lichtbaer.github.io/pydipapi/openapi_spec/)** - Technische API-Details
- **[Entwickler-Guide](https://lichtbaer.github.io/pydipapi/developer_guide/)** - Erweiterte Nutzung und Entwicklung
- **[Changelog](https://lichtbaer.github.io/pydipapi/changelog/)** - Versionshistorie und Änderungen
### 📓 Jupyter Notebooks
Interaktive Tutorials für praktisches Lernen (im `notebooks/` Verzeichnis):
- **`01_basic_usage.ipynb`** - Grundlagen und erste Schritte mit der API
- **`02_filtering_and_search.ipynb`** - Erweiterte Filteroptionen und Suchfunktionen
- **`03_batch_operations_and_caching.ipynb`** - Performance-Optimierung und Batch-Operationen
## 🔧 Konfiguration
```python
# Erweiterte Konfiguration
dip = DipAnfrage(
api_key='ihr_api_key',
rate_limit_delay=0.1, # 100ms zwischen Requests
max_retries=3, # Maximale Wiederholungsversuche
enable_cache=True, # Caching aktivieren
cache_ttl=3600 # Cache-TTL in Sekunden
)
```
## 📊 Verfügbare Endpunkte
| Endpunkt | Beschreibung | Batch-Support |
|----------|--------------|---------------|
| `get_person()` | Personen abrufen | ✅ |
| `get_aktivitaet()` | Aktivitäten abrufen | ✅ |
| `get_drucksache()` | Dokumente abrufen | ✅ |
| `get_plenarprotokoll()` | Protokolle abrufen | ✅ |
| `get_vorgang()` | Vorgänge abrufen | ✅ |
| `get_vorgangsposition()` | Vorgangspositionen abrufen | ✅ |
## 🔍 Filter-Optionen
| Parameter | Beschreibung | Beispiel |
|-----------|--------------|----------|
| `wahlperiode` | Legislaturperiode | `wahlperiode=20` |
| `datum_start` / `datum_end` | Datumsbereich | `datum_start="2024-01-01"` |
| `titel` | Titel-Suche | `titel="Bundeshaushalt"` |
| `drucksachetyp` | Dokumenttyp | `drucksachetyp="Antrag"` |
| `vorgangstyp` | Vorgangstyp | `vorgangstyp="Gesetzgebung"` |
## 🚀 Convenience-Methoden
```python
# Suche nach Dokumenten
docs = dip.search_documents("Klimaschutz", anzahl=10)
# Aktuelle Aktivitäten
recent = dip.get_recent_activities(days=7)
# Personen nach Namen suchen
persons = dip.get_person_by_name("Merkel", anzahl=5)
# Dokumente nach Typ
anträge = dip.get_documents_by_type("Antrag", anzahl=10)
# Vorgänge nach Typ
gesetzgebung = dip.get_proceedings_by_type("Gesetzgebung", anzahl=10)
```
## 📈 Performance-Optimierung
### Caching
```python
# Cache aktivieren
dip = DipAnfrage(api_key='key', enable_cache=True, cache_ttl=7200)
# Cache verwalten
dip.clear_cache() # Gesamten Cache löschen
dip.clear_expired_cache() # Abgelaufene Einträge löschen
```
### Batch-Operationen
```python
# Mehrere IDs auf einmal abrufen
person_ids = [12345, 67890, 11111]
persons = dip.get_person_ids(person_ids)
doc_ids = [12345, 67890]
docs = dip.get_drucksache_ids(doc_ids, text=True)
```
## 🛠️ Entwicklung
### Installation für Entwicklung
```bash
git clone https://github.com/lichtbaer/pydipapi.git
cd pydipapi
pip install -e .
pip install -r requirements-dev.txt
```
### Tests ausführen
```bash
pytest tests/
```
### Linting
```bash
ruff check .
bandit -r pydipapi/
```
### Dokumentation lokal bauen
```bash
mkdocs serve
```
## 📝 Lizenz
Dieses Projekt ist unter der MIT-Lizenz lizenziert. Siehe [LICENSE](LICENSE) für Details.
## 🤝 Beitragen
Beiträge sind willkommen! Bitte lesen Sie den [Entwickler-Guide](https://lichtbaer.github.io/pydipapi/developer_guide/) für Details.
### Entwicklungsumgebung einrichten
1. Repository klonen
2. Virtuelle Umgebung erstellen
3. Abhängigkeiten installieren: `pip install -r requirements-dev.txt`
4. Pre-Commit Hooks installieren: `pre-commit install`
5. Tests ausführen: `pytest tests/`
### Pull Request Guidelines
- Verwenden Sie aussagekräftige Commit-Messages
- Fügen Sie Tests für neue Features hinzu
- Aktualisieren Sie die Dokumentation bei Bedarf
- Stellen Sie sicher, dass alle Tests bestehen
## 📞 Support
- **Issues**: [GitHub Issues](https://github.com/lichtbaer/pydipapi/issues)
- **Dokumentation**: [https://lichtbaer.github.io/pydipapi/](https://lichtbaer.github.io/pydipapi/)
- **API-Dokumentation**: [Bundestag API](https://dip.bundestag.de/über-dip/hilfe/api)
## 🙏 Danksagungen
- **Deutscher Bundestag** - Bereitstellung der API
- **Python Community** - Open Source Libraries und Tools
- **MkDocs Team** - Dokumentations-Framework
- **Ruff Team** - Python Linter
- **Bandit Team** - Sicherheits-Tool
## 📊 Projekt-Status
- **Version**: 0.1.0 (Beta)
- **Python**: 3.9+
- **Status**: Beta - Vorbereitung für 1.0.0
- **Tests**: ✅ Bestehend
- **Dokumentation**: ✅ Vollständig
- **CI/CD**: ✅ Konfiguriert
---
**Hinweis**: Dieses Projekt ist nicht mit dem deutschen Bundestag affiliiert. Für offizielle Informationen besuchen Sie [https://dip.bundestag.de/](https://dip.bundestag.de/).
Raw data
{
"_id": null,
"home_page": null,
"name": "pydipapi",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": "Johannes Gegenheimer <jg@politikpraxis.de>",
"keywords": "bundestag, api, parliament, politics, germany, government, data, political-science",
"author": null,
"author_email": "Johannes Gegenheimer <jg@politikpraxis.de>",
"download_url": "https://files.pythonhosted.org/packages/f8/11/66fbe79ed5995bfbcd9e2279a04fc85293604135019572f8532372fa65a5/pydipapi-0.1.0.tar.gz",
"platform": null,
"description": "# pydipapi - Python Client f\u00fcr die deutsche Bundestag API\n\n[](https://badge.fury.io/py/pydipapi)\n[](https://lichtbaer.github.io/pydipapi/)\n[](https://opensource.org/licenses/MIT)\n[](https://www.python.org/downloads/)\n\nEin moderner, vollst\u00e4ndiger Python-Client f\u00fcr die deutsche Bundestag API (DIP) mit erweiterten Funktionen f\u00fcr Batch-Operationen, Caching und Performance-Optimierung.\n\n## \ud83d\ude80 Features\n\n- **Vollst\u00e4ndige API-Abdeckung** - Alle Endpunkte der Bundestag API\n- **Batch-Operationen** - Mehrere IDs in einem Aufruf abrufen\n- **Intelligentes Caching** - Automatisches Caching f\u00fcr bessere Performance\n- **Rate Limiting** - Konfigurierbare Verz\u00f6gerungen zwischen Requests\n- **Retry-Logik** - Automatische Wiederholung bei Fehlern\n- **Flexible Filterung** - Umfassende Such- und Filteroptionen\n- **Convenience-Methoden** - Einfache Abfragen f\u00fcr h\u00e4ufige Anwendungsf\u00e4lle\n- **Vollst\u00e4ndige Dokumentation** - Detaillierte API-Referenz und Beispiele\n\n## \ud83d\udce6 Installation\n\n```bash\npip install pydipapi\n```\n\n## \ud83d\udd11 API-Key erhalten\n\n1. Besuchen Sie [https://dip.bundestag.de/\u00fcber-dip/hilfe/api](https://dip.bundestag.de/\u00fcber-dip/hilfe/api)\n2. Registrieren Sie sich f\u00fcr einen API-Key\n3. Setzen Sie die Umgebungsvariable: `export DIP_API_KEY='ihr_api_key'`\n\n## \ud83c\udfaf Schnellstart\n\n```python\nfrom pydipapi import DipAnfrage\n\n# Client initialisieren\ndip = DipAnfrage(api_key='ihr_api_key')\n\n# Personen abrufen\npersons = dip.get_person(anzahl=10)\n\n# Dokumente durchsuchen\ndocs = dip.search_documents(\"Bundeshaushalt\", anzahl=5)\n\n# Batch-Operationen\nperson_ids = [12345, 67890, 11111]\npersons_batch = dip.get_person_ids(person_ids)\n\n# Convenience-Methoden\nrecent_activities = dip.get_recent_activities(days=7)\n```\n\n## \ud83d\udcda Dokumentation\n\nDie vollst\u00e4ndige Dokumentation ist verf\u00fcgbar unter: **[https://lichtbaer.github.io/pydipapi/](https://lichtbaer.github.io/pydipapi/)**\n\n### Dokumentationsseiten\n\n- **[Grundlegende Verwendung](https://lichtbaer.github.io/pydipapi/usage/)** - Erste Schritte und grundlegende Funktionen\n- **[Interaktive Notebooks](https://lichtbaer.github.io/pydipapi/notebooks/)** - Jupyter Notebooks f\u00fcr praktisches Lernen\n- **[API-Referenz](https://lichtbaer.github.io/pydipapi/api_reference/)** - Vollst\u00e4ndige API-Dokumentation mit Filter-Mapping\n- **[OpenAPI-Spezifikation](https://lichtbaer.github.io/pydipapi/openapi_spec/)** - Technische API-Details\n- **[Entwickler-Guide](https://lichtbaer.github.io/pydipapi/developer_guide/)** - Erweiterte Nutzung und Entwicklung\n- **[Changelog](https://lichtbaer.github.io/pydipapi/changelog/)** - Versionshistorie und \u00c4nderungen\n\n### \ud83d\udcd3 Jupyter Notebooks\n\nInteraktive Tutorials f\u00fcr praktisches Lernen (im `notebooks/` Verzeichnis):\n\n- **`01_basic_usage.ipynb`** - Grundlagen und erste Schritte mit der API\n- **`02_filtering_and_search.ipynb`** - Erweiterte Filteroptionen und Suchfunktionen \n- **`03_batch_operations_and_caching.ipynb`** - Performance-Optimierung und Batch-Operationen\n\n## \ud83d\udd27 Konfiguration\n\n```python\n# Erweiterte Konfiguration\ndip = DipAnfrage(\n api_key='ihr_api_key',\n rate_limit_delay=0.1, # 100ms zwischen Requests\n max_retries=3, # Maximale Wiederholungsversuche\n enable_cache=True, # Caching aktivieren\n cache_ttl=3600 # Cache-TTL in Sekunden\n)\n```\n\n## \ud83d\udcca Verf\u00fcgbare Endpunkte\n\n| Endpunkt | Beschreibung | Batch-Support |\n|----------|--------------|---------------|\n| `get_person()` | Personen abrufen | \u2705 |\n| `get_aktivitaet()` | Aktivit\u00e4ten abrufen | \u2705 |\n| `get_drucksache()` | Dokumente abrufen | \u2705 |\n| `get_plenarprotokoll()` | Protokolle abrufen | \u2705 |\n| `get_vorgang()` | Vorg\u00e4nge abrufen | \u2705 |\n| `get_vorgangsposition()` | Vorgangspositionen abrufen | \u2705 |\n\n## \ud83d\udd0d Filter-Optionen\n\n| Parameter | Beschreibung | Beispiel |\n|-----------|--------------|----------|\n| `wahlperiode` | Legislaturperiode | `wahlperiode=20` |\n| `datum_start` / `datum_end` | Datumsbereich | `datum_start=\"2024-01-01\"` |\n| `titel` | Titel-Suche | `titel=\"Bundeshaushalt\"` |\n| `drucksachetyp` | Dokumenttyp | `drucksachetyp=\"Antrag\"` |\n| `vorgangstyp` | Vorgangstyp | `vorgangstyp=\"Gesetzgebung\"` |\n\n## \ud83d\ude80 Convenience-Methoden\n\n```python\n# Suche nach Dokumenten\ndocs = dip.search_documents(\"Klimaschutz\", anzahl=10)\n\n# Aktuelle Aktivit\u00e4ten\nrecent = dip.get_recent_activities(days=7)\n\n# Personen nach Namen suchen\npersons = dip.get_person_by_name(\"Merkel\", anzahl=5)\n\n# Dokumente nach Typ\nantr\u00e4ge = dip.get_documents_by_type(\"Antrag\", anzahl=10)\n\n# Vorg\u00e4nge nach Typ\ngesetzgebung = dip.get_proceedings_by_type(\"Gesetzgebung\", anzahl=10)\n```\n\n## \ud83d\udcc8 Performance-Optimierung\n\n### Caching\n```python\n# Cache aktivieren\ndip = DipAnfrage(api_key='key', enable_cache=True, cache_ttl=7200)\n\n# Cache verwalten\ndip.clear_cache() # Gesamten Cache l\u00f6schen\ndip.clear_expired_cache() # Abgelaufene Eintr\u00e4ge l\u00f6schen\n```\n\n### Batch-Operationen\n```python\n# Mehrere IDs auf einmal abrufen\nperson_ids = [12345, 67890, 11111]\npersons = dip.get_person_ids(person_ids)\n\ndoc_ids = [12345, 67890]\ndocs = dip.get_drucksache_ids(doc_ids, text=True)\n```\n\n## \ud83d\udee0\ufe0f Entwicklung\n\n### Installation f\u00fcr Entwicklung\n```bash\ngit clone https://github.com/lichtbaer/pydipapi.git\ncd pydipapi\npip install -e .\npip install -r requirements-dev.txt\n```\n\n### Tests ausf\u00fchren\n```bash\npytest tests/\n```\n\n### Linting\n```bash\nruff check .\nbandit -r pydipapi/\n```\n\n### Dokumentation lokal bauen\n```bash\nmkdocs serve\n```\n\n## \ud83d\udcdd Lizenz\n\nDieses Projekt ist unter der MIT-Lizenz lizenziert. Siehe [LICENSE](LICENSE) f\u00fcr Details.\n\n## \ud83e\udd1d Beitragen\n\nBeitr\u00e4ge sind willkommen! Bitte lesen Sie den [Entwickler-Guide](https://lichtbaer.github.io/pydipapi/developer_guide/) f\u00fcr Details.\n\n### Entwicklungsumgebung einrichten\n\n1. Repository klonen\n2. Virtuelle Umgebung erstellen\n3. Abh\u00e4ngigkeiten installieren: `pip install -r requirements-dev.txt`\n4. Pre-Commit Hooks installieren: `pre-commit install`\n5. Tests ausf\u00fchren: `pytest tests/`\n\n### Pull Request Guidelines\n\n- Verwenden Sie aussagekr\u00e4ftige Commit-Messages\n- F\u00fcgen Sie Tests f\u00fcr neue Features hinzu\n- Aktualisieren Sie die Dokumentation bei Bedarf\n- Stellen Sie sicher, dass alle Tests bestehen\n\n## \ud83d\udcde Support\n\n- **Issues**: [GitHub Issues](https://github.com/lichtbaer/pydipapi/issues)\n- **Dokumentation**: [https://lichtbaer.github.io/pydipapi/](https://lichtbaer.github.io/pydipapi/)\n- **API-Dokumentation**: [Bundestag API](https://dip.bundestag.de/\u00fcber-dip/hilfe/api)\n\n## \ud83d\ude4f Danksagungen\n\n- **Deutscher Bundestag** - Bereitstellung der API\n- **Python Community** - Open Source Libraries und Tools\n- **MkDocs Team** - Dokumentations-Framework\n- **Ruff Team** - Python Linter\n- **Bandit Team** - Sicherheits-Tool\n\n## \ud83d\udcca Projekt-Status\n\n- **Version**: 0.1.0 (Beta)\n- **Python**: 3.9+\n- **Status**: Beta - Vorbereitung f\u00fcr 1.0.0\n- **Tests**: \u2705 Bestehend\n- **Dokumentation**: \u2705 Vollst\u00e4ndig\n- **CI/CD**: \u2705 Konfiguriert\n\n---\n\n**Hinweis**: Dieses Projekt ist nicht mit dem deutschen Bundestag affiliiert. F\u00fcr offizielle Informationen besuchen Sie [https://dip.bundestag.de/](https://dip.bundestag.de/).\n",
"bugtrack_url": null,
"license": null,
"summary": "Modern Python client for the German Bundestag API with batch operations, caching, and performance optimization",
"version": "0.1.0",
"project_urls": {
"API Reference": "https://lichtbaer.github.io/pydipapi/api_reference/",
"Bug Tracker": "https://github.com/lichtbaer/pydipapi/issues",
"Changelog": "https://lichtbaer.github.io/pydipapi/changelog/",
"Documentation": "https://lichtbaer.github.io/pydipapi/",
"Homepage": "https://github.com/lichtbaer/pydipapi",
"Repository": "https://github.com/lichtbaer/pydipapi.git"
},
"split_keywords": [
"bundestag",
" api",
" parliament",
" politics",
" germany",
" government",
" data",
" political-science"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "ec820b5d4757fd2b602ac0a9f7349a9d98b4d9dc0c905ef93541f84257dda627",
"md5": "6fe1870bb50a724a79c2537fc8e4ae8a",
"sha256": "c8e772ac9f72dc0f4d7c7986aaf135bbfc066de4de25ab4cdc22a42243726514"
},
"downloads": -1,
"filename": "pydipapi-0.1.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "6fe1870bb50a724a79c2537fc8e4ae8a",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 48170,
"upload_time": "2025-07-10T10:08:31",
"upload_time_iso_8601": "2025-07-10T10:08:31.776016Z",
"url": "https://files.pythonhosted.org/packages/ec/82/0b5d4757fd2b602ac0a9f7349a9d98b4d9dc0c905ef93541f84257dda627/pydipapi-0.1.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "f81166fbe79ed5995bfbcd9e2279a04fc85293604135019572f8532372fa65a5",
"md5": "4b3ae85d6eddbcab243f447e2ddc420a",
"sha256": "234a06b9514f29c28c4a5def89c4cc0d1adc88398438dc95e51b483286fe61bc"
},
"downloads": -1,
"filename": "pydipapi-0.1.0.tar.gz",
"has_sig": false,
"md5_digest": "4b3ae85d6eddbcab243f447e2ddc420a",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 39096,
"upload_time": "2025-07-10T10:08:33",
"upload_time_iso_8601": "2025-07-10T10:08:33.289322Z",
"url": "https://files.pythonhosted.org/packages/f8/11/66fbe79ed5995bfbcd9e2279a04fc85293604135019572f8532372fa65a5/pydipapi-0.1.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-10 10:08:33",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "lichtbaer",
"github_project": "pydipapi",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [
{
"name": "requests",
"specs": []
},
{
"name": "pydantic",
"specs": []
},
{
"name": "aiohttp",
"specs": []
}
],
"lcname": "pydipapi"
}