arrayview 0.26.1__py3-none-any.whl → 0.26.2__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.
@@ -115,14 +115,19 @@ def _handle_register(msg: dict) -> None:
115
115
  name = msg.get("name") or __import__("os").path.basename(file_path)
116
116
  options = msg.get("options", {})
117
117
 
118
- from ._io import default_array_key
118
+ from ._io import list_array_keys
119
119
 
120
+ array_keys = list_array_keys(file_path)
121
+ key = array_keys[0]["key"] if array_keys else None
120
122
  data, spatial_meta = load_data_with_meta(
121
123
  file_path,
122
- key=default_array_key(file_path),
124
+ key=key,
123
125
  )
124
126
  session = Session(data=data, filepath=file_path, name=name)
125
127
  session.spatial_meta = spatial_meta
128
+ if len(array_keys) > 1:
129
+ session.array_keys = array_keys
130
+ session.array_filepath = file_path
126
131
  if spatial_meta is not None:
127
132
  session.original_volume = data
128
133
 
@@ -154,6 +159,48 @@ def _handle_metadata(msg: dict) -> None:
154
159
  _write_json(_build_metadata(session))
155
160
 
156
161
 
162
+ def _handle_reload_key(sid: str, msg: dict) -> None:
163
+ """Reload a session's data from a multi-array file with a different key."""
164
+ session = SESSIONS.get(sid)
165
+ if not session:
166
+ _write_error("session not found")
167
+ return
168
+ array_filepath = getattr(session, "array_filepath", None)
169
+ if not array_filepath:
170
+ _write_error("session has no array keys")
171
+ return
172
+
173
+ try:
174
+ body = json.loads(msg.get("body") or "{}")
175
+ except Exception:
176
+ _write_error("invalid JSON body")
177
+ return
178
+ key = body.get("key")
179
+ if not key:
180
+ _write_error("key is required")
181
+ return
182
+
183
+ try:
184
+ from ._io import load_data
185
+
186
+ data = load_data(array_filepath, key=key)
187
+ except Exception as e:
188
+ _write_error(str(e))
189
+ return
190
+
191
+ session.data = data
192
+ session.shape = data.shape
193
+ session.data_version += 1
194
+ session.raw_cache.clear()
195
+ session.rgba_cache.clear()
196
+ session.mosaic_cache.clear()
197
+ session._raw_bytes = 0
198
+ session._rgba_bytes = 0
199
+ session._mosaic_bytes = 0
200
+ session._estimated_mem = session._estimate_memory()
201
+ _write_json({"ok": True})
202
+
203
+
157
204
  def _handle_sessions() -> None:
158
205
  """Return list of active sessions."""
159
206
  _write_json([_session_summary(s) for s in SESSIONS.values()])
@@ -409,6 +456,8 @@ def _handle_fetch_proxy(msg: dict) -> None:
409
456
  _handle_metadata({"sid": sid})
410
457
  elif route == "clearcache" and sid:
411
458
  _handle_clearcache({"sid": sid})
459
+ elif route == "session" and len(parts) >= 3 and parts[2] == "reload-key":
460
+ _handle_reload_key(parts[1], msg)
412
461
  elif route == "sessions":
413
462
  _handle_sessions()
414
463
  elif route == "histogram" and sid:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: arrayview
3
- Version: 0.26.1
3
+ Version: 0.26.2
4
4
  Summary: Fast multi-dimensional array viewer
5
5
  Project-URL: Home, https://github.com/oscarvanderheide/arrayview
6
6
  Project-URL: Source, https://github.com/oscarvanderheide/arrayview
@@ -29,7 +29,7 @@ arrayview/_segmentation.py,sha256=aENWHmefrKDScXhcZL1X3KgYXE784dpMkmFFo83qnrw,73
29
29
  arrayview/_server.py,sha256=HpgoSxW76Rp8q_BnBBtuHdrpmdzHfxVRphSoydtTkR8,7733
30
30
  arrayview/_session.py,sha256=OD3f2Q2gubZt1ftoIwfPX3SfKmCvPYy_FbplmmSnLSg,17427
31
31
  arrayview/_shell.html,sha256=xzHIB-kRX12okubZoqdrgsWDY8CCLteg5jtXxDQru8U,11624
32
- arrayview/_stdio_server.py,sha256=CrafXZGDMp0vhBwjytboFsGd1-NVmQZn-0AetqoNDFs,32498
32
+ arrayview/_stdio_server.py,sha256=ECwUGHuO6KUx4TlQPPzqFZoL48HOTFc0n2ckCPo69Mc,33954
33
33
  arrayview/_synthetic_mri.py,sha256=zb613sIke-yljrILKYn_f-1SB6T4XsB4f916STgAp4M,6756
34
34
  arrayview/_torch.py,sha256=13sqIMCUu_-b9SQ9KfDCExDz2UMStL87EDVjnbJxAEo,7536
35
35
  arrayview/_vectorfield.py,sha256=eDqMCMEGjO8Jdt-6Auh01cz3WD9dbF7xYUWD9xHAf1E,8115
@@ -41,8 +41,8 @@ arrayview/_vscode_shm.py,sha256=Rm5DapeorNwhnLnVz5fkXcctkQqTzii9uLxnOxxIMU4,2238
41
41
  arrayview/_vscode_signal.py,sha256=rSDPEjFeX4dl2PnlBMlVsFO_lmRhgJ7eHlNmNDY4h9U,33840
42
42
  arrayview/arrayview-opener.vsix,sha256=uxIm_06uI9RC7N54SpckwhkjIh0yKLXDv613hvJTgV0,19098
43
43
  arrayview/gsap.min.js,sha256=VGihm4idI0E1uqrWezWsiScB9F_jMosn7qs6pPSkeac,72304
44
- arrayview-0.26.1.dist-info/METADATA,sha256=VSs-XkA7nYHahqZ6c_WtCdzJ8cY7y-hK_vMZGHql13Q,2161
45
- arrayview-0.26.1.dist-info/WHEEL,sha256=mffPy8wBnZQn2VnJUU5jE99KsxaSfiyMHV9Yt0aLVxs,87
46
- arrayview-0.26.1.dist-info/entry_points.txt,sha256=FQSz3M11B-zaVLDyXofKUDvMhHASz7OjmoLgI4nn7ko,105
47
- arrayview-0.26.1.dist-info/licenses/LICENSE,sha256=34OivjM9faB2QaPjZpMRTIiSx31V3U9cEyQ6F2k-bH0,1062
48
- arrayview-0.26.1.dist-info/RECORD,,
44
+ arrayview-0.26.2.dist-info/METADATA,sha256=sazLVlN3xN1zUgSTLeUfNDe26FsnvIVDaZ7chzzuSEI,2161
45
+ arrayview-0.26.2.dist-info/WHEEL,sha256=mffPy8wBnZQn2VnJUU5jE99KsxaSfiyMHV9Yt0aLVxs,87
46
+ arrayview-0.26.2.dist-info/entry_points.txt,sha256=FQSz3M11B-zaVLDyXofKUDvMhHASz7OjmoLgI4nn7ko,105
47
+ arrayview-0.26.2.dist-info/licenses/LICENSE,sha256=34OivjM9faB2QaPjZpMRTIiSx31V3U9cEyQ6F2k-bH0,1062
48
+ arrayview-0.26.2.dist-info/RECORD,,