Pre-release
This release is a pre-release and may not be stable for production use.
swarmauri_xmp_gif
swarmauri_xmp_gif includes the GIFXMP handler that preserves XMP packets inside GIF89a application extensions using the canonical XMP Data identifier and XMP authentication code.
Features
- Registry native ? extends
EmbedXmpBaseso managers such asEmbedXMPcan discover it through Swarmauri's dynamic registry. - Block aware ? iterates GIF sub-blocks safely and terminates on sentinel bytes to avoid corrupting animations.
- Spec aligned ? writes uncompressed UTF-8 payloads that match Adobe's guidance for GIF metadata.
Installation
# pip
pip install swarmauri_xmp_gif
# uv
uv add swarmauri_xmp_gif
Usage
from pathlib import Path
from swarmauri_xmp_gif import GIFXMP
handler = GIFXMP()
gif_path = Path("example.gif")
xmp_packet = """<x:xmpmeta xmlns:x='adobe:ns:meta/'><rdf:RDF>...</rdf:RDF></x:xmpmeta>"""
# Embed using an application extension block
updated_bytes = handler.write_xmp(gif_path.read_bytes(), xmp_packet)
gif_path.write_bytes(updated_bytes)
# Retrieve the RDF/XML payload
restored_xml = handler.read_xmp(updated_bytes)
print(restored_xml)
# Remove the extension again
clean_bytes = handler.remove_xmp(updated_bytes)
Why it works
- Standards-based ? uses the XMP-defined App ID and Auth Code from Adobe's reference implementation.
- Chunk-aware ? scans GIF sub-blocks safely, terminating on sentinel bytes and ignoring malformed payloads.
- Registry-native ? inherits from
EmbedXmpBase, so managers only need to query the component registry.
Project Resources
- Source: https://github.com/swarmauri/swarmauri-sdk
- License: Apache 2.0
Metadata
Release files for swarmauri_xmp_gif 0.11.0.dev1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| swarmauri_xmp_gif-0.11.0.dev1.tar.gz | 3.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| swarmauri_xmp_gif-0.11.0.dev1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 7.6 kB
Release files / swarmauri_xmp_gif-0.11.0.dev1.tar.gz
| Download URL | swarmauri_xmp_gif-0.11.0.dev1.tar.gz |
|---|---|
| Size | 3.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
8ab478c60cdba4f0495c2c634e9fb481feb222d5aaff847dad41c067f2e14cbf
|
|
BLAKE2b-256 checksum How to use checksums |
52e3f46f7c3e9a16d1f2800fca92dde57f4eec2c0c2a03857035d959629a4efe
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / swarmauri_xmp_gif-0.11.0.dev1-py3-none-any.whl
| Download URL | swarmauri_xmp_gif-0.11.0.dev1-py3-none-any.whl |
|---|---|
| Size | 4.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
5f1c89cdecb949cb6df3e8597aefcd97774a7b69a6e4f2e77cf65f475bf33801
|
|
BLAKE2b-256 checksum How to use checksums |
6ae138241b03a9e098ba18d768f59f9f22dc19548c5bcd3b124e6c11787216eb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|