Office document validators, policies, and metadata for UploadKit.
OOXML/ODF structure and security checks (macros, external links, embeds) that
plug into UploadPolicy.validators without modifying UploadKit Core.
Use for DOCX, XLSX, PPTX, ODT, and ODS uploads that must stay macro-free by default.
- Do not edit or convert office documents here.
- Do not put generic MIME/filename checks here (see
uploadkit-security).
Requires Python 3.10+. No extra native dependencies (stdlib zipfile + XML).
pip install uploadkit-officefrom uploadkit import Uploader
from uploadkit_office import DocxPolicy, OfficePolicy, OfficeKind
uploader = Uploader(DocxPolicy(max_size=10 * 1024 * 1024), storage=my_storage)
# Or allow multiple kinds:
policy = OfficePolicy(kinds=frozenset({OfficeKind.DOCX, OfficeKind.XLSX}))| Symbol | Kind |
|---|---|
OfficePolicy / DocxPolicy / XlsxPolicy / PptxPolicy |
Public |
OfficeKind / OfficeMetadata / inspect_office |
Public |
OfficeStructureValidator / OfficeSecurityValidator / OfficeSheetLimitValidator |
Public |
default_office_validators / default_async_office_validators |
Public |
| Async validator equivalents | Public |
The coverage badge is a measured total from
coverage report --include='src/*', not an aspirational 100%. CI enforces
--fail-under=80.
Most of the remaining gap is defensive and format-variant code in metadata.py
(edge-case ZIP/ODF parsing, zip-bomb heuristics). Validators and policies are
fully covered. Unlike Core / framework adapters, this package does not claim
100% yet — fixtures for those branches are welcome.
See CHANGELOG.md.
See CONTRIBUTING.md.