PyDMConverter 1.0.4__tar.gz → 1.0.5__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 (185) hide show
  1. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/.github/workflows/gh-pages.yml +6 -3
  2. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/.github/workflows/lint.yml +2 -2
  3. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/.github/workflows/pypi_release.yml +3 -3
  4. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/.github/workflows/tests.yml +4 -4
  5. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/.gitignore +4 -0
  6. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/PKG-INFO +1 -1
  7. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/PyDMConverter.egg-info/PKG-INFO +1 -1
  8. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/PyDMConverter.egg-info/SOURCES.txt +42 -7
  9. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/PyDMConverter.egg-info/scm_file_list.json +42 -7
  10. pydmconverter-1.0.5/PyDMConverter.egg-info/scm_version.json +8 -0
  11. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/edm/edm_qt.py +48 -7
  12. pydmconverter-1.0.5/pydmconverter/edm/ir_adapter.py +570 -0
  13. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/edm/parser.py +65 -41
  14. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/edm/parser_helpers.py +1 -1
  15. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/ir/builder.py +5 -4
  16. pydmconverter-1.0.5/pydmconverter/ir/data/VENDORED_SCHEMA.md +25 -0
  17. pydmconverter-1.0.5/pydmconverter/ir/data/screen-ir.schema.json +163 -0
  18. pydmconverter-1.0.5/pydmconverter/ir/data/widget-registry/arc.json +69 -0
  19. pydmconverter-1.0.5/pydmconverter/ir/data/widget-registry/ellipse.json +63 -0
  20. pydmconverter-1.0.5/pydmconverter/ir/data/widget-registry/group.json +41 -0
  21. pydmconverter-1.0.5/pydmconverter/ir/data/widget-registry/line.json +78 -0
  22. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/ir/data/widget-registry/pv-label.json +8 -3
  23. pydmconverter-1.0.5/pydmconverter/ir/data/widget-registry/pv-meter.json +56 -0
  24. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/ir/data/widget-registry/pv-radio-group.json +11 -0
  25. pydmconverter-1.0.5/pydmconverter/ir/data/widget-registry/qwidget-container.json +44 -0
  26. pydmconverter-1.0.5/pydmconverter/ir/data/widget-registry/rectangle.json +64 -0
  27. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/ir/data/widget-registry/regular-button.json +15 -2
  28. pydmconverter-1.0.5/pydmconverter/ir/data/widget-registry/shell-command-button.json +59 -0
  29. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/ir/data/widget-registry/text-label.json +8 -3
  30. pydmconverter-1.0.5/pydmconverter/ir/data/widget-registry/waveform-plot.json +62 -0
  31. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/ir/emit.py +6 -1
  32. pydmconverter-1.0.5/pydmconverter/ir/schema.py +38 -0
  33. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/ir/source.py +5 -0
  34. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/ir/transforms.py +42 -0
  35. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/react.py +41 -8
  36. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/ui/ir_adapter.py +1 -1
  37. pydmconverter-1.0.4/tests/edm/fixtures/p0_min.edl → pydmconverter-1.0.5/tests/edm/fixtures/basic_widgets.edl +1 -1
  38. pydmconverter-1.0.5/tests/edm/fixtures/colors.edl +83 -0
  39. pydmconverter-1.0.5/tests/edm/fixtures/colors.list +12 -0
  40. pydmconverter-1.0.5/tests/edm/fixtures/exit_button.edl +49 -0
  41. pydmconverter-1.0.5/tests/edm/fixtures/graphics_arc.edl +61 -0
  42. pydmconverter-1.0.5/tests/edm/fixtures/graphics_bars.edl +64 -0
  43. pydmconverter-1.0.5/tests/edm/fixtures/graphics_circle.edl +29 -0
  44. pydmconverter-1.0.5/tests/edm/fixtures/graphics_group.edl +93 -0
  45. pydmconverter-1.0.5/tests/edm/fixtures/graphics_line.edl +90 -0
  46. pydmconverter-1.0.5/tests/edm/fixtures/graphics_rect.edl +62 -0
  47. pydmconverter-1.0.5/tests/edm/fixtures/indicator.edl +34 -0
  48. pydmconverter-1.0.5/tests/edm/fixtures/integration_combined.edl +242 -0
  49. pydmconverter-1.0.5/tests/edm/fixtures/integration_combined.screen.json +285 -0
  50. pydmconverter-1.0.5/tests/edm/fixtures/meter.edl +43 -0
  51. pydmconverter-1.0.5/tests/edm/fixtures/misc_buttons.edl +83 -0
  52. pydmconverter-1.0.5/tests/edm/fixtures/mmv_multiline.edl +52 -0
  53. pydmconverter-1.0.5/tests/edm/fixtures/png.edl +27 -0
  54. pydmconverter-1.0.5/tests/edm/fixtures/radio.edl +30 -0
  55. pydmconverter-1.0.5/tests/edm/fixtures/shell_cmd.edl +38 -0
  56. pydmconverter-1.0.5/tests/edm/fixtures/textdsp.edl +60 -0
  57. pydmconverter-1.0.5/tests/edm/fixtures/unknown.edl +29 -0
  58. pydmconverter-1.0.4/tests/edm/test_p1_widgets.py → pydmconverter-1.0.5/tests/edm/test_byte_and_related.py +2 -2
  59. pydmconverter-1.0.5/tests/edm/test_colors.py +135 -0
  60. pydmconverter-1.0.5/tests/edm/test_control_widgets.py +213 -0
  61. pydmconverter-1.0.5/tests/edm/test_graphics_widgets.py +219 -0
  62. pydmconverter-1.0.5/tests/edm/test_integration_combined.py +82 -0
  63. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/tests/edm/test_ir_adapter.py +15 -12
  64. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/tests/edm/test_parser.py +81 -0
  65. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/tests/edm/test_visibility_rules.py +12 -8
  66. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/tests/ir/test_ir_builder.py +38 -0
  67. pydmconverter-1.0.5/tests/ir/test_ir_registry.py +139 -0
  68. pydmconverter-1.0.5/tests/ir/test_ir_schema.py +82 -0
  69. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/tests/ir/test_ir_transforms.py +20 -0
  70. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/tests/test_react.py +2 -2
  71. pydmconverter-1.0.4/tests/ui/fixtures/p0_min.ui → pydmconverter-1.0.5/tests/ui/fixtures/basic_widgets.ui +1 -1
  72. pydmconverter-1.0.4/tests/ui/fixtures/p1_widgets.ui → pydmconverter-1.0.5/tests/ui/fixtures/byte_and_related.ui +3 -3
  73. pydmconverter-1.0.5/tests/ui/fixtures/newly_supported.ui +88 -0
  74. pydmconverter-1.0.4/tests/ui/test_p1_widgets.py → pydmconverter-1.0.5/tests/ui/test_byte_and_related.py +4 -4
  75. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/tests/ui/test_ir_adapter.py +50 -6
  76. pydmconverter-1.0.4/PyDMConverter.egg-info/scm_version.json +0 -8
  77. pydmconverter-1.0.4/pydmconverter/edm/ir_adapter.py +0 -195
  78. pydmconverter-1.0.4/pydmconverter/ir/data/screen-ir.schema.json +0 -424
  79. pydmconverter-1.0.4/pydmconverter/ir/schema.py +0 -62
  80. pydmconverter-1.0.4/tests/ir/test_ir_registry.py +0 -74
  81. pydmconverter-1.0.4/tests/ir/test_ir_schema.py +0 -25
  82. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/.github/ISSUE_TEMPLATE/bug-report.yml +0 -0
  83. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/.github/ISSUE_TEMPLATE/feature-request.yml +0 -0
  84. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/.pre-commit-config.yaml +0 -0
  85. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/LICENSE +0 -0
  86. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/PyDMConverter.egg-info/dependency_links.txt +0 -0
  87. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/PyDMConverter.egg-info/entry_points.txt +0 -0
  88. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/PyDMConverter.egg-info/requires.txt +0 -0
  89. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/PyDMConverter.egg-info/top_level.txt +0 -0
  90. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/README.md +0 -0
  91. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/app/resources/file_minus.png +0 -0
  92. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/app/resources/file_plus.png +0 -0
  93. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/app/resources/file_x.png +0 -0
  94. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/app/resources/folder_plus.png +0 -0
  95. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/app/resources/folder_search.png +0 -0
  96. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/app/resources/play_circle_outline.png +0 -0
  97. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/app/resources/settings.png +0 -0
  98. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/app/src/model/__init__.py +0 -0
  99. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/app/src/model/app_model.py +0 -0
  100. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/app/src/model/options_model.py +0 -0
  101. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/app/src/view/__init__.py +0 -0
  102. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/app/src/view/file_select_widget.py +0 -0
  103. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/app/src/view/main_window.py +0 -0
  104. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/app/src/view/main_window.ui +0 -0
  105. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/app/src/view/options_window.py +0 -0
  106. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/app/src/view/output_select_dialog.py +0 -0
  107. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/docs/arguments.md +0 -0
  108. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/docs/images/pydmconverter.png +0 -0
  109. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/docs/index.md +0 -0
  110. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/docs/reference/custom_types.md +0 -0
  111. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/docs/reference/edm/converter.md +0 -0
  112. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/docs/reference/edm/converter_helpers.md +0 -0
  113. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/docs/reference/edm/menumux.md +0 -0
  114. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/docs/reference/edm/parser.md +0 -0
  115. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/docs/reference/edm/parser_helpers.md +0 -0
  116. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/docs/reference/index.md +0 -0
  117. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/docs/reference/pydm-converter-tool.md +0 -0
  118. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/docs/reference/widgets.md +0 -0
  119. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/docs/reference/widgets_helpers.md +0 -0
  120. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/docs/user_guide.md +0 -0
  121. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/environment.yml +0 -0
  122. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/examples/TEM_mapping.edl +0 -0
  123. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/examples/all_bsy0_main.edl +0 -0
  124. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/examples/all_bsy0_main_with_groups.edl +0 -0
  125. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/examples/prosilica.edl +0 -0
  126. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/mkdocs.yml +0 -0
  127. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/__init__.py +0 -0
  128. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/__main__.py +0 -0
  129. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/custom_types.py +0 -0
  130. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/edm/__init__.py +0 -0
  131. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/edm/converter.py +0 -0
  132. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/edm/converter_helpers.py +0 -0
  133. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/edm/menumux.py +0 -0
  134. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/exceptions.py +0 -0
  135. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/ir/__init__.py +0 -0
  136. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/ir/base.py +0 -0
  137. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/ir/data/widget-registry/.beaver-snapshot-sha +0 -0
  138. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/ir/data/widget-registry/absolute-canvas.json +0 -0
  139. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/ir/data/widget-registry/embedded-display.json +0 -0
  140. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/ir/data/widget-registry/frame.json +0 -0
  141. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/ir/data/widget-registry/group-box.json +0 -0
  142. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/ir/data/widget-registry/image-view.json +0 -0
  143. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/ir/data/widget-registry/pv-button.json +0 -0
  144. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/ir/data/widget-registry/pv-byte-led.json +0 -0
  145. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/ir/data/widget-registry/pv-checkbox.json +0 -0
  146. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/ir/data/widget-registry/pv-enum-combobox.json +0 -0
  147. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/ir/data/widget-registry/pv-led.json +0 -0
  148. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/ir/data/widget-registry/pv-progress-bar.json +0 -0
  149. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/ir/data/widget-registry/pv-slider.json +0 -0
  150. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/ir/data/widget-registry/pv-text-input.json +0 -0
  151. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/ir/data/widget-registry/related-display-button.json +0 -0
  152. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/ir/data/widget-registry/scroll-area.json +0 -0
  153. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/ir/data/widget-registry/tabs.json +0 -0
  154. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/ir/fox.py +0 -0
  155. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/ir/ids.py +0 -0
  156. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/ir/macros.py +0 -0
  157. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/ir/model.py +0 -0
  158. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/ir/registry.py +0 -0
  159. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/launch_gui.sh +0 -0
  160. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/sites/__init__.py +0 -0
  161. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/sites/slac.py +0 -0
  162. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/ui/__init__.py +0 -0
  163. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/widgets.py +0 -0
  164. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/widgets_helpers.py +0 -0
  165. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pyproject.toml +0 -0
  166. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/setup.cfg +0 -0
  167. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/tests/__init__.py +0 -0
  168. /pydmconverter-1.0.4/tests/edm/fixtures/p1_widgets.edl → /pydmconverter-1.0.5/tests/edm/fixtures/byte_and_related.edl +0 -0
  169. /pydmconverter-1.0.4/tests/edm/fixtures/p0_vis.edl → /pydmconverter-1.0.5/tests/edm/fixtures/visibility.edl +0 -0
  170. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/tests/edm/test_converter.py +0 -0
  171. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/tests/edm/test_converter_helpers.py +0 -0
  172. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/tests/edm/test_parser_helpers.py +0 -0
  173. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/tests/ir/__init__.py +0 -0
  174. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/tests/ir/conftest.py +0 -0
  175. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/tests/ir/test_ir_emit.py +0 -0
  176. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/tests/ir/test_ir_fox.py +0 -0
  177. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/tests/ir/test_ir_ids.py +0 -0
  178. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/tests/ir/test_ir_model.py +0 -0
  179. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/tests/test_headless_import.py +0 -0
  180. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/tests/test_main.py +0 -0
  181. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/tests/test_options_model.py +0 -0
  182. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/tests/test_sites.py +0 -0
  183. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/tests/test_widgets.py +0 -0
  184. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/tests/test_widgets_helpers.py +0 -0
  185. {pydmconverter-1.0.4 → pydmconverter-1.0.5}/tests/ui/__init__.py +0 -0
