antfs-cli times out when waiting for message

I installed antfs-cli on a new computer and now it usually times out with the following error
Downloading 2016-02-05_20-26-20_4_707.fit: [............                  ] ETA: 0:00:27Traceback (most recent call last):
  File "build/bdist.linux-x86_64/egg/antfs_cli/program.py", line 356, in main
    g.start()
  File "/usr/local/lib/python2.7/dist-packages/ant/fs/manager.py", line 217, in start
    self._main()
  File "/usr/local/lib/python2.7/dist-packages/ant/fs/manager.py", line 155, in _main
    self.on_transport(beacon)
  File "build/bdist.linux-x86_64/egg/antfs_cli/program.py", line 244, in on_transport
    self.download_file(fileobject)
  File "build/bdist.linux-x86_64/egg/antfs_cli/program.py", line 281, in download_file
    data = self.download(fil.get_index(), AntFSCLI._get_progress_callback())
  File "/usr/local/lib/python2.7/dist-packages/ant/fs/manager.py", line 311, in download
    self._send_command(DownloadRequest(index, offset, True, crc))
  File "/usr/local/lib/python2.7/dist-packages/ant/fs/manager.py", line 195, in _send_command
    self._channel.send_burst_transfer(data)
  File "/usr/local/lib/python2.7/dist-packages/ant/easy/channel.py", line 119, in send_burst_transfer
    self.send_burst_transfer(data)
  File "/usr/local/lib/python2.7/dist-packages/ant/easy/channel.py", line 114, in send_burst_transfer
    self.wait_for_event([Message.Code.EVENT_TRANSFER_TX_START])
  File "/usr/local/lib/python2.7/dist-packages/ant/easy/channel.py", line 51, in wait_for_event
    return wait_for_event(ok_codes, self._node._events, self._node._event_cond)
  File "/usr/local/lib/python2.7/dist-packages/ant/easy/filter.py", line 72, in wait_for_event
    return wait_for_message(match, process, queue, condition)
  File "/usr/local/lib/python2.7/dist-packages/ant/easy/filter.py", line 61, in wait_for_message
    raise AntException("Timed out while waiting for message")
AntException: Timed out while waiting for message
Interrupted: Timed out while waiting for message

I attached the output of antfs-cli --debug as log.txt
I am running the Ubuntu. Kernel 4.2.0-25-generic. Any help on how to get antfs-cli working properly is appreciated.

I am trying to understand what happens. The difference in the debug output is the following if everything is doing well
Wait for response...
Get command, t15, s0
Read data: [a4 09 50 20 05 7d 06 43 9c 17 31 0f 55] (now have [a4 09 50 20 05 7d 06 43 9c 17 31 0f 55] in buffer)

versus the following if something breaks
Wait for response...
Get command, t15, s0
Read data: [a4 03 40 00 01 02 e4] (now have [a4 03 40 00 01 02 e4] in buffer)
Got channel event, <ant.base.Message 40:[00 01 02] (s:a4, l:3, c:e4)>

Not sure what happens yet. The line Get command, t15, s0 comes from ant.fs.manager._get_command. So this should probably be an issue for the openant repo.

I experienced some time outs as well , but it works fine if I first turn wifi on my laptop off.
Ant is very delicate protocol, lots of possible sources for interference on the signal.
think like bluetooth, nearby mobile device etc,
Hope this helps

I am unsure why this helps, but by changing the timeout in ant.fs.manage.py in the _get_command function from 15 seconds to 5 seconds, I am able to transfer files. It often takes quite a bit of time, but works flawlessly so far.
This should at least help in narrowing down where the problem is coming from, but I am not sure how one could construct a better fix from it.

@HelgeKrueger Interesting. I'll take a look and see if I can figure out why changing this helps.

Same issue for me. I will try the change suggested by @HelgeKrueger.

As I always had issues with timeouts, I tried the change mentioned by @HelgeKrueger.
It really helped, no more timeouts. Thanks for the suggestion.

I think the interesting change in behavior is shown in the following snippet.
Read data: [a4 09 50 60 14 d4 1c 90 48 06 48 ba 6d] (now have [a4 09 50 60 14 d4 1c 90 48 06 48 ba 6d] in buffer)
Read data: [a4 09 50 a0 00 00 00 00 00 00 e7 d5 6f] (now have [a4 09 50 a0 00 00 00 00 00 00 e7 d5 6f] in buffer)
parsing data array('B', [68, 137, 0, 0, 0, 2, 0, 0, 0, 156, 0, 0, 207, 211, 2, 0, 186, 99, 49, 213, 183, 40, 34, 150, 130, 66, 8, 137, 181, 22, 0, 19, 21, 207, 19, 134, 0, 4, 50, 186, 99, 49, 2, 2, 4, 1, 3, 3, 255, 255, 255, 6, 50, 186, 99, 49, 177, 185, 40, 34, 171, 128, 66, 8, 137, 181, 22, 0, 16, 21, 214, 21, 134, 0, 6, 51, 186, 99, 49, 56, 186, 40, 34, 161, 127, 66, 8, 86, 182, 22, 0, 13, 21, 48, 12, 134, 0, 4, 52, 186, 99, 49, 4, 4, 4, 1, 3, 3, 255, 255, 255, 6, 52, 186, 99, 49, 211, 186, 40, 34, 220, 126, 66, 8, 27, 183, 22, 0, 11, 21, 170, 7, 133, 0, 6, 53, 186, 99, 49, 19, 187, 40, 34, 165, 125, 66, 8, 252, 183, 22, 0, 8, 21, 210, 8, 133, 0, 6, 54, 186, 99, 49, 50, 187, 40, 34, 169, 123, 66, 8, 228, 185, 22, 0, 6, 21, 11, 19, 132, 11, 6, 55, 186, 99, 49, 122, 186, 40, 34, 159, 120, 66, 8, 19, 188, 22, 0, 4, 21, 212, 21, 131, 46, 6, 56, 186, 99, 49, 119, 185, 40, 34, 163, 118, 66, 8, 123, 190, 22, 0, 2, 21, 24, 24, 131, 54, 6, 57, 186, 99, 49, 77, 183, 40, 34, 22, 116, 66, 8, 18, 193, 22, 0, 0, 21, 226, 25, 131, 60, 6, 58, 186, 99, 49, 126, 181, 40, 34, 18, 113, 66, 8, 196, 195, 22, 0, 255, 20, 248, 26, 130, 63, 6, 59, 186, 99, 49, 131, 179, 40, 34, 182, 109, 66, 8, 104, 198, 22, 0, 255, 20, 95, 26, 130, 44, 6, 61, 186, 99, 49, 234, 175, 40, 34, 138, 103, 66, 8, 2, 204, 22, 0, 255, 20, 14, 28, 132, 69, 6, 62, 186, 99, 49, 182, 173, 40, 34, 85, 99, 66, 8, 208, 206, 22, 0, 0, 21, 14, 28, 134, 70, 6, 63, 186, 99, 49, 187, 171, 40, 34, 205, 95, 66, 8, 160, 209, 22, 0, 0, 21, 38, 28, 134, 70, 6, 64, 186, 99, 49, 180, 169, 40, 34, 29, 92, 66, 8, 120, 212, 22, 0, 0, 21, 111, 28, 137, 71, 6, 65, 186, 99, 49, 199, 167, 40, 34, 132, 88, 66, 8, 75, 215, 22, 0, 255, 20, 62, 28, 137, 71, 6, 66, 186, 99, 49, 5, 166, 40, 34, 43, 85, 66, 8, 33, 218, 22, 0, 0, 21, 87, 28, 137, 71, 6, 67, 186, 99, 49, 68, 164, 40, 34, 238, 81, 66, 8, 246, 220, 22, 0, 0, 21, 87, 28, 141, 71, 6, 68, 186, 99, 49, 47, 162, 40, 34, 23, 78, 66, 8, 214, 223, 22, 0, 0, 21, 187, 28, 141, 71, 6, 69, 186, 99, 49, 71, 160, 40, 34, 93, 74, 66, 8, 181, 226, 22, 0, 0, 21, 187, 28, 144, 71, 6, 70, 186, 99, 49, 99, 158, 40, 34, 192, 70, 66, 8, 151, 229, 22, 0, 255, 20, 212, 28, 144, 72, 6, 72, 186, 0, 0, 0, 0, 0, 0, 231, 213])
Download 14, o40448, c54759
packing 'D\t\x0e\x00\x00\x9e\x00\x00\x00\x01\xe7\xd5\x00\x00\x00\x00' in array('B', [68, 9, 14, 0, 0, 158, 0, 0, 0, 1, 231, 213, 0, 0, 0, 0]),<type 'array.array'>
send burst transfer 0
Send burst transfer, chan 0, data array('B', [68, 9, 14, 0, 0, 158, 0, 0, 0, 1, 231, 213, 0, 0, 0, 0])
Send burst transfer, packet 0, seq 0, data array('B', [68, 9, 14, 0, 0, 158, 0, 0])
Send burst transfer, packet 1, seq 5, data array('B', [0, 1, 231, 213, 0, 0, 0, 0])
wait for message matching <function match at 0x7f968b38be60>
looking for matching message in deque([(0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [4])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [4])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2]))])
 - could not find response matching <function match at 0x7f968b38be60>
Read data: [a4 09 4e 00 43 24 02 03 39 05 00 00 b9] (now have [a4 09 4e 00 43 24 02 03 39 05 00 00 b9] in buffer)
Got broadcast data, examine queue to see if we should send anything back
Write data: [a4 09 50 00 44 09 0e 00 00 9e 00 00 20]
 - sent message from queue, <ant.base.Message 50:[00 44 09 0e 00 00 9e 00 00] (s:a4, l:9, c:20)>
Write data: [a4 09 50 a0 00 01 e7 d5 00 00 00 00 6e]
 - sent message from queue, <ant.base.Message 50:[a0 00 01 e7 d5 00 00 00 00] (s:a4, l:9, c:6e)>
Read data: [a4 09 4e 00 43 24 02 03 39 05 00 00 b9] (now have [a4 09 4e 00 43 24 02 03 39 05 00 00 b9] in buffer)
No new data this period
Got broadcast data, examine queue to see if we should send anything back
 - no messages in queue
Read data: [a4 03 40 00 01 0a ec] (now have [a4 03 40 00 01 0a ec] in buffer)
Got channel event, <ant.base.Message 40:[00 01 0a] (s:a4, l:3, c:ec)>
Read data: [a4 03 40 00 01 05 e3] (now have [a4 03 40 00 01 05 e3] in buffer)
Got channel event, <ant.base.Message 40:[00 01 05] (s:a4, l:3, c:e3)>
Read data: [a4 09 4e 00 43 24 03 03 39 05 00 00 b8] (now have [a4 09 4e 00 43 24 03 03 39 05 00 00 b8] in buffer)
looking for matching message in deque([(0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [4])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [4])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [10])), (0, 1, array('B', [5]))])
 - response found (0, 1, array('B', [10]))
wait for message matching <function match at 0x7f968b38bf50>
looking for matching message in deque([(0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [4])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [4])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [5]))])
 - response found (0, 1, array('B', [5]))
done sending burst transfer 0
Wait for response...
Get command, t5, s0
Got broadcast data, examine queue to see if we should send anything back
 - no messages in queue
Read data: [a4 09 50 00 43 24 03 03 39 05 00 00 a6] (now have [a4 09 50 00 43 24 03 03 39 05 00 00 a6] in buffer)
Read data: [a4 09 50 20 44 89 00 00 00 02 00 00 12] (now have [a4 09 50 20 44 89 00 00 00 02 00 00 12] in buffer)
Read data: [a4 09 50 40 00 9e 00 00 cf d3 02 00 3d] (now have [a4 09 50 40 00 9e 00 00 cf d3 02 00 3d] in buffer)
Read data: [a4 09 50 60 63 31 79 9a 28 22 74 3f 6d] (now have [a4 09 50 60 63 31 79 9a 28 22 74 3f 6d] in buffer)

