bliss issueshttps://gitlab.esrf.fr/bliss/bliss/-/issues2024-02-09T13:01:34+01:00https://gitlab.esrf.fr/bliss/bliss/-/issues/4202autofilter dedicated ScanProgress2024-02-09T13:01:34+01:00Perceval Guillouautofilter dedicated ScanProgressbecause autofilter retries points and have special filters display info (ex: `Autof: 4->3`) it should use a dedicated `StepScanProgress`because autofilter retries points and have special filters display info (ex: `Autof: 4->3`) it should use a dedicated `StepScanProgress`https://gitlab.esrf.fr/bliss/bliss/-/issues/4200add debug logging for the entire motion context2024-02-07T15:34:29+01:00Perceval Guillouadd debug logging for the entire motion contextPerceval GuillouPerceval Guillouhttps://gitlab.esrf.fr/bliss/bliss/-/issues/4199axis.move ctrl-c can hangs2024-02-07T14:54:40+01:00Perceval Guillouaxis.move ctrl-c can hangsPerceval GuillouPerceval Guillouhttps://gitlab.esrf.fr/bliss/bliss/-/issues/4196Typing issue with python 3.82024-02-05T20:41:30+01:00Valentin VallsTyping issue with python 3.8I start using typing for maintenability of the code.
I think it would be nice to decide to drop python 3.8.
We stiff can write valid typing syntax for 3.8, but it's very verbose compare to what we can do with 3.9.
```
FAILED tests/she...I start using typing for maintenability of the code.
I think it would be nice to decide to drop python 3.8.
We stiff can write valid typing syntax for 3.8, but it's very verbose compare to what we can do with 3.9.
```
FAILED tests/shell/formatters/test_tabulate.py::test_format_text - TypeError: 'type' object is not subscriptable
FAILED tests/shell/formatters/test_tabulate.py::test_format_empty_cell - TypeError: 'type' object is not subscriptable
FAILED tests/shell/formatters/test_tabulate.py::test_format_tuple - TypeError: 'type' object is not subscriptable
FAILED tests/shell/formatters/test_tabulate.py::test_format_html - TypeError: 'type' object is not subscriptable
FAILED tests/shell/formatters/test_tabulate.py::test_left_align - TypeError: 'type' object is not subscriptable
FAILED tests/shell/formatters/test_tabulate.py::test_right_align - TypeError: 'type' object is not subscriptable
FAILED tests/shell/formatters/test_tabulate.py::test_center_align - TypeError: 'type' object is not subscriptable
FAILED tests/shell/formatters/test_tabulate.py::test_separator - TypeError: 'type' object is not subscriptable
FAILED tests/shell/test_bliss_shell_basics.py::test_log_stdout_file - assert 'roby' in "\nTEST_SESSION [1]: print('\\x1b[37m\\x1b[1mhi!\\x1b[0m\\x1b[0m')\n\nhi!\n\nTEST_SESSION [1]: from bliss.shell.standard import wa\n\n\nTEST_SESSION [1]: wa()\n\nCurrent Positions: user\n dial\n\n!!! === TypeError: 'type' object is not subscriptable === !!! ( for more details type cmd 'last_error(0)' )\n"
FAILED tests/shell/test_standard.py::test_wa_normal - TypeError: 'type' object is not subscriptable
FAILED tests/shell/test_standard.py::test_wu_normal - TypeError: 'type' object is not subscriptable
FAILED tests/shell/test_standard.py::test_wa_exception - TypeError: 'type' object is not subscriptable
FAILED tests/shell/test_standard.py::test_wa_slits - TypeError: 'type' object is not subscriptable
FAILED tests/test_undulator.py::test_undulator_disabled - TypeError: 'type' object is not subscriptable
```
Is there constraints with python 3.8 at some places?https://gitlab.esrf.fr/bliss/bliss/-/issues/4195print from thread are not properly displayed2024-02-04T16:50:55+01:00Valentin Vallsprint from thread are not properly displayedProbably because of the trick used for multi session, the print called from a thread is not anymore working.
A work around is the following. The
```
current_greenlet = gevent.getcurrent()
output = current_greenlet.spawn_tree_l...Probably because of the trick used for multi session, the print called from a thread is not anymore working.
A work around is the following. The
```
current_greenlet = gevent.getcurrent()
output = current_greenlet.spawn_tree_locals.get("output")
class Check(threading.Thread):
def run(self):
print("check?", file=output)
t = Check()
t.start()
```version 2.1.0https://gitlab.esrf.fr/bliss/bliss/-/issues/4194tostring() deprecated2024-03-05T11:06:59+01:00Cyril Guilloudtostring() deprecatedseen in logs:
```python
2024-02-03 20:22:28,567 py.warnings
WARNING /home/blissadm/local/bliss.git/bliss/controllers/motors/icepap/comm.py:110:
DeprecationWarning: tostring() is deprecated. Use tobytes() instead.
full_cmd = b"%s\n%s...seen in logs:
```python
2024-02-03 20:22:28,567 py.warnings
WARNING /home/blissadm/local/bliss.git/bliss/controllers/motors/icepap/comm.py:110:
DeprecationWarning: tostring() is deprecated. Use tobytes() instead.
full_cmd = b"%s\n%s%s" % (cmd, header, data.tostring())
```
```
[(bliss) guilloud@pcsht]$ git grep tostring
comm/gpib/_gpib.py: return msg.tostring()
common/image_tools.py: data = arry.tostring()
common/image_tools.py: if hasattr(pil, "tostring"):
common/image_tools.py: data = pil.tostring() # PIL
controllers/ct2/card.py: return self.pwrite(array.tostring(), offset)
controllers/motors/icepap/comm.py: full_size = header_size + len(data.tostring())
controllers/motors/icepap/comm.py: bin_header + data.tostring() + b"\0" * (aligned_full_size - full_size),
controllers/motors/icepap/comm.py: full_cmd = b"%s\n%s%s" % (cmd, header, data.tostring())
controllers/pepu.py:def ChannelConfig_tostring(cfg):
controllers/pepu.py:ChannelConfig.tostring = ChannelConfig_tostring
controllers/pepu.py:def BissConfig_tostring(cfg):
controllers/pepu.py:BissConfig.tostring = BissConfig_tostring
controllers/pepu.py:def Trigger_tostring(trigger):
controllers/pepu.py:Trigger.tostring = Trigger_tostring
controllers/pepu.py:def StreamInfo_tostring(s):
controllers/pepu.py: result += "TRIG", s.trigger.tostring()
controllers/pepu.py:StreamInfo.tostring = StreamInfo_tostring
controllers/pepu.py: _config = ChannelAttr("CHCFG", ChannelConfig.fromstring, ChannelConfig.tostring)
controllers/pepu.py: biss_config = ChannelAttr("BISSCFG", BissConfig.fromstring, BissConfig.tostring)
controllers/pepu.py: "BISSCFG", BissConfig.fromstring, lambda x: x.tostring().rsplit(" ", 1)[0]
controllers/pepu.py: "TRIG", decode=lambda x: x.trigger, encode=lambda x: x.tostring()
controllers/pepu.py: type(self).__name__, self.pepu.name, self.info.tostring()
controllers/pepu.py: self.raw_write_read("DSTREAM " + stream_info.tostring())
flint/flint.py: MESSAGE = "DeprecationWarning: tostring() is deprecated. Use tobytes() instead."
physics/diffraction.py:HKL.tostring = hkl_to_string
physics/diffraction.py: return "{}({})".format(self.crystal, self.plane.tostring())
physics/diffraction.py: self._planes[plane.tostring()] = plane
```Cyril GuilloudCyril Guilloudhttps://gitlab.esrf.fr/bliss/bliss/-/issues/4193Remaining occurencuies of ACTIVE_MG in base code2024-02-01T18:22:18+01:00Valentin VallsRemaining occurencuies of ACTIVE_MG in base codeI think there is still `ACTIVE_MG` import here and there in the tests.
It is supposed to be broken since the last version right?I think there is still `ACTIVE_MG` import here and there in the tests.
It is supposed to be broken since the last version right?version 2.1.0Valentin VallsValentin Vallshttps://gitlab.esrf.fr/bliss/bliss/-/issues/4190bm05: Failed/running scans in HDF52024-01-31T18:28:48+01:00Valentin Vallsbm05: Failed/running scans in HDF5Found that some datasets in HDF5 was not properly saved at BM05. BLISS 1.11.x.
Looking at the HDF5 some was still flagged as `RUNNING` or have missing data and flagged as `FAILED`.
Here is some logs of my converter tool.
```
Process /d...Found that some datasets in HDF5 was not properly saved at BM05. BLISS 1.11.x.
Looking at the HDF5 some was still flagged as `RUNNING` or have missing data and flagged as `FAILED`.
Here is some logs of my converter tool.
```
Process /data/visitor/blc15138/bm05/20240101/RAW_DATA/zscan_nut_HA900_3.28um_0003/blc15138_zscan_nut_HA900_3.28um_0003.h5
WARNING:h5-to-edf:Scan group zscan_nut_HA900_3.28um_0003_0001_1.1 not over
Process /data/visitor/blc15138/bm05/20240101/RAW_DATA/zscan_nut_HA900_3.28um_0006/blc15138_zscan_nut_HA900_3.28um_0006.h5
WARNING:h5-to-edf:Scan group zscan_nut_HA900_3.28um_0006_0001_1.1 not successed (FAILED)
Process /data/visitor/blc15138/bm05/20240101/RAW_DATA/zscan_nut_HA900_3.28um_0007/blc15138_zscan_nut_HA900_3.28um_0007.h5
WARNING:h5-to-edf:Scan group zscan_nut_HA900_3.28um_0007_0001_4.1 not over
Process /data/visitor/blc15138/bm05/20240101/RAW_DATA/zscan_nut_HA900_3.28um_0008/blc15138_zscan_nut_HA900_3.28um_0008.h5
WARNING:h5-to-edf:Scan group zscan_nut_HA900_3.28um_0008_0001_4.1 not successed (FAILED)
Process /data/visitor/blc15138/bm05/20240101/RAW_DATA/zscan_nut_HA900_3.28um_0009/blc15138_zscan_nut_HA900_3.28um_0009.h5
WARNING:h5-to-edf:Scan group zscan_nut_HA900_3.28um_0009_0001_1.1 not over
Process /data/visitor/blc15138/bm05/20240101/RAW_DATA/zscan_nut_HA900_3.28um_0010/blc15138_zscan_nut_HA900_3.28um_0010.h5
WARNING:h5-to-edf:Scan group zscan_nut_HA900_3.28um_0010_0001_4.1 not over
Process /data/visitor/blc15138/bm05/20240101/RAW_DATA/zscan_nut_HA900_3.28um_0011/blc15138_zscan_nut_HA900_3.28um_0011.h5
WARNING:h5-to-edf:Scan group zscan_nut_HA900_3.28um_0011_0001_1.1 not successed (FAILED)
Process /data/visitor/blc15138/bm05/20240101/RAW_DATA/zscan_nut_HA900_3.28um_0012/blc15138_zscan_nut_HA900_3.28um_0012.h5
WARNING:h5-to-edf:Scan group zscan_nut_HA900_3.28um_0012_0001_1.1 not successed (FAILED)
Process /data/visitor/blc15138/bm05/20240101/RAW_DATA/zscan_nut_HA900_3.28um_0013/blc15138_zscan_nut_HA900_3.28um_0013.h5
WARNING:h5-to-edf:Scan group zscan_nut_HA900_3.28um_0013_0001_1.1 not over
Process /data/visitor/blc15138/bm05/20240101/RAW_DATA/zscan_nut_HA900_3.28um_0014/blc15138_zscan_nut_HA900_3.28um_0014.h5
WARNING:h5-to-edf:Scan group zscan_nut_HA900_3.28um_0014_0001_4.1 not successed (FAILED)
```
Here is a discrepency, everything is supposed to be 6000
![image](/uploads/d90fceb5b35973f6ab9a570d68da0399/image.png)
According to @muzelle is maybe because of the tomo sinogram and the redis channel limitation in BLISS 1.11.
Also the control machine is a new one.
There is maybe something to tune at some places.https://gitlab.esrf.fr/bliss/bliss/-/issues/4185Nexus writer: finalize HDF5 one bad scan improve traceback2024-01-30T14:01:34+01:00Wout De NolfNexus writer: finalize HDF5 one bad scan improve tracebackI saw this in ID10 logs. They were restarting things so not a real issue but the
```
INFO 2023-06-12 07:28:16,969 nexus_writer_service.subscribers.session_writer: [cdi-2 (RUNNING)] [1070_dscan-2 (ON)] [axis (ENABLED)] Scan marked as S...I saw this in ID10 logs. They were restarting things so not a real issue but the
```
INFO 2023-06-12 07:28:16,969 nexus_writer_service.subscribers.session_writer: [cdi-2 (RUNNING)] [1070_dscan-2 (ON)] [axis (ENABLED)] Scan marked as SUCCEEDED in HDF5
INFO 2023-06-12 07:28:16,970 nexus_writer_service.subscribers.session_writer: [cdi-2 (RUNNING)] [1070_dscan-2 (ON)] Finished writing to '/data/visitor/mi1396/id10/20230608/RAW_DATA/cogd1dot_az2/cogd1dot_az2_0010/cogd1dot_az2_0010.h5' (121pts-121pts 2.2GB 0:02:23.032555)
INFO 2023-06-12 07:28:16,970 nexus_writer_service.subscribers.session_writer: [cdi-2 (RUNNING)] [1070_dscan-2 (ON)] Stop listening to Redis events
INFO 2023-06-12 07:28:16,982 nexus_writer_service.subscribers.session_writer: [cdi-2 (RUNNING)] [1070_dscan-2 (OFF)] Finished succesfully
INFO 2023-06-12 07:28:16,982 nexus_writer_service.subscribers.session_writer: [cdi-2 (ON)] [1070_dscan-2 (OFF)] Greenlet exits
INFO 2023-06-12 09:25:09,714 nexus_writer_service.subscribers.session_writer: [cdi-0 (ON)] No scan writers to stop
INFO 2023-06-12 09:25:09,714 nexus_writer_service.subscribers.session_writer: [cdi-0 (ON)] 0 scan writers (0 active)
INFO 2023-06-12 09:25:09,715 nexus_writer_service.subscribers.session_writer: [cdi-0 (ON)] Stop listening to Redis events
ERROR 2023-06-12 09:25:09,715 nexus_writer_service.subscribers.session_writer: [cdi-0 (FAULT)] GreenletExit
WARN 2023-06-12 09:25:09,715 nexus_writer_service.subscribers.session_writer: [cdi-0 (FAULT)] Stop listening to Redis events (greenlet killed)
INFO 2023-06-12 09:25:09,715 nexus_writer_service.subscribers.session_writer: [cdi-1 (FAULT)] [39_dscan-1 (ON)] Finalize writing to /data/visitor/mi1396/id10/20230608/RAW_DATA/CoGd1/CoGd1_0002/CoGd1_0002.h5
INFO 2023-06-12 09:25:09,716 nexus_writer_service.subscribers.session_writer: [cdi-1 (FAULT)] [39_dscan-1 (ON)] Fetch last data
ERROR 2023-06-12 09:25:09,716 nexus_writer_service.subscribers.session_writer: [cdi-1 (FAULT)] [39_dscan-1 (FAULT)]
ERROR 2023-06-12 09:25:09,716 nexus_writer_service.subscribers.session_writer: [cdi-1 (FAULT)] [39_dscan-1 (FAULT)] Captured finalization exception
Traceback (most recent call last):
File "/home/blissadm/local/bliss.git/nexus_writer_service/subscribers/scan_writer_base.py", line 364, in _capture_finalize_exceptions
yield
File "/home/blissadm/local/bliss.git/nexus_writer_service/subscribers/scan_writer_base.py", line 324, in _finalize_hdf5
self._fetch_data(node, last=True)
File "/home/blissadm/local/bliss.git/nexus_writer_service/subscribers/scan_writer_base.py", line 1551, in _fetch_data
nproxy = self._node_proxy(node)
File "/home/blissadm/local/bliss.git/nexus_writer_service/subscribers/scan_writer_base.py", line 1334, in _node_proxy
return self._dataset_proxy(node, full_init=full_init)
File "/home/blissadm/local/bliss.git/nexus_writer_service/subscribers/scan_writer_base.py", line 1352, in _dataset_proxy
dproxy = subscan.datasets.get(node.fullname)
File "/home/blissadm/local/bliss.git/blissdata/blissdata/data/nodes/channel.py", line 158, in fullname
return self.info.get("fullname")
File "/home/blissadm/local/bliss.git/blissdata/blissdata/settings.py", line 89, in _read
value = func(self, *args, **keys)
File "/home/blissadm/local/bliss.git/blissdata/blissdata/settings.py", line 924, in get
v = super().raw_get(key)
File "/home/blissadm/local/bliss.git/blissdata/blissdata/settings.py", line 592, in raw_get
return cnx.hget(self.name, *keys)
File "/users/blissadm/conda/miniconda/envs/bliss_1_11/lib/python3.9/site-packages/redis/client.py", line 3010, in hget
return self.execute_command('HGET', name, key)
File "/users/blissadm/conda/miniconda/envs/bliss_1_11/lib/python3.9/site-packages/redis/client.py", line 901, in execute_command
return self.parse_response(conn, command_name, **options)
File "/users/blissadm/conda/miniconda/envs/bliss_1_11/lib/python3.9/site-packages/redis/client.py", line 915, in parse_response
response = connection.read_response()
File "/users/blissadm/conda/miniconda/envs/bliss_1_11/lib/python3.9/site-packages/redis/connection.py", line 730, in read_response
response = self._parser.read_response()
File "/users/blissadm/conda/miniconda/envs/bliss_1_11/lib/python3.9/site-packages/redis/connection.py", line 464, in read_response
self.read_from_socket()
File "/users/blissadm/conda/miniconda/envs/bliss_1_11/lib/python3.9/site-packages/redis/connection.py", line 421, in read_from_socket
bufflen = recv_into(self._sock, self._buffer)
File "/users/blissadm/conda/miniconda/envs/bliss_1_11/lib/python3.9/site-packages/redis/_compat.py", line 75, in recv_into
return sock.recv_into(*args, **kwargs)
File "/users/blissadm/conda/miniconda/envs/bliss_1_11/lib/python3.9/site-packages/gevent/_socketcommon.py", line 693, in recv_into
self._wait(self._read_event)
File "src/gevent/_hub_primitives.py", line 317, in gevent._gevent_c_hub_primitives.wait_on_socket
File "src/gevent/_hub_primitives.py", line 322, in gevent._gevent_c_hub_primitives.wait_on_socket
File "src/gevent/_hub_primitives.py", line 304, in gevent._gevent_c_hub_primitives._primitive_wait
File "src/gevent/_hub_primitives.py", line 46, in gevent._gevent_c_hub_primitives.WaitOperationsGreenlet.wait
File "src/gevent/_hub_primitives.py", line 46, in gevent._gevent_c_hub_primitives.WaitOperationsGreenlet.wait
File "src/gevent/_hub_primitives.py", line 55, in gevent._gevent_c_hub_primitives.WaitOperationsGreenlet.wait
File "src/gevent/_waiter.py", line 154, in gevent._gevent_c_waiter.Waiter.get
File "src/gevent/_greenlet_primitives.py", line 61, in gevent._gevent_c_greenlet_primitives.SwitchOutGreenletWithLoop.switch
File "src/gevent/_greenlet_primitives.py", line 61, in gevent._gevent_c_greenlet_primitives.SwitchOutGreenletWithLoop.switch
File "src/gevent/_greenlet_primitives.py", line 65, in gevent._gevent_c_greenlet_primitives.SwitchOutGreenletWithLoop.switch
File "src/gevent/_gevent_c_greenlet_primitives.pxd", line 35, in gevent._gevent_c_greenlet_primitives._greenlet_switch
greenlet.GreenletExit
INFO 2023-06-12 09:25:09,743 nexus_writer_service.subscribers.session_writer: [cdi-1 (FAULT)] [39_dscan-1 (FAULT)] Save the last data
INFO 2023-06-12 09:25:09,751 nexus_writer_service.subscribers.session_writer: [cdi-1 (FAULT)] [39_dscan-1 (FAULT)] Save dataset metadata
INFO 2023-06-12 09:25:09,759 nexus_writer_service.subscribers.session_writer: [cdi-1 (FAULT)] [39_dscan-1 (FAULT)] Save device metadata
ERROR 2023-06-12 09:25:09,759 nexus_writer_service.subscribers.session_writer: [cdi-1 (FAULT)] [39_dscan-1 (FAULT)] Captured finalization exception
Traceback (most recent call last):
File "/home/blissadm/local/bliss.git/nexus_writer_service/subscribers/base_subscriber.py", line 440, in _listen_event_loop
for event_type, node, event_data in self._walk_events(
File "/home/blissadm/local/bliss.git/nexus_writer_service/subscribers/base_subscriber.py", line 474, in _walk_events
yield from self.node.walk_events(**kwargs)
File "/home/blissadm/local/bliss.git/blissdata/blissdata/data/node.py", line 1085, in walk_events
yield from self._iter_reader(
File "/home/blissadm/local/bliss.git/blissdata/blissdata/data/node.py", line 1147, in _iter_reader
for stream, events in reader:
File "/home/blissadm/local/bliss.git/blissdata/blissdata/streaming.py", line 807, in __iter__
for item in self._queue:
File "src/gevent/queue.py", line 412, in gevent._gevent_cqueue.Queue.__next__
File "src/gevent/queue.py", line 350, in gevent._gevent_cqueue.Queue.get
File "src/gevent/queue.py", line 327, in gevent._gevent_cqueue.Queue._Queue__get_or_peek
File "src/gevent/_waiter.py", line 154, in gevent._gevent_c_waiter.Waiter.get
File "src/gevent/_greenlet_primitives.py", line 61, in gevent._gevent_c_greenlet_primitives.SwitchOutGreenletWithLoop.switch
File "src/gevent/_greenlet_primitives.py", line 61, in gevent._gevent_c_greenlet_primitives.SwitchOutGreenletWithLoop.switch
File "src/gevent/_greenlet_primitives.py", line 65, in gevent._gevent_c_greenlet_primitives.SwitchOutGreenletWithLoop.switch
File "src/gevent/_gevent_c_greenlet_primitives.pxd", line 35, in gevent._gevent_c_greenlet_primitives._greenlet_switch
greenlet.GreenletExit
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/blissadm/local/bliss.git/nexus_writer_service/subscribers/scan_writer_base.py", line 364, in _capture_finalize_exceptions
yield
File "/home/blissadm/local/bliss.git/nexus_writer_service/subscribers/scan_writer_base.py", line 286, in _event_loop_finalize
self._finalize_hdf5()
File "/home/blissadm/local/bliss.git/nexus_writer_service/subscribers/scan_writer_base.py", line 347, in _finalize_hdf5
self._fetch_device_metadata(subscan)
File "/home/blissadm/local/bliss.git/nexus_writer_service/subscribers/scan_writer_base.py", line 1736, in _fetch_device_metadata
channel_info = channels.get(fullname)
AttributeError: 'NoneType' object has no attribute 'get'
INFO 2023-06-12 09:25:09,761 nexus_writer_service.subscribers.session_writer: [cdi-1 (FAULT)] [39_dscan-1 (FAULT)] Finished writing to '/data/visitor/mi1396/id10/20230608/RAW_DATA/CoGd1/CoGd1_0002/CoGd1_0002.h5' (9pts-11pts 165.0MB 3 days, 16:42:58.119106)
INFO 2023-06-12 09:25:09,761 nexus_writer_service.subscribers.session_writer: [cdi-1 (FAULT)] [39_dscan-1 (FAULT)] Stop listening to Redis events
WARN 2023-06-12 09:25:09,958 nexus_writer_service.subscribers.session_writer: [cdi-1 (FAULT)] [39_dscan-1 (FAULT)] Stop listening to Redis events (greenlet killed)
setting BLISS environment
Using BLISS bliss_1_11
```
This has moved to `ScanWriter._save_device_metadata` but the improvement is the same.Wout De NolfWout De Nolfhttps://gitlab.esrf.fr/bliss/bliss/-/issues/4182RuntimeError: Channel axis.u22.state: can't set value while running a callbac...2024-01-30T08:38:06+01:00Jonathan WrightRuntimeError: Channel axis.u22.state: can't set value while running a callback, when moving undulators in other sessions (1.11.x)(sorry if this is a duplicate)
Sometimes seen at ID11 when an undulator is moved in another session. e.g. this morning I am aligning in optics, tdxrd session gives the message below via no input.
```
TDXRD [3]: Traceback (most recent c...(sorry if this is a duplicate)
Sometimes seen at ID11 when an undulator is moved in another session. e.g. this morning I am aligning in optics, tdxrd session gives the message below via no input.
```
TDXRD [3]: Traceback (most recent call last):
File "/home/blissadm/local/bliss.git/bliss/config/channels.py", line 553, in _fire_callbacks
cb(value)
File "/home/blissadm/local/bliss.git/bliss/common/motor_settings.py", line 37, in setting_update_from_channel
axis._set_move_done(from_channel=True)
File "/home/blissadm/local/bliss.git/bliss/common/axis.py", line 1947, in _set_move_done
event.send_safe(self, "state", self.state) [F6] Paste mode [F7] Typing helper (on) [F2] Menu - CPython 3.9.18
File "/home/blissadm/local/bliss.git/bliss/common/axis.py", line 665, in func_wrapper
return func(self, *args, **kwargs)
File "/home/blissadm/local/bliss.git/bliss/common/axis.py", line 1194, in state
self.settings.set("state", state)
File "/home/blissadm/local/bliss.git/bliss/common/motor_settings.py", line 317, in set
self._beacon_channels[setting_name].value = value
File "/home/blissadm/local/bliss.git/bliss/config/channels.py", line 478, in value
raise RuntimeError(
RuntimeError: Channel axis.cpm18.state: can't set value while running a callback
Traceback (most recent call last):
File "/home/blissadm/local/bliss.git/bliss/config/channels.py", line 553, in _fire_callbacks
cb(value)
File "/home/blissadm/local/bliss.git/bliss/common/motor_settings.py", line 37, in setting_update_from_channel
axis._set_move_done(from_channel=True)
File "/home/blissadm/local/bliss.git/bliss/common/axis.py", line 1947, in _set_move_done
event.send_safe(self, "state", self.state)
File "/home/blissadm/local/bliss.git/bliss/common/axis.py", line 665, in func_wrapper
return func(self, *args, **kwargs)
File "/home/blissadm/local/bliss.git/bliss/common/axis.py", line 1194, in state
self.settings.set("state", state)
File "/home/blissadm/local/bliss.git/bliss/common/motor_settings.py", line 317, in set
self._beacon_channels[setting_name].value = value
File "/home/blissadm/local/bliss.git/bliss/config/channels.py", line 478, in value
raise RuntimeError(
RuntimeError: Channel axis.u22.state: can't set value while running a callback
```https://gitlab.esrf.fr/bliss/bliss/-/issues/4180shell: Axis __info__ can fail if axis is DISABLED2024-01-29T14:08:01+01:00Valentin Vallsshell: Axis __info__ can fail if axis is DISABLEDFeedback from @cyril.guilloud
```
CYRIL [2]: mm1
Traceback (most recent call last):
File "/opt/bliss/conda/miniconda/envs/bliss/lib/python3.9/site-packages/ptpython/repl.py", line 333, in _format_result_output
result_repr = repr(...Feedback from @cyril.guilloud
```
CYRIL [2]: mm1
Traceback (most recent call last):
File "/opt/bliss/conda/miniconda/envs/bliss/lib/python3.9/site-packages/ptpython/repl.py", line 333, in _format_result_output
result_repr = repr(result)
File "/home/guilloud/PROJECTS/bliss/bliss/shell/cli/repl.py", line 416, in __repr__
return info(arg)
File "/home/guilloud/PROJECTS/bliss/bliss/common/standard.py", line 411, in info
info_str = obj.__info__()
File "/home/guilloud/PROJECTS/bliss/bliss/common/axis.py", line 798, in func_wrapper
raise RuntimeError(f"Axis {self.name} is disabled")
RuntimeError: Axis mm1 is disabled
```
```
controller:
axes:
- acceleration: 10
backlash: 0.1
high_limit: 100
low_limit: -100
name: mm1
sign: 1
steps_per_unit: 100000
tolerance: 0.1
unit: parsec
velocity: 9
closed_loop: # <- this is causing the problem
state: manual
kp: 1
ki: 2
kd: 3
```
There is 2 problems here
- At the second call of the lazy init the exception became pointless, there is no more way to understand the problem
- `__info__` should always display something, but here it is wrapped with `lazy_init`version 2.1.0Valentin VallsValentin Vallshttps://gitlab.esrf.fr/bliss/bliss/-/issues/4179flint: customcurve: Allow to edit points2024-03-25T15:00:30+01:00Valentin Vallsflint: customcurve: Allow to edit pointsFeedback from @berruyer
As we have a tool to remove points, he would like to tune curves and change the location of some points.
This is to improve fitting used to generate lookup table for axesFeedback from @berruyer
As we have a tool to remove points, he would like to tune curves and change the location of some points.
This is to improve fitting used to generate lookup table for axesversion 2.2.0Valentin VallsValentin Vallshttps://gitlab.esrf.fr/bliss/bliss/-/issues/4178test: Async problem on test_text_block_app2024-01-29T13:28:13+01:00Valentin Vallstest: Async problem on test_text_block_appThis tests fail time to time on the CI https://gitlab.esrf.fr/bliss/bliss/-/jobs/936400
```
FAILED tests/shell/pt/test_text_block_app.py::test_abort_with_ctrl_c - AssertionError: assert 0 == 1
+ where 0 = <built-in method count of str...This tests fail time to time on the CI https://gitlab.esrf.fr/bliss/bliss/-/jobs/936400
```
FAILED tests/shell/pt/test_text_block_app.py::test_abort_with_ctrl_c - AssertionError: assert 0 == 1
+ where 0 = <built-in method count of str object at 0x7fa2e8da06f0>('Hey!')
+ where <built-in method count of str object at 0x7fa2e8da06f0> = ''.count
+ where '' = CaptureResult(out='', err='').out
+ where CaptureResult(out='', err='') = <bound method CaptureFixture.readouterr of <_pytest.capture.CaptureFixture object at 0x7fa15f0b2a30>>()
+ where <bound method CaptureFixture.readouterr of <_pytest.capture.CaptureFixture object at 0x7fa15f0b2a30>> = <_pytest.capture.CaptureFixture object at 0x7fa15f0b2a30>.readouterr
FAILED tests/shell/pt/test_text_block_app.py::test_abort_with_end_of_processing - AssertionError: assert 0 == 1
+ where 0 = <built-in method count of str object at 0x7fa2e8da06f0>('Hey!')
+ where <built-in method count of str object at 0x7fa2e8da06f0> = ''.count
+ where '' = CaptureResult(out='', err='').out
+ where CaptureResult(out='', err='') = <bound method CaptureFixture.readouterr of <_pytest.capture.CaptureFixture object at 0x7fa156c6bd60>>()
+ where <bound method CaptureFixture.readouterr of <_pytest.capture.CaptureFixture object at 0x7fa156c6bd60>> = <_pytest.capture.CaptureFixture object at 0x7fa156c6bd60>.readouterr
FAILED tests/shell/pt/test_text_block_app.py::test_abort_processing_with_ctrl_c - AssertionError: assert 0 == 1
+ where 0 = <built-in method count of str object at 0x7fa2e8da06f0>('Hey!')
+ where <built-in method count of str object at 0x7fa2e8da06f0> = ''.count
+ where '' = CaptureResult(out='', err='').out
+ where CaptureResult(out='', err='') = <bound method CaptureFixture.readouterr of <_pytest.capture.CaptureFixture object at 0x7fa15e6f26d0>>()
+ where <bound method CaptureFixture.readouterr of <_pytest.capture.CaptureFixture object at 0x7fa15e6f26d0>> = <_pytest.capture.CaptureFixture object at 0x7fa15e6f26d0>.readouterr
= 3 failed, 1906 passed, 24 skipped, 22 xfailed, 6 warnings in 7748.67s (2:09:08) =
```version 2.1.0Valentin VallsValentin Vallshttps://gitlab.esrf.fr/bliss/bliss/-/issues/4177[mosca] xglab support2024-01-29T11:16:45+01:00Damien Naudet[mosca] xglab supportSupport for XGLab's Dante.Support for XGLab's Dante.Damien NaudetDamien Naudethttps://gitlab.esrf.fr/bliss/bliss/-/issues/4176check code using: _print_errors_with_traceback2024-01-26T15:05:24+01:00Cyril Guilloudcheck code using: _print_errors_with_tracebackcheck code using: _print_errors_with_traceback (cf: !5999)
```
[~/PROJECTS/beamlines] 15:02 (-)
[guilloud@pcsht]$ grep -nr _print_errors_with_traceback *
bm07/bm07/wa_fip.py:1:from bliss.shell.standard import _MAX_COLS, _ERR, _tabul...check code using: _print_errors_with_traceback (cf: !5999)
```
[~/PROJECTS/beamlines] 15:02 (-)
[guilloud@pcsht]$ grep -nr _print_errors_with_traceback *
bm07/bm07/wa_fip.py:1:from bliss.shell.standard import _MAX_COLS, _ERR, _tabulate, _print_errors_with_traceback
bm07/bm07/wa_fip.py:58: _print_errors_with_traceback(errors, device_type="motor")
id01/id01/scripts/specmot_utils.py:169:_print_errors_with_traceback = wa.__globals__["_print_errors_with_traceback"]
id01/id01/scripts/specmot_utils.py:204: _print_errors_with_traceback(errors, device_type="motor")
id16a/id16a/stlocal.py:13: _print_errors_with_traceback,
id16a/id16a/stlocal.py:49: _print_errors_with_traceback(errors, device_type="motor")
```
```
[~/PROJECTS/beamlines_configs] 15:03 (-)
[guilloud@pcsht]$ grep -nr _print_errors_with_traceback *
id01/sessions/scripts/utils.py:153:_print_errors_with_traceback = wa.__globals__["_print_errors_with_traceback"]
id01/sessions/scripts/utils.py:193: _print_errors_with_traceback(errors, device_type="motor")
```version 2.1.0Valentin VallsValentin Vallshttps://gitlab.esrf.fr/bliss/bliss/-/issues/4175Confusing automatic ordering of counters in ct, scans etc.2024-01-26T13:11:26+01:00Peter BoeseckeConfusing automatic ordering of counters in ct, scans etc.Until now, I did not put much attention to the way how counters are ordered in BLISS. I was already happy getting counter values. But with increasing numbers of counters it becomes annoying that they are automatically ordered, i.e. by co...Until now, I did not put much attention to the way how counters are ordered in BLISS. I was already happy getting counter values. But with increasing numbers of counters it becomes annoying that they are automatically ordered, i.e. by controller names and names. This could be acceptable in short counter lists where all counters would fit on a single screen, but it becomes unusable in larger counter lists, e.g. Ncounters\>50. In long lists specific counters cannot be found easily. Missing counters can only be found by searching through all counter names. Ordering counters by controllers is probably useful for debugging, but when everything is working other aspects become more important. When I insert counter 'W' between counter 'B' and counter 'A' I expect that it will appear in this order in the output: (counter 'B', counter 'W', counter 'A') and that its output position is not automatically altered by a hidden controller name.
The implementation of this "feature" seems to be deeply embedded in BLISS. It is hard to find where it is done and why it is done.
I propose the following:
* Displaying the counters in the order as given in the measurement group, e.g. like they are written in the yaml file.
* Everybody who needs or detests this feature should have the possibility to switch it individually on or off, e.g. with automatic_counter_ordering_on/off.
* Alternatively, a tuple with counter names in the required order for displaying and saving would already help.
To be clear, I do not ask only for the BLISS output, I would also like that counters appear in the same order in the output files. This gives external programs (e.g. pymca) the possibility of displaying them in the same order and it would be faster of finding a specific counter.https://gitlab.esrf.fr/bliss/bliss/-/issues/4171SPEEDGOAT: Work "regulation" block2024-01-25T15:30:56+01:00Thomas DehaezeSPEEDGOAT: Work "regulation" blockSimulink block for regulation has evolved (due to new features required for ID16a).
Modifications are:
- Naming of variables was made clearer
- Access to command and error signals when regul went OFF (useful for analysis)
- When regul g...Simulink block for regulation has evolved (due to new features required for ID16a).
Modifications are:
- Naming of variables was made clearer
- Access to command and error signals when regul went OFF (useful for analysis)
- When regul goes OFF (either manually or because of error), the output command now goes to 0 with a ramp instead of a stepThomas DehaezeThomas Dehaezehttps://gitlab.esrf.fr/bliss/bliss/-/issues/4170Why DISABLED axis are skipped?2024-01-29T11:16:25+01:00Valentin VallsWhy DISABLED axis are skipped?Disabled axis are skipped from some stuffs like metadata positioners and standard command like `wa`.
- https://gitlab.esrf.fr/bliss/bliss/-/blob/master/bliss/common/alias.py#L371
- https://gitlab.esrf.fr/bliss/bliss/-/blob/master/bliss/...Disabled axis are skipped from some stuffs like metadata positioners and standard command like `wa`.
- https://gitlab.esrf.fr/bliss/bliss/-/blob/master/bliss/common/alias.py#L371
- https://gitlab.esrf.fr/bliss/bliss/-/blob/master/bliss/scanning/scan_meta.py#L306
- Also i think when a motor controller fail at initialization, axis are set `DISABLED`
Why do we do that?
In my mind
- `DISABLED` means that we can't move a motor, but we can read it's position
- `OFF` means that the axis is not reachable
That's the way we use it in Daiquiri.
Could we clarify the situation? By maybe improving the documentation for each axis states?
Here is what we can get from the source code:
```
MOVING : 'Axis is moving'
READY : 'Axis is ready to be moved (not moving ?)'
FAULT : 'Error from controller'
LIMPOS : 'Hardware high limit active'
LIMNEG : 'Hardware low limit active'
HOME : 'Home signal active'
OFF : 'Axis power is off'
DISABLED: 'Axis cannot move (must be enabled - not ready ?)'
```
Here we already can fix that `READY` means that we can request a motion, but it still can be `MOVING` at the same time (`READY` is not `not MOVING`).
I am about to display back `DISABLED` axis position from `wa` so i would like to be sure about it.
Maybe related to #2946 #3964 #3970version 2.1.0Valentin VallsValentin Vallshttps://gitlab.esrf.fr/bliss/bliss/-/issues/4166How will you roll out bug fixes on beamlines ?2024-01-25T12:09:50+01:00Jonathan WrightHow will you roll out bug fixes on beamlines ?(Here is a ticket for @helena.isern and @meyer for an "issue" I have asked Helena to raise at the OCM later today, 24 Jan).
Currently, when a bug is fixed in bliss, I need to call @papillon and then restart all bliss sessions after he h...(Here is a ticket for @helena.isern and @meyer for an "issue" I have asked Helena to raise at the OCM later today, 24 Jan).
Currently, when a bug is fixed in bliss, I need to call @papillon and then restart all bliss sessions after he has done the git magic. During beamline operation, it means we need to stop the experiment. This is annoying for everyone involved.
When there is a bug fix (example [5990](https://gitlab.esrf.fr/bliss/bliss/-/merge_requests/5990)), I don't see we can all get that on our beamlines without a lot of people doing manual interventions. Do you have a plan and timeline to fix that?https://gitlab.esrf.fr/bliss/bliss/-/issues/4165Backport blissdata/blisswriter releases2024-01-23T18:07:57+01:00Wout De NolfBackport blissdata/blisswriter releasesList all the merge requests for affecting `blisswriter` or `blissdata`
```
git checkout master; git pull
$ git mrsince blisswriter 1.0.0
https://gitlab.esrf.fr/bliss/bliss/-/merge_requests/5900
https://gitlab.esrf.fr/bliss/bliss/-/merg...List all the merge requests for affecting `blisswriter` or `blissdata`
```
git checkout master; git pull
$ git mrsince blisswriter 1.0.0
https://gitlab.esrf.fr/bliss/bliss/-/merge_requests/5900
https://gitlab.esrf.fr/bliss/bliss/-/merge_requests/5986
$ git mrsince blissdata 1.0.0
https://gitlab.esrf.fr/bliss/bliss/-/merge_requests/5845
https://gitlab.esrf.fr/bliss/bliss/-/merge_requests/5877
https://gitlab.esrf.fr/bliss/bliss/-/merge_requests/5892
https://gitlab.esrf.fr/bliss/bliss/-/merge_requests/5906
https://gitlab.esrf.fr/bliss/bliss/-/merge_requests/5900
https://gitlab.esrf.fr/bliss/bliss/-/merge_requests/5916
https://gitlab.esrf.fr/bliss/bliss/-/merge_requests/5982
https://gitlab.esrf.fr/bliss/bliss/-/merge_requests/5987
```
List merge requests than need a backport for the `2.0.x` branch
```
git checkout 2.0.x; git pull
$ git mrsince blisswriter 1.0.0
$ git mrsince blissdata 1.0.0
https://gitlab.esrf.fr/bliss/bliss/-/merge_requests/5845
https://gitlab.esrf.fr/bliss/bliss/-/merge_requests/5877
https://gitlab.esrf.fr/bliss/bliss/-/merge_requests/5892
```
The git alias is this
```
# ~/.gitconfig
[alias]
mrsince = "!sh -c 'pkg=$0 && us=\"\\/\" && git log --reverse --merges --first-parent -p HEAD --not $pkg/$1 $pkg | grep \"See merge request\" | cut -d! -f2 | sed -e \"s/^/https:$us${us}gitlab.esrf.fr${us}bliss${us}bliss${us}-${us}merge_requests${us}/;\" '"
```
Inspiration came from https://gitlab.esrf.fr/bliss/bliss/-/merge_requests/6003.