builder2ibek 2.0.2__tar.gz → 2.0.3__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 (304) hide show
  1. {builder2ibek-2.0.2/src/builder2ibek.egg-info → builder2ibek-2.0.3}/PKG-INFO +1 -1
  2. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/_version.py +3 -3
  3. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/dbcompare.py +29 -1
  4. {builder2ibek-2.0.2 → builder2ibek-2.0.3/src/builder2ibek.egg-info}/PKG-INFO +1 -1
  5. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/tests/samples/compare.diff +9 -0
  6. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/.claude/commands/beamline-check.md +0 -0
  7. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/.claude/commands/beamline-convert.md +0 -0
  8. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/.claude/commands/beamline-reconvert.md +0 -0
  9. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/.claude/commands/ioc-check.md +0 -0
  10. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/.claude/commands/ioc-convert.md +0 -0
  11. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/.claude/commands/ioc-inspect.md +0 -0
  12. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/.claude/commands/memo.md +0 -0
  13. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/.claude/commands/support-create.md +0 -0
  14. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/.claude/commands/support-fix.md +0 -0
  15. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/.claude/commands/support-inspect.md +0 -0
  16. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/.claude/settings.json +0 -0
  17. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/.claude/skills/beamline-gui/SKILL.md +0 -0
  18. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/.claude/skills/ibek-concepts/SKILL.md +0 -0
  19. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/.claude/skills/ibek-support-ansible/SKILL.md +0 -0
  20. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/.claude/skills/shared/builder-py-analysis.md +0 -0
  21. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/.claude/skills/shared/error-categorization.md +0 -0
  22. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/.claude/skills/shared/find-boot-script.md +0 -0
  23. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/.claude/skills/shared/find-ioc-xmls.md +0 -0
  24. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/.claude/skills/shared/find-module-path.md +0 -0
  25. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/.claude/skills/shared/module-special-cases.md +0 -0
  26. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/.claude/skills/shared/services-repo-resolution.md +0 -0
  27. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/.claude/skills/shared/support-yaml-rules.md +0 -0
  28. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/.claude/skills/shared/vxworks-to-rtems-differences.md +0 -0
  29. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/.claude/skills/skills-edit/SKILL.md +0 -0
  30. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/.copier-answers.yml +0 -0
  31. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/.devcontainer/Dockerfile +0 -0
  32. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/.devcontainer/devcontainer.json +0 -0
  33. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/.devcontainer/local_build.sh +0 -0
  34. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/.devcontainer/postCreate.sh +0 -0
  35. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/.devcontainer/postStart.sh +0 -0
  36. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/.gitattributes +0 -0
  37. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/.github/CONTRIBUTING.md +0 -0
  38. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  39. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/.github/ISSUE_TEMPLATE/issue.md +0 -0
  40. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md +0 -0
  41. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/.github/copilot-instructions.md +0 -0
  42. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/.github/pages/index.html +0 -0
  43. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/.github/pages/make_switcher.py +0 -0
  44. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/.github/workflows/_dist.yml +0 -0
  45. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/.github/workflows/_docs.yml +0 -0
  46. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/.github/workflows/_pypi.yml +0 -0
  47. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/.github/workflows/_release.yml +0 -0
  48. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/.github/workflows/_test.yml +0 -0
  49. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/.github/workflows/_tox.yml +0 -0
  50. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/.github/workflows/ci.yml +0 -0
  51. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/.github/workflows/periodic.yml +0 -0
  52. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/.gitignore +0 -0
  53. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/.gitleaks.toml +0 -0
  54. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/.gitmodules +0 -0
  55. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/.gitremotes +0 -0
  56. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/.pre-commit-config.yaml +0 -0
  57. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/.python-version +0 -0
  58. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/.vscode/extensions.json +0 -0
  59. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/.vscode/mcp.json +0 -0
  60. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/.vscode/settings.json +0 -0
  61. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/.vscode/tasks.json +0 -0
  62. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/CLAUDE.md +0 -0
  63. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/Dockerfile +0 -0
  64. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/LICENSE +0 -0
  65. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/README.md +0 -0
  66. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/bl21i-mo-ioc-01_blacklist.txt +0 -0
  67. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/docs/_api.rst +0 -0
  68. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/docs/_templates/custom-module-template.rst +0 -0
  69. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/docs/conf.py +0 -0
  70. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/docs/conftest.py +0 -0
  71. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/docs/explanations/decisions/0001-record-architecture-decisions.md +0 -0
  72. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/docs/explanations/decisions/0002-switched-to-python-copier-template.md +0 -0
  73. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/docs/explanations/decisions/0003-remove-mcp-server-for-copilot.md +0 -0
  74. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/docs/explanations/decisions/COPYME +0 -0
  75. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/docs/explanations/decisions.md +0 -0
  76. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/docs/explanations.md +0 -0
  77. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/docs/genindex.md +0 -0
  78. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/docs/how-to/after-beamline-convert.md +0 -0
  79. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/docs/how-to/autosave.md +0 -0
  80. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/docs/how-to/contribute.md +0 -0
  81. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/docs/how-to/convert-ioc-instance.md +0 -0
  82. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/docs/how-to/create-converter.md +0 -0
  83. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/docs/how-to/create-generic-ioc-repo.md +0 -0
  84. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/docs/how-to/runtime-support.md +0 -0
  85. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/docs/how-to/verify-with-devcontainer.md +0 -0
  86. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/docs/how-to.md +0 -0
  87. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/docs/images/dls-logo.svg +0 -0
  88. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/docs/index.md +0 -0
  89. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/docs/reference/dlsplc-migration.md +0 -0
  90. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/docs/reference.md +0 -0
  91. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/docs/tutorials/convert-ioc-xml.md +0 -0
  92. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/docs/tutorials/create-support-yaml-advanced.md +0 -0
  93. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/docs/tutorials/create-support-yaml.md +0 -0
  94. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/docs/tutorials/installation.md +0 -0
  95. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/docs/tutorials.md +0 -0
  96. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/justfile +0 -0
  97. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/out.yaml +0 -0
  98. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/pyproject.toml +0 -0
  99. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/renovate.json +0 -0
  100. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/setup.cfg +0 -0
  101. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/__init__.py +0 -0
  102. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/__main__.py +0 -0
  103. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/builder.py +0 -0
  104. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/convert.py +0 -0
  105. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/ACCELCryoIP.py +0 -0
  106. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/ADAndor.py +0 -0
  107. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/ADAravis.py +0 -0
  108. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/ADCore.py +0 -0
  109. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/ADIvium.py +0 -0
  110. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/ADOdin.py +0 -0
  111. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/ADOdinTristan.py +0 -0
  112. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/ADPilatus.py +0 -0
  113. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/ADZMQ.py +0 -0
  114. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/AMI186.py +0 -0
  115. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/BL11I.py +0 -0
  116. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/BL15I-BUILDER.py +0 -0
  117. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/BL19I.py +0 -0
  118. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/BL20J.py +0 -0
  119. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/BL21I.py +0 -0
  120. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/BL46P-BUILDER.py +0 -0
  121. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/BLGui.py +0 -0
  122. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/BLfeedback.py +0 -0
  123. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/CrateMonitor.py +0 -0
  124. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/CryoCoolerXV.py +0 -0
  125. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/DLS8515.py +0 -0
  126. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/DruckDPI515.py +0 -0
  127. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/ETLdetector.py +0 -0
  128. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/FINS.py +0 -0
  129. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/FastVacuum.py +0 -0
  130. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/Hy8401ip-asyn.py +0 -0
  131. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/Hy8401ip.py +0 -0
  132. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/Hy8401ipTemplates.py +0 -0
  133. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/Hy8402ip.py +0 -0
  134. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/Hy8414.py +0 -0
  135. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/IOCInfo.py +0 -0
  136. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/OXCS700.py +0 -0
  137. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/OXCS700asyn.py +0 -0
  138. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/OXCryo.py +0 -0
  139. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/QPC.py +0 -0
  140. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/README.md +0 -0
  141. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/SR-VA.py +0 -0
  142. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/SchottLLS.py +0 -0
  143. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/SycosH-Hot.py +0 -0
  144. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/TimingTemplates.py +0 -0
  145. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/Xspress3.py +0 -0
  146. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/__init__.py +0 -0
  147. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/adUtil.py +0 -0
  148. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/agilent33220A.py +0 -0
  149. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/agilent53220.py +0 -0
  150. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/alicatGasFlow.py +0 -0
  151. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/asyn.py +0 -0
  152. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/autosave.py +0 -0
  153. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/bronkhorstFlowBus.py +0 -0
  154. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/cmsIon.py +0 -0
  155. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/cognexDataMan100.py +0 -0
  156. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/currAmp.py +0 -0
  157. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/deltaTauPLCStat.py +0 -0
  158. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/deviocstats.py +0 -0
  159. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/digitelMpc.py +0 -0
  160. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/digitelSpc.py +0 -0
  161. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/directoryMonitor.py +0 -0
  162. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/dlsPLC.py +0 -0
  163. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/enzLoCuM4.py +0 -0
  164. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/epics_base.py +0 -0
  165. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/ether_ip.py +0 -0
  166. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/ethercat.py +0 -0
  167. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/eurotherm2k.py +0 -0
  168. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/eurothermModbus.py +0 -0
  169. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/femto.py +0 -0
  170. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/ffmpegServer.py +0 -0
  171. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/filters.py +0 -0
  172. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/fogaleHLS.py +0 -0
  173. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/fw102.py +0 -0
  174. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/fzoom.py +0 -0
  175. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/gasInjectionRig.py +0 -0
  176. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/gdaPlugins.py +0 -0
  177. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/gdaPlugins.yaml +0 -0
  178. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/globalHandler.py +0 -0
  179. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/harvardSyringe.py +0 -0
  180. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/hidenRGA.py +0 -0
  181. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/insertionDevice.py +0 -0
  182. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/interlock.py +0 -0
  183. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/ipac.py +0 -0
  184. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/keithley6514.py +0 -0
  185. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/lakeshore336.py +0 -0
  186. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/lakeshore340.py +0 -0
  187. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/laudaRE2xx.py +0 -0
  188. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/leybold.py +0 -0
  189. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/mca.py +0 -0
  190. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/mirror.py +0 -0
  191. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/mitsubishiRobot.py +0 -0
  192. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/mks937a.py +0 -0
  193. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/mks937b.py +0 -0
  194. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/mks9xx.py +0 -0
  195. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/motomanNX100.py +0 -0
  196. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/motor.py +0 -0
  197. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/motorSmarAct.py +0 -0
  198. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/mrfTiming.py +0 -0
  199. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/mrfioc2.py +0 -0
  200. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/mxEH.py +0 -0
  201. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/pgmVls.py +0 -0
  202. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/picotechPT104.py +0 -0
  203. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/pmac.py +0 -0
  204. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/pmacCoord.py +0 -0
  205. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/pmacUtil.py +0 -0
  206. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/positioner.py +0 -0
  207. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/procServControl.py +0 -0
  208. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/pvlogging.py +0 -0
  209. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/quadEM.py +0 -0
  210. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/rackFan.py +0 -0
  211. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/records.py +0 -0
  212. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/rga.py +0 -0
  213. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/rgamv2.py +0 -0
  214. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/scpi.py +0 -0
  215. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/slsDetector.py +0 -0
  216. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/smaractEcm.py +0 -0
  217. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/smargon.py +0 -0
  218. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/strainGauge.py +0 -0
  219. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/temperature.py +0 -0
  220. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/terminalserver.py +0 -0
  221. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/tpmac.py +0 -0
  222. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/transfocator.py +0 -0
  223. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/uniblitz.py +0 -0
  224. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/userIO.py +0 -0
  225. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/utility.py +0 -0
  226. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/vacuumSpace.py +0 -0
  227. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/vacuumValve.py +0 -0
  228. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/water.py +0 -0
  229. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/converters/zebra.py +0 -0
  230. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/db2autosave.py +0 -0
  231. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/moduleinfos.py +0 -0
  232. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/reconvert.py +0 -0
  233. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/support_defaults.py +0 -0
  234. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/types.py +0 -0
  235. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek/utils.py +0 -0
  236. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek.egg-info/SOURCES.txt +0 -0
  237. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek.egg-info/dependency_links.txt +0 -0
  238. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek.egg-info/entry_points.txt +0 -0
  239. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek.egg-info/requires.txt +0 -0
  240. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/src/builder2ibek.egg-info/top_level.txt +0 -0
  241. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/tests/__init__.py +0 -0
  242. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/tests/conftest.py +0 -0
  243. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/tests/samples/BL04I-MO-IOC-03.xml +0 -0
  244. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/tests/samples/BL04I-VA-IOC-01.xml +0 -0
  245. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/tests/samples/BL04I-VA-IOC-01_expanded.db +0 -0
  246. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/tests/samples/BL11I-CS-IOC-09.xml +0 -0
  247. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/tests/samples/BL11I-VA-IOC-01.xml +0 -0
  248. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/tests/samples/BL15I-VA-IOC-01.xml +0 -0
  249. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/tests/samples/BL16I-VA-IOC-01.xml +0 -0
  250. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/tests/samples/BL19I-VA-IOC-01.xml +0 -0
  251. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/tests/samples/BL21I-MO-IOC-01.xml +0 -0
  252. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/tests/samples/BL45P-MO-IOC-01.xml +0 -0
  253. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/tests/samples/BL99P-EA-IOC-05.xml +0 -0
  254. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/tests/samples/BL99P-EA-IOC-05.yaml +0 -0
  255. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/tests/samples/SR03C-VA-IOC-01.xml +0 -0
  256. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/tests/samples/SR03C-VA-IOC-01_expanded.db +0 -0
  257. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/tests/samples/bl04i-mo-ioc-03.ioc.subst +0 -0
  258. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/tests/samples/bl04i-mo-ioc-03.st.cmd +0 -0
  259. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/tests/samples/bl04i-mo-ioc-03.yaml +0 -0
  260. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/tests/samples/bl04i-va-ioc-01.ioc.subst +0 -0
  261. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/tests/samples/bl04i-va-ioc-01.st.cmd +0 -0
  262. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/tests/samples/bl04i-va-ioc-01.yaml +0 -0
  263. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/tests/samples/bl11i-cs-ioc-09.ioc.subst +0 -0
  264. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/tests/samples/bl11i-cs-ioc-09.st.cmd +0 -0
  265. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/tests/samples/bl11i-cs-ioc-09.yaml +0 -0
  266. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/tests/samples/bl11i-va-ioc-01.ioc.subst +0 -0
  267. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/tests/samples/bl11i-va-ioc-01.st.cmd +0 -0
  268. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/tests/samples/bl11i-va-ioc-01.yaml +0 -0
  269. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/tests/samples/bl15i-va-ioc-01.ioc.subst +0 -0
  270. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/tests/samples/bl15i-va-ioc-01.st.cmd +0 -0
  271. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/tests/samples/bl15i-va-ioc-01.yaml +0 -0
  272. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/tests/samples/bl16i-va-ioc-01.ioc.subst +0 -0
  273. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/tests/samples/bl16i-va-ioc-01.st.cmd +0 -0
  274. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/tests/samples/bl16i-va-ioc-01.yaml +0 -0
  275. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/tests/samples/bl19i-va-ioc-01.ioc.subst +0 -0
  276. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/tests/samples/bl19i-va-ioc-01.st.cmd +0 -0
  277. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/tests/samples/bl19i-va-ioc-01.yaml +0 -0
  278. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/tests/samples/bl21i-mo-ioc-01.ioc.subst +0 -0
  279. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/tests/samples/bl21i-mo-ioc-01.st.cmd +0 -0
  280. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/tests/samples/bl21i-mo-ioc-01.yaml +0 -0
  281. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/tests/samples/bl21i-mo-ioc-01_blacklist.txt +0 -0
  282. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/tests/samples/bl45p-mo-ioc-01.ioc.subst +0 -0
  283. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/tests/samples/bl45p-mo-ioc-01.st.cmd +0 -0
  284. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/tests/samples/bl45p-mo-ioc-01.yaml +0 -0
  285. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/tests/samples/bl99p-ea-ioc-05.ioc.subst +0 -0
  286. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/tests/samples/bl99p-ea-ioc-05.st.cmd +0 -0
  287. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/tests/samples/bl99p-ea-ioc-05.yaml +0 -0
  288. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/tests/samples/make_samples.sh +0 -0
  289. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/tests/samples/motor.template +0 -0
  290. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/tests/samples/motorpositioner.ioc.subst +0 -0
  291. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/tests/samples/motorpositioner.st.cmd +0 -0
  292. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/tests/samples/motorpositioner.xml +0 -0
  293. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/tests/samples/motorpositioner.yaml +0 -0
  294. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/tests/samples/sr03c-va-ioc-01.db +0 -0
  295. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/tests/samples/sr03c-va-ioc-01.ioc.subst +0 -0
  296. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/tests/samples/sr03c-va-ioc-01.st.cmd +0 -0
  297. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/tests/samples/sr03c-va-ioc-01.yaml +0 -0
  298. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/tests/test_autosave.py +0 -0
  299. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/tests/test_cli.py +0 -0
  300. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/tests/test_compare.py +0 -0
  301. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/tests/test_file_conversion.py +0 -0
  302. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/tests/test_reconvert_cli.py +0 -0
  303. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/update-schema +0 -0
  304. {builder2ibek-2.0.2 → builder2ibek-2.0.3}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: builder2ibek