A longer sample would be
Read data: [a4 09 50 60 69 26 00 ed 16 52 1b 98 f8] (now have [a4 09 50 60 69 26 00 ed 16 52 1b 98 f8] in buffer)
Read data: [a4 09 50 20 44 06 b6 c0 63 31 84 83 bc] (now have [a4 09 50 20 44 06 b6 c0 63 31 84 83 bc] in buffer)
Read data: [a4 09 50 40 1a 22 23 d4 39 08 fc 6e d1] (now have [a4 09 50 40 1a 22 23 d4 39 08 fc 6e d1] in buffer)
Read data: [a4 09 50 60 26 00 ed 16 3e 1c 98 45 bf] (now have [a4 09 50 60 26 00 ed 16 3e 1c 98 45 bf] in buffer)
Read data: [a4 03 40 00 01 04 e2] (now have [a4 03 40 00 01 04 e2] in buffer)
Got channel event, <ant.base.Message 40:[00 01 04] (s:a4, l:3, c:e2)>
Read data: [a4 03 40 00 01 02 e4] (now have [a4 03 40 00 01 02 e4] in buffer)
Got channel event, <ant.base.Message 40:[00 01 02] (s:a4, l:3, c:e4)>
Read data: [a4 09 4e 00 43 24 02 03 39 05 00 00 b9] (now have [a4 09 4e 00 43 24 02 03 39 05 00 00 b9] in buffer)
Got broadcast data, examine queue to see if we should send anything back
 - no messages in queue
Read data: [a4 09 4e 00 43 24 02 03 39 05 00 00 b9] (now have [a4 09 4e 00 43 24 02 03 39 05 00 00 b9] in buffer)
No new data this period
Got broadcast data, examine queue to see if we should send anything back
 - no messages in queue
Read data: [a4 03 40 00 01 02 e4] (now have [a4 03 40 00 01 02 e4] in buffer)
Got channel event, <ant.base.Message 40:[00 01 02] (s:a4, l:3, c:e4)>
Read data: [a4 09 4e 00 43 24 02 03 39 05 00 00 b9] (now have [a4 09 4e 00 43 24 02 03 39 05 00 00 b9] in buffer)
Got broadcast data, examine queue to see if we should send anything back
 - no messages in queue
Read data: [a4 09 4e 00 43 24 02 03 39 05 00 00 b9] (now have [a4 09 4e 00 43 24 02 03 39 05 00 00 b9] in buffer)
No new data this period
Got broadcast data, examine queue to see if we should send anything back
 - no messages in queue
Read data: [a4 09 4e 00 43 24 02 03 39 05 00 00 b9] (now have [a4 09 4e 00 43 24 02 03 39 05 00 00 b9] in buffer)
No new data this period
Got broadcast data, examine queue to see if we should send anything back
 - no messages in queue
Read data: [a4 09 4e 00 43 24 02 03 39 05 00 00 b9] (now have [a4 09 4e 00 43 24 02 03 39 05 00 00 b9] in buffer)
No new data this period
Got broadcast data, examine queue to see if we should send anything back
 - no messages in queue
Read data: [a4 09 4e 00 43 24 02 03 39 05 00 00 b9] (now have [a4 09 4e 00 43 24 02 03 39 05 00 00 b9] in buffer)
No new data this period
Got broadcast data, examine queue to see if we should send anything back
 - no messages in queue
Read data: [a4 09 4e 00 43 24 02 03 39 05 00 00 b9] (now have [a4 09 4e 00 43 24 02 03 39 05 00 00 b9] in buffer)
No new data this period
Got broadcast data, examine queue to see if we should send anything back
 - no messages in queue
Read data: [a4 09 4e 00 43 24 02 03 39 05 00 00 b9] (now have [a4 09 4e 00 43 24 02 03 39 05 00 00 b9] in buffer)
No new data this period
Got broadcast data, examine queue to see if we should send anything back
 - no messages in queue
Read data: [a4 03 40 00 01 02 e4] (now have [a4 03 40 00 01 02 e4] in buffer)
Got channel event, <ant.base.Message 40:[00 01 02] (s:a4, l:3, c:e4)>
Read data: [a4 09 4e 00 43 24 02 03 39 05 00 00 b9] (now have [a4 09 4e 00 43 24 02 03 39 05 00 00 b9] in buffer)
Got broadcast data, examine queue to see if we should send anything back
 - no messages in queue
Read data: [a4 09 4e 00 43 24 02 03 39 05 00 00 b9] (now have [a4 09 4e 00 43 24 02 03 39 05 00 00 b9] in buffer)
No new data this period
Got broadcast data, examine queue to see if we should send anything back
 - no messages in queue
Read data: [a4 09 4e 00 43 24 02 03 39 05 00 00 b9] (now have [a4 09 4e 00 43 24 02 03 39 05 00 00 b9] in buffer)
No new data this period
Got broadcast data, examine queue to see if we should send anything back
 - no messages in queue
Read data: [a4 09 4e 00 43 24 02 03 39 05 00 00 b9] (now have [a4 09 4e 00 43 24 02 03 39 05 00 00 b9] in buffer)
No new data this period
Got broadcast data, examine queue to see if we should send anything back
 - no messages in queue
Read data: [a4 09 4e 00 43 24 02 03 39 05 00 00 b9] (now have [a4 09 4e 00 43 24 02 03 39 05 00 00 b9] in buffer)
No new data this period
Got broadcast data, examine queue to see if we should send anything back
 - no messages in queue
Read data: [a4 09 4e 00 43 24 02 03 39 05 00 00 b9] (now have [a4 09 4e 00 43 24 02 03 39 05 00 00 b9] in buffer)
No new data this period
Got broadcast data, examine queue to see if we should send anything back
 - no messages in queue
Read data: [a4 09 4e 00 43 24 02 03 39 05 00 00 b9] (now have [a4 09 4e 00 43 24 02 03 39 05 00 00 b9] in buffer)
No new data this period
Got broadcast data, examine queue to see if we should send anything back
 - no messages in queue
Read data: [a4 09 4e 00 43 24 02 03 39 05 00 00 b9] (now have [a4 09 4e 00 43 24 02 03 39 05 00 00 b9] in buffer)
No new data this period
Got broadcast data, examine queue to see if we should send anything back
 - no messages in queue
Read data: [a4 09 4e 00 43 24 02 03 39 05 00 00 b9] (now have [a4 09 4e 00 43 24 02 03 39 05 00 00 b9] in buffer)
No new data this period
Got broadcast data, examine queue to see if we should send anything back
 - no messages in queue
Read data: [a4 09 4e 00 43 24 02 03 39 05 00 00 b9] (now have [a4 09 4e 00 43 24 02 03 39 05 00 00 b9] in buffer)
No new data this period
Got broadcast data, examine queue to see if we should send anything back
 - no messages in queue
Read data: [a4 09 4e 00 43 24 02 03 39 05 00 00 b9] (now have [a4 09 4e 00 43 24 02 03 39 05 00 00 b9] in buffer)
No new data this period
Got broadcast data, examine queue to see if we should send anything back
 - no messages in queue
Read data: [a4 09 4e 00 43 24 02 03 39 05 00 00 b9] (now have [a4 09 4e 00 43 24 02 03 39 05 00 00 b9] in buffer)
No new data this period
Got broadcast data, examine queue to see if we should send anything back
 - no messages in queue
Read data: [a4 03 40 00 01 02 e4] (now have [a4 03 40 00 01 02 e4] in buffer)
Got channel event, <ant.base.Message 40:[00 01 02] (s:a4, l:3, c:e4)>
Read data: [a4 09 4e 00 43 24 02 03 39 05 00 00 b9] (now have [a4 09 4e 00 43 24 02 03 39 05 00 00 b9] in buffer)
Got broadcast data, examine queue to see if we should send anything back
 - no messages in queue
Read data: [a4 09 4e 00 43 24 02 03 39 05 00 00 b9] (now have [a4 09 4e 00 43 24 02 03 39 05 00 00 b9] in buffer)
No new data this period
Got broadcast data, examine queue to see if we should send anything back
 - no messages in queue
Read data: [a4 09 4e 00 43 24 02 03 39 05 00 00 b9] (now have [a4 09 4e 00 43 24 02 03 39 05 00 00 b9] in buffer)
No new data this period
Got broadcast data, examine queue to see if we should send anything back
 - no messages in queue
Read data: [a4 09 4e 00 43 24 02 03 39 05 00 00 b9] (now have [a4 09 4e 00 43 24 02 03 39 05 00 00 b9] in buffer)
No new data this period
Got broadcast data, examine queue to see if we should send anything back
 - no messages in queue
Read data: [a4 09 4e 00 43 24 02 03 39 05 00 00 b9] (now have [a4 09 4e 00 43 24 02 03 39 05 00 00 b9] in buffer)
No new data this period
Got broadcast data, examine queue to see if we should send anything back
 - no messages in queue
Read data: [a4 09 4e 00 43 24 02 03 39 05 00 00 b9] (now have [a4 09 4e 00 43 24 02 03 39 05 00 00 b9] in buffer)
No new data this period
Got broadcast data, examine queue to see if we should send anything back
 - no messages in queue
Read data: [a4 09 4e 00 43 24 02 03 39 05 00 00 b9] (now have [a4 09 4e 00 43 24 02 03 39 05 00 00 b9] in buffer)
No new data this period
Got broadcast data, examine queue to see if we should send anything back
 - no messages in queue
Read data: [a4 09 4e 00 43 24 02 03 39 05 00 00 b9] (now have [a4 09 4e 00 43 24 02 03 39 05 00 00 b9] in buffer)
No new data this period
Got broadcast data, examine queue to see if we should send anything back
 - no messages in queue
Read data: [a4 09 4e 00 43 24 02 03 39 05 00 00 b9] (now have [a4 09 4e 00 43 24 02 03 39 05 00 00 b9] in buffer)
No new data this period
Got broadcast data, examine queue to see if we should send anything back
 - no messages in queue
Read data: [a4 09 4e 00 43 24 02 03 39 05 00 00 b9] (now have [a4 09 4e 00 43 24 02 03 39 05 00 00 b9] in buffer)
No new data this period
Got broadcast data, examine queue to see if we should send anything back
 - no messages in queue
Read data: [a4 03 40 00 01 02 e4] (now have [a4 03 40 00 01 02 e4] in buffer)
Got channel event, <ant.base.Message 40:[00 01 02] (s:a4, l:3, c:e4)>
Read data: [a4 09 4e 00 43 24 02 03 39 05 00 00 b9] (now have [a4 09 4e 00 43 24 02 03 39 05 00 00 b9] in buffer)
Got broadcast data, examine queue to see if we should send anything back
 - no messages in queue
Read data: [a4 09 4e 00 43 24 02 03 39 05 00 00 b9] (now have [a4 09 4e 00 43 24 02 03 39 05 00 00 b9] in buffer)
No new data this period
Got broadcast data, examine queue to see if we should send anything back
 - no messages in queue
