Use os.scandir() as a context manager to ensure the iterator is
properly closed. This fixes ResourceWarning: unclosed scandir iterator
that occurs when the iterator is garbage collected without being closed.
Fixes#1972
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* Add CardDAV supported-address-data, update vCards to 4.0
- radicale/app/propfind.py: Add CS:getctag and CR:supported-address-data
properties to VADDRESSBOOK collections in allprop responses; implement
CR:supported-address-data handler that advertises vCard 4.0 as preferred
format with 3.0 fallback per RFC 6352 section 6.2.2
- radicale/tests/static/contact1.vcf: Update from vCard 3.0 to 4.0 format
- radicale/tests/static/contact_multiple.vcf: Update both contact entries
from vCard 3.0 to 4.0 format
- radicale/tests/static/contact_photo_with_data_uri.vcf: Update from vCard
3.0 to 4.0 format; change PHOTO property from 3.0 syntax with ENCODING=b
and TYPE parameters to 4.0 data URI syntax
* Conditionally offer vCard 4.0 based on vobject version
- Add vobject_supports_vcard4() helper function in utils.py
- Modify propfind.py to only advertise vCard 4.0 if vobject >= 1.0.0
- Add vCard 3.0 static test files for fallback testing
- Add tests for both vCard 3.0 and 4.0 contacts (v4 tests skipped if
vobject < 1.0.0)
- Add propfind tests for CR:supported-address-data property
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* Default vCard fixtures to v3.0, add explicit v4 files
- contact1.vcf: Change VERSION from 4.0 to 3.0 to make vCard 3.0 the default
test fixture format, since vCard 3.0 is more widely supported
- contact1_v3.vcf: Delete file as contact1.vcf now serves as the v3.0 fixture
- contact1_v4.vcf: Add new file with VERSION 4.0 for explicit vCard 4.0
testing with vobject >= 1.0.0
- contact_multiple.vcf: Change VERSION from 4.0 to 3.0 for both contacts to
align with new default
- contact_multiple_v3.vcf: Delete file as contact_multiple.vcf now serves as
the v3.0 fixture
- contact_multiple_v4.vcf: Add new file with VERSION 4.0 for both contacts
- contact_photo_with_data_uri.vcf: Change VERSION from 4.0 to 3.0 and update
PHOTO property to use v3.0 format with ENCODING=b;TYPE=png parameters
- contact_photo_with_data_uri_v3.vcf: Delete file as
contact_photo_with_data_uri.vcf now serves as the v3.0 fixture
- contact_photo_with_data_uri_v4.vcf: Add new file with VERSION 4.0 and v4.0
PHOTO data URI format
- test_base.py: Update test methods to use renamed fixture files, with v3.0
tests using default fixtures and v4.0 tests using explicit _v4.vcf files
---------
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Make the remote IP parameter more generic and make it an enum
determining the source instead of a boolean. Also fix the
changelog entry.
Both as requested, I managed to miss those comments previously.