We’re happy to announce the release of GroupDocs.Metadata for Python v26.9, available as of September 2026. This release upgrades the underlying engine from 26.6 to 26.8, introduces a command-line interface, adds support for five new archive formats (Apple Archive, GZIP, BZ2, XZ, and Zstandard), restores PowerPoint presentation support on all platforms, and fixes critical compatibility issues affecting Python 3.5–3.7 and older Linux/macOS systems. Note that this release includes a breaking change: 105 format classes have been moved from sub-namespaces into their parent modules.
What’s new in this release
- [Feature] Ship command line interface within package (METADATAPYTHON-39)
- [Feature] Add support for reading Apple Archive (AAR), GZIP, BZ2, XZ and Zstandard archives (METADATAPYTHON-62)
- [Enhancement] Update GroupDocs.Metadata engine from 26.6 to 26.8 (METADATAPYTHON-63)
- [Enhancement] Update the embedded .NET runtime from 10.0.0 to 10.0.12 (METADATAPYTHON-64)
- [Enhancement] Move the Ogg, FB2, Mobi, MSG, DNG, SVG, raw tag, CR2 and 3D format classes into their parent modules, as in the 26.8 engine (METADATAPYTHON-65)
- [Enhancement] Remove the
libgdiplus/mono-libgdiplusrequirement on Linux and macOS (METADATAPYTHON-66) - [Enhancement] Add
FileTypeFeatureSupportand theProductFeature,SupportLevelandFormatFamilyenums to the Python API (METADATAPYTHON-67) - [Enhancement] Add
get()to indexed packages and collections,append()toIptcRecordSet, and a no-argumentRectangle()constructor (METADATAPYTHON-68) - [Enhancement] Publish the API reference for every module, including
formats.*andstandards.*(METADATAPYTHON-69) - [Fix] Cannot open PowerPoint presentations:
DllNotFoundExceptionforaspose.slides.drawing.capi(METADATAPYTHON-50) - [Fix] Reading an EXIF tag by
TiffTagIDfails on Python 3.5 – 3.10 (METADATAPYTHON-51) - [Fix] Cannot use the package on Python 3.5 – 3.7 (METADATAPYTHON-70)
- [Fix] pip installs the package on Linux and macOS versions that cannot run it (METADATAPYTHON-71)
Public API changes
New classes and members
groupdocs.metadata.formats.archive:AarRootPackage,AarPackage,AarFile,GzipRootPackage,GzipPackage,Bz2RootPackage,Bz2Package,XzRootPackage,XzPackage,ZstdRootPackage,ZstdPackage.FileType.AAR,FileType.GZIP,FileType.BZ2,FileType.XZ,FileType.ZSTD, the same five members ofFileFormatandMetadataType, andFileType.AVIF.groupdocs.metadata.common:FileTypeFeatureSupport,FeatureSupport, and theProductFeature,SupportLevelandFormatFamilyenums.get()on indexed packages and collections —MetadataPackage,ExifDictionaryBasePackage,IptcRecordSet,IptcRecord,XmpLangAltand others — as an alternative topackage[key]. Theitemproperty these classes exposed could not be called and is gone.IptcRecordSet.append(), and a no-argumentRectangle()constructor.
Moved to the parent module
| Old module (26.7) | New module (26.9) | Classes |
|---|---|---|
groupdocs.metadata.formats.audio.ogg |
groupdocs.metadata.formats.audio |
OggPackage, OggRootPackage, OggUserComment |
groupdocs.metadata.formats.ebook.fb2 |
groupdocs.metadata.formats.ebook |
Fb2Author, Fb2DocumentInfo, Fb2Genre, Fb2PublishInfo, Fb2Sequence, Fb2TitleInfo |
groupdocs.metadata.formats.ebook.mobi |
groupdocs.metadata.formats.ebook |
MobiHeader, MobiPackage, MobiRootPackage, PDBHeader |
groupdocs.metadata.formats.fb2 |
groupdocs.metadata.formats.ebook |
Fb2Package |
groupdocs.metadata.formats.email.msg |
groupdocs.metadata.formats.email |
MsgKnownProperties |
groupdocs.metadata.formats.image.dng |
groupdocs.metadata.formats.image |
DngPackage, DngRootPackage |
groupdocs.metadata.formats.image.svg |
groupdocs.metadata.formats.image |
SvgPackage, SvgRootPackage |
groupdocs.metadata.formats.image |
groupdocs.metadata.formats.raw |
RawDoubleTag, RawFloatTag, RawRationalTag, RawSByteTag, RawSLongTag, RawSRationalTag, RawSShortTag, RawUndefinedTag |
groupdocs.metadata.formats.raw.tag |
groupdocs.metadata.formats.raw |
RawTag, RawArrayTag, RawAsciiTag, RawByteTag, RawLongTag, RawShortTag |
groupdocs.metadata.formats.raw.cr2 |
groupdocs.metadata.formats.raw |
56 of its 58 classes (Cr2MakerNotePackage, Cr2CameraSettingsPackage, the Cr2…Index enums, …) |
groupdocs.metadata.formats.three_d.dae / .fbx / .gltf / .stl / .three_ds |
groupdocs.metadata.formats.three_d |
DaeNode, DaePackage, DaeRootPackage, the Fbx…, Gltf…, Stl… and ThreeDS… classes |
The 13 old modules are removed. Objects returned by the API are unaffected: root.ogg_package and the like return the same classes, now imported from the new modules.
New features
Command line: groupdocs-metadata
Installing the package puts a groupdocs-metadata command on PATH (also python -m groupdocs.metadata), for shells, Make rules and CI steps:
groupdocs-metadata info photo.jpg # format, MIME type, size, pages, encryption
groupdocs-metadata show report.docx --tag person # author, editor, ... with their tags
groupdocs-metadata clean report.docx # writes report.clean.docx
groupdocs-metadata remove photo.jpg --tag person.creator -o photo-anon.jpg
groupdocs-metadata export report.pdf -o metadata.json # json, csv, xlsx, xls or xml
groupdocs-metadata list-formats
--tag takes a category (person, time, content, …) or one tag in it (person.creator), in the same form show prints. Files are read through a stream, so read-only inputs work, and clean / remove never overwrite the input unless -o names it. Every command takes --password, and --license applies a license first.
Apple Archive, GZIP, BZ2, XZ and Zstandard archives
The 26.8 engine reads the metadata of five more archive formats. Each has its own root package in groupdocs.metadata.formats.archive:
from groupdocs.metadata import Metadata
with Metadata("archive.gz") as metadata:
print(metadata.get_document_info().file_type.file_format.name) # GZIP
print(metadata.get_root_package().gzip_package.total_entries)
with Metadata("archive.aar") as metadata:
aar = metadata.get_root_package().aar_package
print(aar.total_entries)
for entry in aar.files:
print(entry.name, entry.length, entry.is_directory)
bz2_package, xz_package and zstd_package work the same way (see Known Issues for the fields that are not filled in yet). In 26.7, GZIP, BZ2 and AAR files raised NotImplementedError, and XZ and Zstandard files were misread as MP3 audio.
PowerPoint presentations open again
Opening a PowerPoint file — .pptx, .ppt, .pot and the other presentation formats — failed in 26.7 on Windows, Linux and macOS with DllNotFoundException: Unable to load … aspose.slides.drawing.capi…, because the native library the engine needs for presentations was missing from the wheel. It ships in every 26.9 wheel, and on Windows the package now loads it itself, so presentations also open under the Microsoft Store Python, which does not search PATH for native libraries.
Code example
from groupdocs.metadata import Metadata
# Read GZIP metadata
with Metadata("archive.gz") as metadata:
print("Format:", metadata.get_document_info().file_type.file_format.name)
print("Total entries:", metadata.get_root_package().gzip_package.total_entries)
# Read Apple Archive metadata
with Metadata("archive.aar") as metadata:
aar = metadata.get_root_package().aar_package
print("Total files:", aar.total_entries)
for entry in aar.files:
print(f"- {entry.name} ({entry.length} bytes)")
How to get the update
PyPI
Install or upgrade via PyPI:
pip install groupdocs-metadata-net==26.9.0
Package page: groupdocs-metadata-net 26.9.0 on PyPI
Direct download
Download wheel files for all platforms from the GroupDocs.Metadata for Python 26.9 release page.