dazpy 2.7.0__tar.gz → 2.7.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. {dazpy-2.7.0 → dazpy-2.7.2}/PKG-INFO +86 -3
  2. {dazpy-2.7.0 → dazpy-2.7.2}/README.md +85 -2
  3. {dazpy-2.7.0 → dazpy-2.7.2}/dazpy/__init__.py +1 -1
  4. {dazpy-2.7.0 → dazpy-2.7.2}/dazpy.egg-info/PKG-INFO +86 -3
  5. {dazpy-2.7.0 → dazpy-2.7.2}/pyproject.toml +1 -1
  6. {dazpy-2.7.0 → dazpy-2.7.2}/dazpy/_animation.py +0 -0
  7. {dazpy-2.7.0 → dazpy-2.7.2}/dazpy/_batch.py +0 -0
  8. {dazpy-2.7.0 → dazpy-2.7.2}/dazpy/_bone.py +0 -0
  9. {dazpy-2.7.0 → dazpy-2.7.2}/dazpy/_camera.py +0 -0
  10. {dazpy-2.7.0 → dazpy-2.7.2}/dazpy/_client.py +0 -0
  11. {dazpy-2.7.0 → dazpy-2.7.2}/dazpy/_dforce.py +0 -0
  12. {dazpy-2.7.0 → dazpy-2.7.2}/dazpy/_element.py +0 -0
  13. {dazpy-2.7.0 → dazpy-2.7.2}/dazpy/_geometry.py +0 -0
  14. {dazpy-2.7.0 → dazpy-2.7.2}/dazpy/_interaction.py +0 -0
  15. {dazpy-2.7.0 → dazpy-2.7.2}/dazpy/_light.py +0 -0
  16. {dazpy-2.7.0 → dazpy-2.7.2}/dazpy/_material.py +0 -0
  17. {dazpy-2.7.0 → dazpy-2.7.2}/dazpy/_modifier.py +0 -0
  18. {dazpy-2.7.0 → dazpy-2.7.2}/dazpy/_morph.py +0 -0
  19. {dazpy-2.7.0 → dazpy-2.7.2}/dazpy/_node.py +0 -0
  20. {dazpy-2.7.0 → dazpy-2.7.2}/dazpy/_polling.py +0 -0
  21. {dazpy-2.7.0 → dazpy-2.7.2}/dazpy/_pose.py +0 -0
  22. {dazpy-2.7.0 → dazpy-2.7.2}/dazpy/_property.py +0 -0
  23. {dazpy-2.7.0 → dazpy-2.7.2}/dazpy/_render.py +0 -0
  24. {dazpy-2.7.0 → dazpy-2.7.2}/dazpy/_render_api.py +0 -0
  25. {dazpy-2.7.0 → dazpy-2.7.2}/dazpy/_result.py +0 -0
  26. {dazpy-2.7.0 → dazpy-2.7.2}/dazpy/_scene.py +0 -0
  27. {dazpy-2.7.0 → dazpy-2.7.2}/dazpy/_scene_events.py +0 -0
  28. {dazpy-2.7.0 → dazpy-2.7.2}/dazpy/_scene_state.py +0 -0
  29. {dazpy-2.7.0 → dazpy-2.7.2}/dazpy/_script_builder.py +0 -0
  30. {dazpy-2.7.0 → dazpy-2.7.2}/dazpy/_skeleton.py +0 -0
  31. {dazpy-2.7.0 → dazpy-2.7.2}/dazpy/_timeline.py +0 -0
  32. {dazpy-2.7.0 → dazpy-2.7.2}/dazpy/_undo.py +0 -0
  33. {dazpy-2.7.0 → dazpy-2.7.2}/dazpy/_viewport.py +0 -0
  34. {dazpy-2.7.0 → dazpy-2.7.2}/dazpy/exceptions.py +0 -0
  35. {dazpy-2.7.0 → dazpy-2.7.2}/dazpy/math3.py +0 -0
  36. {dazpy-2.7.0 → dazpy-2.7.2}/dazpy/py.typed +0 -0
  37. {dazpy-2.7.0 → dazpy-2.7.2}/dazpy.egg-info/SOURCES.txt +0 -0
  38. {dazpy-2.7.0 → dazpy-2.7.2}/dazpy.egg-info/dependency_links.txt +0 -0
  39. {dazpy-2.7.0 → dazpy-2.7.2}/dazpy.egg-info/requires.txt +0 -0
  40. {dazpy-2.7.0 → dazpy-2.7.2}/dazpy.egg-info/top_level.txt +0 -0
  41. {dazpy-2.7.0 → dazpy-2.7.2}/setup.cfg +0 -0
  42. {dazpy-2.7.0 → dazpy-2.7.2}/tests/test_api.py +0 -0
  43. {dazpy-2.7.0 → dazpy-2.7.2}/tests/test_comfyui_client.py +0 -0
  44. {dazpy-2.7.0 → dazpy-2.7.2}/tests/test_comfyui_enhance_integration.py +0 -0
  45. {dazpy-2.7.0 → dazpy-2.7.2}/tests/test_dazpy.py +0 -0
  46. {dazpy-2.7.0 → dazpy-2.7.2}/tests/test_dazpy_integration.py +0 -0
  47. {dazpy-2.7.0 → dazpy-2.7.2}/tests/test_dsp_runner.py +0 -0
  48. {dazpy-2.7.0 → dazpy-2.7.2}/tests/test_file_watcher.py +0 -0
  49. {dazpy-2.7.0 → dazpy-2.7.2}/tests/test_performance.py +0 -0
  50. {dazpy-2.7.0 → dazpy-2.7.2}/tests/test_workflow_builder.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dazpy