3
- Version: 2.0.2
3
+ Version: 2.0.3
4
4
  Summary: Conversion tool for DLS XML builder IOC instances to ibek ioc.yaml
5
5
  Author-email: Giles Knap <giles.knap@diamond.ac.uk>
6
6
  License: Apache License
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
18
18
  commit_id: str | None
19
19
  __commit_id__: str | None
20
20
 
21
- __version__ = version = '2.0.2'
22
- __version_tuple__ = version_tuple = (2, 0, 2)
21
+ __version__ = version = '2.0.3'
22
+ __version_tuple__ = version_tuple = (2, 0, 3)
23
23
 
24
- __commit_id__ = commit_id = 'g73d451bd1'
24
+ __commit_id__ = commit_id = 'gb8f3858c1'
@@ -46,6 +46,12 @@ class EpicsDb:
46
46
  fields: dict[str, set[str]] = field(default_factory=lambda: {})
47
47
 
48
48
 
49
+ @dataclass
50
+ class EpicsField:
51
+ field_names: set[str] = field(default_factory=lambda: set())
52
+ values: dict[str, str] = field(default_factory=lambda: {})
53
+
54
+
49
55
  def normalize_float_records(s: set[str]) -> set[str]:
50
56
  normalised = set()
51
57
  for item in s:
