swarmauri_xmp_pdf 0.1.1.dev32__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_pdf
|
|
3
|
+
Version: 0.1.1.dev32
|
|
4
|
+
Summary: PDF 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,pdf
|
|
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_pdf/">
|
|
31
|
+
<img src="https://img.shields.io/pypi/dm/swarmauri_xmp_pdf" alt="PyPI - Downloads"/></a>
|
|
32
|
+
<a href="https://hits.sh/github.com/swarmauri/swarmauri-sdk/tree/master/pkgs/standards/swarmauri_xmp_pdf/">
|
|
33
|
+
<img alt="Hits" src="https://hits.sh/github.com/swarmauri/swarmauri-sdk/tree/master/pkgs/standards/swarmauri_xmp_pdf.svg"/></a>
|
|
34
|
+
<a href="https://pypi.org/project/swarmauri_xmp_pdf/">
|
|
35
|
+
<img src="https://img.shields.io/pypi/pyversions/swarmauri_xmp_pdf" alt="PyPI - Python Version"/></a>
|
|
36
|
+
<a href="https://pypi.org/project/swarmauri_xmp_pdf/">
|
|
37
|
+
<img src="https://img.shields.io/pypi/l/swarmauri_xmp_pdf" alt="PyPI - License"/></a>
|
|
38
|
+
<a href="https://pypi.org/project/swarmauri_xmp_pdf/">
|
|
39
|
+
<img src="https://img.shields.io/pypi/v/swarmauri_xmp_pdf?label=swarmauri_xmp_pdf&color=green" alt="PyPI - swarmauri_xmp_pdf"/></a>
|
|
40
|
+
</p>
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
# swarmauri_xmp_pdf
|
|
45
|
+
|
|
46
|
+
`swarmauri_xmp_pdf` defines the `PDFXMP` scaffold so PDF metadata streams can adopt Swarmauri's XMP lifecycle once implemented.
|
|
47
|
+
|
|
48
|
+
## Features
|
|
49
|
+
|
|
50
|
+
- **Future-proof** – defines the API surface for PDF metadata before implementation begins.
|
|
51
|
+
- **Registry-integrated** – extends `EmbedXmpBase`, so discovery happens automatically once functionality ships.
|
|
52
|
+
- **Clear guidance** – explicit errors communicate the current development status to downstream users.
|
|
53
|
+
|
|
54
|
+
## Installation
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
# pip
|
|
58
|
+
pip install swarmauri_xmp_pdf
|
|
59
|
+
|
|
60
|
+
# uv
|
|
61
|
+
uv add swarmauri_xmp_pdf
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## Usage
|
|
65
|
+
|
|
66
|
+
```python
|
|
67
|
+
from swarmauri_xmp_pdf import PDFXMP
|
|
68
|
+
|
|
69
|
+
handler = PDFXMP()
|
|
70
|
+
|
|
71
|
+
try:
|
|
72
|
+
handler.remove_xmp(b"%PDF-1.7...")
|
|
73
|
+
except NotImplementedError:
|
|
74
|
+
print("PDF XMP support will arrive in a future release.")
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### Why it works
|
|
78
|
+
|
|
79
|
+
- **Future-proof** – defines the API surface for PDF metadata before implementation begins.
|
|
80
|
+
- **Registry-integrated** – extends `EmbedXmpBase`, so discovery happens automatically once functionality ships.
|
|
81
|
+
- **Clear guidance** – explicit errors communicate the current development status to downstream users.
|
|
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_pdf/">
|
|
6
|
+
<img src="https://img.shields.io/pypi/dm/swarmauri_xmp_pdf" alt="PyPI - Downloads"/></a>
|
|
7
|
+
<a href="https://hits.sh/github.com/swarmauri/swarmauri-sdk/tree/master/pkgs/standards/swarmauri_xmp_pdf/">
|
|
8
|
+
<img alt="Hits" src="https://hits.sh/github.com/swarmauri/swarmauri-sdk/tree/master/pkgs/standards/swarmauri_xmp_pdf.svg"/></a>
|
|
9
|
+
<a href="https://pypi.org/project/swarmauri_xmp_pdf/">
|
|
10
|
+
<img src="https://img.shields.io/pypi/pyversions/swarmauri_xmp_pdf" alt="PyPI - Python Version"/></a>
|
|
11
|
+
<a href="https://pypi.org/project/swarmauri_xmp_pdf/">
|
|
12
|
+
<img src="https://img.shields.io/pypi/l/swarmauri_xmp_pdf" alt="PyPI - License"/></a>
|
|
13
|
+
<a href="https://pypi.org/project/swarmauri_xmp_pdf/">
|
|
14
|
+
<img src="https://img.shields.io/pypi/v/swarmauri_xmp_pdf?label=swarmauri_xmp_pdf&color=green" alt="PyPI - swarmauri_xmp_pdf"/></a>
|
|
15
|
+
</p>
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
# swarmauri_xmp_pdf
|
|
20
|
+
|
|
21
|
+
`swarmauri_xmp_pdf` defines the `PDFXMP` scaffold so PDF metadata streams can adopt Swarmauri's XMP lifecycle once implemented.
|
|
22
|
+
|
|
23
|
+
## Features
|
|
24
|
+
|
|
25
|
+
- **Future-proof** – defines the API surface for PDF metadata before implementation begins.
|
|
26
|
+
- **Registry-integrated** – extends `EmbedXmpBase`, so discovery happens automatically once functionality ships.
|
|
27
|
+
- **Clear guidance** – explicit errors communicate the current development status to downstream users.
|
|
28
|
+
|
|
29
|
+
## Installation
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
# pip
|
|
33
|
+
pip install swarmauri_xmp_pdf
|
|
34
|
+
|
|
35
|
+
# uv
|
|
36
|
+
uv add swarmauri_xmp_pdf
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Usage
|
|
40
|
+
|
|
41
|
+
```python
|
|
42
|
+
from swarmauri_xmp_pdf import PDFXMP
|
|
43
|
+
|
|
44
|
+
handler = PDFXMP()
|
|
45
|
+
|
|
46
|
+
try:
|
|
47
|
+
handler.remove_xmp(b"%PDF-1.7...")
|
|
48
|
+
except NotImplementedError:
|
|
49
|
+
print("PDF XMP support will arrive in a future release.")
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### Why it works
|
|
53
|
+
|
|
54
|
+
- **Future-proof** – defines the API surface for PDF metadata before implementation begins.
|
|
55
|
+
- **Registry-integrated** – extends `EmbedXmpBase`, so discovery happens automatically once functionality ships.
|
|
56
|
+
- **Clear guidance** – explicit errors communicate the current development status to downstream users.
|
|
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_pdf"
|
|
3
|
+
version = "0.1.1.dev32"
|
|
4
|
+
description = "PDF 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
|
+
'pdf',
|
|
31
|
+
]
|
|
32
|
+
|
|
33
|
+
[project.urls]
|
|
34
|
+
Homepage = "https://github.com/swarmauri/swarmauri-sdk"
|
|
35
|
+
|
|
36
|
+
[project.entry-points.'swarmauri.xmp_handlers']
|
|
37
|
+
PDFXMP = "swarmauri_xmp_pdf:PDFXMP"
|
|
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,26 @@
|
|
|
1
|
+
"""PDF XMP handler scaffold."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from swarmauri_base import register_type
|
|
6
|
+
from swarmauri_base.xmp import EmbedXmpBase
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
@register_type(resource_type=EmbedXmpBase)
|
|
10
|
+
class PDFXMP(EmbedXmpBase):
|
|
11
|
+
"""Placeholder handler for PDF metadata streams."""
|
|
12
|
+
|
|
13
|
+
def supports(self, header: bytes, path: str) -> bool:
|
|
14
|
+
return path.lower().endswith(".pdf") or header.startswith(b"%PDF-")
|
|
15
|
+
|
|
16
|
+
def read_xmp(self, data: bytes) -> str | None:
|
|
17
|
+
raise NotImplementedError("PDF XMP read not implemented yet")
|
|
18
|
+
|
|
19
|
+
def write_xmp(self, data: bytes, xmp_xml: str) -> bytes:
|
|
20
|
+
raise NotImplementedError("PDF XMP write not implemented yet")
|
|
21
|
+
|
|
22
|
+
def remove_xmp(self, data: bytes) -> bytes:
|
|
23
|
+
raise NotImplementedError("PDF XMP remove not implemented yet")
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
__all__ = ["PDFXMP"]
|