Read data: [a4 09 4e 00 43 24 02 03 39 05 00 00 b9] (now have [a4 09 4e 00 43 24 02 03 39 05 00 00 b9] in buffer)
No new data this period
Download 14 timeout
Download 14, o68096, c49511
packing 'D\t\x0e\x00\x00\n\x01\x00\x00\x01g\xc1\x00\x00\x00\x00' in array('B', [68, 9, 14, 0, 0, 10, 1, 0, 0, 1, 103, 193, 0, 0, 0, 0]),<type 'array.array'>
send burst transfer 0
Send burst transfer, chan 0, data array('B', [68, 9, 14, 0, 0, 10, 1, 0, 0, 1, 103, 193, 0, 0, 0, 0])
Send burst transfer, packet 0, seq 0, data array('B', [68, 9, 14, 0, 0, 10, 1, 0])
Send burst transfer, packet 1, seq 5, data array('B', [0, 1, 103, 193, 0, 0, 0, 0])
wait for message matching <function match at 0x7f968b38bf50>
looking for matching message in deque([(0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [4])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [4])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [4])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [4])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2]))])
 - could not find response matching <function match at 0x7f968b38bf50>
Got broadcast data, examine queue to see if we should send anything back
Write data: [a4 09 50 00 44 09 0e 00 00 0a 01 00 b5]
 - sent message from queue, <ant.base.Message 50:[00 44 09 0e 00 00 0a 01 00] (s:a4, l:9, c:b5)>
Write data: [a4 09 50 a0 00 01 67 c1 00 00 00 00 fa]
 - sent message from queue, <ant.base.Message 50:[a0 00 01 67 c1 00 00 00 00] (s:a4, l:9, c:fa)>
Read data: [a4 09 4e 00 43 24 02 03 39 05 00 00 b9] (now have [a4 09 4e 00 43 24 02 03 39 05 00 00 b9] in buffer)
No new data this period
Got broadcast data, examine queue to see if we should send anything back
 - no messages in queue
Read data: [a4 03 40 00 01 0a ec] (now have [a4 03 40 00 01 0a ec] in buffer)
Got channel event, <ant.base.Message 40:[00 01 0a] (s:a4, l:3, c:ec)>
Read data: [a4 03 40 00 01 05 e3] (now have [a4 03 40 00 01 05 e3] in buffer)
Got channel event, <ant.base.Message 40:[00 01 05] (s:a4, l:3, c:e3)>
Read data: [a4 09 4e 00 43 24 03 03 39 05 00 00 b8] (now have [a4 09 4e 00 43 24 03 03 39 05 00 00 b8] in buffer)
looking for matching message in deque([(0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [4])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [4])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [4])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [4])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [10])), (0, 1, array('B', [5]))])
 - response found (0, 1, array('B', [10]))
wait for message matching <function match at 0x7f968b38be60>
looking for matching message in deque([(0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [4])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [4])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [4])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [4])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [5]))])
 - response found (0, 1, array('B', [5]))
done sending burst transfer 0
Wait for response...
Get command, t5, s0
Got broadcast data, examine queue to see if we should send anything back
 - no messages in queue
Read data: [a4 09 50 00 43 24 03 03 39 05 00 00 a6] (now have [a4 09 50 00 43 24 03 03 39 05 00 00 a6] in buffer)
Read data: [a4 09 50 20 44 89 00 00 00 02 00 00 12] (now have [a4 09 50 20 44 89 00 00 00 02 00 00 12] in buffer)
Read data: [a4 09 50 40 00 0a 01 00 cf d3 02 00 a8] (now have [a4 09 50 40 00 0a 01 00 cf d3 02 00 a8] in buffer)
Read data: [a4 09 50 60 22 cb 39 08 4b 4c 26 00 64] (now have [a4 09 50 60 22 cb 39 08 4b 4c 26 00 64] in buffer)

I hope this helps in diagnozing the problem. I'm unsure what I would be looking for ...

I can confirm that decreasing the timeout like @HelgeKrueger suggests, results in a more stable (albeit slower) transfer. Both Garmin Express, ANT Agent and antfs-cli had trouble transferring this file, but decreasing the timeout worked.

Any more progress on this? Thanks!

I'm afraid I haven't had time to look at this. But I think we can go ahead and merge a fix that increases the timeout since it seem to work for multiple people.


Cleaning the data

In order to replicate the results of the paper, we need to experiment with a different data set. We propose using the following data set. Nevertheless, its utterance column merges the utterance and the positivity columns in the data set used by the research paper. We need to split them and reorganize the data set by today's end.

Done!


Update Cargo.toml http => https

Thanks!

Thanks. As I can see you only have on crate so far, but this page will list the information about all of your crates as you publish more. I hope it will be useful.


Docs navbar is shifted to left in Edge

The navbar in the Bootstrap 4 docs is partially off screen in Edge 16 and the click targets do not line up with what is displayed (the click targets appear to still be on the place they should be).
Disabling position: sticky and z-index: 1071 on .bd-navbar seems to fix it, but obviously comes with its own issues.

I don't understand what the issue is exactly. What is off-screen exactly?

OK, I just noticed what you mean.
Doesn't happen with Edge v15 which is the version that ships with Windows 10 stable.

Someone should report the issue to Microsoft.

/cc @patrickkettner

Just noticed that the navbar will also move down (the grey bar is the bottom of the favorites bar):

Also note where Edge says the element actually is.
I know that beta software usually isn't a priority to support, but depending on where the issue lays, this should be reported to Microsoft, fixed in Edge and a workaround included in Bootstrap or fixed in Bootstrap. Edge 16 is close to finishing now.

similar issue on mac chrome 56

Chrome 56 is old. Works fine with latest Chrome. And we had an issue for that, which I closed for this exact reason.

not sure what criteria you are using in the justification seeing as how it was only released this year? I would not call it old... Yes its falling off but I am willing to bet that if its failing in 56 it might be failing in 49 & 58 which will stick around for quite awhile as they are used by several government/organizations still based on security compliance evaluations
1 year: http://gs.statcounter.com/browser-version-market-share/desktop/worldwide/#monthly-201607-201707-bar
3 mon: http://gs.statcounter.com/browser-version-market-share/desktop/worldwide/#monthly-201705-201707-bar

The criteria is they are evergreen browsers and that no one can fix something broken in a browser.

Just as an aside, that issue with Chrome 56 is that their sticky implementation counts the box-shadow. I don't have any plans to fix it though—it'd require some severe hacking of HTML to account for it. It's also only present on non-retina screens as I recall.
Worked on this at GitHub for the toolbar on diff tabs :).

This doesn't seem to happen with Microsoft Edge 41.16299.15.0 either.
There's some weird shifting while scrolling the page in the left sidebar, but I think it's due to the wrong use of scrollspy which is removed in v4-dev. We'll see when beta2 is out.

Closing since I can't reproduce with the Edge stable version.


Feature: Connect to the host HA when not in local network (using a notebook outside your local network)

Hello! Thanks for creating this great app, this is just amazing work!
I was wondering if it would be possible to type both a local IP and remote IP address and have Hass Agent know when it is not connected to the local network and use the secondary IP to connect to the host HA?
This would be great when I use notebook outside my local network and could still connect to the HA instance outside my home, over the internet. Since I've already set up my DDNS and opened the correct ports, this would be a great feature to have.
Thanks again, have a great day!

That's a good idea, why not :)
Created a ticket for this request: hassagent-119.
I'm closing this GitHub ticket, not because I'm not doing it, but to keep everything centralised. I'll post back here when it's implemented :)


COM-139: Textarea component

Please delete checklist items and sections that are not relevant
Checklist

[ ] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] This change requires a documentation update

Please check if the PR fulfills these requirements

[x] Tests for the changes have been added (for bug fixes / features)
[x] Storybook or docs have been added / updated (for bug fixes / features)

What is the ticket / issue associated with this change? (Link to the ticket or issue)
https://impulsumvc.atlassian.net/browse/COM-139
Other information:

Added engines property to the package.json file in order to get an warning or even an error when using the wrong version of NodeJS.
Before, when executing yarn storybook script and using node v17

after, executing yarn storybook or yarn install and using node v17

I added the package @testing-library/jest-dom to make our tests more declarative and clear to read.

Storybook Link (Link to a local storybook url to review new functionality)
https://5eed577398d08d0022b52d76-mtghfhaejd.chromatic.com/?path=/story/components-primitives-textarea--all

The disabled state do not match figma, see attached image (left: storybook; right: figma)


[DELTA] Add logs around managed commits

Which Delta project/connector is this regarding?

[x] Spark
[ ] Standalone
[ ] Flink
[ ] Kernel
[ ] Other (fill in here)

Description
Add logging around managed commits.
How was this patch tested?
UTs
Does this PR introduce any user-facing changes?
No

Seems to be a flaky (timeout) test. We can force merge this.
https://github.com/delta-io/delta/actions/runs/9457025237/job/26050028706?pr=3246
[info] - PredicatePushdown: Multiple delete statements. vectorizedReaderEnabled: false readColumnarBatchAsRows: false
[info] - PredicatePushdown: Scan with predicates. vectorizedReaderEnabled: true readColumnarBatchAsRows: true *** FAILED ***
[info]   The code passed to failAfter did not complete within 20 minutes. (DeletionVectorsSuite.scala:1022)
[info]   org.scalatest.exceptions.TestFailedDueToTimeoutException:
[info]   at java.lang.Thread.getStackTrace(Thread.java:1564)
[info]   at org.scalatest.concurrent.TimeLimits$.failAfterImpl(TimeLimits.scala:277)
[info]   at org.scalatest.concurrent.TimeLimits.failAfter(TimeLimits.scala:231)
[info]   at org.scalatest.concurrent.TimeLimits.failAfter$(TimeLimits.scala:230)
[info]   at org.apache.spark.SparkFunSuite.failAfter(SparkFunSuite.scala:69)
[info]   at org.apache.spark.SparkFunSuite.$anonfun$test$2(SparkFunSuite.scala:155)
[info]   at org.scalatest.OutcomeOf.outcomeOf(OutcomeOf.scala:85)
[info]   at org.scalatest.OutcomeOf.outcomeOf$(OutcomeOf.scala:83)
[info]   at org.scalatest.OutcomeOf$.outcomeOf(OutcomeOf.scala:104)
[info]   at org.scalatest.Transformer.apply(Transformer.scala:22)
[info]   at org.scalatest.Transformer.apply(Transformer.scala:20)
[info]   at org.scalatest.funsuite.AnyFunSuiteLike$$anon$1.apply(AnyFunSuiteLike.scala:226)


HAWQ-591. Explain analyze doesn't enter function cdbexplain_recvExecS…

…tats after QD finding QE error

+1


Incorrect screen resolution

Microsoft PowerToys version
0.41.4
Running as admin

[X] Yes

Area(s) with issue?
FancyZones, FancyZones Editor
Steps to reproduce
When opening FancyZones Editor, my screen res is showing as 3368 x 1440 instead of 3400 x 1440 as it should be, and used to be. This week I plugged in a second monitor (but currently this is off and disconnected via Win + P) - could that have caused an issue?
I am currently left with a taskbar-sized gap at the RHS of my screen. My Taskbar, however, is configured to be on the LHS.
Great app otherwise, love it. Thanks guys and girls.
PowerToysReport_2021-07-09-10-46-35.zip

✔ Expected Behavior
No response
❌ Actual Behavior
I am currently left with a taskbar-sized gap at the RHS of my screen.
Other Software
No response

If I'm not mistaken, the down value is the workable area of the screen, so minus the task bar. In other words: the size of the zone canvas.

Ah, that does make sense. I don't remember the down value being there before though... Plus it is giving me a gap on the RHS but my taskbar is LHS - I would've imagined it reading taskbar orientation/location before setting zone location. Does that make sense?On 9 Jul 2021 17:47, Jay @.***> wrote:
If I'm not mistaken, the down value is the workable area of the screen, so minus the task bar. In other words: the size of the zone canvas.
—You are receiving this because you authored the thread.Reply to this email directly, view it on GitHub, or unsubscribe.


