Skip to content

feat(image): Sidecar-Fallback für Formate ohne nativen Metadaten-Träger#79

Merged
lepy merged 1 commit into
masterfrom
feat/image-sidecar-fallback
Jun 29, 2026
Merged

feat(image): Sidecar-Fallback für Formate ohne nativen Metadaten-Träger#79
lepy merged 1 commit into
masterfrom
feat/image-sidecar-fallback

Conversation

@lepy

@lepy lepy commented Jun 29, 2026

Copy link
Copy Markdown
Owner

Was

Vervollständigt die einheitliche Image-API: Formate ohne nativen Metadaten-
Container (z. B. BMP) werden über dieselbe save/from_file-API abgedeckt — die
Metadaten reisen in einem verlustfreien <filepath>.meta.json-Sidecar (gleiche
Nutzlast wie die eingebettete Form), from_file merged ihn zurück. So geht Metadaten
nie verloren, egal welcher Container.

img = Image.from_bytes("scan.bmp", bmp_bytes)
img.metadata.add("station", "lab-3")
img.save("scan.bmp")                      # schreibt scan.bmp + scan.bmp.meta.json
Image.from_file("scan.bmp").metadata.get("station").value   # 'lab-3'
  • save(filepath, sidecar=None): None = Sidecar nur ohne nativen Träger (Default),
    True = immer (zusätzlich zur Einbettung), False = nie.
  • Helfer write_sidecar() / sidecar_path() / _load_sidecar_metadata().
  • from_file lädt eingebettete und Sidecar-Metadaten.

Tests / CI

tests/test_image.py: BMP-Round-Trip über Sidecar; sidecar=True bei nativem PNG.
Kanonische CI: 603 passed, 7 skipped, TOTAL 100 %, mkdocs build --strict grün.

Docs

RFC 0005 (§3.3/§4/§7) + Usage-Guide um den Sidecar-Fallback ergänzt.

Vervollstaendigt die einheitliche Image-API: Formate ohne nativen Metadaten-
Container (z. B. BMP) werden ueber dieselbe save/from_file-API abgedeckt — die
Metadaten reisen in einem verlustfreien <filepath>.meta.json-Sidecar (gleiche
Nutzlast wie die eingebettete Form), from_file merged ihn zurueck.

- save(filepath, sidecar=None): None = Sidecar nur ohne nativen Traeger (Default),
  True = immer (zusaetzlich zur Einbettung), False = nie
- write_sidecar()/sidecar_path()/_load_sidecar_metadata() Helfer
- from_file laedt eingebettete UND Sidecar-Metadaten
- Tests: BMP-Roundtrip ueber Sidecar; sidecar=True bei nativem PNG
- RFC 0005 + Usage-Guide: Sidecar-Fallback dokumentiert (BMP nicht mehr "offen")

Kanonische CI: 603 passed, 7 skipped, TOTAL 100%; mkdocs --strict gruen.
@lepy lepy merged commit 6bde904 into master Jun 29, 2026
1 of 2 checks passed
@lepy lepy deleted the feat/image-sidecar-fallback branch June 29, 2026 14:13
@codacy-production

Copy link
Copy Markdown

Not up to standards ⛔

🔴 Issues 5 high

Alerts:
⚠ 5 issues (≤ 0 issues of at least minor severity)

Results:
5 new issues

Category Results
Security 5 high

View in Codacy

🟢 Metrics 8 complexity · 0 duplication

Metric Results
Complexity 8
Duplication 0

View in Codacy

NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer
TIP This summary will be updated as you push new changes.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant