Minor release adding a new summarize CLI, pydantic-based workflow descriptors, and various fixes for video document helpers and timestamp handling.
mmif summarizeCLI command, adapted from mmif-summarizer (#350)- Timepoint selection feature for
video_document_helper(#373)
mmif describeoutput now uses pydantic models for schema validation and auto-generated documentation (#367)mmif describeremoved source counts from workflow ID (#358)summarizeCLI aligned with other subcommand conventions (positional input, optional-o/--output, defaults to STDOUT) (#360)- Timestamps in view metadata now use UTC (
Zsuffix) instead of local time (#372) - Fixed
DocumentTypestype hint to useDocumentTypesBase(#353) - Caching for remote URI in video document helper to fix slow
get_framerateon non-file://documents (#357) - Documentation build migrated to "build-once, stay-forever" model via documentation hub (#344)
Updated output formats of the experimental mmif describe command
mmif describecommand- simplified output JSON format of single-mmif input (
mmif.utils.workflow_helper.describe_single_mmif) - more informative output from multi-mmif input (
mmif.utils.workflow_helper.describe_mmif_collection)
- simplified output JSON format of single-mmif input (
Note
mmif describe (and the underlying mmif.utils.workflow_helper) is still experimental and subject to change in future releases without notice. Backward compatibility is not guaranteed.
This version is minor release with addition of a new cli (describe), lots of in-line documentation updates, and deprecation of some "getter" methods
mmif describecommand to summarize views and annotations of a give MMIF file (#339).
- "list-like" objects in MMIF (
DataList,DocumentsList,ViewsList,AnnotationsList) -get()method is now deprecated (#295). Use their parent containers'getmethods
mmif.views.get(some_view_id) # will show deprecation warning as of 1.1.3 (note that there's no 1.1.3, we moved from 1.1.2 to 1.2.0)
# instead use
mmif.get(some_view_id)
# same for view.annotations.get(ann_id) ==> view.get(ann_id)
- comparing two Mmif objects no longer depends on buggy
deepdifflibrary, and handled more robustly (#311) - many outdated documentation updates
Patch release with a hotfix of a bug.
- Fixed bug with handling "list of ID" props in 1.0.x MMIF.
Patch release to support installation on python 3.12 and newer (fixes #314).
setup.pyis now compatible with the latest setuptools (80) .- Since python 3.12 no longer ship
setuptoolsas a part of standard installation, added setuptools as adevdependency.
This is a minor version release, but it includes several significant changes and improvements across the codebase.
- Added support for synonyms and property aliases from LAPPS type migration in MMIF spec 1.1.0 (#321).
- Migrated CLI modules from
clams-pythontommif(#317).
- Updated minimum Python version to 3.10 (#310).
- Transitioned
Annotation.idto a "long" form for better disambiguation as now explicitly specified in MMIF 1.1.0 (#318). - Fixed missing ISO format conversion in timeunit helper (#315).
- Fixed issues with videodocument helper's
extract_frames_as_imagesdestroying input frame lists (#303). - Miscellaneous cleanup and improvements on documentation and unused code.
Patch to fix a critical bug.
- bugfix when
Annotationinstance and "warnings" view both are involved, MMIF is not properly returned (#299)
Patch release with a bugfix.
- document location (docloc) plugins now have a common function to provide formatting guidelines (#297)
- fixed bug when adding custom properties to a newly generated
TextDocumentobject (#290)
This release adds caching mechanism for annotation alignments (via Alignment annotation, the alignment via targets property is not yet supported).
Annotationclass now has.aligned_to_by(alignment: Annotation)and.get_all_aligned()method to quickly retrieve cached alignment counterparts (#285). The caching occurs- when MMIF JSON is deserialized
- when
view.add_annotationorview.new_annotationis called
mmif.utils.text_document_helper.slice_textreceived a major speed boost from the alignment caching.
This release includes an experimental implementation for helpers to slice text_value from text documents.
mmif.utils.text_document_helpermodule to address #280
Minor release to add/improve helper methods.
video_document_helpernow has convenient helpers to grabTimeFrameannotations'representativepoints. (#278)
Mmif.__getitem__()now works with short annotation IDs (#279)
This release contains small fixes and improvements.
- added getter helpers at various levels to access errors encoded in MMIF json in human-friendly format
Mmif.get_view_with_errorMmif.get_views_with_errorMmif.get_last_errorView.get_errorViewMetadata.get_error_as_text
- "empty" annotation property values are correctly retrievable
This version includes small, but helpful improvements.
Annotationobject now haslong_idproperty that returns the cross-view reference-ready ID inview_id:annotation_idform- time unit conversion is now more stable (change of rounding)
- video frame sampling can now use fractional sampling rate (in terms of frame numbers)
Hot-fixing a wrong field name.
views[].metadata.app_configurationis renamed toappConfiguration, correctly following the MMIF json schema.
This release includes changes from MMIF spec 1.0.3 and 1.0.4, and a new helper module to handle sequence annotations
mmif.utils.sequence_helpermodule (fixing #267) is added to provide- a generalized label re-mapper for "post-binning" of labels
- conversion from a list of CLAMS annotations (with
classificationprops) into a list of reals (scores by labels), can be combined with the label re-mapper mentioned above smooth_outlying_short_intervals(): a simple smoothing algorithm by trimming "short" outlier sequences
- added support for the new
views[].metadata.appConfigurationfield (clamsproject/mmif#208 & #269)
- fixed querying views by strings of annotation types weren't working (#263)
- added annotation type prop aliases added in MMIF 1.0.3 (clamsproject/mmif#222)
- getting start or end anchor points on annotations objects only with
targetsare no longer require the targets list is already sorted - sphinx-based public API documentation for old versions is back
This version includes minor bug fixes and support for MMIF spec 1.0.2.
- support for aliases for annotation properties. This is due to MMIF spec 1.0.2's introduction of the general
labelproperty that replacesframeTypeandboxTypeproperties inTimeFrameandBoundingBoxrespectively. Specifically, for example, the value oflabelorframeTypeproperty of aTimeFrameannotation object is accessible either viatimeframe.get_property("label")ortimeframe.get_property("frameType"). This is primarily only for backward-compatibility , and for the future, usingframeType/boxTypeis NOT recommended in preference to the more generallabelproperty.
- The
mmif-pythonSDK website no longer holds API docs for old versions. - ISO-like time unit conversion now consistently returns only to third decimal place.
This is a feature-packed release.
- Based on MMIF 1.0.1
- Added a default handler for
http:///https://document locations - Added
get_startandget_endmethods toMmifclass to help getting start and end points ofIntervalandTimepointvocabulrary types (#253) - Added a conversion helper for ISO-format time strings (#258)
- Fixed
Document.text_value()was only working withfile://location (#246) Annotationobjects'propertiesattribute is no longer limited to primitives and list of primitives (clamsproject/mmif#215)- Fixed annotation URI equivalence checker wasn't working in set-like collections (#257)
This release includes polishing and bug fixes around the mmif.utils.video_document_helper module.
- API documentation for the module is now included in the public documentation website (#242)
- when opening a video file using
vdhelper.capturefunction, an error is now raised the video file is not found in the local file system (#243) frameCountanddurationof a video are recorded as document properties #244)Annotation.get_propertynow provide more intuitive access to "view-level" annotation properties found inview.metadata.contains.some_at_typedict
Minor updates in VideoDucment helper module
- when a VideoDocument is open, the total duration of the video is now recorded as a document property.
This release relaxes checks for optional CV dependencies in video utils module, so that users don't have install all of [cv] dependencies when they don't use them all.
- when any of
[cv]dependencies is not found duringmmif.utils.video_document_helpermodule is being loaded, instead of raising and an error, a warning is issued.
This release contains a minor fix in video_document_helper module
- fixed time unit normalization was missing some important string
This release fixes installation error in the previous version.
This release is primarily about adding mmif.utils package and mmif.utils.video_document_helper module. The module provides many helper functions to handle frame-based and time-based documents and annotations.
mmif.utilspackage andmmif.utils.video_document_helpermodule (#233)
- dropped support for
mmif-utils-plugins (#230) - fixed bug in
Annotation.get_property(#232)
This release includes support for plugins, and a "magic" helper for using Annotation annotations for documents in MMIF.
- a "magic" helper to automatically generate the "capital"
Annotationannotations when an app adds properties toDocumentobjects usingDocument.add_property()method. (#226) - support for
mmif-docloc-plugins for arbitrary URI scheme inDocument.locationproperty. (#222) - (EXPERIMENTAL) support for
mmif-utils-plugins for monkeypatchingMmifObjectclasses (#224)
mmif-python 1.0.0 included MMIF 0.5.0 instead of MMIF 1.0.0. This release fixes it
- now based on MMIF specification 1.0.0
This release will be numbered as 1.0.0, but actually is re-numbering of 0.5.2, hence no technical changes are included in 1.0.0.
This release fixes an oversight bug in __eq__ in MmifObjects. Also includes updates of the sphinx documentation.
- Fixed bug some fields must be ignored when computing differences in
__eq__(#214 ) - Updated sphinx documentation (#215 )
This release includes "fuzzy" matching of at_types and sanitized serialize of Mmif objects.
- CLAMS vocab type subclasses now support "fuzzy"
__eq__check (#209 . Fuzzy matching will ignore differences in versions of two at_types, but still issue python warnings when there's a version mismatch. By default, all CLAMS vocab type subclasses are initiated with fuzzy mode "on". Mmif. serializenow supports sanitizing the output JSON (#205) . Can be turned on by passingsanitize=Trueargument. Sanitizing will perform- removal of non-existing annotation types from
containsmetadata - validating output using built-in MMIF jsonschema
- removal of non-existing annotation types from
- fixed a small bug in
Mmif.get_alignments - fixed
view.metadataserialized into an invalid MMIF due to a oneOf condition in jsonschema
This release is a synchronization of mmif-python with the latest MMIF 0.5.0 release.
- Enum-like subclasses for annotation
@types in themmif.vocabularypackage are updated to accommodate the new way of checking I/O compatibility (as__eq__()in the SDK).
This is a small PR that doesn't include any code in the SDK, but the target MMIF version is bumped up to 0.4.2.
This release includes
- removed "freezing" behaviors of MMIF objects (#193)
- made
propertiesmap to behave like a map (#194) - updated python dependencies (#196, #198)
This release includes
- fixes in the development & release pipelines. (#189 #187)
- upgrade in the text retrieval from TextDocument (#185)
This release contains minor bug fixes
- fixed
view.new_annotationwasn't adding annotation properties correctly - fixed how
developversion of vocab URIs were handled - colon (
:) is now a class constant for gluing view_id and annotation_id
This release contains small but breaking changes. See d5198cb2304ad488975644a87fba51906abc5299 for details.
This release fixes minor bugs from the previous version.
This release adds new_textdocument helper method to View class.
The release contains a small bug fix in deserialization of Mmif object.
New release to correspond to the MMIF specification 0.4.0.
The release includes ...
- re-designed
vocabularymodule and howAnnotationTypesworks better with version compatibility (#64) - automatic annotation ID generation (also #64)
- full implementation of backward (+forward?) version compatibility is WIP (#163)
- various bug fixes and clean-up
This release includes major bug fixes (#131, #164) and a new documentation generation pipeline (#167).
This release contains various bug fixes.
A version to match changes in the specification 0.3.1.
0.3.1 contains mostly small bugfixes.
release note for mmif-python 0.3.0
- new in specification: added support for
parameters - new in specification: file paths are now stored as
file://URIs - bugfix: added type restrictions to annotation properties