[Docs] API Concepts

We've started a document of concepts that we felt needed to be defined in Concepts.md.
This list may not be complete. If you feel like an additional concept needs to be addressed, please let us know here or create a PR to Concepts.

Add

Please


Programming Exercise: Show input errors on exercise creation aggregated on footer

Checklist
General

[x] I tested all changes and their related features with all corresponding user types on a test server.
[x] Language: I followed the guidelines for inclusive, diversity-sensitive, and appreciative language.
[x] I chose a title conforming to the naming conventions for pull requests.

Client

[x] I followed the coding and design guidelines.
[x] I added multiple integration tests (Jest) related to the features (with a high test coverage), while following the test guidelines.
[x] I documented the TypeScript code using JSDoc style.
[x] I added multiple screenshots/screencasts of my UI changes.
[x] I translated all newly inserted strings into English and German.

Motivation and Context
When creating programming exercises, all input errors will be shown aggregately in vicinity of the 'Generate'-button. This PR is linked to issue #4198.
Description
Validation is done in a new method, that validates the input and returns all error messages as an array of type
{     translateKey: <translate key as a string for the corresponding error message>,     translateValues: <a map of values that may be needed for the message> } .
All error messages will then be displayed in the red colored badge.
Steps for Testing
Prerequisites:

1 Instructor
1 Course

Log in to Artemis
Navigate to Course Administration
Navigate to Exercises of any course
Navigate to 'New programming exercises'
Try all sort of input errors and make sure, that an appropriate error message is shown while hovering over the box left of the 'Generate'-button.
Make sure that the error box disappears when all input is valid, the generate button can be clicked and the exercise will be created correctly.

Review Progress
Code Review

[x] Review 1
[ ] Review 2

Manual Tests

[x] Test 1
[ ] Test 2

Test Coverage
File: Line - Branch
programming-exercise-update.component.ts: 72.9% - 70.18%; changes made however are covered by 92.9%
Screenshots

Thanks a lot, was an actual error and I fixed it.

So either the second message should not be displayed (1), the messages should be merged (2), or a slightly different pattern should be used here (3).

Regarding your solution suggestions, I have the following concerns:

In case you have an invalid shortname '§2', length and pattern (when filled up with any character) are not valid. But in this case, only the length violation would be displayed and the pattern violation only when it reaches a length of 3. In order to prevent this, you would have to change the pattern (3).
For the validation, Angular forms are used. Therefore these messages cannot be merged without writing unreadable code in *ngIf Statements.
Changing the pattern may have unintended side-effects on other components, like e.g. the team imports.

I see that this is not 100% tidy, but I would skip this in view of needed effort.

It is missing the validation in the "bonus points" section. The error message is not shown while hovering over the box left of the 'Generate'-button. Tested on ts1.

Fixed in c4ccc9f.

@Hialus
Changed Short Name Pattern for current component, so that it has no side-effects on other components/services.
Corresponding commit is 89b4504

It is missing the validation in the "bonus points" section. The error message is not shown while hovering over the box left of the 'Generate'-button.

@ProfeSanti Fixed in c4ccc9f.

The error that I found days ago, has been already fixed!

I tested on ts1 and error messages caused by different submission policies are missing: Submission Policies: Lock Repository

Added in f56081b.

I tested on ts1 and error messages caused by different submission policies are missing: Submission Policies: Lock Repository

Added in f56081b.

I tested on ts1 and noticed 2 problems. First of them the behavior is not same with other labels.
Other labels show the error message immediately after you type an invalid input like:

but it's not the case in submission limit, when the submission policy "Submission penalty" is chosen.:

It shows the error message when you select another label:

Second Problem:
The error message "The Penalty must be set" appears in the bottom but it's set in the field and no error message is visible there:

To Reproduce:

Generate a programming exercise
Fill the fields (title, short name, package name, points)
Change the submission policy to "Submission Penalty"
Set an "Exceeding Submission Limit Penalty"
Change submission policy to "None" or "Lock Repository"
Change the submission policy back to "Submission Penalty"

First Problem:
Other labels show the error message immediately after you type an invalid input

Fixed by changing the trigger calling methods that changes the SubmissionPolicy object values from "change" to "input".

Second Problem:
The error message "The Penalty must be set" appears in the bottom but it's set in the field and no error message is visible

This was caused because the SubmissionPolicy object from the component was changed when changing the submission type to LockRepository, however, the value for exceeding submissions remains in the form. When changing back to SubmissionPenalty, the exceeding limit value from the component was not set to the value from the form. In order to fix this, when changing the policy type to SubmissionPenalty, the submission limit of the SubmissionPolicy object is set to the value of the form (may be undefined, but that's fine).

Tested in TS1. Everything is working according to the description.


Support Missing Parameters

Fixes #26 by implementing the required constructors.
Fixes #29 (remaining portion) by way of implementation of #26.
Fixes #35 by adding the required parameters to each map class.
Changes the default RogueLikeEntity background to be transparent, so that the expected behavior is achieved on surfaces with a non-black default background.

It's simply creating constructors that allow you to utilize all the values of the class being inherited from.  These are really just making sure that everything that the base classes in SadConsole and GoRogue offer, are also available to users of the integration library.
The only semi-complex part was the ref ColoredGlyph madness, and I copied it from SadConsole :D

It's simply creating constructors that allow you to utilize all the values of the class being inherited from.  These are really just making sure that everything that the base classes in SadConsole and GoRogue offer, are also available to users of the integration library.
The only semi-complex part was the ref ColoredGlyph madness, and I copied it from SadConsole :D


New Room name push kills my switches

The included new push of the room names at the start of the plugin, renames all my switches in HomeKit.
I have to rename them manually, because in the German language you put the verb at the end.
e.g. Wohnzimmer reinigen, Küche reinigen,…
Two suggestions for a fix:
a) Option to set wether the cleaning word should be before or after the room name
b) make the room name push optional within the settings of the plugin

Oh! I'm sorry to learn that it broke it for you.
Can you confirm if this issue occurs every time Homebridge is restarted? Or did it happen only once?

I'll take a look! I'll see if we can check if the names have been changed by the user. If so, we'll skip without any required additional config 😇

It should be fixed in the latest release: 0.31.1
Bear in mind that it will require that you set your custom names one last time. After that, the plugin will persist your preference and won't overwrite it any more.

Just did a quick test and it seems to work. Names stay the same even after a restart of the child bridge.
Thank you for your quick fix.


the chipseq pipeline runs forever even when errors were reported

Hi, I found the chipseq pipeline will run forever even when error reported!
The command used to launch the workflow was as follows:
 nextflow run nf-core/chipseq --input design.csv --fasta /testdata/genome.fa --gtf /testdata/genes.gtf -qs 5 --macs_gsize 2.7e9 -offline --outdir /enigma/local_storage/ -resume

Pipeline Configuration:

Run Name: cheeky_cray
Data Type: Paired-End
Design File: design.csv
Genome: Not supplied
Fasta File: /testdata/genome.fa
GTF File: /testdata/genes.gtf
MACS2 Genome Size: 2.7e9
Min Consensus Reps: 1
MACS2 Narrow Peaks: No
MACS2 Broad Cutoff: 0.1
Trim R1: 0 bp
Trim R2: 0 bp
Trim 3' R1: 0 bp
Trim 3' R2: 0 bp
NextSeq Trim: 0 bp
Fingerprint Bins: 500000
Save Genome Index: No
Max Resources: 128 GB memory, 16 cpus, 10d time per job
Output Dir: /enigma/local_storage/
Launch Dir: /enigma/local_storage
Working Dir: /enigma/local_storage/work
Script Dir: /root/.nextflow/assets/nf-core/chipseq
User: root
Config Profile: standard
Date Started: 2022-08-26T07:40:32.843487Z
Date Completed: 2022-08-26T08:17:04.528705Z
Pipeline script file path: /root/.nextflow/assets/nf-core/chipseq/main.nf
Pipeline script hash ID: 39c073c68caf34f6f725e82907fff2bd
Pipeline repository Git URL: https://github.com/nf-core/chipseq
Pipeline repository Git Commit: 6924b669422215f9021144b251e83fc9929be1fe
Pipeline Git branch/tag: master
Nextflow Version: 21.10.6
Nextflow Build: 5660
Nextflow Compile Timestamp: 21-12-2021 16:55 UTC

running status:

