refactor: centralize deploy-time substitutions (steps 1-2)

Deploy-time placeholders were spread across four independent
implementations: sed in the Gitea deploy script, ansible.builtin.replace
in two playbooks, a hardcoded suffix in bin/sls_hla_launch_gui.sh, and
another in agebd/pv.py. Each defined its own values, so nothing kept them
in sync and a missed substitution failed silently.

Step 1 -- one source of truth:

  * config/environments.yml declares every deploy-time token, its value
    per environment, and where tokens are allowed to live. An environment
    that is missing a token, or defines an undeclared one, is a load-time
    error.
  * agebd.subs loads it and renders. Rendering is a strict regex over
    declared token names rather than a template engine: the rendered
    files are EPICS db/substitution files and Qt XML, and an unknown
    token must raise rather than survive into the output.
  * scripts/ci/check_subs.py enforces the contract in CI: tokens in a
    rendered path are declared, declared tokens only appear where they
    are rendered or generated, and no pre-migration delimiters survive.

Step 2 -- separate the two substitution stages by delimiter:

  * Creation-time (copier, once per new service) keeps {{ token }}.
    Deploy-time (every deploy, per environment) becomes @@token@@.
  * This drops the {{ '{{ token }}' }} escaping from templates/, which
    existed only because one Jinja pass had to emit syntax for a second.
  * Angle brackets were tried first and rejected: << >> is not
    well-formed XML, and cli parses qt/*.ui with ElementTree.
  * The existing sed and ansible consumers are repointed at the new
    delimiters so this stays behaviour-preserving. Routing them through
    agebd.subs is step 3.

Also fixes, as a side effect of having one implementation:

  * The sed pattern '{{ *agebd_env_suffix_upper* }}' quantified 'r'
    rather than the space, so it only matched one exact spacing.
  * agebd.subs.read_ioc_port compares service names case-insensitively;
    ansible/tasks/utils/get-ioc-port.yml still compares CamelCase
    registry names against a lowercase input and never matches.

qt/*.ui is declared as a render path but nothing renders it yet -- the
Qt deploy step is still a plain rsync. Wiring that up is step 4.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Benjamin Labrecque
2026-08-20 11:26:49 +02:00
co-authored by Claude Opus 5
parent 720e260b3e
commit cfd3ecad6c
114 changed files with 1970 additions and 780 deletions
+7 -4
View File
@@ -38,14 +38,17 @@ rsync -avz --delete \
./services/${SERVICE_NAME_LOWER}/current/* ${SERVICE_DIR}/
### SUBSTITUTIONS
# Deploy-time tokens are '@@token@@'. Their values are declared in
# config/environments.yml -- keep the two in sync until this is replaced by a
# call to agebd.subs (see the refactor plan, step 3).
### IOC
sed -i "s/{{ *agebd_env_suffix_upper* }}/${AGEBD_ENV_SUFFIX_UPPER}/g" "${IOC_DIR}/"*
sed -i "s/{{ *agebd_env_suffix_lower* }}/${AGEBD_ENV_SUFFIX_LOWER}/g" "${IOC_DIR}/"*
sed -i "s/{{ *ioc_port* }}/${IOC_PORT}/g" "${IOC_DIR}/"*
sed -i "s/@@[[:space:]]*agebd_env_suffix_upper[[:space:]]*@@/${AGEBD_ENV_SUFFIX_UPPER}/g" "${IOC_DIR}/"*
sed -i "s/@@[[:space:]]*agebd_env_suffix_lower[[:space:]]*@@/${AGEBD_ENV_SUFFIX_LOWER}/g" "${IOC_DIR}/"*
sed -i "s/@@[[:space:]]*ioc_port[[:space:]]*@@/${IOC_PORT}/g" "${IOC_DIR}/"*
### SYSTEMD
if [ -f "${SYSTEMD_UNIT_FILE_PATH}" ]; then
sed -i "s/{{ *agebd_env* }}/${AGEBD_ENV}/g" "${SYSTEMD_UNIT_FILE_PATH}"
sed -i "s/@@[[:space:]]*agebd_env[[:space:]]*@@/${AGEBD_ENV}/g" "${SYSTEMD_UNIT_FILE_PATH}"
fi
+6
View File
@@ -23,6 +23,12 @@ jobs:
echo $UV_CACHE_DIR
uv run --directory cli pytest
# Includes check_subs: every @@token@@ the new service brought in must be
# declared in config/environments.yml and live in a rendered path.
- name: Run scripts tests
run: |
uv run --directory scripts pytest
- name: Parse Service Directory Name
id: parse_branch
# Uses bash shell parameter elimination to strip 'feature/add-service-' from the front
+5 -5
View File
@@ -32,22 +32,22 @@
cmd: "mv {{ ioc_base_dir }}/{{ orig_params_name }} {{ ioc_base_dir }}/{{ target_params_name }}"
removes: "{{ ioc_base_dir }}/{{ orig_params_name }}" # Only runs if the original file exists
# Replace {{ agebd_env_suffix_upper }} inside the newly renamed subs file
# Replace the @@agebd_env_suffix_upper@@ token inside the newly renamed subs file
- name: "[{{ target_service_name_lower }}] Substitute environment tokens inside subs file"
ansible.builtin.replace:
path: "{{ ioc_base_dir }}/{{ target_subs_name }}"
regexp: '\{\{\s*agebd_env_suffix_upper\s*\}\}'
regexp: '@@\s*agebd_env_suffix_upper\s*@@'
replace: "{{ env_suffix_upper }}"
# Replace {{ agebd_env_suffix_lower }} and {{ ioc_port }} inside the newly renamed params file
# Replace the @@agebd_env_suffix_lower@@ and @@ioc_port@@ tokens inside the newly renamed params file
- name: "[{{ target_service_name_lower }}] Substitute environment token inside params file"
ansible.builtin.replace:
path: "{{ ioc_base_dir }}/{{ target_params_name }}"
regexp: "{{ item.regexp }}"
replace: "{{ item.replace | string }}"
with_items:
- { regexp: '\{\{\s*agebd_env_suffix_lower\s*\}\}', replace: "{{ env_suffix_lower }}" }
- { regexp: '\{\{\s*ioc_port\s*\}\}', replace: "{{ ioc_port }}" }
- { regexp: '@@\s*agebd_env_suffix_lower\s*@@', replace: "{{ env_suffix_lower }}" }
- { regexp: '@@\s*ioc_port\s*@@', replace: "{{ ioc_port }}" }
- name: "[{{ target_service_name_lower }}] Run ioc install"
ansible.builtin.shell:
@@ -27,7 +27,7 @@
- name: "[{{ target_service_name_lower }}] Substitute environment variable inline"
ansible.builtin.replace:
path: "{{ svc_current_dir }}/systemd/{{ service_unit_name }}"
regexp: '\{\{\s*agebd_env\s*\}\}'
regexp: '@@\s*agebd_env\s*@@'
replace: "{{ agebd_env }}"
# systemctl --user link --force "./{{ service_unit_name }}"
+1 -1
View File
@@ -24,7 +24,7 @@ class MasterIocSubs(BaseModel):
Parses the configuration text and appends a new row before the closing bracket.
"""
quoted_service = f'"{service_name}"'
new_row = f' {{ "{{{{ agebd_env_suffix_upper }}}}", {quoted_service:<22} , "{starton}", "{autooff}" }}'
new_row = f' {{ "@@agebd_env_suffix_upper@@", {quoted_service:<22} , "{starton}", "{autooff}" }}'
# Use regex to find the last closing curly brace of the configuration block
# This targets the line that contains only a lone closing brace, optional spaces, and maybe a comma/semicolon.
+12 -12
View File
@@ -71,7 +71,7 @@ caLabel[statusTip="Operation"]{
<string notr="true">A</string>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:MASTER-GUIRELOAD</string>
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:MASTER-GUIRELOAD</string>
</property>
<property name="eventSignal">
<enum>caCalc::TriggerZeroToOne</enum>
@@ -106,7 +106,7 @@ caLabel[statusTip="Operation"]{
<string notr="true">!A</string>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:MASTER-ONOFF</string>
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:MASTER-ONOFF</string>
</property>
</widget>
<widget class="QTabWidget" name="tabWidget">
@@ -586,7 +586,7 @@ caLabel[statusTip="Operation"]{
<bool>false</bool>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:MASTER-ALIVE</string>
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:MASTER-ALIVE</string>
</property>
<property name="colorMode">
<enum>caLed::Alarm</enum>
@@ -602,7 +602,7 @@ caLabel[statusTip="Operation"]{
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:MASTER-STARTTIME</string>
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:MASTER-STARTTIME</string>
</property>
<property name="colorMode">
<enum>caLineEdit::Default</enum>
@@ -624,7 +624,7 @@ caLabel[statusTip="Operation"]{
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:MASTER-STATUS</string>
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:MASTER-STATUS</string>
</property>
<property name="colorMode">
<enum>caLineEdit::Default</enum>
@@ -646,7 +646,7 @@ caLabel[statusTip="Operation"]{
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:MASTER-VERSION</string>
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:MASTER-VERSION</string>
</property>
<property name="colorMode">
<enum>caLineEdit::Default</enum>
@@ -668,7 +668,7 @@ caLabel[statusTip="Operation"]{
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:MASTER-ONOFF</string>
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:MASTER-ONOFF</string>
</property>
<property name="stackingMode" stdset="0">
<enum>caChoice::Column</enum>
@@ -717,7 +717,7 @@ caLabel[statusTip="Operation"]{
<bool>false</bool>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:MASTER-ONOFF-RB</string>
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:MASTER-ONOFF-RB</string>
</property>
<property name="colorMode">
<enum>caLed::Alarm</enum>
@@ -763,7 +763,7 @@ caLabel[statusTip="Operation"]{
<bool>false</bool>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-CPCL-MASTER{{ agebd_env_suffix_upper }}:STATUS</string>
<string notr="true">AGEBD-CPCL-MASTER@@agebd_env_suffix_upper@@:STATUS</string>
</property>
<property name="colorMode">
<enum>caLed::Alarm</enum>
@@ -1040,7 +1040,7 @@ caLabel[statusTip="Operation"]{
<enum>EPushButton::None</enum>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-MASTER{{ agebd_env_suffix_upper }}:MASTER-LOGS-REQ</string>
<string notr="true">AGEBD-MASTER@@agebd_env_suffix_upper@@:MASTER-LOGS-REQ</string>
</property>
<property name="label">
<string notr="true">Logs</string>
@@ -1106,7 +1106,7 @@ caLabel[statusTip="Operation"]{
<bool>false</bool>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:MASTER-GUIRELOAD</string>
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:MASTER-GUIRELOAD</string>
</property>
<property name="label">
<string notr="true">Reload</string>
@@ -1172,7 +1172,7 @@ caLabel[statusTip="Operation"]{
<enum>EPushButton::None</enum>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-CPCL-MASTER{{ agebd_env_suffix_upper }}:RESTART</string>
<string notr="true">AGEBD-CPCL-MASTER@@agebd_env_suffix_upper@@:RESTART</string>
</property>
<property name="label">
<string notr="true">↺</string>
@@ -30,7 +30,7 @@
<number>0</number>
</property>
<property name="channel" stdset="0">
<string>AGEBD-TESTSERVICE99-X00{{ agebd_env_suffix_upper }}:AO</string>
<string>AGEBD-TESTSERVICE99-X00@@agebd_env_suffix_upper@@:AO</string>
</property>
<property name="maxValue">
<double>9.000000000000000</double>
@@ -49,10 +49,10 @@
</rect>
</property>
<property name="text">
<string>Toggle AGEBD-ALH{{ agebd_env_suffix_upper }}:TESTSERVICE99-X00-ONOFF</string>
<string>Toggle AGEBD-ALH@@agebd_env_suffix_upper@@:TESTSERVICE99-X00-ONOFF</string>
</property>
<property name="channel" stdset="0">
<string>AGEBD-ALH{{ agebd_env_suffix_upper }}:TESTSERVICE99-X00-ONOFF</string>
<string>AGEBD-ALH@@agebd_env_suffix_upper@@:TESTSERVICE99-X00-ONOFF</string>
</property>
</widget>
<widget class="QLabel" name="label">
@@ -70,7 +70,7 @@
</font>
</property>
<property name="text">
<string>Value of AGEBD-TESTSERVICE99-X00{{ agebd_env_suffix_upper }}:AO</string>
<string>Value of AGEBD-TESTSERVICE99-X00@@agebd_env_suffix_upper@@:AO</string>
</property>
</widget>
</widget>
@@ -1,5 +1,5 @@
file MASTER.template {
pattern { SUFFIX SERVICE STARTON AUTOOFF }
{ "{{ agebd_env_suffix_upper }}", "MASTER" , "0", "30" }
{ "{{ agebd_env_suffix_upper }}", "TESTSERVICE99-X00" , "0", "0" }
{ "@@agebd_env_suffix_upper@@", "MASTER" , "0", "30" }
{ "@@agebd_env_suffix_upper@@", "TESTSERVICE99-X00" , "0", "0" }
}
@@ -1,4 +1,4 @@
file TESTSERVICE99-X00.template {
pattern { DEVICE }
{ AGEBD-TESTSERVICE99-X00{{ agebd_env_suffix_upper }} }
{ AGEBD-TESTSERVICE99-X00@@agebd_env_suffix_upper@@ }
}
@@ -1,6 +1,6 @@
cpu_architecture: x86_64
epics_version: 7.0.8
ioc_host: sls-vserv-bd-01{{ agebd_env_suffix_lower }}
ioc_port: {{ ioc_port }}
ioc_host: sls-vserv-bd-01@@agebd_env_suffix_lower@@
ioc_port: @@ioc_port@@
os: RHEL8
os_id: rhel
@@ -3,9 +3,9 @@ Description=AGEBD-SERVICE-TESTSERVICE99-X00
After=network.target
[Service]
Environment=AGEBD_ENV={{ agebd_env }}
Environment=AGEBD_ENV=@@agebd_env@@
Environment=PYTHONUNBUFFERED=1
ExecStart=/sls/bd/hla/{{ agebd_env }}/bin/start_service.sh TESTSERVICE99-X00
ExecStart=/sls/bd/hla/@@agebd_env@@/bin/start_service.sh TESTSERVICE99-X00
Restart=no
[Install]
+12 -12
View File
@@ -71,7 +71,7 @@ caLabel[statusTip="Operation"]{
<string notr="true">A</string>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:MASTER-GUIRELOAD</string>
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:MASTER-GUIRELOAD</string>
</property>
<property name="eventSignal">
<enum>caCalc::TriggerZeroToOne</enum>
@@ -106,7 +106,7 @@ caLabel[statusTip="Operation"]{
<string notr="true">!A</string>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:MASTER-ONOFF</string>
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:MASTER-ONOFF</string>
</property>
</widget>
<widget class="QTabWidget" name="tabWidget">
@@ -586,7 +586,7 @@ caLabel[statusTip="Operation"]{
<bool>false</bool>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:MASTER-ALIVE</string>
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:MASTER-ALIVE</string>
</property>
<property name="colorMode">
<enum>caLed::Alarm</enum>
@@ -602,7 +602,7 @@ caLabel[statusTip="Operation"]{
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:MASTER-STARTTIME</string>
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:MASTER-STARTTIME</string>
</property>
<property name="colorMode">
<enum>caLineEdit::Default</enum>
@@ -624,7 +624,7 @@ caLabel[statusTip="Operation"]{
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:MASTER-STATUS</string>
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:MASTER-STATUS</string>
</property>
<property name="colorMode">
<enum>caLineEdit::Default</enum>
@@ -646,7 +646,7 @@ caLabel[statusTip="Operation"]{
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:MASTER-VERSION</string>
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:MASTER-VERSION</string>
</property>
<property name="colorMode">
<enum>caLineEdit::Default</enum>
@@ -668,7 +668,7 @@ caLabel[statusTip="Operation"]{
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:MASTER-ONOFF</string>
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:MASTER-ONOFF</string>
</property>
<property name="stackingMode" stdset="0">
<enum>caChoice::Column</enum>
@@ -717,7 +717,7 @@ caLabel[statusTip="Operation"]{
<bool>false</bool>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:MASTER-ONOFF-RB</string>
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:MASTER-ONOFF-RB</string>
</property>
<property name="colorMode">
<enum>caLed::Alarm</enum>
@@ -763,7 +763,7 @@ caLabel[statusTip="Operation"]{
<bool>false</bool>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-CPCL-MASTER{{ agebd_env_suffix_upper }}:STATUS</string>
<string notr="true">AGEBD-CPCL-MASTER@@agebd_env_suffix_upper@@:STATUS</string>
</property>
<property name="colorMode">
<enum>caLed::Alarm</enum>
@@ -1040,7 +1040,7 @@ caLabel[statusTip="Operation"]{
<enum>EPushButton::None</enum>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-MASTER{{ agebd_env_suffix_upper }}:MASTER-LOGS-REQ</string>
<string notr="true">AGEBD-MASTER@@agebd_env_suffix_upper@@:MASTER-LOGS-REQ</string>
</property>
<property name="label">
<string notr="true">Logs</string>
@@ -1106,7 +1106,7 @@ caLabel[statusTip="Operation"]{
<bool>false</bool>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:MASTER-GUIRELOAD</string>
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:MASTER-GUIRELOAD</string>
</property>
<property name="label">
<string notr="true">Reload</string>
@@ -1172,7 +1172,7 @@ caLabel[statusTip="Operation"]{
<enum>EPushButton::None</enum>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-CPCL-MASTER{{ agebd_env_suffix_upper }}:RESTART</string>
<string notr="true">AGEBD-CPCL-MASTER@@agebd_env_suffix_upper@@:RESTART</string>
</property>
<property name="label">
<string notr="true">↺</string>
@@ -1,4 +1,4 @@
file MASTER.template {
pattern { SUFFIX SERVICE STARTON AUTOOFF }
{ "{{ agebd_env_suffix_upper }}", "MASTER" , "0", "30" }
{ "@@agebd_env_suffix_upper@@", "MASTER" , "0", "30" }
}
Generated
+2
View File
@@ -10,6 +10,7 @@ dependencies = [
{ name = "gitpython" },
{ name = "h5py" },
{ name = "pyepics" },
{ name = "pyyaml" },
{ name = "typer" },
]
@@ -18,6 +19,7 @@ requires-dist = [
{ name = "gitpython", specifier = ">=3.1.50" },
{ name = "h5py", specifier = ">=3.16.0" },
{ name = "pyepics", specifier = ">=3.5.10" },
{ name = "pyyaml", specifier = ">=6.0.3" },
{ name = "typer", specifier = ">=0.23.2" },
]
+79
View File
@@ -0,0 +1,79 @@
# Single source of truth for every deploy-time substitution in this repo.
#
# There are two substitution stages, and they use different delimiters on
# purpose:
#
# {{ token }} creation-time. Resolved once by copier when a new service is
# created (cli/src/core/service_creator.py). Never survives
# into a committed file.
#
# @@token@@ deploy-time. Resolved on every deploy, per environment, by
# agebd.subs. Lives in committed files.
#
# This file declares the deploy-time stage only. scripts/ci/check_subs.py
# enforces that every @@token@@ in the repo is declared here, and that it
# only appears in a path that actually gets rendered.
#
# 'local' is deliberately absent: it is a runtime mode for tests without EPICS
# access (see agebd.enums.AGEBD_ENV), not a deploy target.
environments:
prod:
agebd_env: prod
agebd_env_suffix_upper: ""
agebd_env_suffix_lower: ""
dev:
agebd_env: dev
agebd_env_suffix_upper: "-DEV"
agebd_env_suffix_lower: "-dev"
# Every deploy-time token. Each environment above must define exactly the
# tokens with source 'environment' -- adding one here without adding it to
# every environment is a load-time error.
tokens:
agebd_env:
source: environment
description: >-
Deployment environment name. Used in deploy paths and systemd units,
e.g. /sls/bd/hla/dev/bin/start_service.sh.
agebd_env_suffix_upper:
source: environment
description: >-
Uppercase suffix appended to EPICS device names, e.g. AGEBD-TUNE-DEV.
Used in IOC substitution files and Qt UI files.
agebd_env_suffix_lower:
source: environment
description: >-
Lowercase suffix appended to host names, e.g. sls-vserv-bd-01-dev.
Used in IOC parameter files.
ioc_port:
source: registry
description: >-
IOC port for the service being deployed, read from
config/services_registry.yml.
# Where deploy-time tokens are allowed to live, as repo-root-relative globs.
locations:
# Rendered at deploy time by agebd.subs. A token here is resolved.
render:
- services/*/current/ioc
- services/*/current/systemd
- qt
# Carry deploy-time tokens verbatim, because the copy they produce lands in
# a render path. A token here is NOT resolved in place.
passthrough:
- templates
- cli/tests/fixtures
# The substitution machinery itself: code that renders, generates or
# documents tokens. Naming a token here is expected; nothing is resolved.
# These paths use {{ }} as their own template language (Ansible, copier), so
# the leftover-delimiter check does not apply to them.
references:
- ansible/tasks/*
- .gitea/scripts
- cli/src/models
- packages/agebd/src/agebd
- packages/agebd/tests
- scripts/ci
- scripts/tests
- config
+1
View File
@@ -9,6 +9,7 @@ dependencies = [
"pyepics>=3.5.10",
"typer>=0.23.2",
"gitpython>=3.1.50",
"pyyaml>=6.0.3",
]
# Dev dependencies
+370
View File
@@ -0,0 +1,370 @@
"""
Single source of truth for deploy-time substitutions.
Committed files carry deploy-time placeholders written as ``@@token@@``.
This module is the only place that knows what those tokens resolve to.
There are two substitution stages in this repo, and they use different
delimiters on purpose:
``{{ token }}`` creation-time. Resolved once by copier when a new
service is created (cli/src/core/service_creator.py).
Never survives into a committed file.
``@@token@@`` deploy-time. Resolved on every deploy, per environment,
by this module. Lives in committed files.
Token values come from two sources, both declared in config/environments.yml:
environment the per-environment table in config/environments.yml
registry config/services_registry.yml, per service
Rendering is a strict regex substitution rather than a template engine. The
rendered files are EPICS database/substitution files and Qt XML, which are
full of braces and other characters a template engine would try to interpret;
and a regex over declared token names gives an exact "unknown token in this
file" error instead of silently leaving the placeholder in place -- which is
the failure mode of the sed calls this module replaces.
"""
import os
import re
from dataclasses import dataclass, field
from fnmatch import fnmatch
from pathlib import Path
from typing import Iterable, Iterator, Optional, Union
import yaml
from agebd.utils import get_git_root
CONFIG_DIR_ENV_VAR = "AGEBD_CONFIG_DIR"
ENVIRONMENTS_FILENAME = "environments.yml"
SERVICES_REGISTRY_FILENAME = "services_registry.yml"
ENVIRONMENT_SOURCE = "environment"
REGISTRY_SOURCE = "registry"
#: Deploy-time placeholder, e.g. ``@@agebd_env@@`` or ``@@agebd_env@@``.
TOKEN_PATTERN = re.compile(r"@@\s*([a-z][a-z0-9_]*)\s*@@")
#: The pre-migration deploy-time delimiters. Kept here so that the CI lint can
#: spot files that were missed by the switch to ``@@token@@``.
LEGACY_TOKEN_PATTERN = re.compile(r"\{\{\s*([a-z][a-z0-9_]*)\s*\}\}")
class SubstitutionError(Exception):
"""Base class for every error raised by this module."""
class UnknownTokenError(SubstitutionError):
"""A ``@@token@@`` was found that is not declared in environments.yml."""
def resolve_config_dir(config_dir: Optional[Union[str, Path]] = None) -> Path:
"""
Locate the directory holding environments.yml.
Explicit argument wins, then $AGEBD_CONFIG_DIR, then the config directory
of the surrounding git checkout. The env var is what deployed hosts use:
the deployed tree is not a git checkout.
"""
if config_dir is not None:
return Path(config_dir)
from_env = os.environ.get(CONFIG_DIR_ENV_VAR)
if from_env:
return Path(from_env)
try:
return get_git_root(__file__) / "config"
except Exception as e:
raise SubstitutionError(
"Could not locate the config directory: agebd is not installed inside a git "
f"checkout. Set ${CONFIG_DIR_ENV_VAR} to the directory holding "
f"{ENVIRONMENTS_FILENAME}."
) from e
@dataclass(frozen=True)
class TokenSpec:
name: str
source: str
description: str = ""
@dataclass
class SubstitutionsConfig:
"""The parsed contents of config/environments.yml."""
config_dir: Path
environments: dict
tokens: dict
render_paths: tuple = ()
passthrough_paths: tuple = ()
reference_paths: tuple = ()
@property
def environments_file(self) -> Path:
return self.config_dir / ENVIRONMENTS_FILENAME
@property
def services_registry_file(self) -> Path:
return self.config_dir / SERVICES_REGISTRY_FILENAME
@classmethod
def load(cls, config_dir: Optional[Union[str, Path]] = None) -> "SubstitutionsConfig":
resolved_dir = resolve_config_dir(config_dir)
path = resolved_dir / ENVIRONMENTS_FILENAME
if not path.is_file():
raise SubstitutionError(f"No {ENVIRONMENTS_FILENAME} found at: {path}")
with open(path) as f:
raw = yaml.safe_load(f) or {}
tokens = {
name: TokenSpec(
name=name,
source=spec["source"],
description=spec.get("description", ""),
)
for name, spec in (raw.get("tokens") or {}).items()
}
locations = raw.get("locations") or {}
config = cls(
config_dir=resolved_dir,
environments=raw.get("environments") or {},
tokens=tokens,
render_paths=tuple(locations.get("render") or ()),
passthrough_paths=tuple(locations.get("passthrough") or ()),
reference_paths=tuple(locations.get("references") or ()),
)
config.assert_valid()
return config
def assert_valid(self) -> None:
"""
Every environment must define exactly the tokens sourced from the
environment table -- no more, no less. This is what stops a new token
from being added for dev but forgotten for prod.
"""
if not self.environments:
raise SubstitutionError(f"No environments declared in {self.environments_file}")
for name, spec in self.tokens.items():
if spec.source not in (ENVIRONMENT_SOURCE, REGISTRY_SOURCE):
raise SubstitutionError(
f"Token '{name}' in {self.environments_file} has unknown source "
f"'{spec.source}'. Expected '{ENVIRONMENT_SOURCE}' or '{REGISTRY_SOURCE}'."
)
expected = self.environment_token_names()
for env_name, values in self.environments.items():
declared = set(values)
missing = expected - declared
unexpected = declared - expected
if missing:
raise SubstitutionError(
f"Environment '{env_name}' in {self.environments_file} is missing "
f"token(s): {', '.join(sorted(missing))}"
)
if unexpected:
raise SubstitutionError(
f"Environment '{env_name}' in {self.environments_file} defines "
f"token(s) that are not declared under 'tokens': "
f"{', '.join(sorted(unexpected))}"
)
def environment_token_names(self) -> set:
return {n for n, spec in self.tokens.items() if spec.source == ENVIRONMENT_SOURCE}
def registry_token_names(self) -> set:
return {n for n, spec in self.tokens.items() if spec.source == REGISTRY_SOURCE}
def assert_environment_exists(self, env: str) -> dict:
try:
return self.environments[env]
except KeyError:
known = ", ".join(sorted(self.environments))
raise SubstitutionError(
f"Unknown environment '{env}'. Declared in {self.environments_file}: {known}"
) from None
def expand_render_paths(self, repo_root: Union[str, Path]) -> list:
"""
Resolve the 'render' globs against a checkout, keeping only what exists.
"""
root = Path(repo_root)
found = []
for pattern in self.render_paths:
found.extend(sorted(p for p in root.glob(pattern) if p.is_dir()))
return found
def is_render_path(self, rel_path: Union[str, Path]) -> bool:
return _is_under_any(Path(rel_path), self.render_paths)
def is_passthrough_path(self, rel_path: Union[str, Path]) -> bool:
return _is_under_any(Path(rel_path), self.passthrough_paths)
def is_reference_path(self, rel_path: Union[str, Path]) -> bool:
"""
True for the substitution machinery itself -- code that renders,
generates or documents tokens rather than carrying them.
"""
return _is_under_any(Path(rel_path), self.reference_paths)
@dataclass
class Substitutions:
"""
Resolved deploy-time token values for one environment, and optionally for
one service.
"""
values: dict = field(default_factory=dict)
config: Optional[SubstitutionsConfig] = None
@classmethod
def for_env(cls, env: str, config_dir: Optional[Union[str, Path]] = None) -> "Substitutions":
"""
Tokens that depend only on the environment. Rendering a file that also
needs a registry token (``ioc_port``) with this will raise -- use
:meth:`for_service`.
"""
config = SubstitutionsConfig.load(config_dir)
return cls(values=dict(config.assert_environment_exists(str(env))), config=config)
@classmethod
def for_service(
cls, env: str, service_name: str, config_dir: Optional[Union[str, Path]] = None
) -> "Substitutions":
"""
Every deploy-time token, for one service in one environment.
"""
subs = cls.for_env(env, config_dir=config_dir)
assert subs.config is not None
if "ioc_port" in subs.config.registry_token_names():
subs.values["ioc_port"] = str(
read_ioc_port(subs.config.services_registry_file, service_name)
)
return subs
def __getitem__(self, token: str) -> str:
try:
return self.values[token]
except KeyError:
raise UnknownTokenError(self._unknown_token_message(token)) from None
def __contains__(self, token: str) -> bool:
return token in self.values
def render_text(self, text: str, origin: Optional[Union[str, Path]] = None) -> str:
"""
Replace every ``@@token@@`` in ``text``. Raises on an undeclared or
misspelled token rather than leaving it in the output.
"""
def replace(match: "re.Match") -> str:
token = match.group(1)
if token not in self.values:
raise UnknownTokenError(self._unknown_token_message(token, origin=origin))
return self.values[token]
return TOKEN_PATTERN.sub(replace, text)
def render_file(self, path: Union[str, Path]) -> bool:
"""
Render one file in place. Returns True if the file changed.
"""
path = Path(path)
original = path.read_text()
rendered = self.render_text(original, origin=path)
if rendered == original:
return False
path.write_text(rendered)
return True
def render_tree(self, root: Union[str, Path]) -> list:
"""
Render every text file under ``root`` in place. Returns the files that
changed.
"""
return [path for path in iter_text_files(root) if self.render_file(path)]
def _unknown_token_message(self, token: str, origin: Optional[Union[str, Path]] = None) -> str:
where = f" in {origin}" if origin else ""
known = ", ".join(sorted(self.values)) or "(none)"
declared_in = self.config.environments_file if self.config else ENVIRONMENTS_FILENAME
return (
f"Unknown deploy-time token '@@{token}@@'{where}. "
f"Declare it in {declared_in}, or fix the spelling. "
f"Available here: {known}."
)
def read_ioc_port(registry_file: Union[str, Path], service_name: str) -> int:
"""
Look up a service's IOC port in the services registry.
Registry names are CamelCase; callers pass whatever casing they have, so
the comparison is case-insensitive.
"""
with open(registry_file) as f:
registry = yaml.safe_load(f) or {}
wanted = service_name.lower()
for entry in registry.get("services") or []:
if str(entry.get("name", "")).lower() == wanted:
return entry["ioc_port"]
raise SubstitutionError(f"Service '{service_name}' not found in {registry_file}")
def find_tokens(text: str) -> set:
"""Every deploy-time token name appearing in ``text``."""
return set(TOKEN_PATTERN.findall(text))
def find_legacy_tokens(text: str) -> set:
"""Every pre-migration ``{{ token }}`` name appearing in ``text``."""
return set(LEGACY_TOKEN_PATTERN.findall(text))
SKIPPED_DIRS = frozenset(
{".git", ".venv", ".pixi", ".cache", ".pytest_cache", ".ruff_cache", "__pycache__"}
)
def iter_text_files(root: Union[str, Path]) -> Iterator[Path]:
"""
Yield readable text files under ``root``, skipping build/cache directories
and anything that is not valid UTF-8.
"""
for path in sorted(Path(root).rglob("*")):
if not path.is_file():
continue
if SKIPPED_DIRS.intersection(path.parts):
continue
try:
path.read_text()
except (UnicodeDecodeError, OSError):
continue
yield path
def _is_under_any(rel_path: Path, patterns: Iterable) -> bool:
"""
True if ``rel_path`` itself, or any of its parent directories, matches one
of the repo-root-relative directory globs in ``patterns``.
"""
candidates = [rel_path] + [p for p in rel_path.parents if str(p) != "."]
for pattern in patterns:
pattern_parts = Path(pattern).parts
for candidate in candidates:
parts = candidate.parts
if len(parts) == len(pattern_parts) and all(
fnmatch(part, pat) for part, pat in zip(parts, pattern_parts)
):
return True
return False
+217
View File
@@ -0,0 +1,217 @@
import pytest
import yaml
from agebd.subs import (
SubstitutionError,
Substitutions,
SubstitutionsConfig,
UnknownTokenError,
find_legacy_tokens,
find_tokens,
read_ioc_port,
)
ENVIRONMENTS = {
"environments": {
"prod": {
"agebd_env": "prod",
"agebd_env_suffix_upper": "",
"agebd_env_suffix_lower": "",
},
"dev": {
"agebd_env": "dev",
"agebd_env_suffix_upper": "-DEV",
"agebd_env_suffix_lower": "-dev",
},
},
"tokens": {
"agebd_env": {"source": "environment", "description": "env name"},
"agebd_env_suffix_upper": {"source": "environment", "description": "upper suffix"},
"agebd_env_suffix_lower": {"source": "environment", "description": "lower suffix"},
"ioc_port": {"source": "registry", "description": "ioc port"},
},
"locations": {
"render": ["services/*/current/ioc", "qt"],
"passthrough": ["templates"],
},
}
REGISTRY = {
"next_available_ioc_port": 50002,
"services": [
{"name": "Master", "ioc_port": 50000, "status": "active"},
{"name": "TauBPM", "ioc_port": 50001, "status": "active"},
],
}
@pytest.fixture
def config_dir(tmp_path):
(tmp_path / "environments.yml").write_text(yaml.safe_dump(ENVIRONMENTS))
(tmp_path / "services_registry.yml").write_text(yaml.safe_dump(REGISTRY))
return tmp_path
def write_environments(config_dir, environments):
(config_dir / "environments.yml").write_text(yaml.safe_dump(environments))
def test_for_env_resolves_environment_tokens(config_dir):
subs = Substitutions.for_env("dev", config_dir=config_dir)
assert subs["agebd_env"] == "dev"
assert subs["agebd_env_suffix_upper"] == "-DEV"
assert subs["agebd_env_suffix_lower"] == "-dev"
def test_prod_suffixes_are_empty(config_dir):
subs = Substitutions.for_env("prod", config_dir=config_dir)
assert subs.render_text("AGEBD-TUNE@@agebd_env_suffix_upper@@:AO") == "AGEBD-TUNE:AO"
def test_for_service_adds_ioc_port(config_dir):
subs = Substitutions.for_service("dev", "taubpm", config_dir=config_dir)
assert subs["ioc_port"] == "50001"
def test_render_text_substitutes_every_occurrence(config_dir):
subs = Substitutions.for_env("dev", config_dir=config_dir)
text = "AGEBD-ALH@@agebd_env_suffix_upper@@:X\nsls-vserv-bd-01@@agebd_env_suffix_lower@@\n"
assert subs.render_text(text) == "AGEBD-ALH-DEV:X\nsls-vserv-bd-01-dev\n"
def test_render_text_raises_on_misspelled_token(config_dir):
subs = Substitutions.for_env("dev", config_dir=config_dir)
with pytest.raises(UnknownTokenError, match="agebd_env_sufix_upper"):
subs.render_text("AGEBD-TUNE@@agebd_env_sufix_upper@@:AO", origin="TUNE.subs")
def test_render_text_raises_when_registry_token_is_not_loaded(config_dir):
"""for_env() has no ioc_port, so a parameters file must fail loudly."""
subs = Substitutions.for_env("dev", config_dir=config_dir)
with pytest.raises(UnknownTokenError, match="ioc_port"):
subs.render_text("ioc_port: @@ioc_port@@")
def test_render_file_reports_whether_it_changed(config_dir, tmp_path):
subs = Substitutions.for_env("dev", config_dir=config_dir)
path = tmp_path / "AGEBD-CPCL-TUNE_main.subs"
path.write_text("{ AGEBD-TUNE@@agebd_env_suffix_upper@@ }\n")
assert subs.render_file(path) is True
assert path.read_text() == "{ AGEBD-TUNE-DEV }\n"
assert subs.render_file(path) is False
def test_render_tree_skips_cache_directories(config_dir, tmp_path):
subs = Substitutions.for_env("dev", config_dir=config_dir)
(tmp_path / "ioc").mkdir()
(tmp_path / "ioc" / "a.subs").write_text("AGEBD-A@@agebd_env_suffix_upper@@")
(tmp_path / "__pycache__").mkdir()
(tmp_path / "__pycache__" / "b.subs").write_text("AGEBD-B@@agebd_env_suffix_upper@@")
changed = subs.render_tree(tmp_path)
assert [p.name for p in changed] == ["a.subs"]
assert (tmp_path / "__pycache__" / "b.subs").read_text().endswith("@@agebd_env_suffix_upper@@")
def test_replacement_value_is_literal(config_dir):
"""A value containing regex backreference syntax must not be interpreted."""
environments = yaml.safe_load(yaml.safe_dump(ENVIRONMENTS))
environments["environments"]["dev"]["agebd_env_suffix_upper"] = r"-\1DEV"
write_environments(config_dir, environments)
subs = Substitutions.for_env("dev", config_dir=config_dir)
assert subs.render_text("AGEBD-A@@agebd_env_suffix_upper@@") == r"AGEBD-A-\1DEV"
def test_unknown_environment_lists_the_known_ones(config_dir):
with pytest.raises(SubstitutionError, match="dev, prod"):
Substitutions.for_env("staging", config_dir=config_dir)
def test_token_missing_from_one_environment_is_a_load_error(config_dir):
environments = yaml.safe_load(yaml.safe_dump(ENVIRONMENTS))
del environments["environments"]["prod"]["agebd_env_suffix_lower"]
write_environments(config_dir, environments)
with pytest.raises(SubstitutionError, match="missing token"):
SubstitutionsConfig.load(config_dir)
def test_undeclared_token_in_an_environment_is_a_load_error(config_dir):
environments = yaml.safe_load(yaml.safe_dump(ENVIRONMENTS))
environments["environments"]["dev"]["agebd_env_suffix_mixed"] = "-Dev"
write_environments(config_dir, environments)
with pytest.raises(SubstitutionError, match="not declared"):
SubstitutionsConfig.load(config_dir)
def test_unknown_token_source_is_a_load_error(config_dir):
environments = yaml.safe_load(yaml.safe_dump(ENVIRONMENTS))
environments["tokens"]["ioc_port"]["source"] = "somewhere"
write_environments(config_dir, environments)
with pytest.raises(SubstitutionError, match="unknown source"):
SubstitutionsConfig.load(config_dir)
def test_read_ioc_port_is_case_insensitive(config_dir):
registry_file = config_dir / "services_registry.yml"
assert read_ioc_port(registry_file, "taubpm") == 50001
assert read_ioc_port(registry_file, "TauBPM") == 50001
assert read_ioc_port(registry_file, "TAUBPM") == 50001
def test_read_ioc_port_raises_for_unknown_service(config_dir):
with pytest.raises(SubstitutionError, match="Nope"):
read_ioc_port(config_dir / "services_registry.yml", "Nope")
def test_path_classification(config_dir):
config = SubstitutionsConfig.load(config_dir)
assert config.is_render_path("services/tune/current/ioc/TUNE.template")
assert config.is_render_path("qt/A_BD_Tune.ui")
assert config.is_passthrough_path("templates/service/x/current/ioc/a.jinja")
assert not config.is_render_path("services/tune/current/app/src/main.py")
assert not config.is_passthrough_path("services/tune/current/app/src/main.py")
def test_expand_render_paths(config_dir, tmp_path):
config = SubstitutionsConfig.load(config_dir)
repo = tmp_path / "repo"
(repo / "services" / "tune" / "current" / "ioc").mkdir(parents=True)
(repo / "services" / "tune" / "current" / "app").mkdir(parents=True)
(repo / "qt").mkdir()
expanded = {p.relative_to(repo).as_posix() for p in config.expand_render_paths(repo)}
assert expanded == {"services/tune/current/ioc", "qt"}
def test_find_tokens_ignores_non_token_angle_brackets():
assert find_tokens("@@b@@ and @@agebd_env@@") == {"b", "agebd_env"}
assert find_tokens("user@@example.com") == set()
assert find_tokens("@@ NotAToken @@") == set()
def test_find_legacy_tokens_returns_both_stages():
"""
It cannot tell the two stages apart on syntax alone -- callers intersect
the result with the declared deploy-time tokens.
"""
assert find_legacy_tokens("{{ agebd_env_suffix_upper }} {{service_name_upper}}") == {
"agebd_env_suffix_upper",
"service_name_upper",
}
+19
View File
@@ -10,6 +10,7 @@ dependencies = [
{ name = "gitpython" },
{ name = "h5py" },
{ name = "pyepics" },
{ name = "pyyaml" },
{ name = "typer" },
]
@@ -28,6 +29,7 @@ requires-dist = [
{ name = "gitpython", specifier = ">=3.1.50" },
{ name = "h5py", specifier = ">=3.16.0" },
{ name = "pyepics", specifier = ">=3.5.10" },
{ name = "pyyaml", specifier = ">=6.0.3" },
{ name = "typer", specifier = ">=0.23.2" },
]
@@ -532,6 +534,23 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/de/3d/8161f7711c017e01ac9f008dfddd9410dff3674334c233bde66e7ba65bbf/pywin32_ctypes-0.2.3-py3-none-any.whl", hash = "sha256:8a1513379d709975552d202d942d9837758905c8d01eb82b8bcc30918929e7b8", size = 30756, upload-time = "2024-08-14T10:15:33.187Z" },
]
[[package]]
name = "pyyaml"
version = "6.0.3"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/05/8e/961c0007c59b8dd7729d542c61a4d537767a59645b82a0b521206e1e25c2/pyyaml-6.0.3.tar.gz", hash = "sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f", size = 130960, upload-time = "2025-09-25T21:33:16.546Z" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/f4/a0/39350dd17dd6d6c6507025c0e53aef67a9293a6d37d3511f23ea510d5800/pyyaml-6.0.3-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:214ed4befebe12df36bcc8bc2b64b396ca31be9304b8f59e25c11cf94a4c033b", size = 184227, upload-time = "2025-09-25T21:31:46.04Z" },
{ url = "https://files.pythonhosted.org/packages/05/14/52d505b5c59ce73244f59c7a50ecf47093ce4765f116cdb98286a71eeca2/pyyaml-6.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:02ea2dfa234451bbb8772601d7b8e426c2bfa197136796224e50e35a78777956", size = 174019, upload-time = "2025-09-25T21:31:47.706Z" },
{ url = "https://files.pythonhosted.org/packages/43/f7/0e6a5ae5599c838c696adb4e6330a59f463265bfa1e116cfd1fbb0abaaae/pyyaml-6.0.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b30236e45cf30d2b8e7b3e85881719e98507abed1011bf463a8fa23e9c3e98a8", size = 740646, upload-time = "2025-09-25T21:31:49.21Z" },
{ url = "https://files.pythonhosted.org/packages/2f/3a/61b9db1d28f00f8fd0ae760459a5c4bf1b941baf714e207b6eb0657d2578/pyyaml-6.0.3-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:66291b10affd76d76f54fad28e22e51719ef9ba22b29e1d7d03d6777a9174198", size = 840793, upload-time = "2025-09-25T21:31:50.735Z" },
{ url = "https://files.pythonhosted.org/packages/7a/1e/7acc4f0e74c4b3d9531e24739e0ab832a5edf40e64fbae1a9c01941cabd7/pyyaml-6.0.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9c7708761fccb9397fe64bbc0395abcae8c4bf7b0eac081e12b809bf47700d0b", size = 770293, upload-time = "2025-09-25T21:31:51.828Z" },
{ url = "https://files.pythonhosted.org/packages/8b/ef/abd085f06853af0cd59fa5f913d61a8eab65d7639ff2a658d18a25d6a89d/pyyaml-6.0.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:418cf3f2111bc80e0933b2cd8cd04f286338bb88bdc7bc8e6dd775ebde60b5e0", size = 732872, upload-time = "2025-09-25T21:31:53.282Z" },
{ url = "https://files.pythonhosted.org/packages/1f/15/2bc9c8faf6450a8b3c9fc5448ed869c599c0a74ba2669772b1f3a0040180/pyyaml-6.0.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:5e0b74767e5f8c593e8c9b5912019159ed0533c70051e9cce3e8b6aa699fcd69", size = 758828, upload-time = "2025-09-25T21:31:54.807Z" },
{ url = "https://files.pythonhosted.org/packages/a3/00/531e92e88c00f4333ce359e50c19b8d1de9fe8d581b1534e35ccfbc5f393/pyyaml-6.0.3-cp310-cp310-win32.whl", hash = "sha256:28c8d926f98f432f88adc23edf2e6d4921ac26fb084b028c733d01868d19007e", size = 142415, upload-time = "2025-09-25T21:31:55.885Z" },
{ url = "https://files.pythonhosted.org/packages/2a/fa/926c003379b19fca39dd4634818b00dec6c62d87faf628d1394e137354d4/pyyaml-6.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:bdb2c67c6c1390b63c6ff89f210c8fd09d9a1217a465701eac7316313c915e4c", size = 158561, upload-time = "2025-09-25T21:31:57.406Z" },
]
[[package]]
name = "readme-renderer"
version = "45.0"
+15 -15
View File
@@ -43,7 +43,7 @@
<string notr="true">A</string>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:DBPM3CURR-GUIRELOAD</string>
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:DBPM3CURR-GUIRELOAD</string>
</property>
<property name="eventSignal">
<enum>caCalc::TriggerZeroToOne</enum>
@@ -185,7 +185,7 @@
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-DBPM3CURR{{ agebd_env_suffix_upper }}:CHARGE-AVG</string>
<string notr="true">AGEBD-DBPM3CURR@@agebd_env_suffix_upper@@:CHARGE-AVG</string>
</property>
<property name="foreground">
<color>
@@ -245,7 +245,7 @@
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-DBPM3CURR{{ agebd_env_suffix_upper }}:CURRENT-AVG</string>
<string notr="true">AGEBD-DBPM3CURR@@agebd_env_suffix_upper@@:CURRENT-AVG</string>
</property>
<property name="foreground">
<color>
@@ -305,7 +305,7 @@
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-DBPM3CURR{{ agebd_env_suffix_upper }}:ACCUMULATED-BEAM-DOSE</string>
<string notr="true">AGEBD-DBPM3CURR@@agebd_env_suffix_upper@@:ACCUMULATED-BEAM-DOSE</string>
</property>
<property name="foreground">
<color>
@@ -521,7 +521,7 @@
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-DBPM3CURR{{ agebd_env_suffix_upper }}:CURRENT-AVG.EGU</string>
<string notr="true">AGEBD-DBPM3CURR@@agebd_env_suffix_upper@@:CURRENT-AVG.EGU</string>
</property>
<property name="foreground">
<color>
@@ -581,7 +581,7 @@
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-DBPM3CURR{{ agebd_env_suffix_upper }}:CHARGE-AVG.EGU</string>
<string notr="true">AGEBD-DBPM3CURR@@agebd_env_suffix_upper@@:CHARGE-AVG.EGU</string>
</property>
<property name="foreground">
<color>
@@ -641,7 +641,7 @@
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-DBPM3CURR{{ agebd_env_suffix_upper }}:ACCUMULATED-BEAM-DOSE.EGU</string>
<string notr="true">AGEBD-DBPM3CURR@@agebd_env_suffix_upper@@:ACCUMULATED-BEAM-DOSE.EGU</string>
</property>
<property name="foreground">
<color>
@@ -755,7 +755,7 @@
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:DBPM3CURR-ONOFF</string>
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:DBPM3CURR-ONOFF</string>
</property>
<property name="stackingMode" stdset="0">
<enum>caChoice::Column</enum>
@@ -796,7 +796,7 @@
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-DBPM3CURR{{ agebd_env_suffix_upper }}:CALIBRATION-DBPM3-2-PCT-NEW</string>
<string notr="true">AGEBD-DBPM3CURR@@agebd_env_suffix_upper@@:CALIBRATION-DBPM3-2-PCT-NEW</string>
</property>
<property name="foreground">
<color>
@@ -853,7 +853,7 @@
<string>Calculate New Calibration Factor</string>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-DBPM3CURR{{ agebd_env_suffix_upper }}:CONTROL-RECALIBRATE</string>
<string notr="true">AGEBD-DBPM3CURR@@agebd_env_suffix_upper@@:CONTROL-RECALIBRATE</string>
</property>
<property name="label">
<string notr="true">Calculate New Calibration Factor</string>
@@ -872,7 +872,7 @@
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-DBPM3CURR{{ agebd_env_suffix_upper }}:CONTROL-RECALIBRATE-NPTS</string>
<string notr="true">AGEBD-DBPM3CURR@@agebd_env_suffix_upper@@:CONTROL-RECALIBRATE-NPTS</string>
</property>
<property name="precision">
<number>0</number>
@@ -894,7 +894,7 @@
<string>Apply New Calibration Factor</string>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-DBPM3CURR{{ agebd_env_suffix_upper }}:CONTROL-RECALIBRATE-APPLY</string>
<string notr="true">AGEBD-DBPM3CURR@@agebd_env_suffix_upper@@:CONTROL-RECALIBRATE-APPLY</string>
</property>
<property name="label">
<string notr="true">Apply New Calibration Factor</string>
@@ -922,7 +922,7 @@
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-DBPM3CURR{{ agebd_env_suffix_upper }}:CALIBRATION-DBPM3-2-PCT</string>
<string notr="true">AGEBD-DBPM3CURR@@agebd_env_suffix_upper@@:CALIBRATION-DBPM3-2-PCT</string>
</property>
<property name="foreground">
<color>
@@ -1118,7 +1118,7 @@
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-DBPM3CURR{{ agebd_env_suffix_upper }}:ACCUMULATED-BEAM-DOSE-PCT</string>
<string notr="true">AGEBD-DBPM3CURR@@agebd_env_suffix_upper@@:ACCUMULATED-BEAM-DOSE-PCT</string>
</property>
<property name="foreground">
<color>
@@ -1194,7 +1194,7 @@
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-DBPM3CURR{{ agebd_env_suffix_upper }}:ACCUMULATED-BEAM-DOSE-PCT.EGU</string>
<string notr="true">AGEBD-DBPM3CURR@@agebd_env_suffix_upper@@:ACCUMULATED-BEAM-DOSE-PCT.EGU</string>
</property>
<property name="foreground">
<color>
+1 -1
View File
@@ -106,7 +106,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
</rect>
</property>
<property name="macro">
<string>name=Orbit Feedback,alive=ARSGE-CECL-FOFB1:FOFB-OPERATE,panelcmd=A_DI_FOFB_CECL_USER.ui;name=Hor. Tune Feedback,onoff=AGEBD-ALH{{ agebd_env_suffix_upper }}:TUNEFBX-ONOFF,alive=AGEBD-ALH{{ agebd_env_suffix_upper }}:TUNEFBX-ALIVE,panelcmd=A_BD_TuneBump.ui;name=Ver. Tune Feedback,onoff=AGEBD-ALH{{ agebd_env_suffix_upper }}:TUNEFBY-ONOFF,alive=AGEBD-ALH{{ agebd_env_suffix_upper }}:TUNEFBY-ALIVE,panelcmd=A_BD_TuneBump.ui</string>
<string>name=Orbit Feedback,alive=ARSGE-CECL-FOFB1:FOFB-OPERATE,panelcmd=A_DI_FOFB_CECL_USER.ui;name=Hor. Tune Feedback,onoff=AGEBD-ALH@@agebd_env_suffix_upper@@:TUNEFBX-ONOFF,alive=AGEBD-ALH@@agebd_env_suffix_upper@@:TUNEFBX-ALIVE,panelcmd=A_BD_TuneBump.ui;name=Ver. Tune Feedback,onoff=AGEBD-ALH@@agebd_env_suffix_upper@@:TUNEFBY-ONOFF,alive=AGEBD-ALH@@agebd_env_suffix_upper@@:TUNEFBY-ALIVE,panelcmd=A_BD_TuneBump.ui</string>
</property>
<property name="filename" stdset="0">
<string notr="true">A_BD_FeedBackOverview_inc.ui</string>
+11 -11
View File
@@ -66,7 +66,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
<string notr="true">A</string>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:INJECTIONGUARD-GUIRELOAD</string>
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:INJECTIONGUARD-GUIRELOAD</string>
</property>
<property name="eventSignal">
<enum>caCalc::TriggerZeroToOne</enum>
@@ -89,7 +89,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
</font>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }}:CONTROL-MODE</string>
<string notr="true">AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@:CONTROL-MODE</string>
</property>
</widget>
<widget class="caLabel" name="calabel">
@@ -125,7 +125,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }}:CHECK-SUM</string>
<string notr="true">AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@:CHECK-SUM</string>
</property>
<property name="colorMode">
<enum>caLineEdit::Alarm_Default</enum>
@@ -405,7 +405,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
<number>30</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }}:STATUS-SECRET-MASTER</string>
<string notr="true">AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@:STATUS-SECRET-MASTER</string>
</property>
<property name="colorMode">
<enum>caLed::Alarm</enum>
@@ -547,7 +547,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
<set>Qt::AlignCenter</set>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }}:CHECK-SUM-OP</string>
<string notr="true">AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@:CHECK-SUM-OP</string>
</property>
<property name="colorMode">
<enum>caLineEdit::Alarm_Default</enum>
@@ -617,7 +617,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
<set>Qt::AlignCenter</set>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }}:CHECK-SUM-MD</string>
<string notr="true">AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@:CHECK-SUM-MD</string>
</property>
<property name="colorMode">
<enum>caLineEdit::Alarm_Default</enum>
@@ -696,7 +696,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
<set>Qt::AlignCenter</set>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }}:CHECK-SUM-LATCH</string>
<string notr="true">AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@:CHECK-SUM-LATCH</string>
</property>
<property name="colorMode">
<enum>caLineEdit::Alarm_Default</enum>
@@ -724,7 +724,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
<bool>false</bool>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }}:RESET-LATCHES</string>
<string notr="true">AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@:RESET-LATCHES</string>
</property>
<property name="label">
<string notr="true">Reset</string>
@@ -771,7 +771,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
<enum>Qt::ScrollBarAsNeeded</enum>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }}:LOG</string>
<string notr="true">AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@:LOG</string>
</property>
<property name="fontScaleMode" stdset="0">
<enum>caMultiLineString::None</enum>
@@ -790,7 +790,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
<string>Clear Logs</string>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }}:LOG-CLEAR</string>
<string notr="true">AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@:LOG-CLEAR</string>
</property>
<property name="label">
<string notr="true">Clear Logs</string>
@@ -819,7 +819,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }}:LOG-PAUSE</string>
<string notr="true">AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@:LOG-PAUSE</string>
</property>
<property name="background">
<color>
+6 -6
View File
@@ -30,7 +30,7 @@
</size>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }}:CONTROL-BRIDGE-CHECK-$(checknr)</string>
<string notr="true">AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@:CONTROL-BRIDGE-CHECK-$(checknr)</string>
</property>
<property name="background">
<color alpha="0">
@@ -62,7 +62,7 @@
<bool>false</bool>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }}:CHECK-$(checknr)</string>
<string notr="true">AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@:CHECK-$(checknr)</string>
</property>
<property name="colorMode">
<enum>caLed::Alarm</enum>
@@ -81,7 +81,7 @@
<bool>false</bool>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }}:CHECK-$(checknr)-MD</string>
<string notr="true">AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@:CHECK-$(checknr)-MD</string>
</property>
<property name="colorMode">
<enum>caLed::Alarm</enum>
@@ -110,7 +110,7 @@
<bool>true</bool>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }}:CHECK-$(checknr).DESC</string>
<string notr="true">AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@:CHECK-$(checknr).DESC</string>
</property>
<property name="background">
<color alpha="0">
@@ -170,7 +170,7 @@
<bool>false</bool>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }}:CHECK-$(checknr)-LATCH</string>
<string notr="true">AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@:CHECK-$(checknr)-LATCH</string>
</property>
<property name="colorMode">
<enum>caLed::Alarm</enum>
@@ -199,7 +199,7 @@
<number>20</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }}:CONTROL-BRIDGE-CHECK-$(checknr)</string>
<string notr="true">AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@:CONTROL-BRIDGE-CHECK-$(checknr)</string>
</property>
<property name="colorMode">
<enum>caLed::Alarm</enum>
+4 -4
View File
@@ -43,7 +43,7 @@
<string notr="true">A</string>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:MASTER-GUIRELOAD</string>
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:MASTER-GUIRELOAD</string>
</property>
<property name="eventSignal">
<enum>caCalc::TriggerZeroToOne</enum>
@@ -62,7 +62,7 @@
<string>Clear Logs</string>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-MASTER{{ agebd_env_suffix_upper }}:LOG-CLEAR</string>
<string notr="true">AGEBD-MASTER@@agebd_env_suffix_upper@@:LOG-CLEAR</string>
</property>
<property name="label">
<string notr="true">Clear Logs</string>
@@ -94,7 +94,7 @@
<string>Get Systemd Status for each Service</string>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-MASTER{{ agebd_env_suffix_upper }}:GET-SYSTEMD-STATUS</string>
<string notr="true">AGEBD-MASTER@@agebd_env_suffix_upper@@:GET-SYSTEMD-STATUS</string>
</property>
<property name="label">
<string notr="true">Get Systemd Status for each Service</string>
@@ -151,7 +151,7 @@
<bool>true</bool>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-MASTER{{ agebd_env_suffix_upper }}:LOG</string>
<string notr="true">AGEBD-MASTER@@agebd_env_suffix_upper@@:LOG</string>
</property>
<property name="limitsMode">
<enum>caLineEdit::User</enum>
+14 -14
View File
@@ -24,7 +24,7 @@
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:NTURNS-ONOFF</string>
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:NTURNS-ONOFF</string>
</property>
<property name="stackingMode" stdset="0">
<enum>caChoice::Column</enum>
@@ -62,7 +62,7 @@
<string notr="true">A</string>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:NTURNS-GUIRELOAD</string>
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:NTURNS-GUIRELOAD</string>
</property>
<property name="eventSignal">
<enum>caCalc::TriggerZeroToOne</enum>
@@ -202,7 +202,7 @@
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-NTURNS{{ agebd_env_suffix_upper }}:CONTROL-80-NPOINTS</string>
<string notr="true">AGEBD-NTURNS@@agebd_env_suffix_upper@@:CONTROL-80-NPOINTS</string>
</property>
<property name="precisionMode">
<enum>caLineEdit::User</enum>
@@ -218,7 +218,7 @@
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-NTURNS{{ agebd_env_suffix_upper }}:CONTROL-80-MINHEIGHT</string>
<string notr="true">AGEBD-NTURNS@@agebd_env_suffix_upper@@:CONTROL-80-MINHEIGHT</string>
</property>
</widget>
<widget class="caTextEntry" name="catextentry_3">
@@ -231,7 +231,7 @@
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-NTURNS{{ agebd_env_suffix_upper }}:CONTROL-80-MINSEP</string>
<string notr="true">AGEBD-NTURNS@@agebd_env_suffix_upper@@:CONTROL-80-MINSEP</string>
</property>
</widget>
<widget class="caLabel" name="calabel_6">
@@ -292,7 +292,7 @@
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-NTURNS{{ agebd_env_suffix_upper }}:CONTROL-2K-MINSEP</string>
<string notr="true">AGEBD-NTURNS@@agebd_env_suffix_upper@@:CONTROL-2K-MINSEP</string>
</property>
</widget>
<widget class="caTextEntry" name="catextentry_5">
@@ -305,7 +305,7 @@
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-NTURNS{{ agebd_env_suffix_upper }}:CONTROL-2K-MINHEIGHT</string>
<string notr="true">AGEBD-NTURNS@@agebd_env_suffix_upper@@:CONTROL-2K-MINHEIGHT</string>
</property>
</widget>
<widget class="caTextEntry" name="catextentry_6">
@@ -318,7 +318,7 @@
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-NTURNS{{ agebd_env_suffix_upper }}:CONTROL-2K-NPOINTS</string>
<string notr="true">AGEBD-NTURNS@@agebd_env_suffix_upper@@:CONTROL-2K-NPOINTS</string>
</property>
<property name="precisionMode">
<enum>caLineEdit::User</enum>
@@ -388,7 +388,7 @@
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-NTURNS{{ agebd_env_suffix_upper }}:STAGE0-Q-80TURNS</string>
<string notr="true">AGEBD-NTURNS@@agebd_env_suffix_upper@@:STAGE0-Q-80TURNS</string>
</property>
<property name="foreground">
<color>
@@ -448,7 +448,7 @@
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-NTURNS{{ agebd_env_suffix_upper }}:STAGE0-Q-2KTURNS</string>
<string notr="true">AGEBD-NTURNS@@agebd_env_suffix_upper@@:STAGE0-Q-2KTURNS</string>
</property>
<property name="foreground">
<color>
@@ -526,7 +526,7 @@
</rect>
</property>
<property name="channels_1" stdset="0">
<string>AGEBD-NTURNS{{ agebd_env_suffix_upper }}:BPM-WF-ENUMERATE;AGEBD-NTURNS{{ agebd_env_suffix_upper }}:STAGE0-Q-80TURNS-WF</string>
<string>AGEBD-NTURNS@@agebd_env_suffix_upper@@:BPM-WF-ENUMERATE;AGEBD-NTURNS@@agebd_env_suffix_upper@@:STAGE0-Q-80TURNS-WF</string>
</property>
<property name="Style_1">
<enum>caCartesianPlot::Lines</enum>
@@ -542,7 +542,7 @@
</color>
</property>
<property name="channels_2" stdset="0">
<string>AGEBD-NTURNS{{ agebd_env_suffix_upper }}:BPM-WF-ENUMERATE;AGEBD-NTURNS{{ agebd_env_suffix_upper }}:STAGE0-Q-80TURNS-PEAKS</string>
<string>AGEBD-NTURNS@@agebd_env_suffix_upper@@:BPM-WF-ENUMERATE;AGEBD-NTURNS@@agebd_env_suffix_upper@@:STAGE0-Q-80TURNS-PEAKS</string>
</property>
<property name="Style_2">
<enum>caCartesianPlot::Sticks</enum>
@@ -582,7 +582,7 @@
</rect>
</property>
<property name="channels_1" stdset="0">
<string>AGEBD-NTURNS{{ agebd_env_suffix_upper }}:BPM-WF-ENUMERATE;AGEBD-NTURNS{{ agebd_env_suffix_upper }}:STAGE0-Q-2KTURNS-WF</string>
<string>AGEBD-NTURNS@@agebd_env_suffix_upper@@:BPM-WF-ENUMERATE;AGEBD-NTURNS@@agebd_env_suffix_upper@@:STAGE0-Q-2KTURNS-WF</string>
</property>
<property name="Style_1">
<enum>caCartesianPlot::Lines</enum>
@@ -598,7 +598,7 @@
</color>
</property>
<property name="channels_2" stdset="0">
<string>AGEBD-NTURNS{{ agebd_env_suffix_upper }}:BPM-WF-ENUMERATE;AGEBD-NTURNS{{ agebd_env_suffix_upper }}:STAGE0-Q-80TURNS-PEAKS;</string>
<string>AGEBD-NTURNS@@agebd_env_suffix_upper@@:BPM-WF-ENUMERATE;AGEBD-NTURNS@@agebd_env_suffix_upper@@:STAGE0-Q-80TURNS-PEAKS;</string>
</property>
<property name="Style_2">
<enum>caCartesianPlot::Sticks</enum>
+1 -1
View File
@@ -328,7 +328,7 @@
<string notr="true">A</string>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:ORBITBUMP-GUIRELOAD</string>
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:ORBITBUMP-GUIRELOAD</string>
</property>
<property name="eventSignal">
<enum>caCalc::TriggerZeroToOne</enum>
+7 -7
View File
@@ -31,7 +31,7 @@
</font>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }}:BEAMLINE-BEND</string>
<string notr="true">AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@:BEAMLINE-BEND</string>
</property>
</widget>
<widget class="caMenu" name="camenu_2">
@@ -51,7 +51,7 @@
</font>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }}:BEAMLINE-ID</string>
<string notr="true">AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@:BEAMLINE-ID</string>
</property>
</widget>
<widget class="caLineEdit" name="calineedit_87">
@@ -64,7 +64,7 @@
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }}:BEAMLINECALC</string>
<string notr="true">AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@:BEAMLINECALC</string>
</property>
<property name="colorMode">
<enum>caLineEdit::Default</enum>
@@ -86,7 +86,7 @@
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }}:BEAMLINETYPE-BEND</string>
<string notr="true">AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@:BEAMLINETYPE-BEND</string>
</property>
<property name="colorMode">
<enum>caLineEdit::Default</enum>
@@ -108,7 +108,7 @@
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }}:BEAMLINETYPE</string>
<string notr="true">AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@:BEAMLINETYPE</string>
</property>
<property name="colorMode">
<enum>caLineEdit::Default</enum>
@@ -130,7 +130,7 @@
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }}:BEAMLINETYPE-ID</string>
<string notr="true">AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@:BEAMLINETYPE-ID</string>
</property>
<property name="colorMode">
<enum>caLineEdit::Default</enum>
@@ -152,7 +152,7 @@
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }}:BEAMLINE</string>
<string notr="true">AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@:BEAMLINE</string>
</property>
<property name="colorMode">
<enum>caLineEdit::Default</enum>
+20 -20
View File
@@ -24,7 +24,7 @@
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }}:$(sourcepoint)-DELTAX-BPM1</string>
<string notr="true">AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@:$(sourcepoint)-DELTAX-BPM1</string>
</property>
</widget>
<widget class="caLineEdit" name="calineedit_2">
@@ -37,7 +37,7 @@
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }}:$(sourcepoint)-DELTAY-BPM1</string>
<string notr="true">AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@:$(sourcepoint)-DELTAY-BPM1</string>
</property>
</widget>
<widget class="caLineEdit" name="calineedit_3">
@@ -50,7 +50,7 @@
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }}:$(sourcepoint)-DELTAX-BPM2</string>
<string notr="true">AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@:$(sourcepoint)-DELTAX-BPM2</string>
</property>
</widget>
<widget class="caLineEdit" name="calineedit_4">
@@ -63,7 +63,7 @@
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }}:$(sourcepoint)-DELTAY-BPM2</string>
<string notr="true">AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@:$(sourcepoint)-DELTAY-BPM2</string>
</property>
</widget>
<widget class="caSpinbox" name="caspinbox_2">
@@ -82,7 +82,7 @@
<number>0</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }}:$(sourcepoint)-OFFSET-X</string>
<string notr="true">AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@:$(sourcepoint)-OFFSET-X</string>
</property>
<property name="colorMode">
<enum>caSpinbox::Alarm</enum>
@@ -116,7 +116,7 @@
<number>0</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }}:$(sourcepoint)-OFFSET-XP</string>
<string notr="true">AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@:$(sourcepoint)-OFFSET-XP</string>
</property>
<property name="colorMode">
<enum>caSpinbox::Alarm</enum>
@@ -150,7 +150,7 @@
<number>0</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }}:$(sourcepoint)-OFFSET-YP</string>
<string notr="true">AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@:$(sourcepoint)-OFFSET-YP</string>
</property>
<property name="colorMode">
<enum>caSpinbox::Alarm</enum>
@@ -184,7 +184,7 @@
<number>0</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }}:$(sourcepoint)-OFFSET-Y</string>
<string notr="true">AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@:$(sourcepoint)-OFFSET-Y</string>
</property>
<property name="colorMode">
<enum>caSpinbox::Alarm</enum>
@@ -212,7 +212,7 @@
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }}:$(sourcepoint)-DELTAX-BPM4</string>
<string notr="true">AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@:$(sourcepoint)-DELTAX-BPM4</string>
</property>
</widget>
<widget class="caLineEdit" name="calineedit_6">
@@ -225,7 +225,7 @@
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }}:$(sourcepoint)-DELTAY-BPM3</string>
<string notr="true">AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@:$(sourcepoint)-DELTAY-BPM3</string>
</property>
</widget>
<widget class="caLineEdit" name="calineedit_7">
@@ -238,7 +238,7 @@
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }}:$(sourcepoint)-DELTAY-BPM4</string>
<string notr="true">AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@:$(sourcepoint)-DELTAY-BPM4</string>
</property>
</widget>
<widget class="caLineEdit" name="calineedit_8">
@@ -251,7 +251,7 @@
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }}:$(sourcepoint)-DELTAX-BPM3</string>
<string notr="true">AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@:$(sourcepoint)-DELTAX-BPM3</string>
</property>
</widget>
<widget class="caLineEdit" name="calineedit_9">
@@ -264,7 +264,7 @@
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }}:$(sourcepoint)-BPM1</string>
<string notr="true">AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@:$(sourcepoint)-BPM1</string>
</property>
</widget>
<widget class="caLineEdit" name="calineedit_10">
@@ -277,7 +277,7 @@
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }}:$(sourcepoint)-BPM2</string>
<string notr="true">AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@:$(sourcepoint)-BPM2</string>
</property>
</widget>
<widget class="caLineEdit" name="calineedit_11">
@@ -290,7 +290,7 @@
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }}:$(sourcepoint)-BPM3</string>
<string notr="true">AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@:$(sourcepoint)-BPM3</string>
</property>
</widget>
<widget class="caLineEdit" name="calineedit_12">
@@ -303,7 +303,7 @@
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }}:$(sourcepoint)-BPM4</string>
<string notr="true">AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@:$(sourcepoint)-BPM4</string>
</property>
</widget>
<widget class="caSpinbox" name="caspinbox_6">
@@ -475,7 +475,7 @@
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }}:$(sourcepoint)-OFFSET-X-TOTAL</string>
<string notr="true">AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@:$(sourcepoint)-OFFSET-X-TOTAL</string>
</property>
<property name="colorMode">
<enum>caLineEdit::Alarm_Default</enum>
@@ -497,7 +497,7 @@
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }}:$(sourcepoint)-OFFSET-Y-TOTAL</string>
<string notr="true">AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@:$(sourcepoint)-OFFSET-Y-TOTAL</string>
</property>
<property name="colorMode">
<enum>caLineEdit::Alarm_Default</enum>
@@ -516,7 +516,7 @@
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }}:$(sourcepoint)-OFFSET-YP-TOTAL</string>
<string notr="true">AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@:$(sourcepoint)-OFFSET-YP-TOTAL</string>
</property>
<property name="colorMode">
<enum>caLineEdit::Alarm_Default</enum>
@@ -535,7 +535,7 @@
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }}:$(sourcepoint)-OFFSET-XP-TOTAL</string>
<string notr="true">AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@:$(sourcepoint)-OFFSET-XP-TOTAL</string>
</property>
<property name="colorMode">
<enum>caLineEdit::Alarm_Default</enum>
+4 -4
View File
@@ -37,7 +37,7 @@
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }}:$(sourcepoint)-OFFSET-X-TOTAL</string>
<string notr="true">AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@:$(sourcepoint)-OFFSET-X-TOTAL</string>
</property>
<property name="colorMode">
<enum>caLineEdit::Alarm_Default</enum>
@@ -59,7 +59,7 @@
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }}:$(sourcepoint)-OFFSET-XP-TOTAL</string>
<string notr="true">AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@:$(sourcepoint)-OFFSET-XP-TOTAL</string>
</property>
<property name="colorMode">
<enum>caLineEdit::Alarm_Default</enum>
@@ -78,7 +78,7 @@
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }}:$(sourcepoint)-OFFSET-Y-TOTAL</string>
<string notr="true">AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@:$(sourcepoint)-OFFSET-Y-TOTAL</string>
</property>
<property name="colorMode">
<enum>caLineEdit::Alarm_Default</enum>
@@ -97,7 +97,7 @@
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }}:$(sourcepoint)-OFFSET-YP-TOTAL</string>
<string notr="true">AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@:$(sourcepoint)-OFFSET-YP-TOTAL</string>
</property>
<property name="colorMode">
<enum>caLineEdit::Alarm_Default</enum>
+24 -24
View File
@@ -52,7 +52,7 @@
<string notr="true">A</string>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:POSTMORTEMLOG-GUIRELOAD</string>
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:POSTMORTEMLOG-GUIRELOAD</string>
</property>
<property name="eventSignal">
<enum>caCalc::TriggerZeroToOne</enum>
@@ -74,7 +74,7 @@
<bool>true</bool>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-MASTER{{ agebd_env_suffix_upper }}:LOG</string>
<string notr="true">AGEBD-MASTER@@agebd_env_suffix_upper@@:LOG</string>
</property>
</widget>
<widget class="QTabWidget" name="tabWidget">
@@ -106,7 +106,7 @@
<string notr="true">Horizontal Tune (nominal: Qx = 39.37)</string>
</property>
<property name="channels_1" stdset="0">
<string>AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-TIME;AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-QX</string>
<string>AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-TIME;AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-QX</string>
</property>
<property name="color_1">
<color>
@@ -179,7 +179,7 @@
<string notr="true">Vertival Tune (nominal: Qy = 15.22)</string>
</property>
<property name="channels_1" stdset="0">
<string>AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-TIME;AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-QY</string>
<string>AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-TIME;AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-QY</string>
</property>
<property name="color_1">
<color>
@@ -252,7 +252,7 @@
<string notr="true">Vertival Beam Size (nominal: Sig_y = 10)</string>
</property>
<property name="channels_1" stdset="0">
<string>AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-TIME;AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-X01DD-SIGY</string>
<string>AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-TIME;AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-X01DD-SIGY</string>
</property>
<property name="color_1">
<color>
@@ -262,7 +262,7 @@
</color>
</property>
<property name="channels_2" stdset="0">
<string>AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-TIME;AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-X08DB-SIGY</string>
<string>AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-TIME;AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-X08DB-SIGY</string>
</property>
<property name="Style_2">
<enum>caCartesianPlot::Lines</enum>
@@ -332,7 +332,7 @@
<string notr="true">Horizontal Beam Size (nominal: Sig_x = 9)</string>
</property>
<property name="channels_1" stdset="0">
<string>AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-TIME;AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-X01DD-SIGX</string>
<string>AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-TIME;AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-X01DD-SIGX</string>
</property>
<property name="color_1">
<color>
@@ -342,7 +342,7 @@
</color>
</property>
<property name="channels_2" stdset="0">
<string>AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-TIME;AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-X08DB-SIGX</string>
<string>AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-TIME;AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-X08DB-SIGX</string>
</property>
<property name="Style_2">
<enum>caCartesianPlot::Lines</enum>
@@ -412,7 +412,7 @@
<string notr="true">Stored Beam Current</string>
</property>
<property name="channels_1" stdset="0">
<string>AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-TIME;AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-CURRPCT</string>
<string>AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-TIME;AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-CURRPCT</string>
</property>
<property name="color_1">
<color>
@@ -422,7 +422,7 @@
</color>
</property>
<property name="channels_2" stdset="0">
<string>AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-TIME;AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-CURRBPM</string>
<string>AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-TIME;AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-CURRBPM</string>
</property>
<property name="Style_2">
<enum>caCartesianPlot::Lines</enum>
@@ -492,7 +492,7 @@
<string notr="true">Beam Lifetime</string>
</property>
<property name="channels_1" stdset="0">
<string>AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-TIME;AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-TAUBPM</string>
<string>AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-TIME;AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-TAUBPM</string>
</property>
<property name="Style_1">
<enum>caCartesianPlot::FatDots</enum>
@@ -505,7 +505,7 @@
</color>
</property>
<property name="channels_2" stdset="0">
<string>AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-TIME;AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-TAUPCT</string>
<string>AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-TIME;AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-TAUPCT</string>
</property>
<property name="Style_2">
<enum>caCartesianPlot::FatDots</enum>
@@ -580,7 +580,7 @@
<string notr="true">Vertival Beam Size (nominal: Sig_y = 10)</string>
</property>
<property name="channels_1" stdset="0">
<string>AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-TIME;AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-X01DD-SIGY-LAST</string>
<string>AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-TIME;AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-X01DD-SIGY-LAST</string>
</property>
<property name="color_1">
<color>
@@ -590,7 +590,7 @@
</color>
</property>
<property name="channels_2" stdset="0">
<string>AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-TIME;AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-X08DB-SIGY-LAST</string>
<string>AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-TIME;AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-X08DB-SIGY-LAST</string>
</property>
<property name="Style_2">
<enum>caCartesianPlot::Lines</enum>
@@ -660,7 +660,7 @@
<string notr="true">Stored Beam Current</string>
</property>
<property name="channels_1" stdset="0">
<string>AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-TIME;AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-CURRPCT-LAST</string>
<string>AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-TIME;AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-CURRPCT-LAST</string>
</property>
<property name="color_1">
<color>
@@ -670,7 +670,7 @@
</color>
</property>
<property name="channels_2" stdset="0">
<string>AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-TIME;AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-CURRBPM-LAST</string>
<string>AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-TIME;AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-CURRBPM-LAST</string>
</property>
<property name="Style_2">
<enum>caCartesianPlot::Lines</enum>
@@ -740,7 +740,7 @@
<string notr="true">Horizontal Tune (nominal: Qx = 39.37)</string>
</property>
<property name="channels_1" stdset="0">
<string>AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-TIME;AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-QX-LAST</string>
<string>AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-TIME;AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-QX-LAST</string>
</property>
<property name="color_1">
<color>
@@ -813,7 +813,7 @@
<string notr="true">Horizontal Beam Size (nominal: Sig_x = 9)</string>
</property>
<property name="channels_1" stdset="0">
<string>AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-TIME;AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-X01DD-SIGX-LAST</string>
<string>AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-TIME;AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-X01DD-SIGX-LAST</string>
</property>
<property name="color_1">
<color>
@@ -823,7 +823,7 @@
</color>
</property>
<property name="channels_2" stdset="0">
<string>AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-TIME;AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-X08DB-SIGX-LAST</string>
<string>AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-TIME;AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-X08DB-SIGX-LAST</string>
</property>
<property name="Style_2">
<enum>caCartesianPlot::Lines</enum>
@@ -893,7 +893,7 @@
<string notr="true">Vertival Tune (nominal: Qy = 15.22)</string>
</property>
<property name="channels_1" stdset="0">
<string>AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-TIME;AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-QY-LAST</string>
<string>AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-TIME;AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-QY-LAST</string>
</property>
<property name="color_1">
<color>
@@ -966,7 +966,7 @@
<string notr="true">Beam Lifetime</string>
</property>
<property name="channels_1" stdset="0">
<string>AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-TIME;AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-TAUBPM-LAST</string>
<string>AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-TIME;AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-TAUBPM-LAST</string>
</property>
<property name="Style_1">
<enum>caCartesianPlot::FatDots</enum>
@@ -979,7 +979,7 @@
</color>
</property>
<property name="channels_2" stdset="0">
<string>AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-TIME;AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-TAUPCT-LAST</string>
<string>AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-TIME;AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-TAUPCT-LAST</string>
</property>
<property name="Style_2">
<enum>caCartesianPlot::FatDots</enum>
@@ -1072,7 +1072,7 @@
<string>Update Logs</string>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-MASTER{{ agebd_env_suffix_upper }}:POSTMORTEMLOG-LOGS-REQ</string>
<string notr="true">AGEBD-MASTER@@agebd_env_suffix_upper@@:POSTMORTEMLOG-LOGS-REQ</string>
</property>
<property name="label">
<string notr="true">Update Logs</string>
@@ -1104,7 +1104,7 @@
<string>Test Trigger Post Mortem</string>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:TEST</string>
<string notr="true">AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:TEST</string>
</property>
<property name="label">
<string notr="true">Test Trigger Post Mortem</string>
+42 -42
View File
@@ -24,7 +24,7 @@
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:SCRUBBING-ONOFF</string>
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:SCRUBBING-ONOFF</string>
</property>
<property name="stackingMode" stdset="0">
<enum>caChoice::Column</enum>
@@ -59,7 +59,7 @@
<string notr="true"/>
</property>
<property name="channels" stdset="0">
<string>ARIVA-VMAVE:PRESS-MAX;ARIVA-VMAVE-FE:PRESS-MAX;ARIVA-VMAVE-ALL:PRESS-MAX;AGEBD-SCRUBBING{{ agebd_env_suffix_upper }}:CONTROL-VACUUM-MAX-PLOT;AGEBD-SCRUBBING{{ agebd_env_suffix_upper }}:CONTROL-VACUUM-MIN-PLOT;AGEBD-SCRUBBING{{ agebd_env_suffix_upper }}:CONTROL-VACUUM-DYN-PLOT</string>
<string>ARIVA-VMAVE:PRESS-MAX;ARIVA-VMAVE-FE:PRESS-MAX;ARIVA-VMAVE-ALL:PRESS-MAX;AGEBD-SCRUBBING@@agebd_env_suffix_upper@@:CONTROL-VACUUM-MAX-PLOT;AGEBD-SCRUBBING@@agebd_env_suffix_upper@@:CONTROL-VACUUM-MIN-PLOT;AGEBD-SCRUBBING@@agebd_env_suffix_upper@@:CONTROL-VACUUM-DYN-PLOT</string>
</property>
<property name="units">
<enum>caStripPlot::Second</enum>
@@ -411,7 +411,7 @@
<string notr="true">A</string>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:SCRUBBING-GUIRELOAD</string>
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:SCRUBBING-GUIRELOAD</string>
</property>
<property name="eventSignal">
<enum>caCalc::TriggerOneToZero</enum>
@@ -427,7 +427,7 @@
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:SCRUBBING-INFO</string>
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:SCRUBBING-INFO</string>
</property>
<property name="colorMode">
<enum>caLineEdit::Alarm_Default</enum>
@@ -449,7 +449,7 @@
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-SCRUBBING{{ agebd_env_suffix_upper }}:TOPUP-DELTAT</string>
<string notr="true">AGEBD-SCRUBBING@@agebd_env_suffix_upper@@:TOPUP-DELTAT</string>
</property>
<property name="colorMode">
<enum>caLineEdit::Default</enum>
@@ -474,7 +474,7 @@
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-SCRUBBING{{ agebd_env_suffix_upper }}:TOPUP-TAU</string>
<string notr="true">AGEBD-SCRUBBING@@agebd_env_suffix_upper@@:TOPUP-TAU</string>
</property>
<property name="colorMode">
<enum>caLineEdit::Default</enum>
@@ -568,7 +568,7 @@
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-SCRUBBING{{ agebd_env_suffix_upper }}:TOPUP-DELTAI</string>
<string notr="true">AGEBD-SCRUBBING@@agebd_env_suffix_upper@@:TOPUP-DELTAI</string>
</property>
<property name="colorMode">
<enum>caLineEdit::Default</enum>
@@ -1913,7 +1913,7 @@
<number>22</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }}:STATUS-SECRET-MASTER</string>
<string notr="true">AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@:STATUS-SECRET-MASTER</string>
</property>
<property name="colorMode">
<enum>caLed::Alarm</enum>
@@ -2937,7 +2937,7 @@ AGETI-CVME-MASTER-TMA:Evt-LI-Gun-EVRCount-I</string>
<number>0</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-SCRUBBING{{ agebd_env_suffix_upper }}:WARMUPCYCLES-BOIN-SP.VAL</string>
<string notr="true">AGEBD-SCRUBBING@@agebd_env_suffix_upper@@:WARMUPCYCLES-BOIN-SP.VAL</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -2962,7 +2962,7 @@ AGETI-CVME-MASTER-TMA:Evt-LI-Gun-EVRCount-I</string>
<number>0</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-SCRUBBING{{ agebd_env_suffix_upper }}:WARMUPCYCLES-BOMB-SP.VAL</string>
<string notr="true">AGEBD-SCRUBBING@@agebd_env_suffix_upper@@:WARMUPCYCLES-BOMB-SP.VAL</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -2987,7 +2987,7 @@ AGETI-CVME-MASTER-TMA:Evt-LI-Gun-EVRCount-I</string>
<number>0</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-SCRUBBING{{ agebd_env_suffix_upper }}:WARMUPCYCLES-BOME-SP.VAL</string>
<string notr="true">AGEBD-SCRUBBING@@agebd_env_suffix_upper@@:WARMUPCYCLES-BOME-SP.VAL</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -3012,7 +3012,7 @@ AGETI-CVME-MASTER-TMA:Evt-LI-Gun-EVRCount-I</string>
<number>0</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-SCRUBBING{{ agebd_env_suffix_upper }}:WARMUPCYCLES-BOEX-SP.VAL</string>
<string notr="true">AGEBD-SCRUBBING@@agebd_env_suffix_upper@@:WARMUPCYCLES-BOEX-SP.VAL</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -3037,7 +3037,7 @@ AGETI-CVME-MASTER-TMA:Evt-LI-Gun-EVRCount-I</string>
<number>0</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-SCRUBBING{{ agebd_env_suffix_upper }}:WARMUPCYCLES-SRIN-SP.VAL</string>
<string notr="true">AGEBD-SCRUBBING@@agebd_env_suffix_upper@@:WARMUPCYCLES-SRIN-SP.VAL</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -3099,7 +3099,7 @@ Setpoint</string>
<bool>true</bool>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-SCRUBBING{{ agebd_env_suffix_upper }}:WARMUPCYCLES-BOMB-RB.VAL</string>
<string notr="true">AGEBD-SCRUBBING@@agebd_env_suffix_upper@@:WARMUPCYCLES-BOMB-RB.VAL</string>
</property>
<property name="background">
<color>
@@ -3141,7 +3141,7 @@ Setpoint</string>
<bool>true</bool>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-SCRUBBING{{ agebd_env_suffix_upper }}:WARMUPCYCLES-BOIN-RB.VAL</string>
<string notr="true">AGEBD-SCRUBBING@@agebd_env_suffix_upper@@:WARMUPCYCLES-BOIN-RB.VAL</string>
</property>
<property name="background">
<color>
@@ -3183,7 +3183,7 @@ Setpoint</string>
<bool>true</bool>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-SCRUBBING{{ agebd_env_suffix_upper }}:WARMUPCYCLES-BOME-RB.VAL</string>
<string notr="true">AGEBD-SCRUBBING@@agebd_env_suffix_upper@@:WARMUPCYCLES-BOME-RB.VAL</string>
</property>
<property name="background">
<color>
@@ -3225,7 +3225,7 @@ Setpoint</string>
<bool>true</bool>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-SCRUBBING{{ agebd_env_suffix_upper }}:WARMUPCYCLES-SRIN-RB.VAL</string>
<string notr="true">AGEBD-SCRUBBING@@agebd_env_suffix_upper@@:WARMUPCYCLES-SRIN-RB.VAL</string>
</property>
<property name="background">
<color>
@@ -3267,7 +3267,7 @@ Setpoint</string>
<bool>true</bool>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-SCRUBBING{{ agebd_env_suffix_upper }}:WARMUPCYCLES-BOEX-RB.VAL</string>
<string notr="true">AGEBD-SCRUBBING@@agebd_env_suffix_upper@@:WARMUPCYCLES-BOEX-RB.VAL</string>
</property>
<property name="background">
<color>
@@ -3394,7 +3394,7 @@ Remaining</string>
<string notr="true"/>
</property>
<property name="channels_1" stdset="0">
<string>;AGEBD-TIMING{{ agebd_env_suffix_upper }}:TARGET-BUCKET</string>
<string>;AGEBD-TIMING@@agebd_env_suffix_upper@@:TARGET-BUCKET</string>
</property>
<property name="Style_1">
<enum>caCartesianPlot::Sticks</enum>
@@ -3491,7 +3491,7 @@ Remaining</string>
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:GO</string>
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:GO</string>
</property>
<property name="trueColor">
<color>
@@ -3535,7 +3535,7 @@ Remaining</string>
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-FILLPATTERN-string.VAL</string>
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-FILLPATTERN-string.VAL</string>
</property>
<property name="precision">
<number>0</number>
@@ -3567,7 +3567,7 @@ Remaining</string>
</font>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:FPFB-MODE</string>
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:FPFB-MODE</string>
</property>
</widget>
<widget class="caMessageButton" name="camessagebutton_39">
@@ -3591,7 +3591,7 @@ Remaining</string>
<enum>EPushButton::WidthAndHeight</enum>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:ZERO-TARGET-BUCKET</string>
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:ZERO-TARGET-BUCKET</string>
</property>
<property name="label">
<string notr="true">Reset</string>
@@ -3639,7 +3639,7 @@ Remaining</string>
<bool>true</bool>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CURRENT-THRESHOLD</string>
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CURRENT-THRESHOLD</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -3690,7 +3690,7 @@ Remaining</string>
<number>0</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:FPFB-NTH</string>
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:FPFB-NTH</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -3754,7 +3754,7 @@ Remaining</string>
<number>1</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-SCRUBBING{{ agebd_env_suffix_upper }}:CONTROL-CURRENT-MIN</string>
<string notr="true">AGEBD-SCRUBBING@@agebd_env_suffix_upper@@:CONTROL-CURRENT-MIN</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -3779,7 +3779,7 @@ Remaining</string>
<number>1</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-SCRUBBING{{ agebd_env_suffix_upper }}:CONTROL-CURRENT-MAX</string>
<string notr="true">AGEBD-SCRUBBING@@agebd_env_suffix_upper@@:CONTROL-CURRENT-MAX</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -3850,7 +3850,7 @@ Remaining</string>
<number>1</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-SCRUBBING{{ agebd_env_suffix_upper }}:CONTROL-VACUUM-MIN</string>
<string notr="true">AGEBD-SCRUBBING@@agebd_env_suffix_upper@@:CONTROL-VACUUM-MIN</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -3921,7 +3921,7 @@ Remaining</string>
<number>1</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-SCRUBBING{{ agebd_env_suffix_upper }}:CONTROL-VACUUM-MAX</string>
<string notr="true">AGEBD-SCRUBBING@@agebd_env_suffix_upper@@:CONTROL-VACUUM-MAX</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -3969,7 +3969,7 @@ Remaining</string>
<number>0</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-SCRUBBING{{ agebd_env_suffix_upper }}:CONTROL-TIME-MAX</string>
<string notr="true">AGEBD-SCRUBBING@@agebd_env_suffix_upper@@:CONTROL-TIME-MAX</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -3994,7 +3994,7 @@ Remaining</string>
<number>0</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-SCRUBBING{{ agebd_env_suffix_upper }}:CONTROL-TIME-MIN</string>
<string notr="true">AGEBD-SCRUBBING@@agebd_env_suffix_upper@@:CONTROL-TIME-MIN</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -4058,7 +4058,7 @@ Remaining</string>
<number>0</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-SCRUBBING{{ agebd_env_suffix_upper }}:CONTROL-GUNGRID-FPFB</string>
<string notr="true">AGEBD-SCRUBBING@@agebd_env_suffix_upper@@:CONTROL-GUNGRID-FPFB</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -4083,7 +4083,7 @@ Remaining</string>
<number>0</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-SCRUBBING{{ agebd_env_suffix_upper }}:CONTROL-GUNGRID-ACCUM</string>
<string notr="true">AGEBD-SCRUBBING@@agebd_env_suffix_upper@@:CONTROL-GUNGRID-ACCUM</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -4171,7 +4171,7 @@ Remaining</string>
<string notr="true"/>
</property>
<property name="channels" stdset="0">
<string>ARS07-DPCT-0000:CURR;AGEBD-SCRUBBING{{ agebd_env_suffix_upper }}:CONTROL-CURRENT-MAX;AGEBD-SCRUBBING{{ agebd_env_suffix_upper }}:CONTROL-CURRENT-MIN</string>
<string>ARS07-DPCT-0000:CURR;AGEBD-SCRUBBING@@agebd_env_suffix_upper@@:CONTROL-CURRENT-MAX;AGEBD-SCRUBBING@@agebd_env_suffix_upper@@:CONTROL-CURRENT-MIN</string>
</property>
<property name="units">
<enum>caStripPlot::Second</enum>
@@ -4398,7 +4398,7 @@ Remaining</string>
<set>Qt::AlignBottom|Qt::AlignRight|Qt::AlignTrailing</set>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-PARAMS{{ agebd_env_suffix_upper }}:LIFETIME</string>
<string notr="true">AGEBD-PARAMS@@agebd_env_suffix_upper@@:LIFETIME</string>
</property>
<property name="foreground">
<color>
@@ -4448,7 +4448,7 @@ Remaining</string>
</font>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-PARAMS{{ agebd_env_suffix_upper }}:TRANSMISSION</string>
<string notr="true">AGEBD-PARAMS@@agebd_env_suffix_upper@@:TRANSMISSION</string>
</property>
<property name="foreground">
<color>
@@ -4521,7 +4521,7 @@ Remaining</string>
</property>
<property name="channel" stdset="0">
<string notr="true">
AGEBD-SCRUBBING{{ agebd_env_suffix_upper }}:CONTROL-VACUUM-DYN-FRAC</string>
AGEBD-SCRUBBING@@agebd_env_suffix_upper@@:CONTROL-VACUUM-DYN-FRAC</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -4559,7 +4559,7 @@ AGEBD-SCRUBBING{{ agebd_env_suffix_upper }}:CONTROL-VACUUM-DYN-FRAC</string>
</font>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-SCRUBBING{{ agebd_env_suffix_upper }}:CONTROL-SCRUB</string>
<string notr="true">AGEBD-SCRUBBING@@agebd_env_suffix_upper@@:CONTROL-SCRUB</string>
</property>
</widget>
<widget class="caLabel" name="calabel_14">
@@ -4611,7 +4611,7 @@ AGEBD-SCRUBBING{{ agebd_env_suffix_upper }}:CONTROL-VACUUM-DYN-FRAC</string>
<string notr="true">A&gt;3</string>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-SCRUBBING{{ agebd_env_suffix_upper }}:CONTROL-SCRUB</string>
<string notr="true">AGEBD-SCRUBBING@@agebd_env_suffix_upper@@:CONTROL-SCRUB</string>
</property>
<widget class="caLineEdit" name="calineedit_22">
<property name="geometry">
@@ -4674,7 +4674,7 @@ AGEBD-SCRUBBING{{ agebd_env_suffix_upper }}:CONTROL-VACUUM-DYN-FRAC</string>
<number>0</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-SCRUBBING{{ agebd_env_suffix_upper }}:MBFBY-GAIN-SP.VAL</string>
<string notr="true">AGEBD-SCRUBBING@@agebd_env_suffix_upper@@:MBFBY-GAIN-SP.VAL</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -4776,7 +4776,7 @@ AGEBD-SCRUBBING{{ agebd_env_suffix_upper }}:CONTROL-VACUUM-DYN-FRAC</string>
<number>0</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-SCRUBBING{{ agebd_env_suffix_upper }}:MBFBX-GAIN-SP.VAL</string>
<string notr="true">AGEBD-SCRUBBING@@agebd_env_suffix_upper@@:MBFBX-GAIN-SP.VAL</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -5062,7 +5062,7 @@ ARSGE-MBFBT-AMP-02:SET-ON-OFF</string>
<string notr="true">A&lt;4 &amp; A&gt;0</string>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-SCRUBBING{{ agebd_env_suffix_upper }}:CONTROL-SCRUB</string>
<string notr="true">AGEBD-SCRUBBING@@agebd_env_suffix_upper@@:CONTROL-SCRUB</string>
</property>
<widget class="caSpinbox" name="caspinbox_21">
<property name="geometry">
+12 -12
View File
@@ -71,7 +71,7 @@ caLabel[statusTip="Operation"]{
<string notr="true">A</string>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:MASTER-GUIRELOAD</string>
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:MASTER-GUIRELOAD</string>
</property>
<property name="eventSignal">
<enum>caCalc::TriggerZeroToOne</enum>
@@ -106,7 +106,7 @@ caLabel[statusTip="Operation"]{
<string notr="true">!A</string>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:MASTER-ONOFF</string>
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:MASTER-ONOFF</string>
</property>
</widget>
<widget class="QTabWidget" name="tabWidget">
@@ -586,7 +586,7 @@ caLabel[statusTip="Operation"]{
<bool>false</bool>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:MASTER-ALIVE</string>
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:MASTER-ALIVE</string>
</property>
<property name="colorMode">
<enum>caLed::Alarm</enum>
@@ -602,7 +602,7 @@ caLabel[statusTip="Operation"]{
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:MASTER-STARTTIME</string>
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:MASTER-STARTTIME</string>
</property>
<property name="colorMode">
<enum>caLineEdit::Default</enum>
@@ -624,7 +624,7 @@ caLabel[statusTip="Operation"]{
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:MASTER-STATUS</string>
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:MASTER-STATUS</string>
</property>
<property name="colorMode">
<enum>caLineEdit::Default</enum>
@@ -646,7 +646,7 @@ caLabel[statusTip="Operation"]{
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:MASTER-VERSION</string>
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:MASTER-VERSION</string>
</property>
<property name="colorMode">
<enum>caLineEdit::Default</enum>
@@ -668,7 +668,7 @@ caLabel[statusTip="Operation"]{
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:MASTER-ONOFF</string>
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:MASTER-ONOFF</string>
</property>
<property name="stackingMode" stdset="0">
<enum>caChoice::Column</enum>
@@ -717,7 +717,7 @@ caLabel[statusTip="Operation"]{
<bool>false</bool>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:MASTER-ONOFF-RB</string>
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:MASTER-ONOFF-RB</string>
</property>
<property name="colorMode">
<enum>caLed::Alarm</enum>
@@ -763,7 +763,7 @@ caLabel[statusTip="Operation"]{
<bool>false</bool>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-CPCL-MASTER{{ agebd_env_suffix_upper }}:STATUS</string>
<string notr="true">AGEBD-CPCL-MASTER@@agebd_env_suffix_upper@@:STATUS</string>
</property>
<property name="colorMode">
<enum>caLed::Alarm</enum>
@@ -1040,7 +1040,7 @@ caLabel[statusTip="Operation"]{
<enum>EPushButton::None</enum>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-MASTER{{ agebd_env_suffix_upper }}:MASTER-LOGS-REQ</string>
<string notr="true">AGEBD-MASTER@@agebd_env_suffix_upper@@:MASTER-LOGS-REQ</string>
</property>
<property name="label">
<string notr="true">Logs</string>
@@ -1106,7 +1106,7 @@ caLabel[statusTip="Operation"]{
<bool>false</bool>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:MASTER-GUIRELOAD</string>
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:MASTER-GUIRELOAD</string>
</property>
<property name="label">
<string notr="true">Reload</string>
@@ -1172,7 +1172,7 @@ caLabel[statusTip="Operation"]{
<enum>EPushButton::None</enum>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-CPCL-MASTER{{ agebd_env_suffix_upper }}:RESTART</string>
<string notr="true">AGEBD-CPCL-MASTER@@agebd_env_suffix_upper@@:RESTART</string>
</property>
<property name="label">
<string notr="true">↺</string>
+11 -11
View File
@@ -162,7 +162,7 @@
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:$(service)-STATUS</string>
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:$(service)-STATUS</string>
</property>
<property name="colorMode">
<enum>caLineEdit::Default</enum>
@@ -195,7 +195,7 @@
<enum>EPushButton::None</enum>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-MASTER{{ agebd_env_suffix_upper }}:$(service)-RESTART-REQ</string>
<string notr="true">AGEBD-MASTER@@agebd_env_suffix_upper@@:$(service)-RESTART-REQ</string>
</property>
<property name="label">
<string notr="true">Restart</string>
@@ -227,7 +227,7 @@
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:$(service)-VERSION</string>
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:$(service)-VERSION</string>
</property>
<property name="colorMode">
<enum>caLineEdit::Default</enum>
@@ -249,7 +249,7 @@
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:$(service)-ONOFF</string>
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:$(service)-ONOFF</string>
</property>
<property name="stackingMode" stdset="0">
<enum>caChoice::Column</enum>
@@ -268,7 +268,7 @@
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:$(service)-STARTTIME</string>
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:$(service)-STARTTIME</string>
</property>
<property name="colorMode">
<enum>caLineEdit::Default</enum>
@@ -320,7 +320,7 @@
<bool>false</bool>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:$(service)-ALIVE</string>
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:$(service)-ALIVE</string>
</property>
<property name="colorMode">
<enum>caLed::Alarm</enum>
@@ -347,7 +347,7 @@
<enum>EPushButton::None</enum>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-MASTER{{ agebd_env_suffix_upper }}:$(service)-LOGS-REQ</string>
<string notr="true">AGEBD-MASTER@@agebd_env_suffix_upper@@:$(service)-LOGS-REQ</string>
</property>
<property name="label">
<string notr="true">Logs</string>
@@ -409,7 +409,7 @@
<bool>false</bool>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:$(service)-ONOFF-RB</string>
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:$(service)-ONOFF-RB</string>
</property>
<property name="colorMode">
<enum>caLed::Alarm</enum>
@@ -536,7 +536,7 @@
<enum>EPushButton::None</enum>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-MASTER{{ agebd_env_suffix_upper }}:$(service)-START-REQ</string>
<string notr="true">AGEBD-MASTER@@agebd_env_suffix_upper@@:$(service)-START-REQ</string>
</property>
<property name="label">
<string notr="true">Start</string>
@@ -579,7 +579,7 @@
<enum>EPushButton::None</enum>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-MASTER{{ agebd_env_suffix_upper }}:$(service)-ABORT-REQ</string>
<string notr="true">AGEBD-MASTER@@agebd_env_suffix_upper@@:$(service)-ABORT-REQ</string>
</property>
<property name="label">
<string notr="true">KILL</string>
@@ -686,7 +686,7 @@
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:$(service)-GUIRELOAD</string>
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:$(service)-GUIRELOAD</string>
</property>
<property name="label">
<string notr="true">Reload</string>
+9 -9
View File
@@ -78,7 +78,7 @@
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TAUBPM{{ agebd_env_suffix_upper }}:TAU</string>
<string notr="true">AGEBD-TAUBPM@@agebd_env_suffix_upper@@:TAU</string>
</property>
<property name="foreground">
<color>
@@ -138,7 +138,7 @@
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TAUBPM{{ agebd_env_suffix_upper }}:TAU-ERR</string>
<string notr="true">AGEBD-TAUBPM@@agebd_env_suffix_upper@@:TAU-ERR</string>
</property>
<property name="foreground">
<color>
@@ -214,7 +214,7 @@
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TAUBPM{{ agebd_env_suffix_upper }}:INJRATE</string>
<string notr="true">AGEBD-TAUBPM@@agebd_env_suffix_upper@@:INJRATE</string>
</property>
<property name="foreground">
<color>
@@ -274,7 +274,7 @@
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TAUBPM{{ agebd_env_suffix_upper }}:INJRATE-ERR</string>
<string notr="true">AGEBD-TAUBPM@@agebd_env_suffix_upper@@:INJRATE-ERR</string>
</property>
<property name="foreground">
<color>
@@ -363,7 +363,7 @@
<string notr="true">A</string>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:LIFETIME-GUIRELOAD</string>
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:LIFETIME-GUIRELOAD</string>
</property>
<property name="eventSignal">
<enum>caCalc::TriggerZeroToOne</enum>
@@ -395,7 +395,7 @@
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TAUBPM{{ agebd_env_suffix_upper }}:CONTROL-NSAMPLES-FIT-TAU</string>
<string notr="true">AGEBD-TAUBPM@@agebd_env_suffix_upper@@:CONTROL-NSAMPLES-FIT-TAU</string>
</property>
<property name="precisionMode">
<enum>caLineEdit::User</enum>
@@ -411,7 +411,7 @@
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TAUBPM{{ agebd_env_suffix_upper }}:CONTROL-MIN-CURR</string>
<string notr="true">AGEBD-TAUBPM@@agebd_env_suffix_upper@@:CONTROL-MIN-CURR</string>
</property>
<property name="precision">
<number>12</number>
@@ -430,7 +430,7 @@
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:TAUBPM-ONOFF</string>
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:TAUBPM-ONOFF</string>
</property>
<property name="stackingMode" stdset="0">
<enum>caChoice::Column</enum>
@@ -465,7 +465,7 @@
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TAUBPM{{ agebd_env_suffix_upper }}:CONTROL-NSAMPLES-FIT-ROC</string>
<string notr="true">AGEBD-TAUBPM@@agebd_env_suffix_upper@@:CONTROL-NSAMPLES-FIT-ROC</string>
</property>
<property name="precisionMode">
<enum>caLineEdit::User</enum>
+9 -9
View File
@@ -78,7 +78,7 @@
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TAUPCT{{ agebd_env_suffix_upper }}:TAU</string>
<string notr="true">AGEBD-TAUPCT@@agebd_env_suffix_upper@@:TAU</string>
</property>
<property name="foreground">
<color>
@@ -138,7 +138,7 @@
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TAUPCT{{ agebd_env_suffix_upper }}:TAU-ERR</string>
<string notr="true">AGEBD-TAUPCT@@agebd_env_suffix_upper@@:TAU-ERR</string>
</property>
<property name="foreground">
<color>
@@ -214,7 +214,7 @@
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TAUPCT{{ agebd_env_suffix_upper }}:INJRATE</string>
<string notr="true">AGEBD-TAUPCT@@agebd_env_suffix_upper@@:INJRATE</string>
</property>
<property name="foreground">
<color>
@@ -274,7 +274,7 @@
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TAUPCT{{ agebd_env_suffix_upper }}:INJRATE-ERR</string>
<string notr="true">AGEBD-TAUPCT@@agebd_env_suffix_upper@@:INJRATE-ERR</string>
</property>
<property name="foreground">
<color>
@@ -363,7 +363,7 @@
<string notr="true">A</string>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:TAUPCT-GUIRELOAD</string>
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:TAUPCT-GUIRELOAD</string>
</property>
<property name="eventSignal">
<enum>caCalc::TriggerZeroToOne</enum>
@@ -395,7 +395,7 @@
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TAUPCT{{ agebd_env_suffix_upper }}:CONTROL-NSAMPLES-FIT-TAU</string>
<string notr="true">AGEBD-TAUPCT@@agebd_env_suffix_upper@@:CONTROL-NSAMPLES-FIT-TAU</string>
</property>
<property name="precisionMode">
<enum>caLineEdit::User</enum>
@@ -411,7 +411,7 @@
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TAUPCT{{ agebd_env_suffix_upper }}:CONTROL-MIN-CURR</string>
<string notr="true">AGEBD-TAUPCT@@agebd_env_suffix_upper@@:CONTROL-MIN-CURR</string>
</property>
<property name="precision">
<number>12</number>
@@ -430,7 +430,7 @@
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:TAUPCT-ONOFF</string>
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:TAUPCT-ONOFF</string>
</property>
<property name="stackingMode" stdset="0">
<enum>caChoice::Column</enum>
@@ -449,7 +449,7 @@
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TAUPCT{{ agebd_env_suffix_upper }}:CONTROL-NSAMPLES-FIT-ROC</string>
<string notr="true">AGEBD-TAUPCT@@agebd_env_suffix_upper@@:CONTROL-NSAMPLES-FIT-ROC</string>
</property>
<property name="precisionMode">
<enum>caLineEdit::User</enum>
+53 -53
View File
@@ -46,7 +46,7 @@
<string notr="true">A</string>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:TIMING-GUIRELOAD</string>
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:TIMING-GUIRELOAD</string>
</property>
<property name="eventSignal">
<enum>caCalc::TriggerZeroToOne</enum>
@@ -154,7 +154,7 @@
<number>0</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-ZERO-DELAY-GUN</string>
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-ZERO-DELAY-GUN</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -185,7 +185,7 @@
<number>3</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-ZERO-DELAY-lirf-llemast</string>
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-ZERO-DELAY-lirf-llemast</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -240,7 +240,7 @@
<number>0</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-ZERO-DELAY-BOINKI</string>
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-ZERO-DELAY-BOINKI</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -295,7 +295,7 @@
<number>0</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-ZERO-DELAY-BOINSE</string>
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-ZERO-DELAY-BOINSE</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -326,7 +326,7 @@
<number>0</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-ZERO-DELAY-BOEXKI</string>
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-ZERO-DELAY-BOEXKI</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -384,7 +384,7 @@
<number>0</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-ZERO-DELAY-BOEXSE</string>
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-ZERO-DELAY-BOEXSE</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -442,7 +442,7 @@
<number>0</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-ZERO-DELAY-SRINSE</string>
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-ZERO-DELAY-SRINSE</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -548,7 +548,7 @@
<number>0</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-ZERO-DELAY-BTRICT</string>
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-ZERO-DELAY-BTRICT</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -798,7 +798,7 @@
<number>0</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-ZERO-DELAY-lirf-klystr2</string>
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-ZERO-DELAY-lirf-klystr2</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -829,7 +829,7 @@
<number>0</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-ZERO-DELAY-lirf-3GHzScp</string>
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-ZERO-DELAY-lirf-3GHzScp</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -860,7 +860,7 @@
<number>0</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-ZERO-DELAY-lirf-500-PBU</string>
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-ZERO-DELAY-lirf-500-PBU</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -891,7 +891,7 @@
<number>0</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-ZERO-DELAY-lirf-Kly1PMU</string>
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-ZERO-DELAY-lirf-Kly1PMU</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -922,7 +922,7 @@
<number>0</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-ZERO-DELAY-lirf-klystr1</string>
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-ZERO-DELAY-lirf-klystr1</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -953,7 +953,7 @@
<number>0</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-ZERO-DELAY-lirf-preamp1</string>
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-ZERO-DELAY-lirf-preamp1</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -984,7 +984,7 @@
<number>0</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-ZERO-DELAY-lirf-3GHzQdm</string>
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-ZERO-DELAY-lirf-3GHzQdm</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -1015,7 +1015,7 @@
<number>0</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-ZERO-DELAY-lirf-preamp2</string>
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-ZERO-DELAY-lirf-preamp2</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -1046,7 +1046,7 @@
<number>0</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-ZERO-DELAY-lirf-Kly2PMU</string>
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-ZERO-DELAY-lirf-Kly2PMU</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -1173,7 +1173,7 @@
<number>0</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-ZERO-DELAY-SRINK1</string>
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-ZERO-DELAY-SRINK1</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -1207,7 +1207,7 @@
<number>0</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-ZERO-DELAY-SRINK2</string>
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-ZERO-DELAY-SRINK2</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -1241,7 +1241,7 @@
<number>0</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-ZERO-DELAY-SRINK3</string>
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-ZERO-DELAY-SRINK3</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -1275,7 +1275,7 @@
<number>0</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-ZERO-DELAY-SRINK4</string>
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-ZERO-DELAY-SRINK4</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -1333,7 +1333,7 @@
<number>0</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-ZERO-DELAY-lindi-ictone</string>
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-ZERO-DELAY-lindi-ictone</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -1364,7 +1364,7 @@
<number>0</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-ZERO-DELAY-lindi-icts23</string>
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-ZERO-DELAY-lindi-icts23</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -3472,7 +3472,7 @@
<bool>false</bool>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-FLW-BCKT-GUN</string>
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-FLW-BCKT-GUN</string>
</property>
</widget>
<widget class="caToggleButton" name="catogglebutton_3">
@@ -3497,7 +3497,7 @@
<bool>false</bool>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-FLW-BCKT-lirf-llemast</string>
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-FLW-BCKT-lirf-llemast</string>
</property>
</widget>
<widget class="caToggleButton" name="catogglebutton_6">
@@ -3522,7 +3522,7 @@
<bool>false</bool>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-FLW-BCKT-BOINKI</string>
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-FLW-BCKT-BOINKI</string>
</property>
</widget>
<widget class="caToggleButton" name="catogglebutton_7">
@@ -3547,7 +3547,7 @@
<bool>false</bool>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-FLW-BCKT-BOINSE</string>
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-FLW-BCKT-BOINSE</string>
</property>
</widget>
<widget class="caToggleButton" name="catogglebutton_10">
@@ -3572,7 +3572,7 @@
<bool>false</bool>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-FLW-BCKT-BOEXKI</string>
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-FLW-BCKT-BOEXKI</string>
</property>
</widget>
<widget class="caToggleButton" name="catogglebutton_12">
@@ -3597,7 +3597,7 @@
<bool>false</bool>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-FLW-BCKT-BOEXSE</string>
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-FLW-BCKT-BOEXSE</string>
</property>
</widget>
<widget class="caToggleButton" name="catogglebutton_15">
@@ -3622,7 +3622,7 @@
<bool>false</bool>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-FLW-BCKT-BTRICT</string>
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-FLW-BCKT-BTRICT</string>
</property>
</widget>
<widget class="caToggleButton" name="catogglebutton_16">
@@ -3647,7 +3647,7 @@
<bool>false</bool>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-FLW-BCKT-SRINSE</string>
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-FLW-BCKT-SRINSE</string>
</property>
</widget>
<widget class="caToggleButton" name="catogglebutton_19">
@@ -3672,7 +3672,7 @@
<bool>false</bool>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-FLW-BCKT-SRINK4</string>
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-FLW-BCKT-SRINK4</string>
</property>
</widget>
<widget class="caToggleButton" name="catogglebutton_21">
@@ -3697,7 +3697,7 @@
<bool>false</bool>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-FLW-BCKT-lirf-preamp1</string>
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-FLW-BCKT-lirf-preamp1</string>
</property>
</widget>
<widget class="caToggleButton" name="catogglebutton_23">
@@ -3722,7 +3722,7 @@
<bool>false</bool>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-FLW-BCKT-lirf-3GHzQdm</string>
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-FLW-BCKT-lirf-3GHzQdm</string>
</property>
</widget>
<widget class="caToggleButton" name="catogglebutton_24">
@@ -3747,7 +3747,7 @@
<bool>false</bool>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-FLW-BCKT-lirf-500-PBU</string>
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-FLW-BCKT-lirf-500-PBU</string>
</property>
</widget>
<widget class="caToggleButton" name="catogglebutton_28">
@@ -3772,7 +3772,7 @@
<bool>false</bool>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-FLW-BCKT-lirf-preamp2</string>
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-FLW-BCKT-lirf-preamp2</string>
</property>
</widget>
<widget class="caToggleButton" name="catogglebutton_29">
@@ -3797,7 +3797,7 @@
<bool>false</bool>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-FLW-BCKT-lirf-klystr2</string>
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-FLW-BCKT-lirf-klystr2</string>
</property>
</widget>
<widget class="caToggleButton" name="catogglebutton_32">
@@ -3822,7 +3822,7 @@
<bool>false</bool>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-FLW-BCKT-lirf-3GHzScp</string>
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-FLW-BCKT-lirf-3GHzScp</string>
</property>
</widget>
<widget class="caToggleButton" name="catogglebutton_33">
@@ -3847,7 +3847,7 @@
<bool>false</bool>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-FLW-BCKT-lirf-Kly1PMU</string>
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-FLW-BCKT-lirf-Kly1PMU</string>
</property>
</widget>
<widget class="caToggleButton" name="catogglebutton_34">
@@ -3872,7 +3872,7 @@
<bool>false</bool>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-FLW-BCKT-lirf-klystr1</string>
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-FLW-BCKT-lirf-klystr1</string>
</property>
</widget>
<widget class="caToggleButton" name="catogglebutton_37">
@@ -3897,7 +3897,7 @@
<bool>false</bool>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-FLW-BCKT-lirf-Kly2PMU</string>
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-FLW-BCKT-lirf-Kly2PMU</string>
</property>
</widget>
<widget class="caToggleButton" name="catogglebutton_2">
@@ -3922,7 +3922,7 @@
<bool>false</bool>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-FLW-BCKT-lindi-ictone</string>
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-FLW-BCKT-lindi-ictone</string>
</property>
</widget>
<widget class="caToggleButton" name="catogglebutton_5">
@@ -3947,7 +3947,7 @@
<bool>false</bool>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-FLW-BCKT-lindi-icts23</string>
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-FLW-BCKT-lindi-icts23</string>
</property>
</widget>
<widget class="caToggleButton" name="catogglebutton_20">
@@ -3972,7 +3972,7 @@
<bool>false</bool>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-FLW-BCKT-SRINK3</string>
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-FLW-BCKT-SRINK3</string>
</property>
</widget>
<widget class="caToggleButton" name="catogglebutton_22">
@@ -3997,7 +3997,7 @@
<bool>false</bool>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-FLW-BCKT-SRINK2</string>
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-FLW-BCKT-SRINK2</string>
</property>
</widget>
<widget class="caToggleButton" name="catogglebutton_25">
@@ -4022,7 +4022,7 @@
<bool>false</bool>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-FLW-BCKT-SRINK1</string>
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-FLW-BCKT-SRINK1</string>
</property>
</widget>
<zorder>catogglebutton_3</zorder>
@@ -4089,7 +4089,7 @@
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:SETALL-DELAY</string>
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:SETALL-DELAY</string>
</property>
<property name="foreground">
<color>
@@ -4149,7 +4149,7 @@
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:SETALL-ERROR</string>
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:SETALL-ERROR</string>
</property>
<property name="foreground">
<color>
@@ -4230,7 +4230,7 @@
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-FILLPATTERN-string.VAL</string>
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-FILLPATTERN-string.VAL</string>
</property>
<property name="precision">
<number>0</number>
@@ -4266,7 +4266,7 @@
<enum>EPushButton::WidthAndHeight</enum>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:ZERO-TARGET-BUCKET</string>
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:ZERO-TARGET-BUCKET</string>
</property>
<property name="label">
<string notr="true">Reset</string>
@@ -4426,7 +4426,7 @@
<string notr="true">!A</string>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:TIMING-ONOFF</string>
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:TIMING-ONOFF</string>
</property>
</widget>
<widget class="caMessageButton" name="camessagebutton_40">
@@ -4470,7 +4470,7 @@
</color>
</property>
<property name="disableChannel" stdset="0">
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:TIMING-ONOFF</string>
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:TIMING-ONOFF</string>
</property>
<property name="releaseMessage">
<string notr="true">0</string>
+26 -26
View File
@@ -24,7 +24,7 @@
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:TOPUPTOOL-ONOFF</string>
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:TOPUPTOOL-ONOFF</string>
</property>
<property name="stackingMode" stdset="0">
<enum>caChoice::Column</enum>
@@ -209,7 +209,7 @@
<number>0</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TOPUPTOOL{{ agebd_env_suffix_upper }}:CONTROL-GUNGRID-MAX</string>
<string notr="true">AGEBD-TOPUPTOOL@@agebd_env_suffix_upper@@:CONTROL-GUNGRID-MAX</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -273,7 +273,7 @@
<string notr="true">A</string>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:SCRUBBING-GUIRELOAD</string>
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:SCRUBBING-GUIRELOAD</string>
</property>
<property name="eventSignal">
<enum>caCalc::TriggerOneToZero</enum>
@@ -289,7 +289,7 @@
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:SCRUBBING-INFO</string>
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:SCRUBBING-INFO</string>
</property>
<property name="colorMode">
<enum>caLineEdit::Alarm_Default</enum>
@@ -311,7 +311,7 @@
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TOPUPTOOL{{ agebd_env_suffix_upper }}:TOPUP-DELTAT</string>
<string notr="true">AGEBD-TOPUPTOOL@@agebd_env_suffix_upper@@:TOPUP-DELTAT</string>
</property>
<property name="colorMode">
<enum>caLineEdit::Default</enum>
@@ -336,7 +336,7 @@
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TOPUPTOOL{{ agebd_env_suffix_upper }}:TOPUP-TAU</string>
<string notr="true">AGEBD-TOPUPTOOL@@agebd_env_suffix_upper@@:TOPUP-TAU</string>
</property>
<property name="colorMode">
<enum>caLineEdit::Default</enum>
@@ -430,7 +430,7 @@
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TOPUPTOOL{{ agebd_env_suffix_upper }}:TOPUP-DELTAI</string>
<string notr="true">AGEBD-TOPUPTOOL@@agebd_env_suffix_upper@@:TOPUP-DELTAI</string>
</property>
<property name="colorMode">
<enum>caLineEdit::Default</enum>
@@ -1989,7 +1989,7 @@
<number>22</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }}:STATUS-SECRET-MASTER</string>
<string notr="true">AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@:STATUS-SECRET-MASTER</string>
</property>
<property name="colorMode">
<enum>caLed::Alarm</enum>
@@ -2286,7 +2286,7 @@ AGETI-CVME-MASTER-TMA:Evt-SR-Inj-EVRCount-I</string>
<number>1</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TOPUPTOOL{{ agebd_env_suffix_upper }}:CONTROL-CURRENT-MAX</string>
<string notr="true">AGEBD-TOPUPTOOL@@agebd_env_suffix_upper@@:CONTROL-CURRENT-MAX</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -2744,7 +2744,7 @@ AGETI-CVME-MASTER-TMA:Evt-14.VALA</string>
<number>1</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TOPUPTOOL{{ agebd_env_suffix_upper }}:CONTROL-CURRENT-MAX</string>
<string notr="true">AGEBD-TOPUPTOOL@@agebd_env_suffix_upper@@:CONTROL-CURRENT-MAX</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -2769,7 +2769,7 @@ AGETI-CVME-MASTER-TMA:Evt-14.VALA</string>
<number>1</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TOPUPTOOL{{ agebd_env_suffix_upper }}:CONTROL-CURRENT-MAX</string>
<string notr="true">AGEBD-TOPUPTOOL@@agebd_env_suffix_upper@@:CONTROL-CURRENT-MAX</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -2794,7 +2794,7 @@ AGETI-CVME-MASTER-TMA:Evt-14.VALA</string>
<number>1</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TOPUPTOOL{{ agebd_env_suffix_upper }}:CONTROL-CURRENT-MAX</string>
<string notr="true">AGEBD-TOPUPTOOL@@agebd_env_suffix_upper@@:CONTROL-CURRENT-MAX</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -2819,7 +2819,7 @@ AGETI-CVME-MASTER-TMA:Evt-14.VALA</string>
<number>1</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TOPUPTOOL{{ agebd_env_suffix_upper }}:CONTROL-CURRENT-MAX</string>
<string notr="true">AGEBD-TOPUPTOOL@@agebd_env_suffix_upper@@:CONTROL-CURRENT-MAX</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -2844,7 +2844,7 @@ AGETI-CVME-MASTER-TMA:Evt-14.VALA</string>
<number>1</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TOPUPTOOL{{ agebd_env_suffix_upper }}:CONTROL-CURRENT-MAX</string>
<string notr="true">AGEBD-TOPUPTOOL@@agebd_env_suffix_upper@@:CONTROL-CURRENT-MAX</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -2869,7 +2869,7 @@ AGETI-CVME-MASTER-TMA:Evt-14.VALA</string>
<number>1</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TOPUPTOOL{{ agebd_env_suffix_upper }}:CONTROL-CURRENT-MAX</string>
<string notr="true">AGEBD-TOPUPTOOL@@agebd_env_suffix_upper@@:CONTROL-CURRENT-MAX</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -2894,7 +2894,7 @@ AGETI-CVME-MASTER-TMA:Evt-14.VALA</string>
<number>1</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TOPUPTOOL{{ agebd_env_suffix_upper }}:CONTROL-CURRENT-MAX</string>
<string notr="true">AGEBD-TOPUPTOOL@@agebd_env_suffix_upper@@:CONTROL-CURRENT-MAX</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -3050,7 +3050,7 @@ AGETI-CVME-MASTER-TMA:Evt-14.VALA</string>
<number>1</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TOPUPTOOL{{ agebd_env_suffix_upper }}:CONTROL-CURRENT-MAX</string>
<string notr="true">AGEBD-TOPUPTOOL@@agebd_env_suffix_upper@@:CONTROL-CURRENT-MAX</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -3121,7 +3121,7 @@ AGETI-CVME-MASTER-TMA:Evt-14.VALA</string>
<number>1</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TOPUPTOOL{{ agebd_env_suffix_upper }}:CONTROL-TIME-FREQ</string>
<string notr="true">AGEBD-TOPUPTOOL@@agebd_env_suffix_upper@@:CONTROL-TIME-FREQ</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -3169,7 +3169,7 @@ AGETI-CVME-MASTER-TMA:Evt-14.VALA</string>
<number>1</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TOPUPTOOL{{ agebd_env_suffix_upper }}:CONTROL-CURRENT-MIN</string>
<string notr="true">AGEBD-TOPUPTOOL@@agebd_env_suffix_upper@@:CONTROL-CURRENT-MIN</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -3194,7 +3194,7 @@ AGETI-CVME-MASTER-TMA:Evt-14.VALA</string>
<number>1</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TOPUPTOOL{{ agebd_env_suffix_upper }}:CONTROL-VAC-MAX</string>
<string notr="true">AGEBD-TOPUPTOOL@@agebd_env_suffix_upper@@:CONTROL-VAC-MAX</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -3219,7 +3219,7 @@ AGETI-CVME-MASTER-TMA:Evt-14.VALA</string>
<number>1</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TOPUPTOOL{{ agebd_env_suffix_upper }}:CONTROL-VAC-MIN</string>
<string notr="true">AGEBD-TOPUPTOOL@@agebd_env_suffix_upper@@:CONTROL-VAC-MIN</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -3262,7 +3262,7 @@ AGETI-CVME-MASTER-TMA:Evt-14.VALA</string>
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TOPUPTOOL{{ agebd_env_suffix_upper }}:TOPUP-DELTAT</string>
<string notr="true">AGEBD-TOPUPTOOL@@agebd_env_suffix_upper@@:TOPUP-DELTAT</string>
</property>
<property name="colorMode">
<enum>caLineEdit::Default</enum>
@@ -3287,7 +3287,7 @@ AGETI-CVME-MASTER-TMA:Evt-14.VALA</string>
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TOPUPTOOL{{ agebd_env_suffix_upper }}:TOPUP-DELTAI</string>
<string notr="true">AGEBD-TOPUPTOOL@@agebd_env_suffix_upper@@:TOPUP-DELTAI</string>
</property>
<property name="colorMode">
<enum>caLineEdit::Default</enum>
@@ -3312,7 +3312,7 @@ AGETI-CVME-MASTER-TMA:Evt-14.VALA</string>
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TOPUPTOOL{{ agebd_env_suffix_upper }}:TOPUP-TAU</string>
<string notr="true">AGEBD-TOPUPTOOL@@agebd_env_suffix_upper@@:TOPUP-TAU</string>
</property>
<property name="colorMode">
<enum>caLineEdit::Default</enum>
@@ -3337,7 +3337,7 @@ AGETI-CVME-MASTER-TMA:Evt-14.VALA</string>
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TOPUPTOOL{{ agebd_env_suffix_upper }}:TOPUP-DELTAI</string>
<string notr="true">AGEBD-TOPUPTOOL@@agebd_env_suffix_upper@@:TOPUP-DELTAI</string>
</property>
<property name="colorMode">
<enum>caLineEdit::Default</enum>
@@ -3431,7 +3431,7 @@ AGETI-CVME-MASTER-TMA:Evt-14.VALA</string>
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TOPUPTOOL{{ agebd_env_suffix_upper }}:TOPUP-DELTAT</string>
<string notr="true">AGEBD-TOPUPTOOL@@agebd_env_suffix_upper@@:TOPUP-DELTAT</string>
</property>
<property name="colorMode">
<enum>caLineEdit::Default</enum>
+25 -25
View File
@@ -55,7 +55,7 @@
<string notr="true">x [mm]</string>
</property>
<property name="channels_1" stdset="0">
<string>AGEBD-TUNE{{ agebd_env_suffix_upper }}:OSCILLATION-SAMPLE-ALL;AGEBD-TUNE{{ agebd_env_suffix_upper }}:OSCILLATION-X-ALL</string>
<string>AGEBD-TUNE@@agebd_env_suffix_upper@@:OSCILLATION-SAMPLE-ALL;AGEBD-TUNE@@agebd_env_suffix_upper@@:OSCILLATION-X-ALL</string>
</property>
<property name="symbol_1">
<enum>caCartesianPlot::NoSymbol</enum>
@@ -102,7 +102,7 @@
<string notr="true">y [mm]</string>
</property>
<property name="channels_1" stdset="0">
<string>AGEBD-TUNE{{ agebd_env_suffix_upper }}:OSCILLATION-SAMPLE-ALL;AGEBD-TUNE{{ agebd_env_suffix_upper }}:OSCILLATION-Y-ALL</string>
<string>AGEBD-TUNE@@agebd_env_suffix_upper@@:OSCILLATION-SAMPLE-ALL;AGEBD-TUNE@@agebd_env_suffix_upper@@:OSCILLATION-Y-ALL</string>
</property>
<property name="symbol_1">
<enum>caCartesianPlot::NoSymbol</enum>
@@ -151,7 +151,7 @@
<string notr="true">Amplitude</string>
</property>
<property name="channels_1" stdset="0">
<string>AGEBD-TUNE{{ agebd_env_suffix_upper }}:SPEC-SAMPLE-ALL;AGEBD-TUNE{{ agebd_env_suffix_upper }}:HORIZONTAL-SPEC-ALL</string>
<string>AGEBD-TUNE@@agebd_env_suffix_upper@@:SPEC-SAMPLE-ALL;AGEBD-TUNE@@agebd_env_suffix_upper@@:HORIZONTAL-SPEC-ALL</string>
</property>
<property name="symbol_1">
<enum>caCartesianPlot::NoSymbol</enum>
@@ -198,7 +198,7 @@
<string notr="true">Amplitude</string>
</property>
<property name="channels_1" stdset="0">
<string>AGEBD-TUNE{{ agebd_env_suffix_upper }}:SPEC-SAMPLE-ALL;AGEBD-TUNE{{ agebd_env_suffix_upper }}:VERTICAL-SPEC-ALL</string>
<string>AGEBD-TUNE@@agebd_env_suffix_upper@@:SPEC-SAMPLE-ALL;AGEBD-TUNE@@agebd_env_suffix_upper@@:VERTICAL-SPEC-ALL</string>
</property>
<property name="symbol_1">
<enum>caCartesianPlot::NoSymbol</enum>
@@ -283,7 +283,7 @@
<bool>false</bool>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:TUNE-ALIVE</string>
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:TUNE-ALIVE</string>
</property>
<property name="colorMode">
<enum>caLed::Alarm</enum>
@@ -323,7 +323,7 @@
<bool>false</bool>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:TUNE-ONOFF-RB</string>
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:TUNE-ONOFF-RB</string>
</property>
<property name="colorMode">
<enum>caLed::Alarm</enum>
@@ -358,7 +358,7 @@ measurement</string>
<bool>true</bool>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:TUNE-ONOFF</string>
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:TUNE-ONOFF</string>
</property>
</widget>
</item>
@@ -405,7 +405,7 @@ measurement</string>
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNE{{ agebd_env_suffix_upper }}:MEAS-TIME</string>
<string notr="true">AGEBD-TUNE@@agebd_env_suffix_upper@@:MEAS-TIME</string>
</property>
</widget>
<widget class="QWidget" name="gridLayoutWidget_2">
@@ -433,7 +433,7 @@ measurement</string>
<item row="2" column="1">
<widget class="caLineEdit" name="calineedit_Q2_FFT">
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNE{{ agebd_env_suffix_upper }}:VERTICAL-PEAK1-FREQ</string>
<string notr="true">AGEBD-TUNE@@agebd_env_suffix_upper@@:VERTICAL-PEAK1-FREQ</string>
</property>
<property name="precision">
<number>4</number>
@@ -467,7 +467,7 @@ measurement</string>
<item row="1" column="1">
<widget class="caLineEdit" name="calineedit_Q1_FFT">
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNE{{ agebd_env_suffix_upper }}:HORIZONTAL-PEAK1-FREQ</string>
<string notr="true">AGEBD-TUNE@@agebd_env_suffix_upper@@:HORIZONTAL-PEAK1-FREQ</string>
</property>
<property name="precision">
<number>4</number>
@@ -516,7 +516,7 @@ measurement</string>
<item row="1" column="2">
<widget class="caLineEdit" name="calineedit_Q1_NAFF">
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNE{{ agebd_env_suffix_upper }}:Q1_NAFF</string>
<string notr="true">AGEBD-TUNE@@agebd_env_suffix_upper@@:Q1_NAFF</string>
</property>
<property name="precision">
<number>4</number>
@@ -538,7 +538,7 @@ measurement</string>
<item row="2" column="2">
<widget class="caLineEdit" name="calineedit_Q2_NAFF">
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNE{{ agebd_env_suffix_upper }}:Q2_NAFF</string>
<string notr="true">AGEBD-TUNE@@agebd_env_suffix_upper@@:Q2_NAFF</string>
</property>
<property name="precision">
<number>4</number>
@@ -612,7 +612,7 @@ measurement</string>
<bool>false</bool>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNE{{ agebd_env_suffix_upper }}:SVD-CLEAN</string>
<string notr="true">AGEBD-TUNE@@agebd_env_suffix_upper@@:SVD-CLEAN</string>
</property>
</widget>
<widget class="caNumeric" name="canumeric_2">
@@ -631,7 +631,7 @@ measurement</string>
<number>0</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNE{{ agebd_env_suffix_upper }}:SVD-CLEAN-Neigenvalues</string>
<string notr="true">AGEBD-TUNE@@agebd_env_suffix_upper@@:SVD-CLEAN-Neigenvalues</string>
</property>
<property name="fixedFormat">
<bool>false</bool>
@@ -705,7 +705,7 @@ values</string>
<number>2</number>
</property>
<property name="channel" stdset="0">
<string>AGEBD-TUNE{{ agebd_env_suffix_upper }}:CONTROL-ROI-Yi</string>
<string>AGEBD-TUNE@@agebd_env_suffix_upper@@:CONTROL-ROI-Yi</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -756,7 +756,7 @@ values</string>
<double>0.000000000000000</double>
</property>
<property name="channel" stdset="0">
<string>AGEBD-TUNE{{ agebd_env_suffix_upper }}:CONTROL-ROI-Xf</string>
<string>AGEBD-TUNE@@agebd_env_suffix_upper@@:CONTROL-ROI-Xf</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -789,7 +789,7 @@ values</string>
<number>2</number>
</property>
<property name="channel" stdset="0">
<string>AGEBD-TUNE{{ agebd_env_suffix_upper }}:CONTROL-ROI-Xi</string>
<string>AGEBD-TUNE@@agebd_env_suffix_upper@@:CONTROL-ROI-Xi</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -870,7 +870,7 @@ values</string>
<double>0.000000000000000</double>
</property>
<property name="channel" stdset="0">
<string>AGEBD-TUNE{{ agebd_env_suffix_upper }}:CONTROL-ROI-Yf</string>
<string>AGEBD-TUNE@@agebd_env_suffix_upper@@:CONTROL-ROI-Yf</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -934,7 +934,7 @@ values</string>
<bool>false</bool>
</property>
<property name="channel" stdset="0">
<string>AGEBD-TUNE{{ agebd_env_suffix_upper }}:CONTROL-TbTLastIndex </string>
<string>AGEBD-TUNE@@agebd_env_suffix_upper@@:CONTROL-TbTLastIndex </string>
</property>
<property name="limitsMode">
<enum>caSpinbox::User</enum>
@@ -994,7 +994,7 @@ values</string>
<bool>false</bool>
</property>
<property name="channel" stdset="0">
<string>AGEBD-TUNE{{ agebd_env_suffix_upper }}:CONTROL-TbTFirstIndex </string>
<string>AGEBD-TUNE@@agebd_env_suffix_upper@@:CONTROL-TbTFirstIndex </string>
</property>
<property name="fixedFormat">
<bool>false</bool>
@@ -1045,7 +1045,7 @@ values</string>
<bool>true</bool>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNE{{ agebd_env_suffix_upper }}:CONTROL-NAveraging</string>
<string notr="true">AGEBD-TUNE@@agebd_env_suffix_upper@@:CONTROL-NAveraging</string>
</property>
<property name="precisionMode">
<enum>caNumeric::Channel</enum>
@@ -1096,7 +1096,7 @@ values</string>
<bool>true</bool>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNE{{ agebd_env_suffix_upper }}:CONTROL-NAFF</string>
<string notr="true">AGEBD-TUNE@@agebd_env_suffix_upper@@:CONTROL-NAFF</string>
</property>
</widget>
</item>
@@ -1130,7 +1130,7 @@ harmonics</string>
<bool>true</bool>
</property>
<property name="channel" stdset="0">
<string>AGEBD-TUNE{{ agebd_env_suffix_upper }}:NAFF-HARMONICS</string>
<string>AGEBD-TUNE@@agebd_env_suffix_upper@@:NAFF-HARMONICS</string>
</property>
<property name="precisionMode">
<enum>caNumeric::Channel</enum>
@@ -1185,7 +1185,7 @@ ARS07-DBPM-0840</string>
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNE{{ agebd_env_suffix_upper }}:BPM-SELECT-SINGLE</string>
<string notr="true">AGEBD-TUNE@@agebd_env_suffix_upper@@:BPM-SELECT-SINGLE</string>
</property>
<item>
<property name="text">
@@ -1873,7 +1873,7 @@ ARS07-DBPM-0840</string>
<bool>false</bool>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNE{{ agebd_env_suffix_upper }}:SINGLE-BPM</string>
<string notr="true">AGEBD-TUNE@@agebd_env_suffix_upper@@:SINGLE-BPM</string>
</property>
</widget>
</widget>
+88 -88
View File
@@ -81,7 +81,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
<string notr="true">A</string>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:TUNEBUMP-GUIRELOAD</string>
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:TUNEBUMP-GUIRELOAD</string>
</property>
<property name="eventSignal">
<enum>caCalc::TriggerZeroToOne</enum>
@@ -103,7 +103,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
<bool>false</bool>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:QX-STEPDOWN</string>
<string notr="true">AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:QX-STEPDOWN</string>
</property>
<property name="label">
<string notr="true">&lt;&lt;</string>
@@ -141,7 +141,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
<number>4</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:QX-STEPSIZE</string>
<string notr="true">AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:QX-STEPSIZE</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -175,7 +175,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
<number>4</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:QY-STEPSIZE</string>
<string notr="true">AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:QY-STEPSIZE</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -232,7 +232,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
<bool>false</bool>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:QY-STEPDOWN</string>
<string notr="true">AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:QY-STEPDOWN</string>
</property>
<property name="label">
<string notr="true">&lt;&lt;</string>
@@ -330,7 +330,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
<bool>false</bool>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:QY-STEPUP</string>
<string notr="true">AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:QY-STEPUP</string>
</property>
<property name="label">
<string notr="true">&gt;&gt;</string>
@@ -368,7 +368,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
<bool>false</bool>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:QX-STEPUP</string>
<string notr="true">AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:QX-STEPUP</string>
</property>
<property name="label">
<string notr="true">&gt;&gt;</string>
@@ -457,7 +457,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
<string notr="true">Vertical Tune (nominal: Qy = 15.22)</string>
</property>
<property name="channels_1" stdset="0">
<string>AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:NORM-QY-FREQ;AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:NORM-QY-AMP</string>
<string>AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:NORM-QY-FREQ;AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:NORM-QY-AMP</string>
</property>
<property name="color_1">
<color>
@@ -467,7 +467,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
</color>
</property>
<property name="channels_2" stdset="0">
<string>AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:QY-PEAKS-FREQ;AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:QY-PEAKS</string>
<string>AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:QY-PEAKS-FREQ;AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:QY-PEAKS</string>
</property>
<property name="Style_2">
<enum>caCartesianPlot::Sticks</enum>
@@ -518,7 +518,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
<string notr="true">Synchrotron Tune (nominal: 0.0027)</string>
</property>
<property name="channels_1" stdset="0">
<string>AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:NORM-QZ-FREQ;AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:NORM-QZ-AMP</string>
<string>AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:NORM-QZ-FREQ;AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:NORM-QZ-AMP</string>
</property>
<property name="color_1">
<color>
@@ -528,7 +528,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
</color>
</property>
<property name="channels_2" stdset="0">
<string>AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:QZ-PEAKS-FREQ;AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:QZ-PEAKS</string>
<string>AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:QZ-PEAKS-FREQ;AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:QZ-PEAKS</string>
</property>
<property name="Style_2">
<enum>caCartesianPlot::Sticks</enum>
@@ -579,7 +579,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
<string notr="true">Horizontal Tune (nominal: Qx = 39.37)</string>
</property>
<property name="channels_1" stdset="0">
<string>AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:NORM-QX-FREQ;AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:NORM-QX-AMP</string>
<string>AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:NORM-QX-FREQ;AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:NORM-QX-AMP</string>
</property>
<property name="color_1">
<color>
@@ -589,7 +589,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
</color>
</property>
<property name="channels_2" stdset="0">
<string>AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:QX-PEAKS-FREQ;AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:QX-PEAKS</string>
<string>AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:QX-PEAKS-FREQ;AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:QX-PEAKS</string>
</property>
<property name="Style_2">
<enum>caCartesianPlot::Sticks</enum>
@@ -657,7 +657,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
<string notr="true">Tune Z</string>
</property>
<property name="channels_1" stdset="0">
<string>AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:SPEC-FREQ-qZ;AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:SPEC-Z</string>
<string>AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:SPEC-FREQ-qZ;AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:SPEC-Z</string>
</property>
<property name="color_1">
<color>
@@ -702,7 +702,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
<string notr="true">Tune Y</string>
</property>
<property name="channels_1" stdset="0">
<string>AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:SPEC-FREQ-qY;AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:SPEC-Y</string>
<string>AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:SPEC-FREQ-qY;AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:SPEC-Y</string>
</property>
<property name="color_1">
<color>
@@ -747,7 +747,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
<string notr="true">Tune X</string>
</property>
<property name="channels_1" stdset="0">
<string>AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:SPEC-FREQ-qX;AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:SPEC-X</string>
<string>AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:SPEC-FREQ-qX;AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:SPEC-X</string>
</property>
<property name="color_1">
<color>
@@ -809,7 +809,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
<string notr="true">Vertical TbT data</string>
</property>
<property name="channels_1" stdset="0">
<string>;AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:SIGN-Y</string>
<string>;AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:SIGN-Y</string>
</property>
<property name="color_1">
<color>
@@ -857,7 +857,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
<string notr="true">Longitudinal Stage 1 Data</string>
</property>
<property name="channels_1" stdset="0">
<string>;AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:SIGN-Z</string>
<string>;AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:SIGN-Z</string>
</property>
<property name="color_1">
<color>
@@ -905,7 +905,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
<string notr="true">Horizontal TbT data</string>
</property>
<property name="channels_1" stdset="0">
<string>;AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:SIGN-X</string>
<string>;AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:SIGN-X</string>
</property>
<property name="color_1">
<color>
@@ -1329,7 +1329,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
<number>2</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:QX-ULIM</string>
<string notr="true">AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:QX-ULIM</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -1360,7 +1360,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
<number>2</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:QX-LLIM</string>
<string notr="true">AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:QX-LLIM</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -1391,7 +1391,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
<number>2</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:QY-ULIM</string>
<string notr="true">AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:QY-ULIM</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -1459,7 +1459,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
<number>2</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:QY-LLIM</string>
<string notr="true">AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:QY-LLIM</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -1758,7 +1758,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:SIGN-Y.INP</string>
<string notr="true">AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:SIGN-Y.INP</string>
</property>
<property name="foreground">
<color>
@@ -1818,7 +1818,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:SIGN-X.INP</string>
<string notr="true">AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:SIGN-X.INP</string>
</property>
<property name="foreground">
<color>
@@ -1878,7 +1878,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:SIGN-Z.INP</string>
<string notr="true">AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:SIGN-Z.INP</string>
</property>
<property name="foreground">
<color>
@@ -2021,7 +2021,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
<number>3</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNEFBX{{ agebd_env_suffix_upper }}:CONTROL-KP</string>
<string notr="true">AGEBD-TUNEFBX@@agebd_env_suffix_upper@@:CONTROL-KP</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -2193,7 +2193,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
<number>3</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNEFBX{{ agebd_env_suffix_upper }}:CONTROL-KI</string>
<string notr="true">AGEBD-TUNEFBX@@agebd_env_suffix_upper@@:CONTROL-KI</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -2224,7 +2224,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
<number>3</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNEFBX{{ agebd_env_suffix_upper }}:CONTROL-KD</string>
<string notr="true">AGEBD-TUNEFBX@@agebd_env_suffix_upper@@:CONTROL-KD</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -2255,7 +2255,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
<number>2</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNEFBX{{ agebd_env_suffix_upper }}:CONTROL-QX</string>
<string notr="true">AGEBD-TUNEFBX@@agebd_env_suffix_upper@@:CONTROL-QX</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -2323,7 +2323,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
<number>2</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNEFBX{{ agebd_env_suffix_upper }}:CONTROL-QXMAX</string>
<string notr="true">AGEBD-TUNEFBX@@agebd_env_suffix_upper@@:CONTROL-QXMAX</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -2391,7 +2391,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
<number>2</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNEFBX{{ agebd_env_suffix_upper }}:CONTROL-QXMIN</string>
<string notr="true">AGEBD-TUNEFBX@@agebd_env_suffix_upper@@:CONTROL-QXMIN</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -2496,7 +2496,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
<number>1</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNEFBX{{ agebd_env_suffix_upper }}:CONTROL-MIN-CURR</string>
<string notr="true">AGEBD-TUNEFBX@@agebd_env_suffix_upper@@:CONTROL-MIN-CURR</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -2567,7 +2567,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
<bool>true</bool>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNEFBX{{ agebd_env_suffix_upper }}:CONTROL-QX-OKRNG</string>
<string notr="true">AGEBD-TUNEFBX@@agebd_env_suffix_upper@@:CONTROL-QX-OKRNG</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -2598,7 +2598,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNEFBX{{ agebd_env_suffix_upper }}:DELTAQ</string>
<string notr="true">AGEBD-TUNEFBX@@agebd_env_suffix_upper@@:DELTAQ</string>
</property>
<property name="foreground">
<color>
@@ -2705,7 +2705,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
<string notr="true"/>
</property>
<property name="channels" stdset="0">
<string>AGEBD-TUNEFBX{{ agebd_env_suffix_upper }}:QSTEPS</string>
<string>AGEBD-TUNEFBX@@agebd_env_suffix_upper@@:QSTEPS</string>
</property>
<property name="units">
<enum>caStripPlot::Second</enum>
@@ -2866,7 +2866,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:TUNEFBX-ONOFF</string>
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:TUNEFBX-ONOFF</string>
</property>
<property name="stackingMode" stdset="0">
<enum>caChoice::Column</enum>
@@ -2885,7 +2885,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNEFBX{{ agebd_env_suffix_upper }}:CHECK1</string>
<string notr="true">AGEBD-TUNEFBX@@agebd_env_suffix_upper@@:CHECK1</string>
</property>
<property name="falseColor">
<color>
@@ -2911,7 +2911,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNEFBX{{ agebd_env_suffix_upper }}:CHECK2</string>
<string notr="true">AGEBD-TUNEFBX@@agebd_env_suffix_upper@@:CHECK2</string>
</property>
<property name="falseColor">
<color>
@@ -2974,7 +2974,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNEFBX{{ agebd_env_suffix_upper }}:CHECK5</string>
<string notr="true">AGEBD-TUNEFBX@@agebd_env_suffix_upper@@:CHECK5</string>
</property>
<property name="falseColor">
<color>
@@ -3000,7 +3000,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNEFBX{{ agebd_env_suffix_upper }}:CHECK8</string>
<string notr="true">AGEBD-TUNEFBX@@agebd_env_suffix_upper@@:CHECK8</string>
</property>
<property name="falseColor">
<color>
@@ -3063,7 +3063,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNEFBX{{ agebd_env_suffix_upper }}:CHECK3</string>
<string notr="true">AGEBD-TUNEFBX@@agebd_env_suffix_upper@@:CHECK3</string>
</property>
<property name="falseColor">
<color>
@@ -3126,7 +3126,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNEFBX{{ agebd_env_suffix_upper }}:CHECK6</string>
<string notr="true">AGEBD-TUNEFBX@@agebd_env_suffix_upper@@:CHECK6</string>
</property>
<property name="falseColor">
<color>
@@ -3152,7 +3152,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNEFBX{{ agebd_env_suffix_upper }}:CHECK4</string>
<string notr="true">AGEBD-TUNEFBX@@agebd_env_suffix_upper@@:CHECK4</string>
</property>
<property name="falseColor">
<color>
@@ -3215,7 +3215,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNEFBX{{ agebd_env_suffix_upper }}:CHECK7</string>
<string notr="true">AGEBD-TUNEFBX@@agebd_env_suffix_upper@@:CHECK7</string>
</property>
<property name="falseColor">
<color>
@@ -3321,7 +3321,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
<bool>true</bool>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNEFBX{{ agebd_env_suffix_upper }}:CHECKALL</string>
<string notr="true">AGEBD-TUNEFBX@@agebd_env_suffix_upper@@:CHECKALL</string>
</property>
<property name="falseColor">
<color>
@@ -3501,7 +3501,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
<number>3</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNEFBX{{ agebd_env_suffix_upper }}:DELTAQ-ULIM</string>
<string notr="true">AGEBD-TUNEFBX@@agebd_env_suffix_upper@@:DELTAQ-ULIM</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -3532,7 +3532,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
<number>3</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNEFBX{{ agebd_env_suffix_upper }}:DELTAQ-LLIM</string>
<string notr="true">AGEBD-TUNEFBX@@agebd_env_suffix_upper@@:DELTAQ-LLIM</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -3635,7 +3635,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
<number>2</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNEFBY{{ agebd_env_suffix_upper }}:CONTROL-QY</string>
<string notr="true">AGEBD-TUNEFBY@@agebd_env_suffix_upper@@:CONTROL-QY</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -3706,7 +3706,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
<bool>true</bool>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNEFBY{{ agebd_env_suffix_upper }}:CONTROL-QY-OKRNG</string>
<string notr="true">AGEBD-TUNEFBY@@agebd_env_suffix_upper@@:CONTROL-QY-OKRNG</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -3774,7 +3774,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
<number>3</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNEFBY{{ agebd_env_suffix_upper }}:CONTROL-KI</string>
<string notr="true">AGEBD-TUNEFBY@@agebd_env_suffix_upper@@:CONTROL-KI</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -3873,7 +3873,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNEFBY{{ agebd_env_suffix_upper }}:CHECK4</string>
<string notr="true">AGEBD-TUNEFBY@@agebd_env_suffix_upper@@:CHECK4</string>
</property>
<property name="falseColor">
<color>
@@ -3905,7 +3905,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
<number>3</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNEFBY{{ agebd_env_suffix_upper }}:CONTROL-KP</string>
<string notr="true">AGEBD-TUNEFBY@@agebd_env_suffix_upper@@:CONTROL-KP</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -3936,7 +3936,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
<number>2</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNEFBY{{ agebd_env_suffix_upper }}:CONTROL-QYMAX</string>
<string notr="true">AGEBD-TUNEFBY@@agebd_env_suffix_upper@@:CONTROL-QYMAX</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -4078,7 +4078,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
<number>3</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNEFBY{{ agebd_env_suffix_upper }}:CONTROL-KD</string>
<string notr="true">AGEBD-TUNEFBY@@agebd_env_suffix_upper@@:CONTROL-KD</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -4103,7 +4103,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNEFBY{{ agebd_env_suffix_upper }}:CHECK3</string>
<string notr="true">AGEBD-TUNEFBY@@agebd_env_suffix_upper@@:CHECK3</string>
</property>
<property name="falseColor">
<color>
@@ -4283,7 +4283,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNEFBY{{ agebd_env_suffix_upper }}:DELTAQ</string>
<string notr="true">AGEBD-TUNEFBY@@agebd_env_suffix_upper@@:DELTAQ</string>
</property>
<property name="foreground">
<color>
@@ -4386,7 +4386,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
<bool>true</bool>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNEFBY{{ agebd_env_suffix_upper }}:CHECKALL</string>
<string notr="true">AGEBD-TUNEFBY@@agebd_env_suffix_upper@@:CHECKALL</string>
</property>
<property name="falseColor">
<color>
@@ -4412,7 +4412,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNEFBY{{ agebd_env_suffix_upper }}:CHECK5</string>
<string notr="true">AGEBD-TUNEFBY@@agebd_env_suffix_upper@@:CHECK5</string>
</property>
<property name="falseColor">
<color>
@@ -4438,7 +4438,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNEFBY{{ agebd_env_suffix_upper }}:CHECK2</string>
<string notr="true">AGEBD-TUNEFBY@@agebd_env_suffix_upper@@:CHECK2</string>
</property>
<property name="falseColor">
<color>
@@ -4507,7 +4507,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
<number>2</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNEFBY{{ agebd_env_suffix_upper }}:CONTROL-QYMIN</string>
<string notr="true">AGEBD-TUNEFBY@@agebd_env_suffix_upper@@:CONTROL-QYMIN</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -4532,7 +4532,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNEFBY{{ agebd_env_suffix_upper }}:CHECK1</string>
<string notr="true">AGEBD-TUNEFBY@@agebd_env_suffix_upper@@:CHECK1</string>
</property>
<property name="falseColor">
<color>
@@ -4595,7 +4595,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:TUNEFBY-ONOFF</string>
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:TUNEFBY-ONOFF</string>
</property>
<property name="stackingMode" stdset="0">
<enum>caChoice::Column</enum>
@@ -4614,7 +4614,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNEFBY{{ agebd_env_suffix_upper }}:CHECK6</string>
<string notr="true">AGEBD-TUNEFBY@@agebd_env_suffix_upper@@:CHECK6</string>
</property>
<property name="falseColor">
<color>
@@ -4656,7 +4656,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
<string notr="true"/>
</property>
<property name="channels" stdset="0">
<string>AGEBD-TUNEFBY{{ agebd_env_suffix_upper }}:QSTEPS</string>
<string>AGEBD-TUNEFBY@@agebd_env_suffix_upper@@:QSTEPS</string>
</property>
<property name="units">
<enum>caStripPlot::Second</enum>
@@ -4897,7 +4897,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
<number>1</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNEFBY{{ agebd_env_suffix_upper }}:CONTROL-MIN-CURR</string>
<string notr="true">AGEBD-TUNEFBY@@agebd_env_suffix_upper@@:CONTROL-MIN-CURR</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -4959,7 +4959,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNEFBY{{ agebd_env_suffix_upper }}:CHECK7</string>
<string notr="true">AGEBD-TUNEFBY@@agebd_env_suffix_upper@@:CHECK7</string>
</property>
<property name="falseColor">
<color>
@@ -4985,7 +4985,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNEFBY{{ agebd_env_suffix_upper }}:CHECK8</string>
<string notr="true">AGEBD-TUNEFBY@@agebd_env_suffix_upper@@:CHECK8</string>
</property>
<property name="falseColor">
<color>
@@ -5091,7 +5091,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
<number>3</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNEFBY{{ agebd_env_suffix_upper }}:DELTAQ-ULIM</string>
<string notr="true">AGEBD-TUNEFBY@@agebd_env_suffix_upper@@:DELTAQ-ULIM</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -5122,7 +5122,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
<number>3</number>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNEFBY{{ agebd_env_suffix_upper }}:DELTAQ-LLIM</string>
<string notr="true">AGEBD-TUNEFBY@@agebd_env_suffix_upper@@:DELTAQ-LLIM</string>
</property>
<property name="precisionMode">
<enum>caSpinbox::User</enum>
@@ -5189,7 +5189,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
</rect>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:WRITE2MAG</string>
<string notr="true">AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:WRITE2MAG</string>
</property>
</widget>
<widget class="caLabel" name="calabel_36">
@@ -5241,7 +5241,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
<enum>Qt::ScrollBarAsNeeded</enum>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:CHANGELOG</string>
<string notr="true">AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:CHANGELOG</string>
</property>
<property name="fontScaleMode" stdset="0">
<enum>caMultiLineString::None</enum>
@@ -5277,7 +5277,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:QX</string>
<string notr="true">AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:QX</string>
</property>
<property name="foreground">
<color>
@@ -5359,7 +5359,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:QY</string>
<string notr="true">AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:QY</string>
</property>
<property name="foreground">
<color>
@@ -5472,7 +5472,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:QX-SB1</string>
<string notr="true">AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:QX-SB1</string>
</property>
<property name="foreground">
<color>
@@ -5532,7 +5532,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:QX-SB1-DIFF</string>
<string notr="true">AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:QX-SB1-DIFF</string>
</property>
<property name="foreground">
<color>
@@ -5629,7 +5629,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:QX-SB2</string>
<string notr="true">AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:QX-SB2</string>
</property>
<property name="foreground">
<color>
@@ -5689,7 +5689,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:QX-SB2-DIFF</string>
<string notr="true">AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:QX-SB2-DIFF</string>
</property>
<property name="foreground">
<color>
@@ -5860,7 +5860,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:QY-SB1</string>
<string notr="true">AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:QY-SB1</string>
</property>
<property name="foreground">
<color>
@@ -6031,7 +6031,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:QY-SB2</string>
<string notr="true">AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:QY-SB2</string>
</property>
<property name="foreground">
<color>
@@ -6091,7 +6091,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:QY-SB1-DIFF</string>
<string notr="true">AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:QY-SB1-DIFF</string>
</property>
<property name="foreground">
<color>
@@ -6151,7 +6151,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:QY-SB2-DIFF</string>
<string notr="true">AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:QY-SB2-DIFF</string>
</property>
<property name="foreground">
<color>
@@ -6223,7 +6223,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:QX-FREQ</string>
<string notr="true">AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:QX-FREQ</string>
</property>
<property name="foreground">
<color>
@@ -6311,7 +6311,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:QY-FREQ</string>
<string notr="true">AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:QY-FREQ</string>
</property>
<property name="foreground">
<color>
@@ -6423,7 +6423,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:QZ</string>
<string notr="true">AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:QZ</string>
</property>
<property name="foreground">
<color>
@@ -6508,7 +6508,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:QZ-FREQ</string>
<string notr="true">AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:QZ-FREQ</string>
</property>
<property name="foreground">
<color>
@@ -6603,7 +6603,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
<string notr="true">A</string>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:TUNEFBX-ONOFF</string>
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:TUNEFBX-ONOFF</string>
</property>
</widget>
<widget class="caLabel" name="calabel_2">
@@ -6641,7 +6641,7 @@ caLabel[statusTip=&quot;Operation&quot;]{
<string notr="true">A</string>
</property>
<property name="channel" stdset="0">
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:TUNEFBY-ONOFF</string>
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:TUNEFBY-ONOFF</string>
</property>
</widget>
<zorder>calabel_3</zorder>
+131
View File
@@ -0,0 +1,131 @@
"""
Guard the deploy-time substitution contract.
Every ``@@token@@`` in this repo must be declared in config/environments.yml,
and must live somewhere that actually gets rendered. Three things are checked:
1. Tokens inside a render path are declared.
Catches typos, which would otherwise ship the literal placeholder.
2. Declared tokens only appear in a render, passthrough or reference path.
Catches a placeholder added to a file nobody renders -- exactly the
regression that put a suffix token into qt/*.ui while the Qt deploy
step was a plain rsync.
3. No pre-migration ``{{ token }}`` form of a deploy-time token survives,
in the paths that carry tokens. Catches files missed by the switch to
the ``@@token@@`` delimiters. Reference paths are exempt: Ansible and
copier own ``{{ }}`` in their own files, and some of their variables
share a name with our tokens.
Files tracked by git plus new, non-ignored files are scanned, so build and
cache directories are skipped for free.
"""
import sys
import git
from agebd.subs import (
SubstitutionsConfig,
find_legacy_tokens,
find_tokens,
)
from agebd.utils import get_git_root
REPO_ROOT = get_git_root(__file__)
def iter_tracked_text_files(repo_root=REPO_ROOT):
"""
Yield (relative_path, contents) for every UTF-8 decodable file that is
tracked, or new and not gitignored. New files are included so that a bad
token is reported before it is committed rather than after.
"""
repo = git.Repo(repo_root)
listing = repo.git.ls_files("--cached", "--others", "--exclude-standard")
for rel_path in sorted(set(listing.splitlines())):
path = repo_root / rel_path
if not path.is_file():
continue
try:
yield rel_path, path.read_text()
except (UnicodeDecodeError, OSError):
continue
def check_declared(config, rel_path, contents):
"""1. Tokens inside a render path must be declared."""
if not config.is_render_path(rel_path):
return []
return [
f"{rel_path}: '@@{token}@@' is not declared under 'tokens' in "
f"{config.environments_file.name}"
for token in sorted(find_tokens(contents))
if token not in config.tokens
]
def carries_tokens(config, rel_path):
"""
True for paths whose files carry deploy-time tokens as data: they are
either rendered, or copied into something that is.
"""
return config.is_render_path(rel_path) or config.is_passthrough_path(rel_path)
def check_location(config, rel_path, contents):
"""2. Declared tokens must sit in a render, passthrough or reference path."""
if carries_tokens(config, rel_path) or config.is_reference_path(rel_path):
return []
return [
f"{rel_path}: '@@{token}@@' is in a path that is never rendered. In "
f"{config.environments_file.name}, add the path to 'locations.render' if it "
f"should be substituted at deploy time, or to 'locations.references' if it is "
f"part of the substitution machinery. Otherwise remove the token."
for token in sorted(find_tokens(contents) & set(config.tokens))
]
def check_no_legacy_delimiters(config, rel_path, contents):
"""
3. No deploy-time token may still use the creation-time delimiters, in the
paths that carry tokens. Elsewhere {{ }} belongs to whichever tool owns
the file.
"""
if not carries_tokens(config, rel_path):
return []
return [
f"{rel_path}: '{{{{ {token} }}}}' uses the creation-time delimiters for a "
f"deploy-time token. Write it as '@@{token}@@'."
for token in sorted(find_legacy_tokens(contents) & set(config.tokens))
]
CHECKS = (check_declared, check_location, check_no_legacy_delimiters)
def check_subs(repo_root=REPO_ROOT):
"""
Raise AssertionError listing every violation, or return silently.
"""
config = SubstitutionsConfig.load(repo_root / "config")
errors = []
for rel_path, contents in iter_tracked_text_files(repo_root):
for check in CHECKS:
errors.extend(check(config, rel_path, contents))
if errors:
raise AssertionError("Deploy-time substitution problems found:\n\n " + "\n ".join(errors))
if __name__ == "__main__":
try:
check_subs()
except AssertionError as e:
print(e, file=sys.stderr)
sys.exit(1)
print("All deploy-time tokens are declared and live in a rendered path.")
+73
View File
@@ -0,0 +1,73 @@
import pytest
from agebd.subs import SubstitutionsConfig
from agebd.utils import get_git_root
from ci.check_subs import (
check_declared,
check_location,
check_no_legacy_delimiters,
check_subs,
)
REPO_ROOT = get_git_root(__file__)
@pytest.fixture
def config():
return SubstitutionsConfig.load(REPO_ROOT / "config")
def test_repo_satisfies_the_substitution_contract():
check_subs()
def test_undeclared_token_in_a_render_path_is_reported(config):
errors = check_declared(config, "qt/A_BD_Tune.ui", "AGEBD-TUNE@@agebd_env_sufix_upper@@:AO")
assert len(errors) == 1
assert "agebd_env_sufix_upper" in errors[0]
def test_declared_token_in_a_render_path_is_accepted(config):
assert check_declared(config, "qt/A_BD_Tune.ui", "@@agebd_env_suffix_upper@@") == []
def test_token_outside_a_rendered_path_is_reported(config):
errors = check_location(config, "bin/start_service.sh", "SUFFIX=@@agebd_env_suffix_upper@@")
assert len(errors) == 1
assert "never rendered" in errors[0]
def test_token_in_a_render_path_is_accepted(config):
assert check_location(config, "qt/A_BD_Tune.ui", "@@agebd_env_suffix_upper@@") == []
def test_token_in_a_passthrough_path_is_accepted(config):
assert (
check_location(
config,
"templates/service/{{service_name_lower}}/current/ioc/x.jinja",
"@@agebd_env_suffix_upper@@",
)
== []
)
def test_legacy_delimiters_are_reported(config):
errors = check_no_legacy_delimiters(
config, "qt/A_BD_Tune.ui", "AGEBD-TUNE{{ agebd_env_suffix_upper }}:AO"
)
assert len(errors) == 1
assert "@@agebd_env_suffix_upper@@" in errors[0]
def test_creation_time_tokens_are_left_alone(config):
"""{{ service_name_upper }} is copier's, not ours."""
assert (
check_no_legacy_delimiters(
config, "templates/service/x/current/ioc/y.jinja", "{{ service_name_upper }}"
)
== []
)
+2
View File
@@ -10,6 +10,7 @@ dependencies = [
{ name = "gitpython" },
{ name = "h5py" },
{ name = "pyepics" },
{ name = "pyyaml" },
{ name = "typer" },
]
@@ -18,6 +19,7 @@ requires-dist = [
{ name = "gitpython", specifier = ">=3.1.50" },
{ name = "h5py", specifier = ">=3.16.0" },
{ name = "pyepics", specifier = ">=3.5.10" },
{ name = "pyyaml", specifier = ">=6.0.3" },
{ name = "typer", specifier = ">=0.23.2" },
]
+19
View File
@@ -10,6 +10,7 @@ dependencies = [
{ name = "gitpython" },
{ name = "h5py" },
{ name = "pyepics" },
{ name = "pyyaml" },
{ name = "typer" },
]
@@ -18,6 +19,7 @@ requires-dist = [
{ name = "gitpython", specifier = ">=3.1.50" },
{ name = "h5py", specifier = ">=3.16.0" },
{ name = "pyepics", specifier = ">=3.5.10" },
{ name = "pyyaml", specifier = ">=6.0.3" },
{ name = "typer", specifier = ">=0.23.2" },
]
@@ -284,6 +286,23 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/0b/d7/1959b9648791274998a9c3526f6d0ec8fd2233e4d4acce81bbae76b44b2a/python_dotenv-1.2.2-py3-none-any.whl", hash = "sha256:1d8214789a24de455a8b8bd8ae6fe3c6b69a5e3d64aa8a8e5d68e694bbcb285a", size = 22101, upload-time = "2026-03-01T16:00:25.09Z" },
]
[[package]]
name = "pyyaml"
version = "6.0.3"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/05/8e/961c0007c59b8dd7729d542c61a4d537767a59645b82a0b521206e1e25c2/pyyaml-6.0.3.tar.gz", hash = "sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f", size = 130960, upload-time = "2025-09-25T21:33:16.546Z" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/f4/a0/39350dd17dd6d6c6507025c0e53aef67a9293a6d37d3511f23ea510d5800/pyyaml-6.0.3-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:214ed4befebe12df36bcc8bc2b64b396ca31be9304b8f59e25c11cf94a4c033b", size = 184227, upload-time = "2025-09-25T21:31:46.04Z" },
{ url = "https://files.pythonhosted.org/packages/05/14/52d505b5c59ce73244f59c7a50ecf47093ce4765f116cdb98286a71eeca2/pyyaml-6.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:02ea2dfa234451bbb8772601d7b8e426c2bfa197136796224e50e35a78777956", size = 174019, upload-time = "2025-09-25T21:31:47.706Z" },
{ url = "https://files.pythonhosted.org/packages/43/f7/0e6a5ae5599c838c696adb4e6330a59f463265bfa1e116cfd1fbb0abaaae/pyyaml-6.0.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b30236e45cf30d2b8e7b3e85881719e98507abed1011bf463a8fa23e9c3e98a8", size = 740646, upload-time = "2025-09-25T21:31:49.21Z" },
{ url = "https://files.pythonhosted.org/packages/2f/3a/61b9db1d28f00f8fd0ae760459a5c4bf1b941baf714e207b6eb0657d2578/pyyaml-6.0.3-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:66291b10affd76d76f54fad28e22e51719ef9ba22b29e1d7d03d6777a9174198", size = 840793, upload-time = "2025-09-25T21:31:50.735Z" },
{ url = "https://files.pythonhosted.org/packages/7a/1e/7acc4f0e74c4b3d9531e24739e0ab832a5edf40e64fbae1a9c01941cabd7/pyyaml-6.0.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9c7708761fccb9397fe64bbc0395abcae8c4bf7b0eac081e12b809bf47700d0b", size = 770293, upload-time = "2025-09-25T21:31:51.828Z" },
{ url = "https://files.pythonhosted.org/packages/8b/ef/abd085f06853af0cd59fa5f913d61a8eab65d7639ff2a658d18a25d6a89d/pyyaml-6.0.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:418cf3f2111bc80e0933b2cd8cd04f286338bb88bdc7bc8e6dd775ebde60b5e0", size = 732872, upload-time = "2025-09-25T21:31:53.282Z" },
{ url = "https://files.pythonhosted.org/packages/1f/15/2bc9c8faf6450a8b3c9fc5448ed869c599c0a74ba2669772b1f3a0040180/pyyaml-6.0.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:5e0b74767e5f8c593e8c9b5912019159ed0533c70051e9cce3e8b6aa699fcd69", size = 758828, upload-time = "2025-09-25T21:31:54.807Z" },
{ url = "https://files.pythonhosted.org/packages/a3/00/531e92e88c00f4333ce359e50c19b8d1de9fe8d581b1534e35ccfbc5f393/pyyaml-6.0.3-cp310-cp310-win32.whl", hash = "sha256:28c8d926f98f432f88adc23edf2e6d4921ac26fb084b028c733d01868d19007e", size = 142415, upload-time = "2025-09-25T21:31:55.885Z" },
{ url = "https://files.pythonhosted.org/packages/2a/fa/926c003379b19fca39dd4634818b00dec6c62d87faf628d1394e137354d4/pyyaml-6.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:bdb2c67c6c1390b63c6ff89f210c8fd09d9a1217a465701eac7316313c915e4c", size = 158561, upload-time = "2025-09-25T21:31:57.406Z" },
]
[[package]]
name = "rich"
version = "15.0.0"
@@ -1,4 +1,4 @@
file DBPM3CURR.template {
pattern { DEVICE }
{ AGEBD-DBPM3CURR{{ agebd_env_suffix_upper }} }
{ AGEBD-DBPM3CURR@@agebd_env_suffix_upper@@ }
}
@@ -1,6 +1,6 @@
cpu_architecture: x86_64
epics_version: 7.0.8
ioc_host: sls-vserv-bd-01{{ agebd_env_suffix_lower }}
ioc_port: {{ ioc_port }}
ioc_host: sls-vserv-bd-01@@agebd_env_suffix_lower@@
ioc_port: @@ioc_port@@
os: RHEL8
os_id: rhel
@@ -3,9 +3,9 @@ Description=AGEBD-SERVICE-DBPM3CURR
After=network.target
[Service]
Environment=AGEBD_ENV={{ agebd_env }}
Environment=AGEBD_ENV=@@agebd_env@@
Environment=PYTHONUNBUFFERED=1
ExecStart=/sls/bd/hla/{{ agebd_env }}/bin/start_service.sh DBPM3CURR
ExecStart=/sls/bd/hla/@@agebd_env@@/bin/start_service.sh DBPM3CURR
Restart=no
[Install]
+19
View File
@@ -10,6 +10,7 @@ dependencies = [
{ name = "gitpython" },
{ name = "h5py" },
{ name = "pyepics" },
{ name = "pyyaml" },
{ name = "typer" },
]
@@ -18,6 +19,7 @@ requires-dist = [
{ name = "gitpython", specifier = ">=3.1.50" },
{ name = "h5py", specifier = ">=3.16.0" },
{ name = "pyepics", specifier = ">=3.5.10" },
{ name = "pyyaml", specifier = ">=6.0.3" },
{ name = "typer", specifier = ">=0.23.2" },
]
@@ -284,6 +286,23 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/0b/d7/1959b9648791274998a9c3526f6d0ec8fd2233e4d4acce81bbae76b44b2a/python_dotenv-1.2.2-py3-none-any.whl", hash = "sha256:1d8214789a24de455a8b8bd8ae6fe3c6b69a5e3d64aa8a8e5d68e694bbcb285a", size = 22101, upload-time = "2026-03-01T16:00:25.09Z" },
]
[[package]]
name = "pyyaml"
version = "6.0.3"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/05/8e/961c0007c59b8dd7729d542c61a4d537767a59645b82a0b521206e1e25c2/pyyaml-6.0.3.tar.gz", hash = "sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f", size = 130960, upload-time = "2025-09-25T21:33:16.546Z" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/f4/a0/39350dd17dd6d6c6507025c0e53aef67a9293a6d37d3511f23ea510d5800/pyyaml-6.0.3-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:214ed4befebe12df36bcc8bc2b64b396ca31be9304b8f59e25c11cf94a4c033b", size = 184227, upload-time = "2025-09-25T21:31:46.04Z" },
{ url = "https://files.pythonhosted.org/packages/05/14/52d505b5c59ce73244f59c7a50ecf47093ce4765f116cdb98286a71eeca2/pyyaml-6.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:02ea2dfa234451bbb8772601d7b8e426c2bfa197136796224e50e35a78777956", size = 174019, upload-time = "2025-09-25T21:31:47.706Z" },
{ url = "https://files.pythonhosted.org/packages/43/f7/0e6a5ae5599c838c696adb4e6330a59f463265bfa1e116cfd1fbb0abaaae/pyyaml-6.0.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b30236e45cf30d2b8e7b3e85881719e98507abed1011bf463a8fa23e9c3e98a8", size = 740646, upload-time = "2025-09-25T21:31:49.21Z" },
{ url = "https://files.pythonhosted.org/packages/2f/3a/61b9db1d28f00f8fd0ae760459a5c4bf1b941baf714e207b6eb0657d2578/pyyaml-6.0.3-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:66291b10affd76d76f54fad28e22e51719ef9ba22b29e1d7d03d6777a9174198", size = 840793, upload-time = "2025-09-25T21:31:50.735Z" },
{ url = "https://files.pythonhosted.org/packages/7a/1e/7acc4f0e74c4b3d9531e24739e0ab832a5edf40e64fbae1a9c01941cabd7/pyyaml-6.0.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9c7708761fccb9397fe64bbc0395abcae8c4bf7b0eac081e12b809bf47700d0b", size = 770293, upload-time = "2025-09-25T21:31:51.828Z" },
{ url = "https://files.pythonhosted.org/packages/8b/ef/abd085f06853af0cd59fa5f913d61a8eab65d7639ff2a658d18a25d6a89d/pyyaml-6.0.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:418cf3f2111bc80e0933b2cd8cd04f286338bb88bdc7bc8e6dd775ebde60b5e0", size = 732872, upload-time = "2025-09-25T21:31:53.282Z" },
{ url = "https://files.pythonhosted.org/packages/1f/15/2bc9c8faf6450a8b3c9fc5448ed869c599c0a74ba2669772b1f3a0040180/pyyaml-6.0.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:5e0b74767e5f8c593e8c9b5912019159ed0533c70051e9cce3e8b6aa699fcd69", size = 758828, upload-time = "2025-09-25T21:31:54.807Z" },
{ url = "https://files.pythonhosted.org/packages/a3/00/531e92e88c00f4333ce359e50c19b8d1de9fe8d581b1534e35ccfbc5f393/pyyaml-6.0.3-cp310-cp310-win32.whl", hash = "sha256:28c8d926f98f432f88adc23edf2e6d4921ac26fb084b028c733d01868d19007e", size = 142415, upload-time = "2025-09-25T21:31:55.885Z" },
{ url = "https://files.pythonhosted.org/packages/2a/fa/926c003379b19fca39dd4634818b00dec6c62d87faf628d1394e137354d4/pyyaml-6.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:bdb2c67c6c1390b63c6ff89f210c8fd09d9a1217a465701eac7316313c915e4c", size = 158561, upload-time = "2025-09-25T21:31:57.406Z" },
]
[[package]]
name = "rich"
version = "15.0.0"
@@ -1,31 +1,31 @@
file INJECTIONGUARD_individual.template {
pattern { DEVICE }
{ AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }} }
{ AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@ }
}
file INJECTIONGUARD_automated.template {
pattern { DEVICE NR Latch Description }
{ AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }} 01 1 "Beam Dump Kicker"}
{ AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }} 02 1 "Dump Valve"}
{ AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }} 03 1 "MIS"}
{ AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }} 04 1 "VCS"}
{ AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }} 05 1 "Linac KV/BB/BY"}
{ AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }} 06 1 "RF Linac"}
{ AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }} 07 1 "RF Booster"}
{ AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }} 08 1 "RF Ring"}
{ AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }} 09 1 "Magnets Pulsed"}
{ AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }} 10 1 "Magnets Booster"}
{ AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }} 11 1 "Magnets Corrector"}
{ AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }} 12 1 "Magnets Ring"}
{ AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }} 13 1 "Current Limit"}
{ AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }} 14 1 "IDs Ready"}
{ AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }} 15 1 "Single Bunch Charge"}
{ AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }} 16 1 "Injection Quality"}
{ AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }} 17 1 "Dump Quality"}
{ AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }} 18 1 "Lifetime"}
{ AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }} 19 1 "Tune"}
{ AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }} 20 0 "Pingers"}
{ AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }} 21 1 "Vacuum Pressure"}
{ AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }} 22 1 "Orbit Deviation"}
{ AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }} 23 1 "Beam Dump Controller"}
{ AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@ 01 1 "Beam Dump Kicker"}
{ AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@ 02 1 "Dump Valve"}
{ AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@ 03 1 "MIS"}
{ AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@ 04 1 "VCS"}
{ AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@ 05 1 "Linac KV/BB/BY"}
{ AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@ 06 1 "RF Linac"}
{ AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@ 07 1 "RF Booster"}
{ AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@ 08 1 "RF Ring"}
{ AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@ 09 1 "Magnets Pulsed"}
{ AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@ 10 1 "Magnets Booster"}
{ AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@ 11 1 "Magnets Corrector"}
{ AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@ 12 1 "Magnets Ring"}
{ AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@ 13 1 "Current Limit"}
{ AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@ 14 1 "IDs Ready"}
{ AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@ 15 1 "Single Bunch Charge"}
{ AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@ 16 1 "Injection Quality"}
{ AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@ 17 1 "Dump Quality"}
{ AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@ 18 1 "Lifetime"}
{ AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@ 19 1 "Tune"}
{ AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@ 20 0 "Pingers"}
{ AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@ 21 1 "Vacuum Pressure"}
{ AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@ 22 1 "Orbit Deviation"}
{ AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@ 23 1 "Beam Dump Controller"}
}
@@ -1,6 +1,6 @@
cpu_architecture: x86_64
epics_version: 7.0.8
ioc_host: sls-vserv-bd-01{{ agebd_env_suffix_lower }}
ioc_port: {{ ioc_port }}
ioc_host: sls-vserv-bd-01@@agebd_env_suffix_lower@@
ioc_port: @@ioc_port@@
os: RHEL8
os_id: rhel
@@ -3,9 +3,9 @@ Description=AGEBD-SERVICE-INJECTIONGUARD
After=network.target
[Service]
Environment=AGEBD_ENV={{ agebd_env }}
Environment=AGEBD_ENV=@@agebd_env@@
Environment=PYTHONUNBUFFERED=1
ExecStart=/sls/bd/hla/{{ agebd_env }}/bin/start_service.sh INJECTIONGUARD
ExecStart=/sls/bd/hla/@@agebd_env@@/bin/start_service.sh INJECTIONGUARD
Restart=no
[Install]
+2
View File
@@ -10,6 +10,7 @@ dependencies = [
{ name = "gitpython" },
{ name = "h5py" },
{ name = "pyepics" },
{ name = "pyyaml" },
{ name = "typer" },
]
@@ -18,6 +19,7 @@ requires-dist = [
{ name = "gitpython", specifier = ">=3.1.50" },
{ name = "h5py", specifier = ">=3.16.0" },
{ name = "pyepics", specifier = ">=3.5.10" },
{ name = "pyyaml", specifier = ">=6.0.3" },
{ name = "typer", specifier = ">=0.23.2" },
]
@@ -1,32 +1,32 @@
file MASTER.template {
pattern { SUFFIX SERVICE STARTON AUTOOFF }
{ "{{ agebd_env_suffix_upper }}", "MASTER" , "0", "30" }
{ "{{ agebd_env_suffix_upper }}", "NTURNS" , "0", "0" }
{ "{{ agebd_env_suffix_upper }}", "DBPM3CURR" , "1", "0" }
{ "{{ agebd_env_suffix_upper }}", "TAUBPM" , "1", "0" }
{ "{{ agebd_env_suffix_upper }}", "TAUPCT" , "1", "0" }
{ "{{ agebd_env_suffix_upper }}", "SCRUBBING" , "1", "0" }
{ "{{ agebd_env_suffix_upper }}", "TIMING" , "0", "0" }
{ "{{ agebd_env_suffix_upper }}", "TUNE" , "1", "0" }
{ "{{ agebd_env_suffix_upper }}", "INJECTIONGUARD" , "1", "0" }
{ "{{ agebd_env_suffix_upper }}", "POSTMORTEMLOG" , "1", "0" }
{ "{{ agebd_env_suffix_upper }}", "TUNEBUMP" , "1", "0" }
{ "{{ agebd_env_suffix_upper }}", "PLOTS" , "0", "0" }
{ "{{ agebd_env_suffix_upper }}", "ORBITBUMP" , "0", "0" }
{ "{{ agebd_env_suffix_upper }}", "TOPUPTOOL" , "0", "0" }
{ "{{ agebd_env_suffix_upper }}", "SHIFTTOOL" , "1", "0" }
{ "{{ agebd_env_suffix_upper }}", "BEAMTRANSFERCHECKS" , "0", "0" }
{ "{{ agebd_env_suffix_upper }}", "TUNEFBX" , "0", "0" }
{ "{{ agebd_env_suffix_upper }}", "TUNEFBY" , "0", "0" }
{ "{{ agebd_env_suffix_upper }}", "OPTICSFF-X02S" , "0", "0" } # I-TOMCAT
{ "{{ agebd_env_suffix_upper }}", "OPTICSFF-X03M" , "0", "0" } # ADRESS
{ "{{ agebd_env_suffix_upper }}", "OPTICSFF-X04S" , "0", "0" } # ADDAMS
{ "{{ agebd_env_suffix_upper }}", "OPTICSFF-X05L" , "0", "0" } # QUEST
{ "{{ agebd_env_suffix_upper }}", "OPTICSFF-X06S" , "0", "0" } # PXI
{ "{{ agebd_env_suffix_upper }}", "OPTICSFF-X07M" , "0", "0" } # PHOENIX/XTREME
{ "{{ agebd_env_suffix_upper }}", "OPTICSFF-X08S" , "0", "0" } # MicroXAS
{ "{{ agebd_env_suffix_upper }}", "OPTICSFF-X09L" , "0", "0" } # OPERA
{ "{{ agebd_env_suffix_upper }}", "OPTICSFF-X10S" , "0", "0" } # PXII
{ "{{ agebd_env_suffix_upper }}", "OPTICSFF-X11M" , "0", "0" } # SIM
{ "{{ agebd_env_suffix_upper }}", "OPTICSFF-X12S" , "0", "0" } # cSAXS
{ "@@agebd_env_suffix_upper@@", "MASTER" , "0", "30" }
{ "@@agebd_env_suffix_upper@@", "NTURNS" , "0", "0" }
{ "@@agebd_env_suffix_upper@@", "DBPM3CURR" , "1", "0" }
{ "@@agebd_env_suffix_upper@@", "TAUBPM" , "1", "0" }
{ "@@agebd_env_suffix_upper@@", "TAUPCT" , "1", "0" }
{ "@@agebd_env_suffix_upper@@", "SCRUBBING" , "1", "0" }
{ "@@agebd_env_suffix_upper@@", "TIMING" , "0", "0" }
{ "@@agebd_env_suffix_upper@@", "TUNE" , "1", "0" }
{ "@@agebd_env_suffix_upper@@", "INJECTIONGUARD" , "1", "0" }
{ "@@agebd_env_suffix_upper@@", "POSTMORTEMLOG" , "1", "0" }
{ "@@agebd_env_suffix_upper@@", "TUNEBUMP" , "1", "0" }
{ "@@agebd_env_suffix_upper@@", "PLOTS" , "0", "0" }
{ "@@agebd_env_suffix_upper@@", "ORBITBUMP" , "0", "0" }
{ "@@agebd_env_suffix_upper@@", "TOPUPTOOL" , "0", "0" }
{ "@@agebd_env_suffix_upper@@", "SHIFTTOOL" , "1", "0" }
{ "@@agebd_env_suffix_upper@@", "BEAMTRANSFERCHECKS" , "0", "0" }
{ "@@agebd_env_suffix_upper@@", "TUNEFBX" , "0", "0" }
{ "@@agebd_env_suffix_upper@@", "TUNEFBY" , "0", "0" }
{ "@@agebd_env_suffix_upper@@", "OPTICSFF-X02S" , "0", "0" } # I-TOMCAT
{ "@@agebd_env_suffix_upper@@", "OPTICSFF-X03M" , "0", "0" } # ADRESS
{ "@@agebd_env_suffix_upper@@", "OPTICSFF-X04S" , "0", "0" } # ADDAMS
{ "@@agebd_env_suffix_upper@@", "OPTICSFF-X05L" , "0", "0" } # QUEST
{ "@@agebd_env_suffix_upper@@", "OPTICSFF-X06S" , "0", "0" } # PXI
{ "@@agebd_env_suffix_upper@@", "OPTICSFF-X07M" , "0", "0" } # PHOENIX/XTREME
{ "@@agebd_env_suffix_upper@@", "OPTICSFF-X08S" , "0", "0" } # MicroXAS
{ "@@agebd_env_suffix_upper@@", "OPTICSFF-X09L" , "0", "0" } # OPERA
{ "@@agebd_env_suffix_upper@@", "OPTICSFF-X10S" , "0", "0" } # PXII
{ "@@agebd_env_suffix_upper@@", "OPTICSFF-X11M" , "0", "0" } # SIM
{ "@@agebd_env_suffix_upper@@", "OPTICSFF-X12S" , "0", "0" } # cSAXS
}
@@ -1,6 +1,6 @@
cpu_architecture: x86_64
epics_version: 7.0.8
ioc_host: sls-vserv-bd-01{{ agebd_env_suffix_lower }}
ioc_port: {{ ioc_port }}
ioc_host: sls-vserv-bd-01@@agebd_env_suffix_lower@@
ioc_port: @@ioc_port@@
os: RHEL8
os_id: rhel
@@ -3,9 +3,9 @@ Description=AGEBD-SERVICE-MASTER
After=network.target
[Service]
Environment=AGEBD_ENV={{ agebd_env }}
Environment=AGEBD_ENV=@@agebd_env@@
Environment=PYTHONUNBUFFERED=1
ExecStart=/sls/bd/hla/{{ agebd_env }}/bin/start_service.sh MASTER
ExecStart=/sls/bd/hla/@@agebd_env@@/bin/start_service.sh MASTER
Restart=no
[Install]
+19
View File
@@ -10,6 +10,7 @@ dependencies = [
{ name = "gitpython" },
{ name = "h5py" },
{ name = "pyepics" },
{ name = "pyyaml" },
{ name = "typer" },
]
@@ -18,6 +19,7 @@ requires-dist = [
{ name = "gitpython", specifier = ">=3.1.50" },
{ name = "h5py", specifier = ">=3.16.0" },
{ name = "pyepics", specifier = ">=3.5.10" },
{ name = "pyyaml", specifier = ">=6.0.3" },
{ name = "typer", specifier = ">=0.23.2" },
]
@@ -286,6 +288,23 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/0b/d7/1959b9648791274998a9c3526f6d0ec8fd2233e4d4acce81bbae76b44b2a/python_dotenv-1.2.2-py3-none-any.whl", hash = "sha256:1d8214789a24de455a8b8bd8ae6fe3c6b69a5e3d64aa8a8e5d68e694bbcb285a", size = 22101, upload-time = "2026-03-01T16:00:25.09Z" },
]
[[package]]
name = "pyyaml"
version = "6.0.3"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/05/8e/961c0007c59b8dd7729d542c61a4d537767a59645b82a0b521206e1e25c2/pyyaml-6.0.3.tar.gz", hash = "sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f", size = 130960, upload-time = "2025-09-25T21:33:16.546Z" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/f4/a0/39350dd17dd6d6c6507025c0e53aef67a9293a6d37d3511f23ea510d5800/pyyaml-6.0.3-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:214ed4befebe12df36bcc8bc2b64b396ca31be9304b8f59e25c11cf94a4c033b", size = 184227, upload-time = "2025-09-25T21:31:46.04Z" },
{ url = "https://files.pythonhosted.org/packages/05/14/52d505b5c59ce73244f59c7a50ecf47093ce4765f116cdb98286a71eeca2/pyyaml-6.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:02ea2dfa234451bbb8772601d7b8e426c2bfa197136796224e50e35a78777956", size = 174019, upload-time = "2025-09-25T21:31:47.706Z" },
{ url = "https://files.pythonhosted.org/packages/43/f7/0e6a5ae5599c838c696adb4e6330a59f463265bfa1e116cfd1fbb0abaaae/pyyaml-6.0.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b30236e45cf30d2b8e7b3e85881719e98507abed1011bf463a8fa23e9c3e98a8", size = 740646, upload-time = "2025-09-25T21:31:49.21Z" },
{ url = "https://files.pythonhosted.org/packages/2f/3a/61b9db1d28f00f8fd0ae760459a5c4bf1b941baf714e207b6eb0657d2578/pyyaml-6.0.3-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:66291b10affd76d76f54fad28e22e51719ef9ba22b29e1d7d03d6777a9174198", size = 840793, upload-time = "2025-09-25T21:31:50.735Z" },
{ url = "https://files.pythonhosted.org/packages/7a/1e/7acc4f0e74c4b3d9531e24739e0ab832a5edf40e64fbae1a9c01941cabd7/pyyaml-6.0.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9c7708761fccb9397fe64bbc0395abcae8c4bf7b0eac081e12b809bf47700d0b", size = 770293, upload-time = "2025-09-25T21:31:51.828Z" },
{ url = "https://files.pythonhosted.org/packages/8b/ef/abd085f06853af0cd59fa5f913d61a8eab65d7639ff2a658d18a25d6a89d/pyyaml-6.0.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:418cf3f2111bc80e0933b2cd8cd04f286338bb88bdc7bc8e6dd775ebde60b5e0", size = 732872, upload-time = "2025-09-25T21:31:53.282Z" },
{ url = "https://files.pythonhosted.org/packages/1f/15/2bc9c8faf6450a8b3c9fc5448ed869c599c0a74ba2669772b1f3a0040180/pyyaml-6.0.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:5e0b74767e5f8c593e8c9b5912019159ed0533c70051e9cce3e8b6aa699fcd69", size = 758828, upload-time = "2025-09-25T21:31:54.807Z" },
{ url = "https://files.pythonhosted.org/packages/a3/00/531e92e88c00f4333ce359e50c19b8d1de9fe8d581b1534e35ccfbc5f393/pyyaml-6.0.3-cp310-cp310-win32.whl", hash = "sha256:28c8d926f98f432f88adc23edf2e6d4921ac26fb084b028c733d01868d19007e", size = 142415, upload-time = "2025-09-25T21:31:55.885Z" },
{ url = "https://files.pythonhosted.org/packages/2a/fa/926c003379b19fca39dd4634818b00dec6c62d87faf628d1394e137354d4/pyyaml-6.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:bdb2c67c6c1390b63c6ff89f210c8fd09d9a1217a465701eac7316313c915e4c", size = 158561, upload-time = "2025-09-25T21:31:57.406Z" },
]
[[package]]
name = "rich"
version = "15.0.0"
@@ -1,4 +1,4 @@
file NTURNS.template {
pattern { DEVICE }
{ AGEBD-NTURNS{{ agebd_env_suffix_upper }} }
{ AGEBD-NTURNS@@agebd_env_suffix_upper@@ }
}
@@ -1,6 +1,6 @@
cpu_architecture: x86_64
epics_version: 7.0.8
ioc_host: sls-vserv-bd-01{{ agebd_env_suffix_lower }}
ioc_port: {{ ioc_port }}
ioc_host: sls-vserv-bd-01@@agebd_env_suffix_lower@@
ioc_port: @@ioc_port@@
os: RHEL8
os_id: rhel
@@ -3,9 +3,9 @@ Description=AGEBD-SERVICE-NTURNS
After=network.target
[Service]
Environment=AGEBD_ENV={{ agebd_env }}
Environment=AGEBD_ENV=@@agebd_env@@
Environment=PYTHONUNBUFFERED=1
ExecStart=/sls/bd/hla/{{ agebd_env }}/bin/start_service.sh NTURNS
ExecStart=/sls/bd/hla/@@agebd_env@@/bin/start_service.sh NTURNS
Restart=no
[Install]
@@ -2,31 +2,31 @@ file ORBITBUMP_machine.template {
pattern
{DEVICE sourcepoint beamline LOX HIX X LOXP HIXP XP LOY HIY Y LOYP HIYP YP BPM1 C1xx C1xpx C1yy C1ypy BPM2 C2xx C2xpx C2yy C2ypy BPM3 C3xx C3xpx C3yy C3ypy BPM4 C4xx C4xpx C4yy C4ypy}
# Diagnostic dipole beamlines
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X01DD NEMO -300 300 0 -150 150 0 -300 300 0 -150 150 0 ARS01-DBPM-1080 -0.0009920 -0.0006308 -0.0001141 0.0001109 ARS01-DBPM-1460 0.9742755 -0.1432472 0.9455447 -0.0865934 ARS01-DBPM-1900 0.9277200 1.0454287 0.1445141 1.5920941 ARS01-DBPM-2410 -0.0809412 -0.0384293 0.0058229 0.1036650}
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X08DB DISCO -300 300 0 -150 150 0 -300 300 0 -150 150 0 ARS08-DBPM-1900 -0.2500389 -0.0365053 0.0001023 0.0000595 ARS08-DBPM-2410 1.2775662 -0.9246414 0.5814965 -0.4999301 ARS08-DBPM-2910 0.6885552 0.9211364 0.4873898 1.7550023 ARS08-DBPM-4220 -0.2391394 -0.0169593 0.0309046 0.1234665}
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X10DG X11HEAT -300 300 0 -150 150 0 -300 300 0 -150 150 0 ARS10-DBPM-4720 -0.0187 -0.0188 0 0 ARS10-DBPM-5250 1.6016 -1.2108 0.5496 -0.5376 ARS10-DBPM-5880 0.7075 1.0654 1.1093 1.9515 ARS11-DBPM-0850 0.0026 0.0044 0.0166 0.0304}
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X01DD NEMO -300 300 0 -150 150 0 -300 300 0 -150 150 0 ARS01-DBPM-1080 -0.0009920 -0.0006308 -0.0001141 0.0001109 ARS01-DBPM-1460 0.9742755 -0.1432472 0.9455447 -0.0865934 ARS01-DBPM-1900 0.9277200 1.0454287 0.1445141 1.5920941 ARS01-DBPM-2410 -0.0809412 -0.0384293 0.0058229 0.1036650}
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X08DB DISCO -300 300 0 -150 150 0 -300 300 0 -150 150 0 ARS08-DBPM-1900 -0.2500389 -0.0365053 0.0001023 0.0000595 ARS08-DBPM-2410 1.2775662 -0.9246414 0.5814965 -0.4999301 ARS08-DBPM-2910 0.6885552 0.9211364 0.4873898 1.7550023 ARS08-DBPM-4220 -0.2391394 -0.0169593 0.0309046 0.1234665}
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X10DG X11HEAT -300 300 0 -150 150 0 -300 300 0 -150 150 0 ARS10-DBPM-4720 -0.0187 -0.0188 0 0 ARS10-DBPM-5250 1.6016 -1.2108 0.5496 -0.5376 ARS10-DBPM-5880 0.7075 1.0654 1.1093 1.9515 ARS11-DBPM-0850 0.0026 0.0044 0.0166 0.0304}
# User dipole beamlines
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X01DA DEBYE -300 300 0 -150 150 0 -300 300 0 -150 150 0 ARS01-DBPM-2410 -0.2169694 -0.0006291 0.0001170 0.0000325 ARS01-DBPM-2910 1.2765938 -0.9208697 0.5792863 -0.5011470 ARS01-DBPM-4220 0.6866207 0.9198858 0.4842977 1.7595080 ARS01-DBPM-4720 -0.1924402 0.0258918 0.0307458 0.1239361}
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X02DA S-TOMCAT -300 300 0 -150 150 0 -300 300 0 -150 150 0 ARS02-DBPM-2410 -0.2089937 0.0072435 0.0001169 0.0000325 ARS02-DBPM-2910 1.2772588 -0.9200089 0.5792866 -0.5011606 ARS02-DBPM-4220 0.6864959 0.9194778 0.4843170 1.7595616 ARS02-DBPM-4720 -0.1833930 0.0352770 0.0307471 0.1239392}
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X03DA PEARL -300 300 0 -150 150 0 -300 300 0 -150 150 0 ARS03-DBPM-2410 -0.2016647 0.0152728 0.0001171 0.0000326 ARS03-DBPM-2910 1.2831552 -0.9190247 0.5819894 -0.5004911 ARS03-DBPM-4220 0.6905553 0.9206615 0.4875028 1.7552635 ARS03-DBPM-4720 -0.1749243 0.0438144 0.0309089 0.1234182}
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X04DB VUV -300 300 0 -150 150 0 -300 300 0 -150 150 0 ARS04-DBPM-1900 -0.1917962 0.0214714 0.0001022 0.0000595 ARS04-DBPM-2410 1.2842031 -0.9179380 0.5814999 -0.5000284 ARS04-DBPM-2910 0.6887599 0.9211626 0.4874732 1.7553295 ARS04-DBPM-4220 -0.1710439 0.0514609 0.0309080 0.1234788}
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X05DA Optics -300 300 0 -150 150 0 -300 300 0 -150 150 0 ARS05-DBPM-2410 -0.2740176 -0.0571105 0.0001170 0.0000321 ARS05-DBPM-2910 1.2732647 -0.9287209 0.5819890 -0.5003730 ARS05-DBPM-4220 0.6913367 0.9213802 0.4873370 1.7548006 ARS05-DBPM-4720 -0.2592981 -0.0408063 0.0308988 0.1233928}
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X06DA PXIII -300 300 0 -150 150 0 -300 300 0 -150 150 0 ARS06-DBPM-2410 -0.2675305 -0.0508248 0.0001170 0.0000321 ARS06-DBPM-2910 1.2749858 -0.9266845 0.5818007 -0.5004548 ARS06-DBPM-4220 0.6916389 0.9218001 0.4871613 1.7552275 ARS06-DBPM-4720 -0.2517260 -0.0332473 0.0308895 0.1234316}
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X07DB nanoXAS -300 300 0 -150 150 0 -300 300 0 -150 150 0 ARS07-DBPM-1900 -0.2563387 -0.0425222 0.0001023 0.0000596 ARS07-DBPM-2410 1.2761628 -0.9263027 0.5814954 -0.4999177 ARS07-DBPM-2910 0.6888233 0.9216262 0.4873810 1.7549631 ARS07-DBPM-4220 -0.2469055 -0.0248794 0.0309043 0.1234651}
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X07DA PolLux -300 300 0 -150 150 0 -300 300 0 -250 250 0 ARS07-DBPM-2410 -0.2606076 -0.0450539 0.0001170 0.0000326 ARS07-DBPM-2910 1.2750718 -0.9205684 0.5819899 -0.4976199 ARS07-DBPM-4220 0.6915728 0.9246379 0.4873668 1.7572153 ARS07-DBPM-4720 -0.2433555 -0.0254434 0.0309006 0.1235450}
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X10DA SuperXAS -300 300 0 -150 150 0 -300 300 0 -150 150 0 ARS10-DBPM-2410 -0.2392400 -0.0226765 0.0001170 0.0000321 ARS10-DBPM-2910 1.2780895 -0.9235140 0.5818007 -0.5005005 ARS10-DBPM-4220 0.6911875 0.9212713 0.4872251 1.7554059 ARS10-DBPM-4720 -0.2190626 -0.0004438 0.0308933 0.1234413}
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X01DA DEBYE -300 300 0 -150 150 0 -300 300 0 -150 150 0 ARS01-DBPM-2410 -0.2169694 -0.0006291 0.0001170 0.0000325 ARS01-DBPM-2910 1.2765938 -0.9208697 0.5792863 -0.5011470 ARS01-DBPM-4220 0.6866207 0.9198858 0.4842977 1.7595080 ARS01-DBPM-4720 -0.1924402 0.0258918 0.0307458 0.1239361}
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X02DA S-TOMCAT -300 300 0 -150 150 0 -300 300 0 -150 150 0 ARS02-DBPM-2410 -0.2089937 0.0072435 0.0001169 0.0000325 ARS02-DBPM-2910 1.2772588 -0.9200089 0.5792866 -0.5011606 ARS02-DBPM-4220 0.6864959 0.9194778 0.4843170 1.7595616 ARS02-DBPM-4720 -0.1833930 0.0352770 0.0307471 0.1239392}
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X03DA PEARL -300 300 0 -150 150 0 -300 300 0 -150 150 0 ARS03-DBPM-2410 -0.2016647 0.0152728 0.0001171 0.0000326 ARS03-DBPM-2910 1.2831552 -0.9190247 0.5819894 -0.5004911 ARS03-DBPM-4220 0.6905553 0.9206615 0.4875028 1.7552635 ARS03-DBPM-4720 -0.1749243 0.0438144 0.0309089 0.1234182}
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X04DB VUV -300 300 0 -150 150 0 -300 300 0 -150 150 0 ARS04-DBPM-1900 -0.1917962 0.0214714 0.0001022 0.0000595 ARS04-DBPM-2410 1.2842031 -0.9179380 0.5814999 -0.5000284 ARS04-DBPM-2910 0.6887599 0.9211626 0.4874732 1.7553295 ARS04-DBPM-4220 -0.1710439 0.0514609 0.0309080 0.1234788}
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X05DA Optics -300 300 0 -150 150 0 -300 300 0 -150 150 0 ARS05-DBPM-2410 -0.2740176 -0.0571105 0.0001170 0.0000321 ARS05-DBPM-2910 1.2732647 -0.9287209 0.5819890 -0.5003730 ARS05-DBPM-4220 0.6913367 0.9213802 0.4873370 1.7548006 ARS05-DBPM-4720 -0.2592981 -0.0408063 0.0308988 0.1233928}
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X06DA PXIII -300 300 0 -150 150 0 -300 300 0 -150 150 0 ARS06-DBPM-2410 -0.2675305 -0.0508248 0.0001170 0.0000321 ARS06-DBPM-2910 1.2749858 -0.9266845 0.5818007 -0.5004548 ARS06-DBPM-4220 0.6916389 0.9218001 0.4871613 1.7552275 ARS06-DBPM-4720 -0.2517260 -0.0332473 0.0308895 0.1234316}
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X07DB nanoXAS -300 300 0 -150 150 0 -300 300 0 -150 150 0 ARS07-DBPM-1900 -0.2563387 -0.0425222 0.0001023 0.0000596 ARS07-DBPM-2410 1.2761628 -0.9263027 0.5814954 -0.4999177 ARS07-DBPM-2910 0.6888233 0.9216262 0.4873810 1.7549631 ARS07-DBPM-4220 -0.2469055 -0.0248794 0.0309043 0.1234651}
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X07DA PolLux -300 300 0 -150 150 0 -300 300 0 -250 250 0 ARS07-DBPM-2410 -0.2606076 -0.0450539 0.0001170 0.0000326 ARS07-DBPM-2910 1.2750718 -0.9205684 0.5819899 -0.4976199 ARS07-DBPM-4220 0.6915728 0.9246379 0.4873668 1.7572153 ARS07-DBPM-4720 -0.2433555 -0.0254434 0.0309006 0.1235450}
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X10DA SuperXAS -300 300 0 -150 150 0 -300 300 0 -150 150 0 ARS10-DBPM-2410 -0.2392400 -0.0226765 0.0001170 0.0000321 ARS10-DBPM-2910 1.2780895 -0.9235140 0.5818007 -0.5005005 ARS10-DBPM-4220 0.6911875 0.9212713 0.4872251 1.7554059 ARS10-DBPM-4720 -0.2190626 -0.0004438 0.0308933 0.1234413}
# ID beamlines
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X02SA I-TOMCAT -500 500 0 -150 150 0 -500 500 0 -150 150 0 ARS01-DBPM-5250 -0.0161762 0.0645315 -0.0000522 0.0002217 ARS01-DBPM-5880 1.3057217 -3.1586368 0.7340909 -1.7908669 ARS02-DBPM-1080 1.1637103 2.7703664 0.8405251 2.0415012 ARS02-DBPM-1460 0.0473369 0.1176477 0.0354851 0.0914118}
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X03MA ADRESS -300 300 0 -150 150 0 -300 300 0 -150 150 0 ARS02-DBPM-5250 -0.0056074 0.0805576 -0.0000533 0.0001427 ARS02-DBPM-5880 1.2522257 -3.5240592 0.7649336 -2.1576328 ARS03-DBPM-0810 1.1134798 3.0406278 0.8874945 2.4488073 ARS03-DBPM-1080 0.0367597 0.0902093 0.0491615 0.1421129}
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X04SA ADDAMS -500 500 0 -150 150 0 -500 500 0 -150 150 0 ARS03-DBPM-5250 0.0006041 0.0811354 -0.0000524 0.0002222 ARS03-DBPM-5880 1.3048037 -3.1594991 0.7340820 -1.7909262 ARS04-DBPM-1080 1.1649402 2.7718322 0.8405182 2.0415768 ARS04-DBPM-1460 0.0441826 0.1145073 0.0354841 0.0914133}
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X05LA QUEST -300 300 0 -150 150 0 -300 300 0 -150 150 0 ARS04-DBPM-5880 0.0008866 0.0002252 -0.0001045 0.0002529 ARS05-DBPM-0410 0.8976150 -2.8499257 1.0112790 -2.8592349 ARS05-DBPM-1080 1.0880889 5.0183256 0.9137175 4.2390359 ARS05-DBPM-1460 0.0421489 0.1947713 0.0433357 0.2067705}
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X06SA PXI -300 300 0 -150 150 0 -300 300 0 -150 150 0 ARS05-DBPM-5250 -0.0776973 0.0030268 -0.0000523 0.0002212 ARS05-DBPM-5880 1.3044906 -3.1590695 0.7341239 -1.7906420 ARS06-DBPM-1080 1.1642809 2.7699897 0.8405515 2.0412179 ARS06-DBPM-1460 0.0604868 0.1306028 0.0354886 0.0914055}
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X07MA Phoenix/XTreme -300 300 0 -150 150 0 -300 300 0 -150 150 0 ARS06-DBPM-5250 -0.0684380 0.0189547 -0.0000531 0.0001447 ARS06-DBPM-5880 1.2508776 -3.5845660 0.7649630 -2.1939024 ARS07-DBPM-0810 1.1137188 2.9863773 0.8875136 2.4060190 ARS07-DBPM-1080 0.0093629 0.0606390 0.0491634 0.1397441}
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X08SA micro-XAS -300 300 0 -150 150 0 -300 300 0 -150 150 0 ARS07-DBPM-5250 -0.0624701 0.0181621 -0.0000523 0.0002216 ARS07-DBPM-5880 1.3039931 -3.1597229 0.7341156 -1.7906968 ARS08-DBPM-1080 1.1652753 2.7714013 0.8405450 2.0412871 ARS08-DBPM-1460 0.0575855 0.1278140 0.0354876 0.0914065}
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X09LA PEARL/XIL-II -300 300 0 -150 150 0 -300 300 0 -150 150 0 ARS08-DBPM-5880 0.0011254 0.0009724 -0.0000942 0.0002317 ARS09-DBPM-0570 0.8843735 -2.4344684 1.1263977 -3.0082085 ARS09-DBPM-1080 1.0591734 3.0395499 0.9413643 2.7184391 ARS09-DBPM-1460 0.0394021 0.1139547 0.0465775 0.1402264}
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X10SA PXII -500 500 0 -150 150 0 -500 500 0 -150 150 0 ARS09-DBPM-5250 -0.0473875 0.0333454 -0.0000523 0.0002213 ARS09-DBPM-5880 1.3047178 -3.1592507 0.7341077 -1.7907518 ARS10-DBPM-1080 1.1639981 2.7701547 0.8405387 2.0413565 ARS10-DBPM-1460 0.0540084 0.1242161 0.0354869 0.0914087}
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X11MA SIM -500 500 0 -150 150 0 -500 500 0 -150 150 0 ARS10-DBPM-5250 -0.0383667 0.0514782 -0.0000499 0.0001646 ARS10-DBPM-5880 1.2526899 -3.7342542 0.7640638 -2.2804441 ARS11-DBPM-0850 1.1168967 3.1441871 0.8845808 2.5170397 ARS11-DBPM-1080 0.0219427 0.0928506 0.0546028 0.1626088}
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X12SA cSAXS -300 300 0 -150 150 0 -300 300 0 -150 150 0 ARS11-DBPM-5250 -0.0326376 0.0479239 -0.0000524 0.0002219 ARS11-DBPM-5880 1.3047910 -3.1591765 0.7340995 -1.7908066 ARS12-DBPM-1080 1.1653151 2.7718178 0.8405322 2.0414257 ARS12-DBPM-1460 0.0513287 0.1216036 0.0354860 0.0914097}
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X02SA I-TOMCAT -500 500 0 -150 150 0 -500 500 0 -150 150 0 ARS01-DBPM-5250 -0.0161762 0.0645315 -0.0000522 0.0002217 ARS01-DBPM-5880 1.3057217 -3.1586368 0.7340909 -1.7908669 ARS02-DBPM-1080 1.1637103 2.7703664 0.8405251 2.0415012 ARS02-DBPM-1460 0.0473369 0.1176477 0.0354851 0.0914118}
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X03MA ADRESS -300 300 0 -150 150 0 -300 300 0 -150 150 0 ARS02-DBPM-5250 -0.0056074 0.0805576 -0.0000533 0.0001427 ARS02-DBPM-5880 1.2522257 -3.5240592 0.7649336 -2.1576328 ARS03-DBPM-0810 1.1134798 3.0406278 0.8874945 2.4488073 ARS03-DBPM-1080 0.0367597 0.0902093 0.0491615 0.1421129}
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X04SA ADDAMS -500 500 0 -150 150 0 -500 500 0 -150 150 0 ARS03-DBPM-5250 0.0006041 0.0811354 -0.0000524 0.0002222 ARS03-DBPM-5880 1.3048037 -3.1594991 0.7340820 -1.7909262 ARS04-DBPM-1080 1.1649402 2.7718322 0.8405182 2.0415768 ARS04-DBPM-1460 0.0441826 0.1145073 0.0354841 0.0914133}
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X05LA QUEST -300 300 0 -150 150 0 -300 300 0 -150 150 0 ARS04-DBPM-5880 0.0008866 0.0002252 -0.0001045 0.0002529 ARS05-DBPM-0410 0.8976150 -2.8499257 1.0112790 -2.8592349 ARS05-DBPM-1080 1.0880889 5.0183256 0.9137175 4.2390359 ARS05-DBPM-1460 0.0421489 0.1947713 0.0433357 0.2067705}
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X06SA PXI -300 300 0 -150 150 0 -300 300 0 -150 150 0 ARS05-DBPM-5250 -0.0776973 0.0030268 -0.0000523 0.0002212 ARS05-DBPM-5880 1.3044906 -3.1590695 0.7341239 -1.7906420 ARS06-DBPM-1080 1.1642809 2.7699897 0.8405515 2.0412179 ARS06-DBPM-1460 0.0604868 0.1306028 0.0354886 0.0914055}
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X07MA Phoenix/XTreme -300 300 0 -150 150 0 -300 300 0 -150 150 0 ARS06-DBPM-5250 -0.0684380 0.0189547 -0.0000531 0.0001447 ARS06-DBPM-5880 1.2508776 -3.5845660 0.7649630 -2.1939024 ARS07-DBPM-0810 1.1137188 2.9863773 0.8875136 2.4060190 ARS07-DBPM-1080 0.0093629 0.0606390 0.0491634 0.1397441}
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X08SA micro-XAS -300 300 0 -150 150 0 -300 300 0 -150 150 0 ARS07-DBPM-5250 -0.0624701 0.0181621 -0.0000523 0.0002216 ARS07-DBPM-5880 1.3039931 -3.1597229 0.7341156 -1.7906968 ARS08-DBPM-1080 1.1652753 2.7714013 0.8405450 2.0412871 ARS08-DBPM-1460 0.0575855 0.1278140 0.0354876 0.0914065}
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X09LA PEARL/XIL-II -300 300 0 -150 150 0 -300 300 0 -150 150 0 ARS08-DBPM-5880 0.0011254 0.0009724 -0.0000942 0.0002317 ARS09-DBPM-0570 0.8843735 -2.4344684 1.1263977 -3.0082085 ARS09-DBPM-1080 1.0591734 3.0395499 0.9413643 2.7184391 ARS09-DBPM-1460 0.0394021 0.1139547 0.0465775 0.1402264}
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X10SA PXII -500 500 0 -150 150 0 -500 500 0 -150 150 0 ARS09-DBPM-5250 -0.0473875 0.0333454 -0.0000523 0.0002213 ARS09-DBPM-5880 1.3047178 -3.1592507 0.7341077 -1.7907518 ARS10-DBPM-1080 1.1639981 2.7701547 0.8405387 2.0413565 ARS10-DBPM-1460 0.0540084 0.1242161 0.0354869 0.0914087}
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X11MA SIM -500 500 0 -150 150 0 -500 500 0 -150 150 0 ARS10-DBPM-5250 -0.0383667 0.0514782 -0.0000499 0.0001646 ARS10-DBPM-5880 1.2526899 -3.7342542 0.7640638 -2.2804441 ARS11-DBPM-0850 1.1168967 3.1441871 0.8845808 2.5170397 ARS11-DBPM-1080 0.0219427 0.0928506 0.0546028 0.1626088}
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X12SA cSAXS -300 300 0 -150 150 0 -300 300 0 -150 150 0 ARS11-DBPM-5250 -0.0326376 0.0479239 -0.0000524 0.0002219 ARS11-DBPM-5880 1.3047910 -3.1591765 0.7340995 -1.7908066 ARS12-DBPM-1080 1.1653151 2.7718178 0.8405322 2.0414257 ARS12-DBPM-1460 0.0513287 0.1216036 0.0354860 0.0914097}
}
@@ -34,29 +34,29 @@ file ORBITBUMP_beamline.template {
pattern
{DEVICE sourcepoint beamline DRVL DRVH X XP Y YP }
# Diagnostic dipole beamlines
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X01DD NEMO -10 10 0 0 0 0 }
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X08DB DISCO -10 10 0 0 0 0 }
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X10DG X11HEAT -10 10 0 0 0 0 }
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X01DD NEMO -10 10 0 0 0 0 }
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X08DB DISCO -10 10 0 0 0 0 }
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X10DG X11HEAT -10 10 0 0 0 0 }
# User dipole beamlines
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X01DA DEBYE -10 10 0 0 0 0 }
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X02DA S-TOMCAT -10 10 0 0 0 0 }
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X03DA PEARL -10 10 0 0 0 0 }
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X04DB VUV -10 10 0 0 0 0 }
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X05DA Optics -10 10 0 0 0 0 }
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X06DA PXIII -10 10 0 0 0 0 }
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X07DB nanoXAS -10 10 0 0 0 0 }
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X07DA PolLux -10 10 0 0 0 0 }
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X10DA SuperXAS -10 10 0 0 0 0 }
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X01DA DEBYE -10 10 0 0 0 0 }
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X02DA S-TOMCAT -10 10 0 0 0 0 }
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X03DA PEARL -10 10 0 0 0 0 }
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X04DB VUV -10 10 0 0 0 0 }
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X05DA Optics -10 10 0 0 0 0 }
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X06DA PXIII -10 10 0 0 0 0 }
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X07DB nanoXAS -10 10 0 0 0 0 }
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X07DA PolLux -10 10 0 0 0 0 }
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X10DA SuperXAS -10 10 0 0 0 0 }
# ID beamlines
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X02SA I-TOMCAT -10 10 0 0 0 0 }
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X03MA ADRESS -10 10 0 0 0 0 }
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X04SA ADDAMS -10 10 0 0 0 0 }
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X05LA QUEST -10 10 0 0 0 0 }
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X06SA PXI -10 10 0 0 0 0 }
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X07MA Phoenix/XTreme -10 10 0 0 0 0 }
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X08SA micro-XAS -10 10 0 0 0 0 }
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X09LA PEARL/XIL-II -10 10 0 0 0 0 }
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X10SA PXII -10 10 0 0 0 0 }
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X11MA SIM -10 10 0 0 0 0 }
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X12SA cSAXS -10 10 0 0 0 0 }
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X02SA I-TOMCAT -10 10 0 0 0 0 }
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X03MA ADRESS -10 10 0 0 0 0 }
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X04SA ADDAMS -10 10 0 0 0 0 }
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X05LA QUEST -10 10 0 0 0 0 }
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X06SA PXI -10 10 0 0 0 0 }
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X07MA Phoenix/XTreme -10 10 0 0 0 0 }
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X08SA micro-XAS -10 10 0 0 0 0 }
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X09LA PEARL/XIL-II -10 10 0 0 0 0 }
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X10SA PXII -10 10 0 0 0 0 }
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X11MA SIM -10 10 0 0 0 0 }
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X12SA cSAXS -10 10 0 0 0 0 }
}
@@ -1,6 +1,6 @@
cpu_architecture: x86_64
epics_version: 7.0.8
ioc_host: sls-vserv-bd-01{{ agebd_env_suffix_lower }}
ioc_port: {{ ioc_port }}
ioc_host: sls-vserv-bd-01@@agebd_env_suffix_lower@@
ioc_port: @@ioc_port@@
os: RHEL8
os_id: rhel
@@ -1,4 +1,4 @@
file PARAMS.template {
pattern { DEVICE }
{ AGEBD-PARAMS{{ agebd_env_suffix_upper }} }
{ AGEBD-PARAMS@@agebd_env_suffix_upper@@ }
}
@@ -1,6 +1,6 @@
cpu_architecture: x86_64
epics_version: 7.0.8
ioc_host: sls-vserv-bd-01{{ agebd_env_suffix_lower }}
ioc_port: {{ ioc_port }}
ioc_host: sls-vserv-bd-01@@agebd_env_suffix_lower@@
ioc_port: @@ioc_port@@
os: RHEL8
os_id: rhel
+19
View File
@@ -10,6 +10,7 @@ dependencies = [
{ name = "gitpython" },
{ name = "h5py" },
{ name = "pyepics" },
{ name = "pyyaml" },
{ name = "typer" },
]
@@ -18,6 +19,7 @@ requires-dist = [
{ name = "gitpython", specifier = ">=3.1.50" },
{ name = "h5py", specifier = ">=3.16.0" },
{ name = "pyepics", specifier = ">=3.5.10" },
{ name = "pyyaml", specifier = ">=6.0.3" },
{ name = "typer", specifier = ">=0.23.2" },
]
@@ -510,6 +512,23 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/0b/d7/1959b9648791274998a9c3526f6d0ec8fd2233e4d4acce81bbae76b44b2a/python_dotenv-1.2.2-py3-none-any.whl", hash = "sha256:1d8214789a24de455a8b8bd8ae6fe3c6b69a5e3d64aa8a8e5d68e694bbcb285a", size = 22101, upload-time = "2026-03-01T16:00:25.09Z" },
]
[[package]]
name = "pyyaml"
version = "6.0.3"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/05/8e/961c0007c59b8dd7729d542c61a4d537767a59645b82a0b521206e1e25c2/pyyaml-6.0.3.tar.gz", hash = "sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f", size = 130960, upload-time = "2025-09-25T21:33:16.546Z" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/f4/a0/39350dd17dd6d6c6507025c0e53aef67a9293a6d37d3511f23ea510d5800/pyyaml-6.0.3-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:214ed4befebe12df36bcc8bc2b64b396ca31be9304b8f59e25c11cf94a4c033b", size = 184227, upload-time = "2025-09-25T21:31:46.04Z" },
{ url = "https://files.pythonhosted.org/packages/05/14/52d505b5c59ce73244f59c7a50ecf47093ce4765f116cdb98286a71eeca2/pyyaml-6.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:02ea2dfa234451bbb8772601d7b8e426c2bfa197136796224e50e35a78777956", size = 174019, upload-time = "2025-09-25T21:31:47.706Z" },
{ url = "https://files.pythonhosted.org/packages/43/f7/0e6a5ae5599c838c696adb4e6330a59f463265bfa1e116cfd1fbb0abaaae/pyyaml-6.0.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b30236e45cf30d2b8e7b3e85881719e98507abed1011bf463a8fa23e9c3e98a8", size = 740646, upload-time = "2025-09-25T21:31:49.21Z" },
{ url = "https://files.pythonhosted.org/packages/2f/3a/61b9db1d28f00f8fd0ae760459a5c4bf1b941baf714e207b6eb0657d2578/pyyaml-6.0.3-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:66291b10affd76d76f54fad28e22e51719ef9ba22b29e1d7d03d6777a9174198", size = 840793, upload-time = "2025-09-25T21:31:50.735Z" },
{ url = "https://files.pythonhosted.org/packages/7a/1e/7acc4f0e74c4b3d9531e24739e0ab832a5edf40e64fbae1a9c01941cabd7/pyyaml-6.0.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9c7708761fccb9397fe64bbc0395abcae8c4bf7b0eac081e12b809bf47700d0b", size = 770293, upload-time = "2025-09-25T21:31:51.828Z" },
{ url = "https://files.pythonhosted.org/packages/8b/ef/abd085f06853af0cd59fa5f913d61a8eab65d7639ff2a658d18a25d6a89d/pyyaml-6.0.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:418cf3f2111bc80e0933b2cd8cd04f286338bb88bdc7bc8e6dd775ebde60b5e0", size = 732872, upload-time = "2025-09-25T21:31:53.282Z" },
{ url = "https://files.pythonhosted.org/packages/1f/15/2bc9c8faf6450a8b3c9fc5448ed869c599c0a74ba2669772b1f3a0040180/pyyaml-6.0.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:5e0b74767e5f8c593e8c9b5912019159ed0533c70051e9cce3e8b6aa699fcd69", size = 758828, upload-time = "2025-09-25T21:31:54.807Z" },
{ url = "https://files.pythonhosted.org/packages/a3/00/531e92e88c00f4333ce359e50c19b8d1de9fe8d581b1534e35ccfbc5f393/pyyaml-6.0.3-cp310-cp310-win32.whl", hash = "sha256:28c8d926f98f432f88adc23edf2e6d4921ac26fb084b028c733d01868d19007e", size = 142415, upload-time = "2025-09-25T21:31:55.885Z" },
{ url = "https://files.pythonhosted.org/packages/2a/fa/926c003379b19fca39dd4634818b00dec6c62d87faf628d1394e137354d4/pyyaml-6.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:bdb2c67c6c1390b63c6ff89f210c8fd09d9a1217a465701eac7316313c915e4c", size = 158561, upload-time = "2025-09-25T21:31:57.406Z" },
]
[[package]]
name = "requests"
version = "2.34.2"
@@ -1,64 +1,64 @@
file PLOTS_timeaxis.template {
pattern
{ DEVICE }
{ AGEBD-PLOTS{{ agebd_env_suffix_upper }} }
{ AGEBD-PLOTS@@agebd_env_suffix_upper@@ }
}
file PLOTS_9h.template {
pattern
{ DEVICE, NAME, INP }
{ AGEBD-PLOTS{{ agebd_env_suffix_upper }}, CURRENT, AGEBD-PARAMS:CURRENT }
{ AGEBD-PLOTS{{ agebd_env_suffix_upper }}, CURRENT-BPM, AGEBD-DBPM3CURR:CURRENT-AVG }
{ AGEBD-PLOTS{{ agebd_env_suffix_upper }}, CURRENT-PCT, ARS07-DPCT-0000:CURR }
{ AGEBD-PLOTS{{ agebd_env_suffix_upper }}, INJECTION-RATE, AGEBD-PARAMS:INJECTION-RATE }
{ AGEBD-PLOTS{{ agebd_env_suffix_upper }}, TRANSMISSION, AGEBD-PARAMS:TRANSMISSION }
{ AGEBD-PLOTS{{ agebd_env_suffix_upper }}, LIFETIME, AGEBD-PARAMS:LIFETIME }
{ AGEBD-PLOTS{{ agebd_env_suffix_upper }}, MAVAC-AVG, ARIVA-VMAVE:PRESS-AVE }
{ AGEBD-PLOTS{{ agebd_env_suffix_upper }}, MAVAC-MAX, ARIVA-VMAVE:PRESS-MAX }
{ AGEBD-PLOTS{{ agebd_env_suffix_upper }}, FEVAC-AVG, ARIVA-VMAVE-FE:PRESS-AVE }
{ AGEBD-PLOTS{{ agebd_env_suffix_upper }}, FEVAC-MAX, ARIVA-VMAVE-FE:PRESS-MAX }
{ AGEBD-PLOTS{{ agebd_env_suffix_upper }}, ABRTL-DDRM-0670, ABRTL-DDRM-0670:FET1_BIAS_DOSE}
{ AGEBD-PLOTS{{ agebd_env_suffix_upper }}, ABRTL-DDRM-0950, ABRTL-DDRM-0950:FET1_DOSE}
{ AGEBD-PLOTS{{ agebd_env_suffix_upper }}, X05LA-DDRM-0330, X05LA-DDRM-0330:FET1_BIAS_DOSE}
{ AGEBD-PLOTS{{ agebd_env_suffix_upper }}, X05LA-DDRM-0650, X05LA-DDRM-0650:FET1_BIAS_DOSE}
{ AGEBD-PLOTS{{ agebd_env_suffix_upper }}, X09LA-DDRM-0330, X09LA-DDRM-0330:FET1_BIAS_DOSE}
{ AGEBD-PLOTS{{ agebd_env_suffix_upper }}, X09LA-DDRM-0790, X09LA-DDRM-0790:FET1_BIAS_DOSE}
{ AGEBD-PLOTS{{ agebd_env_suffix_upper }}, ARS01-DDRM-0375, ARS01-DDRM-0375:FET1_DOSE}
{ AGEBD-PLOTS{{ agebd_env_suffix_upper }}, ARS01-DDRM-1530, ARS01-DDRM-1530:FET1_BIAS_DOSE}
{ AGEBD-PLOTS{{ agebd_env_suffix_upper }}, ARS05-DDRM-1530, ARS05-DDRM-1530:FET1_BIAS_DOSE}
{ AGEBD-PLOTS{{ agebd_env_suffix_upper }}, ARS05-DDRM-3500, ARS05-DDRM-3500:FET1_BIAS_DOSE}
{ AGEBD-PLOTS{{ agebd_env_suffix_upper }}, ARS09-DDRM-1530, ARS09-DDRM-1530:FET1_BIAS_DOSE}
{ AGEBD-PLOTS{{ agebd_env_suffix_upper }}, ARS09-DDRM-3500, ARS09-DDRM-3500:FET2_BIAS_DOSE}
{ AGEBD-PLOTS{{ agebd_env_suffix_upper }}, ARS12-DDRM-1530, ARS12-DDRM-1530:FET1_BIAS_DOSE}
{ AGEBD-PLOTS{{ agebd_env_suffix_upper }}, ARS12-DDRM-3500, ARS12-DDRM-3500:FET1_BIAS_DOSE}
{ AGEBD-PLOTS{{ agebd_env_suffix_upper }}, ARS12-DDRM-4400, ARS12-DDRM-4400:FET1_BIAS_DOSE}
{ AGEBD-PLOTS{{ agebd_env_suffix_upper }}, ARS12-DDRM-5480, ARS12-DDRM-5480:FET1_BIAS_DOSE}
{ AGEBD-PLOTS{{ agebd_env_suffix_upper }}, X02SA-UIND-GAP, AGEOP-STATUS:X02SA-UIND-GAP} # Soft Blue #A0C4FF
# { AGEBD-PLOTS{{ agebd_env_suffix_upper }}, X03MA-UIND-GAP, AGEOP-STATUS:X03MA-UIND-GAP} # Warm Orange #FFD6A5
{ AGEBD-PLOTS{{ agebd_env_suffix_upper }}, X04SA-UIND-GAP, AGEOP-STATUS:X04SA-UIND-GAP} # Light Green #CAFFBF
# { AGEBD-PLOTS{{ agebd_env_suffix_upper }}, X05LA-UIND-GAP, AGEOP-STATUS:X05LA-UIND-GAP} # Coral Red #FFADAD
{ AGEBD-PLOTS{{ agebd_env_suffix_upper }}, X06SA-UIND-GAP, AGEOP-STATUS:X06SA-UIND-GAP} # Lavender #CDB4DB
# { AGEBD-PLOTS{{ agebd_env_suffix_upper }}, X07MA-UIND-GAP, AGEOP-STATUS:X07MA-UIND-GAP} # Desert Tan #DDB892
# { AGEBD-PLOTS{{ agebd_env_suffix_upper }}, X08SA-UIND-GAP, AGEOP-STATUS:X08SA-UIND-GAP} # Peach Pink #FFB5A7
{ AGEBD-PLOTS{{ agebd_env_suffix_upper }}, X09LB-UIND-GAP, AGEOP-STATUS:X09LB-UIND-GAP} # Aqua Blue #9BF6FF
{ AGEBD-PLOTS{{ agebd_env_suffix_upper }}, X10SA-UIND-GAP, AGEOP-STATUS:X10SA-UIND-GAP} # Pale Yellow #FDFFB6
{ AGEBD-PLOTS{{ agebd_env_suffix_upper }}, X11MA-UIND2-GAP, AGEOP-STATUS:X11MA-UIND2-GAP} # Periwinkle #BDB2FF
{ AGEBD-PLOTS{{ agebd_env_suffix_upper }}, X12SA-UIND-GAP, AGEOP-STATUS:X12SA-UIND-GAP} # Mint Green #B0F2C2
{ AGEBD-PLOTS@@agebd_env_suffix_upper@@, CURRENT, AGEBD-PARAMS:CURRENT }
{ AGEBD-PLOTS@@agebd_env_suffix_upper@@, CURRENT-BPM, AGEBD-DBPM3CURR:CURRENT-AVG }
{ AGEBD-PLOTS@@agebd_env_suffix_upper@@, CURRENT-PCT, ARS07-DPCT-0000:CURR }
{ AGEBD-PLOTS@@agebd_env_suffix_upper@@, INJECTION-RATE, AGEBD-PARAMS:INJECTION-RATE }
{ AGEBD-PLOTS@@agebd_env_suffix_upper@@, TRANSMISSION, AGEBD-PARAMS:TRANSMISSION }
{ AGEBD-PLOTS@@agebd_env_suffix_upper@@, LIFETIME, AGEBD-PARAMS:LIFETIME }
{ AGEBD-PLOTS@@agebd_env_suffix_upper@@, MAVAC-AVG, ARIVA-VMAVE:PRESS-AVE }
{ AGEBD-PLOTS@@agebd_env_suffix_upper@@, MAVAC-MAX, ARIVA-VMAVE:PRESS-MAX }
{ AGEBD-PLOTS@@agebd_env_suffix_upper@@, FEVAC-AVG, ARIVA-VMAVE-FE:PRESS-AVE }
{ AGEBD-PLOTS@@agebd_env_suffix_upper@@, FEVAC-MAX, ARIVA-VMAVE-FE:PRESS-MAX }
{ AGEBD-PLOTS@@agebd_env_suffix_upper@@, ABRTL-DDRM-0670, ABRTL-DDRM-0670:FET1_BIAS_DOSE}
{ AGEBD-PLOTS@@agebd_env_suffix_upper@@, ABRTL-DDRM-0950, ABRTL-DDRM-0950:FET1_DOSE}
{ AGEBD-PLOTS@@agebd_env_suffix_upper@@, X05LA-DDRM-0330, X05LA-DDRM-0330:FET1_BIAS_DOSE}
{ AGEBD-PLOTS@@agebd_env_suffix_upper@@, X05LA-DDRM-0650, X05LA-DDRM-0650:FET1_BIAS_DOSE}
{ AGEBD-PLOTS@@agebd_env_suffix_upper@@, X09LA-DDRM-0330, X09LA-DDRM-0330:FET1_BIAS_DOSE}
{ AGEBD-PLOTS@@agebd_env_suffix_upper@@, X09LA-DDRM-0790, X09LA-DDRM-0790:FET1_BIAS_DOSE}
{ AGEBD-PLOTS@@agebd_env_suffix_upper@@, ARS01-DDRM-0375, ARS01-DDRM-0375:FET1_DOSE}
{ AGEBD-PLOTS@@agebd_env_suffix_upper@@, ARS01-DDRM-1530, ARS01-DDRM-1530:FET1_BIAS_DOSE}
{ AGEBD-PLOTS@@agebd_env_suffix_upper@@, ARS05-DDRM-1530, ARS05-DDRM-1530:FET1_BIAS_DOSE}
{ AGEBD-PLOTS@@agebd_env_suffix_upper@@, ARS05-DDRM-3500, ARS05-DDRM-3500:FET1_BIAS_DOSE}
{ AGEBD-PLOTS@@agebd_env_suffix_upper@@, ARS09-DDRM-1530, ARS09-DDRM-1530:FET1_BIAS_DOSE}
{ AGEBD-PLOTS@@agebd_env_suffix_upper@@, ARS09-DDRM-3500, ARS09-DDRM-3500:FET2_BIAS_DOSE}
{ AGEBD-PLOTS@@agebd_env_suffix_upper@@, ARS12-DDRM-1530, ARS12-DDRM-1530:FET1_BIAS_DOSE}
{ AGEBD-PLOTS@@agebd_env_suffix_upper@@, ARS12-DDRM-3500, ARS12-DDRM-3500:FET1_BIAS_DOSE}
{ AGEBD-PLOTS@@agebd_env_suffix_upper@@, ARS12-DDRM-4400, ARS12-DDRM-4400:FET1_BIAS_DOSE}
{ AGEBD-PLOTS@@agebd_env_suffix_upper@@, ARS12-DDRM-5480, ARS12-DDRM-5480:FET1_BIAS_DOSE}
{ AGEBD-PLOTS@@agebd_env_suffix_upper@@, X02SA-UIND-GAP, AGEOP-STATUS:X02SA-UIND-GAP} # Soft Blue #A0C4FF
# { AGEBD-PLOTS@@agebd_env_suffix_upper@@, X03MA-UIND-GAP, AGEOP-STATUS:X03MA-UIND-GAP} # Warm Orange #FFD6A5
{ AGEBD-PLOTS@@agebd_env_suffix_upper@@, X04SA-UIND-GAP, AGEOP-STATUS:X04SA-UIND-GAP} # Light Green #CAFFBF
# { AGEBD-PLOTS@@agebd_env_suffix_upper@@, X05LA-UIND-GAP, AGEOP-STATUS:X05LA-UIND-GAP} # Coral Red #FFADAD
{ AGEBD-PLOTS@@agebd_env_suffix_upper@@, X06SA-UIND-GAP, AGEOP-STATUS:X06SA-UIND-GAP} # Lavender #CDB4DB
# { AGEBD-PLOTS@@agebd_env_suffix_upper@@, X07MA-UIND-GAP, AGEOP-STATUS:X07MA-UIND-GAP} # Desert Tan #DDB892
# { AGEBD-PLOTS@@agebd_env_suffix_upper@@, X08SA-UIND-GAP, AGEOP-STATUS:X08SA-UIND-GAP} # Peach Pink #FFB5A7
{ AGEBD-PLOTS@@agebd_env_suffix_upper@@, X09LB-UIND-GAP, AGEOP-STATUS:X09LB-UIND-GAP} # Aqua Blue #9BF6FF
{ AGEBD-PLOTS@@agebd_env_suffix_upper@@, X10SA-UIND-GAP, AGEOP-STATUS:X10SA-UIND-GAP} # Pale Yellow #FDFFB6
{ AGEBD-PLOTS@@agebd_env_suffix_upper@@, X11MA-UIND2-GAP, AGEOP-STATUS:X11MA-UIND2-GAP} # Periwinkle #BDB2FF
{ AGEBD-PLOTS@@agebd_env_suffix_upper@@, X12SA-UIND-GAP, AGEOP-STATUS:X12SA-UIND-GAP} # Mint Green #B0F2C2
}
file PLOTS_week.template {
pattern
{ DEVICE, NAME, INP }
{ AGEBD-PLOTS{{ agebd_env_suffix_upper }}, CURRENT-BPM, AGEBD-DBPM3CURR:CURRENT-AVG }
{ AGEBD-PLOTS{{ agebd_env_suffix_upper }}, CURRENT-PCT, ARS07-DPCT-0000:CURR }
{ AGEBD-PLOTS{{ agebd_env_suffix_upper }}, TAU-BPM, AGEBD-TAUBPM:TAU }
{ AGEBD-PLOTS{{ agebd_env_suffix_upper }}, TAU-PCT, AGEBD-TAUPCT:TAU }
{ AGEBD-PLOTS{{ agebd_env_suffix_upper }}, TAU-TOPUP, AGEBD-SCRUBBING:TOPUP-TAU }
{ AGEBD-PLOTS{{ agebd_env_suffix_upper }}, INJRATE-BPM, AGEBD-TAUBPM:INJRATE }
{ AGEBD-PLOTS{{ agebd_env_suffix_upper }}, INJRATE-PCT, AGEBD-TAUPCT:INJRATE }
{ AGEBD-PLOTS{{ agebd_env_suffix_upper }}, MAVAC-AVG, ARIVA-VMAVE:PRESS-AVE }
{ AGEBD-PLOTS{{ agebd_env_suffix_upper }}, MAVAC-MAX, ARIVA-VMAVE:PRESS-MAX }
{ AGEBD-PLOTS{{ agebd_env_suffix_upper }}, FEVAC-AVG, ARIVA-VMAVE-FE:PRESS-AVE }
{ AGEBD-PLOTS{{ agebd_env_suffix_upper }}, FEVAC-MAX, ARIVA-VMAVE-FE:PRESS-MAX }
{ AGEBD-PLOTS@@agebd_env_suffix_upper@@, CURRENT-BPM, AGEBD-DBPM3CURR:CURRENT-AVG }
{ AGEBD-PLOTS@@agebd_env_suffix_upper@@, CURRENT-PCT, ARS07-DPCT-0000:CURR }
{ AGEBD-PLOTS@@agebd_env_suffix_upper@@, TAU-BPM, AGEBD-TAUBPM:TAU }
{ AGEBD-PLOTS@@agebd_env_suffix_upper@@, TAU-PCT, AGEBD-TAUPCT:TAU }
{ AGEBD-PLOTS@@agebd_env_suffix_upper@@, TAU-TOPUP, AGEBD-SCRUBBING:TOPUP-TAU }
{ AGEBD-PLOTS@@agebd_env_suffix_upper@@, INJRATE-BPM, AGEBD-TAUBPM:INJRATE }
{ AGEBD-PLOTS@@agebd_env_suffix_upper@@, INJRATE-PCT, AGEBD-TAUPCT:INJRATE }
{ AGEBD-PLOTS@@agebd_env_suffix_upper@@, MAVAC-AVG, ARIVA-VMAVE:PRESS-AVE }
{ AGEBD-PLOTS@@agebd_env_suffix_upper@@, MAVAC-MAX, ARIVA-VMAVE:PRESS-MAX }
{ AGEBD-PLOTS@@agebd_env_suffix_upper@@, FEVAC-AVG, ARIVA-VMAVE-FE:PRESS-AVE }
{ AGEBD-PLOTS@@agebd_env_suffix_upper@@, FEVAC-MAX, ARIVA-VMAVE-FE:PRESS-MAX }
}
@@ -1,6 +1,6 @@
cpu_architecture: x86_64
epics_version: 7.0.8
ioc_host: sls-vserv-bd-01{{ agebd_env_suffix_lower }}
ioc_port: {{ ioc_port }}
ioc_host: sls-vserv-bd-01@@agebd_env_suffix_lower@@
ioc_port: @@ioc_port@@
os: RHEL8
os_id: rhel
@@ -3,9 +3,9 @@ Description=AGEBD-SERVICE-PLOTS
After=network.target
[Service]
Environment=AGEBD_ENV={{ agebd_env }}
Environment=AGEBD_ENV=@@agebd_env@@
Environment=PYTHONUNBUFFERED=1
ExecStart=/sls/bd/hla/{{ agebd_env }}/bin/start_service.sh PLOTS
ExecStart=/sls/bd/hla/@@agebd_env@@/bin/start_service.sh PLOTS
Restart=no
[Install]
+19
View File
@@ -10,6 +10,7 @@ dependencies = [
{ name = "gitpython" },
{ name = "h5py" },
{ name = "pyepics" },
{ name = "pyyaml" },
{ name = "typer" },
]
@@ -18,6 +19,7 @@ requires-dist = [
{ name = "gitpython", specifier = ">=3.1.50" },
{ name = "h5py", specifier = ">=3.16.0" },
{ name = "pyepics", specifier = ">=3.5.10" },
{ name = "pyyaml", specifier = ">=6.0.3" },
{ name = "typer", specifier = ">=0.23.2" },
]
@@ -506,6 +508,23 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/0b/d7/1959b9648791274998a9c3526f6d0ec8fd2233e4d4acce81bbae76b44b2a/python_dotenv-1.2.2-py3-none-any.whl", hash = "sha256:1d8214789a24de455a8b8bd8ae6fe3c6b69a5e3d64aa8a8e5d68e694bbcb285a", size = 22101, upload-time = "2026-03-01T16:00:25.09Z" },
]
[[package]]
name = "pyyaml"
version = "6.0.3"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/05/8e/961c0007c59b8dd7729d542c61a4d537767a59645b82a0b521206e1e25c2/pyyaml-6.0.3.tar.gz", hash = "sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f", size = 130960, upload-time = "2025-09-25T21:33:16.546Z" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/f4/a0/39350dd17dd6d6c6507025c0e53aef67a9293a6d37d3511f23ea510d5800/pyyaml-6.0.3-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:214ed4befebe12df36bcc8bc2b64b396ca31be9304b8f59e25c11cf94a4c033b", size = 184227, upload-time = "2025-09-25T21:31:46.04Z" },
{ url = "https://files.pythonhosted.org/packages/05/14/52d505b5c59ce73244f59c7a50ecf47093ce4765f116cdb98286a71eeca2/pyyaml-6.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:02ea2dfa234451bbb8772601d7b8e426c2bfa197136796224e50e35a78777956", size = 174019, upload-time = "2025-09-25T21:31:47.706Z" },
{ url = "https://files.pythonhosted.org/packages/43/f7/0e6a5ae5599c838c696adb4e6330a59f463265bfa1e116cfd1fbb0abaaae/pyyaml-6.0.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b30236e45cf30d2b8e7b3e85881719e98507abed1011bf463a8fa23e9c3e98a8", size = 740646, upload-time = "2025-09-25T21:31:49.21Z" },
{ url = "https://files.pythonhosted.org/packages/2f/3a/61b9db1d28f00f8fd0ae760459a5c4bf1b941baf714e207b6eb0657d2578/pyyaml-6.0.3-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:66291b10affd76d76f54fad28e22e51719ef9ba22b29e1d7d03d6777a9174198", size = 840793, upload-time = "2025-09-25T21:31:50.735Z" },
{ url = "https://files.pythonhosted.org/packages/7a/1e/7acc4f0e74c4b3d9531e24739e0ab832a5edf40e64fbae1a9c01941cabd7/pyyaml-6.0.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9c7708761fccb9397fe64bbc0395abcae8c4bf7b0eac081e12b809bf47700d0b", size = 770293, upload-time = "2025-09-25T21:31:51.828Z" },
{ url = "https://files.pythonhosted.org/packages/8b/ef/abd085f06853af0cd59fa5f913d61a8eab65d7639ff2a658d18a25d6a89d/pyyaml-6.0.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:418cf3f2111bc80e0933b2cd8cd04f286338bb88bdc7bc8e6dd775ebde60b5e0", size = 732872, upload-time = "2025-09-25T21:31:53.282Z" },
{ url = "https://files.pythonhosted.org/packages/1f/15/2bc9c8faf6450a8b3c9fc5448ed869c599c0a74ba2669772b1f3a0040180/pyyaml-6.0.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:5e0b74767e5f8c593e8c9b5912019159ed0533c70051e9cce3e8b6aa699fcd69", size = 758828, upload-time = "2025-09-25T21:31:54.807Z" },
{ url = "https://files.pythonhosted.org/packages/a3/00/531e92e88c00f4333ce359e50c19b8d1de9fe8d581b1534e35ccfbc5f393/pyyaml-6.0.3-cp310-cp310-win32.whl", hash = "sha256:28c8d926f98f432f88adc23edf2e6d4921ac26fb084b028c733d01868d19007e", size = 142415, upload-time = "2025-09-25T21:31:55.885Z" },
{ url = "https://files.pythonhosted.org/packages/2a/fa/926c003379b19fca39dd4634818b00dec6c62d87faf628d1394e137354d4/pyyaml-6.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:bdb2c67c6c1390b63c6ff89f210c8fd09d9a1217a465701eac7316313c915e4c", size = 158561, upload-time = "2025-09-25T21:31:57.406Z" },
]
[[package]]
name = "requests"
version = "2.34.2"
@@ -1,129 +1,129 @@
file POSTMORTEMLOG.template {
pattern
{ DEVICE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ }
}
file POSTMORTEMLOG_15min10Hz.template {
pattern
{ DEVICE NAME INP}
# ---------- BEAM CURRENT --------------
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} CURRBPM AGEBD-DBPM3CURR:CURRENT-AVG }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} CURRPCT ARS07-DPCT-0000:CURR }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ CURRBPM AGEBD-DBPM3CURR:CURRENT-AVG }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ CURRPCT ARS07-DPCT-0000:CURR }
# ---------- BEAM LIFETIME --------------
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} TAUBPM AGEBD-TAUBPM:TAU }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} TAUPCT AGEBD-TAUPCT:TAU }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ TAUBPM AGEBD-TAUBPM:TAU }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ TAUPCT AGEBD-TAUPCT:TAU }
# ---------- TUNES --------------
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} QX AGEBD-TUNEBUMP:QX }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} QY AGEBD-TUNEBUMP:QY }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} QZ AGEBD-TUNEBUMP:QZ }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ QX AGEBD-TUNEBUMP:QX }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ QY AGEBD-TUNEBUMP:QY }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ QZ AGEBD-TUNEBUMP:QZ }
# ---------- LOSSES --------------
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS01-DDRM-0375 ARS01-DDRM-0375:FET1_DOSE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ABRTL-DDRM-0670 ABRTL-DDRM-0670:FET1_BIAS_DOSE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ABRTL-DDRM-0950 ABRTL-DDRM-0950:FET1_DOSE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS01-DDRM-1530 ARS01-DDRM-1530:FET1_BIAS_DOSE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} X05LA-DDRM-0330 X05LA-DDRM-0330:FET1_BIAS_DOSE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS05-DDRM-1530 ARS05-DDRM-1530:FET1_BIAS_DOSE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS05-DDRM-3500 ARS05-DDRM-3500:FET1_BIAS_DOSE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} X09LA-DDRM-0330 X09LA-DDRM-0330:FET1_BIAS_DOSE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS09-DDRM-1530 ARS09-DDRM-1530:FET1_BIAS_DOSE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS09-DDRM-3500 ARS09-DDRM-3500:FET2_BIAS_DOSE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS12-DDRM-1530 ARS12-DDRM-1530:FET1_BIAS_DOSE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS12-DDRM-3500 ARS12-DDRM-3500:FET2_BIAS_DOSE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS12-DDRM-4400 ARS12-DDRM-4400:FET2_BIAS_DOSE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS12-DDRM-5480 ARS12-DDRM-5480:FET1_BIAS_DOSE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS01-DDRM-0375 ARS01-DDRM-0375:FET1_DOSE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ABRTL-DDRM-0670 ABRTL-DDRM-0670:FET1_BIAS_DOSE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ABRTL-DDRM-0950 ABRTL-DDRM-0950:FET1_DOSE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS01-DDRM-1530 ARS01-DDRM-1530:FET1_BIAS_DOSE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ X05LA-DDRM-0330 X05LA-DDRM-0330:FET1_BIAS_DOSE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS05-DDRM-1530 ARS05-DDRM-1530:FET1_BIAS_DOSE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS05-DDRM-3500 ARS05-DDRM-3500:FET1_BIAS_DOSE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ X09LA-DDRM-0330 X09LA-DDRM-0330:FET1_BIAS_DOSE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS09-DDRM-1530 ARS09-DDRM-1530:FET1_BIAS_DOSE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS09-DDRM-3500 ARS09-DDRM-3500:FET2_BIAS_DOSE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS12-DDRM-1530 ARS12-DDRM-1530:FET1_BIAS_DOSE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS12-DDRM-3500 ARS12-DDRM-3500:FET2_BIAS_DOSE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS12-DDRM-4400 ARS12-DDRM-4400:FET2_BIAS_DOSE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS12-DDRM-5480 ARS12-DDRM-5480:FET1_BIAS_DOSE }
# ---------- RF --------------
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} MASTERFREQ-SET AGERF-MO01:FREQ-SET }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} MASTERFREQ-GET AGERF-MO01:FREQ-GET }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} RFPOW-0140-INP ARS05-RCAV-0140:CO1i-POWER-MAX }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} RFPOW-0060-INP ARS05-RCAV-0060:CO1i-POWER-MAX }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} RFPOW-0230-INP ARS05-RCAV-0230:CO1i-POWER-MAX }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} RFPOW-0310-INP ARS05-RCAV-0310:CO1i-POWER-MAX }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} RFPOW-0060-REF ARS05-RCAV-0060:CO1r-POWER-MAX }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} RFPOW-0140-REF ARS05-RCAV-0140:CO1r-POWER-MAX }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} RFPOW-0230-REF ARS05-RCAV-0230:CO1r-POWER-MAX }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} RFPOW-0310-REF ARS05-RCAV-0310:CO1r-POWER-MAX }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ MASTERFREQ-SET AGERF-MO01:FREQ-SET }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ MASTERFREQ-GET AGERF-MO01:FREQ-GET }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ RFPOW-0140-INP ARS05-RCAV-0140:CO1i-POWER-MAX }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ RFPOW-0060-INP ARS05-RCAV-0060:CO1i-POWER-MAX }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ RFPOW-0230-INP ARS05-RCAV-0230:CO1i-POWER-MAX }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ RFPOW-0310-INP ARS05-RCAV-0310:CO1i-POWER-MAX }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ RFPOW-0060-REF ARS05-RCAV-0060:CO1r-POWER-MAX }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ RFPOW-0140-REF ARS05-RCAV-0140:CO1r-POWER-MAX }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ RFPOW-0230-REF ARS05-RCAV-0230:CO1r-POWER-MAX }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ RFPOW-0310-REF ARS05-RCAV-0310:CO1r-POWER-MAX }
# ---------- BEAM SIZE --------------
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} X01DD-SIGX X01DD-FE-CAM1:SIG-X }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} X01DD-SIGY X01DD-FE-CAM1:SIG-Y }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} X08DB-SIGX X08DB-FE-CAM1:SIG-X }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} X08DB-SIGY X08DB-FE-CAM1:SIG-Y }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ X01DD-SIGX X01DD-FE-CAM1:SIG-X }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ X01DD-SIGY X01DD-FE-CAM1:SIG-Y }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ X08DB-SIGX X08DB-FE-CAM1:SIG-X }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ X08DB-SIGY X08DB-FE-CAM1:SIG-Y }
# ---------- VACUUM --------------
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} VACMAX ARIVA-VMAVE:PRESS-MAX }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} VACMAXFE ARIVA-VMAVE-FE:PRESS-MAX }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS01-VMCC-0110 ARS01-VMCC-0110:PRESSURE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS01-VMCC-0210 ARS01-VMCC-0210:PRESSURE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS01-VMCC-0225 ARS01-VMCC-0225:PRESSURE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS01-VMCC-0310 ARS01-VMCC-0310:PRESSURE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS01-VMCC-1550 ARS01-VMCC-1550:PRESSURE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS01-VMCC-3510 ARS01-VMCC-3510:PRESSURE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS01-VMCC-5460 ARS01-VMCC-5460:PRESSURE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS02-VMCC-0110 ARS02-VMCC-0110:PRESSURE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS02-VMCC-0210 ARS02-VMCC-0210:PRESSURE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS02-VMCC-0310 ARS02-VMCC-0310:PRESSURE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS02-VMCC-1550 ARS02-VMCC-1550:PRESSURE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS02-VMCC-3510 ARS02-VMCC-3510:PRESSURE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS02-VMCC-5460 ARS02-VMCC-5460:PRESSURE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS03-VMCC-0110 ARS03-VMCC-0110:PRESSURE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS03-VMCC-0320 ARS03-VMCC-0320:PRESSURE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS03-VMCC-1550 ARS03-VMCC-1550:PRESSURE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS03-VMCC-3510 ARS03-VMCC-3510:PRESSURE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS03-VMCC-5460 ARS03-VMCC-5460:PRESSURE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS04-VMCC-0110 ARS04-VMCC-0110:PRESSURE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS04-VMCC-1550 ARS04-VMCC-1550:PRESSURE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS04-VMCC-3510 ARS04-VMCC-3510:PRESSURE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS04-VMCC-5460 ARS04-VMCC-5460:PRESSURE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS05-VMCC-0110 ARS05-VMCC-0110:PRESSURE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS05-VMCC-0115 ARS05-VMCC-0115:PRESSURE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS05-VMCC-0210 ARS05-VMCC-0210:PRESSURE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS05-VMCC-0215 ARS05-VMCC-0215:PRESSURE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS05-VMCC-0310 ARS05-VMCC-0310:PRESSURE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS05-VMCC-0315 ARS05-VMCC-0315:PRESSURE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS05-VMCC-0410 ARS05-VMCC-0410:PRESSURE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS05-VMCC-0415 ARS05-VMCC-0415:PRESSURE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS05-VMCC-0510 ARS05-VMCC-0510:PRESSURE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS05-VMCC-0520 ARS05-VMCC-0520:PRESSURE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS05-VMCC-0530 ARS05-VMCC-0530:PRESSURE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS05-VMCC-0810 ARS05-VMCC-0810:PRESSURE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS05-VMCC-1550 ARS05-VMCC-1550:PRESSURE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS05-VMCC-3510 ARS05-VMCC-3510:PRESSURE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS05-VMCC-5460 ARS05-VMCC-5460:PRESSURE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS06-VMCC-0110 ARS06-VMCC-0110:PRESSURE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS06-VMCC-1550 ARS06-VMCC-1550:PRESSURE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS06-VMCC-3510 ARS06-VMCC-3510:PRESSURE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS06-VMCC-5460 ARS06-VMCC-5460:PRESSURE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS07-VMCC-0010 ARS07-VMCC-0010:PRESSURE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS07-VMCC-0120 ARS07-VMCC-0120:PRESSURE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS07-VMCC-0210 ARS07-VMCC-0210:PRESSURE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS07-VMCC-1550 ARS07-VMCC-1550:PRESSURE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS07-VMCC-3510 ARS07-VMCC-3510:PRESSURE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS07-VMCC-5460 ARS07-VMCC-5460:PRESSURE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS08-VMCC-0110 ARS08-VMCC-0110:PRESSURE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS08-VMCC-1550 ARS08-VMCC-1550:PRESSURE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS08-VMCC-3510 ARS08-VMCC-3510:PRESSURE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS08-VMCC-5460 ARS08-VMCC-5460:PRESSURE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS09-VMCC-0110 ARS09-VMCC-0110:PRESSURE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS09-VMCC-0120 ARS09-VMCC-0120:PRESSURE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS09-VMCC-0410 ARS09-VMCC-0410:PRESSURE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS09-VMCC-0510 ARS09-VMCC-0510:PRESSURE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS09-VMCC-0810 ARS09-VMCC-0810:PRESSURE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS09-VMCC-1550 ARS09-VMCC-1550:PRESSURE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS09-VMCC-3510 ARS09-VMCC-3510:PRESSURE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS09-VMCC-5460 ARS09-VMCC-5460:PRESSURE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS10-VMCC-0110 ARS10-VMCC-0110:PRESSURE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS10-VMCC-1550 ARS10-VMCC-1550:PRESSURE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS10-VMCC-3510 ARS10-VMCC-3510:PRESSURE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS10-VMCC-5460 ARS10-VMCC-5460:PRESSURE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS11-VMCC-0110 ARS11-VMCC-0110:PRESSURE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS11-VMCC-0210 ARS11-VMCC-0210:PRESSURE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS11-VMCC-0310 ARS11-VMCC-0310:PRESSURE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS11-VMCC-0410 ARS11-VMCC-0410:PRESSURE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS11-VMCC-0510 ARS11-VMCC-0510:PRESSURE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS11-VMCC-1550 ARS11-VMCC-1550:PRESSURE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS11-VMCC-3510 ARS11-VMCC-3510:PRESSURE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS11-VMCC-5460 ARS11-VMCC-5460:PRESSURE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS12-VMCC-0110 ARS12-VMCC-0110:PRESSURE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS12-VMCC-1550 ARS12-VMCC-1550:PRESSURE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS12-VMCC-3510 ARS12-VMCC-3510:PRESSURE }
{ AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }} ARS12-VMCC-5460 ARS12-VMCC-5460:PRESSURE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ VACMAX ARIVA-VMAVE:PRESS-MAX }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ VACMAXFE ARIVA-VMAVE-FE:PRESS-MAX }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS01-VMCC-0110 ARS01-VMCC-0110:PRESSURE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS01-VMCC-0210 ARS01-VMCC-0210:PRESSURE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS01-VMCC-0225 ARS01-VMCC-0225:PRESSURE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS01-VMCC-0310 ARS01-VMCC-0310:PRESSURE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS01-VMCC-1550 ARS01-VMCC-1550:PRESSURE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS01-VMCC-3510 ARS01-VMCC-3510:PRESSURE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS01-VMCC-5460 ARS01-VMCC-5460:PRESSURE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS02-VMCC-0110 ARS02-VMCC-0110:PRESSURE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS02-VMCC-0210 ARS02-VMCC-0210:PRESSURE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS02-VMCC-0310 ARS02-VMCC-0310:PRESSURE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS02-VMCC-1550 ARS02-VMCC-1550:PRESSURE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS02-VMCC-3510 ARS02-VMCC-3510:PRESSURE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS02-VMCC-5460 ARS02-VMCC-5460:PRESSURE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS03-VMCC-0110 ARS03-VMCC-0110:PRESSURE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS03-VMCC-0320 ARS03-VMCC-0320:PRESSURE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS03-VMCC-1550 ARS03-VMCC-1550:PRESSURE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS03-VMCC-3510 ARS03-VMCC-3510:PRESSURE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS03-VMCC-5460 ARS03-VMCC-5460:PRESSURE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS04-VMCC-0110 ARS04-VMCC-0110:PRESSURE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS04-VMCC-1550 ARS04-VMCC-1550:PRESSURE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS04-VMCC-3510 ARS04-VMCC-3510:PRESSURE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS04-VMCC-5460 ARS04-VMCC-5460:PRESSURE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS05-VMCC-0110 ARS05-VMCC-0110:PRESSURE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS05-VMCC-0115 ARS05-VMCC-0115:PRESSURE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS05-VMCC-0210 ARS05-VMCC-0210:PRESSURE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS05-VMCC-0215 ARS05-VMCC-0215:PRESSURE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS05-VMCC-0310 ARS05-VMCC-0310:PRESSURE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS05-VMCC-0315 ARS05-VMCC-0315:PRESSURE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS05-VMCC-0410 ARS05-VMCC-0410:PRESSURE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS05-VMCC-0415 ARS05-VMCC-0415:PRESSURE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS05-VMCC-0510 ARS05-VMCC-0510:PRESSURE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS05-VMCC-0520 ARS05-VMCC-0520:PRESSURE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS05-VMCC-0530 ARS05-VMCC-0530:PRESSURE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS05-VMCC-0810 ARS05-VMCC-0810:PRESSURE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS05-VMCC-1550 ARS05-VMCC-1550:PRESSURE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS05-VMCC-3510 ARS05-VMCC-3510:PRESSURE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS05-VMCC-5460 ARS05-VMCC-5460:PRESSURE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS06-VMCC-0110 ARS06-VMCC-0110:PRESSURE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS06-VMCC-1550 ARS06-VMCC-1550:PRESSURE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS06-VMCC-3510 ARS06-VMCC-3510:PRESSURE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS06-VMCC-5460 ARS06-VMCC-5460:PRESSURE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS07-VMCC-0010 ARS07-VMCC-0010:PRESSURE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS07-VMCC-0120 ARS07-VMCC-0120:PRESSURE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS07-VMCC-0210 ARS07-VMCC-0210:PRESSURE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS07-VMCC-1550 ARS07-VMCC-1550:PRESSURE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS07-VMCC-3510 ARS07-VMCC-3510:PRESSURE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS07-VMCC-5460 ARS07-VMCC-5460:PRESSURE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS08-VMCC-0110 ARS08-VMCC-0110:PRESSURE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS08-VMCC-1550 ARS08-VMCC-1550:PRESSURE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS08-VMCC-3510 ARS08-VMCC-3510:PRESSURE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS08-VMCC-5460 ARS08-VMCC-5460:PRESSURE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS09-VMCC-0110 ARS09-VMCC-0110:PRESSURE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS09-VMCC-0120 ARS09-VMCC-0120:PRESSURE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS09-VMCC-0410 ARS09-VMCC-0410:PRESSURE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS09-VMCC-0510 ARS09-VMCC-0510:PRESSURE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS09-VMCC-0810 ARS09-VMCC-0810:PRESSURE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS09-VMCC-1550 ARS09-VMCC-1550:PRESSURE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS09-VMCC-3510 ARS09-VMCC-3510:PRESSURE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS09-VMCC-5460 ARS09-VMCC-5460:PRESSURE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS10-VMCC-0110 ARS10-VMCC-0110:PRESSURE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS10-VMCC-1550 ARS10-VMCC-1550:PRESSURE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS10-VMCC-3510 ARS10-VMCC-3510:PRESSURE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS10-VMCC-5460 ARS10-VMCC-5460:PRESSURE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS11-VMCC-0110 ARS11-VMCC-0110:PRESSURE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS11-VMCC-0210 ARS11-VMCC-0210:PRESSURE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS11-VMCC-0310 ARS11-VMCC-0310:PRESSURE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS11-VMCC-0410 ARS11-VMCC-0410:PRESSURE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS11-VMCC-0510 ARS11-VMCC-0510:PRESSURE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS11-VMCC-1550 ARS11-VMCC-1550:PRESSURE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS11-VMCC-3510 ARS11-VMCC-3510:PRESSURE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS11-VMCC-5460 ARS11-VMCC-5460:PRESSURE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS12-VMCC-0110 ARS12-VMCC-0110:PRESSURE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS12-VMCC-1550 ARS12-VMCC-1550:PRESSURE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS12-VMCC-3510 ARS12-VMCC-3510:PRESSURE }
{ AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@ ARS12-VMCC-5460 ARS12-VMCC-5460:PRESSURE }
}
@@ -1,6 +1,6 @@
cpu_architecture: x86_64
epics_version: 7.0.8
ioc_host: sls-vserv-bd-01{{ agebd_env_suffix_lower }}
ioc_port: {{ ioc_port }}
ioc_host: sls-vserv-bd-01@@agebd_env_suffix_lower@@
ioc_port: @@ioc_port@@
os: RHEL8
os_id: rhel
@@ -3,9 +3,9 @@ Description=AGEBD-SERVICE-POSTMORTEMLOG
After=network.target
[Service]
Environment=AGEBD_ENV={{ agebd_env }}
Environment=AGEBD_ENV=@@agebd_env@@
Environment=PYTHONUNBUFFERED=1
ExecStart=/sls/bd/hla/{{ agebd_env }}/bin/start_service.sh POSTMORTEMLOG
ExecStart=/sls/bd/hla/@@agebd_env@@/bin/start_service.sh POSTMORTEMLOG
Restart=no
[Install]
+19
View File
@@ -10,6 +10,7 @@ dependencies = [
{ name = "gitpython" },
{ name = "h5py" },
{ name = "pyepics" },
{ name = "pyyaml" },
{ name = "typer" },
]
@@ -18,6 +19,7 @@ requires-dist = [
{ name = "gitpython", specifier = ">=3.1.50" },
{ name = "h5py", specifier = ">=3.16.0" },
{ name = "pyepics", specifier = ">=3.5.10" },
{ name = "pyyaml", specifier = ">=6.0.3" },
{ name = "typer", specifier = ">=0.23.2" },
]
@@ -284,6 +286,23 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/0b/d7/1959b9648791274998a9c3526f6d0ec8fd2233e4d4acce81bbae76b44b2a/python_dotenv-1.2.2-py3-none-any.whl", hash = "sha256:1d8214789a24de455a8b8bd8ae6fe3c6b69a5e3d64aa8a8e5d68e694bbcb285a", size = 22101, upload-time = "2026-03-01T16:00:25.09Z" },
]
[[package]]
name = "pyyaml"
version = "6.0.3"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/05/8e/961c0007c59b8dd7729d542c61a4d537767a59645b82a0b521206e1e25c2/pyyaml-6.0.3.tar.gz", hash = "sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f", size = 130960, upload-time = "2025-09-25T21:33:16.546Z" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/f4/a0/39350dd17dd6d6c6507025c0e53aef67a9293a6d37d3511f23ea510d5800/pyyaml-6.0.3-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:214ed4befebe12df36bcc8bc2b64b396ca31be9304b8f59e25c11cf94a4c033b", size = 184227, upload-time = "2025-09-25T21:31:46.04Z" },
{ url = "https://files.pythonhosted.org/packages/05/14/52d505b5c59ce73244f59c7a50ecf47093ce4765f116cdb98286a71eeca2/pyyaml-6.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:02ea2dfa234451bbb8772601d7b8e426c2bfa197136796224e50e35a78777956", size = 174019, upload-time = "2025-09-25T21:31:47.706Z" },
{ url = "https://files.pythonhosted.org/packages/43/f7/0e6a5ae5599c838c696adb4e6330a59f463265bfa1e116cfd1fbb0abaaae/pyyaml-6.0.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b30236e45cf30d2b8e7b3e85881719e98507abed1011bf463a8fa23e9c3e98a8", size = 740646, upload-time = "2025-09-25T21:31:49.21Z" },
{ url = "https://files.pythonhosted.org/packages/2f/3a/61b9db1d28f00f8fd0ae760459a5c4bf1b941baf714e207b6eb0657d2578/pyyaml-6.0.3-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:66291b10affd76d76f54fad28e22e51719ef9ba22b29e1d7d03d6777a9174198", size = 840793, upload-time = "2025-09-25T21:31:50.735Z" },
{ url = "https://files.pythonhosted.org/packages/7a/1e/7acc4f0e74c4b3d9531e24739e0ab832a5edf40e64fbae1a9c01941cabd7/pyyaml-6.0.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9c7708761fccb9397fe64bbc0395abcae8c4bf7b0eac081e12b809bf47700d0b", size = 770293, upload-time = "2025-09-25T21:31:51.828Z" },
{ url = "https://files.pythonhosted.org/packages/8b/ef/abd085f06853af0cd59fa5f913d61a8eab65d7639ff2a658d18a25d6a89d/pyyaml-6.0.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:418cf3f2111bc80e0933b2cd8cd04f286338bb88bdc7bc8e6dd775ebde60b5e0", size = 732872, upload-time = "2025-09-25T21:31:53.282Z" },
{ url = "https://files.pythonhosted.org/packages/1f/15/2bc9c8faf6450a8b3c9fc5448ed869c599c0a74ba2669772b1f3a0040180/pyyaml-6.0.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:5e0b74767e5f8c593e8c9b5912019159ed0533c70051e9cce3e8b6aa699fcd69", size = 758828, upload-time = "2025-09-25T21:31:54.807Z" },
{ url = "https://files.pythonhosted.org/packages/a3/00/531e92e88c00f4333ce359e50c19b8d1de9fe8d581b1534e35ccfbc5f393/pyyaml-6.0.3-cp310-cp310-win32.whl", hash = "sha256:28c8d926f98f432f88adc23edf2e6d4921ac26fb084b028c733d01868d19007e", size = 142415, upload-time = "2025-09-25T21:31:55.885Z" },
{ url = "https://files.pythonhosted.org/packages/2a/fa/926c003379b19fca39dd4634818b00dec6c62d87faf628d1394e137354d4/pyyaml-6.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:bdb2c67c6c1390b63c6ff89f210c8fd09d9a1217a465701eac7316313c915e4c", size = 158561, upload-time = "2025-09-25T21:31:57.406Z" },
]
[[package]]
name = "rich"
version = "15.0.0"
@@ -1,4 +1,4 @@
file SCRUBBING.template {
pattern { DEVICE }
{ AGEBD-SCRUBBING{{ agebd_env_suffix_upper }} }
{ AGEBD-SCRUBBING@@agebd_env_suffix_upper@@ }
}
@@ -1,6 +1,6 @@
cpu_architecture: x86_64
epics_version: 7.0.8
ioc_host: sls-vserv-bd-01{{ agebd_env_suffix_lower }}
ioc_port: {{ ioc_port }}
ioc_host: sls-vserv-bd-01@@agebd_env_suffix_lower@@
ioc_port: @@ioc_port@@
os: RHEL8
os_id: rhel
@@ -3,9 +3,9 @@ Description=AGEBD-SERVICE-SCRUBBING
After=network.target
[Service]
Environment=AGEBD_ENV={{ agebd_env }}
Environment=AGEBD_ENV=@@agebd_env@@
Environment=PYTHONUNBUFFERED=1
ExecStart=/sls/bd/hla/{{ agebd_env }}/bin/start_service.sh SCRUBBING
ExecStart=/sls/bd/hla/@@agebd_env@@/bin/start_service.sh SCRUBBING
Restart=no
[Install]
+19
View File
@@ -10,6 +10,7 @@ dependencies = [
{ name = "gitpython" },
{ name = "h5py" },
{ name = "pyepics" },
{ name = "pyyaml" },
{ name = "typer" },
]
@@ -18,6 +19,7 @@ requires-dist = [
{ name = "gitpython", specifier = ">=3.1.50" },
{ name = "h5py", specifier = ">=3.16.0" },
{ name = "pyepics", specifier = ">=3.5.10" },
{ name = "pyyaml", specifier = ">=6.0.3" },
{ name = "typer", specifier = ">=0.23.2" },
]
@@ -373,6 +375,23 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/0b/d7/1959b9648791274998a9c3526f6d0ec8fd2233e4d4acce81bbae76b44b2a/python_dotenv-1.2.2-py3-none-any.whl", hash = "sha256:1d8214789a24de455a8b8bd8ae6fe3c6b69a5e3d64aa8a8e5d68e694bbcb285a", size = 22101, upload-time = "2026-03-01T16:00:25.09Z" },
]
[[package]]
name = "pyyaml"
version = "6.0.3"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/05/8e/961c0007c59b8dd7729d542c61a4d537767a59645b82a0b521206e1e25c2/pyyaml-6.0.3.tar.gz", hash = "sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f", size = 130960, upload-time = "2025-09-25T21:33:16.546Z" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/f4/a0/39350dd17dd6d6c6507025c0e53aef67a9293a6d37d3511f23ea510d5800/pyyaml-6.0.3-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:214ed4befebe12df36bcc8bc2b64b396ca31be9304b8f59e25c11cf94a4c033b", size = 184227, upload-time = "2025-09-25T21:31:46.04Z" },
{ url = "https://files.pythonhosted.org/packages/05/14/52d505b5c59ce73244f59c7a50ecf47093ce4765f116cdb98286a71eeca2/pyyaml-6.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:02ea2dfa234451bbb8772601d7b8e426c2bfa197136796224e50e35a78777956", size = 174019, upload-time = "2025-09-25T21:31:47.706Z" },
{ url = "https://files.pythonhosted.org/packages/43/f7/0e6a5ae5599c838c696adb4e6330a59f463265bfa1e116cfd1fbb0abaaae/pyyaml-6.0.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b30236e45cf30d2b8e7b3e85881719e98507abed1011bf463a8fa23e9c3e98a8", size = 740646, upload-time = "2025-09-25T21:31:49.21Z" },
{ url = "https://files.pythonhosted.org/packages/2f/3a/61b9db1d28f00f8fd0ae760459a5c4bf1b941baf714e207b6eb0657d2578/pyyaml-6.0.3-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:66291b10affd76d76f54fad28e22e51719ef9ba22b29e1d7d03d6777a9174198", size = 840793, upload-time = "2025-09-25T21:31:50.735Z" },
{ url = "https://files.pythonhosted.org/packages/7a/1e/7acc4f0e74c4b3d9531e24739e0ab832a5edf40e64fbae1a9c01941cabd7/pyyaml-6.0.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9c7708761fccb9397fe64bbc0395abcae8c4bf7b0eac081e12b809bf47700d0b", size = 770293, upload-time = "2025-09-25T21:31:51.828Z" },
{ url = "https://files.pythonhosted.org/packages/8b/ef/abd085f06853af0cd59fa5f913d61a8eab65d7639ff2a658d18a25d6a89d/pyyaml-6.0.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:418cf3f2111bc80e0933b2cd8cd04f286338bb88bdc7bc8e6dd775ebde60b5e0", size = 732872, upload-time = "2025-09-25T21:31:53.282Z" },
{ url = "https://files.pythonhosted.org/packages/1f/15/2bc9c8faf6450a8b3c9fc5448ed869c599c0a74ba2669772b1f3a0040180/pyyaml-6.0.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:5e0b74767e5f8c593e8c9b5912019159ed0533c70051e9cce3e8b6aa699fcd69", size = 758828, upload-time = "2025-09-25T21:31:54.807Z" },
{ url = "https://files.pythonhosted.org/packages/a3/00/531e92e88c00f4333ce359e50c19b8d1de9fe8d581b1534e35ccfbc5f393/pyyaml-6.0.3-cp310-cp310-win32.whl", hash = "sha256:28c8d926f98f432f88adc23edf2e6d4921ac26fb084b028c733d01868d19007e", size = 142415, upload-time = "2025-09-25T21:31:55.885Z" },
{ url = "https://files.pythonhosted.org/packages/2a/fa/926c003379b19fca39dd4634818b00dec6c62d87faf628d1394e137354d4/pyyaml-6.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:bdb2c67c6c1390b63c6ff89f210c8fd09d9a1217a465701eac7316313c915e4c", size = 158561, upload-time = "2025-09-25T21:31:57.406Z" },
]
[[package]]
name = "requests"
version = "2.34.2"
@@ -1,4 +1,4 @@
file SHIFTTOOL.template {
pattern { DEVICE }
{ AGEBD-SHIFTTOOL{{ agebd_env_suffix_upper }} }
{ AGEBD-SHIFTTOOL@@agebd_env_suffix_upper@@ }
}
@@ -1,6 +1,6 @@
cpu_architecture: x86_64
epics_version: 7.0.8
ioc_host: sls-vserv-bd-01{{ agebd_env_suffix_lower }}
ioc_port: {{ ioc_port }}
ioc_host: sls-vserv-bd-01@@agebd_env_suffix_lower@@
ioc_port: @@ioc_port@@
os: RHEL8
os_id: rhel
@@ -3,9 +3,9 @@ Description=AGEBD-SERVICE-SHIFTTOOL
After=network.target
[Service]
Environment=AGEBD_ENV={{ agebd_env }}
Environment=AGEBD_ENV=@@agebd_env@@
Environment=PYTHONUNBUFFERED=1
ExecStart=/sls/bd/hla/{{ agebd_env }}/bin/start_service.sh SHIFTTOOL
ExecStart=/sls/bd/hla/@@agebd_env@@/bin/start_service.sh SHIFTTOOL
Restart=no
[Install]
+19
View File
@@ -10,6 +10,7 @@ dependencies = [
{ name = "gitpython" },
{ name = "h5py" },
{ name = "pyepics" },
{ name = "pyyaml" },
{ name = "typer" },
]
@@ -18,6 +19,7 @@ requires-dist = [
{ name = "gitpython", specifier = ">=3.1.50" },
{ name = "h5py", specifier = ">=3.16.0" },
{ name = "pyepics", specifier = ">=3.5.10" },
{ name = "pyyaml", specifier = ">=6.0.3" },
{ name = "typer", specifier = ">=0.23.2" },
]
@@ -284,6 +286,23 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/0b/d7/1959b9648791274998a9c3526f6d0ec8fd2233e4d4acce81bbae76b44b2a/python_dotenv-1.2.2-py3-none-any.whl", hash = "sha256:1d8214789a24de455a8b8bd8ae6fe3c6b69a5e3d64aa8a8e5d68e694bbcb285a", size = 22101, upload-time = "2026-03-01T16:00:25.09Z" },
]
[[package]]
name = "pyyaml"
version = "6.0.3"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/05/8e/961c0007c59b8dd7729d542c61a4d537767a59645b82a0b521206e1e25c2/pyyaml-6.0.3.tar.gz", hash = "sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f", size = 130960, upload-time = "2025-09-25T21:33:16.546Z" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/f4/a0/39350dd17dd6d6c6507025c0e53aef67a9293a6d37d3511f23ea510d5800/pyyaml-6.0.3-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:214ed4befebe12df36bcc8bc2b64b396ca31be9304b8f59e25c11cf94a4c033b", size = 184227, upload-time = "2025-09-25T21:31:46.04Z" },
{ url = "https://files.pythonhosted.org/packages/05/14/52d505b5c59ce73244f59c7a50ecf47093ce4765f116cdb98286a71eeca2/pyyaml-6.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:02ea2dfa234451bbb8772601d7b8e426c2bfa197136796224e50e35a78777956", size = 174019, upload-time = "2025-09-25T21:31:47.706Z" },
{ url = "https://files.pythonhosted.org/packages/43/f7/0e6a5ae5599c838c696adb4e6330a59f463265bfa1e116cfd1fbb0abaaae/pyyaml-6.0.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b30236e45cf30d2b8e7b3e85881719e98507abed1011bf463a8fa23e9c3e98a8", size = 740646, upload-time = "2025-09-25T21:31:49.21Z" },
{ url = "https://files.pythonhosted.org/packages/2f/3a/61b9db1d28f00f8fd0ae760459a5c4bf1b941baf714e207b6eb0657d2578/pyyaml-6.0.3-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:66291b10affd76d76f54fad28e22e51719ef9ba22b29e1d7d03d6777a9174198", size = 840793, upload-time = "2025-09-25T21:31:50.735Z" },
{ url = "https://files.pythonhosted.org/packages/7a/1e/7acc4f0e74c4b3d9531e24739e0ab832a5edf40e64fbae1a9c01941cabd7/pyyaml-6.0.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9c7708761fccb9397fe64bbc0395abcae8c4bf7b0eac081e12b809bf47700d0b", size = 770293, upload-time = "2025-09-25T21:31:51.828Z" },
{ url = "https://files.pythonhosted.org/packages/8b/ef/abd085f06853af0cd59fa5f913d61a8eab65d7639ff2a658d18a25d6a89d/pyyaml-6.0.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:418cf3f2111bc80e0933b2cd8cd04f286338bb88bdc7bc8e6dd775ebde60b5e0", size = 732872, upload-time = "2025-09-25T21:31:53.282Z" },
{ url = "https://files.pythonhosted.org/packages/1f/15/2bc9c8faf6450a8b3c9fc5448ed869c599c0a74ba2669772b1f3a0040180/pyyaml-6.0.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:5e0b74767e5f8c593e8c9b5912019159ed0533c70051e9cce3e8b6aa699fcd69", size = 758828, upload-time = "2025-09-25T21:31:54.807Z" },
{ url = "https://files.pythonhosted.org/packages/a3/00/531e92e88c00f4333ce359e50c19b8d1de9fe8d581b1534e35ccfbc5f393/pyyaml-6.0.3-cp310-cp310-win32.whl", hash = "sha256:28c8d926f98f432f88adc23edf2e6d4921ac26fb084b028c733d01868d19007e", size = 142415, upload-time = "2025-09-25T21:31:55.885Z" },
{ url = "https://files.pythonhosted.org/packages/2a/fa/926c003379b19fca39dd4634818b00dec6c62d87faf628d1394e137354d4/pyyaml-6.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:bdb2c67c6c1390b63c6ff89f210c8fd09d9a1217a465701eac7316313c915e4c", size = 158561, upload-time = "2025-09-25T21:31:57.406Z" },
]
[[package]]
name = "rich"
version = "15.0.0"
@@ -1,4 +1,4 @@
file TAUBPM.template {
pattern { DEVICE }
{ AGEBD-TAUBPM{{ agebd_env_suffix_upper }} }
{ AGEBD-TAUBPM@@agebd_env_suffix_upper@@ }
}
@@ -1,6 +1,6 @@
cpu_architecture: x86_64
epics_version: 7.0.8
ioc_host: sls-vserv-bd-01{{ agebd_env_suffix_lower }}
ioc_port: {{ ioc_port }}
ioc_host: sls-vserv-bd-01@@agebd_env_suffix_lower@@
ioc_port: @@ioc_port@@
os: RHEL8
os_id: rhel
@@ -3,9 +3,9 @@ Description=AGEBD-SERVICE-TAUBPM
After=network.target
[Service]
Environment=AGEBD_ENV={{ agebd_env }}
Environment=AGEBD_ENV=@@agebd_env@@
Environment=PYTHONUNBUFFERED=1
ExecStart=/sls/bd/hla/{{ agebd_env }}/bin/start_service.sh TAUBPM
ExecStart=/sls/bd/hla/@@agebd_env@@/bin/start_service.sh TAUBPM
Restart=no
[Install]
+19
View File
@@ -10,6 +10,7 @@ dependencies = [
{ name = "gitpython" },
{ name = "h5py" },
{ name = "pyepics" },
{ name = "pyyaml" },
{ name = "typer" },
]
@@ -18,6 +19,7 @@ requires-dist = [
{ name = "gitpython", specifier = ">=3.1.50" },
{ name = "h5py", specifier = ">=3.16.0" },
{ name = "pyepics", specifier = ">=3.5.10" },
{ name = "pyyaml", specifier = ">=6.0.3" },
{ name = "typer", specifier = ">=0.23.2" },
]
@@ -284,6 +286,23 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/0b/d7/1959b9648791274998a9c3526f6d0ec8fd2233e4d4acce81bbae76b44b2a/python_dotenv-1.2.2-py3-none-any.whl", hash = "sha256:1d8214789a24de455a8b8bd8ae6fe3c6b69a5e3d64aa8a8e5d68e694bbcb285a", size = 22101, upload-time = "2026-03-01T16:00:25.09Z" },
]
[[package]]
name = "pyyaml"
version = "6.0.3"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/05/8e/961c0007c59b8dd7729d542c61a4d537767a59645b82a0b521206e1e25c2/pyyaml-6.0.3.tar.gz", hash = "sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f", size = 130960, upload-time = "2025-09-25T21:33:16.546Z" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/f4/a0/39350dd17dd6d6c6507025c0e53aef67a9293a6d37d3511f23ea510d5800/pyyaml-6.0.3-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:214ed4befebe12df36bcc8bc2b64b396ca31be9304b8f59e25c11cf94a4c033b", size = 184227, upload-time = "2025-09-25T21:31:46.04Z" },
{ url = "https://files.pythonhosted.org/packages/05/14/52d505b5c59ce73244f59c7a50ecf47093ce4765f116cdb98286a71eeca2/pyyaml-6.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:02ea2dfa234451bbb8772601d7b8e426c2bfa197136796224e50e35a78777956", size = 174019, upload-time = "2025-09-25T21:31:47.706Z" },
{ url = "https://files.pythonhosted.org/packages/43/f7/0e6a5ae5599c838c696adb4e6330a59f463265bfa1e116cfd1fbb0abaaae/pyyaml-6.0.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b30236e45cf30d2b8e7b3e85881719e98507abed1011bf463a8fa23e9c3e98a8", size = 740646, upload-time = "2025-09-25T21:31:49.21Z" },
{ url = "https://files.pythonhosted.org/packages/2f/3a/61b9db1d28f00f8fd0ae760459a5c4bf1b941baf714e207b6eb0657d2578/pyyaml-6.0.3-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:66291b10affd76d76f54fad28e22e51719ef9ba22b29e1d7d03d6777a9174198", size = 840793, upload-time = "2025-09-25T21:31:50.735Z" },
{ url = "https://files.pythonhosted.org/packages/7a/1e/7acc4f0e74c4b3d9531e24739e0ab832a5edf40e64fbae1a9c01941cabd7/pyyaml-6.0.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9c7708761fccb9397fe64bbc0395abcae8c4bf7b0eac081e12b809bf47700d0b", size = 770293, upload-time = "2025-09-25T21:31:51.828Z" },
{ url = "https://files.pythonhosted.org/packages/8b/ef/abd085f06853af0cd59fa5f913d61a8eab65d7639ff2a658d18a25d6a89d/pyyaml-6.0.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:418cf3f2111bc80e0933b2cd8cd04f286338bb88bdc7bc8e6dd775ebde60b5e0", size = 732872, upload-time = "2025-09-25T21:31:53.282Z" },
{ url = "https://files.pythonhosted.org/packages/1f/15/2bc9c8faf6450a8b3c9fc5448ed869c599c0a74ba2669772b1f3a0040180/pyyaml-6.0.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:5e0b74767e5f8c593e8c9b5912019159ed0533c70051e9cce3e8b6aa699fcd69", size = 758828, upload-time = "2025-09-25T21:31:54.807Z" },
{ url = "https://files.pythonhosted.org/packages/a3/00/531e92e88c00f4333ce359e50c19b8d1de9fe8d581b1534e35ccfbc5f393/pyyaml-6.0.3-cp310-cp310-win32.whl", hash = "sha256:28c8d926f98f432f88adc23edf2e6d4921ac26fb084b028c733d01868d19007e", size = 142415, upload-time = "2025-09-25T21:31:55.885Z" },
{ url = "https://files.pythonhosted.org/packages/2a/fa/926c003379b19fca39dd4634818b00dec6c62d87faf628d1394e137354d4/pyyaml-6.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:bdb2c67c6c1390b63c6ff89f210c8fd09d9a1217a465701eac7316313c915e4c", size = 158561, upload-time = "2025-09-25T21:31:57.406Z" },
]
[[package]]
name = "rich"
version = "15.0.0"
@@ -1,4 +1,4 @@
file TAUPCT.template {
pattern { DEVICE }
{ AGEBD-TAUPCT{{ agebd_env_suffix_upper }} }
{ AGEBD-TAUPCT@@agebd_env_suffix_upper@@ }
}
@@ -1,6 +1,6 @@
cpu_architecture: x86_64
epics_version: 7.0.8
ioc_host: sls-vserv-bd-01{{ agebd_env_suffix_lower }}
ioc_port: {{ ioc_port }}
ioc_host: sls-vserv-bd-01@@agebd_env_suffix_lower@@
ioc_port: @@ioc_port@@
os: RHEL8
os_id: rhel
@@ -3,9 +3,9 @@ Description=AGEBD-SERVICE-TAUPCT
After=network.target
[Service]
Environment=AGEBD_ENV={{ agebd_env }}
Environment=AGEBD_ENV=@@agebd_env@@
Environment=PYTHONUNBUFFERED=1
ExecStart=/sls/bd/hla/{{ agebd_env }}/bin/start_service.sh TAUPCT
ExecStart=/sls/bd/hla/@@agebd_env@@/bin/start_service.sh TAUPCT
Restart=no
[Install]
+19
View File
@@ -10,6 +10,7 @@ dependencies = [
{ name = "gitpython" },
{ name = "h5py" },
{ name = "pyepics" },
{ name = "pyyaml" },
{ name = "typer" },
]
@@ -18,6 +19,7 @@ requires-dist = [
{ name = "gitpython", specifier = ">=3.1.50" },
{ name = "h5py", specifier = ">=3.16.0" },
{ name = "pyepics", specifier = ">=3.5.10" },
{ name = "pyyaml", specifier = ">=6.0.3" },
{ name = "typer", specifier = ">=0.23.2" },
]
@@ -284,6 +286,23 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/0b/d7/1959b9648791274998a9c3526f6d0ec8fd2233e4d4acce81bbae76b44b2a/python_dotenv-1.2.2-py3-none-any.whl", hash = "sha256:1d8214789a24de455a8b8bd8ae6fe3c6b69a5e3d64aa8a8e5d68e694bbcb285a", size = 22101, upload-time = "2026-03-01T16:00:25.09Z" },
]
[[package]]
name = "pyyaml"
version = "6.0.3"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/05/8e/961c0007c59b8dd7729d542c61a4d537767a59645b82a0b521206e1e25c2/pyyaml-6.0.3.tar.gz", hash = "sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f", size = 130960, upload-time = "2025-09-25T21:33:16.546Z" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/f4/a0/39350dd17dd6d6c6507025c0e53aef67a9293a6d37d3511f23ea510d5800/pyyaml-6.0.3-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:214ed4befebe12df36bcc8bc2b64b396ca31be9304b8f59e25c11cf94a4c033b", size = 184227, upload-time = "2025-09-25T21:31:46.04Z" },
{ url = "https://files.pythonhosted.org/packages/05/14/52d505b5c59ce73244f59c7a50ecf47093ce4765f116cdb98286a71eeca2/pyyaml-6.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:02ea2dfa234451bbb8772601d7b8e426c2bfa197136796224e50e35a78777956", size = 174019, upload-time = "2025-09-25T21:31:47.706Z" },
{ url = "https://files.pythonhosted.org/packages/43/f7/0e6a5ae5599c838c696adb4e6330a59f463265bfa1e116cfd1fbb0abaaae/pyyaml-6.0.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b30236e45cf30d2b8e7b3e85881719e98507abed1011bf463a8fa23e9c3e98a8", size = 740646, upload-time = "2025-09-25T21:31:49.21Z" },
{ url = "https://files.pythonhosted.org/packages/2f/3a/61b9db1d28f00f8fd0ae760459a5c4bf1b941baf714e207b6eb0657d2578/pyyaml-6.0.3-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:66291b10affd76d76f54fad28e22e51719ef9ba22b29e1d7d03d6777a9174198", size = 840793, upload-time = "2025-09-25T21:31:50.735Z" },
{ url = "https://files.pythonhosted.org/packages/7a/1e/7acc4f0e74c4b3d9531e24739e0ab832a5edf40e64fbae1a9c01941cabd7/pyyaml-6.0.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9c7708761fccb9397fe64bbc0395abcae8c4bf7b0eac081e12b809bf47700d0b", size = 770293, upload-time = "2025-09-25T21:31:51.828Z" },
{ url = "https://files.pythonhosted.org/packages/8b/ef/abd085f06853af0cd59fa5f913d61a8eab65d7639ff2a658d18a25d6a89d/pyyaml-6.0.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:418cf3f2111bc80e0933b2cd8cd04f286338bb88bdc7bc8e6dd775ebde60b5e0", size = 732872, upload-time = "2025-09-25T21:31:53.282Z" },
{ url = "https://files.pythonhosted.org/packages/1f/15/2bc9c8faf6450a8b3c9fc5448ed869c599c0a74ba2669772b1f3a0040180/pyyaml-6.0.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:5e0b74767e5f8c593e8c9b5912019159ed0533c70051e9cce3e8b6aa699fcd69", size = 758828, upload-time = "2025-09-25T21:31:54.807Z" },
{ url = "https://files.pythonhosted.org/packages/a3/00/531e92e88c00f4333ce359e50c19b8d1de9fe8d581b1534e35ccfbc5f393/pyyaml-6.0.3-cp310-cp310-win32.whl", hash = "sha256:28c8d926f98f432f88adc23edf2e6d4921ac26fb084b028c733d01868d19007e", size = 142415, upload-time = "2025-09-25T21:31:55.885Z" },
{ url = "https://files.pythonhosted.org/packages/2a/fa/926c003379b19fca39dd4634818b00dec6c62d87faf628d1394e137354d4/pyyaml-6.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:bdb2c67c6c1390b63c6ff89f210c8fd09d9a1217a465701eac7316313c915e4c", size = 158561, upload-time = "2025-09-25T21:31:57.406Z" },
]
[[package]]
name = "rich"
version = "15.0.0"
@@ -1,4 +1,4 @@
file TIMING.template {
pattern { DEVICE }
{ AGEBD-TIMING{{ agebd_env_suffix_upper }} }
{ AGEBD-TIMING@@agebd_env_suffix_upper@@ }
}
@@ -1,6 +1,6 @@
cpu_architecture: x86_64
epics_version: 7.0.8
ioc_host: sls-vserv-bd-01{{ agebd_env_suffix_lower }}
ioc_port: {{ ioc_port }}
ioc_host: sls-vserv-bd-01@@agebd_env_suffix_lower@@
ioc_port: @@ioc_port@@
os: RHEL8
os_id: rhel
@@ -3,9 +3,9 @@ Description=AGEBD-SERVICE-TIMING
After=network.target
[Service]
Environment=AGEBD_ENV={{ agebd_env }}
Environment=AGEBD_ENV=@@agebd_env@@
Environment=PYTHONUNBUFFERED=1
ExecStart=/sls/bd/hla/{{ agebd_env }}/bin/start_service.sh TIMING
ExecStart=/sls/bd/hla/@@agebd_env@@/bin/start_service.sh TIMING
Restart=no
[Install]
+19
View File
@@ -10,6 +10,7 @@ dependencies = [
{ name = "gitpython" },
{ name = "h5py" },
{ name = "pyepics" },
{ name = "pyyaml" },
{ name = "typer" },
]
@@ -18,6 +19,7 @@ requires-dist = [
{ name = "gitpython", specifier = ">=3.1.50" },
{ name = "h5py", specifier = ">=3.16.0" },
{ name = "pyepics", specifier = ">=3.5.10" },
{ name = "pyyaml", specifier = ">=6.0.3" },
{ name = "typer", specifier = ">=0.23.2" },
]
@@ -284,6 +286,23 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/0b/d7/1959b9648791274998a9c3526f6d0ec8fd2233e4d4acce81bbae76b44b2a/python_dotenv-1.2.2-py3-none-any.whl", hash = "sha256:1d8214789a24de455a8b8bd8ae6fe3c6b69a5e3d64aa8a8e5d68e694bbcb285a", size = 22101, upload-time = "2026-03-01T16:00:25.09Z" },
]
[[package]]
name = "pyyaml"
version = "6.0.3"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/05/8e/961c0007c59b8dd7729d542c61a4d537767a59645b82a0b521206e1e25c2/pyyaml-6.0.3.tar.gz", hash = "sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f", size = 130960, upload-time = "2025-09-25T21:33:16.546Z" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/f4/a0/39350dd17dd6d6c6507025c0e53aef67a9293a6d37d3511f23ea510d5800/pyyaml-6.0.3-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:214ed4befebe12df36bcc8bc2b64b396ca31be9304b8f59e25c11cf94a4c033b", size = 184227, upload-time = "2025-09-25T21:31:46.04Z" },
{ url = "https://files.pythonhosted.org/packages/05/14/52d505b5c59ce73244f59c7a50ecf47093ce4765f116cdb98286a71eeca2/pyyaml-6.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:02ea2dfa234451bbb8772601d7b8e426c2bfa197136796224e50e35a78777956", size = 174019, upload-time = "2025-09-25T21:31:47.706Z" },
{ url = "https://files.pythonhosted.org/packages/43/f7/0e6a5ae5599c838c696adb4e6330a59f463265bfa1e116cfd1fbb0abaaae/pyyaml-6.0.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b30236e45cf30d2b8e7b3e85881719e98507abed1011bf463a8fa23e9c3e98a8", size = 740646, upload-time = "2025-09-25T21:31:49.21Z" },
{ url = "https://files.pythonhosted.org/packages/2f/3a/61b9db1d28f00f8fd0ae760459a5c4bf1b941baf714e207b6eb0657d2578/pyyaml-6.0.3-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:66291b10affd76d76f54fad28e22e51719ef9ba22b29e1d7d03d6777a9174198", size = 840793, upload-time = "2025-09-25T21:31:50.735Z" },
{ url = "https://files.pythonhosted.org/packages/7a/1e/7acc4f0e74c4b3d9531e24739e0ab832a5edf40e64fbae1a9c01941cabd7/pyyaml-6.0.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9c7708761fccb9397fe64bbc0395abcae8c4bf7b0eac081e12b809bf47700d0b", size = 770293, upload-time = "2025-09-25T21:31:51.828Z" },
{ url = "https://files.pythonhosted.org/packages/8b/ef/abd085f06853af0cd59fa5f913d61a8eab65d7639ff2a658d18a25d6a89d/pyyaml-6.0.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:418cf3f2111bc80e0933b2cd8cd04f286338bb88bdc7bc8e6dd775ebde60b5e0", size = 732872, upload-time = "2025-09-25T21:31:53.282Z" },
{ url = "https://files.pythonhosted.org/packages/1f/15/2bc9c8faf6450a8b3c9fc5448ed869c599c0a74ba2669772b1f3a0040180/pyyaml-6.0.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:5e0b74767e5f8c593e8c9b5912019159ed0533c70051e9cce3e8b6aa699fcd69", size = 758828, upload-time = "2025-09-25T21:31:54.807Z" },
{ url = "https://files.pythonhosted.org/packages/a3/00/531e92e88c00f4333ce359e50c19b8d1de9fe8d581b1534e35ccfbc5f393/pyyaml-6.0.3-cp310-cp310-win32.whl", hash = "sha256:28c8d926f98f432f88adc23edf2e6d4921ac26fb084b028c733d01868d19007e", size = 142415, upload-time = "2025-09-25T21:31:55.885Z" },
{ url = "https://files.pythonhosted.org/packages/2a/fa/926c003379b19fca39dd4634818b00dec6c62d87faf628d1394e137354d4/pyyaml-6.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:bdb2c67c6c1390b63c6ff89f210c8fd09d9a1217a465701eac7316313c915e4c", size = 158561, upload-time = "2025-09-25T21:31:57.406Z" },
]
[[package]]
name = "rich"
version = "15.0.0"
@@ -1,4 +1,4 @@
file TOPUPTOOL.template {
pattern { DEVICE }
{ AGEBD-TOPUPTOOL{{ agebd_env_suffix_upper }} }
{ AGEBD-TOPUPTOOL@@agebd_env_suffix_upper@@ }
}
@@ -1,6 +1,6 @@
cpu_architecture: x86_64
epics_version: 7.0.8
ioc_host: sls-vserv-bd-01{{ agebd_env_suffix_lower }}
ioc_port: {{ ioc_port }}
ioc_host: sls-vserv-bd-01@@agebd_env_suffix_lower@@
ioc_port: @@ioc_port@@
os: RHEL8
os_id: rhel
@@ -3,9 +3,9 @@ Description=AGEBD-SERVICE-TOPUPTOOL
After=network.target
[Service]
Environment=AGEBD_ENV={{ agebd_env }}
Environment=AGEBD_ENV=@@agebd_env@@
Environment=PYTHONUNBUFFERED=1
ExecStart=/sls/bd/hla/{{ agebd_env }}/bin/start_service.sh TOPUPTOOL
ExecStart=/sls/bd/hla/@@agebd_env@@/bin/start_service.sh TOPUPTOOL
Restart=no
[Install]
+19
View File
@@ -10,6 +10,7 @@ dependencies = [
{ name = "gitpython" },
{ name = "h5py" },
{ name = "pyepics" },
{ name = "pyyaml" },
{ name = "typer" },
]
@@ -18,6 +19,7 @@ requires-dist = [
{ name = "gitpython", specifier = ">=3.1.50" },
{ name = "h5py", specifier = ">=3.16.0" },
{ name = "pyepics", specifier = ">=3.5.10" },
{ name = "pyyaml", specifier = ">=6.0.3" },
{ name = "typer", specifier = ">=0.23.2" },
]
@@ -382,6 +384,23 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/ec/dd/96da98f892250475bdf2328112d7468abdd4acc7b902b6af23f4ed958ea0/pytz-2026.2-py2.py3-none-any.whl", hash = "sha256:04156e608bee23d3792fd45c94ae47fae1036688e75032eea2e3bf0323d1f126", size = 510141, upload-time = "2026-05-04T01:35:27.408Z" },
]
[[package]]
name = "pyyaml"
version = "6.0.3"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/05/8e/961c0007c59b8dd7729d542c61a4d537767a59645b82a0b521206e1e25c2/pyyaml-6.0.3.tar.gz", hash = "sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f", size = 130960, upload-time = "2025-09-25T21:33:16.546Z" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/f4/a0/39350dd17dd6d6c6507025c0e53aef67a9293a6d37d3511f23ea510d5800/pyyaml-6.0.3-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:214ed4befebe12df36bcc8bc2b64b396ca31be9304b8f59e25c11cf94a4c033b", size = 184227, upload-time = "2025-09-25T21:31:46.04Z" },
{ url = "https://files.pythonhosted.org/packages/05/14/52d505b5c59ce73244f59c7a50ecf47093ce4765f116cdb98286a71eeca2/pyyaml-6.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:02ea2dfa234451bbb8772601d7b8e426c2bfa197136796224e50e35a78777956", size = 174019, upload-time = "2025-09-25T21:31:47.706Z" },
{ url = "https://files.pythonhosted.org/packages/43/f7/0e6a5ae5599c838c696adb4e6330a59f463265bfa1e116cfd1fbb0abaaae/pyyaml-6.0.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b30236e45cf30d2b8e7b3e85881719e98507abed1011bf463a8fa23e9c3e98a8", size = 740646, upload-time = "2025-09-25T21:31:49.21Z" },
{ url = "https://files.pythonhosted.org/packages/2f/3a/61b9db1d28f00f8fd0ae760459a5c4bf1b941baf714e207b6eb0657d2578/pyyaml-6.0.3-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:66291b10affd76d76f54fad28e22e51719ef9ba22b29e1d7d03d6777a9174198", size = 840793, upload-time = "2025-09-25T21:31:50.735Z" },
{ url = "https://files.pythonhosted.org/packages/7a/1e/7acc4f0e74c4b3d9531e24739e0ab832a5edf40e64fbae1a9c01941cabd7/pyyaml-6.0.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9c7708761fccb9397fe64bbc0395abcae8c4bf7b0eac081e12b809bf47700d0b", size = 770293, upload-time = "2025-09-25T21:31:51.828Z" },
{ url = "https://files.pythonhosted.org/packages/8b/ef/abd085f06853af0cd59fa5f913d61a8eab65d7639ff2a658d18a25d6a89d/pyyaml-6.0.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:418cf3f2111bc80e0933b2cd8cd04f286338bb88bdc7bc8e6dd775ebde60b5e0", size = 732872, upload-time = "2025-09-25T21:31:53.282Z" },
{ url = "https://files.pythonhosted.org/packages/1f/15/2bc9c8faf6450a8b3c9fc5448ed869c599c0a74ba2669772b1f3a0040180/pyyaml-6.0.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:5e0b74767e5f8c593e8c9b5912019159ed0533c70051e9cce3e8b6aa699fcd69", size = 758828, upload-time = "2025-09-25T21:31:54.807Z" },
{ url = "https://files.pythonhosted.org/packages/a3/00/531e92e88c00f4333ce359e50c19b8d1de9fe8d581b1534e35ccfbc5f393/pyyaml-6.0.3-cp310-cp310-win32.whl", hash = "sha256:28c8d926f98f432f88adc23edf2e6d4921ac26fb084b028c733d01868d19007e", size = 142415, upload-time = "2025-09-25T21:31:55.885Z" },
{ url = "https://files.pythonhosted.org/packages/2a/fa/926c003379b19fca39dd4634818b00dec6c62d87faf628d1394e137354d4/pyyaml-6.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:bdb2c67c6c1390b63c6ff89f210c8fd09d9a1217a465701eac7316313c915e4c", size = 158561, upload-time = "2025-09-25T21:31:57.406Z" },
]
[[package]]
name = "rich"
version = "15.0.0"
@@ -1,4 +1,4 @@
file TUNE.template {
pattern { DEVICE }
{ AGEBD-TUNE{{ agebd_env_suffix_upper }} }
{ AGEBD-TUNE@@agebd_env_suffix_upper@@ }
}
@@ -1,6 +1,6 @@
cpu_architecture: x86_64
epics_version: 7.0.8
ioc_host: sls-vserv-bd-01{{ agebd_env_suffix_lower }}
ioc_port: {{ ioc_port }}
ioc_host: sls-vserv-bd-01@@agebd_env_suffix_lower@@
ioc_port: @@ioc_port@@
os: RHEL8
os_id: rhel
@@ -3,9 +3,9 @@ Description=AGEBD-SERVICE-TUNE
After=network.target
[Service]
Environment=AGEBD_ENV={{ agebd_env }}
Environment=AGEBD_ENV=@@agebd_env@@
Environment=PYTHONUNBUFFERED=1
ExecStart=/sls/bd/hla/{{ agebd_env }}/bin/start_service.sh TUNE
ExecStart=/sls/bd/hla/@@agebd_env@@/bin/start_service.sh TUNE
Restart=no
[Install]
+19
View File
@@ -10,6 +10,7 @@ dependencies = [
{ name = "gitpython" },
{ name = "h5py" },
{ name = "pyepics" },
{ name = "pyyaml" },
{ name = "typer" },
]
@@ -18,6 +19,7 @@ requires-dist = [
{ name = "gitpython", specifier = ">=3.1.50" },
{ name = "h5py", specifier = ">=3.16.0" },
{ name = "pyepics", specifier = ">=3.5.10" },
{ name = "pyyaml", specifier = ">=6.0.3" },
{ name = "typer", specifier = ">=0.23.2" },
]
@@ -288,6 +290,23 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/0b/d7/1959b9648791274998a9c3526f6d0ec8fd2233e4d4acce81bbae76b44b2a/python_dotenv-1.2.2-py3-none-any.whl", hash = "sha256:1d8214789a24de455a8b8bd8ae6fe3c6b69a5e3d64aa8a8e5d68e694bbcb285a", size = 22101, upload-time = "2026-03-01T16:00:25.09Z" },
]
[[package]]
name = "pyyaml"
version = "6.0.3"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/05/8e/961c0007c59b8dd7729d542c61a4d537767a59645b82a0b521206e1e25c2/pyyaml-6.0.3.tar.gz", hash = "sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f", size = 130960, upload-time = "2025-09-25T21:33:16.546Z" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/f4/a0/39350dd17dd6d6c6507025c0e53aef67a9293a6d37d3511f23ea510d5800/pyyaml-6.0.3-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:214ed4befebe12df36bcc8bc2b64b396ca31be9304b8f59e25c11cf94a4c033b", size = 184227, upload-time = "2025-09-25T21:31:46.04Z" },
{ url = "https://files.pythonhosted.org/packages/05/14/52d505b5c59ce73244f59c7a50ecf47093ce4765f116cdb98286a71eeca2/pyyaml-6.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:02ea2dfa234451bbb8772601d7b8e426c2bfa197136796224e50e35a78777956", size = 174019, upload-time = "2025-09-25T21:31:47.706Z" },
{ url = "https://files.pythonhosted.org/packages/43/f7/0e6a5ae5599c838c696adb4e6330a59f463265bfa1e116cfd1fbb0abaaae/pyyaml-6.0.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b30236e45cf30d2b8e7b3e85881719e98507abed1011bf463a8fa23e9c3e98a8", size = 740646, upload-time = "2025-09-25T21:31:49.21Z" },
{ url = "https://files.pythonhosted.org/packages/2f/3a/61b9db1d28f00f8fd0ae760459a5c4bf1b941baf714e207b6eb0657d2578/pyyaml-6.0.3-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:66291b10affd76d76f54fad28e22e51719ef9ba22b29e1d7d03d6777a9174198", size = 840793, upload-time = "2025-09-25T21:31:50.735Z" },
{ url = "https://files.pythonhosted.org/packages/7a/1e/7acc4f0e74c4b3d9531e24739e0ab832a5edf40e64fbae1a9c01941cabd7/pyyaml-6.0.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9c7708761fccb9397fe64bbc0395abcae8c4bf7b0eac081e12b809bf47700d0b", size = 770293, upload-time = "2025-09-25T21:31:51.828Z" },
{ url = "https://files.pythonhosted.org/packages/8b/ef/abd085f06853af0cd59fa5f913d61a8eab65d7639ff2a658d18a25d6a89d/pyyaml-6.0.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:418cf3f2111bc80e0933b2cd8cd04f286338bb88bdc7bc8e6dd775ebde60b5e0", size = 732872, upload-time = "2025-09-25T21:31:53.282Z" },
{ url = "https://files.pythonhosted.org/packages/1f/15/2bc9c8faf6450a8b3c9fc5448ed869c599c0a74ba2669772b1f3a0040180/pyyaml-6.0.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:5e0b74767e5f8c593e8c9b5912019159ed0533c70051e9cce3e8b6aa699fcd69", size = 758828, upload-time = "2025-09-25T21:31:54.807Z" },
{ url = "https://files.pythonhosted.org/packages/a3/00/531e92e88c00f4333ce359e50c19b8d1de9fe8d581b1534e35ccfbc5f393/pyyaml-6.0.3-cp310-cp310-win32.whl", hash = "sha256:28c8d926f98f432f88adc23edf2e6d4921ac26fb084b028c733d01868d19007e", size = 142415, upload-time = "2025-09-25T21:31:55.885Z" },
{ url = "https://files.pythonhosted.org/packages/2a/fa/926c003379b19fca39dd4634818b00dec6c62d87faf628d1394e137354d4/pyyaml-6.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:bdb2c67c6c1390b63c6ff89f210c8fd09d9a1217a465701eac7316313c915e4c", size = 158561, upload-time = "2025-09-25T21:31:57.406Z" },
]
[[package]]
name = "rich"
version = "15.0.0"
@@ -1,4 +1,4 @@
file TUNEBUMP.template {
pattern { DEVICE }
{ AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }} }
{ AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@ }
}

Some files were not shown because too many files have changed in this diff Show More