Releases: psd-tools/psd-tools
Releases · psd-tools/psd-tools
v1.11.0 - Enhanced Layer Creation APIs and Type Safety
What's New in v1.11.0
This release introduces significant improvements to the public API, enhanced type safety throughout the codebase, and better developer ergonomics for layer creation workflows.
🎨 New Features
Public Layer Creation APIs
New public methods for creating layers and groups directly from PSDImage:
from psd_tools import PSDImage
from PIL import Image
# Create a new PSD document
psdimage = PSDImage.new(mode='RGB', size=(640, 480), depth=8)
# Create pixel layers with intuitive API
layer = psdimage.create_pixel_layer(pil_image, name="Layer 1", top=0, left=0, opacity=255)
# Create groups and organize layers
group = psdimage.create_group(name="Group 1")
group.append(layer)
psdimage.save('new_image.psd')New Layer Attributes
fill_opacity: Control layer fill opacity separate from overall opacity (#507)reference_point: Access and modify layer transformation reference points (#508)
🔧 Improvements
- Type Safety: Comprehensive type annotations added across the API (#509, #510, #512, #516)
- Architecture: Eliminated circular dependencies in
psd_tools.apiusing Protocols (#515) - Debugging: Improved pretty print representation for Subpath objects (#506)
- Developer Experience: Added Claude Code support for AI-assisted development (#511)
🐛 Bug Fixes
- Fixed group blend mode returning None with minimal section divider data (#514)
💥 Breaking Changes
Layer Creation Requirements
- Layer creation now requires a valid
PSDImageobject (orphaned layers are no longer supported) - Layers cannot be shared between multiple container objects
Before (v1.10.x):
layer = PixelLayer.frompil(None, image, parent=None)After (v1.11.x):
layer = psdimage.create_pixel_layer(image, name="Layer 1")📚 Documentation
- Enhanced migration guide with detailed examples of breaking changes
- Updated usage documentation with clearer API examples
- Reorganized API reference for better navigation
📦 Changes Since v1.10.13
- [api] Add public APIs for layer and group creation (#517)
- [api] Type safety improvements (#516)
- [api] Refactor
psd_tools.apiimport dependencies (#515) - [api] Fix group blend mode returning None (#514)
- [dev] Add Claude Code support (#511)
- [api] Add type annotation to more APIs (#509, #510, #512)
- [api] Add
fill_opacityandreference_pointattributes (#507, #508) - [psd] Improve pretty print of Subpath (#506)
Installation
pip install psd-tools==1.11.0Full Changelog
See CHANGES.rst for complete details.
Note: This release includes breaking changes. Please review the migration guide before upgrading.
v1.10.13
What's Changed
- Fix crash when reading Levels records by @kyamagu in #501
- [Feature] Improve tree traversal API by @kyamagu in #502
- Fix updated status for layer update operations by @kyamagu in #503
- Fix incorrect method name in the documentation by @kyamagu in #504
- Increment version to v1.10.13 by @kyamagu in #505
Full Changelog: v1.10.12...v1.10.13
v1.10.12
v1.10.11
v1.10.10
What's Changed
- Use ImageMath.lambda_eval to prepare for deprecation by @kyamagu in #482
- Use limited API for binary wheels by @kyamagu in #483
- Fix PyCMSError by @kyamagu in #484
- Fix incorrect Py_LIMITED_API version by @kyamagu in #485
- Update readthedocs configuration by @kyamagu in #486
- Use plain pip for docs build by @kyamagu in #487
- Fix clipping with stroke composite by @kyamagu in #488
- Increment version: v1.10.10 by @kyamagu in #489
Full Changelog: v1.10.9...v1.10.10
v1.10.9
What's Changed
- allow linked layer version 8 by @Etienne-Gautier in #476
- increment version: v1.10.9 by @Etienne-Gautier in #479
Full Changelog: v1.10.8...v1.10.9