tail of the ,nexflow.log：
Aug-26 07:40:35.833 [main] DEBUG nextflow.Session - Session await > all barriers passed
Aug-26 07:40:35.833 [Actor Thread 4] DEBUG nextflow.util.CacheHelper - Hash asset file sha-256: /root/.nextflow/assets/nf-core/chipseq/docs/images/mqc_spp_nsc_plot.png
Aug-26 07:40:35.833 [Actor Thread 4] DEBUG nextflow.util.CacheHelper - Hash asset file sha-256: /root/.nextflow/assets/nf-core/chipseq/docs/images/mqc_picard_insert_size_plot.png
Aug-26 07:40:35.833 [Actor Thread 4] DEBUG nextflow.util.CacheHelper - Hash asset file sha-256: /root/.nextflow/assets/nf-core/chipseq/docs/images/mqc_deseq2_sample_similarity_plot.png
Aug-26 07:40:35.833 [Actor Thread 4] DEBUG nextflow.util.CacheHelper - Hash asset file sha-256: /root/.nextflow/assets/nf-core/chipseq/docs/images/nf-core-chipseq_logo.png
Aug-26 07:40:35.834 [Actor Thread 4] DEBUG nextflow.util.CacheHelper - Hash asset file sha-256: /root/.nextflow/assets/nf-core/chipseq/docs/images/mqc_macs2_peak_count_plot.png
Aug-26 07:40:35.834 [Actor Thread 4] DEBUG nextflow.util.CacheHelper - Hash asset file sha-256: /root/.nextflow/assets/nf-core/chipseq/docs/images/mqc_samtools_stats_plot.png
Aug-26 07:40:35.834 [Actor Thread 4] DEBUG nextflow.util.CacheHelper - Hash asset file sha-256: /root/.nextflow/assets/nf-core/chipseq/docs/images/mqc_picard_deduplication_plot.png
Aug-26 07:40:35.834 [Actor Thread 4] DEBUG nextflow.util.CacheHelper - Hash asset file sha-256: /root/.nextflow/assets/nf-core/chipseq/docs/images/mqc_deseq2_pca_plot.png
Aug-26 07:40:35.835 [Actor Thread 4] DEBUG nextflow.util.CacheHelper - Hash asset file sha-256: /root/.nextflow/assets/nf-core/chipseq/docs/images/r_deseq2_ma_plot.png
Aug-26 07:40:35.835 [Actor Thread 4] DEBUG nextflow.util.CacheHelper - Hash asset file sha-256: /root/.nextflow/assets/nf-core/chipseq/docs/images/mqc_cutadapt_plot.png
Aug-26 07:40:35.835 [Actor Thread 4] DEBUG nextflow.util.CacheHelper - Hash asset file sha-256: /root/.nextflow/assets/nf-core/chipseq/docs/images/r_upsetr_intersect_plot.png
Aug-26 07:40:35.835 [Actor Thread 4] DEBUG nextflow.util.CacheHelper - Hash asset file sha-256: /root/.nextflow/assets/nf-core/chipseq/docs/images/igv_screenshot.png
Aug-26 07:40:35.836 [Actor Thread 4] DEBUG nextflow.util.CacheHelper - Hash asset file sha-256: /root/.nextflow/assets/nf-core/chipseq/docs/images/mqc_preseq_plot.png
Aug-26 07:40:35.836 [Actor Thread 4] DEBUG nextflow.util.CacheHelper - Hash asset file sha-256: /root/.nextflow/assets/nf-core/chipseq/docs/images/mqc_deeptools_plotProfile_plot.png
Aug-26 07:40:35.836 [Actor Thread 4] DEBUG nextflow.util.CacheHelper - Hash asset file sha-256: /root/.nextflow/assets/nf-core/chipseq/docs/images/mqc_spp_rsc_plot.png
Aug-26 07:40:35.849 [Actor Thread 4] DEBUG nextflow.util.CacheHelper - Hash asset file sha-256: /root/.nextflow/assets/nf-core/chipseq/docs/images/mqc_deeptools_plotFingerprint_plot.png
Aug-26 07:40:35.850 [Actor Thread 4] DEBUG nextflow.util.CacheHelper - Hash asset file sha-256: /root/.nextflow/assets/nf-core/chipseq/docs/images/r_deseq2_volcano_plot.png
Aug-26 07:40:35.851 [Actor Thread 4] DEBUG nextflow.util.CacheHelper - Hash asset file sha-256: /root/.nextflow/assets/nf-core/chipseq/bin/markdown_to_html.py
Aug-26 07:40:35.920 [Actor Thread 13] DEBUG nextflow.sort.BigSort - Sort completed -- entries: 1; slices: 1; internal sort time: 0.001 s; external sort time: 0.012 s; total time: 0.013 s
Aug-26 07:40:35.931 [Actor Thread 13] DEBUG nextflow.file.FileCollector - Saved collect-files list to: /tmp/eaf0fedf6e6e51441522aa82438c6ceb.collect-file
Aug-26 07:40:35.938 [Actor Thread 13] DEBUG nextflow.file.FileCollector - Deleting file collector temp dir: /tmp/nxf-5332452955947821456
Aug-26 07:45:35.811 [Task submitter] DEBUG n.processor.TaskPollingMonitor - %% executor local > tasks in the submission queue: 5 -- tasks to be submitted are shown below
~> TaskHandler[id: 1; name: CHECK_DESIGN (design.csv); status: NEW; exit: -; error: -; workDir: /enigma/local_storage/work/f7/5558e2114cac76f90c9bcf645f0c3d]
~> TaskHandler[id: 3; name: MAKE_GENE_BED (genes.gtf); status: NEW; exit: -; error: -; workDir: /enigma/local_storage/work/17/47fa87ef9ca0eb84430ba45fa044a0]
~> TaskHandler[id: 4; name: MAKE_GENOME_FILTER (genome.fa); status: NEW; exit: -; error: -; workDir: /enigma/local_storage/work/e0/ed57245c94a8c32a708c64395e9fc1]
~> TaskHandler[id: 5; name: get_software_versions; status: NEW; exit: -; error: -; workDir: /enigma/local_storage/work/70/408ad1bfd0414bb74be618bfc9d71c]
~> TaskHandler[id: 6; name: output_documentation; status: NEW; exit: -; error: -; workDir: /enigma/local_storage/work/b8/e098c250e24fd2563f6b587bf1e4e9]
Aug-26 07:50:35.955 [Task submitter] DEBUG n.processor.TaskPollingMonitor - %% executor local > tasks in the submission queue: 5 -- tasks to be submitted are shown below
~> TaskHandler[id: 1; name: CHECK_DESIGN (design.csv); status: NEW; exit: -; error: -; workDir: /enigma/local_storage/work/f7/5558e2114cac76f90c9bcf645f0c3d]
~> TaskHandler[id: 3; name: MAKE_GENE_BED (genes.gtf); status: NEW; exit: -; error: -; workDir: /enigma/local_storage/work/17/47fa87ef9ca0eb84430ba45fa044a0]
~> TaskHandler[id: 4; name: MAKE_GENOME_FILTER (genome.fa); status: NEW; exit: -; error: -; workDir: /enigma/local_storage/work/e0/ed57245c94a8c32a708c64395e9fc1]
~> TaskHandler[id: 5; name: get_software_versions; status: NEW; exit: -; error: -; workDir: /enigma/local_storage/work/70/408ad1bfd0414bb74be618bfc9d71c]
~> TaskHandler[id: 6; name: output_documentation; status: NEW; exit: -; error: -; workDir: /enigma/local_storage/work/b8/e098c250e24fd2563f6b587bf1e4e9]
Aug-26 07:55:36.087 [Task submitter] DEBUG n.processor.TaskPollingMonitor - %% executor local > tasks in the submission queue: 5 -- tasks to be submitted are shown below
~> TaskHandler[id: 1; name: CHECK_DESIGN (design.csv); status: NEW; exit: -; error: -; workDir: /enigma/local_storage/work/f7/5558e2114cac76f90c9bcf645f0c3d]
~> TaskHandler[id: 3; name: MAKE_GENE_BED (genes.gtf); status: NEW; exit: -; error: -; workDir: /enigma/local_storage/work/17/47fa87ef9ca0eb84430ba45fa044a0]
~> TaskHandler[id: 4; name: MAKE_GENOME_FILTER (genome.fa); status: NEW; exit: -; error: -; workDir: /enigma/local_storage/work/e0/ed57245c94a8c32a708c64395e9fc1]
~> TaskHandler[id: 5; name: get_software_versions; status: NEW; exit: -; error: -; workDir: /enigma/local_storage/work/70/408ad1bfd0414bb74be618bfc9d71c]
~> TaskHandler[id: 6; name: output_documentation; status: NEW; exit: -; error: -; workDir: /enigma/local_storage/work/b8/e098c250e24fd2563f6b587bf1e4e9]
Aug-26 08:00:36.221 [Task submitter] DEBUG n.processor.TaskPollingMonitor - %% executor local > tasks in the submission queue: 5 -- tasks to be submitted are shown below
~> TaskHandler[id: 1; name: CHECK_DESIGN (design.csv); status: NEW; exit: -; error: -; workDir: /enigma/local_storage/work/f7/5558e2114cac76f90c9bcf645f0c3d]
~> TaskHandler[id: 3; name: MAKE_GENE_BED (genes.gtf); status: NEW; exit: -; error: -; workDir: /enigma/local_storage/work/17/47fa87ef9ca0eb84430ba45fa044a0]
~> TaskHandler[id: 4; name: MAKE_GENOME_FILTER (genome.fa); status: NEW; exit: -; error: -; workDir: /enigma/local_storage/work/e0/ed57245c94a8c32a708c64395e9fc1]
~> TaskHandler[id: 5; name: get_software_versions; status: NEW; exit: -; error: -; workDir: /enigma/local_storage/work/70/408ad1bfd0414bb74be618bfc9d71c]
~> TaskHandler[id: 6; name: output_documentation; status: NEW; exit: -; error: -; workDir: /enigma/local_storage/work/b8/e098c250e24fd2563f6b587bf1e4e9]
Aug-26 08:05:36.352 [Task submitter] DEBUG n.processor.TaskPollingMonitor - %% executor local > tasks in the submission queue: 5 -- tasks to be submitted are shown below
~> TaskHandler[id: 1; name: CHECK_DESIGN (design.csv); status: NEW; exit: -; error: -; workDir: /enigma/local_storage/work/f7/5558e2114cac76f90c9bcf645f0c3d]
~> TaskHandler[id: 3; name: MAKE_GENE_BED (genes.gtf); status: NEW; exit: -; error: -; workDir: /enigma/local_storage/work/17/47fa87ef9ca0eb84430ba45fa044a0]
~> TaskHandler[id: 4; name: MAKE_GENOME_FILTER (genome.fa); status: NEW; exit: -; error: -; workDir: /enigma/local_storage/work/e0/ed57245c94a8c32a708c64395e9fc1]
~> TaskHandler[id: 5; name: get_software_versions; status: NEW; exit: -; error: -; workDir: /enigma/local_storage/work/70/408ad1bfd0414bb74be618bfc9d71c]
~> TaskHandler[id: 6; name: output_documentation; status: NEW; exit: -; error: -; workDir: /enigma/local_storage/work/b8/e098c250e24fd2563f6b587bf1e4e9]
Aug-26 08:10:36.484 [Task submitter] DEBUG n.processor.TaskPollingMonitor - %% executor local > tasks in the submission queue: 5 -- tasks to be submitted are shown below
~> TaskHandler[id: 1; name: CHECK_DESIGN (design.csv); status: NEW; exit: -; error: -; workDir: /enigma/local_storage/work/f7/5558e2114cac76f90c9bcf645f0c3d]
~> TaskHandler[id: 3; name: MAKE_GENE_BED (genes.gtf); status: NEW; exit: -; error: -; workDir: /enigma/local_storage/work/17/47fa87ef9ca0eb84430ba45fa044a0]
~> TaskHandler[id: 4; name: MAKE_GENOME_FILTER (genome.fa); status: NEW; exit: -; error: -; workDir: /enigma/local_storage/work/e0/ed57245c94a8c32a708c64395e9fc1]
~> TaskHandler[id: 5; name: get_software_versions; status: NEW; exit: -; error: -; workDir: /enigma/local_storage/work/70/408ad1bfd0414bb74be618bfc9d71c]
~> TaskHandler[id: 6; name: output_documentation; status: NEW; exit: -; error: -; workDir: /enigma/local_storage/work/b8/e098c250e24fd2563f6b587bf1e4e9]
Aug-26 08:15:36.612 [Task submitter] DEBUG n.processor.TaskPollingMonitor - %% executor local > tasks in the submission queue: 5 -- tasks to be submitted are shown below
~> TaskHandler[id: 1; name: CHECK_DESIGN (design.csv); status: NEW; exit: -; error: -; workDir: /enigma/local_storage/work/f7/5558e2114cac76f90c9bcf645f0c3d]
~> TaskHandler[id: 3; name: MAKE_GENE_BED (genes.gtf); status: NEW; exit: -; error: -; workDir: /enigma/local_storage/work/17/47fa87ef9ca0eb84430ba45fa044a0]
~> TaskHandler[id: 4; name: MAKE_GENOME_FILTER (genome.fa); status: NEW; exit: -; error: -; workDir: /enigma/local_storage/work/e0/ed57245c94a8c32a708c64395e9fc1]
~> TaskHandler[id: 5; name: get_software_versions; status: NEW; exit: -; error: -; workDir: /enigma/local_storage/work/70/408ad1bfd0414bb74be618bfc9d71c]
~> TaskHandler[id: 6; name: output_documentation; status: NEW; exit: -; error: -; workDir: /enigma/local_storage/work/b8/e098c250e24fd2563f6b587bf1e4e9]

Hi @gudeqing, thanks for reporting
Could it be that there are still running jobs, Nextflow tries to safely finish all the jobs before stopping. Otherwise, I can not figure out the reason, maybe @drpatelh has another better guess 🤔

Will close it now since it did not have activity, feel free to reach out if you have any further question


Scroll performance suffers a bit

If I scroll really quickly with a fixed/sticky element on the page, the repaint gets a little choppy. I understand it's a balance between having a smooth transition when a sticky element snaps into place and having a smooth scrolling animation for the rest of the page, have you considered adding a debounce option?

Might be a good idea. Also suggesting to the browser what will change via will-change might be a good idea here.


[Optimization][app] Submiter references the PythonOptions constants, even if the task does not use Python udf.

Search before asking

[X] I had searched in the issues and found no similar optimization requirement.

Description
Submiter references the PythonOptions constants, even if the task does not use Python udf.
即使任务没有使用Python udf，Submiter 还是引用了PythonOptions的常量。
Are you willing to submit a PR?

[ ] Yes I am willing to submit a PR!

