builder2ibek 2.1.0__tar.gz → 2.2.0__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.
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/.devcontainer/devcontainer.json +2 -21
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/.devcontainer/postCreate.sh +0 -6
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/Dockerfile +3 -3
- {builder2ibek-2.1.0/src/builder2ibek.egg-info → builder2ibek-2.2.0}/PKG-INFO +3 -8
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/README.md +2 -7
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/_version.py +3 -3
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/convert.py +23 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0/src/builder2ibek.egg-info}/PKG-INFO +3 -8
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek.egg-info/SOURCES.txt +7 -7
- builder2ibek-2.2.0/src/builder2ibek.egg-info/scm_file_list.json +309 -0
- builder2ibek-2.2.0/src/builder2ibek.egg-info/scm_version.json +8 -0
- builder2ibek-2.2.0/tests/samples/BL03I-MO-IOC-11.xml +27 -0
- builder2ibek-2.2.0/tests/samples/cross_ref_test.ioc.subst +46 -0
- builder2ibek-2.2.0/tests/samples/cross_ref_test.st.cmd +20 -0
- builder2ibek-2.2.0/tests/samples/cross_ref_test.xml +10 -0
- builder2ibek-2.2.0/tests/samples/cross_ref_test.yaml +53 -0
- builder2ibek-2.1.0/.devcontainer/Dockerfile +0 -46
- builder2ibek-2.1.0/.devcontainer/claude-sandbox/claude-shadow +0 -376
- builder2ibek-2.1.0/.devcontainer/claude-sandbox/install.sh +0 -285
- builder2ibek-2.1.0/.devcontainer/claude-sandbox/promote.sh +0 -194
- builder2ibek-2.1.0/.devcontainer/claude-sandbox.conf +0 -38
- builder2ibek-2.1.0/justfile +0 -55
- builder2ibek-2.1.0/out.yaml +0 -42
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/.claude/commands/beamline-check.md +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/.claude/commands/beamline-convert.md +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/.claude/commands/beamline-reconvert.md +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/.claude/commands/ioc-check.md +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/.claude/commands/ioc-convert-raw.md +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/.claude/commands/ioc-convert.md +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/.claude/commands/ioc-inspect.md +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/.claude/commands/memo.md +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/.claude/commands/support-create.md +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/.claude/commands/support-fix.md +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/.claude/commands/support-inspect.md +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/.claude/hooks/sandbox-check.sh +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/.claude/settings.json +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/.claude/skills/beamline-gui/SKILL.md +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/.claude/skills/ibek-concepts/SKILL.md +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/.claude/skills/ibek-support-ansible/SKILL.md +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/.claude/skills/shared/autosave-conversion.md +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/.claude/skills/shared/builder-py-analysis.md +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/.claude/skills/shared/error-categorization.md +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/.claude/skills/shared/find-boot-script.md +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/.claude/skills/shared/find-ioc-xmls.md +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/.claude/skills/shared/find-module-path.md +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/.claude/skills/shared/module-rename-map.md +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/.claude/skills/shared/module-special-cases.md +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/.claude/skills/shared/services-repo-resolution.md +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/.claude/skills/shared/support-yaml-rules.md +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/.claude/skills/shared/vxworks-to-rtems-differences.md +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/.claude/skills/skills-edit/SKILL.md +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/.claude/statusline-command.sh +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/.copier-answers.yml +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/.devcontainer/initializeCommand.sh +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/.devcontainer/local_build.sh +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/.gitattributes +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/.github/CONTRIBUTING.md +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/.github/ISSUE_TEMPLATE/issue.md +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/.github/copilot-instructions.md +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/.github/pages/index.html +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/.github/pages/make_switcher.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/.github/workflows/_dist.yml +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/.github/workflows/_docs.yml +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/.github/workflows/_pypi.yml +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/.github/workflows/_release.yml +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/.github/workflows/_test.yml +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/.github/workflows/_tox.yml +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/.github/workflows/ci.yml +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/.github/workflows/periodic.yml +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/.gitignore +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/.gitleaks.toml +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/.gitmodules +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/.gitremotes +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/.pre-commit-config.yaml +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/.python-version +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/.vscode/extensions.json +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/.vscode/mcp.json +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/.vscode/settings.json +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/.vscode/tasks.json +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/CLAUDE.md +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/LICENSE +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/bl21i-mo-ioc-01_blacklist.txt +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/docs/_api.rst +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/docs/_templates/custom-module-template.rst +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/docs/conf.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/docs/conftest.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/docs/explanations/decisions/0001-record-architecture-decisions.md +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/docs/explanations/decisions/0002-switched-to-python-copier-template.md +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/docs/explanations/decisions/0003-remove-mcp-server-for-copilot.md +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/docs/explanations/decisions/COPYME +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/docs/explanations/decisions.md +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/docs/explanations.md +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/docs/genindex.md +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/docs/how-to/after-beamline-convert.md +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/docs/how-to/autosave.md +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/docs/how-to/contribute.md +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/docs/how-to/convert-ioc-instance.md +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/docs/how-to/create-converter.md +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/docs/how-to/create-generic-ioc-repo.md +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/docs/how-to/migrate-autosave.md +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/docs/how-to/runtime-support.md +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/docs/how-to/verify-with-devcontainer.md +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/docs/how-to.md +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/docs/images/dls-logo.svg +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/docs/index.md +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/docs/reference/dlsplc-migration.md +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/docs/reference.md +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/docs/tutorials/convert-ioc-xml.md +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/docs/tutorials/create-support-yaml-advanced.md +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/docs/tutorials/create-support-yaml.md +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/docs/tutorials/installation.md +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/docs/tutorials.md +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/pyproject.toml +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/renovate.json +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/setup.cfg +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/__init__.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/__main__.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/builder.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/ACCELCryoIP.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/ADAndor.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/ADAravis.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/ADCore.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/ADIvium.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/ADOdin.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/ADOdinTristan.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/ADPilatus.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/ADZMQ.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/AMI186.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/BL11I.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/BL15I-BUILDER.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/BL19I.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/BL20J.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/BL21I.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/BL46P-BUILDER.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/BLGui.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/BLfeedback.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/CrateMonitor.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/CryoCoolerXV.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/DLS8515.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/DruckDPI515.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/ETLdetector.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/FINS.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/FastVacuum.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/Hy8401ip-asyn.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/Hy8401ip.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/Hy8401ipTemplates.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/Hy8402ip.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/Hy8414.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/IOCInfo.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/OXCS700.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/OXCS700asyn.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/OXCryo.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/QPC.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/README.md +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/SR-VA.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/SchottLLS.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/SycosH-Hot.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/TimingTemplates.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/Xspress3.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/__init__.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/adUtil.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/agilent33220A.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/agilent53220.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/alicatGasFlow.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/asyn.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/autosave.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/bronkhorstFlowBus.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/cmsIon.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/cognexDataMan100.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/currAmp.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/deltaTauPLCStat.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/deviocstats.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/digitelMpc.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/digitelSpc.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/directoryMonitor.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/dlsPLC.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/enzLoCuM4.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/epics_base.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/ether_ip.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/ethercat.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/eurotherm2k.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/eurothermModbus.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/femto.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/ffmpegServer.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/filters.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/fogaleHLS.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/fw102.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/fzoom.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/gasInjectionRig.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/gdaPlugins.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/gdaPlugins.yaml +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/globalHandler.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/harvardSyringe.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/hidenRGA.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/insertionDevice.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/interlock.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/ipac.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/keithley6514.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/lakeshore336.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/lakeshore340.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/laudaRE2xx.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/leybold.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/mca.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/mirror.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/mitsubishiRobot.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/mks937a.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/mks937b.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/mks9xx.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/motomanNX100.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/motor.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/motorSmarAct.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/mrfTiming.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/mrfioc2.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/mxEH.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/pgmVls.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/picotechPT104.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/pmac.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/pmacCoord.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/pmacUtil.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/positioner.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/procServControl.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/pvlogging.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/quadEM.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/rackFan.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/records.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/rga.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/rgamv2.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/scpi.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/slsDetector.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/smaractEcm.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/smargon.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/strainGauge.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/temperature.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/terminalserver.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/tpmac.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/transfocator.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/uniblitz.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/userIO.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/utility.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/vacuumSpace.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/vacuumValve.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/water.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/converters/zebra.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/db2autosave.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/dbcompare.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/migrate_autosave.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/moduleinfos.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/reconvert.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/support_defaults.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/types.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek/utils.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek.egg-info/dependency_links.txt +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek.egg-info/entry_points.txt +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek.egg-info/requires.txt +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/src/builder2ibek.egg-info/top_level.txt +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/tests/__init__.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/tests/conftest.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/tests/samples/BL04I-MO-IOC-03.xml +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/tests/samples/BL04I-VA-IOC-01.xml +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/tests/samples/BL04I-VA-IOC-01_expanded.db +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/tests/samples/BL11I-CS-IOC-09.xml +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/tests/samples/BL11I-VA-IOC-01.xml +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/tests/samples/BL15I-VA-IOC-01.xml +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/tests/samples/BL16I-VA-IOC-01.xml +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/tests/samples/BL19I-VA-IOC-01.xml +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/tests/samples/BL21I-MO-IOC-01.xml +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/tests/samples/BL45P-MO-IOC-01.xml +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/tests/samples/BL99P-EA-IOC-05.xml +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/tests/samples/BL99P-EA-IOC-05.yaml +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/tests/samples/SR03C-VA-IOC-01.xml +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/tests/samples/SR03C-VA-IOC-01_expanded.db +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/tests/samples/bl04i-mo-ioc-03.ioc.subst +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/tests/samples/bl04i-mo-ioc-03.st.cmd +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/tests/samples/bl04i-mo-ioc-03.yaml +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/tests/samples/bl04i-va-ioc-01.ioc.subst +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/tests/samples/bl04i-va-ioc-01.st.cmd +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/tests/samples/bl04i-va-ioc-01.yaml +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/tests/samples/bl11i-cs-ioc-09.ioc.subst +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/tests/samples/bl11i-cs-ioc-09.st.cmd +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/tests/samples/bl11i-cs-ioc-09.yaml +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/tests/samples/bl11i-va-ioc-01.ioc.subst +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/tests/samples/bl11i-va-ioc-01.st.cmd +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/tests/samples/bl11i-va-ioc-01.yaml +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/tests/samples/bl15i-va-ioc-01.ioc.subst +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/tests/samples/bl15i-va-ioc-01.st.cmd +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/tests/samples/bl15i-va-ioc-01.yaml +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/tests/samples/bl16i-va-ioc-01.ioc.subst +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/tests/samples/bl16i-va-ioc-01.st.cmd +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/tests/samples/bl16i-va-ioc-01.yaml +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/tests/samples/bl19i-va-ioc-01.ioc.subst +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/tests/samples/bl19i-va-ioc-01.st.cmd +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/tests/samples/bl19i-va-ioc-01.yaml +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/tests/samples/bl21i-mo-ioc-01.ioc.subst +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/tests/samples/bl21i-mo-ioc-01.st.cmd +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/tests/samples/bl21i-mo-ioc-01.yaml +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/tests/samples/bl21i-mo-ioc-01_blacklist.txt +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/tests/samples/bl45p-mo-ioc-01.ioc.subst +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/tests/samples/bl45p-mo-ioc-01.st.cmd +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/tests/samples/bl45p-mo-ioc-01.yaml +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/tests/samples/bl99p-ea-ioc-05.ioc.subst +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/tests/samples/bl99p-ea-ioc-05.st.cmd +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/tests/samples/bl99p-ea-ioc-05.yaml +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/tests/samples/compare.diff +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/tests/samples/make_samples.sh +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/tests/samples/motor.template +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/tests/samples/motorpositioner.ioc.subst +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/tests/samples/motorpositioner.st.cmd +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/tests/samples/motorpositioner.xml +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/tests/samples/motorpositioner.yaml +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/tests/samples/sr03c-va-ioc-01.db +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/tests/samples/sr03c-va-ioc-01.ioc.subst +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/tests/samples/sr03c-va-ioc-01.st.cmd +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/tests/samples/sr03c-va-ioc-01.yaml +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/tests/test_autosave.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/tests/test_cli.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/tests/test_compare.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/tests/test_file_conversion.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/tests/test_migrate_autosave.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/tests/test_reconvert_cli.py +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/update-schema +0 -0
- {builder2ibek-2.1.0 → builder2ibek-2.2.0}/uv.lock +0 -0
|
@@ -45,13 +45,12 @@
|
|
|
45
45
|
]
|
|
46
46
|
}
|
|
47
47
|
},
|
|
48
|
-
// Create the config folder for the bash-config feature and uv cache
|
|
49
|
-
"initializeCommand": "mkdir -p ${localEnv:HOME}/.config/terminal-config",
|
|
50
48
|
"runArgs": [
|
|
51
49
|
// Allow the container to access the host X11 display and EPICS CA
|
|
52
50
|
"--net=host",
|
|
53
51
|
// Make sure SELinux does not disable with access to host filesystems like tmp
|
|
54
|
-
"--security-opt=label=disable"
|
|
52
|
+
"--security-opt=label=disable",
|
|
53
|
+
"--device=/dev/net/tun"
|
|
55
54
|
],
|
|
56
55
|
"mounts": [
|
|
57
56
|
// Mount in the user terminal config folder so it can be edited
|
|
@@ -66,24 +65,6 @@
|
|
|
66
65
|
"target": "/cache",
|
|
67
66
|
"type": "volume"
|
|
68
67
|
},
|
|
69
|
-
// Persist gh auth across container rebuilds with per-repo scoped PAT
|
|
70
|
-
{
|
|
71
|
-
"source": "gh-auth-${localWorkspaceFolderBasename}",
|
|
72
|
-
"target": "/root/.config/gh",
|
|
73
|
-
"type": "volume"
|
|
74
|
-
},
|
|
75
|
-
// Persist glab auth across container rebuilds (GitLab CLI, for ibek-support-dls)
|
|
76
|
-
{
|
|
77
|
-
"source": "glab-auth-${localWorkspaceFolderBasename}",
|
|
78
|
-
"target": "/root/.config/glab-cli",
|
|
79
|
-
"type": "volume"
|
|
80
|
-
},
|
|
81
|
-
// Mount Claude config from host (settings, memory, skills)
|
|
82
|
-
{
|
|
83
|
-
"source": "${localEnv:HOME}/.claude",
|
|
84
|
-
"target": "/root/.claude",
|
|
85
|
-
"type": "bind"
|
|
86
|
-
},
|
|
87
68
|
// Mount /dls_sw readonly; slave propagation ensures autofs submounts on the host
|
|
88
69
|
// are visible inside the container without needing to trigger them from within it
|
|
89
70
|
"type=bind,source=/dls_sw,target=/dls_sw,readonly,bind-propagation=slave"
|
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
#!/bin/bash
|
|
2
2
|
set -euo pipefail
|
|
3
3
|
|
|
4
|
-
# Install Claude Code CLI
|
|
5
|
-
curl -fsSL https://claude.ai/install.sh | bash
|
|
6
|
-
|
|
7
4
|
# Install Python dependencies and pre-commit hooks
|
|
8
5
|
uv venv --clear
|
|
9
6
|
uv sync
|
|
@@ -11,6 +8,3 @@ pre-commit install --install-hooks
|
|
|
11
8
|
|
|
12
9
|
# Initialise git submodules if any are declared
|
|
13
10
|
[ -f .gitmodules ] && git submodule update --init || true
|
|
14
|
-
|
|
15
|
-
# claude-sandbox: bring up the sandbox (added by just promote).
|
|
16
|
-
bash .devcontainer/claude-sandbox/install.sh
|
|
@@ -4,6 +4,6 @@ ARG PYTHON_VERSION=3.13
|
|
|
4
4
|
FROM ghcr.io/diamondlightsource/ubuntu-devcontainer:noble AS developer
|
|
5
5
|
|
|
6
6
|
# Add any system dependencies for the developer/build environment here
|
|
7
|
-
RUN apt-get update -y && apt-get install -y --no-install-recommends \
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
# RUN apt-get update -y && apt-get install -y --no-install-recommends \
|
|
8
|
+
# graphviz \
|
|
9
|
+
# && apt-get dist-clean
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: builder2ibek
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.2.0
|
|
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
|
|
@@ -233,14 +233,9 @@ PyPI | `pip install builder2ibek`
|
|
|
233
233
|
Documentation | <https://epics-containers.github.io/builder2ibek>
|
|
234
234
|
Releases | <https://github.com/epics-containers/builder2ibek/releases>
|
|
235
235
|
|
|
236
|
-
|
|
237
|
-
IOC conversions from XmlBuilder to ibek.
|
|
236
|
+
# Claude
|
|
238
237
|
|
|
239
|
-
For
|
|
240
|
-
|
|
241
|
-
```bash
|
|
242
|
-
curl -fsSL https://claude.ai/install.sh | bash
|
|
243
|
-
```
|
|
238
|
+
For Claude agentic conversions, use the [claude-sandbox guest project](https://github.com/gilesknap/claude-sandbox) as a peer workspace.
|
|
244
239
|
|
|
245
240
|
## Testing
|
|
246
241
|
|
|
@@ -15,14 +15,9 @@ PyPI | `pip install builder2ibek`
|
|
|
15
15
|
Documentation | <https://epics-containers.github.io/builder2ibek>
|
|
16
16
|
Releases | <https://github.com/epics-containers/builder2ibek/releases>
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
IOC conversions from XmlBuilder to ibek.
|
|
18
|
+
# Claude
|
|
20
19
|
|
|
21
|
-
For
|
|
22
|
-
|
|
23
|
-
```bash
|
|
24
|
-
curl -fsSL https://claude.ai/install.sh | bash
|
|
25
|
-
```
|
|
20
|
+
For Claude agentic conversions, use the [claude-sandbox guest project](https://github.com/gilesknap/claude-sandbox) as a peer workspace.
|
|
26
21
|
|
|
27
22
|
## Testing
|
|
28
23
|
|
|
@@ -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.
|
|
22
|
-
__version_tuple__ = version_tuple = (2,
|
|
21
|
+
__version__ = version = '2.2.0'
|
|
22
|
+
__version_tuple__ = version_tuple = (2, 2, 0)
|
|
23
23
|
|
|
24
|
-
__commit_id__ = commit_id = '
|
|
24
|
+
__commit_id__ = commit_id = 'g9ecee7725'
|
|
@@ -163,6 +163,20 @@ def _has_leading_zero(val: str) -> bool:
|
|
|
163
163
|
return len(val) > 1 and val[0] == "0" and val[1] != "."
|
|
164
164
|
|
|
165
165
|
|
|
166
|
+
_CROSS_REF_RE = re.compile(r"^\$\(([^)]+)\)$")
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
def _jinja_type_filter(raw_value: str | None) -> str:
|
|
170
|
+
"""Return the Jinja2 type filter for a raw XML attribute value."""
|
|
171
|
+
try:
|
|
172
|
+
f = float(raw_value) # type: ignore
|
|
173
|
+
if _has_leading_zero(raw_value): # type: ignore
|
|
174
|
+
return "string"
|
|
175
|
+
return "int" if f.is_integer() else "float"
|
|
176
|
+
except (ValueError, TypeError):
|
|
177
|
+
return "string"
|
|
178
|
+
|
|
179
|
+
|
|
166
180
|
def make_entity(element: Element) -> Entity:
|
|
167
181
|
"""
|
|
168
182
|
default Entity creation is a direct mapping
|
|
@@ -174,6 +188,15 @@ def make_entity(element: Element) -> Entity:
|
|
|
174
188
|
entity.type = f"{element.module}.{element.name}"
|
|
175
189
|
|
|
176
190
|
for attribute_name, attribute_val in element.attributes.items():
|
|
191
|
+
# detect cross-references like $(MRES) and convert to Jinja2 templates
|
|
192
|
+
m = _CROSS_REF_RE.match(attribute_val)
|
|
193
|
+
if m:
|
|
194
|
+
ref_name = m.group(1)
|
|
195
|
+
ref_val = element.attributes.get(ref_name)
|
|
196
|
+
type_filter = _jinja_type_filter(ref_val)
|
|
197
|
+
entity[attribute_name] = f"{{{{ {ref_name} | {type_filter} }}}}"
|
|
198
|
+
continue
|
|
199
|
+
|
|
177
200
|
# convert to numeric type if appropriate, otherwise Serialize will
|
|
178
201
|
# put quotes around numbers in the YAML
|
|
179
202
|
try:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: builder2ibek
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.2.0
|
|
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
|
|
@@ -233,14 +233,9 @@ PyPI | `pip install builder2ibek`
|
|
|
233
233
|
Documentation | <https://epics-containers.github.io/builder2ibek>
|
|
234
234
|
Releases | <https://github.com/epics-containers/builder2ibek/releases>
|
|
235
235
|
|
|
236
|
-
|
|
237
|
-
IOC conversions from XmlBuilder to ibek.
|
|
236
|
+
# Claude
|
|
238
237
|
|
|
239
|
-
For
|
|
240
|
-
|
|
241
|
-
```bash
|
|
242
|
-
curl -fsSL https://claude.ai/install.sh | bash
|
|
243
|
-
```
|
|
238
|
+
For Claude agentic conversions, use the [claude-sandbox guest project](https://github.com/gilesknap/claude-sandbox) as a peer workspace.
|
|
244
239
|
|
|
245
240
|
## Testing
|
|
246
241
|
|
|
@@ -11,8 +11,6 @@ Dockerfile
|
|
|
11
11
|
LICENSE
|
|
12
12
|
README.md
|
|
13
13
|
bl21i-mo-ioc-01_blacklist.txt
|
|
14
|
-
justfile
|
|
15
|
-
out.yaml
|
|
16
14
|
pyproject.toml
|
|
17
15
|
renovate.json
|
|
18
16
|
update-schema
|
|
@@ -46,15 +44,10 @@ uv.lock
|
|
|
46
44
|
.claude/skills/shared/support-yaml-rules.md
|
|
47
45
|
.claude/skills/shared/vxworks-to-rtems-differences.md
|
|
48
46
|
.claude/skills/skills-edit/SKILL.md
|
|
49
|
-
.devcontainer/Dockerfile
|
|
50
|
-
.devcontainer/claude-sandbox.conf
|
|
51
47
|
.devcontainer/devcontainer.json
|
|
52
48
|
.devcontainer/initializeCommand.sh
|
|
53
49
|
.devcontainer/local_build.sh
|
|
54
50
|
.devcontainer/postCreate.sh
|
|
55
|
-
.devcontainer/claude-sandbox/claude-shadow
|
|
56
|
-
.devcontainer/claude-sandbox/install.sh
|
|
57
|
-
.devcontainer/claude-sandbox/promote.sh
|
|
58
51
|
.github/CONTRIBUTING.md
|
|
59
52
|
.github/copilot-instructions.md
|
|
60
53
|
.github/ISSUE_TEMPLATE/bug_report.md
|
|
@@ -122,6 +115,8 @@ src/builder2ibek.egg-info/SOURCES.txt
|
|
|
122
115
|
src/builder2ibek.egg-info/dependency_links.txt
|
|
123
116
|
src/builder2ibek.egg-info/entry_points.txt
|
|
124
117
|
src/builder2ibek.egg-info/requires.txt
|
|
118
|
+
src/builder2ibek.egg-info/scm_file_list.json
|
|
119
|
+
src/builder2ibek.egg-info/scm_version.json
|
|
125
120
|
src/builder2ibek.egg-info/top_level.txt
|
|
126
121
|
src/builder2ibek/converters/ACCELCryoIP.py
|
|
127
122
|
src/builder2ibek/converters/ADAndor.py
|
|
@@ -256,6 +251,7 @@ tests/test_compare.py
|
|
|
256
251
|
tests/test_file_conversion.py
|
|
257
252
|
tests/test_migrate_autosave.py
|
|
258
253
|
tests/test_reconvert_cli.py
|
|
254
|
+
tests/samples/BL03I-MO-IOC-11.xml
|
|
259
255
|
tests/samples/BL04I-MO-IOC-03.xml
|
|
260
256
|
tests/samples/BL04I-VA-IOC-01.xml
|
|
261
257
|
tests/samples/BL04I-VA-IOC-01_expanded.db
|
|
@@ -302,6 +298,10 @@ tests/samples/bl99p-ea-ioc-05.ioc.subst
|
|
|
302
298
|
tests/samples/bl99p-ea-ioc-05.st.cmd
|
|
303
299
|
tests/samples/bl99p-ea-ioc-05.yaml
|
|
304
300
|
tests/samples/compare.diff
|
|
301
|
+
tests/samples/cross_ref_test.ioc.subst
|
|
302
|
+
tests/samples/cross_ref_test.st.cmd
|
|
303
|
+
tests/samples/cross_ref_test.xml
|
|
304
|
+
tests/samples/cross_ref_test.yaml
|
|
305
305
|
tests/samples/make_samples.sh
|
|
306
306
|
tests/samples/motor.template
|
|
307
307
|
tests/samples/motorpositioner.ioc.subst
|
|
@@ -0,0 +1,309 @@
|
|
|
1
|
+
{
|
|
2
|
+
"files": [
|
|
3
|
+
".pre-commit-config.yaml",
|
|
4
|
+
".gitremotes",
|
|
5
|
+
"README.md",
|
|
6
|
+
"uv.lock",
|
|
7
|
+
".gitmodules",
|
|
8
|
+
"update-schema",
|
|
9
|
+
"Dockerfile",
|
|
10
|
+
".python-version",
|
|
11
|
+
"LICENSE",
|
|
12
|
+
"pyproject.toml",
|
|
13
|
+
"renovate.json",
|
|
14
|
+
"bl21i-mo-ioc-01_blacklist.txt",
|
|
15
|
+
".gitattributes",
|
|
16
|
+
"CLAUDE.md",
|
|
17
|
+
".gitleaks.toml",
|
|
18
|
+
".gitignore",
|
|
19
|
+
".copier-answers.yml",
|
|
20
|
+
".devcontainer/postCreate.sh",
|
|
21
|
+
".devcontainer/initializeCommand.sh",
|
|
22
|
+
".devcontainer/local_build.sh",
|
|
23
|
+
".devcontainer/devcontainer.json",
|
|
24
|
+
".vscode/tasks.json",
|
|
25
|
+
".vscode/settings.json",
|
|
26
|
+
".vscode/mcp.json",
|
|
27
|
+
".vscode/extensions.json",
|
|
28
|
+
"docs/explanations.md",
|
|
29
|
+
"docs/how-to.md",
|
|
30
|
+
"docs/tutorials.md",
|
|
31
|
+
"docs/_api.rst",
|
|
32
|
+
"docs/genindex.md",
|
|
33
|
+
"docs/conftest.py",
|
|
34
|
+
"docs/conf.py",
|
|
35
|
+
"docs/reference.md",
|
|
36
|
+
"docs/index.md",
|
|
37
|
+
"docs/images/dls-logo.svg",
|
|
38
|
+
"docs/_templates/custom-module-template.rst",
|
|
39
|
+
"docs/how-to/verify-with-devcontainer.md",
|
|
40
|
+
"docs/how-to/after-beamline-convert.md",
|
|
41
|
+
"docs/how-to/contribute.md",
|
|
42
|
+
"docs/how-to/create-generic-ioc-repo.md",
|
|
43
|
+
"docs/how-to/create-converter.md",
|
|
44
|
+
"docs/how-to/convert-ioc-instance.md",
|
|
45
|
+
"docs/how-to/runtime-support.md",
|
|
46
|
+
"docs/how-to/migrate-autosave.md",
|
|
47
|
+
"docs/how-to/autosave.md",
|
|
48
|
+
"docs/explanations/decisions.md",
|
|
49
|
+
"docs/explanations/decisions/COPYME",
|
|
50
|
+
"docs/explanations/decisions/0002-switched-to-python-copier-template.md",
|
|
51
|
+
"docs/explanations/decisions/0003-remove-mcp-server-for-copilot.md",
|
|
52
|
+
"docs/explanations/decisions/0001-record-architecture-decisions.md",
|
|
53
|
+
"docs/reference/dlsplc-migration.md",
|
|
54
|
+
"docs/tutorials/installation.md",
|
|
55
|
+
"docs/tutorials/create-support-yaml-advanced.md",
|
|
56
|
+
"docs/tutorials/convert-ioc-xml.md",
|
|
57
|
+
"docs/tutorials/create-support-yaml.md",
|
|
58
|
+
"src/builder2ibek/__init__.py",
|
|
59
|
+
"src/builder2ibek/reconvert.py",
|
|
60
|
+
"src/builder2ibek/utils.py",
|
|
61
|
+
"src/builder2ibek/db2autosave.py",
|
|
62
|
+
"src/builder2ibek/builder.py",
|
|
63
|
+
"src/builder2ibek/migrate_autosave.py",
|
|
64
|
+
"src/builder2ibek/moduleinfos.py",
|
|
65
|
+
"src/builder2ibek/dbcompare.py",
|
|
66
|
+
"src/builder2ibek/convert.py",
|
|
67
|
+
"src/builder2ibek/support_defaults.py",
|
|
68
|
+
"src/builder2ibek/__main__.py",
|
|
69
|
+
"src/builder2ibek/types.py",
|
|
70
|
+
"src/builder2ibek/converters/lakeshore340.py",
|
|
71
|
+
"src/builder2ibek/converters/water.py",
|
|
72
|
+
"src/builder2ibek/converters/quadEM.py",
|
|
73
|
+
"src/builder2ibek/converters/temperature.py",
|
|
74
|
+
"src/builder2ibek/converters/agilent33220A.py",
|
|
75
|
+
"src/builder2ibek/converters/deltaTauPLCStat.py",
|
|
76
|
+
"src/builder2ibek/converters/cognexDataMan100.py",
|
|
77
|
+
"src/builder2ibek/converters/OXCS700.py",
|
|
78
|
+
"src/builder2ibek/converters/asyn.py",
|
|
79
|
+
"src/builder2ibek/converters/FastVacuum.py",
|
|
80
|
+
"src/builder2ibek/converters/mrfTiming.py",
|
|
81
|
+
"src/builder2ibek/converters/ADCore.py",
|
|
82
|
+
"src/builder2ibek/converters/README.md",
|
|
83
|
+
"src/builder2ibek/converters/uniblitz.py",
|
|
84
|
+
"src/builder2ibek/converters/__init__.py",
|
|
85
|
+
"src/builder2ibek/converters/motorSmarAct.py",
|
|
86
|
+
"src/builder2ibek/converters/DLS8515.py",
|
|
87
|
+
"src/builder2ibek/converters/ADAravis.py",
|
|
88
|
+
"src/builder2ibek/converters/Xspress3.py",
|
|
89
|
+
"src/builder2ibek/converters/BL15I-BUILDER.py",
|
|
90
|
+
"src/builder2ibek/converters/IOCInfo.py",
|
|
91
|
+
"src/builder2ibek/converters/BL46P-BUILDER.py",
|
|
92
|
+
"src/builder2ibek/converters/procServControl.py",
|
|
93
|
+
"src/builder2ibek/converters/ADAndor.py",
|
|
94
|
+
"src/builder2ibek/converters/lakeshore336.py",
|
|
95
|
+
"src/builder2ibek/converters/smaractEcm.py",
|
|
96
|
+
"src/builder2ibek/converters/strainGauge.py",
|
|
97
|
+
"src/builder2ibek/converters/leybold.py",
|
|
98
|
+
"src/builder2ibek/converters/OXCryo.py",
|
|
99
|
+
"src/builder2ibek/converters/SycosH-Hot.py",
|
|
100
|
+
"src/builder2ibek/converters/femto.py",
|
|
101
|
+
"src/builder2ibek/converters/ethercat.py",
|
|
102
|
+
"src/builder2ibek/converters/mks937a.py",
|
|
103
|
+
"src/builder2ibek/converters/fogaleHLS.py",
|
|
104
|
+
"src/builder2ibek/converters/alicatGasFlow.py",
|
|
105
|
+
"src/builder2ibek/converters/Hy8414.py",
|
|
106
|
+
"src/builder2ibek/converters/transfocator.py",
|
|
107
|
+
"src/builder2ibek/converters/positioner.py",
|
|
108
|
+
"src/builder2ibek/converters/pvlogging.py",
|
|
109
|
+
"src/builder2ibek/converters/mxEH.py",
|
|
110
|
+
"src/builder2ibek/converters/smargon.py",
|
|
111
|
+
"src/builder2ibek/converters/filters.py",
|
|
112
|
+
"src/builder2ibek/converters/vacuumValve.py",
|
|
113
|
+
"src/builder2ibek/converters/directoryMonitor.py",
|
|
114
|
+
"src/builder2ibek/converters/utility.py",
|
|
115
|
+
"src/builder2ibek/converters/ADZMQ.py",
|
|
116
|
+
"src/builder2ibek/converters/insertionDevice.py",
|
|
117
|
+
"src/builder2ibek/converters/mks937b.py",
|
|
118
|
+
"src/builder2ibek/converters/ADOdinTristan.py",
|
|
119
|
+
"src/builder2ibek/converters/digitelMpc.py",
|
|
120
|
+
"src/builder2ibek/converters/ether_ip.py",
|
|
121
|
+
"src/builder2ibek/converters/gdaPlugins.yaml",
|
|
122
|
+
"src/builder2ibek/converters/bronkhorstFlowBus.py",
|
|
123
|
+
"src/builder2ibek/converters/keithley6514.py",
|
|
124
|
+
"src/builder2ibek/converters/enzLoCuM4.py",
|
|
125
|
+
"src/builder2ibek/converters/slsDetector.py",
|
|
126
|
+
"src/builder2ibek/converters/ADPilatus.py",
|
|
127
|
+
"src/builder2ibek/converters/currAmp.py",
|
|
128
|
+
"src/builder2ibek/converters/ACCELCryoIP.py",
|
|
129
|
+
"src/builder2ibek/converters/BLfeedback.py",
|
|
130
|
+
"src/builder2ibek/converters/motomanNX100.py",
|
|
131
|
+
"src/builder2ibek/converters/pgmVls.py",
|
|
132
|
+
"src/builder2ibek/converters/BLGui.py",
|
|
133
|
+
"src/builder2ibek/converters/cmsIon.py",
|
|
134
|
+
"src/builder2ibek/converters/adUtil.py",
|
|
135
|
+
"src/builder2ibek/converters/mirror.py",
|
|
136
|
+
"src/builder2ibek/converters/Hy8401ip-asyn.py",
|
|
137
|
+
"src/builder2ibek/converters/agilent53220.py",
|
|
138
|
+
"src/builder2ibek/converters/harvardSyringe.py",
|
|
139
|
+
"src/builder2ibek/converters/fw102.py",
|
|
140
|
+
"src/builder2ibek/converters/pmacCoord.py",
|
|
141
|
+
"src/builder2ibek/converters/pmacUtil.py",
|
|
142
|
+
"src/builder2ibek/converters/FINS.py",
|
|
143
|
+
"src/builder2ibek/converters/globalHandler.py",
|
|
144
|
+
"src/builder2ibek/converters/digitelSpc.py",
|
|
145
|
+
"src/builder2ibek/converters/hidenRGA.py",
|
|
146
|
+
"src/builder2ibek/converters/OXCS700asyn.py",
|
|
147
|
+
"src/builder2ibek/converters/gasInjectionRig.py",
|
|
148
|
+
"src/builder2ibek/converters/TimingTemplates.py",
|
|
149
|
+
"src/builder2ibek/converters/Hy8401ipTemplates.py",
|
|
150
|
+
"src/builder2ibek/converters/AMI186.py",
|
|
151
|
+
"src/builder2ibek/converters/scpi.py",
|
|
152
|
+
"src/builder2ibek/converters/eurothermModbus.py",
|
|
153
|
+
"src/builder2ibek/converters/vacuumSpace.py",
|
|
154
|
+
"src/builder2ibek/converters/ADOdin.py",
|
|
155
|
+
"src/builder2ibek/converters/rga.py",
|
|
156
|
+
"src/builder2ibek/converters/pmac.py",
|
|
157
|
+
"src/builder2ibek/converters/Hy8402ip.py",
|
|
158
|
+
"src/builder2ibek/converters/SR-VA.py",
|
|
159
|
+
"src/builder2ibek/converters/deviocstats.py",
|
|
160
|
+
"src/builder2ibek/converters/BL21I.py",
|
|
161
|
+
"src/builder2ibek/converters/epics_base.py",
|
|
162
|
+
"src/builder2ibek/converters/SchottLLS.py",
|
|
163
|
+
"src/builder2ibek/converters/ETLdetector.py",
|
|
164
|
+
"src/builder2ibek/converters/gdaPlugins.py",
|
|
165
|
+
"src/builder2ibek/converters/interlock.py",
|
|
166
|
+
"src/builder2ibek/converters/ADIvium.py",
|
|
167
|
+
"src/builder2ibek/converters/eurotherm2k.py",
|
|
168
|
+
"src/builder2ibek/converters/CryoCoolerXV.py",
|
|
169
|
+
"src/builder2ibek/converters/records.py",
|
|
170
|
+
"src/builder2ibek/converters/ipac.py",
|
|
171
|
+
"src/builder2ibek/converters/QPC.py",
|
|
172
|
+
"src/builder2ibek/converters/mitsubishiRobot.py",
|
|
173
|
+
"src/builder2ibek/converters/motor.py",
|
|
174
|
+
"src/builder2ibek/converters/autosave.py",
|
|
175
|
+
"src/builder2ibek/converters/BL20J.py",
|
|
176
|
+
"src/builder2ibek/converters/mca.py",
|
|
177
|
+
"src/builder2ibek/converters/mks9xx.py",
|
|
178
|
+
"src/builder2ibek/converters/BL11I.py",
|
|
179
|
+
"src/builder2ibek/converters/tpmac.py",
|
|
180
|
+
"src/builder2ibek/converters/DruckDPI515.py",
|
|
181
|
+
"src/builder2ibek/converters/laudaRE2xx.py",
|
|
182
|
+
"src/builder2ibek/converters/rackFan.py",
|
|
183
|
+
"src/builder2ibek/converters/zebra.py",
|
|
184
|
+
"src/builder2ibek/converters/Hy8401ip.py",
|
|
185
|
+
"src/builder2ibek/converters/picotechPT104.py",
|
|
186
|
+
"src/builder2ibek/converters/mrfioc2.py",
|
|
187
|
+
"src/builder2ibek/converters/dlsPLC.py",
|
|
188
|
+
"src/builder2ibek/converters/fzoom.py",
|
|
189
|
+
"src/builder2ibek/converters/terminalserver.py",
|
|
190
|
+
"src/builder2ibek/converters/ffmpegServer.py",
|
|
191
|
+
"src/builder2ibek/converters/userIO.py",
|
|
192
|
+
"src/builder2ibek/converters/CrateMonitor.py",
|
|
193
|
+
"src/builder2ibek/converters/BL19I.py",
|
|
194
|
+
"src/builder2ibek/converters/rgamv2.py",
|
|
195
|
+
".claude/statusline-command.sh",
|
|
196
|
+
".claude/settings.json",
|
|
197
|
+
".claude/commands/support-create.md",
|
|
198
|
+
".claude/commands/beamline-convert.md",
|
|
199
|
+
".claude/commands/ioc-check.md",
|
|
200
|
+
".claude/commands/support-fix.md",
|
|
201
|
+
".claude/commands/ioc-inspect.md",
|
|
202
|
+
".claude/commands/beamline-reconvert.md",
|
|
203
|
+
".claude/commands/ioc-convert.md",
|
|
204
|
+
".claude/commands/memo.md",
|
|
205
|
+
".claude/commands/ioc-convert-raw.md",
|
|
206
|
+
".claude/commands/beamline-check.md",
|
|
207
|
+
".claude/commands/support-inspect.md",
|
|
208
|
+
".claude/skills/shared/services-repo-resolution.md",
|
|
209
|
+
".claude/skills/shared/find-module-path.md",
|
|
210
|
+
".claude/skills/shared/module-special-cases.md",
|
|
211
|
+
".claude/skills/shared/module-rename-map.md",
|
|
212
|
+
".claude/skills/shared/find-ioc-xmls.md",
|
|
213
|
+
".claude/skills/shared/builder-py-analysis.md",
|
|
214
|
+
".claude/skills/shared/error-categorization.md",
|
|
215
|
+
".claude/skills/shared/find-boot-script.md",
|
|
216
|
+
".claude/skills/shared/vxworks-to-rtems-differences.md",
|
|
217
|
+
".claude/skills/shared/autosave-conversion.md",
|
|
218
|
+
".claude/skills/shared/support-yaml-rules.md",
|
|
219
|
+
".claude/skills/ibek-support-ansible/SKILL.md",
|
|
220
|
+
".claude/skills/skills-edit/SKILL.md",
|
|
221
|
+
".claude/skills/ibek-concepts/SKILL.md",
|
|
222
|
+
".claude/skills/beamline-gui/SKILL.md",
|
|
223
|
+
".claude/hooks/sandbox-check.sh",
|
|
224
|
+
"tests/__init__.py",
|
|
225
|
+
"tests/test_compare.py",
|
|
226
|
+
"tests/test_autosave.py",
|
|
227
|
+
"tests/test_file_conversion.py",
|
|
228
|
+
"tests/test_migrate_autosave.py",
|
|
229
|
+
"tests/test_reconvert_cli.py",
|
|
230
|
+
"tests/conftest.py",
|
|
231
|
+
"tests/test_cli.py",
|
|
232
|
+
"tests/samples/bl16i-va-ioc-01.st.cmd",
|
|
233
|
+
"tests/samples/bl21i-mo-ioc-01.yaml",
|
|
234
|
+
"tests/samples/bl11i-cs-ioc-09.st.cmd",
|
|
235
|
+
"tests/samples/bl21i-mo-ioc-01.st.cmd",
|
|
236
|
+
"tests/samples/sr03c-va-ioc-01.yaml",
|
|
237
|
+
"tests/samples/bl11i-va-ioc-01.st.cmd",
|
|
238
|
+
"tests/samples/BL15I-VA-IOC-01.xml",
|
|
239
|
+
"tests/samples/BL99P-EA-IOC-05.xml",
|
|
240
|
+
"tests/samples/bl04i-va-ioc-01.st.cmd",
|
|
241
|
+
"tests/samples/motorpositioner.xml",
|
|
242
|
+
"tests/samples/bl45p-mo-ioc-01.yaml",
|
|
243
|
+
"tests/samples/bl19i-va-ioc-01.ioc.subst",
|
|
244
|
+
"tests/samples/bl11i-cs-ioc-09.yaml",
|
|
245
|
+
"tests/samples/sr03c-va-ioc-01.ioc.subst",
|
|
246
|
+
"tests/samples/bl11i-va-ioc-01.yaml",
|
|
247
|
+
"tests/samples/BL03I-MO-IOC-11.xml",
|
|
248
|
+
"tests/samples/bl11i-cs-ioc-09.ioc.subst",
|
|
249
|
+
"tests/samples/bl99p-ea-ioc-05.st.cmd",
|
|
250
|
+
"tests/samples/bl04i-mo-ioc-03.ioc.subst",
|
|
251
|
+
"tests/samples/bl16i-va-ioc-01.ioc.subst",
|
|
252
|
+
"tests/samples/bl45p-mo-ioc-01.st.cmd",
|
|
253
|
+
"tests/samples/SR03C-VA-IOC-01.xml",
|
|
254
|
+
"tests/samples/bl99p-ea-ioc-05.ioc.subst",
|
|
255
|
+
"tests/samples/sr03c-va-ioc-01.st.cmd",
|
|
256
|
+
"tests/samples/bl04i-mo-ioc-03.st.cmd",
|
|
257
|
+
"tests/samples/cross_ref_test.xml",
|
|
258
|
+
"tests/samples/BL16I-VA-IOC-01.xml",
|
|
259
|
+
"tests/samples/BL45P-MO-IOC-01.xml",
|
|
260
|
+
"tests/samples/cross_ref_test.yaml",
|
|
261
|
+
"tests/samples/make_samples.sh",
|
|
262
|
+
"tests/samples/motor.template",
|
|
263
|
+
"tests/samples/SR03C-VA-IOC-01_expanded.db",
|
|
264
|
+
"tests/samples/bl21i-mo-ioc-01_blacklist.txt",
|
|
265
|
+
"tests/samples/BL99P-EA-IOC-05.yaml",
|
|
266
|
+
"tests/samples/bl16i-va-ioc-01.yaml",
|
|
267
|
+
"tests/samples/BL04I-VA-IOC-01.xml",
|
|
268
|
+
"tests/samples/bl19i-va-ioc-01.st.cmd",
|
|
269
|
+
"tests/samples/BL19I-VA-IOC-01.xml",
|
|
270
|
+
"tests/samples/bl04i-va-ioc-01.yaml",
|
|
271
|
+
"tests/samples/motorpositioner.st.cmd",
|
|
272
|
+
"tests/samples/bl45p-mo-ioc-01.ioc.subst",
|
|
273
|
+
"tests/samples/bl21i-mo-ioc-01.ioc.subst",
|
|
274
|
+
"tests/samples/bl15i-va-ioc-01.yaml",
|
|
275
|
+
"tests/samples/bl11i-va-ioc-01.ioc.subst",
|
|
276
|
+
"tests/samples/bl04i-va-ioc-01.ioc.subst",
|
|
277
|
+
"tests/samples/BL04I-VA-IOC-01_expanded.db",
|
|
278
|
+
"tests/samples/sr03c-va-ioc-01.db",
|
|
279
|
+
"tests/samples/bl15i-va-ioc-01.st.cmd",
|
|
280
|
+
"tests/samples/motorpositioner.ioc.subst",
|
|
281
|
+
"tests/samples/bl15i-va-ioc-01.ioc.subst",
|
|
282
|
+
"tests/samples/BL04I-MO-IOC-03.xml",
|
|
283
|
+
"tests/samples/BL11I-VA-IOC-01.xml",
|
|
284
|
+
"tests/samples/cross_ref_test.st.cmd",
|
|
285
|
+
"tests/samples/cross_ref_test.ioc.subst",
|
|
286
|
+
"tests/samples/bl99p-ea-ioc-05.yaml",
|
|
287
|
+
"tests/samples/BL21I-MO-IOC-01.xml",
|
|
288
|
+
"tests/samples/bl04i-mo-ioc-03.yaml",
|
|
289
|
+
"tests/samples/bl19i-va-ioc-01.yaml",
|
|
290
|
+
"tests/samples/motorpositioner.yaml",
|
|
291
|
+
"tests/samples/BL11I-CS-IOC-09.xml",
|
|
292
|
+
"tests/samples/compare.diff",
|
|
293
|
+
".github/copilot-instructions.md",
|
|
294
|
+
".github/CONTRIBUTING.md",
|
|
295
|
+
".github/PULL_REQUEST_TEMPLATE/pull_request_template.md",
|
|
296
|
+
".github/pages/index.html",
|
|
297
|
+
".github/pages/make_switcher.py",
|
|
298
|
+
".github/ISSUE_TEMPLATE/bug_report.md",
|
|
299
|
+
".github/ISSUE_TEMPLATE/issue.md",
|
|
300
|
+
".github/workflows/_pypi.yml",
|
|
301
|
+
".github/workflows/periodic.yml",
|
|
302
|
+
".github/workflows/_release.yml",
|
|
303
|
+
".github/workflows/_docs.yml",
|
|
304
|
+
".github/workflows/_test.yml",
|
|
305
|
+
".github/workflows/ci.yml",
|
|
306
|
+
".github/workflows/_tox.yml",
|
|
307
|
+
".github/workflows/_dist.yml"
|
|
308
|
+
]
|
|
309
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
<?xml version="1.0" ?>
|
|
2
|
+
<components arch="linux-x86_64">
|
|
3
|
+
<EPICS_BASE.EpicsEnvSet key="IOCSH_PS1" name="prompt" value="BL03I-MO-IOC-11 ->"/>
|
|
4
|
+
<EPICS_BASE.EpicsEnvSet key="EPICS_CA_MAX_ARRAY_BYTES" name="maxArrayBytes" value="6000000"/>
|
|
5
|
+
<devIocStats.devIocStatsHelper guiTags="True" ioc="BL03I-MO-IOC-11" name="MO11" scanMonitor="True" screen="ioc_stats_softdls.edl"/>
|
|
6
|
+
<autosave.Autosave bl="False" debug="0" iocName="BL03I-MO-IOC-11" ip="None" path="/dls_sw/i03/epics/autosave" server="None" skip_1="False" vx_gid="500" vx_uid="37134"/>
|
|
7
|
+
<pmac.pmacAsynSSHPort IP="10.0.0.0" PASSWORD="pytest" name="PPMAC01_PORT"/>
|
|
8
|
+
<pmac.PowerPMAC P="BL03I-MO-PPMAC-01" Port="PPMAC01_PORT" name="PPMAC01"/>
|
|
9
|
+
<pmac.dls_pmac_asyn_motor ACCL="0.1" ADDR="5" BACC="0.5" BVEL="0.2" DESC="QBPM1 Y Translation" DHLM="1.1" DLLM="-41" EGU="mm" ERES="$(MRES)" HOME="BL03I-DI-QBPM-01" HOMEVIS="" JAR="1" M=":Y" MRES="0.0001" OFF="0" P="BL03I-DI-QBPM-01" PORT="PPMAC01" PREC="4" SPORT="PPMAC01_PORT" SREV="200" TWV="1" VELO="2.5" VMAX="3" gda_desc="Pre-HFM QBPM Y" gda_name="QBPM1.Y" name="QBPM1.Y"/>
|
|
10
|
+
<!--<pmac.dls_pmac_asyn_motor ACCL="0.1" ADDR="1" BACC="0.5" BVEL="0.1" DESC="S1 X Inboard Blade" DHLM="9" DLLM="-27" EGU="mm" ERES="$(MRES)" HOME="BL03I-AL-SLITS-01" HOMEVIS="" JAR="1" M=":X:MINUS" MRES="0.001" P="BL03I-AL-SLITS-01" PORT="PPMAC01" PREC="4" SPORT="PPMAC01_PORT" SREV="200" TWV="1" VELO="2" gda_desc="White Beam Slits XM" gda_name="S1.XM" name="S1.XMINUS"/>-->
|
|
11
|
+
<!--<pmac.dls_pmac_asyn_motor ACCL="0.1" ADDR="2" BACC="0.5" BVEL="0.1" DESC="S1 X Outboard Blade" DHLM="27" DLLM="-9" EGU="mm" ERES="$(MRES)" HOME="BL03I-AL-SLITS-01" HOMEVIS="" JAR="1" M=":X:PLUS" MRES="0.001" P="BL03I-AL-SLITS-01" PORT="PPMAC01" PREC="4" SPORT="PPMAC01_PORT" SREV="200" TWV="1" VELO="2" gda_desc="White Beam Slits XP" gda_name="S1.XP" name="S1.XPLUS"/>-->
|
|
12
|
+
<!--<pmac.dls_pmac_asyn_motor ACCL="0.1" ADDR="3" BACC="0.5" BVEL="0.1" DESC="S1 Y Top Blade" DHLM="27" DLLM="-9" EGU="mm" ERES="$(MRES)" HOME="BL03I-AL-SLITS-01" HOMEVIS="" JAR="1" M=":Y:PLUS" MRES="0.001" P="BL03I-AL-SLITS-01" PORT="PPMAC01" PREC="4" SPORT="PPMAC01_PORT" SREV="200" TWV="1" VELO="2" gda_desc="White Beam Slits YP" gda_name="S1.YP" name="S1.YPLUS"/>-->
|
|
13
|
+
<!--<pmac.dls_pmac_asyn_motor ACCL="0.1" ADDR="4" BACC="0.5" BVEL="0.1" DESC="S1 Y Bottom Blade" DHLM="9" DLLM="-27" EGU="mm" ERES="$(MRES)" HOME="BL03I-AL-SLITS-01" HOMEVIS="" JAR="1" M=":Y:MINUS" MRES="0.001" P="BL03I-AL-SLITS-01" PORT="PPMAC01" PREC="4" SPORT="PPMAC01_PORT" SREV="200" TWV="1" VELO="2" gda_desc="White Beam Slits YM" gda_name="S1.YM" name="S1.YMINUS"/>-->
|
|
14
|
+
<pmac.autohome GRP1="" GRP2="QBPM1" P="BL03I-DI-QBPM-01" PLC="12" PORT="PPMAC01" name="QBPM1"/>
|
|
15
|
+
<!--<pmac.autohome GRP2="X Translations" GRP3="Y Translations" P="BL03I-AL-SLITS-01" PLC="11" PORT="PPMAC01" name="S1"/>-->
|
|
16
|
+
<positioner.multipositioner DESC="Pre-HFM QBPM" MP=":Y:MP" P="BL03I-DI-QBPM-01" STRA="Interlock" STRB="Out of the Beam" STRC="Lower Foil" STRD="Upper Foil" gda_desc="QBPM1 Pre-HFM QBPM" gda_name="QBPM1.APOSN" name="QBPM1.MP"/>
|
|
17
|
+
<positioner.motorpositioner DESC="Pre-HFM QBPM" MP="QBPM1.MP" PREC="5" Q=":Y:P" VALA="1.1" VALB="-0.0025" VALC="-18.752" VALD="-37.855" motor="QBPM1.Y" name="QBPM1.MP.M1"/>
|
|
18
|
+
<!--<pmac.CS CS="2" Controller="PPMAC01" PLCNum="10" name="PPMAC01_CS2"/>-->
|
|
19
|
+
<!--<pmac.CS CS="3" Controller="PPMAC01" PLCNum="10" name="PPMAC01_CS3"/>-->
|
|
20
|
+
<!--<pmac.dls_pmac_cs_asyn_motor ADDR="7" DESC="X Centre" DHLM="12.25" DLLM="-12.25" EGU="mm" ERES="$(MRES)" HOMEVIS="0" HOMEVISSTR="" JAR="1" M=":X:CENTRE" MRES="0.0001" P="BL03I-AL-SLITS-01" PORT="PPMAC01_CS2" PREC="5" RDBD="0.0001" TWV="1" VELO="2" gda_desc="S1 X Centre" gda_name="S1.XCENTRE" name="S1.XCENTRE"/>-->
|
|
21
|
+
<!--<pmac.dls_pmac_cs_asyn_motor ADDR="8" DESC="X Size" DHLM="49.937" DLLM="-14.935" EGU="mm" ERES="$(MRES)" HOMEVIS="0" HOMEVISSTR="" JAR="1" M=":X:SIZE" MRES="0.0001" OFF="0.499" P="BL03I-AL-SLITS-01" PORT="PPMAC01_CS2" PREC="5" RDBD="0.0001" TWV="1" VELO="2" gda_desc="S1 X Size" gda_name="S1.XSIZE" name="S1.XSIZE"/>-->
|
|
22
|
+
<!--<pmac.dls_pmac_cs_asyn_motor/>-->
|
|
23
|
+
<!--<pmac.dls_pmac_cs_asyn_motor ADDR="7" DESC="Y Centre" DHLM="10.8755" DLLM="-10.8755" EGU="mm" ERES="$(MRES)" HOMEVIS="0" HOMEVISSTR="" JAR="1" M=":Y:CENTRE" MRES="0.0001" P="BL03I-AL-SLITS-01" PORT="PPMAC01_CS3" PREC="5" RDBD="0.0001" TWV="1" VELO="2" gda_desc="S1 Y Centre" gda_name="S1.YCENTRE" name="S1.YCENTRE"/>-->
|
|
24
|
+
<!--<pmac.dls_pmac_cs_asyn_motor ADDR="8" DESC="Y Size" DHLM="50.521" DLLM="-17.021" EGU="mm" ERES="$(MRES)" HOMEVIS="0" HOMEVISSTR="" JAR="1" M=":Y:SIZE" MRES="0.0001" OFF="1.25" P="BL03I-AL-SLITS-01" PORT="PPMAC01_CS3" PREC="5" RDBD="0.0001" TWV="1" VELO="2" gda_desc="S1 Y Size" gda_name="S1.YSIZE" name="S1.YSIZE"/>-->
|
|
25
|
+
<!--<BL03I.auto_asynMotorAlias P="BL03I-AL-SLITS-01:X:CENTRE" alias="BL03I-AL-SLITS-01:X:CENTER"/>-->
|
|
26
|
+
<!--<BL03I.auto_asynMotorAlias P="BL03I-AL-SLITS-01:Y:CENTRE" alias="BL03I-AL-SLITS-01:Y:CENTER"/>-->
|
|
27
|
+
</components>
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
#############################################################################
|
|
2
|
+
# DB substitution file generated by http://github.com/epics-containers/ibek #
|
|
3
|
+
#############################################################################
|
|
4
|
+
|
|
5
|
+
file "$(IOCSTATS)/db/iocAdminSoft.db" {
|
|
6
|
+
pattern
|
|
7
|
+
{ "IOC" }
|
|
8
|
+
{ "" }
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
file "$(IOCSTATS)/db/iocAdminScanMon.db" {
|
|
12
|
+
pattern
|
|
13
|
+
{ "IOC" }
|
|
14
|
+
{ "" }
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
file "powerPmacStatus.template" {
|
|
18
|
+
pattern
|
|
19
|
+
{ "P", "PORT" }
|
|
20
|
+
{ "BL999-MO-PPMAC-01", "PPMAC01" }
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
file "pmacController.template" {
|
|
24
|
+
pattern
|
|
25
|
+
{ "FEEDRATE", "CSG7", "CSG6", "CSG5", "CSG4", "CSG3", "CSG2", "CSG1", "CSG0", "P", "TIMEOUT", "NAXES", "PORT" }
|
|
26
|
+
{ "100", "", "", "", "", "", "", "", "", "BL999-MO-PPMAC-01", "4", "8", "PPMAC01" }
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
file "pmacStatusAxis.template" {
|
|
30
|
+
pattern
|
|
31
|
+
{ "type", "entity_enabled", "PMAC", "PORT", "AXIS" }
|
|
32
|
+
{ "pmac._axisStatus", "True", "BL999-MO-PPMAC-01", "PPMAC01", "1" }
|
|
33
|
+
{ "pmac._axisStatus", "True", "BL999-MO-PPMAC-01", "PPMAC01", "2" }
|
|
34
|
+
{ "pmac._axisStatus", "True", "BL999-MO-PPMAC-01", "PPMAC01", "3" }
|
|
35
|
+
{ "pmac._axisStatus", "True", "BL999-MO-PPMAC-01", "PPMAC01", "4" }
|
|
36
|
+
{ "pmac._axisStatus", "True", "BL999-MO-PPMAC-01", "PPMAC01", "5" }
|
|
37
|
+
{ "pmac._axisStatus", "True", "BL999-MO-PPMAC-01", "PPMAC01", "6" }
|
|
38
|
+
{ "pmac._axisStatus", "True", "BL999-MO-PPMAC-01", "PPMAC01", "7" }
|
|
39
|
+
{ "pmac._axisStatus", "True", "BL999-MO-PPMAC-01", "PPMAC01", "8" }
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
file "dls_pmac_asyn_motor.template" {
|
|
43
|
+
pattern
|
|
44
|
+
{ "P", "M", "PORT", "SPORT", "CS", "PMAC", "VELO", "ACCL", "SCALE", "BACC", "alh", "DHLM", "HOMEVIS", "EGU", "FEHSV", "VBAS", "VMAX", "HOME", "BDST", "DIR", "DTYP", "FEHIGH", "DLLM", "INIT", "ALLOW_HOMED_SET", "RDBL", "SREV", "LLM", "ADEL", "RDBD", "URIP", "ADDR", "RTRY", "OFF", "ERES", "FEHIHI", "FEHHSV", "JAR", "DESC", "BVEL", "MRES", "DLY", "HLSV", "UEIP", "RRES", "PREC", "RLNK", "FOFF", "HLM", "NTM", "TWV", "HOMEVISSTR" }
|
|
45
|
+
{ "012345", ":Y", "PPMAC01", "PPMAC01_PORT", "0", "BL999-MO-PPMAC-01", "2.5", "0.1", "1", "0.5", "None", "1.1", "1", "mm", "NO_ALARM", "0.0", "2.5", "012345", "0.0", "0", "asynMotor", "0.0", "-41.0", "", "#", "", "200", "0.0", "0.0", "0.0", "0", "1", "0", "0.0", "0.0001", "0.0", "NO_ALARM", "1.0", ":Y", "0.2", "0.0001", "0", "MAJOR", "0", "0.0", "4", "", "0", "0.0", "1", "1.0", "Use motor summary screen" }
|
|
46
|
+
}
|