pydipapi


Namepydipapi JSON
Version 0.1.0 PyPI version JSON
download
home_pageNone
SummaryModern Python client for the German Bundestag API with batch operations, caching, and performance optimization
upload_time2025-07-10 10:08:33
maintainerNone
docs_urlNone
authorNone
requires_python>=3.8
licenseNone
keywords bundestag api parliament politics germany government data political-science
VCS
bugtrack_url
requirements requests pydantic aiohttp
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # pydipapi - Python Client für die deutsche Bundestag API

[![PyPI version](https://badge.fury.io/py/pydipapi.svg)](https://badge.fury.io/py/pydipapi)
[![Documentation](https://img.shields.io/badge/docs-latest-brightgreen.svg)](https://lichtbaer.github.io/pydipapi/)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Python 3.9+](https://img.shields.io/badge/python-3.9+-blue.svg)](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[![PyPI version](https://badge.fury.io/py/pydipapi.svg)](https://badge.fury.io/py/pydipapi)\n[![Documentation](https://img.shields.io/badge/docs-latest-brightgreen.svg)](https://lichtbaer.github.io/pydipapi/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Python 3.9+](https://img.shields.io/badge/python-3.9+-blue.svg)](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"
}
        
Elapsed time: 1.36828s