Code of Conduct

[X] I agree to follow this project's Code of Conduct

Your code is not up to date.


Update types and remove mistakenly committed file

Signed-off-by: lovesh<EMAIL_ADDRESS>

We could add wasm_code.hex to .gitignore . @lovesh


Consolidated Error Handling

Consolidates all of the errors produced by the client into a single enum. Although not entirely needed, the majority of errors that could be potentially thrown were from APIManager.NetworkError. With that being an internal type, that limited the ability of a client consumer from being able to type catch and potentially resolve issues. All errors are now of type FlagsmithError.
Additional notes:

Moved Router to its own file and added the ability to pass a JSONEncoder to the request method enabling unit tests.
Refactored the APIManager request method to not need the emptyResponse parameter. The conditional checking for a specific type and flag was a bit cumbersome to follow. Now the completion block dictates if the response is decoded vs just indicating success/failure.
Replaced the fatalError() in the APIManager with an error completion. Questionable wether the library should cause an application to crash for being misconfigured.
Added additional documentation comments to fill out automatic DocC documentation that can be generated in Xcode.
Unit tests for Router and APIManager where possible.

I know I can go a bit overboard with some changes and opinionated behaviors. Please, feel free to reject or request changes. The company I work for is likely adopting Flagsmith, hence all the PRs!

This is great - thanks so much


index: view: simplify ls filtering logic

This also reduces view.ls() performance at least 4 times in some cases, which is important for diff and other operations.

Codecov Report
Base: 57.84% // Head: 57.72% // Decreases project coverage by -0.12% :warning:

Coverage data is based on head (5b6f961) compared to base (0273f86).
Patch coverage: 54.54% of modified lines in pull request are covered.

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #320      +/-   ##
==========================================
- Coverage   57.84%   57.72%   -0.12%
==========================================
  Files          51       51
  Lines        3340     3340
  Branches      581      452     -129
==========================================
- Hits         1932     1928       -4
- Misses       1321     1330       +9
+ Partials       87       82       -5

Impacted Files
Coverage Δ

src/dvc_data/index/index.py
64.04% <28.57%> (-0.63%)
:arrow_down:

src/dvc_data/index/view.py
82.89% <100.00%> (+1.88%)
:arrow_up:

src/dvc_data/index/save.py
74.41% <0.00%> (-2.33%)
:arrow_down:

src/dvc_data/hashfile/hash.py
75.51% <0.00%> (-0.25%)
:arrow_down:

src/dvc_data/cli.py
32.10% <0.00%> (ø)

src/dvc_data/hashfile/build.py
17.60% <0.00%> (ø)

src/dvc_data/hashfile/state.py
33.88% <0.00%> (ø)

tests/hashfile/test_hash_stream.py
100.00% <0.00%> (ø)

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


[SPARK-47345][SQL][TESTS] Xml functions suite

What changes were proposed in this pull request?

Convert JsonFunctiosnSuite.scala to XML equivalent. Note that XML doesn’t implement all json functions like json_tuple, get_json_object, etc.
Why are the changes needed?

Improve unit test coverage.
Does this PR introduce any user-facing change?

No.
How was this patch tested?

Unit tests.
Was this patch authored or co-authored using generative AI tooling?

No.

add [TESTS] since it only adds new tests

I have checked the new test suite locally:
$ build/sbt "sql/test:testOnly *XmlFunctionsSuite"
[info] XmlFunctionsSuite:
22:50:44.233 WARN org.apache.hadoop.util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
[info] - from_xml (5 seconds, 317 milliseconds)
[info] - from_xml with option (timestampFormat) (382 milliseconds)
[info] - from_xml with option (rowTag) (153 milliseconds)
[info] - from_xml with option (dateFormat) (180 milliseconds)
...
[info] All tests passed.

+1, LGTM. Merging to master.
Thank you, @yhosny and @zhengruifeng for review.


Unable to install HA-Bridge

Added repository, upon clicking on HA-Bridge and then install, button spins a sec then goes red and does nothing.
Supervisord log:
17-11-20 07:37:43 INFO (SyncWorker_12) [hassio.dock.addon] Start build 27e642c6/armhf-addon-ha-bridge:4.5.6p3
17-11-20 07:37:43 ERROR (MainThread) [aiohttp.server] Error handling request
Traceback (most recent call last):
  File "/usr/lib/python3.6/site-packages/aiohttp/web_protocol.py", line 416, in start
    resp = yield from self._request_handler(request)
  File "/usr/lib/python3.6/site-packages/aiohttp/web.py", line 323, in _handle
    resp = yield from handler(request)
  File "/usr/lib/python3.6/site-packages/hassio/api/util.py", line 31, in wrap_api
    answer = await method(api, *args, **kwargs)
  File "/usr/lib/python3.6/site-packages/hassio/addons/addon.py", line 474, in install
    if not await self.docker.install(self.last_version):
  File "/usr/lib/python3.6/site-packages/hassio/dock/util.py", line 18, in wrap_api
    return await method(api, *args, **kwargs)
  File "/usr/lib/python3.6/concurrent/futures/thread.py", line 55, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/usr/lib/python3.6/site-packages/hassio/dock/addon.py", line 219, in _install
    return self._build(tag)
  File "/usr/lib/python3.6/site-packages/hassio/dock/addon.py", line 232, in _build
    image = self.docker.images.build(**build_env.get_docker_args(tag))
  File "/usr/lib/python3.6/site-packages/docker/models/images.py", line 175, in build
    raise BuildError(chunk['error'])
docker.errors.BuildError: Please provide a source image with `from` prior to commit

Issue found, host needed updating (assuming docker version issue)


split databases

If the users and patient data were stored in two different databases, I would not need to always recreate all the users when something is broken with the patient data.
Also, this would allow me to delete and recreate the patient database (e.g. on every push to the main branch) from the data in the lyDATA repository programmatically.

From Django's website:

Django doesn’t currently provide any support for foreign key or many-to-many relationships spanning multiple databases.

So, it seems this isn't possible or at least not supported.


[Feature Request] onItemMove property

Is your feature request related to a problem? Please describe.
When moving an item, it's needed to check if from !== to, and the moved item is accessible via data[to], and this is somewhat counter intuitive at first (i was having a now obvious bug, as data has the array after the move)
Describe the solution you'd like
onItemMove (or onItemMoved) function property, only triggered when the index changes. As property, it will also contain, besides the onDragEnd props, item or movedItem, being it the data[to]. This property could also be added to onDragEnd.
Describe alternatives you've considered
Here is what I am basically doing, not bad but could be better if my feature was included:
onDragEnd={async ({ from, to, data }) => {
  if (from === newIndex)
    return;
  const { id: categoryId } = data[to]!;
  // server function using 'categoryId' and 'to'
}}

Now if the feature is added:
onItemMove={async ({ item: {categoryId}, to }) => {
  // server function using 'categoryId' and 'to'
}}

Not a real big deal, but for me those small stuff that could be simplified really makes the code prettier.
I am really liking this lib! :)

thanks for the feature request!
since this information can be derived in one line of code, I don't think it deserves an extra parameter.
If there's one thing I've learned as a package author, it's to keep things as simple and minimal as possible 😀


Should file_funcs take a file handle instead?

