All notable changes to MGT-python will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Migrated project metadata and build configuration to
pyproject.toml(PEP 517/518/621).setup.pyandsetup.cfgare now stubs pointing to the new file. - Raised minimum Python version to 3.10; updated CI matrix to test 3.10, 3.11, and 3.12.
- Added a separate
lintCI job (ruff + mypy) to catch style and type issues early. - Added
noxfile.pyfor reproducible local development environments (nox -s tests,nox -s lint,nox -s coverage). - Added optional dependency extras:
musicalgestures[pose],[ml],[cli],[dev],[full]. - Added
musicalgestures/_enums.py:StrEnum-based enum types (FilterType,BlurType,CropMode,PoseModel,PoseDevice,DataFormat) with case-insensitive lookup. Fully backward-compatible with existing string parameters. - Added
musicalgestures/_exceptions.py: typed exception hierarchy (MgError→MgInputError,MgProcessingError,MgIOError,MgDependencyError). - Added
musicalgestures/_logging.py: module-levellogging.getLogger('musicalgestures')logger with aNullHandlerand aset_log_level()helper.
- Added
musicalgestures/_features.py:MgFeatures– a named time-series container for motion and audio descriptors. Supportsto_numpy(),to_dataframe(),to_json(),from_json(),from_dataframe(), NumPy array protocol, and a rich Jupyter_repr_html_display. - Added
musicalgestures/_stream.py:MgVideoReader– a context-manager-based streaming frame iterator (lazy, low-memory, FFmpeg-backed). - Added
_repr_html_()and_repr_mimebundle_()toMgImageandMgFigurefor rich inline display in Jupyter notebooks.
- Added
musicalgestures/_pose_estimator.py: abstractPoseEstimatorbase class,PoseEstimatorResultcontainer,MediaPipePoseEstimator(Google MediaPipe Pose, 33 landmarks, no model download required),OpenPosePoseEstimator(compatibility shim for the legacy OpenPose backend), andget_pose_estimator()factory function.
- Added
musicalgestures/_pipeline.py:MgPipeline– a scikit-learn–style pipeline that chains namedMgStepobjects. Supportstransform(),fit(),fit_transform(), and adescribe()method. - Added
musicalgestures/_dataset.py:MgDataset– labelled collection of media files withfrom_directory(),from_json(),train_test_split(),filter(),to_json(), and Jupyter_repr_html_. Also includesMgCorpus(directory-scanning convenience subclass) andMediaItem.
- Added
CHANGELOG.mdfollowing the Keep-a-Changelog format. - Added
CONTRIBUTING.mdwith a complete developer guide.
- Added
musicalgestures/cli.py: click-based command-line interface (musicalgestures info,motion,videograms,average,history,motiongrams,convert). - Updated
musicalgestures/__init__.pyto export all new public classes (MgFeatures,MgVideoReader,MgPipeline,MgStep,MgDataset,MgCorpus,MediaItem,PoseEstimator,MediaPipePoseEstimator,PoseEstimatorResult,get_pose_estimator, enums, exceptions,set_log_level).
tqdmadded as a core dependency (progress bars in downstream usage).- CI now installs the package from source (
pip install -e ".[dev]") and runspytest.
- Python 3.7 and 3.8 are no longer supported. The minimum required version is Python 3.10.
1.3.3 – 2024-01-01
- Minor changes for v1.3.3.