@@ -7,6 +7,9 @@ on:
7
7
  branches:
8
8
  - main
9
9
 
10
+ permissions:
11
+ contents: write
12
+
10
13
  jobs:
11
14
  deploy:
12
15
  if: ${{ github.repository == 'slaclab/pydm-converter-tool' }}
@@ -16,8 +19,8 @@ jobs:
16
19
  os: [ubuntu-latest]
17
20
  python-version: [3.9]
18
21
  steps:
19
- - uses: actions/checkout@v4
20
- - uses: conda-incubator/setup-miniconda@v3
22
+ - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
23
+ - uses: conda-incubator/setup-miniconda@fc2d68f6413eb2d87b895e92f8584b5b94a10167 # v3
21
24
  with:
22
25
  miniforge-version: latest
23
26
  use-mamba: true
@@ -32,7 +35,7 @@ jobs:
32
35
  mkdocs build
33
36
 
34
37
  - name: Deploy to gh-pages
35
- uses: peaceiris/actions-gh-pages@v4
38
+ uses: peaceiris/actions-gh-pages@84c30a85c19949d7eee79c4ff27748b70285e453 # v4
36
39
  with:
37
40
  github_token: ${{ secrets.GITHUB_TOKEN }}
38
41
  publish_dir: ./site/
@@ -8,11 +8,11 @@ jobs:
8
8
  lint:
