swarmauri_xmp_mp4 0.1.1.dev31__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: swarmauri_xmp_mp4
|
|
3
|
+
Version: 0.1.1.dev31
|
|
4
|
+
Summary: ISO-BMFF handler scaffold for embedding and extracting XMP packets in Swarmauri runtimes.
|
|
5
|
+
License-Expression: Apache-2.0
|
|
6
|
+
License-File: LICENSE
|
|
7
|
+
Keywords: swarmauri,sdk,standards,xmp,mp4
|
|
8
|
+
Author: Jacob Stewart
|
|
9
|
+
Author-email: jacob@swarmauri.com
|
|
10
|
+
Requires-Python: >=3.10,<3.13
|
|
11
|
+
Classifier: License :: OSI Approved :: Apache Software License
|
|
12
|
+
Classifier: Natural Language :: English
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
17
|
+
Classifier: Development Status :: 2 - Pre-Alpha
|
|
18
|
+
Classifier: Programming Language :: Python
|
|
19
|
+
Classifier: Programming Language :: Python :: 3
|
|
20
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
21
|
+
Requires-Dist: swarmauri_base
|
|
22
|
+
Requires-Dist: swarmauri_core
|
|
23
|
+
Project-URL: Homepage, https://github.com/swarmauri/swarmauri-sdk
|
|
24
|
+
Description-Content-Type: text/markdown
|
|
25
|
+
|
|
26
|
+

