Zum Inhalt

Contributing

Entwicklungsumgebung einrichten

Repository klonen

git clone https://git.bg-kooperation.de/novareto/form_download_helper.git
cd form_download_helper

Abhängigkeiten installieren

# Mit uv (empfohlen)
uv sync

# Oder mit pip
pip install -e ".[dev]"

Code-Stil

Formatierung

Das Projekt verwendet black für Code-Formatierung:

# Code formatieren
black src/

# Überprüfung ohne Änderungen
black --check src/

Linting

# Flake8 für Linting
flake8 src/

# Oder ruff (falls konfiguriert)
ruff check src/

Type Checking

# mypy für Type Checking
mypy src/

Tests

Tests ausführen

# Alle Tests
pytest

# Mit Coverage
pytest --cov=form_download_helper

# Spezifische Tests
pytest tests/test_download.py

Test-Struktur

tests/
├── test_download.py      # Download-Funktionalität
├── test_formatting.py    # Versionierungslogik  
├── test_templates.py     # Template-Generierung
└── fixtures/             # Test-Daten
    ├── schema.json
    └── deptree.json

Neue Features entwickeln

1. Issue erstellen

Erstellen Sie ein Issue für neue Features oder Bugfixes:

  1. Gehen Sie zu GitLab Issues
  2. Beschreiben Sie das Problem/Feature detailliert
  3. Fügen Sie Labels hinzu (bug, enhancement, etc.)

2. Branch erstellen

# Feature Branch
git checkout -b feature/neue-funktionalität

# Bugfix Branch  
git checkout -b bugfix/fehler-beschreibung

3. Entwicklung

# Änderungen machen
# Tests schreiben
# Code formatieren
black src/
flake8 src/

# Tests ausführen
pytest

4. Commit Guidelines

Verwenden Sie aussagekräftige Commit-Messages:

# Format: type(scope): description
git commit -m "feat(download): add support for multiple versions"
git commit -m "fix(auth): handle authentication errors gracefully"  
git commit -m "docs(readme): update installation instructions"

Commit Types: - feat: Neue Features - fix: Bugfixes - docs: Dokumentation - style: Code-Stil (kein funktioneller Unterschied) - refactor: Code-Refactoring - test: Tests hinzufügen/ändern - chore: Build/Tooling Änderungen

5. Merge Request

  1. Push Branch: git push origin feature/neue-funktionalität
  2. Erstellen Sie eine Merge Request in GitLab
  3. Beschreiben Sie Änderungen detailliert
  4. Verlinken Sie relevante Issues
  5. Fügen Sie Reviewer hinzu

Dokumentation

MkDocs entwickeln

# Dokumentation lokal starten
mkdocs serve

# Dokumentation bauen
mkdocs build

Docstrings

Verwenden Sie Google-Style Docstrings:

def download(path: Path, username: str, password: str, version: int, uri: str):
    """Download form data and generate files.

    Args:
        path: Target directory for downloads
        username: Username for authentication
        password: Password for authentication  
        version: Form version number
        uri: Form URI to download from

    Returns:
        None

    Raises:
        requests.RequestException: If download fails
        IOError: If file operations fail

    Example:
        >>> download(Path("/tmp"), "user", "pass", 2, "https://example.com")
    """

Release-Prozess

1. Version erhöhen

# In pyproject.toml
version = "0.2.0"

2. Changelog aktualisieren

Dokumentieren Sie Änderungen in CHANGELOG.md:

## [0.2.0] - 2024-01-15

### Added
- Support for multiple form versions
- Improved error handling

### Changed  
- Updated dependencies
- Refactored download logic

### Fixed
- Authentication timeout issues

3. Tag erstellen

git tag -a v0.2.0 -m "Release version 0.2.0"
git push origin v0.2.0

Debugging

Logging aktivieren

import logging
logging.basicConfig(level=logging.DEBUG)

Häufige Probleme

Import Fehler:

# Stellen Sie sicher, dass das Paket im Development-Modus installiert ist
pip install -e .

Test Fehler:

# Cache leeren
pytest --cache-clear

# Einzelne Tests debuggen
pytest -v -s tests/test_download.py::test_specific_function

Authentifizierung testen:

# Mit curl testen
curl -u username:password "https://formulare.uv-kooperation.de/ozg/rul/ozg-90/@@schema-view?version=2"

Code Review

Checkliste für Reviewer

  • [ ] Code folgt Stil-Guidelines
  • [ ] Tests sind vorhanden und funktionieren
  • [ ] Dokumentation ist aktualisiert
  • [ ] Keine sensiblen Daten im Code
  • [ ] Performance-Impact berücksichtigt
  • [ ] Backward-Kompatibilität gewährleistet

Feedback geben

  • Seien Sie konstruktiv und höflich
  • Erklären Sie das "Warum" bei Änderungsvorschlägen
  • Schlagen Sie Alternativen vor
  • Anerkennen Sie gute Lösungen

Community

Fragen stellen

  • Nutzen Sie GitLab Issues für Bugs und Features
  • Diskussionen über GitLab Discussions
  • E-Mail an Maintainer bei dringenden Problemen

Code of Conduct

  • Respektvoller Umgang miteinander
  • Konstruktive Kritik
  • Inklusives Verhalten
  • Fokus auf technische Verbesserungen