luvatrix 0.1.0__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.
Files changed (72) hide show
  1. luvatrix-0.1.0.dist-info/METADATA +180 -0
  2. luvatrix-0.1.0.dist-info/RECORD +72 -0
  3. luvatrix-0.1.0.dist-info/WHEEL +5 -0
  4. luvatrix-0.1.0.dist-info/top_level.txt +3 -0
  5. luvatrix_core/__init__.py +4 -0
  6. luvatrix_core/core/__init__.py +109 -0
  7. luvatrix_core/core/app_runtime.py +708 -0
  8. luvatrix_core/core/audit.py +137 -0
  9. luvatrix_core/core/coordinates.py +166 -0
  10. luvatrix_core/core/display_runtime.py +126 -0
  11. luvatrix_core/core/energy_safety.py +153 -0
  12. luvatrix_core/core/engine.py +112 -0
  13. luvatrix_core/core/events.py +28 -0
  14. luvatrix_core/core/frame_rate_controller.py +45 -0
  15. luvatrix_core/core/hdi_thread.py +413 -0
  16. luvatrix_core/core/protocol_governance.py +49 -0
  17. luvatrix_core/core/sensor_manager.py +199 -0
  18. luvatrix_core/core/ui_frame_renderer.py +474 -0
  19. luvatrix_core/core/unified_runtime.py +148 -0
  20. luvatrix_core/core/window_matrix.py +240 -0
  21. luvatrix_core/platform/__init__.py +12 -0
  22. luvatrix_core/platform/frame_pipeline.py +39 -0
  23. luvatrix_core/platform/macos/__init__.py +37 -0
  24. luvatrix_core/platform/macos/hdi_source.py +213 -0
  25. luvatrix_core/platform/macos/sensors.py +216 -0
  26. luvatrix_core/platform/macos/vulkan_backend.py +1555 -0
  27. luvatrix_core/platform/macos/vulkan_presenter.py +184 -0
  28. luvatrix_core/platform/macos/window_system.py +153 -0
  29. luvatrix_core/platform/vulkan_compat.py +422 -0
  30. luvatrix_core/platform/vulkan_scaling.py +114 -0
  31. luvatrix_core/render/__init__.py +4 -0
  32. luvatrix_core/render/framebuffer.py +142 -0
  33. luvatrix_core/render/svg.py +345 -0
  34. luvatrix_core/targets/__init__.py +5 -0
  35. luvatrix_core/targets/base.py +36 -0
  36. luvatrix_core/targets/vulkan_target.py +53 -0
  37. luvatrix_core/targets/web_target.py +14 -0
  38. luvatrix_core/ui/__init__.py +4 -0
  39. luvatrix_core/ui/element.py +16 -0
  40. luvatrix_core/ui/page_loader.py +51 -0
  41. luvatrix_plot/__init__.py +18 -0
  42. luvatrix_plot/adapters/__init__.py +3 -0
  43. luvatrix_plot/adapters/normalize.py +133 -0
  44. luvatrix_plot/api.py +38 -0
  45. luvatrix_plot/compile/__init__.py +13 -0
  46. luvatrix_plot/compile/app_protocol.py +64 -0
  47. luvatrix_plot/display.py +64 -0
  48. luvatrix_plot/dynamic_axis.py +187 -0
  49. luvatrix_plot/errors.py +2 -0
  50. luvatrix_plot/figure.py +1134 -0
  51. luvatrix_plot/live.py +193 -0
  52. luvatrix_plot/raster/__init__.py +18 -0
  53. luvatrix_plot/raster/canvas.py +68 -0
  54. luvatrix_plot/raster/draw_lines.py +39 -0
  55. luvatrix_plot/raster/draw_markers.py +17 -0
  56. luvatrix_plot/raster/draw_text.py +205 -0
  57. luvatrix_plot/raster/layers.py +31 -0
  58. luvatrix_plot/scales.py +218 -0
  59. luvatrix_plot/series.py +32 -0
  60. luvatrix_ui/__init__.py +79 -0
  61. luvatrix_ui/component_schema.py +154 -0
  62. luvatrix_ui/controls/__init__.py +16 -0
  63. luvatrix_ui/controls/button.py +68 -0
  64. luvatrix_ui/controls/interaction.py +56 -0
  65. luvatrix_ui/controls/svg_component.py +67 -0
  66. luvatrix_ui/controls/svg_renderer.py +34 -0
  67. luvatrix_ui/style/__init__.py +5 -0
  68. luvatrix_ui/style/theme.py +66 -0
  69. luvatrix_ui/text/__init__.py +25 -0
  70. luvatrix_ui/text/component.py +106 -0
  71. luvatrix_ui/text/renderer.py +132 -0
  72. luvatrix_ui/ui_ir.py +674 -0
@@ -0,0 +1,180 @@
1
+ Metadata-Version: 2.4
2
+ Name: luvatrix
3
+ Version: 0.1.0
4
+ Summary: Luvatrix runtime and plotting toolkit
5
+ Requires-Python: <3.15,>=3.14
6
+ Description-Content-Type: text/markdown
7
+ Requires-Dist: numpy>=2.4.2
8
+ Requires-Dist: torch>=2.4.0
9
+ Provides-Extra: plot
10
+ Provides-Extra: macos
11
+ Requires-Dist: pyobjc-core>=12.1; extra == "macos"
12
+ Requires-Dist: pyobjc-framework-cocoa>=12.1; extra == "macos"
13
+ Requires-Dist: pyobjc-framework-quartz>=12.1; extra == "macos"
14
+ Provides-Extra: vulkan
15
+ Requires-Dist: vulkan>=1.3.275.1; extra == "vulkan"
16
+ Provides-Extra: dev
17
+ Requires-Dist: matplotlib>=3.10.8; extra == "dev"
18
+
19
+ # Luvatrix
20
+
21
+ Custom app protocol + custom rendering protocol runtime in Python.
22
+
23
+ ## Current Focus
24
+
25
+ Phase 1 is a macOS-first OS-level renderer:
26
+ - Window Matrix protocol (`H x W x 4` RGBA255, PyTorch)
27
+ - Vulkan presentation loop (`init -> loop -> stop`)
28
+ - HDI thread + Sensor manager thread
29
+ - In-process app protocol (`app.toml` + Python entrypoint)
30
+
31
+ ## Planning Document
32
+
33
+ See `planning.md` for the integrated Phase 1 spec and visual TLDR protocol models.
34
+
35
+ ## Repository Layout
36
+
37
+ - Core engine/runtime source lives in `luvatrix_core/`.
38
+ - In-repo UI contracts/components live in `luvatrix_ui/` (`text/`, `controls/`, `style/`).
39
+
40
+ ## `luvatrix_ui` (In-Repo, v0)
41
+
42
+ `luvatrix_ui` is a first-party in-repo UI layer with explicit, future-extractable boundaries.
43
+
44
+ Current v0 surface:
45
+
46
+ - `TextRenderer` + text command/style contracts in `luvatrix_ui/text/renderer.py`.
47
+ - `SVGRenderer` + `SVGComponent` contracts in `luvatrix_ui/controls/svg_renderer.py` and
48
+ `luvatrix_ui/controls/svg_component.py`.
49
+ - `ButtonModel` state machine in `luvatrix_ui/controls/button.py`:
50
+ `idle`, `hover`, `press_down`, `press_hold`, `disabled`.
51
+ - `ThemeTokens` + validation/default merging in `luvatrix_ui/style/theme.py`.
52
+
53
+ Runtime-side compiler:
54
+
55
+ - `MatrixUIFrameRenderer` in `luvatrix_core/core/ui_frame_renderer.py` compiles first-party
56
+ component batches (including SVG) into matrix frame tensors for `WriteBatch` submission.
57
+
58
+ Interaction model:
59
+
60
+ - Consumes standardized HDI `press` phases (`down`, `hold_start`, `hold_tick`, `up`, `cancel`, etc.).
61
+ - Keeps runtime/platform internals out of `luvatrix_ui`; integrations should adapt events/renderers at the boundary.
62
+
63
+ See:
64
+
65
+ - `docs/ui_component_protocol.md` for component contracts
66
+ - `docs/app_protocol.md` for runtime contract
67
+ - `docs/json_ui_compiler.md` for JSON page/lottie-oriented compiler design
68
+
69
+ ## macOS Visualizer Examples
70
+
71
+ Run stretch mode:
72
+ ```bash
73
+ uv run --python 3.14 python examples/macos_visualizer/stretch_mode.py
74
+ ```
75
+
76
+ Run preserve-aspect mode (black bars when needed):
77
+ ```bash
78
+ uv run --python 3.14 python examples/macos_visualizer/preserve_aspect_mode.py
79
+ ```
80
+
81
+ Run the full interactive suite app-protocol example (runs until window closes):
82
+ ```bash
83
+ uv run --python 3.14 python examples/app_protocol/run_full_suite_interactive.py --aspect stretch
84
+ uv run --python 3.14 python examples/app_protocol/run_full_suite_interactive.py --aspect preserve
85
+ ```
86
+
87
+ Force experimental Vulkan path:
88
+ ```bash
89
+ LUVATRIX_ENABLE_EXPERIMENTAL_VULKAN=1 uv run --python 3.14 python examples/macos_visualizer/stretch_mode.py
90
+ ```
91
+
92
+ Force fallback layer-blit path:
93
+ ```bash
94
+ unset LUVATRIX_ENABLE_EXPERIMENTAL_VULKAN
95
+ uv run --python 3.14 python examples/macos_visualizer/stretch_mode.py
96
+ ```
97
+
98
+ Quick Vulkan environment probe (no window):
99
+ ```bash
100
+ uv run --python 3.14 python examples/macos_visualizer/vulkan_probe.py
101
+ ```
102
+
103
+ ## App Protocol Example
104
+
105
+ Minimal input + sensor logger app:
106
+ ```bash
107
+ uv run --python 3.14 python examples/app_protocol/run_input_sensor_logger.py --simulate-hdi --simulate-sensors
108
+ ```
109
+
110
+ Choose which sensors to log:
111
+ ```bash
112
+ uv run --python 3.14 python examples/app_protocol/run_input_sensor_logger.py \
113
+ --simulate-hdi \
114
+ --sensor thermal.temperature \
115
+ --sensor power.voltage_current
116
+ ```
117
+
118
+ Additional available sensor metadata types:
119
+ `sensor.motion`, `camera.device`, `microphone.device`, `speaker.device`.
120
+
121
+ Open a macOS logger window and report real mouse hover coordinates (window-relative only, gated by active/focused window):
122
+ ```bash
123
+ uv run --python 3.14 python examples/app_protocol/run_input_sensor_logger.py \
124
+ --open-window \
125
+ --sensor thermal.temperature \
126
+ --sensor power.voltage_current
127
+ ```
128
+
129
+ Notes:
130
+ - `--simulate-hdi` intentionally emits synthetic keyboard events (`key='a'`) for test visibility.
131
+ - With `--open-window` and without `--simulate-hdi`, logger emits real window-gated mouse and keyboard input.
132
+
133
+ ## Unified Runtime CLI
134
+
135
+ App manifests can now include optional `platform_support` and `[[variants]]` blocks so runtime picks only the host-compatible variant entrypoint/module root.
136
+
137
+ Run any app protocol folder (`app.toml` + entrypoint) headless:
138
+ ```bash
139
+ uv run --python 3.14 python main.py run-app examples/app_protocol/input_sensor_logger --render headless --ticks 300
140
+ ```
141
+
142
+ Run it with macOS window rendering:
143
+ ```bash
144
+ uv run --python 3.14 python main.py run-app examples/app_protocol/input_sensor_logger --render macos --width 640 --height 360
145
+ ```
146
+
147
+ Use real macOS sensor providers:
148
+ ```bash
149
+ uv run --python 3.14 python main.py run-app examples/app_protocol/input_sensor_logger --render headless --sensor-backend macos
150
+ ```
151
+
152
+ Enable runtime energy safety monitoring (throttles on warn, can enforce shutdown on sustained critical telemetry):
153
+ ```bash
154
+ uv run --python 3.14 python main.py run-app examples/app_protocol/input_sensor_logger \
155
+ --sensor-backend macos \
156
+ --energy-safety monitor
157
+ ```
158
+
159
+ Enforce shutdown instead of monitor-only mode:
160
+ ```bash
161
+ uv run --python 3.14 python main.py run-app examples/app_protocol/input_sensor_logger \
162
+ --sensor-backend macos \
163
+ --energy-safety enforce \
164
+ --energy-critical-streak 3
165
+ ```
166
+
167
+ Persist audit events to SQLite or JSONL:
168
+ ```bash
169
+ uv run --python 3.14 python main.py run-app examples/app_protocol/input_sensor_logger --audit-sqlite ./.luvatrix/audit.db
170
+ uv run --python 3.14 python main.py run-app examples/app_protocol/input_sensor_logger --audit-jsonl ./.luvatrix/audit.jsonl
171
+ ```
172
+
173
+ With the logger example, you can explicitly include motion:
174
+ ```bash
175
+ uv run --python 3.14 python examples/app_protocol/run_input_sensor_logger.py \
176
+ --open-window \
177
+ --sensor sensor.motion \
178
+ --sensor thermal.temperature \
179
+ --simulate-sensors
180
+ ```
@@ -0,0 +1,72 @@
1
+ luvatrix_core/__init__.py,sha256=cNWr4-Lwdf1vMzbqind_39eDvnpUCdtYbQA-tUdYpZs,73
2
+ luvatrix_core/core/__init__.py,sha256=2kO7mWsfUdJ-2kT6hiqS-GgNLNabMDWH2_Vg_M1js2E,2714
3
+ luvatrix_core/core/app_runtime.py,sha256=jEiKZSXrLBOP1Zu90Pc6nY4jc7ZObxa7Q7hRWUG99ms,28003
4
+ luvatrix_core/core/audit.py,sha256=7VBaykivfZ_cWIfUH4NsvOS3lU1BCznPO-8BLi1Pc3I,5069
5
+ luvatrix_core/core/coordinates.py,sha256=YKA5IMK46gtWfF4t5_6Z74wF9NzyhlfBmOmLfH5E0Nw,5720
6
+ luvatrix_core/core/display_runtime.py,sha256=evFRPFI7ouorsuiKwbttcquix8Ks5k7g4Ma034-y82Y,4222
7
+ luvatrix_core/core/energy_safety.py,sha256=VHAIfvbZUpT1WbpGCp0qC3DHQHvzqdkMgKgi5BVfcBU,5205
8
+ luvatrix_core/core/engine.py,sha256=7gvc4tykSszuMcLfJWMSMCWGp6R1e5h5pNWUf1hzhvY,3596
9
+ luvatrix_core/core/events.py,sha256=SHg3iUrqYFwux5qFw2Zj6zz7aBpqmaiBazKSoGF9uXc,598
10
+ luvatrix_core/core/frame_rate_controller.py,sha256=xS_MEuFfwiYlYV4Fiwq000peKSsVSaMyaAfD-b--d-4,1612
11
+ luvatrix_core/core/hdi_thread.py,sha256=zCToezAB53h-kU16wVEUPoqDv-Y9pqpHnAme_jj9VJk,16725
12
+ luvatrix_core/core/protocol_governance.py,sha256=878w_MjOae3WnfHUd_yQrs90BieeOnb6p_67Mp6kPc0,1657
13
+ luvatrix_core/core/sensor_manager.py,sha256=r3VsuVvKyLl6oHLBqtlu3Vy0F6LySWvKA_u1_fhuGkA,7190
14
+ luvatrix_core/core/ui_frame_renderer.py,sha256=NYqTSpOcLuH_RnwhLrdHuqlFpp3A3Et6g-ye-KxKv3o,18217
15
+ luvatrix_core/core/unified_runtime.py,sha256=Kadig6yVXZbb2xxrRzoah7jQYtCDsqL7UuDrz-wm5WM,5546
16
+ luvatrix_core/core/window_matrix.py,sha256=3sjr0vL5VFFtcAwVdbF5RXHukqQg2fxn9y_d98eZ7IE,8220
17
+ luvatrix_core/platform/__init__.py,sha256=XrzBKH61ASH5zjcMvmdbgP19mcb9IgiKYbEgHtG6d4Y,373
18
+ luvatrix_core/platform/frame_pipeline.py,sha256=YuvISdWyGaILvCy6Z-QC7FtXmWO9a489uK8LLVdc5Uo,1464
19
+ luvatrix_core/platform/vulkan_compat.py,sha256=5BtI6RpXcj5qfXQcn9_2NT9eEX2HK8LZRPwky6Ro0cc,17242
20
+ luvatrix_core/platform/vulkan_scaling.py,sha256=6fL7MQCpo_bCQs7IqrPIEMILDpUIq7Y8sQpKjbzduCQ,3695
21
+ luvatrix_core/platform/macos/__init__.py,sha256=puvfwtZ0grAFJ1XJviOTwe41pk613U68eTsNR0l_9tU,1036
22
+ luvatrix_core/platform/macos/hdi_source.py,sha256=Yoj1PD8uMoJuGQQEA3tm649dKKiOEBI4zce8uZpKQQE,8700
23
+ luvatrix_core/platform/macos/sensors.py,sha256=rw_RapmZhkSDP8j5cg-Ws7G7yrsrFcixvflnmYXNw8Y,7898
24
+ luvatrix_core/platform/macos/vulkan_backend.py,sha256=1Hckdy6GqxRz6lBVIFq1DCey5MolWCStsOriFhHR83s,69222
25
+ luvatrix_core/platform/macos/vulkan_presenter.py,sha256=wu8buy0Y8aA5Er0nmcXdgMQXynO75o6dyeVgtEcgX-k,6919
26
+ luvatrix_core/platform/macos/window_system.py,sha256=6Us4pYo81Psdl8MH6-fWvH5EHxtbig-UYfuBWr_attY,5225
27
+ luvatrix_core/render/__init__.py,sha256=QC8K_Gess0WmHUhVU3fjWufhO5KNB-80lEOZruDsNOc,108
28
+ luvatrix_core/render/framebuffer.py,sha256=iNT91zegZd4cWaamySC0obGN1olysTAEE7t117foDQ0,4350
29
+ luvatrix_core/render/svg.py,sha256=UdQeAkbsXF5B3eslLilRidlfD6R_3GVq3NhrpeBYkao,11282
30
+ luvatrix_core/targets/__init__.py,sha256=xSmmgFvY3-Y8YkAr_QGZJEfmuqPEIESLp50QCYUdlS4,192
31
+ luvatrix_core/targets/base.py,sha256=mCeUcG2MxvbfrUZg7cfDBiB2B0xmX1ug6nrV78hFuDg,820
32
+ luvatrix_core/targets/vulkan_target.py,sha256=dCBW8-zTqXIMRc5LiGJaYWMRzsC-1ssF1Fb9bD6qY6I,1374
33
+ luvatrix_core/targets/web_target.py,sha256=b_dz-p9ShkRqVIhUVu6S04f-15pL-5QszRhWrLP5LRw,447
34
+ luvatrix_core/ui/__init__.py,sha256=VYaQyhMW81EnuW9sUPiJ-fyXm0JgNo-59rPAzBGEkBA,114
35
+ luvatrix_core/ui/element.py,sha256=J5HCUxazgZxQ7qe45b1R8S43CuCrhZC01Bjlx30YL-8,320
36
+ luvatrix_core/ui/page_loader.py,sha256=yssl11PjepGlv07AvpT39yUNpfPRs9WOiL-KHxKpCFM,1479
37
+ luvatrix_plot/__init__.py,sha256=mWUC1oZdE3q7kyUZSF56KdnxCosoOnVTB7oBk8ySjS0,566
38
+ luvatrix_plot/api.py,sha256=ySSF0wd9GeGx0CFIUJxHXk1I-aZPNBluNC5RcnISEcc,1245
39
+ luvatrix_plot/display.py,sha256=Y7PNf6dpyjsJ1RbSs5dPYqgGxTYRvgr5K0S680qbJH8,1899
40
+ luvatrix_plot/dynamic_axis.py,sha256=e_seT5K6WGf_sPN3IXSOeho-TSNE9OPNK-q7f-_9Veg,5530
41
+ luvatrix_plot/errors.py,sha256=jxNZQ0XdMCQiwUDoUGa5IR6pCTlactUEFn1et9kJFJ0,108
42
+ luvatrix_plot/figure.py,sha256=cpA96m6kjLw30qhCNPrcDE42Eg2y1JiMWPCj2zRYNQQ,46907
43
+ luvatrix_plot/live.py,sha256=AWCIhIdLvfO5wIeiCPYj312e7C5LpXzBa1v5swi0Dso,6848
44
+ luvatrix_plot/scales.py,sha256=8rQ1i_9k_u4xiGjVDbBmQFUdhJjJq8Bx6xJ-NfxnMHg,6495
45
+ luvatrix_plot/series.py,sha256=m8ushvImMssuDdviILy17zLyeERKWt3nwKw8HO-xkQw,604
46
+ luvatrix_plot/adapters/__init__.py,sha256=_ONvq6y16uW82FYsZw_fl4W4xBP9DCYeIseRHp6ebOY,64
47
+ luvatrix_plot/adapters/normalize.py,sha256=vEceesHFYs3iV05Oc5trJ5Hpv30npmzSm_5LjFpNHw4,4380
48
+ luvatrix_plot/compile/__init__.py,sha256=oWfOGziTiBL2K1GTy38lBe_EYm3BW0yq-ZqELILFeaQ,317
49
+ luvatrix_plot/compile/app_protocol.py,sha256=R3Xq5F16V5eaTkCHUwgRtd8ozFFVRTxUwx0BF-YEhB8,2867
50
+ luvatrix_plot/raster/__init__.py,sha256=7hPAvZ3SWFBGi8a2LHycQ-TiOQ4gS46jTvSwgxrXCPg,417
51
+ luvatrix_plot/raster/canvas.py,sha256=6gQL-FXF1vY8NamJt49Y8gwQRajQ5nC9EfQdZIG1V-Y,2146
52
+ luvatrix_plot/raster/draw_lines.py,sha256=mVet_lTz0uD8QdkMmzcstKkgv7z_cK1VKKj2qRk6ZNQ,1190
53
+ luvatrix_plot/raster/draw_markers.py,sha256=xCWJSpKHdrHTOvZ1eG9qi_Oa_-_hLG4kH4-OMgpwbFo,612
54
+ luvatrix_plot/raster/draw_text.py,sha256=ZTt_S4MqLyrpdARDGZT0oREE7q4wcf6OMAmRcPnZ_DU,6315
55
+ luvatrix_plot/raster/layers.py,sha256=LbX092d2NyBSka-yXCtvAolaIkuzAgAzBOeYiXEBDrw,806
56
+ luvatrix_ui/__init__.py,sha256=7OufqL_8l_DRlLbxXlrJznbOz26vZbJKT8QL08iS_RA,1901
57
+ luvatrix_ui/component_schema.py,sha256=nhVVw_AFk2s_DnM8viU7bM2cn05tb912uGCDsSgHGjc,4884
58
+ luvatrix_ui/ui_ir.py,sha256=Rox3eLVG1czPymRw6QPRlW6bmBwBtP9Rdgc0M11c21E,26796
59
+ luvatrix_ui/controls/__init__.py,sha256=5vK5IZgPSCDHJeCy1Sac9nCmLzgSf3hRqpvAxqBiC54,446
60
+ luvatrix_ui/controls/button.py,sha256=QWD7OQhX6hLTGNNjLAePxF24TRlx8ZUJ0i90opp2jfg,2013
61
+ luvatrix_ui/controls/interaction.py,sha256=oa_zLqj8RiKNbcAAhJq3YDuYuquU84e26EWpRtFah0U,1440
62
+ luvatrix_ui/controls/svg_component.py,sha256=74TZxH6K_1FPzm60mWfESTf28ZY7lM8-LhHjqFx-cRs,2267
63
+ luvatrix_ui/controls/svg_renderer.py,sha256=67wySp9ck_9wy3ingvZXgHT2a8TtfGrXsTzQZsLDvgc,788
64
+ luvatrix_ui/style/__init__.py,sha256=sIwasD-sG0HmT_kdbveA6AWbYvRe0-64OwZd8hftlH4,149
65
+ luvatrix_ui/style/theme.py,sha256=Jgb_djHq1UW6Eoq8SvOtx5_lArBFCu2cT6lnUp-BzhY,2251
66
+ luvatrix_ui/text/__init__.py,sha256=RkQgy-RiPn3h_x5x7WwETBGPnzPpQRuH9i-p5b7haUg,492
67
+ luvatrix_ui/text/component.py,sha256=J-rTNQnbo-HW0C89DjGfqwgM3V65GGk2hxoFeTHT9t0,3545
68
+ luvatrix_ui/text/renderer.py,sha256=_UqC3arX_GGmvYLz1zPxXZvM2_WlsCNMQKYq3Wco4LE,3851
69
+ luvatrix-0.1.0.dist-info/METADATA,sha256=1NgFbFL4XeZTrmvb78Ty8nFbHl_W8vQUZhk0IpvuvTQ,6211
70
+ luvatrix-0.1.0.dist-info/WHEEL,sha256=YCfwYGOYMi5Jhw2fU4yNgwErybb2IX5PEwBKV4ZbdBo,91
71
+ luvatrix-0.1.0.dist-info/top_level.txt,sha256=VJSeIapQPxO46ZqRvtGn9BCZiWWAjCSOu1ajv1jNkJc,40
72
+ luvatrix-0.1.0.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (82.0.0)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,3 @@
1
+ luvatrix_core
2
+ luvatrix_plot
3
+ luvatrix_ui
@@ -0,0 +1,4 @@
1
+ """Luvatrix runtime."""
2
+
3
+ __all__ = ["__version__"]
4
+ __version__ = "0.1.0"
@@ -0,0 +1,109 @@
1
+ from .audit import JsonlAuditSink, SQLiteAuditSink
2
+ from .app_runtime import (
3
+ APP_PROTOCOL_VERSION,
4
+ AppContext,
5
+ AppLifecycle,
6
+ AppManifest,
7
+ AppRuntime,
8
+ AppUIRenderer,
9
+ AppVariant,
10
+ ResolvedAppVariant,
11
+ )
12
+ from .display_runtime import DisplayRuntime, RenderTick
13
+ from .frame_rate_controller import FrameRateController
14
+ from .ui_frame_renderer import MatrixUIFrameRenderer
15
+ from .coordinates import (
16
+ CoordinateFrame,
17
+ CoordinateFrameRegistry,
18
+ PRESET_CARTESIAN_BL,
19
+ PRESET_CARTESIAN_CENTER,
20
+ PRESET_SCREEN_TL,
21
+ )
22
+ from .energy_safety import EnergySafetyController, EnergySafetyDecision, EnergySafetyPolicy, SensorEnergySafetyController
23
+ from .engine import Engine
24
+ from .hdi_thread import HDIEvent, HDIEventSource, HDIThread
25
+ from .events import InputEvent
26
+ from .protocol_governance import (
27
+ CURRENT_PROTOCOL_VERSION,
28
+ DEPRECATED_PROTOCOL_VERSIONS,
29
+ SUPPORTED_PROTOCOL_VERSIONS,
30
+ ProtocolCompatibility,
31
+ check_protocol_compatibility,
32
+ )
33
+ from .sensor_manager import (
34
+ DEFAULT_ENABLED_SENSORS,
35
+ FallbackSensorProvider,
36
+ SensorReadDeniedError,
37
+ SensorReadUnavailableError,
38
+ SensorManagerThread,
39
+ SensorProvider,
40
+ SensorSample,
41
+ )
42
+ from .unified_runtime import UnifiedRunResult, UnifiedRuntime
43
+ from .window_matrix import (
44
+ CallBlitEvent,
45
+ FullRewrite,
46
+ Multiply,
47
+ PushColumn,
48
+ PushRow,
49
+ ReplaceRect,
50
+ ReplaceColumn,
51
+ ReplaceRow,
52
+ WriteBatch,
53
+ WindowMatrix,
54
+ )
55
+
56
+ __all__ = [
57
+ "CallBlitEvent",
58
+ "APP_PROTOCOL_VERSION",
59
+ "AppContext",
60
+ "AppLifecycle",
61
+ "AppManifest",
62
+ "AppRuntime",
63
+ "AppUIRenderer",
64
+ "AppVariant",
65
+ "ResolvedAppVariant",
66
+ "JsonlAuditSink",
67
+ "DisplayRuntime",
68
+ "FrameRateController",
69
+ "Engine",
70
+ "FullRewrite",
71
+ "HDIEvent",
72
+ "HDIEventSource",
73
+ "HDIThread",
74
+ "InputEvent",
75
+ "Multiply",
76
+ "PushColumn",
77
+ "PushRow",
78
+ "ReplaceRect",
79
+ "ReplaceColumn",
80
+ "ReplaceRow",
81
+ "RenderTick",
82
+ "MatrixUIFrameRenderer",
83
+ "CoordinateFrame",
84
+ "CoordinateFrameRegistry",
85
+ "PRESET_SCREEN_TL",
86
+ "PRESET_CARTESIAN_BL",
87
+ "PRESET_CARTESIAN_CENTER",
88
+ "EnergySafetyController",
89
+ "EnergySafetyDecision",
90
+ "EnergySafetyPolicy",
91
+ "SensorEnergySafetyController",
92
+ "DEFAULT_ENABLED_SENSORS",
93
+ "CURRENT_PROTOCOL_VERSION",
94
+ "DEPRECATED_PROTOCOL_VERSIONS",
95
+ "SUPPORTED_PROTOCOL_VERSIONS",
96
+ "ProtocolCompatibility",
97
+ "check_protocol_compatibility",
98
+ "FallbackSensorProvider",
99
+ "SensorReadDeniedError",
100
+ "SensorReadUnavailableError",
101
+ "SensorManagerThread",
102
+ "SensorProvider",
103
+ "SensorSample",
104
+ "SQLiteAuditSink",
105
+ "UnifiedRunResult",
106
+ "UnifiedRuntime",
107
+ "WriteBatch",
108
+ "WindowMatrix",
109
+ ]