From 9486a5381f60867e246a7587aa20773dcbe50f8e Mon Sep 17 00:00:00 2001 From: Kota Yamaguchi Date: Fri, 7 Nov 2025 09:15:22 +0900 Subject: [PATCH] Fix group blend mode returning None with minimal section divider data MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When a group's section divider setting exists but has minimal content (e.g., blend_mode is None), the blend_mode property was incorrectly returning None instead of falling back to the parent layer's blend_mode. This fix adds an additional check to ensure the setting's blend_mode is not None before using it. Fixes #513 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- src/psd_tools/api/layers.py | 3 ++- .../blend-modes/group-divider-blend-mode.psd | Bin 0 -> 1906 bytes tests/psd_tools/api/test_layers.py | 10 ++++++++++ 3 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 tests/psd_files/blend-modes/group-divider-blend-mode.psd diff --git a/src/psd_tools/api/layers.py b/src/psd_tools/api/layers.py index 76250a5f..d2802559 100644 --- a/src/psd_tools/api/layers.py +++ b/src/psd_tools/api/layers.py @@ -1118,7 +1118,8 @@ def _setting(self) -> Optional[SectionDividerSetting]: @property def blend_mode(self) -> BlendMode: setting = self._setting - if setting is not None: + # Use the blend mode from the section divider setting if present. + if setting is not None and setting.blend_mode is not None: return setting.blend_mode return super(Group, self).blend_mode diff --git a/tests/psd_files/blend-modes/group-divider-blend-mode.psd b/tests/psd_files/blend-modes/group-divider-blend-mode.psd new file mode 100644 index 0000000000000000000000000000000000000000..ad8d42c275222190af09a3ccb01c79c31ff293da GIT binary patch literal 1906 zcmcC;3J7LkWPkt`Ae92f91P4*F(AbV6lY}k{|_MoWr5T)Fff7jGXZHJ`~QCsY2oDQ zo0ngd3*rEQ41|J^Ai1348kOTC6Dnk*2Ay9-74FZM0fD!1=VFBmT)p|rB literal 0 HcmV?d00001 diff --git a/tests/psd_tools/api/test_layers.py b/tests/psd_tools/api/test_layers.py index aabf4c19..02fa7ab9 100644 --- a/tests/psd_tools/api/test_layers.py +++ b/tests/psd_tools/api/test_layers.py @@ -252,6 +252,16 @@ def test_group_extract_bbox(): assert Group.extract_bbox(psd[1:], True) == (25, 34, 83, 134) +def test_group_blend_mode(): + psd = PSDImage.open(full_name("blend-modes/group-divider-blend-mode.psd")) + assert psd[0].blend_mode is not None + blend_mode = psd[0].blend_mode + psd[0].blend_mode = BlendMode.NORMAL + assert psd[0].blend_mode == BlendMode.NORMAL + psd[0].blend_mode = blend_mode + assert psd[0].blend_mode == blend_mode + + def test_sibling_layers(): psd = PSDImage.open(full_name("hidden-groups.psd")) assert psd[0].next_sibling() is psd[1]