You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
Added
argus_cortex.xmp — the suite's one XMP sidecar implementation, hoisted
from argus-lens so lens (keywords/caption) and argus-curator (face regions,
content rating) share a writer. write_xmp() / read_xmp() / merge_xmp() / parse_xmp() / render_xmp() / sidecar_path() over an XmpData model, all exported from the top-level package.
Namespaces: dc (subject, description), xmp (Rating, Label), lr
(hierarchicalSubject), Iptc4xmpExt (PersonInImage), mwg-rs regions
(XmpRegions / XmpRegion, MWG centre-based normalised coordinates), and a
new argus namespace for ContentRating. The argus namespace URI
(https://github.com/smk762/argus-cortex/ns/xmp/1.0/) is now a wire
contract.
Writes merge: each property set in XmpData replaces that property
(latest write wins, element or attribute form, across every rdf:Description); everything else in the sidecar — Lightroom develop
settings, GPS, another stage's fields, foreign namespace prefixes — is
preserved. None leaves a property untouched, an empty value removes it; replace=True discards the existing sidecar.
Writes are atomic (temp file + rename) and keep the existing file mode
(0644 for a new sidecar). An unparseable existing sidecar raises XmpError and is never clobbered; a DTD / entity declaration is refused.
Stdlib xml.etree + pydantic only, so the top-level import stays
pydantic-only.
CLAUDE.md agent guide.
Security
eMudhra/emSign CA incident. The extras that make outbound TLS
connections ([remote] httpx, [qdrant], [s3]) now require certifi>=2026.10.19, which no longer trusts the compromised emSign
intermediates. See https://discuss.python.org/t/109576.