While going to test file_funcs (#2), I remembered that writing files for testing isn't always the best option.
See this SO post on the topic.
I think I'm going to use unittest.mock to fix that problem, but wanted to post here in case that's not ideal.

More detail
Our options are:

Rewrite write_wig and open_wig to accept file handles instead of file names.

Advantage: Scales more easily, plus is the top response on the SO post.
Disadvantage: Reading/writing from filehandles is a little less intuitive. (Will users interact with write_wig and open_wig directly?)

read/write files in tests, deleting files that match the tests and keeping the ones that don't.

Advantage: More intuitive, plus you have a nice output file for things that don't match.
Disadvantage: IO gets confused when lots are tests are being run, especially in parallel (a la pytest).

Use mock_open to not write actual files, but a place in memory that pretends to be a file.

This is an intermediate between the two other options--doesn't bug up IO. I think this might be the way to go--it's lower-down on the answers in SO, but mock_open wasn't available until recently.
Let me know if you have a preference for any of these options!

Hey!
As mentioned briefly in #2 I think it would be best if we made use of a unified testing library for writing our tests.  I would really recommend we stick with pytest! :)  I think there is a way to check writing of files using pytest as well.  See this SO post! Let me know if you don't think this solution will work for us.

Thanks for the comment--absolutely using pytest!
Mocks and using IO handles also works just fine with pytest. e.g. this example, even though pytest can run unittest-style tests just fine--as mentioned here.
The problem is more general: even with temporary directories (as in your example), writing to files in tests can create problems when you scale up. That's why alternatives like monkeypatch and mock are so popular.
Anyways, I'm sure our tests won't get so big for that to matter, so I'll just go with the tmpdir route you recommended.


Should we list g95 in open source compilers?

http://g95.org/
I'm torn. :)
On one side, I used this compiler briefly over 10 years ago and it's dear to me. "It's free crunch time" is an awesome tagline. Despite what its name implies, this compiler supports coarrays out of the box, at least to some capacity. Its status page has a long list of packages that work with g95.
On the other side, it looks like the project is not developed any more. The most recent update on the site that I can find is from 2013.

I would say no. It’s defunct. I know people still use it but people still use g77 too. Best not to encourage that.

Indeed. From looking at the source, it seems that g95 was meant to be included as the Fortran frontend of GCC. I guess it continued as its own project once gfortran was released.

I vote no. I would only list actively maintained compilers. Otherwise we have to list every old F77 and other commercial compilers. Every old compiler can be used in principle. But the purpose of the page is to list compilers that are maintained today.

The opinion is unanimous on this one, so I will close it.


CI: Only check new runtime config file after installation

The ".ci/install_runtime.sh" script was trying to switch to using the
new config file before the runtime was installed (and hence before the
config file could have existed).
Fixes #551.
Signed-off-by: James O. D. Hunt<EMAIL_ADDRESS>

lgtm


Remove auto generated files from git commits

This PR will:

Remove all pubspec.lock from commit history. Recommended practice from libraries and all libraries i looked at followed this practice.
Remove and add to gitignore auto-generated files(IOS and Android) in the GraphQL Client example directory.

:tada: This PR is included in version 1.1.1-beta.1 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:

:tada: This PR is included in version 2.0.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Consider utilizing SVG sprites instead of icon fonts.

I think we could benefit a bit from a performance standpoint if instead of utilizing icon-fonts for buttons with icons next to them. Currently it looks like there's only a couple button variations, and a full HTTP request for a new font may be a bit excessive if we can utilize an SVG sprite.
If however we are only planning on ever using the Google Material Icons next to buttons, it's entirely possible that the font is already cached, but this does limit us if in the future the client would like some sort of custom iconography.

Since the expectation is that we will always be using Material Icons, I'm comfortable leaving the current implementation as is. In the future if we ever add in custom iconography, we'd definitely want to include them as SVG sprites to reduce load times and allow immediate access.


Hard-code the mailing list URL in the header and footer

Context and changes
We're currently relying on Rails' routing for generating the mailing list paths in these two places but using the hard-coded path everywhere else in the app.
Due to the way the sign-up wizard is written the individual pages don't have their own paths; instead they rely on a redirect in WizardSteps#index to send users to the right place.
A correct navigation to /mailinglist/signup results in a 302 and the user is routed to /mailinglist/signup/name (the first step in that particular wizard). We believe this redirection has had an impact on paid search results.
We have two options here:

Supply the wizard class to the step_path method so we can use Rails'
built-in functionality:
  redirect_to step_path(wizard_class.first_key, query_params)

or, hard-code it

I'm going for the latter here as it's lighter touch, we don't need to introduce any new routing rules or helpers to ease the process and we can test it out. It also makes links to the mailing list easier to find via ag/grep
The disadvantage is that we can't change the routing on a whim and have the new rules reflected throughout automatically.

Just improved the commit message a bit @MylesJarvis, mind re-checking?


Simple aggregation

This PR implements two very simple forms of lineage aggregation.
The BasicPhylogeneticAggregator takes in a set of input taxa to be aggregated, a set of aggregation target taxa to which we want to group the input taxa, and allows us to get the map we need to do this using the taxonomic relationships.
The FixedAggregator enables the user to specify exactly the mapping they want for all taxa. (Which is to say, functionally it does little other than checking the map for validity.) This would, for example, enable grouping a set of COVID lineages into the non-phylogenetic units "SGTF" and "non-SGTF."
Implementation
The partially-abstract Aggregator class handles the details and bookkeeping of aggregation, while descendant classes (functional aggregators) provide the next_agg_step() method to determine what aggregation is actually done. It

Maintains a stack of un-aggregated taxa which need to be aggregated
Handles the construction of the map (via an intermediate map that records every step of the process)
Provides basic checking that aggregation "steps" work and that the entire aggregation is valid (such that every input taxon is mapped to some output taxon).

The actual aggregation is accomplished in Aggregator.aggregate() which loops until it depletes the stack, each time calling next_agg_step(), checking the proposed step, and finally implementing it. This structure means that subclasses must handle:

Any necessary clean-up when aggregation is otherwise done. For example, when BasicPhylogeneticAggregator runs out of targets, BasicPhylogeneticAggregator.next_agg_step() will either map all remaining taxa to "other" or begin mapping remaining taxa to themselves.
Any necessary operations in order for the aggregated taxa to have the correct data. This is not currently relevant but will be important for dynamic aggregation.

The setup gives next_agg_step() broad freedom in how it chooses the next step. It can map one taxon or many, according to any criterion it sees fit. The main restriction is that it is expected that it will propose this step rather than take it. That is, it will not alter the stack or internal map state of its superclass. It should return an object of the (very small) dataclass TaxonMapping to specify

What {in : out} mapping has been accomplished in this step
Whether the out taxon (or taxa) is done (ineligible for further mapping) or not

BasicPhylogeneticAggregator Example
import cladecombiner

pn = cladecombiner.PangoSc2Nomenclature()

lineages = [
    "BA.2",
    "BA.2.86",
    "XCU",
    "XDQ",
    "BQ.1.1.23",
    "JN.6",
    "JN.1.9.1",
    "JN.9",
    "KP.1.1",
    "FW.1.1.1",
    "BA.5.2.6"
]

pn.setup_alias_map()

tree = pn.taxonomy_tree([cladecombiner.Taxon(lin, True) for lin in lineages])

scheme = cladecombiner.PhylogeneticTaxonomyScheme(tree)

input_taxa = [taxon for taxon in scheme.taxon_to_node.keys() if taxon.tip]

target_taxa = [
    cladecombiner.Taxon("BA.2", False),
    cladecombiner.Taxon("BA.2.86", False),
    cladecombiner.Taxon("BA.5", False),
]

agg = cladecombiner.BasicPhylogeneticAggregator(input_taxa, target_taxa, scheme)

agg.map()

With the wisdom of a week's hindsight, I think I went too far with the Aggregator.
I think Aggregator is a thing that can:

Aggregate (.aggregate())
Check the validity of a mapping/aggregation (_valid_mapping())
Produce a pretty map of the aggregation, regardless of what actually happens internally (.map())

I think the step-wise approach is minimally not broadly applicable, and maximally not a paradigm we want. It doesn't fit these two aggregators, and I've been thinking more about "dynamic" tree-based aggregation approaches (things like "group such that everything is at least X%") and I don't think it fits there either (you risk results that are arbitrary in the ordering of the taxa if you try to think "grab something unmerged and think about what to do with it"). If it does become useful down the road, we can revisit it then?

With the wisdom of a week's hindsight, I think I went too far with the Aggregator.
I think Aggregator is a thing that can:

Aggregate (.aggregate())
Check the validity of a mapping/aggregation (_valid_mapping())
Produce a pretty map of the aggregation, regardless of what actually happens internally (.map())

My mental model, which I'm trying to figure out how to adjust, was this:

An aggregator takes at minimum some input taxa, and then also maybe some other information (eg tree structure, naming schema, target taxa)
The aggregator eventually outputs some mapping. Keys are input taxa, values are the output taxa (which in theory could be anything but in practiced are constrained by the aggregator)
The mapping is "valid" under some universal rules (eg it must have all the input taxa as keys, all the values must be a single Taxon). Either the mapping object itself knows what the input taxa were, in which case it can check this validity on its own, or we rely on the aggregator to know the input taxa and enforce this validity.
The absolute simplest aggregator does nothing; it maps each input taxon to itself. Your FixedAggregator is the simplest aggregator that I could imagine being useful: you hand it the mapping and it (or the mapping itself?) just does the validation.
I think most aggregators will practically proceed in steps, but I don't think the stack concept would apply to all of them. Like, FixedAggregator doesn't really need a stack (although you could say it empties the stack in one step). But in an aggregator like "iteratively merge every taxon with <1% prevalence into its parent until there are no such taxa left," then I'm not sure I would think of a "stack" per se.

I'm also thinking about composability. Say I want to do this:

Merge taxa a, b, c into d; then e, f, g into h; for epi or data reasons
Iteratively merge into parents until everyone has 1+% prevalence

So I like the idea that an "aggregator" consists of multiple aggregators that proceed in serial. I feel like we could also work the idea of iterative/recursive aggregations into this?
Let me open a PR to demo this idea

I think most aggregators will practically proceed in steps, but I don't think the stack concept would apply to all of them.

I agree.
But I also think that the notion of a "step" is too variable to be worth trying to generalize. Ergo, leave it to the subclass to do what it wants, and maybe that's just "go through this other list and put the input taxa into those units" like the deterministic aggregator wants to do. Any dynamic "step" is going to be really different, and I think those look like passes through the whole tree more than input-taxon-based-steps.
Or maybe what I'm really saying is, we don't have enough examples to build the full generality without trying something dynamic, and we should treat this as a step, not a final point.

I'm also thinking about composability. Say I want to do this:

Merge taxa a, b, c into d; then e, f, g into h; for epi or data reasons
Iteratively merge into parents until everyone has 1+% prevalence

So I like the idea that an "aggregator" consists of multiple aggregators that proceed in serial. I feel like we could also work the idea of iterative/recursive aggregations into this?

I'm pretty sure we need to accomplish this is that an Aggregator can make the appropriate aggregated taxa. Then we can simply chain Aggregators in scripts.
taxa = read_taxa("some/file.txt")
original_taxa = copy(taxa)

input_mapping = {"a" : "d", "b" : "d" ...}
fixed_epi_aggregator = FixedAggregator(taxa , input_mapping)
map1 = fixed_epi_aggregator .map()
taxa = fixed_epi_aggregator.apply_aggregation()

percent_aggregator = SomeNewAggregatorClass(taxa, rules)
map2 = percent_aggregator .map()

map = {taxon.name : map2[map1[taxon.name]] for taxon in original_taxa}

Or we could make a MultiStageAggregator that takes in Aggregators and automates this.
I'm even more sure that this particular pattern is going to be pathological for all any use-case we've envisioned, because non-taxonomic merging functionally breaks the capacity to do taxonomic merging, so I'd prefer we consider another example, like (1) ( want to make sure I model all A.whatevers as A and B.whatevers as B (2) now fix things so I don't have anything below 1%.
And I'm yet more sure that before we make more assertions about what any sort of dynamic aggregation routine should be like, we have to build one (or more). I'm pretty sure it's going to disabuse us of a lot of ideas we've had.


Restructured main file in the static approach

Optimise button doesn't work @timadam03 please take a look and debug


gem install red-arrow fails on MacOS / Ruby 3.2.1

Describe the bug, including details regarding any error messages, version, and platform.
I have run:
brew install apache-arrow
brew install apache-arrow-glib
gem install red-arrow

However the gem installation fails (I am using MacOS / Ruby 3.2.1).
$ gem install red-arrow
Building native extensions. This could take a while...
Successfully installed gobject-introspection-4.1.2
Building native extensions. This could take a while...
Successfully installed gio2-4.1.2
Successfully installed extpp-0.1.1
Building native extensions. This could take a while...
ERROR:  Error installing red-arrow:
	ERROR: Failed to build gem native extension.

    current directory: /Users/collimarco/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/red-arrow-11.0.0/ext/arrow
/Users/collimarco/.rbenv/versions/3.2.1/bin/ruby -I /Users/collimarco/.rbenv/versions/3.2.1/lib/ruby/3.2.0 extconf.rb
checking --enable-debug-build option... no
checking C++ compiler... clang++
checking g++ version... 14 (gnu++17)
checking for --enable-debug-build option... no
checking for -Wall option to compiler... yes
checking for -Wcast-align option to compiler... yes
checking for -Wextra option to compiler... no
checking for -Wformat=2 option to compiler... yes
checking for -Winit-self option to compiler... yes
checking for -Wlarger-than-65500 option to compiler... yes
checking for -Wmissing-declarations option to compiler... yes
checking for -Wmissing-format-attribute option to compiler... yes
checking for -Wmissing-include-dirs option to compiler... yes
checking for -Wmissing-noreturn option to compiler... yes
checking for -Wmissing-prototypes option to compiler... yes
checking for -Wnested-externs option to compiler... yes
checking for -Wold-style-definition option to compiler... yes
checking for -Wpacked option to compiler... yes
checking for -Wp,-D_FORTIFY_SOURCE=2 option to compiler... yes
checking for -Wpointer-arith option to compiler... yes
checking for -Wundef option to compiler... yes
checking for -Wout-of-line-declaration option to compiler... yes
checking for -Wunsafe-loop-optimizations option to compiler... no
checking for -Wwrite-strings option to compiler... yes
checking for Homebrew... yes
checking for Homebrew... yes
checking for arrow version (>= 11.0.0)... yes (11.0.0)
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file for more details.  You may
need configuration options.

Provided configuration options:
	--with-opt-dir
	--without-opt-dir
	--with-opt-include
	--without-opt-include=${opt-dir}/include
	--with-opt-lib
	--without-opt-lib=${opt-dir}/lib
	--with-make-prog
	--without-make-prog
	--srcdir=.
	--curdir
	--ruby=/Users/collimarco/.rbenv/versions/3.2.1/bin/$(RUBY_BASE_NAME)
	--enable-debug-build
	--disable-debug-build
	--enable-debug-build
	--disable-debug-build
	--with-pkg-config
	--without-pkg-config
	--with-override-variables
	--without-override-variables
/Users/collimarco/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/pkg-config-1.5.1/lib/pkg-config.rb:500:in `parse_pc': .pc doesn't exist: <openssl> (PackageConfig::NotFoundError)
	from /Users/collimarco/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/pkg-config-1.5.1/lib/pkg-config.rb:344:in `declaration'
	from /Users/collimarco/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/pkg-config-1.5.1/lib/pkg-config.rb:289:in `requires_private'
	from /Users/collimarco/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/pkg-config-1.5.1/lib/pkg-config.rb:547:in `block in all_required_packages'
	from /Users/collimarco/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/pkg-config-1.5.1/lib/pkg-config.rb:370:in `collect_requires'
	from /Users/collimarco/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/pkg-config-1.5.1/lib/pkg-config.rb:376:in `block in collect_requires'
	from /Users/collimarco/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/pkg-config-1.5.1/lib/pkg-config.rb:371:in `each'
	from /Users/collimarco/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/pkg-config-1.5.1/lib/pkg-config.rb:371:in `collect_requires'
	from /Users/collimarco/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/pkg-config-1.5.1/lib/pkg-config.rb:546:in `all_required_packages'
	from /Users/collimarco/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/pkg-config-1.5.1/lib/pkg-config.rb:394:in `collect_cflags'
	from /Users/collimarco/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/pkg-config-1.5.1/lib/pkg-config.rb:302:in `cflags_only_other'
	from /Users/collimarco/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/pkg-config-1.5.1/lib/pkg-config.rb:607:in `cflags_only_other'
	from /Users/collimarco/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/pkg-config-1.5.1/lib/pkg-config.rb:659:in `have_package'
	from /Users/collimarco/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/glib2-4.1.2/lib/mkmf-gnome.rb:477:in `required_pkg_config_package'
	from extconf.rb:41:in `<main>'

Component(s)
Ruby

@kou Thanks a lot! It worked!
Does that mean that it is not compatible with OpenSSL v3?

What did you mean "not compatible with OpenSSL v3"?
Did you mean libarrow.so uses libssl.1.1.dylibnotlibssl.3.dylib`?
If so, the answer is yes.
If you don't like it, please open a pull request to Homebrew: https://github.com/Homebrew/homebrew-core/blob/11b553b818df335698b88a656113db32771198db/Formula/apache-arrow.rb#L30

Ok, Thanks a lot for the clarification!
A last question:
table.slice { |slicer| (slicer['status'] == 200) & (slicer['message'].include? '2OCXG') }

include? does not exists in this case and raises an error. Is there a place where I can find all the matchers available for Ruby? In particular, is there a method for matching a word in a string (substring matching)?

We can use match_substring compute function: https://arrow.apache.org/docs/cpp/compute.html#containment-tests
But it can't be used with red-arrow 11.0.0. It'll be able to use with red-arrow 12.0.0 by #15285 .
But there isn't a shortcut API to use match_substring yet. So we can't use slicer['message'].match_substring('20CXG') like API yet. Could you open a new issue for easy to use match_substring API?

@kou Thanks. I am closing this issue and moved the other topic here: https://github.com/apache/arrow/issues/34819

Thanks.
I reopen this. I want to use this to resolve avoiding PKG_CONFIG_PATH=$(brew --prefix openssl@1.1)/lib/pkgconfig ... workaround.


ACM improvements

Closes #4566

Codecov Report

Merging #4847 (59b107b) into master (de559e4) will decrease coverage by 0.01%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##           master    #4847      +/-   ##
==========================================
- Coverage   95.14%   95.13%   -0.02%
==========================================
  Files         594      594
  Lines       64088    64093       +5
==========================================
- Hits        60978    60975       -3
- Misses       3110     3118       +8

Flag
Coverage Δ

servertests
35.93% <0.00%> (-0.01%)
:arrow_down:

unittests
95.07% <100.00%> (-0.01%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

moto/acm/models.py
90.87% <100.00%> (+0.18%)
:arrow_up:

moto/resourcegroupstaggingapi/models.py
83.66% <0.00%> (-0.58%)
:arrow_down:

moto/route53/responses.py
97.18% <0.00%> (-0.41%)
:arrow_down:

moto/sns/models.py
96.82% <0.00%> (-0.40%)
:arrow_down:

moto/sqs/models.py
96.75% <0.00%> (-0.18%)
:arrow_down:

moto/config/models.py
99.21% <0.00%> (-0.14%)
:arrow_down:

moto/ssm/models.py
94.21% <0.00%> (-0.12%)
:arrow_down:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update de559e4...59b107b. Read the comment docs.


Tests for rotate_grid_vectors

Previously deferred work, as noted in #3114

Thanks @lbdreyer
I hope we're done here now ?
I'm not self-merging, as there's no immediate need (it's only extra tests really)


Add icons to dataset card

@barbarah
I made a branche for the icons:
https://github.com/colonial-heritage/dataset-browser/tree/icon-on-cards
I've put the icons and markup in there but it needs some logic for what icon on what badge. The icons imports are commented on top of the code.
{GlobeEuropeAfricaIcon} location
{BuildingLibraryIcon} publisher
{DocumentCheckIcon} licence
{TagIcon}  genre
The {TagIcon} and the {GlobeEuropeAfricaIcon} are outline icons, they need a stroke-stone-400 class. {GlobeEuropeAfricaIcon} and {BuildingLibraryIcon} are solid icons. They need a fill-stone-400 class


Extensions don't appear as preview in product

VSCode Version: Code - Insiders 1.6.0-insider (602155bb781f509c7a4ddcd700b57cb9b9f5286d, 2016-10-01T00:34:33.697Z)
OS Version: Linux x64 4.4.0-38-generic
Extensions: EditorConfig.EditorConfig-0.3.3, Tyriar.lorem-ipsum-1.0.0, Tyriar.sort-lines-1.1.0, Tyriar.theme-glacier-0.0.10, Tyriar.vscode-terminal-here-0.0.5, christian-kohler.path-intellisense-1.0.2, cssho.vscode-svgviewer-1.2.0, dbaeumer.vscode-eslint-1.0.7, eg2.tslint-0.5.39, felipecaputo.git-project-manager-0.1.15, gerane.Theme-Wombat-0.0.2, ms-vscode.csharp-1.4.1, ms-vscode.typescript-javascript-grammar-0.0.3, rebornix.Ruby-0.8.0, rebornix.nova-0.0.5, redhat.java-0.0.4, ryu1kn.annotator-0.10.0, ryzngard.vscode-header-source-1.0.4

https://marketplace.visualstudio.com/items?itemName=Tyriar.terminal-tabs is an example of an extension that has "preview": true in its package.json which shows up on web but not in product.

I would say the user should be given option to choose preview or stable. I'd there any other usage of this flag other than a visual indicator on the marketplace?
Maybe have a config for extensions you allow preview builds of. If you have terminal tabs listed in the config for preview, it updates to the preview version, but stays at the stable version for others.

I'm new to this; can I take this on?

Sure

I've implemented this in #36261


[Request] Add a watch method that select a values from a model but return the model instead of the selected value

Similar to: bool loggedIn = watchValue((UserModel x) => x.isLoggedIn) but instead of returning the value it returns the notifier when the selected value (isLoggedIn) changes: UserModel userModel = watchNotifier((UserModel x) => x.isLoggedIn).
This function would be a shorthand for a watchValue followed by a get.

why not
final userModel = watchtIt<UserModel>()

This would trigger every time the model changes, but I only want to trigger on selected property. It can also work if  watchIt can take a selector as an optional arg.

hmm, that would make the Api more difficult to use, I would then use probably
´´´dart
final userModel = di()
watchPropertyValue((x) => x.isLoggedIn, target: userModel);
´´´
that communicate clearly what you want to do.

hmm, that would make the Api more difficult to use, I would then use probably
final userModel = di<UserModel>()
watchPropertyValue((x) => x.isLoggedIn, target: userModel);

that communicate clearly what you want to do.

Ok, I got it thanks.
On another note, I was going through your code I found out that it depends on a global variable: https://github.com/escamoteur/watch_it/blob/337cf041a0cda58bead8a1f98ee652f4fa4474c6/lib/src/elements.dart#L3
Don't you think that could create a problem when multiple widgets are built? And also don't you just communicate between the widget and the element by simply passing the BuildContext to watch functions?

this is actually the trick that flutter_hooks to uses, its never a problem because dart flutter is single threaded only one widget is built at the same time, see https://github.com/escamoteur/watch_it#lifting-the-magic-curtain

Good to know. I saw it yesterday and was curious so I made a little POC to also understand how the thing works:
mixin WatchElement on ComponentElement {
  final _listeners = <Listenable, ListenerEntry>{};

  void watch<R extends Listenable>(R model, {Selector<R>? selector}) {
    void callback() {
      if (mounted) {
        if (selector == null) {
          return markNeedsBuild();
        }

        final selection = selector(model);
        final oldSelection = _listeners[model]!.selection;

        assert(selection is! Map || selection is! Set || selection is! List);
        assert(
          oldSelection is! Map || oldSelection is! Set || oldSelection is! List,
        );

        if (selection != oldSelection) {
          markNeedsBuild();
        }

        _listeners[model] = ListenerEntry(callback, selection);
      }
    }

    final selection = selector?.call(model);
    final entry = ListenerEntry(callback, selection);
    _listeners[model] = entry;
    model.addListener(entry.callback);
  }

  void unwatch<R extends Listenable>(R model) {
    final entry = _listeners.remove(model);

    if (entry != null) {
      model.removeListener(entry.callback);
    }
  }

  @override
  void unmount() {
    _listeners.keys.forEach(unwatch);
    super.unmount();
  }
}

mixin Watchable {
  R watch<R extends Listenable>(
    BuildContext context,
    R model, {
    Selector<R>? selector,
  }) {
    if (context is! WatchElement) {
      throw ArgumentError('watch can only be called inside WatchingWidget');
    }

    context.watch(model, selector: selector);
    return model;
  }
}

the intersting point comes when you want to allow multiple watches inside the same build method

the intersting point comes when you want to allow multiple watches inside the same build method

Do you mean multiple watches for the same model or different models?

Can me multiple watches on different properties of the same object or on different objects but inside the same build method.
That's why the order of the watches has to stay the same between build alls as the only way to do that is to store the in a list and increment a counter on each watch call that gets reset to zero at tge begin of each build.
Am 25. Aug. 2023, 23:12 +0200 schrieb Muhammad Mohiuddin @.***>:

the intersting point comes when you want to allow multiple watches inside the same build method
Do you mean multiple watches for the same model or different models?
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you commented.Message ID: @.***>

My POC will work for multiple watches on the same model, I guess even if you change the order or use watch functions conditionally. E.g. Subscribe to a property only if there is a certain change.
I have uploaded the full code: https://github.com/MohiuddinM/watch_it_poc/tree/master

Thanks, will have a closer look at it soon


text_generation_router::infer: router/src/infer.rs:130: no permits available

Your current environment
python benchmark_serving.py --backend tgi --model /model/Mixtral_email_sft --dataset /usr/src/dataset/ShareGPT_V3_unfiltered_cleaned_split.json --port 8080 --num-prompts 256 --endpoint /generate_stream --request-rate 32 --trust-remote-code

🐛 Describe the bug
[Bug]:  2024-05-21T06:25:30.209697Z ERROR generate_stream{parameters=GenerateParameters { best_of: Some(1), temperature: Some(0.01), repetition_penalty: None, frequency_penalty: None, top_k: None, top_p: Some(0.99), typical_p: None, do_sample: true, max_new_tokens: Some(393), return_full_text: None, stop: [], truncate: None, watermark: false, details: false, decoder_input_details: false, seed: None, top_n_tokens: None, grammar: None }}:async_stream:generate_stream: text_generation_router::infer: router/src/infer.rs:130: no permits available
Hello，when I was running the benchmark_serving.py on the TGI backend, I got the above error.  When I defined the --num-prompts as 256, and the --request-rate as 32, I end up with less than 256 successful requests (the --max-concurrent-requests was set to 200).
Can anyone help me? Thank you

Hi. I wonder if you could find a solution for this error. I'm facing the same problem when serving an LLM through Hugging Face TGI.
Thank you!

Please re-open. I'm seeing this with the latest TGI using Docker (latest).
2024-12-18T09:48:29.896244Z ERROR chat_completions:generate:generate_stream: text_generation_router::infer: router/src/infer/mod.rs:116: no permits available