@@ -140,8 +146,30 @@ def compare_dbs(
140
146
  old_norm = normalize_float_records(old.fields[record_str])
141
147
  new_norm = normalize_float_records(new.fields[record_str])
142
148
  if old_norm != new_norm:
149
+ old_ef = EpicsField()
150
+ new_ef = EpicsField()
151
+ for ef, norm in [(old_ef, old_norm), (new_ef, new_norm)]:
152
+ for entry in norm:
153
+ name, _, value = entry.partition(" ")
154
+ ef.field_names.add(name)
155
+ ef.values[name] = value
156
+
157
+ field_old_only = sorted(old_ef.field_names - new_ef.field_names)
158
+ field_new_only = sorted(new_ef.field_names - old_ef.field_names)
159
+ field_both = sorted(old_ef.field_names & new_ef.field_names)
160
+ value_diffs = [
161
+ f"{name} ('{old_ef.values[name]}' -> '{new_ef.values[name]}')"
162
+ for name in field_both
163
+ if old_ef.values[name] != new_ef.values[name]
164
+ ]
165
+
143
166
  result += f"\nfields for '{record_str}' are different between the two DBs"
144
- # result += f"\ndiff: {old_norm.difference(new_norm)}"
167
+ if field_old_only:
168
+ result += f"\n only in original: {', '.join(field_old_only)}"
169
+ if field_new_only:
170
+ result += f"\n only in new: {', '.join(field_new_only)}"
171
+ if value_diffs:
172
+ result += f"\n different values: {', '.join(value_diffs)}"
145
173
 
146
174
  if not output:
147
175
  print(result)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: builder2ibek
3
- Version: 2.0.2
3
+ Version: 2.0.3
4
4
  Summary: Conversion tool for DLS XML builder IOC instances to ibek ioc.yaml
5
5
  Author-email: Giles Knap <giles.knap@diamond.ac.uk>
6
6
  License: Apache License
@@ -36,11 +36,20 @@ records in original: 8136
36
36
  *******************************************************************
37
37
 
38
38
  fields for 'ai SR03A-VA-GAUGE-01:PLOG' are different between the two DBs
39
+ different values: INP ('SR03A-VA-GAUGE-01:PLOG_CALC CP' -> 'SR03A-VA-GAUGE-01:RAW:EGU CP')
39
40
  fields for 'ai SR03A-VA-GAUGE-02:PLOG' are different between the two DBs
41
+ different values: INP ('SR03A-VA-GAUGE-02:PLOG_CALC CP' -> 'SR03A-VA-GAUGE-02:RAW:EGU CP')
40
42
  fields for 'ai SR03A-VA-GAUGE-03:PLOG' are different between the two DBs
43
+ different values: INP ('SR03A-VA-GAUGE-03:PLOG_CALC CP' -> 'SR03A-VA-GAUGE-03:RAW:EGU CP')
41
44
  fields for 'ai SR03A-VA-GAUGE-04:PLOG' are different between the two DBs
45
+ different values: INP ('SR03A-VA-GAUGE-04:PLOG_CALC CP' -> 'SR03A-VA-GAUGE-04:RAW:EGU CP')
42
46
  fields for 'ai SR03A-VA-GAUGE-31:PLOG' are different between the two DBs
47
+ different values: INP ('SR03A-VA-GAUGE-31:PLOG_CALC CP' -> 'SR03A-VA-GAUGE-31:RAW:EGU CP')
43
48
  fields for 'ai SR03S-VA-GAUGE-01:PLOG' are different between the two DBs
49
+ different values: INP ('SR03S-VA-GAUGE-01:PLOG_CALC CP' -> 'SR03S-VA-GAUGE-01:RAW:EGU CP')
44
50
  fields for 'ai SR03S-VA-GAUGE-02:PLOG' are different between the two DBs
51
+ different values: INP ('SR03S-VA-GAUGE-02:PLOG_CALC CP' -> 'SR03S-VA-GAUGE-02:RAW:EGU CP')
45
52
  fields for 'fanout SR03C-VA-VFAST-01:FAN_01' are different between the two DBs
53
+ different values: LNK6 ('SR03C-VA-VFAST-01:GAUGE06_0' -> 'SR03C-VA-VFAST-01:GAUGE:06_0')
46
54
  fields for 'fanout SR03C-VA-VFAST-01:FAN_02' are different between the two DBs
55
+ different values: LNK2 ('SR03C-VA-VFAST-01:GAUGE08_0' -> 'SR03C-VA-VFAST-01:GAUGE:08_0')
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes