swirui 0.1.0a1__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 (472) hide show
  1. swirui-0.1.0a1/.github/workflows/advanced-charts-native.yml +62 -0
  2. swirui-0.1.0a1/.github/workflows/affine-native.yml +141 -0
  3. swirui-0.1.0a1/.github/workflows/cartesian-charts-native.yml +68 -0
  4. swirui-0.1.0a1/.github/workflows/ci.yml +267 -0
  5. swirui-0.1.0a1/.github/workflows/color-picker-native.yml +64 -0
  6. swirui-0.1.0a1/.github/workflows/command-surfaces-native.yml +60 -0
  7. swirui-0.1.0a1/.github/workflows/context-commands-native.yml +60 -0
  8. swirui-0.1.0a1/.github/workflows/date-time-native.yml +64 -0
  9. swirui-0.1.0a1/.github/workflows/docking-native.yml +60 -0
  10. swirui-0.1.0a1/.github/workflows/file-picker-native.yml +64 -0
  11. swirui-0.1.0a1/.github/workflows/gpu-charts-native.yml +89 -0
  12. swirui-0.1.0a1/.github/workflows/interactive-charts-native.yml +77 -0
  13. swirui-0.1.0a1/.github/workflows/large-dataset-charts-native.yml +71 -0
  14. swirui-0.1.0a1/.github/workflows/media-audio-native.yml +87 -0
  15. swirui-0.1.0a1/.github/workflows/media-camera-native.yml +91 -0
  16. swirui-0.1.0a1/.github/workflows/media-image-native.yml +84 -0
  17. swirui-0.1.0a1/.github/workflows/media-lottie-native.yml +84 -0
  18. swirui-0.1.0a1/.github/workflows/media-microphone-native.yml +87 -0
  19. swirui-0.1.0a1/.github/workflows/media-video-native.yml +87 -0
  20. swirui-0.1.0a1/.github/workflows/navigation-native.yml +60 -0
  21. swirui-0.1.0a1/.github/workflows/property-grid-native.yml +60 -0
  22. swirui-0.1.0a1/.github/workflows/publish-pypi.yml +210 -0
  23. swirui-0.1.0a1/.github/workflows/radial-charts-native.yml +64 -0
  24. swirui-0.1.0a1/.github/workflows/specialized-charts-native.yml +69 -0
  25. swirui-0.1.0a1/.github/workflows/streaming-charts-native.yml +69 -0
  26. swirui-0.1.0a1/.github/workflows/timeline-native.yml +62 -0
  27. swirui-0.1.0a1/.gitignore +37 -0
  28. swirui-0.1.0a1/CHANGELOG.md +163 -0
  29. swirui-0.1.0a1/CONTRIBUTING.md +65 -0
  30. swirui-0.1.0a1/PKG-INFO +441 -0
  31. swirui-0.1.0a1/README.md +415 -0
  32. swirui-0.1.0a1/ROADMAP.md +590 -0
  33. swirui-0.1.0a1/assets/readme/hero.svg +67 -0
  34. swirui-0.1.0a1/assets/readme/progress-card.svg +43 -0
  35. swirui-0.1.0a1/assets/readme/progress-mini.svg +21 -0
  36. swirui-0.1.0a1/assets/readme/progress-template.svg +23 -0
  37. swirui-0.1.0a1/assets/swirui-icon.svg +28 -0
  38. swirui-0.1.0a1/benchmarks/interactive_charts.py +50 -0
  39. swirui-0.1.0a1/benchmarks/large_dataset_charts.py +56 -0
  40. swirui-0.1.0a1/benchmarks/media_audio_timeline.py +40 -0
  41. swirui-0.1.0a1/benchmarks/media_camera_frame.py +35 -0
  42. swirui-0.1.0a1/benchmarks/media_microphone_buffer.py +36 -0
  43. swirui-0.1.0a1/benchmarks/media_video_playback.py +35 -0
  44. swirui-0.1.0a1/benchmarks/performance_budgets.json +32 -0
  45. swirui-0.1.0a1/benchmarks/retained_runtime.py +294 -0
  46. swirui-0.1.0a1/benchmarks/specialized_charts.py +60 -0
  47. swirui-0.1.0a1/benchmarks/streaming_charts.py +51 -0
  48. swirui-0.1.0a1/docs/ARCHITECTURE.md +114 -0
  49. swirui-0.1.0a1/examples/adaptive_navigation_demo.py +69 -0
  50. swirui-0.1.0a1/examples/adaptive_quality_demo.py +136 -0
  51. swirui-0.1.0a1/examples/advanced_charts_demo.py +71 -0
  52. swirui-0.1.0a1/examples/advanced_transform_animation_demo.py +51 -0
  53. swirui-0.1.0a1/examples/animation_repeat_demo.py +40 -0
  54. swirui-0.1.0a1/examples/animation_timing_demo.py +21 -0
  55. swirui-0.1.0a1/examples/async_persistent_state_demo.py +38 -0
  56. swirui-0.1.0a1/examples/cartesian_charts_demo.py +64 -0
  57. swirui-0.1.0a1/examples/color_picker_demo.py +26 -0
  58. swirui-0.1.0a1/examples/component_lifecycle_demo.py +26 -0
  59. swirui-0.1.0a1/examples/context_commands_demo.py +45 -0
  60. swirui-0.1.0a1/examples/core_overlays_demo.py +77 -0
  61. swirui-0.1.0a1/examples/core_scroll_view_demo.py +51 -0
  62. swirui-0.1.0a1/examples/core_split_view_demo.py +95 -0
  63. swirui-0.1.0a1/examples/core_surfaces_demo.py +90 -0
  64. swirui-0.1.0a1/examples/core_toggles_demo.py +61 -0
  65. swirui-0.1.0a1/examples/core_widgets_demo.py +51 -0
  66. swirui-0.1.0a1/examples/custom_shader_validation_demo.py +42 -0
  67. swirui-0.1.0a1/examples/data_grid_demo.py +96 -0
  68. swirui-0.1.0a1/examples/date_time_demo.py +55 -0
  69. swirui-0.1.0a1/examples/dynamic_typography_demo.py +70 -0
  70. swirui-0.1.0a1/examples/effect_transition_demo.py +127 -0
  71. swirui-0.1.0a1/examples/expander_accordion_demo.py +65 -0
  72. swirui-0.1.0a1/examples/file_picker_demo.py +38 -0
  73. swirui-0.1.0a1/examples/foundation_demo.py +32 -0
  74. swirui-0.1.0a1/examples/gpu_adaptive_lighting_demo.py +108 -0
  75. swirui-0.1.0a1/examples/gpu_affine_path_demo.py +191 -0
  76. swirui-0.1.0a1/examples/gpu_backdrop_blur_demo.py +116 -0
  77. swirui-0.1.0a1/examples/gpu_bloom_demo.py +108 -0
  78. swirui-0.1.0a1/examples/gpu_charts_demo.py +71 -0
  79. swirui-0.1.0a1/examples/gpu_color_filters_demo.py +79 -0
  80. swirui-0.1.0a1/examples/gpu_custom_shader_demo.py +98 -0
  81. swirui-0.1.0a1/examples/gpu_depth_demo.py +109 -0
  82. swirui-0.1.0a1/examples/gpu_dynamic_effects_demo.py +118 -0
  83. swirui-0.1.0a1/examples/gpu_effect_cache_demo.py +95 -0
  84. swirui-0.1.0a1/examples/gpu_glass_materials_demo.py +131 -0
  85. swirui-0.1.0a1/examples/gpu_gradients_demo.py +79 -0
  86. swirui-0.1.0a1/examples/gpu_image_demo.py +130 -0
  87. swirui-0.1.0a1/examples/gpu_mesh_gradients_demo.py +86 -0
  88. swirui-0.1.0a1/examples/gpu_native_effect_frame_cache_demo.py +92 -0
  89. swirui-0.1.0a1/examples/gpu_noise_demo.py +91 -0
  90. swirui-0.1.0a1/examples/gpu_paths_demo.py +88 -0
  91. swirui-0.1.0a1/examples/gpu_radial_gradients_demo.py +86 -0
  92. swirui-0.1.0a1/examples/gpu_rectangles_demo.py +126 -0
  93. swirui-0.1.0a1/examples/gpu_reflections_demo.py +79 -0
  94. swirui-0.1.0a1/examples/gpu_scene_blur_demo.py +79 -0
  95. swirui-0.1.0a1/examples/gpu_shadows_demo.py +121 -0
  96. swirui-0.1.0a1/examples/gpu_text_demo.py +132 -0
  97. swirui-0.1.0a1/examples/high_refresh_demo.py +80 -0
  98. swirui-0.1.0a1/examples/interaction_animation_demo.py +38 -0
  99. swirui-0.1.0a1/examples/interactive_charts_demo.py +44 -0
  100. swirui-0.1.0a1/examples/keyframe_animation_demo.py +60 -0
  101. swirui-0.1.0a1/examples/large_dataset_charts_demo.py +35 -0
  102. swirui-0.1.0a1/examples/layout_advanced_demo.py +70 -0
  103. swirui-0.1.0a1/examples/layout_intrinsic_sizing_demo.py +68 -0
  104. swirui-0.1.0a1/examples/layout_panels_demo.py +61 -0
  105. swirui-0.1.0a1/examples/layout_row_column_demo.py +60 -0
  106. swirui-0.1.0a1/examples/magnetic_interaction_demo.py +36 -0
  107. swirui-0.1.0a1/examples/media_audio_demo.py +41 -0
  108. swirui-0.1.0a1/examples/media_camera_demo.py +43 -0
  109. swirui-0.1.0a1/examples/media_image_demo.py +68 -0
  110. swirui-0.1.0a1/examples/media_lottie_demo.py +50 -0
  111. swirui-0.1.0a1/examples/media_microphone_demo.py +31 -0
  112. swirui-0.1.0a1/examples/media_video_demo.py +52 -0
  113. swirui-0.1.0a1/examples/native_window_demo.py +29 -0
  114. swirui-0.1.0a1/examples/page_transition_demo.py +75 -0
  115. swirui-0.1.0a1/examples/particle_animation_demo.py +31 -0
  116. swirui-0.1.0a1/examples/physics_animation_demo.py +50 -0
  117. swirui-0.1.0a1/examples/property_grid_demo.py +35 -0
  118. swirui-0.1.0a1/examples/radial_charts_demo.py +47 -0
  119. swirui-0.1.0a1/examples/range_progress_demo.py +77 -0
  120. swirui-0.1.0a1/examples/reactive_runtime_demo.py +20 -0
  121. swirui-0.1.0a1/examples/responsive_layout_demo.py +87 -0
  122. swirui-0.1.0a1/examples/rotate_transition_demo.py +42 -0
  123. swirui-0.1.0a1/examples/shared_element_transition_demo.py +58 -0
  124. swirui-0.1.0a1/examples/specialized_charts_demo.py +58 -0
  125. swirui-0.1.0a1/examples/streaming_charts_demo.py +56 -0
  126. swirui-0.1.0a1/examples/text_inputs_demo.py +55 -0
  127. swirui-0.1.0a1/examples/timeline_demo.py +33 -0
  128. swirui-0.1.0a1/examples/transform_animation_demo.py +31 -0
  129. swirui-0.1.0a1/examples/visible_scene_demo.py +161 -0
  130. swirui-0.1.0a1/native/Cargo.toml +40 -0
  131. swirui-0.1.0a1/native/README.md +48 -0
  132. swirui-0.1.0a1/native/src/affine.rs +208 -0
  133. swirui-0.1.0a1/native/src/audio.rs +149 -0
  134. swirui-0.1.0a1/native/src/audio_output.rs +210 -0
  135. swirui-0.1.0a1/native/src/backdrop_blur.wgsl +76 -0
  136. swirui-0.1.0a1/native/src/camera.rs +65 -0
  137. swirui-0.1.0a1/native/src/camera_capture.rs +88 -0
  138. swirui-0.1.0a1/native/src/color_filter.rs +254 -0
  139. swirui-0.1.0a1/native/src/custom_effect.rs +329 -0
  140. swirui-0.1.0a1/native/src/image.rs +1009 -0
  141. swirui-0.1.0a1/native/src/images.wgsl +46 -0
  142. swirui-0.1.0a1/native/src/lib.rs +297 -0
  143. swirui-0.1.0a1/native/src/media.rs +628 -0
  144. swirui-0.1.0a1/native/src/microphone.rs +180 -0
  145. swirui-0.1.0a1/native/src/microphone_capture.rs +317 -0
  146. swirui-0.1.0a1/native/src/postprocess.rs +651 -0
  147. swirui-0.1.0a1/native/src/postprocess_blur.wgsl +63 -0
  148. swirui-0.1.0a1/native/src/postprocess_color.wgsl +42 -0
  149. swirui-0.1.0a1/native/src/rectangles.wgsl +95 -0
  150. swirui-0.1.0a1/native/src/renderer.rs +1875 -0
  151. swirui-0.1.0a1/native/src/shader_validation.rs +92 -0
  152. swirui-0.1.0a1/native/src/shape.rs +325 -0
  153. swirui-0.1.0a1/native/src/shapes.wgsl +58 -0
  154. swirui-0.1.0a1/native/src/text.rs +460 -0
  155. swirui-0.1.0a1/native/src/video.rs +149 -0
  156. swirui-0.1.0a1/pyproject.toml +68 -0
  157. swirui-0.1.0a1/src/swirui/__init__.py +399 -0
  158. swirui-0.1.0a1/src/swirui/animation.py +813 -0
  159. swirui-0.1.0a1/src/swirui/animation_timeline.py +225 -0
  160. swirui-0.1.0a1/src/swirui/app.py +510 -0
  161. swirui-0.1.0a1/src/swirui/audio.py +282 -0
  162. swirui-0.1.0a1/src/swirui/camera.py +109 -0
  163. swirui-0.1.0a1/src/swirui/core/__init__.py +51 -0
  164. swirui-0.1.0a1/src/swirui/core/accessibility.py +128 -0
  165. swirui-0.1.0a1/src/swirui/core/async_state.py +157 -0
  166. swirui-0.1.0a1/src/swirui/core/binding.py +149 -0
  167. swirui-0.1.0a1/src/swirui/core/collections.py +168 -0
  168. swirui-0.1.0a1/src/swirui/core/component.py +249 -0
  169. swirui-0.1.0a1/src/swirui/core/config.py +39 -0
  170. swirui-0.1.0a1/src/swirui/core/events.py +101 -0
  171. swirui-0.1.0a1/src/swirui/core/logging.py +29 -0
  172. swirui-0.1.0a1/src/swirui/core/persistent_state.py +133 -0
  173. swirui-0.1.0a1/src/swirui/core/quality.py +294 -0
  174. swirui-0.1.0a1/src/swirui/core/state.py +371 -0
  175. swirui-0.1.0a1/src/swirui/effect_animation.py +172 -0
  176. swirui-0.1.0a1/src/swirui/interaction_animation.py +417 -0
  177. swirui-0.1.0a1/src/swirui/keyframes.py +173 -0
  178. swirui-0.1.0a1/src/swirui/media.py +410 -0
  179. swirui-0.1.0a1/src/swirui/microphone.py +230 -0
  180. swirui-0.1.0a1/src/swirui/page_transition.py +140 -0
  181. swirui-0.1.0a1/src/swirui/performance.py +204 -0
  182. swirui-0.1.0a1/src/swirui/platforms/__init__.py +17 -0
  183. swirui-0.1.0a1/src/swirui/platforms/_windows_legacy.py +670 -0
  184. swirui-0.1.0a1/src/swirui/platforms/base.py +178 -0
  185. swirui-0.1.0a1/src/swirui/platforms/events.py +73 -0
  186. swirui-0.1.0a1/src/swirui/platforms/factory.py +32 -0
  187. swirui-0.1.0a1/src/swirui/platforms/linux.py +538 -0
  188. swirui-0.1.0a1/src/swirui/platforms/linux_scroll.py +50 -0
  189. swirui-0.1.0a1/src/swirui/platforms/macos.py +720 -0
  190. swirui-0.1.0a1/src/swirui/platforms/macos_scroll.py +85 -0
  191. swirui-0.1.0a1/src/swirui/platforms/windows.py +403 -0
  192. swirui-0.1.0a1/src/swirui/platforms/windows_scroll.py +62 -0
  193. swirui-0.1.0a1/src/swirui/rendering/__init__.py +77 -0
  194. swirui-0.1.0a1/src/swirui/rendering/affine.py +186 -0
  195. swirui-0.1.0a1/src/swirui/rendering/affine_clip_wgpu_renderer.py +408 -0
  196. swirui-0.1.0a1/src/swirui/rendering/affine_clipping.py +149 -0
  197. swirui-0.1.0a1/src/swirui/rendering/affine_text_wgpu_renderer.py +246 -0
  198. swirui-0.1.0a1/src/swirui/rendering/affine_wgpu_renderer.py +447 -0
  199. swirui-0.1.0a1/src/swirui/rendering/backdrop.py +67 -0
  200. swirui-0.1.0a1/src/swirui/rendering/backdrop_wgpu_renderer.py +518 -0
  201. swirui-0.1.0a1/src/swirui/rendering/base.py +92 -0
  202. swirui-0.1.0a1/src/swirui/rendering/bloom.py +147 -0
  203. swirui-0.1.0a1/src/swirui/rendering/color_filters.py +320 -0
  204. swirui-0.1.0a1/src/swirui/rendering/custom_shaders.py +250 -0
  205. swirui-0.1.0a1/src/swirui/rendering/custom_wgpu_renderer.py +112 -0
  206. swirui-0.1.0a1/src/swirui/rendering/depth.py +244 -0
  207. swirui-0.1.0a1/src/swirui/rendering/effect_cache.py +240 -0
  208. swirui-0.1.0a1/src/swirui/rendering/effects.py +387 -0
  209. swirui-0.1.0a1/src/swirui/rendering/factory.py +37 -0
  210. swirui-0.1.0a1/src/swirui/rendering/geometry.py +299 -0
  211. swirui-0.1.0a1/src/swirui/rendering/gradients.py +535 -0
  212. swirui-0.1.0a1/src/swirui/rendering/lighting.py +190 -0
  213. swirui-0.1.0a1/src/swirui/rendering/materials.py +280 -0
  214. swirui-0.1.0a1/src/swirui/rendering/native_affine.py +74 -0
  215. swirui-0.1.0a1/src/swirui/rendering/noise.py +111 -0
  216. swirui-0.1.0a1/src/swirui/rendering/reflections.py +115 -0
  217. swirui-0.1.0a1/src/swirui/rendering/scene.py +420 -0
  218. swirui-0.1.0a1/src/swirui/rendering/scheduler.py +105 -0
  219. swirui-0.1.0a1/src/swirui/rendering/surface.py +44 -0
  220. swirui-0.1.0a1/src/swirui/rendering/tree.py +73 -0
  221. swirui-0.1.0a1/src/swirui/rendering/wgpu_renderer.py +740 -0
  222. swirui-0.1.0a1/src/swirui/rendering/windows_gdi.py +314 -0
  223. swirui-0.1.0a1/src/swirui/rotation_animation.py +88 -0
  224. swirui-0.1.0a1/src/swirui/shared_element_transition.py +136 -0
  225. swirui-0.1.0a1/src/swirui/transform_animation.py +506 -0
  226. swirui-0.1.0a1/src/swirui/video.py +114 -0
  227. swirui-0.1.0a1/src/swirui/widgets/__init__.py +222 -0
  228. swirui-0.1.0a1/src/swirui/widgets/advanced_charts.py +695 -0
  229. swirui-0.1.0a1/src/swirui/widgets/badges.py +238 -0
  230. swirui-0.1.0a1/src/swirui/widgets/bar_chart.py +81 -0
  231. swirui-0.1.0a1/src/swirui/widgets/base.py +353 -0
  232. swirui-0.1.0a1/src/swirui/widgets/button.py +321 -0
  233. swirui-0.1.0a1/src/swirui/widgets/camera_view.py +97 -0
  234. swirui-0.1.0a1/src/swirui/widgets/cartesian_chart.py +774 -0
  235. swirui-0.1.0a1/src/swirui/widgets/charts.py +108 -0
  236. swirui-0.1.0a1/src/swirui/widgets/color_picker.py +571 -0
  237. swirui-0.1.0a1/src/swirui/widgets/command_surfaces.py +843 -0
  238. swirui-0.1.0a1/src/swirui/widgets/context_commands.py +736 -0
  239. swirui-0.1.0a1/src/swirui/widgets/data_grid.py +765 -0
  240. swirui-0.1.0a1/src/swirui/widgets/data_grid_accessibility.py +171 -0
  241. swirui-0.1.0a1/src/swirui/widgets/data_grid_drag.py +328 -0
  242. swirui-0.1.0a1/src/swirui/widgets/data_grid_editing.py +512 -0
  243. swirui-0.1.0a1/src/swirui/widgets/data_grid_filtering.py +145 -0
  244. swirui-0.1.0a1/src/swirui/widgets/data_grid_identity.py +169 -0
  245. swirui-0.1.0a1/src/swirui/widgets/data_grid_keyboard.py +161 -0
  246. swirui-0.1.0a1/src/swirui/widgets/data_grid_routed.py +61 -0
  247. swirui-0.1.0a1/src/swirui/widgets/data_grid_selection.py +413 -0
  248. swirui-0.1.0a1/src/swirui/widgets/date_time.py +960 -0
  249. swirui-0.1.0a1/src/swirui/widgets/docking.py +604 -0
  250. swirui-0.1.0a1/src/swirui/widgets/expander.py +511 -0
  251. swirui-0.1.0a1/src/swirui/widgets/file_picker.py +643 -0
  252. swirui-0.1.0a1/src/swirui/widgets/image.py +159 -0
  253. swirui-0.1.0a1/src/swirui/widgets/input.py +776 -0
  254. swirui-0.1.0a1/src/swirui/widgets/large_dataset_chart.py +372 -0
  255. swirui-0.1.0a1/src/swirui/widgets/layout.py +426 -0
  256. swirui-0.1.0a1/src/swirui/widgets/layout_advanced.py +816 -0
  257. swirui-0.1.0a1/src/swirui/widgets/layout_panels.py +565 -0
  258. swirui-0.1.0a1/src/swirui/widgets/line_area_chart.py +190 -0
  259. swirui-0.1.0a1/src/swirui/widgets/list_tree_view.py +946 -0
  260. swirui-0.1.0a1/src/swirui/widgets/lottie.py +120 -0
  261. swirui-0.1.0a1/src/swirui/widgets/measurement.py +98 -0
  262. swirui-0.1.0a1/src/swirui/widgets/navigation.py +258 -0
  263. swirui-0.1.0a1/src/swirui/widgets/navigation_rail.py +452 -0
  264. swirui-0.1.0a1/src/swirui/widgets/overlays.py +557 -0
  265. swirui-0.1.0a1/src/swirui/widgets/particles.py +315 -0
  266. swirui-0.1.0a1/src/swirui/widgets/progress.py +268 -0
  267. swirui-0.1.0a1/src/swirui/widgets/property_grid.py +726 -0
  268. swirui-0.1.0a1/src/swirui/widgets/radial_chart.py +344 -0
  269. swirui-0.1.0a1/src/swirui/widgets/responsive.py +257 -0
  270. swirui-0.1.0a1/src/swirui/widgets/runtime.py +314 -0
  271. swirui-0.1.0a1/src/swirui/widgets/scroll_events.py +81 -0
  272. swirui-0.1.0a1/src/swirui/widgets/scroll_runtime.py +93 -0
  273. swirui-0.1.0a1/src/swirui/widgets/scroll_view_routed.py +65 -0
  274. swirui-0.1.0a1/src/swirui/widgets/scrolling.py +331 -0
  275. swirui-0.1.0a1/src/swirui/widgets/slider.py +678 -0
  276. swirui-0.1.0a1/src/swirui/widgets/specialized_charts.py +549 -0
  277. swirui-0.1.0a1/src/swirui/widgets/split_view.py +568 -0
  278. swirui-0.1.0a1/src/swirui/widgets/streaming_charts.py +285 -0
  279. swirui-0.1.0a1/src/swirui/widgets/surfaces.py +294 -0
  280. swirui-0.1.0a1/src/swirui/widgets/tabs.py +447 -0
  281. swirui-0.1.0a1/src/swirui/widgets/text.py +142 -0
  282. swirui-0.1.0a1/src/swirui/widgets/timeline.py +555 -0
  283. swirui-0.1.0a1/src/swirui/widgets/toggle.py +463 -0
  284. swirui-0.1.0a1/src/swirui/widgets/tooltip.py +250 -0
  285. swirui-0.1.0a1/src/swirui/widgets/typography.py +221 -0
  286. swirui-0.1.0a1/src/swirui/widgets/video_player.py +136 -0
  287. swirui-0.1.0a1/src/swirui/window.py +736 -0
  288. swirui-0.1.0a1/tests/test_accessibility.py +95 -0
  289. swirui-0.1.0a1/tests/test_adaptive_navigation.py +113 -0
  290. swirui-0.1.0a1/tests/test_adaptive_quality.py +219 -0
  291. swirui-0.1.0a1/tests/test_advanced_charts.py +217 -0
  292. swirui-0.1.0a1/tests/test_advanced_transform_animation.py +197 -0
  293. swirui-0.1.0a1/tests/test_affine_clipping.py +115 -0
  294. swirui-0.1.0a1/tests/test_affine_compositor_traversal.py +146 -0
  295. swirui-0.1.0a1/tests/test_affine_image_clipping.py +157 -0
  296. swirui-0.1.0a1/tests/test_affine_path_renderer.py +422 -0
  297. swirui-0.1.0a1/tests/test_affine_scene.py +247 -0
  298. swirui-0.1.0a1/tests/test_affine_text_raster_renderer.py +230 -0
  299. swirui-0.1.0a1/tests/test_animation.py +170 -0
  300. swirui-0.1.0a1/tests/test_animation_physics.py +263 -0
  301. swirui-0.1.0a1/tests/test_animation_timeline.py +136 -0
  302. swirui-0.1.0a1/tests/test_async_state.py +120 -0
  303. swirui-0.1.0a1/tests/test_backdrop_blur.py +83 -0
  304. swirui-0.1.0a1/tests/test_backdrop_renderer.py +372 -0
  305. swirui-0.1.0a1/tests/test_badges_tooltips.py +208 -0
  306. swirui-0.1.0a1/tests/test_bindings.py +80 -0
  307. swirui-0.1.0a1/tests/test_bloom.py +182 -0
  308. swirui-0.1.0a1/tests/test_cartesian_charts.py +136 -0
  309. swirui-0.1.0a1/tests/test_chart_interaction.py +245 -0
  310. swirui-0.1.0a1/tests/test_color_filters.py +85 -0
  311. swirui-0.1.0a1/tests/test_color_picker.py +105 -0
  312. swirui-0.1.0a1/tests/test_command_surfaces.py +141 -0
  313. swirui-0.1.0a1/tests/test_component.py +39 -0
  314. swirui-0.1.0a1/tests/test_component_cycle_guard.py +23 -0
  315. swirui-0.1.0a1/tests/test_config.py +45 -0
  316. swirui-0.1.0a1/tests/test_context_commands.py +158 -0
  317. swirui-0.1.0a1/tests/test_custom_shaders.py +97 -0
  318. swirui-0.1.0a1/tests/test_data_grid.py +276 -0
  319. swirui-0.1.0a1/tests/test_data_grid_accessibility.py +91 -0
  320. swirui-0.1.0a1/tests/test_data_grid_drag.py +226 -0
  321. swirui-0.1.0a1/tests/test_data_grid_editing.py +175 -0
  322. swirui-0.1.0a1/tests/test_data_grid_filtering.py +122 -0
  323. swirui-0.1.0a1/tests/test_data_grid_identity.py +130 -0
  324. swirui-0.1.0a1/tests/test_data_grid_keyboard.py +116 -0
  325. swirui-0.1.0a1/tests/test_data_grid_professional_gate.py +116 -0
  326. swirui-0.1.0a1/tests/test_data_grid_scale.py +35 -0
  327. swirui-0.1.0a1/tests/test_data_grid_scroll.py +292 -0
  328. swirui-0.1.0a1/tests/test_data_grid_selection.py +176 -0
  329. swirui-0.1.0a1/tests/test_date_time.py +149 -0
  330. swirui-0.1.0a1/tests/test_depth.py +162 -0
  331. swirui-0.1.0a1/tests/test_docking.py +154 -0
  332. swirui-0.1.0a1/tests/test_dynamic_typography.py +174 -0
  333. swirui-0.1.0a1/tests/test_effect_animation.py +94 -0
  334. swirui-0.1.0a1/tests/test_effect_cache.py +206 -0
  335. swirui-0.1.0a1/tests/test_effects.py +379 -0
  336. swirui-0.1.0a1/tests/test_expander.py +218 -0
  337. swirui-0.1.0a1/tests/test_file_picker.py +150 -0
  338. swirui-0.1.0a1/tests/test_frame_scheduler.py +51 -0
  339. swirui-0.1.0a1/tests/test_gpu_resource_cache.py +235 -0
  340. swirui-0.1.0a1/tests/test_gradients.py +145 -0
  341. swirui-0.1.0a1/tests/test_hidpi_runtime.py +227 -0
  342. swirui-0.1.0a1/tests/test_hit_test_broad_phase.py +67 -0
  343. swirui-0.1.0a1/tests/test_interaction_animation.py +143 -0
  344. swirui-0.1.0a1/tests/test_intrinsic_sizing.py +208 -0
  345. swirui-0.1.0a1/tests/test_keyboard_focus.py +346 -0
  346. swirui-0.1.0a1/tests/test_keyframes.py +167 -0
  347. swirui-0.1.0a1/tests/test_large_dataset_charts.py +131 -0
  348. swirui-0.1.0a1/tests/test_layout.py +224 -0
  349. swirui-0.1.0a1/tests/test_layout_advanced.py +174 -0
  350. swirui-0.1.0a1/tests/test_layout_panels.py +101 -0
  351. swirui-0.1.0a1/tests/test_lifecycle.py +159 -0
  352. swirui-0.1.0a1/tests/test_lighting.py +243 -0
  353. swirui-0.1.0a1/tests/test_linux_backend.py +98 -0
  354. swirui-0.1.0a1/tests/test_list_tree_view.py +173 -0
  355. swirui-0.1.0a1/tests/test_macos_backend.py +136 -0
  356. swirui-0.1.0a1/tests/test_macos_scroll.py +63 -0
  357. swirui-0.1.0a1/tests/test_magnetic_interaction.py +134 -0
  358. swirui-0.1.0a1/tests/test_materials.py +152 -0
  359. swirui-0.1.0a1/tests/test_media_audio.py +180 -0
  360. swirui-0.1.0a1/tests/test_media_camera.py +139 -0
  361. swirui-0.1.0a1/tests/test_media_image.py +102 -0
  362. swirui-0.1.0a1/tests/test_media_lottie.py +98 -0
  363. swirui-0.1.0a1/tests/test_media_microphone.py +162 -0
  364. swirui-0.1.0a1/tests/test_media_video.py +150 -0
  365. swirui-0.1.0a1/tests/test_mesh_gradients.py +142 -0
  366. swirui-0.1.0a1/tests/test_native_affine_contract.py +56 -0
  367. swirui-0.1.0a1/tests/test_navigation_rail.py +103 -0
  368. swirui-0.1.0a1/tests/test_noise.py +97 -0
  369. swirui-0.1.0a1/tests/test_observable_collections.py +57 -0
  370. swirui-0.1.0a1/tests/test_overlays.py +181 -0
  371. swirui-0.1.0a1/tests/test_page_transition.py +137 -0
  372. swirui-0.1.0a1/tests/test_particles.py +155 -0
  373. swirui-0.1.0a1/tests/test_path_renderer.py +124 -0
  374. swirui-0.1.0a1/tests/test_paths.py +120 -0
  375. swirui-0.1.0a1/tests/test_performance.py +135 -0
  376. swirui-0.1.0a1/tests/test_persistent_state.py +106 -0
  377. swirui-0.1.0a1/tests/test_platform.py +153 -0
  378. swirui-0.1.0a1/tests/test_pointer_targeting.py +344 -0
  379. swirui-0.1.0a1/tests/test_progress.py +98 -0
  380. swirui-0.1.0a1/tests/test_progress_presentation.py +73 -0
  381. swirui-0.1.0a1/tests/test_progress_svg.py +150 -0
  382. swirui-0.1.0a1/tests/test_property_grid.py +125 -0
  383. swirui-0.1.0a1/tests/test_radial_charts.py +120 -0
  384. swirui-0.1.0a1/tests/test_radial_gradients.py +153 -0
  385. swirui-0.1.0a1/tests/test_reactive_runtime.py +194 -0
  386. swirui-0.1.0a1/tests/test_reflections.py +157 -0
  387. swirui-0.1.0a1/tests/test_renderer_factory.py +54 -0
  388. swirui-0.1.0a1/tests/test_rendering.py +244 -0
  389. swirui-0.1.0a1/tests/test_responsive_layout.py +203 -0
  390. swirui-0.1.0a1/tests/test_rotate_transition.py +135 -0
  391. swirui-0.1.0a1/tests/test_routed_scroll.py +156 -0
  392. swirui-0.1.0a1/tests/test_runtime_pacing.py +95 -0
  393. swirui-0.1.0a1/tests/test_runtime_rendering.py +154 -0
  394. swirui-0.1.0a1/tests/test_scroll_view.py +179 -0
  395. swirui-0.1.0a1/tests/test_shared_element_transition.py +119 -0
  396. swirui-0.1.0a1/tests/test_sliders.py +178 -0
  397. swirui-0.1.0a1/tests/test_specialized_charts.py +159 -0
  398. swirui-0.1.0a1/tests/test_split_view.py +193 -0
  399. swirui-0.1.0a1/tests/test_state.py +33 -0
  400. swirui-0.1.0a1/tests/test_streaming_charts.py +128 -0
  401. swirui-0.1.0a1/tests/test_surfaces.py +127 -0
  402. swirui-0.1.0a1/tests/test_tabs.py +128 -0
  403. swirui-0.1.0a1/tests/test_text_inputs.py +202 -0
  404. swirui-0.1.0a1/tests/test_timeline.py +120 -0
  405. swirui-0.1.0a1/tests/test_toggles.py +204 -0
  406. swirui-0.1.0a1/tests/test_tooltip_ancestor_availability.py +54 -0
  407. swirui-0.1.0a1/tests/test_transform_animation.py +129 -0
  408. swirui-0.1.0a1/tests/test_wgpu_color_filters.py +84 -0
  409. swirui-0.1.0a1/tests/test_wgpu_custom_shaders.py +118 -0
  410. swirui-0.1.0a1/tests/test_wgpu_renderer.py +529 -0
  411. swirui-0.1.0a1/tests/test_widgets.py +257 -0
  412. swirui-0.1.0a1/tests/test_windows_02_gate.py +220 -0
  413. swirui-0.1.0a1/tests/test_windows_adaptive_navigation.py +81 -0
  414. swirui-0.1.0a1/tests/test_windows_advanced_charts.py +124 -0
  415. swirui-0.1.0a1/tests/test_windows_advanced_transform.py +142 -0
  416. swirui-0.1.0a1/tests/test_windows_affine_contract.py +34 -0
  417. swirui-0.1.0a1/tests/test_windows_affine_image_clipping.py +117 -0
  418. swirui-0.1.0a1/tests/test_windows_affine_paths.py +225 -0
  419. swirui-0.1.0a1/tests/test_windows_affine_text.py +121 -0
  420. swirui-0.1.0a1/tests/test_windows_backdrop_blur.py +161 -0
  421. swirui-0.1.0a1/tests/test_windows_backend.py +254 -0
  422. swirui-0.1.0a1/tests/test_windows_cartesian_charts.py +82 -0
  423. swirui-0.1.0a1/tests/test_windows_color_filters.py +99 -0
  424. swirui-0.1.0a1/tests/test_windows_color_picker.py +109 -0
  425. swirui-0.1.0a1/tests/test_windows_command_surfaces.py +107 -0
  426. swirui-0.1.0a1/tests/test_windows_context_commands.py +148 -0
  427. swirui-0.1.0a1/tests/test_windows_custom_shaders.py +174 -0
  428. swirui-0.1.0a1/tests/test_windows_data_grid_filtering.py +163 -0
  429. swirui-0.1.0a1/tests/test_windows_date_time.py +140 -0
  430. swirui-0.1.0a1/tests/test_windows_docking.py +127 -0
  431. swirui-0.1.0a1/tests/test_windows_effect_animation.py +185 -0
  432. swirui-0.1.0a1/tests/test_windows_effects.py +157 -0
  433. swirui-0.1.0a1/tests/test_windows_expander.py +122 -0
  434. swirui-0.1.0a1/tests/test_windows_file_picker.py +110 -0
  435. swirui-0.1.0a1/tests/test_windows_gpu_bridge.py +358 -0
  436. swirui-0.1.0a1/tests/test_windows_gpu_charts.py +114 -0
  437. swirui-0.1.0a1/tests/test_windows_gradients.py +141 -0
  438. swirui-0.1.0a1/tests/test_windows_hidpi_gpu.py +179 -0
  439. swirui-0.1.0a1/tests/test_windows_interaction_animation.py +189 -0
  440. swirui-0.1.0a1/tests/test_windows_interactive_charts.py +87 -0
  441. swirui-0.1.0a1/tests/test_windows_large_dataset_charts.py +60 -0
  442. swirui-0.1.0a1/tests/test_windows_layout.py +293 -0
  443. swirui-0.1.0a1/tests/test_windows_layout_advanced.py +122 -0
  444. swirui-0.1.0a1/tests/test_windows_list_tree_view.py +195 -0
  445. swirui-0.1.0a1/tests/test_windows_magnetic_interaction.py +195 -0
  446. swirui-0.1.0a1/tests/test_windows_media_audio.py +100 -0
  447. swirui-0.1.0a1/tests/test_windows_media_camera.py +16 -0
  448. swirui-0.1.0a1/tests/test_windows_media_image.py +36 -0
  449. swirui-0.1.0a1/tests/test_windows_media_lottie.py +66 -0
  450. swirui-0.1.0a1/tests/test_windows_media_microphone.py +16 -0
  451. swirui-0.1.0a1/tests/test_windows_media_video.py +63 -0
  452. swirui-0.1.0a1/tests/test_windows_navigation_rail.py +115 -0
  453. swirui-0.1.0a1/tests/test_windows_overlays.py +158 -0
  454. swirui-0.1.0a1/tests/test_windows_page_transition.py +109 -0
  455. swirui-0.1.0a1/tests/test_windows_paths.py +134 -0
  456. swirui-0.1.0a1/tests/test_windows_presentation.py +42 -0
  457. swirui-0.1.0a1/tests/test_windows_property_grid.py +108 -0
  458. swirui-0.1.0a1/tests/test_windows_radial_charts.py +68 -0
  459. swirui-0.1.0a1/tests/test_windows_radial_gradients.py +81 -0
  460. swirui-0.1.0a1/tests/test_windows_resource_cache.py +81 -0
  461. swirui-0.1.0a1/tests/test_windows_responsive_layout.py +180 -0
  462. swirui-0.1.0a1/tests/test_windows_rotate_transition.py +108 -0
  463. swirui-0.1.0a1/tests/test_windows_scale_animation.py +89 -0
  464. swirui-0.1.0a1/tests/test_windows_scroll_view.py +248 -0
  465. swirui-0.1.0a1/tests/test_windows_shared_element_transition.py +100 -0
  466. swirui-0.1.0a1/tests/test_windows_specialized_charts.py +104 -0
  467. swirui-0.1.0a1/tests/test_windows_split_view.py +122 -0
  468. swirui-0.1.0a1/tests/test_windows_streaming_charts.py +76 -0
  469. swirui-0.1.0a1/tests/test_windows_tabs.py +143 -0
  470. swirui-0.1.0a1/tests/test_windows_timeline.py +104 -0
  471. swirui-0.1.0a1/tests/test_windows_widgets.py +385 -0
  472. swirui-0.1.0a1/tools/progress_svg.py +484 -0