9
9
  runs-on: ubuntu-latest
10
10
  steps:
11
- - uses: actions/checkout@v4
11
+ - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
12
12
  with:
13
13
  fetch-depth: 1
14
14
  - name: Install Python
15
- uses: actions/setup-python@v5
15
+ uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
16
16
  with:
17
17
  python-version: "3.12"
18
18
  - name: Install dependencies
@@ -11,11 +11,11 @@ jobs:
11
11
  permissions:
12
12
  id-token: write # IMPORTANT: this permission is mandatory for trusted publishing
13
13
  steps:
14
- - uses: actions/checkout@v4
14
+ - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
15
15
  with:
16
16
  fetch-depth: 0
17
17
  - name: Set up Python 3.12
18
- uses: actions/setup-python@v5
18
+ uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
19
19
  with:
20
20
  python-version: 3.12
21
21
  - name: Install pypa/build
@@ -25,4 +25,4 @@ jobs:
25
25
  run: |
26
26
  python -m build --sdist --outdir dist/ .
27
27
  - name: Publish package distributions to PyPI
28
- uses: pypa/gh-action-pypi-publish@release/v1
28
+ uses: pypa/gh-action-pypi-publish@cef221092ed1bacb1cc03d23a2d87d1d172e277b # release/v1
@@ -20,10 +20,10 @@ jobs:
20
20
  DISPLAY: ':99.0'
