Skip to content
This repository was archived by the owner on Jan 6, 2026. It is now read-only.

Commit f0ccfa4

Browse files
authored
first step to reorganise decorators (#7)
1 parent 0d1b59d commit f0ccfa4

36 files changed

+66
-51
lines changed

docs/demo/js/pyodide_loader.js

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,13 @@ async function loadPyodideAndPackages() {
6060
try {
6161
showLoadingModal();
6262
updateProgress(0, 'Loading Pyodide...');
63+
64+
// Load examples.json to get the required imery version
65+
const examplesResponse = await fetch('examples/examples.json');
66+
const examplesData = await examplesResponse.json();
67+
const imeryVersion = examplesData.version || 'latest';
68+
console.log(`Target imery version: ${imeryVersion}`);
69+
6370
pyodide = await loadPyodide();
6471
const pythonVersion = pyodide.runPython("import sys; sys.version");
6572
updateProgress(7, 'Pyodide loaded.');
@@ -71,7 +78,7 @@ async function loadPyodideAndPackages() {
7178
// SDL support in Pyodide is experimental. The flag is used to bypass certain issues.
7279
pyodide._api._skip_unwind_fatal_error = true;
7380

74-
// List of packages to install
81+
// List of packages to install (imery version from examples.json)
7582
const packages = [
7683
// Core Python packages from PyPI
7784
// ------------------------------
@@ -87,9 +94,9 @@ async function loadPyodideAndPackages() {
8794
// ----------------------------------------------------------
8895
'imgui_bundle',
8996

90-
// Imery (from PyPI)
97+
// Imery (from PyPI) - pinned to version from build
9198
// -----------------
92-
'imery',
99+
`imery==${imeryVersion}`,
93100
];
94101

95102
const totalSteps = packages.length;

scripts/hatch_build.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -223,11 +223,14 @@ def initialize(self, version, build_data):
223223
print(f" Error aggregating {demo_dir.name}: {e}")
224224
# Continue with other demos even if one fails
225225

226-
# Write examples.json
226+
# Write examples.json with version
227227
examples_json_path = aggregated_dir / "examples.json"
228228
with open(examples_json_path, 'w') as f:
229-
json.dump({"examples": examples}, f, indent=2)
229+
json.dump({
230+
"version": version,
231+
"examples": examples
232+
}, f, indent=2)
230233
f.write('\n')
231234

232235
print(f"Successfully aggregated {aggregated_count} demo files")
233-
print(f"Generated {examples_json_path} with {len(examples)} examples")
236+
print(f"Generated {examples_json_path} with {len(examples)} examples (version {version})")

src/imery/backend/decorators.py

Lines changed: 0 additions & 7 deletions
This file was deleted.

src/imery/backend/kernel.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
from imery.result import Result, Ok
99

1010
from imery.logging import log
11-
from imery.backend.decorators import _pending_device_managers
11+
from imery.decorators import _pending_device_managers, _pending_devices
1212

1313
from pprint import pp
1414

src/imery/decorators.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
2+
_pending_widgets = []
3+
def widget(obj):
4+
_pending_widgets.append(obj)
5+
return obj
6+
7+
8+
_pending_device_managers = []
9+
def device_manager(obj):
10+
_pending_device_managers.append(obj)
11+
return obj
12+
13+
_pending_devices = []
14+
def device(obj):
15+
_pending_devices.append(obj)
16+
return obj

src/imery/frontend/composite.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"""
44

55
from imery.frontend.widget import Widget
6-
from imery.frontend.decorators import widget
6+
from imery.decorators import widget
77
from imery.types import DataPath
88
from imery.result import Result, Ok
99

src/imery/frontend/decorators.py

Lines changed: 0 additions & 7 deletions
This file was deleted.

src/imery/frontend/widget_factory.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ def __init__(self, dispatcher: Dispatcher, widget_definitions: Dict[str, dict],
4949

5050
def init(self) -> Result[None]:
5151
"""Load widget classes dynamically from widgets_path"""
52-
from imery.frontend.decorators import _pending_widgets
52+
from imery.decorators import _pending_widgets
5353

5454
# Build list of widget directories from colon-separated path
5555
widget_dirs = []

src/imery/frontend/widgets/cool_bar.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
from imgui_bundle import imgui, im_cool_bar, hello_imgui, ImVec2, immapp
66
from imery.frontend.widget import Widget
7-
from imery.frontend.decorators import widget
7+
from imery.decorators import widget
88
from imery.result import Result, Ok
99

1010

src/imery/frontend/widgets/docking.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
from imgui_bundle import imgui, hello_imgui
66
from imery.frontend.widget import Widget
7-
from imery.frontend.decorators import widget
7+
from imery.decorators import widget
88
from imery.types import DataPath
99
from imery.backend.types import TreeLike
1010
from imery.result import Result, Ok

0 commit comments

Comments
 (0)