|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
<p align="center">
|
|
30
|
+
<a href="https://pypi.org/project/swarmauri_xmp_mp4/">
|
|
31
|
+
<img src="https://img.shields.io/pypi/dm/swarmauri_xmp_mp4" alt="PyPI - Downloads"/></a>
|
|
32
|
+
<a href="https://hits.sh/github.com/swarmauri/swarmauri-sdk/tree/master/pkgs/standards/swarmauri_xmp_mp4/">
|
|
33
|
+
<img alt="Hits" src="https://hits.sh/github.com/swarmauri/swarmauri-sdk/tree/master/pkgs/standards/swarmauri_xmp_mp4.svg"/></a>
|
|
34
|
+
<a href="https://pypi.org/project/swarmauri_xmp_mp4/">
|
|
35
|
+
<img src="https://img.shields.io/pypi/pyversions/swarmauri_xmp_mp4" alt="PyPI - Python Version"/></a>
|
|
36
|
+
<a href="https://pypi.org/project/swarmauri_xmp_mp4/">
|
|
37
|
+
<img src="https://img.shields.io/pypi/l/swarmauri_xmp_mp4" alt="PyPI - License"/></a>
|
|
38
|
+
<a href="https://pypi.org/project/swarmauri_xmp_mp4/">
|
|
39
|
+
<img src="https://img.shields.io/pypi/v/swarmauri_xmp_mp4?label=swarmauri_xmp_mp4&color=green" alt="PyPI - swarmauri_xmp_mp4"/></a>
|
|
40
|
+
</p>
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
# swarmauri_xmp_mp4
|
|
45
|
+
|
|
46
|
+
`swarmauri_xmp_mp4` publishes the `MP4XMP` scaffold so ISO-BMFF containers (MP4, MOV, HEIF, AVIF) can eventually embed XMP packets via UUID boxes.
|
|
47
|
+
|
|
48
|
+
## Features
|
|
49
|
+
|
|
50
|
+
- **Design-first** – establishes the interface contract for ISO-BMFF metadata operations.
|
|
51
|
+
- **Registry-native** – extends `EmbedXmpBase`, ensuring managers can discover it automatically.
|
|
52
|
+
- **Expectation management** – explicit `NotImplementedError` keeps integrators aware of remaining work.
|
|
53
|
+
|
|
54
|
+
## Installation
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
# pip
|
|
58
|
+
pip install swarmauri_xmp_mp4
|
|
59
|
+
|
|
60
|
+
# uv
|
|
61
|
+
uv add swarmauri_xmp_mp4
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## Usage
|
|
65
|
+
|
|
66
|
+
```python
|
|
67
|
+
from swarmauri_xmp_mp4 import MP4XMP
|
|
68
|
+
|
|
69
|
+
handler = MP4XMP()
|
|
70
|
+
|
|
71
|
+
try:
|
|
72
|
+
handler.write_xmp(b"\x00\x00\x00\x18ftypmp42...", "<rdf:RDF>...</rdf:RDF>")
|
|
73
|
+
except NotImplementedError:
|
|
74
|
+
print("MP4 XMP support is forthcoming.")
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### Why it works
|
|
78
|
+
|
|
79
|
+
- **Design-first** – establishes the interface contract for ISO-BMFF metadata operations.
|
|
80
|
+
- **Registry-native** – extends `EmbedXmpBase`, ensuring managers can discover it automatically.
|
|
81
|
+
- **Expectation management** – explicit `NotImplementedError` keeps integrators aware of remaining work.
|
|
82
|
+
|
|
83
|
+
## Project Resources
|
|
84
|
+
|
|
85
|
+
- Source: <https://github.com/swarmauri/swarmauri-sdk>
|
|
86
|
+
- License: Apache 2.0
|
|
87
|
+
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+

|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
<p align="center">
|
|
5
|
+
<a href="https://pypi.org/project/swarmauri_xmp_mp4/">
|
|
6
|
+
<img src="https://img.shields.io/pypi/dm/swarmauri_xmp_mp4" alt="PyPI - Downloads"/></a>
|
|
7
|
+
<a href="https://hits.sh/github.com/swarmauri/swarmauri-sdk/tree/master/pkgs/standards/swarmauri_xmp_mp4/">
|
|
8
|
+
<img alt="Hits" src="https://hits.sh/github.com/swarmauri/swarmauri-sdk/tree/master/pkgs/standards/swarmauri_xmp_mp4.svg"/></a>
|
|
9
|
+
<a href="https://pypi.org/project/swarmauri_xmp_mp4/">
|
|
10
|
+
<img src="https://img.shields.io/pypi/pyversions/swarmauri_xmp_mp4" alt="PyPI - Python Version"/></a>
|
|
11
|
+
<a href="https://pypi.org/project/swarmauri_xmp_mp4/">
|
|
12
|
+
<img src="https://img.shields.io/pypi/l/swarmauri_xmp_mp4" alt="PyPI - License"/></a>
|
|
13
|
+
<a href="https://pypi.org/project/swarmauri_xmp_mp4/">
|
|
14
|
+
<img src="https://img.shields.io/pypi/v/swarmauri_xmp_mp4?label=swarmauri_xmp_mp4&color=green" alt="PyPI - swarmauri_xmp_mp4"/></a>
|
|
15
|
+
</p>
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
# swarmauri_xmp_mp4
|
|
20
|
+
|
|
21
|
+
`swarmauri_xmp_mp4` publishes the `MP4XMP` scaffold so ISO-BMFF containers (MP4, MOV, HEIF, AVIF) can eventually embed XMP packets via UUID boxes.
|
|
22
|
+
|
|
23
|
+
## Features
|
|
24
|
+
|
|
25
|
+
- **Design-first** – establishes the interface contract for ISO-BMFF metadata operations.
|
|
26
|
+
- **Registry-native** – extends `EmbedXmpBase`, ensuring managers can discover it automatically.
|
|
27
|
+
- **Expectation management** – explicit `NotImplementedError` keeps integrators aware of remaining work.
|
|
28
|
+
|
|
29
|
+
## Installation
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
# pip
|
|
33
|
+
pip install swarmauri_xmp_mp4
|
|
34
|
+
|
|
35
|
+
# uv
|
|
36
|
+
uv add swarmauri_xmp_mp4
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Usage
|
|
40
|
+
|
|
41
|
+
```python
|
|
42
|
+
from swarmauri_xmp_mp4 import MP4XMP
|
|
43
|
+
|
|
44
|
+
handler = MP4XMP()
|
|
45
|
+
|
|
46
|
+
try:
|
|
47
|
+
handler.write_xmp(b"\x00\x00\x00\x18ftypmp42...", "<rdf:RDF>...</rdf:RDF>")
|
|
48
|
+
except NotImplementedError:
|
|
49
|
+
print("MP4 XMP support is forthcoming.")
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### Why it works
|
|
53
|
+
|
|
54
|
+
- **Design-first** – establishes the interface contract for ISO-BMFF metadata operations.
|
|
55
|
+
- **Registry-native** – extends `EmbedXmpBase`, ensuring managers can discover it automatically.
|
|
56
|
+
- **Expectation management** – explicit `NotImplementedError` keeps integrators aware of remaining work.
|
|
57
|
+
|
|
58
|
+
## Project Resources
|
|
59
|
+
|
|
60
|
+
- Source: <https://github.com/swarmauri/swarmauri-sdk>
|
|
61
|
+
- License: Apache 2.0
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
[project]
|
|
2
|
+
name = "swarmauri_xmp_mp4"
|
|
3
|
+
version = "0.1.1.dev31"
|
|
4
|
+
description = "ISO-BMFF handler scaffold for embedding and extracting XMP packets in Swarmauri runtimes."
|
|
5
|
+
license = "Apache-2.0"
|
|
6
|
+
readme = "README.md"
|
|
7
|
+
requires-python = ">=3.10,<3.13"
|
|
8
|
+
classifiers = [
|
|
9
|
+
"License :: OSI Approved :: Apache Software License",
|
|
10
|
+
"Natural Language :: English",
|
|
11
|
+
"Programming Language :: Python :: 3.10",
|
|
12
|
+
"Programming Language :: Python :: 3.11",
|
|
13
|
+
"Programming Language :: Python :: 3.12",
|
|
14
|
+
"Programming Language :: Python :: 3.13",
|
|
15
|
+
"Development Status :: 2 - Pre-Alpha",
|
|
16
|
+
"Programming Language :: Python",
|
|
17
|
+
"Programming Language :: Python :: 3",
|
|
18
|
+
"Programming Language :: Python :: 3 :: Only",
|
|
19
|
+
]
|
|
20
|
+
authors = [{ name = "Jacob Stewart", email = "jacob@swarmauri.com" }]
|
|
21
|
+
dependencies = [
|
|
22
|
+
"swarmauri_core",
|
|
23
|
+
"swarmauri_base",
|
|
24
|
+
]
|
|
25
|
+
keywords = [
|
|
26
|
+
'swarmauri',
|
|
27
|
+
'sdk',
|
|
28
|
+
'standards',
|
|
29
|
+
'xmp',
|
|
30
|
+
'mp4',
|
|
31
|
+
]
|
|
32
|
+
|
|
33
|
+
[project.urls]
|
|
34
|
+
Homepage = "https://github.com/swarmauri/swarmauri-sdk"
|
|
35
|
+
|
|
36
|
+
[project.entry-points.'swarmauri.xmp_handlers']
|
|
37
|
+
MP4XMP = "swarmauri_xmp_mp4:MP4XMP"
|
|
38
|
+
|
|
39
|
+
[tool.uv.sources]
|
|
40
|
+
swarmauri_core = { workspace = true }
|
|
41
|
+
swarmauri_base = { workspace = true }
|
|
42
|
+
|
|
43
|
+
[build-system]
|
|
44
|
+
requires = ["poetry-core>=1.0.0"]
|
|
45
|
+
build-backend = "poetry.core.masonry.api"
|
|
46
|
+
|
|
47
|
+
[dependency-groups]
|
|
48
|
+
dev = [
|
|
49
|
+
"pytest>=8.0",
|
|
50
|
+
"ruff>=0.9",
|
|
51
|
+
]
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"""ISO-BMFF XMP handler scaffold."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from typing import ClassVar, Tuple
|
|
6
|
+
|
|
7
|
+
from swarmauri_base import register_type
|
|
8
|
+
from swarmauri_base.xmp import EmbedXmpBase
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
@register_type(resource_type=EmbedXmpBase)
|
|
12
|
+
class MP4XMP(EmbedXmpBase):
|
|
13
|
+
"""Placeholder handler for ISO-BMFF containers."""
|
|
14
|
+
|
|
15
|
+
SUPPORTED_EXTENSIONS: ClassVar[Tuple[str, ...]] = (
|
|
16
|
+
".mp4",
|
|
17
|
+
".mov",
|
|
18
|
+
".heic",
|
|
19
|
+
".heif",
|
|
20
|
+
".avif",
|
|
21
|
+
)
|
|
22
|
+
|
|
23
|
+
def supports(self, header: bytes, path: str) -> bool:
|
|
24
|
+
lower = path.lower()
|
|
25
|
+
return lower.endswith(self.SUPPORTED_EXTENSIONS)
|
|
26
|
+
|
|
27
|
+
def read_xmp(self, data: bytes) -> str | None:
|
|
28
|
+
raise NotImplementedError("ISO-BMFF XMP read not implemented yet")
|
|
29
|
+
|
|
30
|
+
def write_xmp(self, data: bytes, xmp_xml: str) -> bytes:
|
|
31
|
+
raise NotImplementedError("ISO-BMFF XMP write not implemented yet")
|
|
32
|
+
|
|
33
|
+
def remove_xmp(self, data: bytes) -> bytes:
|
|
34
|
+
raise NotImplementedError("ISO-BMFF XMP remove not implemented yet")
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
__all__ = ["MP4XMP"]
|