21
21
  QT_MAC_WANTS_LAYER: 1 # PyQT gui tests involving qtbot interaction on macOS will fail without this
22
22
  steps:
23
- - uses: actions/checkout@v4
23
+ - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
24
24
 
25
25
  - name: Setup Miniforge
26
- uses: conda-incubator/setup-miniconda@v3
26
+ uses: conda-incubator/setup-miniconda@fc2d68f6413eb2d87b895e92f8584b5b94a10167 # v3
27
27
  with:
28
28
  miniforge-version: latest
29
29
  activate-environment: pydm-converter-tool-dev
@@ -54,11 +54,11 @@ jobs:
54
54
  test-pypi-build:
55
55
  runs-on: ubuntu-latest
56
56
  steps:
57
- - uses: actions/checkout@v4
57
+ - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
58
58
  with:
59
59
  fetch-depth: 0
60
60
  - name: Set up Python 3.10
61
- uses: actions/setup-python@v5
61
+ uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
62
62
  with:
63
63
  python-version: '3.10'
64
64
  - name: Install pypa/build
@@ -123,3 +123,7 @@ ENV/
123
123
  # Canopy IR data files (generated schema + vendored widget registry) are tracked assets
124
124
  !pydmconverter/ir/data/*.json
125
125
  !pydmconverter/ir/data/widget-registry/*.json
126
+
127
+ # EDM->IR combined integration snapshot (committed regression fixture;
128
+ # see tests/edm/test_integration_combined.py for how to regenerate it deliberately)
129
+ !tests/edm/fixtures/integration_combined.screen.json
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PyDMConverter
3
- Version: 1.0.4
3
+ Version: 1.0.5
4
4
  Summary: converter to generate pydm .ui files from other display managers.
5
5
  Author: Devan Agrawal, Zach Domke, Ryan McClanahan, Alexander Ng, Logan Somoza, Alexandria Ikuma
6
6
  Author-email: Yekta Yazar <yazar@slac.stanford.edu>
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PyDMConverter
3
- Version: 1.0.4
3
+ Version: 1.0.5
4
4
  Summary: converter to generate pydm .ui files from other display managers.
5
5
  Author: Devan Agrawal, Zach Domke, Ryan McClanahan, Alexander Ng, Logan Somoza, Alexandria Ikuma
6
6
  Author-email: Yekta Yazar <yazar@slac.stanford.edu>
@@ -81,28 +81,38 @@ pydmconverter/ir/registry.py
81
81
  pydmconverter/ir/schema.py
82
82
  pydmconverter/ir/source.py
83
83
  pydmconverter/ir/transforms.py
84
+ pydmconverter/ir/data/VENDORED_SCHEMA.md
84
85
  pydmconverter/ir/data/screen-ir.schema.json
85
86
  pydmconverter/ir/data/widget-registry/.beaver-snapshot-sha
86
87
  pydmconverter/ir/data/widget-registry/absolute-canvas.json
88
+ pydmconverter/ir/data/widget-registry/arc.json
89
+ pydmconverter/ir/data/widget-registry/ellipse.json
87
90
  pydmconverter/ir/data/widget-registry/embedded-display.json
88
91
  pydmconverter/ir/data/widget-registry/frame.json
89
92
  pydmconverter/ir/data/widget-registry/group-box.json
93
+ pydmconverter/ir/data/widget-registry/group.json
90
94
  pydmconverter/ir/data/widget-registry/image-view.json
95
+ pydmconverter/ir/data/widget-registry/line.json
91
96
  pydmconverter/ir/data/widget-registry/pv-button.json
92
97
  pydmconverter/ir/data/widget-registry/pv-byte-led.json
93
98
  pydmconverter/ir/data/widget-registry/pv-checkbox.json
94
99
  pydmconverter/ir/data/widget-registry/pv-enum-combobox.json
95
100
  pydmconverter/ir/data/widget-registry/pv-label.json
96
101
  pydmconverter/ir/data/widget-registry/pv-led.json
102
+ pydmconverter/ir/data/widget-registry/pv-meter.json
97
103
  pydmconverter/ir/data/widget-registry/pv-progress-bar.json
98
104
  pydmconverter/ir/data/widget-registry/pv-radio-group.json
99
105
  pydmconverter/ir/data/widget-registry/pv-slider.json
100
106
  pydmconverter/ir/data/widget-registry/pv-text-input.json
107
+ pydmconverter/ir/data/widget-registry/qwidget-container.json
108
+ pydmconverter/ir/data/widget-registry/rectangle.json
101
109
  pydmconverter/ir/data/widget-registry/regular-button.json
102
110
  pydmconverter/ir/data/widget-registry/related-display-button.json
103
111
  pydmconverter/ir/data/widget-registry/scroll-area.json
112
+ pydmconverter/ir/data/widget-registry/shell-command-button.json
104
113
  pydmconverter/ir/data/widget-registry/tabs.json
105
114
  pydmconverter/ir/data/widget-registry/text-label.json
115
+ pydmconverter/ir/data/widget-registry/waveform-plot.json
106
116
  pydmconverter/sites/__init__.py
107
117
  pydmconverter/sites/slac.py
108
118
  pydmconverter/ui/__init__.py
@@ -115,16 +125,40 @@ tests/test_react.py
115
125
  tests/test_sites.py
116
126
  tests/test_widgets.py
117
127
  tests/test_widgets_helpers.py
128
+ tests/edm/test_byte_and_related.py
129
+ tests/edm/test_colors.py
130
+ tests/edm/test_control_widgets.py
118
131
  tests/edm/test_converter.py
119
132
  tests/edm/test_converter_helpers.py
133
+ tests/edm/test_graphics_widgets.py
134
+ tests/edm/test_integration_combined.py
120
135
  tests/edm/test_ir_adapter.py
121
- tests/edm/test_p1_widgets.py
122
136
  tests/edm/test_parser.py
123
137
  tests/edm/test_parser_helpers.py
124
138
  tests/edm/test_visibility_rules.py
125
- tests/edm/fixtures/p0_min.edl
126
- tests/edm/fixtures/p0_vis.edl
127
- tests/edm/fixtures/p1_widgets.edl
139
+ tests/edm/fixtures/basic_widgets.edl
140
+ tests/edm/fixtures/byte_and_related.edl
141
+ tests/edm/fixtures/colors.edl
142
+ tests/edm/fixtures/colors.list
143
+ tests/edm/fixtures/exit_button.edl
144
+ tests/edm/fixtures/graphics_arc.edl
145
+ tests/edm/fixtures/graphics_bars.edl
146
+ tests/edm/fixtures/graphics_circle.edl
147
+ tests/edm/fixtures/graphics_group.edl
148
+ tests/edm/fixtures/graphics_line.edl
149
+ tests/edm/fixtures/graphics_rect.edl
150
+ tests/edm/fixtures/indicator.edl
151
+ tests/edm/fixtures/integration_combined.edl
152
+ tests/edm/fixtures/integration_combined.screen.json
153
+ tests/edm/fixtures/meter.edl
154
+ tests/edm/fixtures/misc_buttons.edl
155
+ tests/edm/fixtures/mmv_multiline.edl
156
+ tests/edm/fixtures/png.edl
157
+ tests/edm/fixtures/radio.edl
158
+ tests/edm/fixtures/shell_cmd.edl
159
+ tests/edm/fixtures/textdsp.edl
160
+ tests/edm/fixtures/unknown.edl
161
+ tests/edm/fixtures/visibility.edl
128
162
  tests/ir/__init__.py
129
163
  tests/ir/conftest.py
130
164
  tests/ir/test_ir_builder.py
@@ -136,7 +170,8 @@ tests/ir/test_ir_registry.py
136
170
  tests/ir/test_ir_schema.py
137
171
  tests/ir/test_ir_transforms.py
138
172
  tests/ui/__init__.py
173
+ tests/ui/test_byte_and_related.py
139
174
  tests/ui/test_ir_adapter.py
140
- tests/ui/test_p1_widgets.py
141
- tests/ui/fixtures/p0_min.ui
142
- tests/ui/fixtures/p1_widgets.ui
175
+ tests/ui/fixtures/basic_widgets.ui
176
+ tests/ui/fixtures/byte_and_related.ui
177
+ tests/ui/fixtures/newly_supported.ui
@@ -41,19 +41,44 @@
41
41
  "tests/ir/test_ir_schema.py",
42
42
  "tests/ui/__init__.py",
43
43
  "tests/ui/test_ir_adapter.py",
44
- "tests/ui/test_p1_widgets.py",
45
- "tests/ui/fixtures/p1_widgets.ui",
46
- "tests/ui/fixtures/p0_min.ui",
44
+ "tests/ui/test_byte_and_related.py",
45
+ "tests/ui/fixtures/byte_and_related.ui",
46
+ "tests/ui/fixtures/basic_widgets.ui",
47
+ "tests/ui/fixtures/newly_supported.ui",
47
48
  "tests/edm/test_converter_helpers.py",
48
49
  "tests/edm/test_ir_adapter.py",
49
50
  "tests/edm/test_parser_helpers.py",
51
+ "tests/edm/test_integration_combined.py",
50
52
  "tests/edm/test_parser.py",
51
53
  "tests/edm/test_converter.py",
52
- "tests/edm/test_p1_widgets.py",
54
+ "tests/edm/test_byte_and_related.py",
55
+ "tests/edm/test_graphics_widgets.py",
56
+ "tests/edm/test_control_widgets.py",
57
+ "tests/edm/test_colors.py",
53
58
  "tests/edm/test_visibility_rules.py",
54
- "tests/edm/fixtures/p0_vis.edl",
55
- "tests/edm/fixtures/p1_widgets.edl",
56
- "tests/edm/fixtures/p0_min.edl",
59
+ "tests/edm/fixtures/graphics_arc.edl",
60
+ "tests/edm/fixtures/textdsp.edl",
61
+ "tests/edm/fixtures/graphics_rect.edl",
62
+ "tests/edm/fixtures/unknown.edl",
63
+ "tests/edm/fixtures/exit_button.edl",
64
+ "tests/edm/fixtures/basic_widgets.edl",
65
+ "tests/edm/fixtures/integration_combined.edl",
66
+ "tests/edm/fixtures/visibility.edl",
67
+ "tests/edm/fixtures/shell_cmd.edl",
68
+ "tests/edm/fixtures/colors.list",
69
+ "tests/edm/fixtures/graphics_bars.edl",
70
+ "tests/edm/fixtures/mmv_multiline.edl",
71
+ "tests/edm/fixtures/misc_buttons.edl",
72
+ "tests/edm/fixtures/colors.edl",
73
+ "tests/edm/fixtures/graphics_line.edl",
74
+ "tests/edm/fixtures/radio.edl",
75
+ "tests/edm/fixtures/indicator.edl",
76
+ "tests/edm/fixtures/byte_and_related.edl",
77
+ "tests/edm/fixtures/png.edl",
78
+ "tests/edm/fixtures/integration_combined.screen.json",
79
+ "tests/edm/fixtures/graphics_circle.edl",
80
+ "tests/edm/fixtures/meter.edl",
81
+ "tests/edm/fixtures/graphics_group.edl",
57
82
  "app/resources/file_minus.png",
58
83
  "app/resources/folder_search.png",
59
84
  "app/resources/play_circle_outline.png",
@@ -91,6 +116,9 @@
91
116
  "pydmconverter/ir/registry.py",
92
117
  "pydmconverter/ir/base.py",
93
118
  "pydmconverter/ir/data/screen-ir.schema.json",
119
+ "pydmconverter/ir/data/VENDORED_SCHEMA.md",
120
+ "pydmconverter/ir/data/widget-registry/qwidget-container.json",
121
+ "pydmconverter/ir/data/widget-registry/rectangle.json",
94
122
  "pydmconverter/ir/data/widget-registry/pv-byte-led.json",
95
123
  "pydmconverter/ir/data/widget-registry/pv-label.json",
96
124
  "pydmconverter/ir/data/widget-registry/pv-button.json",
@@ -99,16 +127,23 @@
99
127
  "pydmconverter/ir/data/widget-registry/text-label.json",
100
128
  "pydmconverter/ir/data/widget-registry/pv-slider.json",
101
129
  "pydmconverter/ir/data/widget-registry/tabs.json",
130
+ "pydmconverter/ir/data/widget-registry/ellipse.json",
102
131
  "pydmconverter/ir/data/widget-registry/pv-checkbox.json",
103
132
  "pydmconverter/ir/data/widget-registry/group-box.json",
104
133
  "pydmconverter/ir/data/widget-registry/image-view.json",
134
+ "pydmconverter/ir/data/widget-registry/group.json",
105
135
  "pydmconverter/ir/data/widget-registry/pv-enum-combobox.json",
136
+ "pydmconverter/ir/data/widget-registry/line.json",
106
137
  "pydmconverter/ir/data/widget-registry/pv-text-input.json",
107
138
  "pydmconverter/ir/data/widget-registry/.beaver-snapshot-sha",
108
139
  "pydmconverter/ir/data/widget-registry/scroll-area.json",
109
140
  "pydmconverter/ir/data/widget-registry/absolute-canvas.json",
110
141
  "pydmconverter/ir/data/widget-registry/frame.json",
142
+ "pydmconverter/ir/data/widget-registry/pv-meter.json",
143
+ "pydmconverter/ir/data/widget-registry/arc.json",
111
144
  "pydmconverter/ir/data/widget-registry/embedded-display.json",
145
+ "pydmconverter/ir/data/widget-registry/waveform-plot.json",
146
+ "pydmconverter/ir/data/widget-registry/shell-command-button.json",
112
147
  "pydmconverter/ir/data/widget-registry/related-display-button.json",
113
148
  "pydmconverter/ir/data/widget-registry/pv-radio-group.json",
114
149
  "pydmconverter/ir/data/widget-registry/pv-led.json",
@@ -0,0 +1,8 @@
1
+ {
2
+ "tag": "1.0.5",
3
+ "distance": 0,
4
+ "node": "g7cbd6b5e2dea4189905b196980ab68efcb1ec455",
5
+ "dirty": false,
6
+ "branch": "HEAD",
7
+ "node_date": "2026-07-10"
8
+ }
@@ -1,4 +1,4 @@
1
- """EDM -> Qt class and prop name maps for the IR adapter (P0 widgets).
1
+ """EDM -> Qt class and prop name maps for the IR adapter.
2
2
 
3
3
  The shared IR builder resolves widgets and props by Qt vocabulary (the keys
4
4
  Beaver's ``qtMapping``/``qtPropMap`` use). The EDM front-end therefore translates
@@ -13,8 +13,8 @@ from __future__ import annotations
13
13
 
14
14
  from typing import Any
15
15
 
16
- # EDM class (lowercased) -> Qt class the registry knows. P0 subset; everything
17
- # else falls through to an unknown-widget node (D11).
16
+ # EDM class (lowercased) -> Qt class the registry knows; everything
17
+ # else falls through to an unknown-widget node.
18
18
  EDM_TO_QT_CLASS: dict[str, str] = {
19
19
  "activextextclass": "PyDMLabel", # split to QLabel (text-label) when static, see resolve_qt_class
20
20
  "textupdateclass": "PyDMLabel",
@@ -31,13 +31,35 @@ EDM_TO_QT_CLASS: dict[str, str] = {
31
31
  "activetriumfsliderclass": "PyDMSlider",
32
32
  "activechoicebuttonclass": "PyDMEnumComboBox",
33
33
  "activepipclass": "PyDMEmbeddedDisplay",
34
- # P1
34
+ # byte indicator / related display
35
35
  "byteclass": "PyDMByteIndicator",
36
36
  "relateddisplayclass": "PyDMRelatedDisplayButton",
37
+ # graphics
38
+ "activerectangleclass": "PyDMDrawingRectangle",
39
+ "activecircleclass": "PyDMDrawingEllipse",
40
+ "activelineclass": "PyDMDrawingPolyline",
41
+ "activearcclass": "PyDMDrawingArc",
42
+ "activebarclass": "PyDMScaleIndicator",
43
+ "activeslacbarclass": "PyDMScaleIndicator",
44
+ "activevsbarclass": "PyDMScaleIndicator",
45
+ # text / buttons / indicators
46
+ "activextextdspclassnoedit": "PyDMLabel", # the parser strips the colon from activeXTextDspClass:noedit
47
+ "shellcmdclass": "QPushButton",
48
+ "activeexitbuttonclass": "QPushButton",
49
+ "activepngclass": "PyDMDrawingImage",
50
+ "activemeterclass": "PyDMAnalogIndicator",
51
+ "activeindicatorclass": "PyDMScaleIndicator",
52
+ "activeradiobuttonclass": "PyDMEnumButton",
53
+ "activefreezebuttonclass": "QPushButton", # corpus: 0/102 samples carry a controlPv (freeze/unfreeze is local-only)
54
+ "activerampbuttonclass": "PyDMPushButton",
55
+ "activeupdownbuttonclass": "PyDMPushButton",
56
+ "mmvclass": "PyDMSlider",
57
+ "multilinetextentryclass": "PyDMLineEdit",
58
+ # menuMuxClass deliberately absent: macro-muxing needs a design; stays unknown-widget.
37
59
  }
38
60
 
39
61
  # EDM attributes that name a PV channel.
40
- EDM_CHANNEL_ATTRS = ("controlPv", "indicatorPv", "readPv", "alarmPv", "pv", "filePv", "nullPv")
62
+ EDM_CHANNEL_ATTRS = ("controlPv", "indicatorPv", "readPv", "alarmPv", "pv", "filePv", "nullPv", "ctrl1Pv")
41
63
 
42
64
  # EDM attribute name -> Qt prop name (the key Beaver's qtPropMap consumes).
43
65
  EDM_TO_QT_PROP: dict[str, str] = {
@@ -49,6 +71,7 @@ EDM_TO_QT_PROP: dict[str, str] = {
49
71
  "pv": "channel",
50
72
  "filePv": "channel",
51
73
  "nullPv": "channel",
74
+ "ctrl1Pv": "channel", # mmvClass
52
75
  # text / labels (Beaver maps "text" -> text/label per widget)
53
76
  "value": "text",
54
77
  "label": "text",
@@ -57,6 +80,7 @@ EDM_TO_QT_PROP: dict[str, str] = {
57
80
  "precision": "precision",
58
81
  "showUnits": "showUnits",
59
82
  "displayFormat": "displayFormat",
83
+ "format": "displayFormat", # activeXTextDspClass(:noedit) EDM format string
60
84
  # alarm sensitivity
61
85
  "fgAlarm": "alarmSensitiveContent",
62
86
  "alarmSensitiveContent": "alarmSensitiveContent",
@@ -74,13 +98,30 @@ EDM_TO_QT_PROP: dict[str, str] = {
74
98
  "fileName": "filename",
75
99
  "symbols": "macros",
76
100
  "macro": "macros",
77
- # related display (P1): a list of target files -> "filenames" (firstOf -> file)
101
+ # related display: a list of target files -> "filenames" (firstOf -> file)
78
102
  "displayFileName": "filenames",
79
- # byte indicator (P1)
103
+ # byte indicator
80
104
  "numBits": "numBits",
81
105
  "shift": "shift",
82
106
  # alignment
83
107
  "fontAlign": "alignment",
108
+ # colors (resolved to hex by the adapter)
109
+ "fgColor": "foregroundColor",
110
+ "bgColor": "backgroundColor",
111
+ # British-spelled EDM keys emitted by some classes (multiLineTextEntryClass, mmvClass et al.)
112
+ "fgColour": "foregroundColor",
113
+ "bgColour": "backgroundColor",
114
+ # drawing
115
+ "lineColor": "penColor",
116
+ "fillColor": "brushColor",
117
+ "lineWidth": "penWidth",
118
+ "lineStyle": "penStyle",
119
+ "fill": "brushFill",
120
+ "startAngle": "startAngle",
121
+ "totalAngle": "spanAngle",
122
+ # bar/scale range
123
+ "min": "userMinimum",
124
+ "max": "userMaximum",
84
125
  }
85
126
 
86
127