@@ -0,0 +1,62 @@
1
+ name: Advanced Charts Native Gate
2
+
3
+ on:
4
+ pull_request:
5
+ paths:
6
+ - "src/swirui/widgets/advanced_charts.py"
7
+ - "src/swirui/widgets/__init__.py"
8
+ - "src/swirui/__init__.py"
9
+ - "tests/test_advanced_charts.py"
10
+ - "tests/test_windows_advanced_charts.py"
11
+ - "examples/advanced_charts_demo.py"
12
+ - ".github/workflows/advanced-charts-native.yml"
13
+ push:
14
+ branches:
15
+ - main
16
+ paths:
17
+ - "src/swirui/widgets/advanced_charts.py"
18
+ - "src/swirui/widgets/__init__.py"
19
+ - "src/swirui/__init__.py"
20
+ - "tests/test_advanced_charts.py"
21
+ - "tests/test_windows_advanced_charts.py"
22
+ - "examples/advanced_charts_demo.py"
23
+ - ".github/workflows/advanced-charts-native.yml"
24
+
25
+ permissions:
26
+ contents: read
27
+
28
+ jobs:
29
+ windows-advanced-charts:
30
+ name: Advanced Charts / Win32 + wgpu / Python 3.14
31
+ runs-on: windows-latest
32
+ steps:
33
+ - name: Checkout
34
+ uses: actions/checkout@v4
35
+
36
+ - name: Set up Python 3.14
37
+ uses: actions/setup-python@v5
38
+ with:
39
+ python-version: "3.14"
40
+ cache: pip
41
+
42
+ - name: Set up stable Rust
43
+ run: rustup toolchain install stable --profile minimal && rustup default stable
44
+
45
+ - name: Install Python tools
46
+ run: python -m pip install --upgrade pip && python -m pip install -e ".[dev]" maturin==1.15.0
47
+
48
+ - name: Check native core on Windows
49
+ run: cargo check --manifest-path native/Cargo.toml --all-targets
50
+
51
+ - name: Build PyO3 extension
52
+ working-directory: native
53
+ run: maturin build --release --interpreter python --out ../dist-native
54
+
55
+ - name: Install PyO3 extension
56
+ shell: pwsh
57
+ run: |
58
+ $wheel = (Get-ChildItem dist-native\*.whl | Select-Object -First 1).FullName
59
+ python -m pip install $wheel
60
+
61
+ - name: Verify retained advanced charts
62
+ run: pytest tests/test_advanced_charts.py tests/test_windows_advanced_charts.py -q
@@ -0,0 +1,141 @@
1
+ name: Native Affine Contract
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ paths:
7
+ - "native/src/affine.rs"
8
+ - "native/src/lib.rs"
9
+ - "native/src/renderer.rs"
10
+ - "native/src/rectangles.wgsl"
11
+ - "native/src/shape.rs"
12
+ - "native/src/shapes.wgsl"
13
+ - "native/src/image.rs"
14
+ - "native/src/images.wgsl"
15
+ - "native/src/text.rs"
16
+ - "src/swirui/__init__.py"
17
+ - "src/swirui/rotation_animation.py"
18
+ - "src/swirui/widgets/base.py"
19
+ - "src/swirui/widgets/runtime.py"
20
+ - "src/swirui/rendering/affine.py"
21
+ - "src/swirui/rendering/affine_clipping.py"
22
+ - "src/swirui/rendering/affine_wgpu_renderer.py"
23
+ - "src/swirui/rendering/affine_clip_wgpu_renderer.py"
24
+ - "src/swirui/rendering/affine_text_wgpu_renderer.py"
25
+ - "src/swirui/rendering/native_affine.py"
26
+ - "src/swirui/rendering/scene.py"
27
+ - "src/swirui/rendering/wgpu_renderer.py"
28
+ - "src/swirui/rendering/factory.py"
29
+ - "src/swirui/rendering/__init__.py"
30
+ - "tests/test_affine_clipping.py"
31
+ - "tests/test_affine_scene.py"
32
+ - "tests/test_affine_compositor_traversal.py"
33
+ - "tests/test_affine_path_renderer.py"
34
+ - "tests/test_affine_image_clipping.py"
35
+ - "tests/test_affine_text_raster_renderer.py"
36
+ - "tests/test_native_affine_contract.py"
37
+ - "tests/test_rotate_transition.py"
38
+ - "tests/test_windows_affine_contract.py"
39
+ - "tests/test_windows_affine_paths.py"
40
+ - "tests/test_windows_affine_image_clipping.py"
41
+ - "tests/test_windows_affine_text.py"
42
+ - "tests/test_windows_rotate_transition.py"
43
+ - ".github/workflows/affine-native.yml"
44
+ pull_request:
45
+ paths:
46
+ - "native/src/affine.rs"
47
+ - "native/src/lib.rs"
48
+ - "native/src/renderer.rs"
49
+ - "native/src/rectangles.wgsl"
50
+ - "native/src/shape.rs"
51
+ - "native/src/shapes.wgsl"
52
+ - "native/src/image.rs"
53
+ - "native/src/images.wgsl"
54
+ - "native/src/text.rs"
55
+ - "src/swirui/__init__.py"
56
+ - "src/swirui/rotation_animation.py"
57
+ - "src/swirui/widgets/base.py"
58
+ - "src/swirui/widgets/runtime.py"
59
+ - "src/swirui/rendering/affine.py"
60
+ - "src/swirui/rendering/affine_clipping.py"
61
+ - "src/swirui/rendering/affine_wgpu_renderer.py"
62
+ - "src/swirui/rendering/affine_clip_wgpu_renderer.py"
63
+ - "src/swirui/rendering/affine_text_wgpu_renderer.py"
64
+ - "src/swirui/rendering/native_affine.py"
65
+ - "src/swirui/rendering/scene.py"
66
+ - "src/swirui/rendering/wgpu_renderer.py"
67
+ - "src/swirui/rendering/factory.py"
68
+ - "src/swirui/rendering/__init__.py"
69
+ - "tests/test_affine_clipping.py"
70
+ - "tests/test_affine_scene.py"
71
+ - "tests/test_affine_compositor_traversal.py"
72
+ - "tests/test_affine_path_renderer.py"
73
+ - "tests/test_affine_image_clipping.py"
74
+ - "tests/test_affine_text_raster_renderer.py"
75
+ - "tests/test_native_affine_contract.py"
76
+ - "tests/test_rotate_transition.py"
77
+ - "tests/test_windows_affine_contract.py"
78
+ - "tests/test_windows_affine_paths.py"
79
+ - "tests/test_windows_affine_image_clipping.py"
80
+ - "tests/test_windows_affine_text.py"
81
+ - "tests/test_windows_rotate_transition.py"
82
+ - ".github/workflows/affine-native.yml"
83
+
84
+ permissions:
85
+ contents: read
86
+
87
+ concurrency:
88
+ group: native-affine-${{ github.workflow }}-${{ github.ref }}
89
+ cancel-in-progress: true
90
+
91
+ jobs:
92
+ windows-affine:
93
+ name: Win32 PyO3 affine contract / Python 3.14
94
+ runs-on: windows-latest
95
+ steps:
96
+ - name: Checkout
97
+ uses: actions/checkout@v4
98
+
99
+ - name: Set up Python 3.14
100
+ uses: actions/setup-python@v5
101
+ with:
102
+ python-version: "3.14"
103
+ cache: pip
104
+
105
+ - name: Set up stable Rust
106
+ run: rustup toolchain install stable --profile minimal && rustup default stable
107
+
108
+ - name: Install Python tools
109
+ run: python -m pip install --upgrade pip && python -m pip install -e ".[dev]" maturin==1.15.0
110
+
111
+ - name: Check native core
112
+ run: cargo check --manifest-path native/Cargo.toml --all-targets
113
+
114
+ - name: Test native affine Rust contract
115
+ run: cargo test --manifest-path native/Cargo.toml --lib
116
+
117
+ - name: Build PyO3 extension
118
+ working-directory: native
119
+ run: maturin build --release --interpreter python --out ../dist-native
120
+
121
+ - name: Install PyO3 extension
122
+ shell: pwsh
123
+ run: |
124
+ $wheel = (Get-ChildItem dist-native\*.whl | Select-Object -First 1).FullName
125
+ python -m pip install $wheel
126
+
127
+ - name: Verify retained affine compositor contract
128
+ run: >-
129
+ pytest tests/test_affine_clipping.py tests/test_affine_scene.py
130
+ tests/test_affine_compositor_traversal.py tests/test_affine_path_renderer.py
131
+ tests/test_affine_image_clipping.py tests/test_affine_text_raster_renderer.py
132
+ tests/test_rotate_transition.py -q
133
+
134
+ - name: Verify Python payload packing
135
+ run: pytest tests/test_native_affine_contract.py -q
136
+
137
+ - name: Verify real Python to native affine boundary
138
+ run: >-
139
+ pytest tests/test_windows_affine_contract.py tests/test_windows_affine_paths.py
140
+ tests/test_windows_affine_image_clipping.py tests/test_windows_affine_text.py
141
+ tests/test_windows_rotate_transition.py -q
@@ -0,0 +1,68 @@
1
+ name: Cartesian Charts Native Gate
2
+
3
+ on:
4
+ pull_request:
5
+ paths:
6
+ - "src/swirui/widgets/charts.py"
7
+ - "src/swirui/widgets/cartesian_chart.py"
8
+ - "src/swirui/widgets/line_area_chart.py"
9
+ - "src/swirui/widgets/bar_chart.py"
10
+ - "src/swirui/widgets/__init__.py"
11
+ - "src/swirui/__init__.py"
12
+ - "tests/test_cartesian_charts.py"
13
+ - "tests/test_windows_cartesian_charts.py"
14
+ - "examples/cartesian_charts_demo.py"
15
+ - ".github/workflows/cartesian-charts-native.yml"
16
+ push:
17
+ branches:
18
+ - main
19
+ paths:
20
+ - "src/swirui/widgets/charts.py"
21
+ - "src/swirui/widgets/cartesian_chart.py"
22
+ - "src/swirui/widgets/line_area_chart.py"
23
+ - "src/swirui/widgets/bar_chart.py"
24
+ - "src/swirui/widgets/__init__.py"
25
+ - "src/swirui/__init__.py"
26
+ - "tests/test_cartesian_charts.py"
27
+ - "tests/test_windows_cartesian_charts.py"
28
+ - "examples/cartesian_charts_demo.py"
29
+ - ".github/workflows/cartesian-charts-native.yml"
30
+
31
+ permissions:
32
+ contents: read
33
+
34
+ jobs:
35
+ windows-cartesian-charts:
36
+ name: Cartesian Charts / Win32 + wgpu / Python 3.14
37
+ runs-on: windows-latest
38
+ steps:
39
+ - name: Checkout
40
+ uses: actions/checkout@v4
41
+
42
+ - name: Set up Python 3.14
43
+ uses: actions/setup-python@v5
44
+ with:
45
+ python-version: "3.14"
46
+ cache: pip
47
+
48
+ - name: Set up stable Rust
49
+ run: rustup toolchain install stable --profile minimal && rustup default stable
50
+
51
+ - name: Install Python tools
52
+ run: python -m pip install --upgrade pip && python -m pip install -e ".[dev]" maturin==1.15.0
53
+
54
+ - name: Check native core on Windows
55
+ run: cargo check --manifest-path native/Cargo.toml --all-targets
56
+
57
+ - name: Build PyO3 extension
58
+ working-directory: native
59
+ run: maturin build --release --interpreter python --out ../dist-native
60
+
61
+ - name: Install PyO3 extension
62
+ shell: pwsh
63
+ run: |
64
+ $wheel = (Get-ChildItem dist-native\*.whl | Select-Object -First 1).FullName
65
+ python -m pip install $wheel
66
+
67
+ - name: Verify retained cartesian charts
68
+ run: pytest tests/test_cartesian_charts.py tests/test_windows_cartesian_charts.py -q
@@ -0,0 +1,267 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+
8
+ permissions:
9
+ contents: read
10
+
11
+ concurrency:
12
+ group: ci-v4-${{ github.workflow }}-${{ github.ref }}
13
+ cancel-in-progress: true
14
+
15
+ jobs:
16
+ quality:
17
+ name: Quality / Python 3.11
18
+ runs-on: ubuntu-latest
19
+ steps:
20
+ - name: Checkout
21
+ uses: actions/checkout@v4
22
+
23
+ - name: Set up Python 3.11
24
+ uses: actions/setup-python@v5
25
+ with:
26
+ python-version: "3.11"
27
+ cache: pip
28
+
29
+ - name: Install
30
+ run: python -m pip install --upgrade pip && python -m pip install -e ".[dev]"
31
+
32
+ - name: Ruff
33
+ run: ruff check .
34
+
35
+ - name: Mypy
36
+ run: mypy src/swirui
37
+
38
+ - name: Tests
39
+ run: pytest --cov=swirui --cov-report=term-missing
40
+
41
+ tests:
42
+ name: Tests / Python ${{ matrix.python-version }}
43
+ runs-on: ubuntu-latest
44
+ strategy:
45
+ fail-fast: false
46
+ matrix:
47
+ python-version: ["3.11", "3.12", "3.13", "3.14"]
48
+
49
+ steps:
50
+ - name: Checkout
51
+ uses: actions/checkout@v4
52
+
53
+ - name: Set up Python
54
+ uses: actions/setup-python@v5
55
+ with:
56
+ python-version: ${{ matrix.python-version }}
57
+ cache: pip
58
+
59
+ - name: Install
60
+ run: python -m pip install --upgrade pip && python -m pip install -e ".[dev]"
61
+
62
+ - name: Run tests
63
+ run: pytest
64
+
65
+ linux-native:
66
+ name: Linux X11 native smoke / Python 3.14
67
+ runs-on: ubuntu-latest
68
+ steps:
69
+ - name: Checkout
70
+ uses: actions/checkout@v4
71
+
72
+ - name: Set up Python 3.14
73
+ uses: actions/setup-python@v5
74
+ with:
75
+ python-version: "3.14"
76
+ cache: pip
77
+
78
+ - name: Install X11 runtime
79
+ run: sudo apt-get update && sudo apt-get install -y xvfb libx11-6
80
+
81
+ - name: Install Python tools
82
+ run: python -m pip install --upgrade pip && python -m pip install -e ".[dev]"
83
+
84
+ - name: Create and exercise real X11 window
85
+ run: xvfb-run -a pytest tests/test_linux_backend.py -q
86
+
87
+ macos-native:
88
+ name: macOS Cocoa native smoke / Python 3.14
89
+ runs-on: macos-latest
90
+ steps:
91
+ - name: Checkout
92
+ uses: actions/checkout@v4
93
+
94
+ - name: Set up Python 3.14
95
+ uses: actions/setup-python@v5
96
+ with:
97
+ python-version: "3.14"
98
+ cache: pip
99
+
100
+ - name: Install Python tools
101
+ run: python -m pip install --upgrade pip && python -m pip install -e ".[dev]"
102
+
103
+ - name: Create and exercise real Cocoa window
104
+ run: pytest tests/test_macos_backend.py -q
105
+
106
+ performance:
107
+ name: Retained runtime performance / Python 3.11
108
+ runs-on: ubuntu-latest
109
+ steps:
110
+ - name: Checkout
111
+ uses: actions/checkout@v4
112
+
113
+ - name: Set up Python 3.11
114
+ uses: actions/setup-python@v5
115
+
116
+ - name: Install
117
+ run: python -m pip install --upgrade pip && python -m pip install -e ".[dev]"
118
+
119
+ - name: Enforce retained runtime budgets
120
+ run: python benchmarks/retained_runtime.py --report performance-report.json
121
+
122
+ - name: Upload performance report
123
+ if: always()
124
+ uses: actions/upload-artifact@v4
125
+ with:
126
+ name: retained-runtime-performance
127
+ path: performance-report.json
128
+ if-no-files-found: error
129
+ retention-days: 14
130
+
131
+ native-core:
132
+ name: Native core / Rust + wgpu + PyO3
133
+ runs-on: ubuntu-latest
134
+ steps:
135
+ - name: Checkout
136
+ uses: actions/checkout@v4
137
+
138
+ - name: Set up Python 3.11
139
+ uses: actions/setup-python@v5
140
+
141
+ - name: Set up stable Rust
142
+ run: rustup toolchain install stable --profile minimal && rustup default stable
143
+
144
+ - name: Cargo check
145
+ run: cargo check --manifest-path native/Cargo.toml --all-targets
146
+
147
+ - name: Cargo test
148
+ run: cargo test --manifest-path native/Cargo.toml --lib
149
+
150
+ windows-native:
151
+ name: Win32 + wgpu native smoke / Python 3.14
152
+ runs-on: windows-latest
153
+ steps:
154
+ - name: Checkout
155
+ uses: actions/checkout@v4
156
+
157
+ - name: Set up Python 3.14
158
+ uses: actions/setup-python@v5
159
+ with:
160
+ python-version: "3.14"
161
+ cache: pip
162
+
163
+ - name: Set up stable Rust
164
+ run: rustup toolchain install stable --profile minimal && rustup default stable
165
+
166
+ - name: Install Python tools
167
+ run: python -m pip install --upgrade pip && python -m pip install -e ".[dev]" maturin==1.15.0
168
+
169
+ - name: Check native core on Windows
170
+ run: cargo check --manifest-path native/Cargo.toml --all-targets
171
+
172
+ - name: Build PyO3 extension
173
+ working-directory: native
174
+ run: maturin build --release --interpreter python --out ../dist-native
175
+
176
+ - name: Install PyO3 extension
177
+ shell: pwsh
178
+ run: |
179
+ $wheel = (Get-ChildItem dist-native\*.whl | Select-Object -First 1).FullName
180
+ python -m pip install $wheel
181
+
182
+ - name: Create and paint real Win32 window
183
+ run: pytest tests/test_windows_backend.py -q
184
+
185
+ - name: Verify 0.2 integrated native gate
186
+ run: pytest tests/test_windows_02_gate.py -q
187
+
188
+ - name: Verify retained professional widgets
189
+ run: >-
190
+ pytest tests/test_windows_widgets.py tests/test_windows_scroll_view.py
191
+ tests/test_windows_data_grid_filtering.py tests/test_windows_list_tree_view.py
192
+ tests/test_windows_tabs.py -q
193
+
194
+ - name: Verify interaction animation on retained GPU path
195
+ run: pytest tests/test_windows_interaction_animation.py -q
196
+
197
+ - name: Verify magnetic interaction on retained GPU path
198
+ run: pytest tests/test_windows_magnetic_interaction.py -q
199
+
200
+ - name: Verify page transitions on retained GPU path
201
+ run: pytest tests/test_windows_page_transition.py -q
202
+
203
+ - name: Verify shared-element transitions on retained GPU path
204
+ run: pytest tests/test_windows_shared_element_transition.py -q
205
+
206
+ - name: Verify visual scale animation on retained GPU path
207
+ run: pytest tests/test_windows_scale_animation.py -q
208
+
209
+ - name: Verify morph flip and reveal on retained GPU path
210
+ run: pytest tests/test_windows_advanced_transform.py -q
211
+
212
+ - name: Verify blur and glow transitions on retained GPU path
213
+ run: pytest tests/test_windows_effect_animation.py -q
214
+
215
+ - name: Verify retained expander and accordion
216
+ run: pytest tests/test_windows_expander.py -q
217
+
218
+ - name: Verify retained SplitView
219
+ run: pytest tests/test_windows_split_view.py -q
220
+
221
+ - name: Verify retained modal and notification surfaces
222
+ run: pytest tests/test_windows_overlays.py -q
223
+
224
+ - name: Verify retained Row / Column layout
225
+ run: pytest tests/test_windows_layout.py -q
226
+
227
+ - name: Verify responsive breakpoint layout
228
+ run: pytest tests/test_windows_responsive_layout.py -q
229
+
230
+ - name: Verify adaptive navigation layout
231
+ run: pytest tests/test_windows_adaptive_navigation.py -q
232
+
233
+ - name: Verify advanced Dock / Flow / Overlay / Constraint layouts
234
+ run: pytest tests/test_windows_layout_advanced.py -q
235
+
236
+ - name: Draw native GPU scene
237
+ run: pytest tests/test_windows_gpu_bridge.py -q
238
+
239
+ - name: Verify GPU path rendering
240
+ run: pytest tests/test_windows_paths.py -q
241
+
242
+ - name: Verify GPU linear gradients
243
+ run: pytest tests/test_windows_gradients.py -q
244
+
245
+ - name: Verify GPU radial gradients
246
+ run: pytest tests/test_windows_radial_gradients.py -q
247
+
248
+ - name: Verify retained GPU shadows
249
+ run: pytest tests/test_windows_effects.py -q
250
+
251
+ - name: Verify retained GPU backdrop blur
252
+ run: pytest tests/test_windows_backdrop_blur.py -q
253
+
254
+ - name: Verify GPU color filters
255
+ run: pytest tests/test_windows_color_filters.py -q
256
+
257
+ - name: Verify GPU resource cache
258
+ run: pytest tests/test_windows_resource_cache.py -q
259
+
260
+ - name: Verify mixed-DPI GPU path
261
+ run: pytest tests/test_windows_hidpi_gpu.py -q
262
+
263
+ - name: Verify presentation policy
264
+ run: pytest tests/test_windows_presentation.py -q
265
+
266
+ - name: Verify native custom shader runtime
267
+ run: pytest tests/test_windows_custom_shaders.py -q
@@ -0,0 +1,64 @@
1
+ name: Color Picker Native Gate
2
+
3
+ on:
4
+ pull_request:
5
+ paths:
6
+ - "src/swirui/widgets/color_picker.py"
7
+ - "src/swirui/widgets/__init__.py"
8
+ - "src/swirui/__init__.py"
9
+ - "tests/test_color_picker.py"
10
+ - "tests/test_windows_color_picker.py"
11
+ - "examples/color_picker_demo.py"
12
+ - ".github/workflows/color-picker-native.yml"
13
+ push:
14
+ branches:
15
+ - main
16
+ paths:
17
+ - "src/swirui/widgets/color_picker.py"
18
+ - "src/swirui/widgets/__init__.py"
19
+ - "src/swirui/__init__.py"
20
+ - "tests/test_color_picker.py"
21
+ - "tests/test_windows_color_picker.py"
22
+ - "examples/color_picker_demo.py"
23
+ - ".github/workflows/color-picker-native.yml"
24
+
25
+ permissions:
26
+ contents: read
27
+
28
+ jobs:
29
+ windows-color-picker:
30
+ name: ColorPicker / Win32 + wgpu / Python 3.14
31
+ runs-on: windows-latest
32
+ steps:
33
+ - name: Checkout
34
+ uses: actions/checkout@v4
35
+
36
+ - name: Set up Python 3.14
37
+ uses: actions/setup-python@v5
38
+ with:
39
+ python-version: "3.14"
40
+ cache: pip
41
+
42
+ - name: Set up stable Rust
43
+ run: rustup toolchain install stable --profile minimal && rustup default stable
44
+
45
+ - name: Install Python tools
46
+ run: |
47
+ python -m pip install --upgrade pip
48
+ python -m pip install -e ".[dev]" maturin==1.15.0
49
+
50
+ - name: Check native core on Windows
51
+ run: cargo check --manifest-path native/Cargo.toml --all-targets
52
+
53
+ - name: Build PyO3 extension
54
+ working-directory: native
55
+ run: maturin build --release --interpreter python --out ../dist-native
56
+
57
+ - name: Install PyO3 extension
58
+ shell: pwsh
59
+ run: |
60
+ $wheel = (Get-ChildItem dist-native\*.whl | Select-Object -First 1).FullName
61
+ python -m pip install $wheel
62
+
63
+ - name: Verify retained ColorPicker
64
+ run: pytest tests/test_color_picker.py tests/test_windows_color_picker.py -q
@@ -0,0 +1,60 @@
1
+ name: Command Surfaces Native Gate
2
+
3
+ on:
4
+ pull_request:
5
+ paths:
6
+ - "src/swirui/widgets/command_surfaces.py"
7
+ - "src/swirui/widgets/__init__.py"
8
+ - "src/swirui/__init__.py"
9
+ - "tests/test_command_surfaces.py"
10
+ - "tests/test_windows_command_surfaces.py"
11
+ - ".github/workflows/command-surfaces-native.yml"
12
+ push:
13
+ branches:
14
+ - main
15
+ paths:
16
+ - "src/swirui/widgets/command_surfaces.py"
17
+ - "src/swirui/widgets/__init__.py"
18
+ - "src/swirui/__init__.py"
19
+ - "tests/test_command_surfaces.py"
20
+ - "tests/test_windows_command_surfaces.py"
21
+ - ".github/workflows/command-surfaces-native.yml"
22
+
23
+ permissions:
24
+ contents: read
25
+
26
+ jobs:
27
+ windows-command-surfaces:
28
+ name: Toolbar / Ribbon / MenuBar / Win32 + wgpu / Python 3.14
29
+ runs-on: windows-latest
30
+ steps:
31
+ - name: Checkout
32
+ uses: actions/checkout@v4
33
+
34
+ - name: Set up Python 3.14
35
+ uses: actions/setup-python@v5
36
+ with:
37
+ python-version: "3.14"
38
+ cache: pip
39
+
40
+ - name: Set up stable Rust
41
+ run: rustup toolchain install stable --profile minimal && rustup default stable
42
+
43
+ - name: Install Python tools
44
+ run: python -m pip install --upgrade pip && python -m pip install -e ".[dev]" maturin==1.15.0
45
+
46
+ - name: Check native core on Windows
47
+ run: cargo check --manifest-path native/Cargo.toml --all-targets
48
+
49
+ - name: Build PyO3 extension
50
+ working-directory: native
51
+ run: maturin build --release --interpreter python --out ../dist-native
52
+
53
+ - name: Install PyO3 extension
54
+ shell: pwsh
55
+ run: |
56
+ $wheel = (Get-ChildItem dist-native\*.whl | Select-Object -First 1).FullName
57
+ python -m pip install $wheel
58
+
59
+ - name: Verify retained command surfaces
60
+ run: pytest tests/test_command_surfaces.py tests/test_windows_command_surfaces.py -q