Releases: WheheoHu/pybmd
Releases · WheheoHu/pybmd
Release list
Resolve 21.0.2 Update
2026.2.0
API
Changes for DaVinci Resolve 21.0.2
Resolve
- Add
disable_background_tasks_for_current_resolve_session()- Disables all background tasks for the current Resolve session
Project
- Add
reset_intellisearch_analysis()- Clears Intellisearch analysis data (Studio/AI) - Add
generate_speech()- Generates an audioMediaPoolItemfromSpeechGenerationSettingsand (optionally) adds it to the timeline at a given timecode (Studio/AI)
MediaPoolItem
- Add
perform_audio_classification()- Classifies the clip's audio into categories/subcategories (Studio/AI) - Add
clear_audio_classification()- Clears the clip's audio classification (Studio/AI) - Add
remove_motion_blur()- Applies motion deblur, returns the newMediaPoolItem(Studio/AI) - Add
analyze_for_intellisearch()- Runs Intellisearch analysis (Studio/AI) - Add
analyze_for_slate()- Runs Slate analysis using aMarkerColor(Studio/AI) - Update
transcribe_audio()- Add optionaluse_speaker_detectionparameter
Folder
- Add
perform_audio_classification(),clear_audio_classification(),analyze_for_intellisearch(),analyze_for_slate()(Studio/AI) - Add
remove_motion_blur()- Returns a list of[original, new]MediaPoolItempairs (Studio/AI) - Update
transcribe_audio()- Add optionaluse_speaker_detectionparameter
settings module
- Add
SpeechGenerationSettings(Pydantic model) forProject.generate_speech - Add
MotionDeblurSettings(Pydantic model) forremove_motion_blur - Add
MarkerColorenum foranalyze_for_slate
Fixes
MediaPoolItem
- Fix
delete_marker_by_color()to callDeleteMarkersByColor(correct MediaPoolItem API name) - Fix
update_marker_custom_data()to callUpdateMarkerCustomData(was the typoUpdataMarkerCustomData);updata_marker_custom_data()kept as a deprecated alias - Fix
get_clip_property()/get_metadata()return type tostr | dictand make the key optional (returns a dict of all properties when no key is given)
TimelineItem
- Add
str | dictreturn annotation toget_property()
Gallery / GalleryStillAlbum
- Fix
Gallery.get_album_name()andGalleryStillAlbum.set_label()to unwrap the underlying Resolve object before passing it to the API
MediaPool / MediaStorage
- Fix
MediaPool.delete_clip_mattes(),MediaPool.get_clip_matte_list()andMediaStorage.add_clip_mattes_to_media_pool()to unwrap theMediaPoolItembefore passing it to the API
RenderSetting Update
2026.1.2
Project
set_render_settings()- Now supports partial updates. Only fields explicitly provided on theRenderSettingobject are sent to DaVinci Resolve (viamodel_dump(exclude_unset=True)); any unset field keeps its current value in DRRenderSetting- Breaking: all fields are now optional with no preset defaults (X | None = None). Previously every field was required. Construct with only the fields you want to change, e.g.RenderSetting(FrameRate=24.0)
Bugfix and Sample Update
2026.1.1
API
Timeline
add_marker()- Changeframe_idparameter type fromstrtointadd_marker()- Changedurationparameter type fromstrtoint(counted by frames)
TimelineItem
add_marker()- Changeframe_idparameter type fromstrtointadd_marker()- Changedurationparameter type fromstrtoint(counted by frames)
Docs
- Update samples for
StillManager
API Enhancements
2026.1.0
Infrastructure
Windows Support Fix
- Set PYTHON3HOME environment variable for virtual environments on Windows (e.g., created by uv) to fix compatibility issues with Windows virtual environments
API Enhancements
Version Management System
- Introduce comprehensive version checking system for API compatibility with DaVinci Resolve versions
- Add
version_info.pymodule withVersion,APIStatus, andVersionConstraintclasses - Create
VersionRegistryinversion_registry.pyto centralize API version constraints - Add version management decorators (
@require_version,@deprecated_in_version) for automatic compatibility checks - Update multiple modules (
timeline_item.py,gallery.py,media_pool.py,project.py, etc.) with version decorators
Type Safety Improvements
- Create
_resolve_types.pyto define protocols forBMDModuleandResolveObject - Add type casting and improved type hints across modules (
_init_bmd.py,timeline.py,timeline_item.py) - Enhanced error handling in timeline retrieval functions with proper exceptions
Refactoring
Pydantic Models
-
RenderSetting (settings.py): Convert from dataclass to Pydantic BaseModel with comprehensive validation
- Add
Fieldwith descriptions for all properties (moved from inline comments) - Add type constraints using
Literalfor restricted values:UniqueFilenameStyle:Literal[0, 1](0 for prefix, 1 for suffix)AlphaMode:Literal[0, 1](0 for Premultiplied, 1 for Straight)SubtitleFormat:Literal["BurnIn", "EmbeddedCaptions", "SeparateFile"]
- Add numeric validation constraints (ge=0 for MarkIn/MarkOut, gt=0 for dimensions/rates)
- Add
VideoQualitytype asint | Literal["Least", "Low", "Medium", "High", "Best"] - Add custom field validators for
VideoQualityandMarkOutvalidation
- Add
-
Item_Info (media_storage.py): Convert from dataclass to Pydantic BaseModel
- Add field descriptions and validation for
start_frameandend_frame(ge=0) - Update
add_item_list_to_media_pool()to usemodel_dump()instead ofasdict()
- Add field descriptions and validation for
-
Settings Module Cleanup:
- Remove
SettingParameterlegacy class - Remove
_get_resolve_object()and_get_resolve_constant()helper functions - Simplify imports and directly use
_resolve_objectfrom_init_bmd - Convert all settings classes to use Pydantic's
BaseModelandField - Add
BaseIndexSettingbase class withmodel_serializerfor index-based serialization
- Remove
UI Components
- Update
UI_Dispatcherto ignore unresolved attribute warnings - Fix
UI_Managerinitialization to correctly assign_ui_managerfrom_object
Data Handling
- Update
project.pyandproject_manager.pyto use Pydantic'smodel_dump()for data serialization - Refactor
export_type.pyto remove unnecessary checks and directly use the resolved object
Toolkits
- Adjust toolkit functions to return empty lists instead of
Nonefor consistency - Improve error handling in timeline retrieval functions
Happy New Year 2026
2026.0.1
API
TimelineItem
- Modify
get_property()- Returns the value of the specified property key or all properties if no key is provided - Add
set_property()- Sets the value of the specified property key
QoL improvement
2025.3.3
Toolkits
StillManager
export_stillnow includes still details in the returned dictionary
Refactoring
2025.3.2
Refactoring
- Add WrapperBase class to reduce code duplication in wrapper classes
Typo and Bug Fix
2025.3.1
Fixes
- Fix typo
gallert_still_album->gallery_still_albumin gallery.py - Fix typo
ture->truein docstrings (gallery.py, gallery_still_album.py) - Fix typo
MeidaPoolItem->MediaPoolItemin timeline_item.py - Fix typo
meida->mediain docstrings (timeline_item.py, media_pool.py) - Fix typo
succssful->successfulin docstrings (project.py, resolve.py) - Fix typo
delet_marker_at_frame->delete_marker_at_framein timeline_item.py - Fix typo
fram_num->frame_numin timeline_item.py - Fix typo
stero_eye->stereo_eyein media_storage.py - Fix typo
add_item_list_to_meida_pool->add_item_list_to_media_poolin media_storage.py - Fix typo
pen davinci->open davinciin resolve.py docstring - Fix typo
Porject->Projectin CHANGELOG.md - Fix bug in
ProjectManager.import_project()
Resolve 20.3.0 Update
2025.3.0
API
Changes for DaVinci Resolve 20.3.0
Resolve
- Add
get_fairlight_presets()- Returns a list of Fairlight preset names
Project
- Add
apply_fairlight_preset_to_current_timeline()- Applies a Fairlight preset to the current timeline
ProjectManager
- Update
create_project()- Now supports optionalmedia_location_pathparameter
GalleryStillAlbum
- Add
import_stills()- Imports stills from file paths into the album
Timeline
- Add adaptive audio track subtypes
ADAPTIVE_25throughADAPTIVE_36toOptionalSubTrackTypeenum
Toolkits
- Fix bug in
StillManager.grab_all_still()method with incorrect timeline timecode handling - Modify
StillManager.export_still()to includeclean_still_albumparameter to control album cleanup after export,default is False.
StillManager Update
2025.2.5
API
Gallery
- Fix
set_current_still_album()to unwrap the Resolve album object before passing it to the API
Toolkits
StillManager
- Create a dedicated still album named
StillManager_{TimelineName}whencreate_gallery_still_album()is available (Resolve ≥ 19.1.0) - Fall back to the previously selected album on older Resolve versions and log failures gracefully
- Add
grab_all_still()method to grab stills for all clips in the current timeline at a specified position (default: 0.5)