brainrender 2.2.2__py3-none-any.whl → 2.2.3__py3-none-any.whl

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.
brainrender/render.py CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
+ import weakref
5
6
  from datetime import datetime
6
7
  from pathlib import Path
7
8
  from typing import TYPE_CHECKING, Any
@@ -52,7 +53,8 @@ class Render:
52
53
  self._get_plotter()
53
54
  else:
54
55
  self.plotter = plotter
55
- self.plotter.keyPressFunction = self.keypress
56
+
57
+ self._bind_screenshot_key()
56
58
 
57
59
  def _get_plotter(self) -> None:
58
60
  """
@@ -67,7 +69,21 @@ class Render:
67
69
  size="full" if settings.WHOLE_SCREEN else (1600, 1200),
68
70
  )
69
71
 
70
- self.plotter.keyPressFunction = self.keypress
72
+ def _bind_screenshot_key(self) -> None:
73
+ """
74
+ Save a screenshot when ``s`` is pressed in the render window.
75
+ """
76
+ # Weak reference: holding self here makes Scene <-> plotter a
77
+ # reference cycle, so a dropped Scene is only closed by the cyclic
78
+ # garbage collector, on whichever thread happens to run it.
79
+ scene_ref = weakref.ref(self)
80
+
81
+ def on_keypress(event) -> None:
82
+ scene = scene_ref()
83
+ if scene is not None and event.keypress == "s":
84
+ scene.screenshot()
85
+
86
+ self.plotter.add_callback("KeyPress", on_keypress)
71
87
 
72
88
  def _make_axes(self) -> dict:
73
89
  """
@@ -419,22 +435,3 @@ class Render:
419
435
  logger.debug(f"Saving scene at {savepath}")
420
436
  self.plotter.screenshot(filename=savepath, scale=scale)
421
437
  return savepath
422
-
423
- def keypress(self, key: str) -> None: # pragma: no cover
424
- """
425
- Handle key presses during interactive rendering.
426
-
427
- - ``s``: take a screenshot
428
- - ``q`` / ``Esc``: close the window
429
- - ``c``: print current camera parameters
430
-
431
- Parameters
432
- ----------
433
- key
434
- Key identifier string from vedo.
435
- """
436
- if key == "s":
437
- self.screenshot()
438
-
439
- elif key in ("q", "Esc"):
440
- self.close()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: brainrender
3
- Version: 2.2.2
3
+ Version: 2.2.3
4
4
  Summary: Visualisation and exploration of brain atlases and other anatomical data
5
5
  Author-email: "Federico Claudi, Adam Tyson, Luigi Petrucco" <hello@brainglobe.info>
6
6
  License: BSD-3-Clause
@@ -12,14 +12,14 @@ Project-URL: User Support, https://forum.image.sc/tag/brainglobe
12
12
  Classifier: Development Status :: 3 - Alpha
13
13
  Classifier: Programming Language :: Python
14
14
  Classifier: Programming Language :: Python :: 3
15
- Classifier: Programming Language :: Python :: 3.11
16
15
  Classifier: Programming Language :: Python :: 3.12
17
16
  Classifier: Programming Language :: Python :: 3.13
17
+ Classifier: Programming Language :: Python :: 3.14
18
18
  Classifier: Operating System :: OS Independent
19
19
  Classifier: License :: OSI Approved :: BSD License
20
20
  Classifier: Intended Audience :: Developers
21
21
  Classifier: Intended Audience :: Science/Research
22
- Requires-Python: >=3.11
22
+ Requires-Python: >=3.12
23
23
  Description-Content-Type: text/markdown
24
24
  License-File: LICENSE
25
25
  Requires-Dist: brainglobe-atlasapi>=2.0.1
@@ -8,7 +8,7 @@ brainrender/actor.py,sha256=pHQ2hryB4JiDaV8S7WWorgnzVnVKEKGN_8b5XJa0nCg,9853
8
8
  brainrender/atlas.py,sha256=SmE_1WhyOc2Aeu1IyKGaDkCr0LtjOEL3jV_3V8yT9qQ,6254
9
9
  brainrender/camera.py,sha256=1pxfVdXdvg3SBdcvCYvl_5q7Z0Juq25WLa-xhuU3Aak,4339
10
10
  brainrender/cameras.py,sha256=LOoyby45mQh3haG8zX2UJ6cH3ThWQKp6iYJPx_xAUS4,1144
11
- brainrender/render.py,sha256=AXCtgD9lb46Pe5R4jJSd5ejdXCu38cJ6hNncfvP6c2E,13801
11
+ brainrender/render.py,sha256=YB05ILSqoJTjBgN6zcz6g0zxkD1vaWnq-vD7AKETIDc,13876
12
12
  brainrender/scene.py,sha256=VX7ZC4nax_d4pxEew4hulfoPzv_Ek2brVgJ8z_oQDQk,16211
13
13
  brainrender/settings.py,sha256=i7yOLQpJyXUuleRplphZMN1TOmQt16DdXbYf24je5SY,1422
14
14
  brainrender/video.py,sha256=kcO0hg3Rwb-IfeIl82J67ysdoGPg-Eobeq8dUQNEKuM,18149
@@ -25,8 +25,8 @@ brainrender/atlas_specific/allen_brain_atlas/streamlines.py,sha256=ZHnretsKGBTRz
25
25
  brainrender/atlas_specific/allen_brain_atlas/gene_expression/__init__.py,sha256=oU2_CBgEGNerbF63rgqSHqDKJ9H6kCcOAe6avJ-yU9U,104
26
26
  brainrender/atlas_specific/allen_brain_atlas/gene_expression/api.py,sha256=ul5udGxOV_HUjEN83wSfK2ohI-lQP3GItn7YMMJIW88,8100
27
27
  brainrender/atlas_specific/allen_brain_atlas/gene_expression/ge_utils.py,sha256=Qm9ugzOSDnNPwOHQtfhy2vu0lqYmI1HxFAu3zS5kmLg,3697
28
- brainrender-2.2.2.dist-info/licenses/LICENSE,sha256=zyXpitCrNwvc33VKBFomd9v6Ahi9x1H5fvfXDxCblM0,1525
29
- brainrender-2.2.2.dist-info/METADATA,sha256=O2YFkc6iFY45vS4SLvmdy8b711MLbkajcGm2rgL5jDA,6836
30
- brainrender-2.2.2.dist-info/WHEEL,sha256=YVMoNqKzERt-wjUZwJ33xBGAwnFl-4cqbYkTtWa4itE,91
31
- brainrender-2.2.2.dist-info/top_level.txt,sha256=kMQhySV-JkGhHzkFWJFSgVjA4FUQ4d8TYHnyE2yI5sE,12
32
- brainrender-2.2.2.dist-info/RECORD,,
28
+ brainrender-2.2.3.dist-info/licenses/LICENSE,sha256=zyXpitCrNwvc33VKBFomd9v6Ahi9x1H5fvfXDxCblM0,1525
29
+ brainrender-2.2.3.dist-info/METADATA,sha256=p1U4rVrqfJvzSYV8Nm7bFqba_WBKoJl2oXnRubkupQM,6836
30
+ brainrender-2.2.3.dist-info/WHEEL,sha256=YVMoNqKzERt-wjUZwJ33xBGAwnFl-4cqbYkTtWa4itE,91
31
+ brainrender-2.2.3.dist-info/top_level.txt,sha256=kMQhySV-JkGhHzkFWJFSgVjA4FUQ4d8TYHnyE2yI5sE,12
32
+ brainrender-2.2.3.dist-info/RECORD,,