3
- Version: 2.7.0
3
+ Version: 2.7.2
4
4
  Summary: Python SDK for the DAZ Studio Script Server
5
5
  License: MIT
6
6
  Project-URL: Homepage, https://github.com/bluemoonfoundry/daz-script-server
@@ -15,7 +15,7 @@ Requires-Dist: sphinx-rtd-theme>=2.0; extra == "docs"
15
15
 
16
16
  # DazScript Server
17
17
 
18
- **Version 2.6.0** | DAZ Studio 4.5+ | DAZ Studio 6.25+ | Windows & macOS
18
+ **Version 2.7.2** | DAZ Studio 4.5+ | DAZ Studio 6.25+ | Windows & macOS
19
19
 
20
20
  [![Docs](https://img.shields.io/badge/docs-dazpy%20SDK-blue)](https://bluemoonfoundry.github.io/daz-script-server/)
21
21
  [![HTTP API](https://img.shields.io/badge/docs-HTTP%20API%20reference-blue)](https://bluemoonfoundry.github.io/daz-script-server/api-reference/)
@@ -83,6 +83,9 @@ print(response.json())
83
83
  ### Getting Started
84
84
  - [Quick Start](#-quick-start)
85
85
  - [Why This Exists](#why-this-exists)
86
+ - [What's New in v2.7.2](#whats-new-in-v272)
87
+ - [What's New in v2.7.1](#whats-new-in-v271)
88
+ - [What's New in v2.7.0](#whats-new-in-v270)
86
89
  - [What's New in v2.6.0](#whats-new-in-v260)
87
90
  - [What's New in v2.5.0](#whats-new-in-v250)
88
91
  - [What's New in v2.4.0](#whats-new-in-v240)
@@ -166,6 +169,86 @@ DAZ Studio is powerful for 3D content creation, but automation is limited to man
166
169
 
167
170
  ---
168
171
 
172
+ ## What's New in v2.7.2
173
+
174
+ No functional changes to `dazpy`'s behavior. `2.7.1`'s version bump missed
175
+ three places that still said `2.7.0`: `dazpy.__version__` itself (already
176
+ baked into the published `2.7.1` wheel — the reason this needed a new
177
+ version rather than a doc fix), `openapi.yaml`'s `info.version` and two
178
+ response examples, and the plugin's own `DZSRV_VERSION_STR` (what
179
+ `/status`/`/health` actually return at runtime). All three now correctly
180
+ say `2.7.2`.
181
+
182
+ ---
183
+
184
+ ## What's New in v2.7.1
185
+
186
+ No functional changes. Republished to fix a stale PyPI package description —
187
+ the `2.7.0` wheel was uploaded to PyPI before the README fixes below (in
188
+ "What's New in v2.7.0") had landed, and PyPI has no way to update an
189
+ already-published version's metadata. `2.7.1`'s code is identical to
190
+ `2.7.0`'s.
191
+
192
+ ---
193
+
194
+ ## What's New in v2.7.0
195
+
196
+ ### 🖼️ Iray Canvas Support — `DazRenderSettings`
197
+
198
+ Enumerate, create, and remove Iray Canvases (normal/depth/material-ID/etc.
199
+ render passes) and resolve their output file paths for a given render:
200
+
201
+ ```python
202
+ from dazpy import DazClient, DazRenderSettings
203
+
204
+ client = DazClient()
205
+ rs = DazRenderSettings(client)
206
+
207
+ rs.add_canvas("Depth")
208
+ print(rs.list_canvases())
209
+ print(rs.canvas_output_paths("C:/renders/shot01.png"))
210
+ ```
211
+
212
+ ### 📸 Scene Checkpoints — `DazSceneState`
213
+
214
+ A full scene checkpoint in one call: every skeleton's complete pose
215
+ (bone-level, via `DazPose`) plus camera and light transforms/key
216
+ properties, captured and restored via raw property values so repeated
217
+ capture/apply cycles are idempotent — no more creeping drift on a
218
+ character's morph dials across repeated pose save/restore.
219
+
220
+ ```python
221
+ from dazpy import DazClient, DazSceneState
222
+
223
+ client = DazClient()
224
+ state = DazSceneState(client)
225
+
226
+ snapshot = state.capture()
227
+ # ... pose the scene for a render ...
228
+ state.apply(snapshot) # back to exactly where you started
229
+ ```
230
+
231
+ ### 🧱 Scene Editing — Node Creation, Deletion, Reparenting
232
+
233
+ `DazScene.create_camera()`/`create_light()`, `DazNode.delete()`, and
234
+ `DazNode.reparent()` round out the scene graph so a script can build and
235
+ restructure a scene, not just query and pose one.
236
+
237
+ ### Also in this release
238
+
239
+ - **Clothing/prop fit control** — `DazNode.fit_to()`/`.unfit()`/`.fitted_items()`.
240
+ - **dForce simulation control** — freeze/unfreeze and run/clear simulations via a new `DazDForce` proxy and `DazScene` helpers.
241
+ - **Iray quality control** — `max_samples`/`max_time_secs`/`quality`/`set_quality_preset()` on `DazRenderSettings`, plus `active_engine()`/`set_active_engine()` to query/switch the render engine.
242
+ - **Per-frame animation rendering** — `POST /render/animation` and `DazClient.render_animation_submit()`.
243
+ - **Scene-change event stream** — `DazClient.stream_scene_events()` for watching or blocking on node/light/camera/selection/scene/time/render events.
244
+ - **Camera lens shift** — `DazCamera.lens_shift_x`/`.lens_shift_y`.
245
+ - **FBX/OBJ export** — `DazScene.export_fbx()`/`.export_obj()`.
246
+ - **Keyframe curve introspection** — `DazProperty.get_keys()`/`.remove_key()`/`.clear_keys()`.
247
+ - **Bulk property reads** — `DazElement.numeric_properties()` and `.class_name`.
248
+ - A handful of correctness fixes to `DazPose`/`DazViewport.capture()` (ERC-driven property inflation, bone selection restore, backdrop restore) and render camera selection — see [CHANGELOG.md](CHANGELOG.md#270---2026-07-19) for details.
249
+
250
+ ---
251
+
169
252
  ## What's New in v2.6.0
170
253
 
171
254
  ### 💾 Scene Save Copy — `POST /scene/save-copy` + `DazScene.save_copy()`
@@ -584,7 +667,7 @@ automation code without authoring DazScript by hand.
584
667
  Download the `.whl` file from the [latest release](https://github.com/bluemoonfoundry/daz-script-server/releases/latest) and install it:
585
668
 
586
669
  ```bash
587
- pip install dazpy-2.6.0-py3-none-any.whl
670
+ pip install dazpy-2.7.2-py3-none-any.whl
588
671
  ```
589
672
 
590
673
  Or install directly from the repo for development:
@@ -1,6 +1,6 @@
1
1
  # DazScript Server
2
2
 
3
- **Version 2.6.0** | DAZ Studio 4.5+ | DAZ Studio 6.25+ | Windows & macOS
3
+ **Version 2.7.2** | DAZ Studio 4.5+ | DAZ Studio 6.25+ | Windows & macOS
4
4
 
5
5
  [![Docs](https://img.shields.io/badge/docs-dazpy%20SDK-blue)](https://bluemoonfoundry.github.io/daz-script-server/)
6
6
  [![HTTP API](https://img.shields.io/badge/docs-HTTP%20API%20reference-blue)](https://bluemoonfoundry.github.io/daz-script-server/api-reference/)
@@ -68,6 +68,9 @@ print(response.json())
68
68
  ### Getting Started
69
69
  - [Quick Start](#-quick-start)
70
70
  - [Why This Exists](#why-this-exists)
71
+ - [What's New in v2.7.2](#whats-new-in-v272)
72
+ - [What's New in v2.7.1](#whats-new-in-v271)
73
+ - [What's New in v2.7.0](#whats-new-in-v270)
71
74
  - [What's New in v2.6.0](#whats-new-in-v260)
72
75
  - [What's New in v2.5.0](#whats-new-in-v250)
73
76
  - [What's New in v2.4.0](#whats-new-in-v240)
@@ -151,6 +154,86 @@ DAZ Studio is powerful for 3D content creation, but automation is limited to man
151
154
 
152
155
  ---
153
156
 
157
+ ## What's New in v2.7.2
158
+
159
+ No functional changes to `dazpy`'s behavior. `2.7.1`'s version bump missed
160
+ three places that still said `2.7.0`: `dazpy.__version__` itself (already
161
+ baked into the published `2.7.1` wheel — the reason this needed a new
162
+ version rather than a doc fix), `openapi.yaml`'s `info.version` and two
163
+ response examples, and the plugin's own `DZSRV_VERSION_STR` (what
164
+ `/status`/`/health` actually return at runtime). All three now correctly
165
+ say `2.7.2`.
166
+
167
+ ---
168
+
169
+ ## What's New in v2.7.1
170
+
171
+ No functional changes. Republished to fix a stale PyPI package description —
172
+ the `2.7.0` wheel was uploaded to PyPI before the README fixes below (in
173
+ "What's New in v2.7.0") had landed, and PyPI has no way to update an
174
+ already-published version's metadata. `2.7.1`'s code is identical to
175
+ `2.7.0`'s.
176
+
177
+ ---
178
+
179
+ ## What's New in v2.7.0
180
+
181
+ ### 🖼️ Iray Canvas Support — `DazRenderSettings`
182
+
183
+ Enumerate, create, and remove Iray Canvases (normal/depth/material-ID/etc.
184
+ render passes) and resolve their output file paths for a given render:
185
+
186
+ ```python
187
+ from dazpy import DazClient, DazRenderSettings
188
+
189
+ client = DazClient()
190
+ rs = DazRenderSettings(client)
191
+
192
+ rs.add_canvas("Depth")
193
+ print(rs.list_canvases())
194
+ print(rs.canvas_output_paths("C:/renders/shot01.png"))
195
+ ```
196
+
197
+ ### 📸 Scene Checkpoints — `DazSceneState`
198
+
199
+ A full scene checkpoint in one call: every skeleton's complete pose
200
+ (bone-level, via `DazPose`) plus camera and light transforms/key
201
+ properties, captured and restored via raw property values so repeated
202
+ capture/apply cycles are idempotent — no more creeping drift on a
203
+ character's morph dials across repeated pose save/restore.
204
+
205
+ ```python
206
+ from dazpy import DazClient, DazSceneState
207
+
208
+ client = DazClient()
209
+ state = DazSceneState(client)
210
+
211
+ snapshot = state.capture()
212
+ # ... pose the scene for a render ...
213
+ state.apply(snapshot) # back to exactly where you started
214
+ ```
215
+
216
+ ### 🧱 Scene Editing — Node Creation, Deletion, Reparenting
217
+
218
+ `DazScene.create_camera()`/`create_light()`, `DazNode.delete()`, and
219
+ `DazNode.reparent()` round out the scene graph so a script can build and
220
+ restructure a scene, not just query and pose one.
221
+
222
+ ### Also in this release
223
+
224
+ - **Clothing/prop fit control** — `DazNode.fit_to()`/`.unfit()`/`.fitted_items()`.
225
+ - **dForce simulation control** — freeze/unfreeze and run/clear simulations via a new `DazDForce` proxy and `DazScene` helpers.
226
+ - **Iray quality control** — `max_samples`/`max_time_secs`/`quality`/`set_quality_preset()` on `DazRenderSettings`, plus `active_engine()`/`set_active_engine()` to query/switch the render engine.
227
+ - **Per-frame animation rendering** — `POST /render/animation` and `DazClient.render_animation_submit()`.
228
+ - **Scene-change event stream** — `DazClient.stream_scene_events()` for watching or blocking on node/light/camera/selection/scene/time/render events.
229
+ - **Camera lens shift** — `DazCamera.lens_shift_x`/`.lens_shift_y`.
230
+ - **FBX/OBJ export** — `DazScene.export_fbx()`/`.export_obj()`.
231
+ - **Keyframe curve introspection** — `DazProperty.get_keys()`/`.remove_key()`/`.clear_keys()`.
232
+ - **Bulk property reads** — `DazElement.numeric_properties()` and `.class_name`.
233
+ - A handful of correctness fixes to `DazPose`/`DazViewport.capture()` (ERC-driven property inflation, bone selection restore, backdrop restore) and render camera selection — see [CHANGELOG.md](CHANGELOG.md#270---2026-07-19) for details.
234
+
235
+ ---
236
+
154
237
  ## What's New in v2.6.0
155
238
 
156
239
  ### 💾 Scene Save Copy — `POST /scene/save-copy` + `DazScene.save_copy()`
@@ -569,7 +652,7 @@ automation code without authoring DazScript by hand.
569
652
  Download the `.whl` file from the [latest release](https://github.com/bluemoonfoundry/daz-script-server/releases/latest) and install it:
570
653
 
571
654
  ```bash
572
- pip install dazpy-2.6.0-py3-none-any.whl
655
+ pip install dazpy-2.7.2-py3-none-any.whl
573
656
  ```
574
657
 
575
658
  Or install directly from the repo for development:
@@ -13,7 +13,7 @@ Typical usage::
13
13
  figure.find_bone("r_forearm").set_local_rotation(0, 0, 45)
14
14
  """
15
15
 
16
- __version__ = "2.7.0"
16
+ __version__ = "2.7.2"
17
17
 
18
18
  from ._client import DazClient
19
19
  from ._scene import DazScene
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dazpy
3
- Version: 2.7.0
3
+ Version: 2.7.2
4
4
  Summary: Python SDK for the DAZ Studio Script Server
5
5
  License: MIT
6
6
  Project-URL: Homepage, https://github.com/bluemoonfoundry/daz-script-server
@@ -15,7 +15,7 @@ Requires-Dist: sphinx-rtd-theme>=2.0; extra == "docs"
15
15
 
16
16
  # DazScript Server
17
17
 
18
- **Version 2.6.0** | DAZ Studio 4.5+ | DAZ Studio 6.25+ | Windows & macOS
18
+ **Version 2.7.2** | DAZ Studio 4.5+ | DAZ Studio 6.25+ | Windows & macOS
19
19
 
20
20
  [![Docs](https://img.shields.io/badge/docs-dazpy%20SDK-blue)](https://bluemoonfoundry.github.io/daz-script-server/)
21
21
  [![HTTP API](https://img.shields.io/badge/docs-HTTP%20API%20reference-blue)](https://bluemoonfoundry.github.io/daz-script-server/api-reference/)
@@ -83,6 +83,9 @@ print(response.json())
83
83
  ### Getting Started
84
84
  - [Quick Start](#-quick-start)
85
85
  - [Why This Exists](#why-this-exists)
86
+ - [What's New in v2.7.2](#whats-new-in-v272)
87
+ - [What's New in v2.7.1](#whats-new-in-v271)
88
+ - [What's New in v2.7.0](#whats-new-in-v270)
86
89
  - [What's New in v2.6.0](#whats-new-in-v260)
87
90
  - [What's New in v2.5.0](#whats-new-in-v250)
88
91
  - [What's New in v2.4.0](#whats-new-in-v240)
@@ -166,6 +169,86 @@ DAZ Studio is powerful for 3D content creation, but automation is limited to man
166
169
 
167
170
  ---
168
171
 
172
+ ## What's New in v2.7.2
173
+
174
+ No functional changes to `dazpy`'s behavior. `2.7.1`'s version bump missed
175
+ three places that still said `2.7.0`: `dazpy.__version__` itself (already
176
+ baked into the published `2.7.1` wheel — the reason this needed a new
177
+ version rather than a doc fix), `openapi.yaml`'s `info.version` and two
178
+ response examples, and the plugin's own `DZSRV_VERSION_STR` (what
179
+ `/status`/`/health` actually return at runtime). All three now correctly
180
+ say `2.7.2`.
181
+
182
+ ---
183
+
184
+ ## What's New in v2.7.1
185
+
186
+ No functional changes. Republished to fix a stale PyPI package description —
187
+ the `2.7.0` wheel was uploaded to PyPI before the README fixes below (in
188
+ "What's New in v2.7.0") had landed, and PyPI has no way to update an
189
+ already-published version's metadata. `2.7.1`'s code is identical to
190
+ `2.7.0`'s.
191
+
192
+ ---
193
+
194
+ ## What's New in v2.7.0
195
+
196
+ ### 🖼️ Iray Canvas Support — `DazRenderSettings`
197
+
198
+ Enumerate, create, and remove Iray Canvases (normal/depth/material-ID/etc.
199
+ render passes) and resolve their output file paths for a given render:
200
+
201
+ ```python
202
+ from dazpy import DazClient, DazRenderSettings
203
+
204
+ client = DazClient()
205
+ rs = DazRenderSettings(client)
206
+
207
+ rs.add_canvas("Depth")
208
+ print(rs.list_canvases())
209
+ print(rs.canvas_output_paths("C:/renders/shot01.png"))
210
+ ```
211
+
212
+ ### 📸 Scene Checkpoints — `DazSceneState`
213
+
214
+ A full scene checkpoint in one call: every skeleton's complete pose
215
+ (bone-level, via `DazPose`) plus camera and light transforms/key
216
+ properties, captured and restored via raw property values so repeated
217
+ capture/apply cycles are idempotent — no more creeping drift on a
218
+ character's morph dials across repeated pose save/restore.
219
+
220
+ ```python
221
+ from dazpy import DazClient, DazSceneState
222
+
223
+ client = DazClient()
224
+ state = DazSceneState(client)
225
+
226
+ snapshot = state.capture()
227
+ # ... pose the scene for a render ...
228
+ state.apply(snapshot) # back to exactly where you started
229
+ ```
230
+
231
+ ### 🧱 Scene Editing — Node Creation, Deletion, Reparenting
232
+
233
+ `DazScene.create_camera()`/`create_light()`, `DazNode.delete()`, and
234
+ `DazNode.reparent()` round out the scene graph so a script can build and
235
+ restructure a scene, not just query and pose one.
236
+
237
+ ### Also in this release
238
+
239
+ - **Clothing/prop fit control** — `DazNode.fit_to()`/`.unfit()`/`.fitted_items()`.
240
+ - **dForce simulation control** — freeze/unfreeze and run/clear simulations via a new `DazDForce` proxy and `DazScene` helpers.
241
+ - **Iray quality control** — `max_samples`/`max_time_secs`/`quality`/`set_quality_preset()` on `DazRenderSettings`, plus `active_engine()`/`set_active_engine()` to query/switch the render engine.
242
+ - **Per-frame animation rendering** — `POST /render/animation` and `DazClient.render_animation_submit()`.
243
+ - **Scene-change event stream** — `DazClient.stream_scene_events()` for watching or blocking on node/light/camera/selection/scene/time/render events.
244
+ - **Camera lens shift** — `DazCamera.lens_shift_x`/`.lens_shift_y`.
245
+ - **FBX/OBJ export** — `DazScene.export_fbx()`/`.export_obj()`.
246
+ - **Keyframe curve introspection** — `DazProperty.get_keys()`/`.remove_key()`/`.clear_keys()`.
247
+ - **Bulk property reads** — `DazElement.numeric_properties()` and `.class_name`.
248
+ - A handful of correctness fixes to `DazPose`/`DazViewport.capture()` (ERC-driven property inflation, bone selection restore, backdrop restore) and render camera selection — see [CHANGELOG.md](CHANGELOG.md#270---2026-07-19) for details.
249
+
250
+ ---
251
+
169
252
  ## What's New in v2.6.0
170
253
 
171
254
  ### 💾 Scene Save Copy — `POST /scene/save-copy` + `DazScene.save_copy()`
@@ -584,7 +667,7 @@ automation code without authoring DazScript by hand.
584
667
  Download the `.whl` file from the [latest release](https://github.com/bluemoonfoundry/daz-script-server/releases/latest) and install it:
585
668
 
586
669
  ```bash
587
- pip install dazpy-2.6.0-py3-none-any.whl
670
+ pip install dazpy-2.7.2-py3-none-any.whl
588
671
  ```
589
672
 
590
673
  Or install directly from the repo for development:
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "dazpy"
7
- version = "2.7.0"
7
+ version = "2.7.2"
8
8
  description = "Python SDK for the DAZ Studio Script Server"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes