Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Keep the server's raw bytes, and allow sending given bytes unchanged

Aperta
#763 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
5/5
Tempo stimato
Più di una settimana
Idoneità per principianti
35/100
Tipo di issue
Funzionalità
Chiarezza
Abbastanza chiara
Stato di attività
Attiva
Stack tecnologico
python
Ambito
backend

Direzione di ricerca

Start with _set_data() around line 1760 in calendarobjectresource.py and trace the GET, calendar-query, calendar-multiget, and save paths that call it or normalize data with vcal.fix(). The issue leaves the API shape open, so first read the linked calendaring design and compare these paths. Done means preserving the received bytes and offering an opt-in to send supplied bytes unchanged while retaining conditional request handling.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

enhancement

Disclaimer: AI-generated text below the line, generated by Claude Opus 5.5 (Claude Code), from the prompt:

Open the issue in the caldav library [comment made in a code-review document, on a finding that caldav's wire_data is not the bytes the server sent]


Low priority. Needed by the calendaring library's proposed Item.wire (https://github.com/pycalendar/calendaring, docs/design/API_DESIGN.md, "The stored form"), and by sync tools such as https://github.com/pycalendar/calendaring-sync, which compare and push the bytes a server stores.

Today a CalendarObjectResource cannot give back what the server sent:

  • _set_data() runs the incoming data through vcal.fix() before storing it in _data (calendarobjectresource.py, around line 1760), so the raw response body is gone right after parsing the response.
  • wire_data re-encodes _data (or serialises icalendar_instance / vobject_instance after an edit), so it is caldav's normalised copy, not the server's bytes, and not a snapshot of what was read.
  • When saving, the same path normalises bytes the caller passes in, so "store exactly these bytes" is not possible either.

Suggested shape (open for discussion):

  • Keep the unmodified response body of the last GET / calendar-query / calendar-multiget in a read-only attribute (e.g. raw_data), cleared by any write or local edit, next to the etag it belongs to.
  • An opt-in to send given bytes without vcal.fix() (e.g. save(raw=True), or setting raw_data before save()), still with If-Match / If-None-Match.

vcal.fix() stays the default; this is only about not throwing the original away.

Lingua principale
Python
Stelle
412
Fork
113
Merge medio
1g 7h
PR unite (30g)
34

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di python-caldav/caldav

Tutte le issue di python-caldav/caldav

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.