Unroutable message hangs haigha in publisher confirm mode

Using RabbitMQ 3.5.1; running broker and test code on the same Mac OS X Yosemite MacBookPro
import sys

from haigha.connections.rabbit_connection import RabbitConnection
from haigha.message import Message

conn = RabbitConnection(debug=2)
ch = conn.channel()

ch.confirm.select(nowait=True)

def onAck(mid):
    print >> sys.stderr, "ACK-MID:", mid
def onNack(mid):
    printt >> sys.stderr, "NACK-MID:", mid

ch.basic.set_ack_listener(onAck)
ch.basic.set_nack_listener(onNack)

ch.basic.publish(Message("abcd"), exchange="", routing_key="unroutable-no-such-queue-blah-zzz", mandatory=True)

# Hangs here
# Wait for Ack
conn.read_frames()

According to https://www.rabbitmq.com/confirms.html, this should have resulted in a basic.return from the broker, followed by basic.ack from the broker. However, onAck never gets called, and conn.read_frames() just hangs.

There are several bugs in the code:

it doesn't consume basic.return's header and content frames; BasicClass._recv_return() is a NO-OP;  also, especially when in "publisher acknowledgements" mode, haigha needs to communicate to the user that a message was undeliverable, since basic.return(s) will, by design, precede the corresponding basic.ack.
Following the above problem, the rest of the frame processing logic gets confused. It expects the next frame to be method frame and tries to access its method_id, but it's actually basic.return's HeaderFrame. That triggers AttributeError
The above AttributeError causes Channel.process_frames() to call Channel.close(). At this point, the basic.return's ContentFrame hasn't been processed yet. Here, haigha violates AMQP stability rule for channel.close, and doesn't discard frames other than Close and Close-Ok, so it again trips up with AttributeError when it attempts to get class_id from the basic.returns's ContentFrame. The stability rule states:

After sending this method, any received methods except Close and Close-OK MUST be discarded. The response to receiving a Close after sending Close must be to send Close-Ok

The second AttributeError causes recursion into Channel.close(). At this point, there are no more channel frames coming from the broker, so Connection.read_frames() never returns. I don't know why Close-Ok is not arriving; in fact, I would have expected to basic.ack method frame following the basic.return sequence of frames, too.
Subsequently, when I hit Ctl-C, I would have expected the KeyboardInterrupt error (derived directly from BaseException) to propagate through all the layers and out of read_frames, but instead it ends up with AttributeError: 'HeaderFrame' object has no attribute 'method_id'. See the log traces below.

I instrumented some of the connection, channel, and SocketTransport code with additional logging, and got the following instructive output:
2015-05-15 05:01:33,862 - root(72021) - INFO - ZZZ dispatching frame MethodFrame[channel: 0, class_id: 10, method_id: 10, args: \x00\x0a\x00\x0a\x00\x09\x00\x00\x01\xb2\x0c\x63\x61\x70\x61\x62\x69\x6c\x69\x74\x69\x65\x73\x46\x00\x00\x00\xb5\x12\x70\x75\x62\x6c\x69\x73\x68\x65\x72\x5f\x63\x6f\x6e\x66\x69\x72\x6d\x73\x74\x01\x1a\x65\x78\x63\x68\x61\x6e\x67\x65\x5f\x65\x78\x63\x68\x61\x6e\x67\x65\x5f\x62\x69\x6e\x64\x69\x6e\x67\x73\x74\x01\x0a\x62\x61\x73\x69\x63\x2e\x6e\x61\x63\x6b\x74\x01\x16\x63\x6f\x6e\x73\x75\x6d\x65\x72\x5f\x63\x61\x6e\x63\x65\x6c\x5f\x6e\x6f\x74\x69\x66\x79\x74\x01\x12\x63\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x2e\x62\x6c\x6f\x63\x6b\x65\x64\x74\x01\x13\x63\x6f\x6e\x73\x75\x6d\x65\x72\x5f\x70\x72\x69\x6f\x72\x69\x74\x69\x65\x73\x74\x01\x1c\x61\x75\x74\x68\x65\x6e\x74\x69\x63\x61\x74\x69\x6f\x6e\x5f\x66\x61\x69\x6c\x75\x72\x65\x5f\x63\x6c\x6f\x73\x65\x74\x01\x10\x70\x65\x72\x5f\x63\x6f\x6e\x73\x75\x6d\x65\x72\x5f\x71\x6f\x73\x74\x01\x0c\x63\x6c\x75\x73\x74\x65\x72\x5f\x6e\x61\x6d\x65\x53\x00\x00\x00\x1e\x72\x61\x62\x62\x69\x74\x40\x76\x6b\x72\x75\x67\x6c\x69\x6b\x6f\x76\x73\x2d\x4d\x61\x63\x42\x6f\x6f\x6b\x2d\x50\x72\x6f\x09\x63\x6f\x70\x79\x72\x69\x67\x68\x74\x53\x00\x00\x00\x27\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x20\x28\x43\x29\x20\x32\x30\x30\x37\x2d\x32\x30\x31\x34\x20\x47\x6f\x50\x69\x76\x6f\x74\x61\x6c\x2c\x20\x49\x6e\x63\x2e\x0b\x69\x6e\x66\x6f\x72\x6d\x61\x74\x69\x6f\x6e\x53\x00\x00\x00\x35\x4c\x69\x63\x65\x6e\x73\x65\x64\x20\x75\x6e\x64\x65\x72\x20\x74\x68\x65\x20\x4d\x50\x4c\x2e\x20\x20\x53\x65\x65\x20\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x72\x61\x62\x62\x69\x74\x6d\x71\x2e\x63\x6f\x6d\x2f\x08\x70\x6c\x61\x74\x66\x6f\x72\x6d\x53\x00\x00\x00\x0a\x45\x72\x6c\x61\x6e\x67\x2f\x4f\x54\x50\x07\x70\x72\x6f\x64\x75\x63\x74\x53\x00\x00\x00\x08\x52\x61\x62\x62\x69\x74\x4d\x51\x07\x76\x65\x72\x73\x69\x6f\x6e\x53\x00\x00\x00\x05\x33\x2e\x35\x2e\x31\x00\x00\x00\x0e\x41\x4d\x51\x50\x4c\x41\x49\x4e\x20\x50\x4c\x41\x49\x4e\x00\x00\x00\x05\x65\x6e\x5f\x55\x53]
2015-05-15 05:01:33,863 - root(72021) - INFO - ZZZ dispatching frame MethodFrame[channel: 0, class_id: 10, method_id: 30, args: \x00\x0a\x00\x1e\x00\x00\x00\x02\x00\x00\x02\x44]
2015-05-15 05:01:33,864 - root(72021) - INFO - ZZZ dispatching frame MethodFrame[channel: 0, class_id: 10, method_id: 41, args: \x00\x0a\x00\x29\x00]
2015-05-15 05:01:33,864 - root(72021) - INFO - ZZZ dispatching frame MethodFrame[channel: 1, class_id: 20, method_id: 11, args: \x00\x14\x00\x0b\x00\x00\x00\x00]
2015-05-15 05:01:33,865 - root(72021) - INFO - ZZZ dispatching frame MethodFrame[channel: 1, class_id: 85, method_id: 11, args: \x00\x55\x00\x0b]
2015-05-15 05:01:33,866 - root(72021) - INFO - ZZZ dispatching frame MethodFrame[channel: 1, class_id: 60, method_id: 50, args: \x00\x3c\x00\x32\x01\x38\x08\x4e\x4f\x5f\x52\x4f\x55\x54\x45\x00\x21\x75\x6e\x72\x6f\x75\x74\x61\x62\x6c\x65\x2d\x6e\x6f\x2d\x73\x75\x63\x68\x2d\x71\x75\x65\x75\x65\x2d\x62\x6c\x61\x68\x2d\x7a\x7a\x7a]
2015-05-15 05:01:33,866 - root(72021) - INFO - ZZZ dispatching frame HeaderFrame[channel: 1, class_id: 60, weight: 0, size: 4, properties: {}]
2015-05-15 05:01:33,866 - root(72021) - ERROR - ZZZ frame dispatch exception processing frame HeaderFrame[channel: 1, class_id: 60, weight: 0, size: 4, properties: {}]
Traceback (most recent call last):
  File "/Users/vkruglikov/ossdev/haigha/haigha/channel.py", line 236, in process_frames
    self.dispatch(frame)
  File "/Users/vkruglikov/ossdev/haigha/haigha/channel.py", line 213, in dispatch
    klass.dispatch(method_frame)
  File "/Users/vkruglikov/ossdev/haigha/haigha/classes/protocol_class.py", line 77, in dispatch
    method = self.dispatch_map.get(method_frame.method_id)
AttributeError: 'HeaderFrame' object has no attribute 'method_id'
2015-05-15 05:01:33,868 - root(72021) - ERROR - ZZZ traceback:
  File "/Users/vkruglikov/Library/Python/2.7/bin/ipython", line 9, in <module>
    load_entry_point('ipython==1.1.0', 'console_scripts', 'ipython')()
  File "/Users/vkruglikov/Library/Python/2.7/lib/python/site-packages/IPython/__init__.py", line 118, in start_ipython
    return launch_new_instance(argv=argv, **kwargs)
  File "/Users/vkruglikov/Library/Python/2.7/lib/python/site-packages/IPython/config/application.py", line 545, in launch_instance
    app.start()
  File "/Users/vkruglikov/Library/Python/2.7/lib/python/site-packages/IPython/terminal/ipapp.py", line 362, in start
    self.shell.mainloop()
  File "/Users/vkruglikov/Library/Python/2.7/lib/python/site-packages/IPython/terminal/interactiveshell.py", line 436, in mainloop
    self.interact(display_banner=display_banner)
  File "/Users/vkruglikov/Library/Python/2.7/lib/python/site-packages/IPython/terminal/interactiveshell.py", line 555, in interact
    self.run_cell(source_raw, store_history=True)
  File "/Users/vkruglikov/Library/Python/2.7/lib/python/site-packages/IPython/core/interactiveshell.py", line 2667, in run_cell
    interactivity=interactivity, compiler=compiler)
  File "/Users/vkruglikov/Library/Python/2.7/lib/python/site-packages/IPython/core/interactiveshell.py", line 2777, in run_ast_nodes
    if self.run_code(code):
  File "/Users/vkruglikov/Library/Python/2.7/lib/python/site-packages/IPython/core/interactiveshell.py", line 2827, in run_code
    exec code_obj in self.user_global_ns, self.user_ns
  File "<ipython-input-16-84f91d8a6054>", line 1, in <module>
    get_ipython().magic(u'paste ')
  File "/Users/vkruglikov/Library/Python/2.7/lib/python/site-packages/IPython/core/interactiveshell.py", line 2172, in magic
    return self.run_line_magic(magic_name, magic_arg_s)
  File "/Users/vkruglikov/Library/Python/2.7/lib/python/site-packages/IPython/core/interactiveshell.py", line 2093, in run_line_magic
    result = fn(*args,**kwargs)
  File "<string>", line 2, in paste
  File "/Users/vkruglikov/Library/Python/2.7/lib/python/site-packages/IPython/core/magic.py", line 191, in <lambda>
    call = lambda f, *a, **k: f(*a, **k)
  File "/Users/vkruglikov/Library/Python/2.7/lib/python/site-packages/IPython/terminal/interactiveshell.py", line 235, in paste
    self.store_or_execute(block, name)
  File "/Users/vkruglikov/Library/Python/2.7/lib/python/site-packages/IPython/terminal/interactiveshell.py", line 97, in store_or_execute
    self.shell.run_cell(b)
  File "/Users/vkruglikov/Library/Python/2.7/lib/python/site-packages/IPython/core/interactiveshell.py", line 2667, in run_cell
    interactivity=interactivity, compiler=compiler)
  File "/Users/vkruglikov/Library/Python/2.7/lib/python/site-packages/IPython/core/interactiveshell.py", line 2777, in run_ast_nodes
    if self.run_code(code):
  File "/Users/vkruglikov/Library/Python/2.7/lib/python/site-packages/IPython/core/interactiveshell.py", line 2827, in run_code
    exec code_obj in self.user_global_ns, self.user_ns
  File "<ipython-input-16-a9349a4905f8>", line 23, in <module>
    conn.read_frames()
  File "/Users/vkruglikov/ossdev/haigha/haigha/connection.py", line 438, in read_frames
    self._transport.process_channels(p_channels)
  File "/Users/vkruglikov/ossdev/haigha/haigha/transports/transport.py", line 40, in process_channels
    channel.process_frames()
  File "/Users/vkruglikov/ossdev/haigha/haigha/channel.py", line 247, in process_frames
    self.logger.error("ZZZ traceback:\n%s", "".join(traceback.format_stack()))

2015-05-15 05:01:33,868 - root(72021) - INFO - ZZZ dispatching frame ContentFrame[channel: 1, payload: \x61\x62\x63\x64]
2015-05-15 05:01:33,868 - root(72021) - ERROR - ZZZ frame dispatch exception processing frame ContentFrame[channel: 1, payload: \x61\x62\x63\x64]
Traceback (most recent call last):
  File "/Users/vkruglikov/ossdev/haigha/haigha/channel.py", line 236, in process_frames
    self.dispatch(frame)
  File "/Users/vkruglikov/ossdev/haigha/haigha/channel.py", line 211, in dispatch
    klass = self._class_map.get(method_frame.class_id)
AttributeError: 'ContentFrame' object has no attribute 'class_id'
2015-05-15 05:01:33,869 - root(72021) - ERROR - ZZZ traceback:
  File "/Users/vkruglikov/Library/Python/2.7/bin/ipython", line 9, in <module>
    load_entry_point('ipython==1.1.0', 'console_scripts', 'ipython')()
  File "/Users/vkruglikov/Library/Python/2.7/lib/python/site-packages/IPython/__init__.py", line 118, in start_ipython
    return launch_new_instance(argv=argv, **kwargs)
  File "/Users/vkruglikov/Library/Python/2.7/lib/python/site-packages/IPython/config/application.py", line 545, in launch_instance
    app.start()
  File "/Users/vkruglikov/Library/Python/2.7/lib/python/site-packages/IPython/terminal/ipapp.py", line 362, in start
    self.shell.mainloop()
  File "/Users/vkruglikov/Library/Python/2.7/lib/python/site-packages/IPython/terminal/interactiveshell.py", line 436, in mainloop
    self.interact(display_banner=display_banner)
  File "/Users/vkruglikov/Library/Python/2.7/lib/python/site-packages/IPython/terminal/interactiveshell.py", line 555, in interact
    self.run_cell(source_raw, store_history=True)
  File "/Users/vkruglikov/Library/Python/2.7/lib/python/site-packages/IPython/core/interactiveshell.py", line 2667, in run_cell
    interactivity=interactivity, compiler=compiler)
  File "/Users/vkruglikov/Library/Python/2.7/lib/python/site-packages/IPython/core/interactiveshell.py", line 2777, in run_ast_nodes
    if self.run_code(code):
  File "/Users/vkruglikov/Library/Python/2.7/lib/python/site-packages/IPython/core/interactiveshell.py", line 2827, in run_code
    exec code_obj in self.user_global_ns, self.user_ns
  File "<ipython-input-16-84f91d8a6054>", line 1, in <module>
    get_ipython().magic(u'paste ')
  File "/Users/vkruglikov/Library/Python/2.7/lib/python/site-packages/IPython/core/interactiveshell.py", line 2172, in magic
    return self.run_line_magic(magic_name, magic_arg_s)
  File "/Users/vkruglikov/Library/Python/2.7/lib/python/site-packages/IPython/core/interactiveshell.py", line 2093, in run_line_magic
    result = fn(*args,**kwargs)
  File "<string>", line 2, in paste
  File "/Users/vkruglikov/Library/Python/2.7/lib/python/site-packages/IPython/core/magic.py", line 191, in <lambda>
    call = lambda f, *a, **k: f(*a, **k)
  File "/Users/vkruglikov/Library/Python/2.7/lib/python/site-packages/IPython/terminal/interactiveshell.py", line 235, in paste
    self.store_or_execute(block, name)
  File "/Users/vkruglikov/Library/Python/2.7/lib/python/site-packages/IPython/terminal/interactiveshell.py", line 97, in store_or_execute
    self.shell.run_cell(b)
  File "/Users/vkruglikov/Library/Python/2.7/lib/python/site-packages/IPython/core/interactiveshell.py", line 2667, in run_cell
    interactivity=interactivity, compiler=compiler)
  File "/Users/vkruglikov/Library/Python/2.7/lib/python/site-packages/IPython/core/interactiveshell.py", line 2777, in run_ast_nodes
    if self.run_code(code):
  File "/Users/vkruglikov/Library/Python/2.7/lib/python/site-packages/IPython/core/interactiveshell.py", line 2827, in run_code
    exec code_obj in self.user_global_ns, self.user_ns
  File "<ipython-input-16-a9349a4905f8>", line 23, in <module>
    conn.read_frames()
  File "/Users/vkruglikov/ossdev/haigha/haigha/connection.py", line 438, in read_frames
    self._transport.process_channels(p_channels)
  File "/Users/vkruglikov/ossdev/haigha/haigha/transports/transport.py", line 40, in process_channels
    channel.process_frames()
  File "/Users/vkruglikov/ossdev/haigha/haigha/channel.py", line 250, in process_frames
    self.close(500, "Failed to dispatch %s" % (str(frame)))
  File "/Users/vkruglikov/ossdev/haigha/haigha/channel.py", line 189, in close
    self.channel.close(reply_code, reply_text, class_id, method_id)
  File "/Users/vkruglikov/ossdev/haigha/haigha/classes/channel_class.py", line 128, in close
    self.channel.add_synchronous_cb(self._recv_close_ok)
  File "/Users/vkruglikov/ossdev/haigha/haigha/channel.py", line 321, in add_synchronous_cb
    self.connection.read_frames()
  File "/Users/vkruglikov/ossdev/haigha/haigha/connection.py", line 438, in read_frames
    self._transport.process_channels(p_channels)
  File "/Users/vkruglikov/ossdev/haigha/haigha/transports/transport.py", line 40, in process_channels
    channel.process_frames()
  File "/Users/vkruglikov/ossdev/haigha/haigha/channel.py", line 247, in process_frames
    self.logger.error("ZZZ traceback:\n%s", "".join(traceback.format_stack()))

2015-05-15 05:11:13,865 - root(72021) - ERROR - ZZZ exception from sock.recv
Traceback (most recent call last):
  File "/Users/vkruglikov/ossdev/haigha/haigha/transports/socket_transport.py", line 71, in read
    self._sock.getsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF))
timeout: timed out
2015-05-15 05:11:13,869 - root(72021) - INFO - ZZZ dispatching frame HeartbeatFrame[channel: 0]
2015-05-15 05:20:53,865 - root(72021) - ERROR - ZZZ exception from sock.recv
Traceback (most recent call last):
  File "/Users/vkruglikov/ossdev/haigha/haigha/transports/socket_transport.py", line 71, in read
    self._sock.getsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF))
timeout: timed out
2015-05-15 05:20:53,876 - root(72021) - INFO - ZZZ dispatching frame HeartbeatFrame[channel: 0]
^C2015-05-15 05:25:57,399 - root(72021) - ERROR - ZZZ exception from sock.recv
Traceback (most recent call last):
  File "/Users/vkruglikov/ossdev/haigha/haigha/transports/socket_transport.py", line 71, in read
    self._sock.getsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF))
KeyboardInterrupt
2015-05-15 05:25:57,400 - root(72021) - ERROR - ZZZ exception from trasnport.read
Traceback (most recent call last):
  File "/Users/vkruglikov/ossdev/haigha/haigha/connection.py", line 409, in read_frames
    data = self._transport.read(self._heartbeat)
  File "/Users/vkruglikov/ossdev/haigha/haigha/transports/socket_transport.py", line 71, in read
    self._sock.getsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF))
KeyboardInterrupt
2015-05-15 05:25:57,400 - root(72021) - ERROR - ZZZ traceback:
  File "/Users/vkruglikov/Library/Python/2.7/bin/ipython", line 9, in <module>
    load_entry_point('ipython==1.1.0', 'console_scripts', 'ipython')()
  File "/Users/vkruglikov/Library/Python/2.7/lib/python/site-packages/IPython/__init__.py", line 118, in start_ipython
    return launch_new_instance(argv=argv, **kwargs)
  File "/Users/vkruglikov/Library/Python/2.7/lib/python/site-packages/IPython/config/application.py", line 545, in launch_instance
    app.start()
  File "/Users/vkruglikov/Library/Python/2.7/lib/python/site-packages/IPython/terminal/ipapp.py", line 362, in start
    self.shell.mainloop()
  File "/Users/vkruglikov/Library/Python/2.7/lib/python/site-packages/IPython/terminal/interactiveshell.py", line 436, in mainloop
    self.interact(display_banner=display_banner)
  File "/Users/vkruglikov/Library/Python/2.7/lib/python/site-packages/IPython/terminal/interactiveshell.py", line 555, in interact
    self.run_cell(source_raw, store_history=True)
  File "/Users/vkruglikov/Library/Python/2.7/lib/python/site-packages/IPython/core/interactiveshell.py", line 2667, in run_cell
    interactivity=interactivity, compiler=compiler)
  File "/Users/vkruglikov/Library/Python/2.7/lib/python/site-packages/IPython/core/interactiveshell.py", line 2777, in run_ast_nodes
    if self.run_code(code):
  File "/Users/vkruglikov/Library/Python/2.7/lib/python/site-packages/IPython/core/interactiveshell.py", line 2827, in run_code
    exec code_obj in self.user_global_ns, self.user_ns
  File "<ipython-input-16-84f91d8a6054>", line 1, in <module>
    get_ipython().magic(u'paste ')
  File "/Users/vkruglikov/Library/Python/2.7/lib/python/site-packages/IPython/core/interactiveshell.py", line 2172, in magic
    return self.run_line_magic(magic_name, magic_arg_s)
  File "/Users/vkruglikov/Library/Python/2.7/lib/python/site-packages/IPython/core/interactiveshell.py", line 2093, in run_line_magic
    result = fn(*args,**kwargs)
  File "<string>", line 2, in paste
  File "/Users/vkruglikov/Library/Python/2.7/lib/python/site-packages/IPython/core/magic.py", line 191, in <lambda>
    call = lambda f, *a, **k: f(*a, **k)
  File "/Users/vkruglikov/Library/Python/2.7/lib/python/site-packages/IPython/terminal/interactiveshell.py", line 235, in paste
    self.store_or_execute(block, name)
  File "/Users/vkruglikov/Library/Python/2.7/lib/python/site-packages/IPython/terminal/interactiveshell.py", line 97, in store_or_execute
    self.shell.run_cell(b)
  File "/Users/vkruglikov/Library/Python/2.7/lib/python/site-packages/IPython/core/interactiveshell.py", line 2667, in run_cell
    interactivity=interactivity, compiler=compiler)
  File "/Users/vkruglikov/Library/Python/2.7/lib/python/site-packages/IPython/core/interactiveshell.py", line 2777, in run_ast_nodes
    if self.run_code(code):
  File "/Users/vkruglikov/Library/Python/2.7/lib/python/site-packages/IPython/core/interactiveshell.py", line 2827, in run_code
    exec code_obj in self.user_global_ns, self.user_ns
  File "<ipython-input-16-a9349a4905f8>", line 23, in <module>
    conn.read_frames()
  File "/Users/vkruglikov/ossdev/haigha/haigha/connection.py", line 438, in read_frames
    self._transport.process_channels(p_channels)
  File "/Users/vkruglikov/ossdev/haigha/haigha/transports/transport.py", line 40, in process_channels
    channel.process_frames()
  File "/Users/vkruglikov/ossdev/haigha/haigha/channel.py", line 250, in process_frames
    self.close(500, "Failed to dispatch %s" % (str(frame)))
  File "/Users/vkruglikov/ossdev/haigha/haigha/channel.py", line 189, in close
    self.channel.close(reply_code, reply_text, class_id, method_id)
  File "/Users/vkruglikov/ossdev/haigha/haigha/classes/channel_class.py", line 128, in close
    self.channel.add_synchronous_cb(self._recv_close_ok)
  File "/Users/vkruglikov/ossdev/haigha/haigha/channel.py", line 321, in add_synchronous_cb
    self.connection.read_frames()
  File "/Users/vkruglikov/ossdev/haigha/haigha/connection.py", line 438, in read_frames
    self._transport.process_channels(p_channels)
  File "/Users/vkruglikov/ossdev/haigha/haigha/transports/transport.py", line 40, in process_channels
    channel.process_frames()
  File "/Users/vkruglikov/ossdev/haigha/haigha/channel.py", line 250, in process_frames
    self.close(500, "Failed to dispatch %s" % (str(frame)))
  File "/Users/vkruglikov/ossdev/haigha/haigha/channel.py", line 189, in close
    self.channel.close(reply_code, reply_text, class_id, method_id)
  File "/Users/vkruglikov/ossdev/haigha/haigha/classes/channel_class.py", line 128, in close
    self.channel.add_synchronous_cb(self._recv_close_ok)
  File "/Users/vkruglikov/ossdev/haigha/haigha/channel.py", line 321, in add_synchronous_cb
    self.connection.read_frames()
  File "/Users/vkruglikov/ossdev/haigha/haigha/connection.py", line 412, in read_frames
    self.logger.error("ZZZ traceback:\n%s", "".join(traceback.format_stack()))

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-16-a9349a4905f8> in <module>()
     21 # Hangs here
     22 # Wait for Ack
---> 23 conn.read_frames()

/Users/vkruglikov/ossdev/haigha/haigha/connection.pyc in read_frames(self)
    436                                     self._close_info['reply_text']))
    437
--> 438         self._transport.process_channels(p_channels)
    439
    440         # HACK: read the buffer contents and re-buffer.  Would prefer to pass

/Users/vkruglikov/ossdev/haigha/haigha/transports/transport.pyc in process_channels(self, channels)
     38         '''
     39         for channel in channels:
---> 40             channel.process_frames()
     41
     42     def read(self, timeout=None):

/Users/vkruglikov/ossdev/haigha/haigha/channel.py in process_frames(self)
    234                 frame = self._frame_buffer.popleft()
    235                 self.logger.info("ZZZ dispatching frame %r", frame)
--> 236                 self.dispatch(frame)
    237             except ProtocolClass.FrameUnderflow:
    238                 return

/Users/vkruglikov/ossdev/haigha/haigha/channel.py in dispatch(self, method_frame)
    211         klass = self._class_map.get(method_frame.class_id)
    212         if klass:
--> 213             klass.dispatch(method_frame)
    214         else:
    215             raise Channel.InvalidClass(

/Users/vkruglikov/ossdev/haigha/haigha/classes/protocol_class.pyc in dispatch(self, method_frame)
     75         Dispatch a method for this protocol.
     76         '''
---> 77         method = self.dispatch_map.get(method_frame.method_id)
     78         if method:
     79             callback = self.channel.clear_synchronous_cb(method)

AttributeError: 'HeaderFrame' object has no attribute 'method_id'

NOTE that PR #73 addresses the root cause of this issue to the extent that the code in the description section succeeds.
However, it does NOT address the side-effect issues, namely:

the recursion of Channel.close due to violation of the stability rule that caused additional exception:

After sending this method, any received methods except Close and Close-OK MUST be discarded. The response to receiving a Close after sending Close must be to send Close-Ok

Once Connection.read_frames() became hung, when I hit Ctl-C, I would have expected the KeyboardInterrupt error (derived directly from BaseException) to propagate through all the layers and out of read_frames, but instead it ends up with AttributeError: 'HeaderFrame' object has no attribute 'method_id'. See the log traces below.

The way to reproduce these secondary issues after PR #73 is to replace the body of BasicClass._recv_return() with pass and then run the code from the description section of this issue.

@awestendorf: PRs #73 and #74 together should fully address the primary and side-effect issues described here.

Both #73 and #74 have been merged into master, so closing this issue.


update(fabric): ansible playbooks and roles to use the new standalone helm charts

Description
As a developer I want to cleanup, update and test ansible playbooks and roles so that the Hyperledger Fabric network can be deployed using the new standalone helm charts
Acceptance Criteria

Network deployed using ansible playbook (with Proxy/No Proxy and Vault)
Network cleanup using ansible playbook

I'll be working on this task


Referring to two different version of Windows 10 SDK

The following line is confusing. It says "search for Windows 10 SDK (10.0.19041.0)" and then "install the Windows 10 SDK (10.0.19041.1)". That is, the number at the end is different. I cannot find the version ending at .1 in my VS2019 installation.
"In Visual Studio Installer, on the Individual components tab, search for Windows 10 SDK (10.0.19041.0), select this version and continue with install.
If you already have Visual Studio 2019 installed, you can install the Windows 10 SDK (10.0.19041.1) by using the Modify button in Visual Studio install."

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 5930505f-6810-b2a2-86b5-3c678aae7f89
Version Independent ID: 28315cf8-f06f-23ad-2088-9d51d08efe0d
Content: Download the Windows Driver Kit (WDK) - Windows drivers
Content Source: windows-driver-docs-pr/download-the-wdk.md
Product: windows-hardware
Technology: windows-devices
GitHub Login: @windows-driver-content
Microsoft Alias: windowsdriverdev

Thanks for this Issue, @sindrh
After a little research, it looks like everything is correct, but it's better to be overt about what's going on. I added this text:
In Visual Studio Installer, on the Individual components tab, search for Windows 10 SDK (10.0.19041.0), select this version and continue with install. Note that Visual Studio will automatically install Windows 10 SDK (10.0.19041.1) on your machine.
I'm not sure why this is happening, but after several colleagues tested with me, it seems this is the case.
Thanks.
Eliot


Terser syntax for discriminated unions

Suggestion
Discriminated unions are great, but they're very tedious to write, especially if you use a proper enum rather than strings for the tag:
enum NetworkStateTag {
  Loading,
  Failed,
  Success,
}

type NetworkLoadingState = {
  state: NetworkStateTag.Loading;
};

type NetworkFailedState = {
  state: NetworkStateTag.Failed;
  code: number;
};

type NetworkSuccessState = {
  state: NetworkStateTag.Success;
  response: {
    title: string;
    duration: number;
    summary: string;
  };
};

type NetworkState =
  | NetworkLoadingState
  | NetworkFailedState
  | NetworkSuccessState;

It's a common pattern, and every time I write them I think "ugh I wish this was like Rust enums". It would be really nice if there were a terser syntax for it.
🔍 Search Terms
tagged discriminated union enum syntax verbose terse terser
✅ Viability Checklist

My suggestion meets these guidelines:

[x] This wouldn't be a breaking change in existing TypeScript/JavaScript code
[x] This wouldn't change the runtime behavior of existing JavaScript code
[x] This could be implemented without emitting different JS based on the types of the expressions
[x] This isn't a runtime feature (e.g. library functionality, non-ECMAScript syntax with JavaScript output, new syntax sugar for JS, etc.)
[x] This feature would agree with the rest of TypeScript's Design Goals.

⭐ Suggestion
I don't have a specific syntax in mind. I just want something shorter. I'm not the only one - someone wrote an entire library to improve this, though I think their syntax is kind of horrible:
export const Animal = variantModule({
    dog: fields<{name: string, favoriteBall?: string}>(),
    cat: fields<{name: string, furnitureDamaged: number}>(),
    snake: (name: string, pattern = 'striped') => ({name, pattern}),
});
// optional, but very helpful.
export type Animal<T extends TypeNames<typeof Animal> = undefined>
    = VariantOf<typeof Animal, T>;

Here's a random idea:
discriminated enum NetworkState(state) {
  Loading: {},
  Failed: {
    code: number;
  },
  Success: {
    response: {
      title: string;
      duration: number;
      summary: string;
    },
  },
}

So much shorter!

See #36336

See #36336


"No endorser invitation, can't connect automatically." message on startup even when the agent instance is connected to an endorser service

Observed behavior:
When upgrading an agent instance (0.10.2 to 0.12.2) in this case I started seeing the following message:
2024-10-23 13:10:34,142 aries_cloudagent.utils.endorsement_setup INFO No endorser invitation, can't connect automatically.

The agent in question was already connected to an endorser service and the connection was know to be working.
Expected behavior:
To not see this message when an agent already has a working connection established with as endorser service.
This message should also not be displayed if (these scenarios were not tested):

The agent is not configured to use an endorser service; i.e. endorser functionality is disabled.
The agent is configured as an Endorser.

Steps to reproduce:

Using an existing agent instance (0.10.2 for example) that is already connected to an endorser service.
Set the log level to INFO.
Upgrade the instance to a newer version of aca-py, v0.12.2 for example.
"No endorser invitation, can't connect automatically." log message appears.

This issue is not restricted to upgrades.  The same issue will occur if you setup a new agent instance with an endorser connection.

I think i screwed this up :/
But, I'm pretty sure the error message is misleading. The previous endorser connection should still exist and work correctly.

You are connect, from what I can tell the existing endorser connection is not affected and still works, it's existence is just not being taken into account.


Fix TextResponse encoding

Fixes #2018
Breaking Change
This is a breaking change because it adds ; charset={encoding} to the Content-Type header of TextResponse.
It also changes Response's implicit operator from string to use TextResponse, which in turn changes the Content-Type from text/html to text/plain.
This means that if you have tests currently asserting on, or anything else relying on the format of the ContentType property of a TextResponse, it might break.
Fix
The fix is trivial; change text/html to text/plain; charset=utf-8 (or if you use other encodings, use it's WebName property, i.e. Encoding.Unicode.WebName, or simply utf-16).

If this is a "breaking change", shouldn't it be moved to 2.0?

@zephyrweb Indeed. Thank you :heart:


arbtt service: init

Motivation for this change
This adds a systemd user service for the arbtt time-tracking tool. Since arbtt is a passive tracker, you want it to be automatically running in the background at all times.
The one thing I couldn't work out how to do is to have the service only be enabled for some users. Currently if arbtt.enable = true, then the service runs for all users, which seems potentially undesirable.
Things done

[x] Tested using sandboxing
(nix.useSandbox on NixOS,
or option build-use-sandbox in nix.conf
on non-NixOS)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] Linux

[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nox --run "nox-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[x] Fits CONTRIBUTING.md.

The one thing I couldn't work out how to do is to have the service only be enabled for some users. Currently if arbtt.enable = true, then the service runs for all users, which seems potentially undesirable.

Maybe it is a program that doesn't make a lot of sense as a system-wide service?
Their installation instructions are:
cp /usr/share/doc/arbtt/examples/arbtt-capture.desktop ~/.config/autostart/

So it seems more like a per-user thing. Have you looked at systemd user services?

The one thing I couldn't work out how to do is to have the service only be enabled for some users. Currently if arbtt.enable = true, then the service runs for all users, which seems potentially undesirable.

Maybe it is a program that doesn't make a lot of sense as a system-wide service?
Their installation instructions are:
cp /usr/share/doc/arbtt/examples/arbtt-capture.desktop ~/.config/autostart/

So it seems more like a per-user thing. Have you looked at systemd user services?

Doh, I see you have "systemd.user.services.arbtt" in there :-)

Doh, I see you have "systemd.user.services.arbtt" in there :-)

Yeah, it's already a user service, but it's just that enabling it seems to enable it for all users. I guess there isn't really a sensible way this could work without some kind of user-specific nixos configuration, which doesn't seem to exist yet.

Yeah, it's already a user service, but it's just that enabling it seems to enable it for all users. I guess there isn't really a sensible way this could work without some kind of user-specific nixos configuration, which doesn't seem to exist yet.

@michaelpj re per-user systemd user services, see also https://github.com/NixOS/nixpkgs/issues/21460

Were there any other comments on this, or is it good to go?

Thanks!


[stable/redis] adding pod antiaffinity capability to redis slaves

What this PR does / why we need it:
Enable pod antiaffinity on Redis slaves. Helps ensure slaves are not concentrated on one node and be more resilient if one nodes crashed.
Which issue this PR fixes (optional, in fixes #<issue number>(, fixes #<issue_number>, ...) format, will close that issue when PR gets merged): fixes #5249
Special notes for your reviewer:

/assign

Updated to affinity, follows similar logic to mongodb-replicaset

/ok-to-test

@prydonius @sameersbn @tompizmor @carrodher What do you guys think? I think this is a worthwhile addition.

Any update on this pr?

Thanks for the contribution @RaymondArias, the tests fail because 3.1.0 version was released some days ago. Can you modify again Chart.yaml? Thanks

/lgtm


Anerdw: Blacklist 1---877--6.7.1--<IP_ADDRESS>

Anerdw requests the blacklist of the number 1---877--6.7.1--<IP_ADDRESS>. See the MS search here and the Stack Exchange search in text, in URLs, and in code.

Approved by Cow in Charcoal HQ


Error loading app on Linux

Hello, BetterDiscord is not working (Discord is running as usual) and I am getting this error in the discord logs on start:

I've tried unisntalling, reinstalling, updating it, etc, and nothing's worked yet.

Same issue
electron/js2c/renderer_init.js:115 Unable to load preload script: /home/fichte/.config/discord/0.0.14/modules/discord_desktop_core/injector/betterdiscord/preload.js
(anonymous) @ electron/js2c/renderer_init.js:115
electron/js2c/renderer_init.js:115 TypeError: Cannot read property 'app' of undefined
    at Object.<anonymous> (/home/fichte/.config/discord/0.0.14/modules/discord_desktop_core/injector/betterdiscord/preload.js:8)
    at Object.<anonymous> (/home/fichte/.config/discord/0.0.14/modules/discord_desktop_core/injector/betterdiscord/preload.js:98)
    at Module._compile (internal/modules/cjs/loader.js:967)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1004)
    at Module.load (internal/modules/cjs/loader.js:815)
    at Module._load (internal/modules/cjs/loader.js:727)
    at Function.Module._load (electron/js2c/asar.js:769)
    at Object.<anonymous> (electron/js2c/renderer_init.js:115)
    at Object../lib/renderer/init.ts (electron/js2c/renderer_init.js:115)
    at __webpack_require__ (electron/js2c/renderer_init.js:3)

See the pinned issue, #96

See the pinned issue, #96

That didn't fix it for me. I'm running on stable.

See the pinned issue, #96

in fact, the solution listed there caused a Fatal Javascript Error when starting.

It's a known issue on all versions with no reliable fix.

I think they tried to apply the patch linked in #96, which wouldn't really count as a BBD issue anyways lol

There are multiple available patches plus the option to downgrade Discord and edit the version.
Whatever the case, it's up to BBD to properly resolve the issue, hence the label.


Rethrow exceptions

I'm having trouble writing tests because Twig is blackholing exceptions. Fortunately, there's an option rethrow that will do the trick. Need to figure out if I can make this configurable for BC reasons...

resolved in 0.2.1


[admin-api] Adding consumer with explicit created_at generate error

Kong 0.8.2
curl -H "Content-Type: application/json" -X POST http://kong:8001/consumers -d '{"username": "Jason", "created_at":1464690332000}'
error.log:
2016/05/31 10:26:09 [error] 101#0: *45 [lua] responses.lua:99: handler(): ERROR: column "created_at" is of type timestamp without time zone but expression is of type bigint (72), client: <IP_ADDRESS>, server: , request: "POST /consumers HTTP/1.1", host: "http://kong:8001"
This is a minor issue because if you follow doc's specifications the error wouldn't happen. However, it could be useful to explicitly support this field. We are migrating data from Cassandra to Postgres through the Admin API, as @thefosk suggested me, but we don't want to lose original created_at fields. We can understand if you don't want to support this case because it's the unique and exceptional.
Thanks.

We've been discussing adding import/export features to do migrations. That should cover this usecase, so for now we will not support this.

@Tieske Is the bug fixed? Thanks.

This is a bug in the way Postgres handles the timestamp when it's manually set. I will re-open the issue to double check what's happening.

Doesn't generate error anymore, but created_at is ignored on create it is an auto field.  It seems that you can use PATCH to update the created_at (not sure if it is a bug or a feature), but it is not possible to give it on creation time with PUT or POST (as it gets overridden).


Drag and drop does not use custom attachment name

Hello,
Thanks for this great plugin ! I just noticed that drag and drop still does not work : it does not change the image name to my custom name (${filename}).
Wasn't the latest release supposed to solve that issue ?
Thanks !
Obsidian 0.13.19
Plugin 0.0.6
Windows 10 21H2

No, it only affects filename of images from your clipboard. When handling drag & drop events, the plugin changes attachment folder setting before obsidian moving file and obsidian keeps the origin filename.

It is hard to check the file type and rename target filename in drag & drop handler. I will consider how to implement this feather in an elegant way.

Thanks for your reply ;)
My mistake, I misinterpreted on of the releases which had "drop support" as changelog

Thanks for your reply ;)
My mistake, I misinterpreted one of the releases which had "drop support" as changelog

I will consider this feather in the next release.

This is a great news, thanks for your work ;)

awesome plugin! would also love drag and drop as its my main way of putting images into obsidian
thx so much for your epic work!!
Z

I also noticed that copy/pasting from file explorer does not rename the file appropriately. It would be nice if there was an option to rename pasted files.

I have considered this before, but it is hard to do because obsidian only exposes a few APIs for plugin developer. You can use Chrome debugging console to view obsidian app.js source code, and I didn't find a perfect way to do this. Unless I hook and rewrite all original  copy&paste code.

Hello,
Is this bug fixed ? I just drag'n dropped a "jpeg" file from explorer to Obsidian and it is not renamed as expected.
Thank you


[5.5] Allow the distinct validation rule to optionally ignore case

Added the 'ignore_case' parameter to the distinct validation rule to allow case insensitive check for distinct values.

Which language rules are used to calculate case sensitivity? Should preg be called with /u to support unicode? How can I specify which language rules should be used when doing case insensitive comparisons?
It would make sense to write some tests that are using non-ascii characters. I'll use my favorite characters for this; dotted and dotless i from Turkish.

Upper case
Lower case

I= Latin Capital Letter I (U+0049)
ı = Latin Small Letter Dotless I (U+0131)

İ= Latin Capital Letter I with Dot Above (U+0130)
i = Latin Small Letter I (U+0069)

@sisve I've added the Unicode flag to the preg call. Not sure the best way to specify the language rules to use.

I'm not sure I have enough experience in this area to make a good decision here. @sisve do you have any further input after the latest changes?

It is not clear how preg/pcre handles locales.
The documentation of mb_strotolower says that it does not use locales, but looks at unicode character data. This is exactly why the turkish characters fails; Unicode does not have a "turkish lowercase dotted i" (that maps to "turkish uppwercase dotted İ"), but just a "latin small letter i". There are known special rules for turkish (see https://www.unicode.org/Public/UCD/latest/ucd/SpecialCasing.txt) but these are not used in this case.
The IntlChar::tolower also fails.
The Collator class has no way to compare case-insensitive.
I believe the solution is to write an library for handling languages, locales, encodings and everything. It is always out-of-scope for whatever I was actually looking into when I came to this conclusion.
The turkish characters are always watching, silently waiting for their time. I see no reasonable solution for these at the moment.
With this said, the code is not escaping the $value it uses to generate the pattern, which will cause issues if the value contains slashes.

I updated the code to escape the $value used in the preg_grep pattern.

I'm kind of confused by the wording. Wouldn't it be better to call it "case_sensitive". It seems like adding the parameter makes the check fail if the cases don't match?

The rule is currently case sensitive, and ['a', 'A'] would validate successfully since they are different distinct values. Adding the ignore_case flag will consider the two values equal, and thus fail the distinctness test.
The flag affects the comparison; and a match should fail the validation. The logic error here is that the tests aren't checking the fails() method (which is part of the Validator interface), but the passes() method (which is not part of the Validator interface). So the tests looks to check for the inverted value of what we (or at least I) mentally expect to see.


Too Many Trades Per Second

Hello. While working with parallel execution. I have come upon a brick wall that is Binance limits.
With low profit settings and calculations you're able to execute more than 10 trades per second.
Is there a way to move the limit from 10 to 9 ? So they would finish how they started.

Okay, so let me ensure I understand the issue.
When trades are executing quickly, let's say that 9 trades are executed in the first half of a second.
Then another arbitrage pair is identified (which would require 3 trades) and only the first is executed before the trade limit is reached and the final 2 trades are blocked?

Yes, that's correct. In volatile markets BTC and ETH trades can overlap and all your funds are stuck in cryptocurrency "C" which is very very bad.

Gotcha, this definitely sounds like an issue. To fix it we would need some safety logic like:
Before executing a trade:

Performing 3 executions would not violate the trade limit
None of the symbols in the proposed trade are currently being executed

Thoughts?

First one understood. But in the second, does that mean that the next execution won't contain the same symbols as a previous one? Because I had profitable trades where the same symbols run in circles for several seconds.

I'll use two hypothetical triangle arbitrage pairings here: ABC and DAF.
If you fire off an ABC pairing in parallel and it is still executing (ie all 3 response messages haven't been received yet), then block the execute of something like a DAF pairing because A is currently involved in a transaction.
Once all three trades of ABC return a success response indicating they were executed, then any subsequent requests will not be blocked for involving A, B, or C.

There is currently a safety check to block executions of a position (series of 3 trades) if 3 or more trades have been attempted in the past 10 seconds.
The bug with this safety check is that the time logged for the trades is when the trade is sent to be executed. In reality the trade isn't executed until up to a second after the REST request is sent. The real execution time is what Binance cares about for trade execution limits per 10 seconds.
This can be fixed by calculating the trade time after the REST call has completed ensuring we are as accurate as possible

Check out release 4.4.5 which should solve your issue :)

Should it work for linear execution? I have split the balance into many parts and launched several scripts, to see which one them will get past insufficient balance error. I think the first trades were executed at the same time, some made made it through, others did not.

That error you are seeing is a response from Binance. The protections in the bot are only aware of trades made from one instance and cannot protect you from trades made in others.
I would recommend only running one instance of the bot. Even if you have multiple trading accounts on Binance (not sure if that is possible) they might still track orders and bans via ip address

Should it work for linear execution? I have split the balance into many parts and launched several scripts, to see which one them will get past insufficient balance error. I think the first trades were executed at the same time, some made made it through, others did not.

the error should due to you use the same device to run the script, the api call limitation is restricted by ip, try run scripts with multiple devices might help

Well, it hasn't helped with parallel either)) running one script and still meeting 10 order limit
I asked Binance and they redirected me here - https://github.com/binance-exchange/binance-official-api-docs/blob/master/rest-api.md
There I found this:

Maybe this also have something to do with Binance updating their API?

I'll look into it further with you. But yeah that's the same docs I was going from. Where you can trade 10 orders per second

Hmm I gotta check when I get home, but I think I coded it to protect against 10 trades in 10 seconds by mistake which might explain the issue

Check out the new release. Should fix this issue :)


Adding steps on path?

Hi!
Right now, the algorithm takes the coordinates for the start and end points.
Would it be difficult to add an intermediary point (or several), and find the shortest path to go through them all? I can always try different options (length A->B->C vs A->C->B), but I was wondering if there could be a more elegant method that could be plugged directly in your algorithm.
Thanks!
Nice project btw, I will certainly use it in an upcoming demo of mine. I'll make sure to credit you.

Hello Guillaume, I am glad you like this project.
After the visibility graph has been built, this package finds the shortest path using the A* algorithm.
The natural solution for your problem would be to modify the A* algorithm:

starting with all different (start, goal) combinations
performing regular A* search, but not terminating when the goal node has been reached, but continuing to allow longer paths until all intermediary points are included in the path

This package is using the A* implementation from the networkxz library which AFAIK cannot be modified in the way described above.
What you can do however is using the pre-build visibility graph and then using it for this customised A* search:
    env = PolygonEnvironment()
    env.store(*env_data)
    env.prepare()
    graph: nx.Graph = env.graph
    # add all extra nodes with visibility edges "manually"
    # perform custom A* search

So far there is no public method for computing the visible nodes from any given input point. That's something I will add in the next release for a more modular use of this package.
Hope this could help.

Thanks a lot for the detailed answer Jannik, that's very helpful. I won't say I understand everything as it's not my specialty at all, but at least enough to give it a try and figure it out.
Cheers!

You are welcome. Let me know which parts you get stuck with, then i can help.


Avoid polluting shell history with debugger commands

This PR fixes #88038

Simple fix for this is to begin the command with a space - the shell can control whether these are added to the history with $HISTCONTROL.

Thanks a lot for the PR.


add observable js notebook document json save

for those js notebooks cell configs view, notebook info and graph view.
see our original code setup for that bit here: https://observablehq.com/@randomfractals/notebook-info

preview pic :


QR Code-Enabled Form Submission Component for Flutter: Simplifying Digital Interactions

1.Applied qr-code functionality. PR for issue project #372
2.Applied pdf viewer functionality. PR for issue project #372
3. Also added digit-components designs. PR for ticket<-Component Building for the DIGIT Design System #242  >
Please review it and if any issues with the data, kindly guide me.

Hello @rupss14
Sorry for the delay.
Are you open in taking this PR forward?
Thanks.


ipsec: Fix XfrmOutPolBlock drops on ESK & AKS upgrades

TODO:

[ ] Check how the upgrade behaves on GKE.

Fixes: https://github.com/cilium/cilium/pull/24773.
Fixes: https://github.com/cilium/cilium/pull/24030.
Fix a bug that would cause connectivity drops of type XfrmOutPolBlock on upgrade when IPsec is enabled with ENI or Azure IPAM mode.

/test

/test

/test

/test

/test

/test

Just a newbee question: we coexist xfrm states, but update xfrm policies directly, and upgrade test still passes, so where do we use xfrm policy?

Actually, we don't update the XFRM policies directly. In the second commit, we deprioritize the old XFRM policies such that they can coexist with the new ones added as part of the upgrade. I've updated the commit descriptions to include example of how the XFRM configs will change.
If a packet comes into the XFRM subsystem, it will first be matched against the new XFRM policies with marks of the form 0xXXXXYe00/0xffffff00. If that doesn't match because the packet is still using the old mark format (because bpf_lxc hasn't been reloaded yet), then it will match against the deprioritized XFRM policies with marks of the form 0xYe00/0xff00.
Once we've matched against a policy, it will search for the matching XFRM state using the IP addresses from the policy's template. For example, with the below policies, it will look for an XFRM state with src <IP_ADDRESS> dst <IP_ADDRESS> that also matches the packet mark.
     src <IP_ADDRESS>/24 dst <IP_ADDRESS>/24
          dir out priority 50
          mark 0x3e00/0xff00
          tmpl src <IP_ADDRESS> dst <IP_ADDRESS>
              proto esp spi 0x00000003 reqid 1 mode tunnel

Question: are the prioritized policies just left like this forever - could we not clean them up after some time?
I guess we'd have to know that all nodes have had their host endpoints reloaded before doing that...
(I'm wondering if leaving old policies around might provide other places for issues during future version upgrades

Agent endpoint changes seem fine to me, just a few questions, I'll take another look tomorrow morning.


Compile and add an "ANYWAY Contribution Guidelines" .md doc to repos

The doc should include the following:

Reporting a bug
Pull Requests
General workflow
Conventions
Coding style
Periodic Slack meetings
Community Guidelines
Open-source restrictions

If you have any suggestions, please feel free to share!

Anything left to do for this issue?

Nope.


Add proper license headers to the scripts in the /Scripts directory.

If I don't get to them, they're under the Apache License 2.0 and (C) Drew Naylor. I don't know what the .desktop files should be under. Maybe the Apache License 2.0 as well, unless it makes more sense to just not have a license and have it be like the Unlicense or something?

Or maybe they should be some sort of a GPL license?


Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: Xcode 13,  iOS 15

Issue:
After I upgrade to Xcode 13. I get app crashes on iOS 15
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[************Cell isSelected]: unrecognized selector sent to instance 0x7ff72a2ba1f0
No issues in iOS 11, 12, 13, 14
version: cocpods  IGListKit version 4.0.0
I am using IGList collections in several places. After calling perform updates  in ios 15  in all the places I get this error

(void)performUpdatesAnimated:(BOOL)animated completion:(nullable IGListUpdaterCompletion)completion;

I am facing the same


creating endpoint with name that does not match url does not work

hi,
i have done this
jspm endpoint create mygitlab jspm-git

and config result is
"mygitlab": {
      "timeouts": {
        "lookups": 60
      },
      "baseurl": "git@gitlab.com:code.bakery/",
      "reposuffix": ".git",
      "auth": "n1a3rtedgZZKDkghS5u7Swj",
      "shallowclone": true,
      "handler": "jspm-git"
    }

this gives me error
Endpoint not found.
but if i change endpoint name to "gitlab"  it works
another thing is that with above i may have different account like code.backery, devmondo so if i set base url to<EMAIL_ADDRESS>it does not work, it must specifically add the account name as above
thanks in advanced.

Hi @devmondo,
thank you very much for reporting this. As I don't have an account at gitlab.com I can't really test the configuration but I think something goes wrong internally when joining the baseurl with the repo name.
As a quick workaround you could test the following
git clone<EMAIL_ADDRESS>
If that works for you please set the baseurl of the endpoint to<EMAIL_ADDRESS>and then try installing your packages via jspm install mygitlab:code.bakery/reponame (without .git at the end)
As a general feedback I'd not recommend to add the account name (e.g. code.bakery) directly into the baseurl as otherwise you'll end up creating for every new account an extra jspm-git endpoint.
Furthermore I'd recommend that you delete once the mygitlab configuration in the ~/.jspm/config file as your current endpoint config is now a mixture out of the jspm-github and jspm-git endpoint. After deleting it you can create this mygitlab endpoint from scratch again.

thanks a lot mate for reply the<EMAIL_ADDRESS>worked fine and now i don't have to hard code user account, but still the name part is not working it has to be gitlab.
here is gitlab url format for any repo
git@gitlab.com:code.bakery/maa.git

i think somewhere in your code you are hard coding the name and preppend it to the url, or it is jspm bug ?

Which name part are you meaning explicitly? In the git.js#L32 you can see how the URL gets created.

what i mean is this
jspm endpoint create mygitlab jspm-git

this produces
 "mygitlab": {
      "timeouts": {
        "lookups": 60
      },
      "baseurl"<EMAIL_ADDRESS>      "handler": "jspm-git",
      "reposuffix": ".git",
      "shallowclone": true
    }

it does not work and i get this error
D:\Websites\Tests\skeleton-navigation>jspm install mygitlab:code.bakery/maa

err  Endpoint not found.

err  Unable to load endpoint gitlab

warn Installation changes not saved.

but if i do
jspm endpoint create gitlab jspm-git

everything works fine

Mh very stange. I've just tested it with jspm 0.14.0 and everything works as expected. Can you do a jspm -v and maybe also show me the content of your D:\Websites\Tests\skeleton-navigation\config.js?

I think I can reproduce now your error. If you write e.g.
"dummygitlab:*": "jspm_packages/mygitlab/*.js"

in your config.js then calling jspm install will throw following error:
> jspm install mygitlab:....

err  Endpoint not found.

err  Unable to load endpoint dummygitlab

warn Installation changes not saved.

@guybedford Is it possible to make this error a bit more specific so that you can distinguish between a real missing endpoint or if something is off with the configuration?

Does this help - https://github.com/jspm/jspm-cli/commit/d5c4b52d19fc77e58aa225d33717e6163f126cff?

@guybedford Thank you for the quick fix! Yes I think that helps. Not sure if this kind of endpoint error happens often as it's only a corner case which you'll only see if you manually modify the config.js as mentioned obove.
@devmondo Regarding the baseurl issue, I'll fix the jspm-git URL handling so that it supports also git@host.com:../.. formatted URLs.

@subesokun  thank you :)

@devmondo jspm-git v0.3.2 has been now released which includes the fix for git@host.com:../.. formatted URLs. Have fun with it :)

thank you mate :)


[stable/minio] ServiceAccount minio is not created

Describe the bug
When I installed stable/minio chart, I found the ServiceAccount minio wasn't created and so the Pod failed to start.
Version of Helm and Kubernetes:
$ helm version
Client: &version.Version{SemVer:"v2.14.3", GitCommit:"0e7f3b6637f7af8fcfddb3d2941fcc7cbebb0085", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.14.3", GitCommit:"0e7f3b6637f7af8fcfddb3d2941fcc7cbebb0085", GitTreeState:"clean"}

$ kubectl version
Client Version: version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.3", GitCommit:"2d3c76f9091b6bec110a5e63777c332469e0cba2", GitTreeState:"clean", BuildDate:"2019-08-19T12:36:28Z", GoVersion:"go1.12.9", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.3", GitCommit:"2d3c76f9091b6bec110a5e63777c332469e0cba2", GitTreeState:"clean", BuildDate:"2019-08-20T18:57:36Z", GoVersion:"go1.12.9", Compiler:"gc", Platform:"linux/amd64"}

Which chart:
stable/minio
What happened:
$ kubectl describe rs minio-7495598b47 -n spinnaker
...
Conditions:
  Type             Status  Reason
  ----             ------  ------
  ReplicaFailure   True    FailedCreate
Events:
  Type     Reason        Age                From                   Message
  ----     ------        ----               ----                   -------
  Warning  FailedCreate  8s (x15 over 90s)  replicaset-controller  Error creating: pods "minio-7495598b47-" is forbidden: error looking up service account spinnaker/minio: serviceaccount "minio" not found

What you expected to happen:
ServiceAccount minio will be created.
How to reproduce it (as minimally and precisely as possible):
$ helm install --namespace spinnaker --name minio --set accessKey=myaccesskey,secretKey=mysecretkey stable/minio

Anything else we need to know:

I tried this again in 2 environments. Neither reproduced the problem.
kind cluster
kubectl version
Client Version: version.Info{Major:"1", Minor:"16", GitVersion:"v1.16.2", GitCommit:"c97fe5036ef3df2967d086711e6c0c405941e14b", GitTreeState:"clean", BuildDate:"2019-10-15T23:42:50Z", GoVersion:"go1.12.10", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.3", GitCommit:"2d3c76f9091b6bec110a5e63777c332469e0cba2", GitTreeState:"clean", BuildDate:"2019-08-20T18:57:36Z", GoVersion:"go1.12.9", Compiler:"gc", Platform:"linux/amd64"}

gke cluster
kubectl version
Client Version: version.Info{Major:"1", Minor:"16", GitVersion:"v1.16.2", GitCommit:"c97fe5036ef3df2967d086711e6c0c405941e14b", GitTreeState:"clean", BuildDate:"2019-10-15T23:42:50Z", GoVersion:"go1.12.10", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"13+", GitVersion:"v1.13.10-gke.0", GitCommit:"569511c9540f78a94cc6a41d895c382d0946c11a", GitTreeState:"clean", BuildDate:"2019-08-21T23:28:44Z", GoVersion:"go1.11.13b4", Compiler:"gc", Platform:"linux/amd64"}


Enhancement: PWA on iOS

What features would you like to see added?
Using Librechat as PWA currently only works on Android. It should work on iOS also.
More details
iOS requires some additional headers:
https://developer.apple.com/library/archive/documentation/AppleApplications/Reference/SafariWebContent/ConfiguringWebApplications/ConfiguringWebApplications.html
especially <meta name="apple-mobile-web-app-status-bar-style" content="black">
Which components are impacted by your request?
No response
Pictures
No response
Code of Conduct

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

In my tests, this didn't really change anything: <meta name="apple-mobile-web-app-status-bar-style" content="black">
I had to use <meta name="apple-mobile-web-app-capable" content="yes"> and specify the icon
See #1602 for details

Sorry, i posted the wrong one.
is the mandatory one I think
Thanks for testing +adding 🙏🏻

Thanks for investigating this and sharing the link for the apple doc on the subject!


artifacts on terminal resize

Hi, thanks for the great library!
I've noticed that when using flex columns if I resize my terminal then some table artifacts appear on the screen.  Any idea on how to clear this out when the terminal window resizes?

After a screen resize:

Hello!  Sorry about a very slow response, I missed the notification for this.
This is caused because of the ordering of events/draws.  The screen is resized, and the view is redrawn -- but the view is being redrawn before the screen resize event is received/processed.  I don't know if this is deeper in Bubble Tea itself or if it's something in your code, but I've had troubles with screen resizes as well.  The easiest fix is to use the 'full screen' mode with the alternate buffer as in this example: https://github.com/charmbracelet/bubbletea/blob/master/examples/fullscreen/main.go#L19
I'm not sure if there's a deeper fix that can be done on the Bubble Table side.

Hi, thanks for the response.  Could this also be related to flex columns?  When I run the bubble-table flex example I can see the screen artifacts even when using teat.WithAltScreen()

Odd... I can definitely reproduce the artifacts when I run it without the alt screen, but I cannot reproduce with the alt screen. 🤔
I can reproduce the artifacts generally if I do this:
func (m Model) View() string {
   return "Helloooooooooooooooooooooooooooooooooooooooooooooooooooooooo"
}

Then resizing the window until the width is smaller than the text creates artifacts the same as the table.  So unfortunately I'm not sure if this is something that the table itself can fix.

Hmmm it still seems like an issue

I'll try to look into this if I get the time

https://github.com/Evertras/bubble-table/blob/7701b149a29bd6df06cb70c63bb0db1cd5f192b5/examples/flex/main.go#L93-L95
Maybe if we could have a rigid height of the table as well like how width is done there? Something that is comparable to msg.Height of bubbletea I suppose

I seem to have the workaround by making a lipgloss style like lipgloss.NewStyle().Height(m.height).MaxHeight(m.height) and then rendering the table and now it doesn't seem to break for me :D


API got modified

Rancher versions:
rancher/server:v2.0.0-alpha10
rancher/agent:
Steps to Reproduce:
Try accessing /v3/token or v2/token or v1/token
Results:
userIdentity missing in data.

Possible source of Cause
Class<?> io.cattle.platform.iaas.api.auth.dynamic.DynamicSchemaFactory.getSchemaClass(String type)
returns a SchemaImpl devoid of resourceFields#userIdentity

There is explicitly no access control and therefore no identities supported in the current preview.

Thanks @vincent99 . Wondering if it is possible to allow access control in cattle by tweaking some clases. Let me know if possible.


Only one row visible at init with scrollbarV

I'm submitting a ...  (check one with "x")
[x] bug report => search github for a similar issue or PR before submitting

Current behavior
When you set the option scrollbarV to true, and add a few rows at init of the table, only 1 row is visible instead of all your rows. Whenever you scroll (horizontally or vertically) it shows the correct number of rows
Expected behavior
It should show all visible rows at init
Reproduction of the problem
http://plnkr.co/edit/bGk5ZbAwcjYhPb2gDNfo?p=preview
I added 6 rows but only 1 is visible at init. To make the other appear use the horizontal scrollbar in the table and they should pop. (It also works with vertical scrollbars).

Table version: 0.12.0

Angular version: 2.1.2

Browser: all

Fixed in 1.0.0, thanks !

I had a somewhat similar issue using scrollbarV except it wasn't only on init and the table never showed more than 1 row.   I put this on my component's css and fixed the issue:
.datatable { height: 800px; }
In case it helps anyone else.
Thank you!

Ya, if you are doing virtual scrolling, we kinda gotta have a height to measure against.

i have the same issue like @lagofvc but his solution won't work on my table. Any further suggestions for solving the problem?
If i deactivate [scrollbarV]="true", the table is shown correctly, but i don't want the page to be scrolled. Instead i want to add [scrollbarV]="true" but then the table shows only the first row(!) and that is strange because if i filter something or sort it the first row is changing.
Hope you guys can help me.

I'm having the same issue: table works properly without scrollbarV, but with, it shows only 1 line. The scroll does seem to work, though, including paging as if page size is effectively 1.

Table version: 11.3.0

Angular version: 5.2.10

Browser: Chrome 71.0.3578.98


Better ReturnType<>; Fixes Microsoft/TypeScript#33457

Please verify that:

[ ] There is an associated issue in the Backlog milestone (required)
[x] Code is up-to-date with the master branch
[x] You've successfully run gulp runtests locally
[x] There are new or updated unit tests validating the change

Fixes #33457
There's no issue in the Backlog but I figured I'd try anyway =x
It fixes my issue and only affects one other test.
But that one other test seems to only have its type emit affected?
type T19<T extends any[]> = ReturnType<(x: string, ...args: T) => T[]>;

is emitted as,
ReturnType<(x: string, ...args: T) => T[]>;

But when a concrete T is substituted in, it resolves to T[]

Oh. TS bot sent me a warning. Should I close this and open a PR with lib untouched?

Related,
https://github.com/microsoft/TypeScript/issues/33495
The type parameter constraint and RHS of conditional type I'm using are different because of the issue outlined there

@weswigham just thought I'd show you that the TS bot hated it when I touched lib, too =P

https://github.com/microsoft/TypeScript/blob/c447ebc59c49a1b071c099ce6055e94517973eab/src/compiler/core.ts#L1464
I'd just like to point out that ...args : never[] is used by the TS code base at the moment.
Just a random thought.

This PR hasn't seen any activity for quite a while, so I'm going to close it to keep the number of open PRs manageable. Feel free to open a fresh PR or continue the discussion on one of the linked bugs.


Building openpilot fails on M1

Describe the bug
maher@M1 openpilot %  pipenv shell
Loading .env environment variables...
Launching subshell in virtual environment...
Restored session: Sam 27 aoû 2022 18:57:01 CEST
 . /Users/maher/.local/share/virtualenvs/openpilot-eXNm2f47/bin/activate
maher@M1 openpilot %  . /Users/maher/.local/share/virtualenvs/openpilot-eXNm2f47/bin/activate
((openpilot) ) maher@M1 openpilot % scons -u -j$(nproc)
scons: Reading SConscript files ...
Git commit hash for gitversion.h: 04aeb30c
scons: done reading SConscript files.
scons: Building targets ...
gcc -o panda/tests/safety/test.os -c -nostdlib -fno-builtin -std=gnu11 -fPIC -Ipanda/tests/safety -Ipanda/board panda/tests/safety/test.c
panda/tests/safety/test.c:64:9: warning: 'NULL' macro redefined [-Wmacro-redefined]
#define NULL ((void*)0)
        ^
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_null.h:30:9: note: previous definition is here
#define NULL  __DARWIN_NULL
        ^
In file included from panda/tests/safety/test.c:66:
In file included from panda/board/safety.h:11:
panda/board/safety/safety_chrysler.h:82:19: error: initializer element is not a compile-time constant
  {CHRYSLER_ADDRS.CRUISE_BUTTONS, 0, 3},
   ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~
panda/board/safety/safety_chrysler.h:88:26: error: initializer element is not a compile-time constant
  {CHRYSLER_RAM_DT_ADDRS.CRUISE_BUTTONS, 2, 3},
   ~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~
panda/board/safety/safety_chrysler.h:94:26: error: initializer element is not a compile-time constant
  {CHRYSLER_RAM_HD_ADDRS.CRUISE_BUTTONS, 2, 3},
   ~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~
panda/board/safety/safety_chrysler.h:100:28: error: initializer element is not a compile-time constant
  {.msg = {{CHRYSLER_ADDRS.EPS_2, 0, 8, .check_checksum = true, .max_counter = 15U, .expected_timestep = 10000U}, { 0 }, { 0 }}},
            ~~~~~~~~~~~~~~~^~~~~
panda/board/safety/safety_chrysler.h:110:35: error: initializer element is not a compile-time constant
  {.msg = {{CHRYSLER_RAM_DT_ADDRS.EPS_2, 0, 8, .check_checksum = true, .max_counter = 15U, .expected_timestep = 10000U}, { 0 }, { 0 }}},
            ~~~~~~~~~~~~~~~~~~~~~~^~~~~
panda/board/safety/safety_chrysler.h:119:35: error: initializer element is not a compile-time constant
  {.msg = {{CHRYSLER_RAM_HD_ADDRS.EPS_2, 0, 8, .check_checksum = true, .max_counter = 15U, .expected_timestep = 10000U}, { 0 }, { 0 }}},
            ~~~~~~~~~~~~~~~~~~~~~~^~~~~
1 warning and 6 errors generated.
clang -o selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/lat_cost/lat_cost_y_e_hess.os -c -std=gnu11 -DGL_SILENCE_DEPRECATION -DSWAGLOG="\"common/swaglog.h\"" -DACADOS_WITH_QPOASES -g -fPIC -O2 -Wunused -Werror -Wshadow -Wno-unknown-warning-option -Wno-deprecated-register -Wno-register -Wno-inconsistent-missing-override -Wno-c99-designator -Wno-reorder-init-list -Wno-error=unused-but-set-variable -DGL_SILENCE_DEPRECATION -DSWAGLOG="\"common/swaglog.h\"" -Wno-unused -fPIC -I/opt/homebrew/include -I/opt/homebrew/opt/openssl/include -I. -Ithird_party/acados/include -Ithird_party/acados/include/blasfeo/include -Ithird_party/acados/include/hpipm/include -Ithird_party/catch2/include -Ithird_party/libyuv/include -Ithird_party/json11 -Ithird_party/curl/include -Ithird_party/libgralloc/include -Ithird_party/android_frameworks_native/include -Ithird_party/android_hardware_libhardware/include -Ithird_party/android_system_core/include -Ithird_party/linux/include -Ithird_party/snpe/include -Ithird_party/mapbox-gl-native-qt/include -Ithird_party/qrcode -Ithird_party -Icereal -Iopendbc/can -Ithird_party/json11 selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/lat_cost/lat_cost_y_e_hess.c
clang -o selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/lat_cost/lat_cost_y_0_fun.os -c -std=gnu11 -DGL_SILENCE_DEPRECATION -DSWAGLOG="\"common/swaglog.h\"" -DACADOS_WITH_QPOASES -g -fPIC -O2 -Wunused -Werror -Wshadow -Wno-unknown-warning-option -Wno-deprecated-register -Wno-register -Wno-inconsistent-missing-override -Wno-c99-designator -Wno-reorder-init-list -Wno-error=unused-but-set-variable -DGL_SILENCE_DEPRECATION -DSWAGLOG="\"common/swaglog.h\"" -Wno-unused -fPIC -I/opt/homebrew/include -I/opt/homebrew/opt/openssl/include -I. -Ithird_party/acados/include -Ithird_party/acados/include/blasfeo/include -Ithird_party/acados/include/hpipm/include -Ithird_party/catch2/include -Ithird_party/libyuv/include -Ithird_party/json11 -Ithird_party/curl/include -Ithird_party/libgralloc/include -Ithird_party/android_frameworks_native/include -Ithird_party/android_hardware_libhardware/include -Ithird_party/android_system_core/include -Ithird_party/linux/include -Ithird_party/snpe/include -Ithird_party/mapbox-gl-native-qt/include -Ithird_party/qrcode -Ithird_party -Icereal -Iopendbc/can -Ithird_party/json11 selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/lat_cost/lat_cost_y_0_fun.c
clang -o selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/lat_cost/lat_cost_y_0_fun_jac_ut_xt.os -c -std=gnu11 -DGL_SILENCE_DEPRECATION -DSWAGLOG="\"common/swaglog.h\"" -DACADOS_WITH_QPOASES -g -fPIC -O2 -Wunused -Werror -Wshadow -Wno-unknown-warning-option -Wno-deprecated-register -Wno-register -Wno-inconsistent-missing-override -Wno-c99-designator -Wno-reorder-init-list -Wno-error=unused-but-set-variable -DGL_SILENCE_DEPRECATION -DSWAGLOG="\"common/swaglog.h\"" -Wno-unused -fPIC -I/opt/homebrew/include -I/opt/homebrew/opt/openssl/include -I. -Ithird_party/acados/include -Ithird_party/acados/include/blasfeo/include -Ithird_party/acados/include/hpipm/include -Ithird_party/catch2/include -Ithird_party/libyuv/include -Ithird_party/json11 -Ithird_party/curl/include -Ithird_party/libgralloc/include -Ithird_party/android_frameworks_native/include -Ithird_party/android_hardware_libhardware/include -Ithird_party/android_system_core/include -Ithird_party/linux/include -Ithird_party/snpe/include -Ithird_party/mapbox-gl-native-qt/include -Ithird_party/qrcode -Ithird_party -Icereal -Iopendbc/can -Ithird_party/json11 selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/lat_cost/lat_cost_y_0_fun_jac_ut_xt.c
clang -o selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/lat_cost/lat_cost_y_0_hess.os -c -std=gnu11 -DGL_SILENCE_DEPRECATION -DSWAGLOG="\"common/swaglog.h\"" -DACADOS_WITH_QPOASES -g -fPIC -O2 -Wunused -Werror -Wshadow -Wno-unknown-warning-option -Wno-deprecated-register -Wno-register -Wno-inconsistent-missing-override -Wno-c99-designator -Wno-reorder-init-list -Wno-error=unused-but-set-variable -DGL_SILENCE_DEPRECATION -DSWAGLOG="\"common/swaglog.h\"" -Wno-unused -fPIC -I/opt/homebrew/include -I/opt/homebrew/opt/openssl/include -I. -Ithird_party/acados/include -Ithird_party/acados/include/blasfeo/include -Ithird_party/acados/include/hpipm/include -Ithird_party/catch2/include -Ithird_party/libyuv/include -Ithird_party/json11 -Ithird_party/curl/include -Ithird_party/libgralloc/include -Ithird_party/android_frameworks_native/include -Ithird_party/android_hardware_libhardware/include -Ithird_party/android_system_core/include -Ithird_party/linux/include -Ithird_party/snpe/include -Ithird_party/mapbox-gl-native-qt/include -Ithird_party/qrcode -Ithird_party -Icereal -Iopendbc/can -Ithird_party/json11 selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/lat_cost/lat_cost_y_0_hess.c
cd /Users/maher/Documents/openpilot/selfdrive/controls/lib/longitudinal_mpc_lib && python3 long_mpc.py
clang++ -o selfdrive/locationd/generated/gps.o -c -std=c++1z -DGL_SILENCE_DEPRECATION -DSWAGLOG="\"common/swaglog.h\"" -g -fPIC -O2 -Wunused -Werror -Wshadow -Wno-unknown-warning-option -Wno-deprecated-register -Wno-register -Wno-inconsistent-missing-override -Wno-c99-designator -Wno-reorder-init-list -Wno-error=unused-but-set-variable -DGL_SILENCE_DEPRECATION -DSWAGLOG="\"common/swaglog.h\"" -I/opt/homebrew/include -I/opt/homebrew/opt/openssl/include -I. -Ithird_party/acados/include -Ithird_party/acados/include/blasfeo/include -Ithird_party/acados/include/hpipm/include -Ithird_party/catch2/include -Ithird_party/libyuv/include -Ithird_party/json11 -Ithird_party/curl/include -Ithird_party/libgralloc/include -Ithird_party/android_frameworks_native/include -Ithird_party/android_hardware_libhardware/include -Ithird_party/android_system_core/include -Ithird_party/linux/include -Ithird_party/snpe/include -Ithird_party/mapbox-gl-native-qt/include -Ithird_party/qrcode -Ithird_party -Icereal -Iopendbc/can -Ithird_party/json11 selfdrive/locationd/generated/gps.cpp
clang++ -o selfdrive/locationd/generated/ubx.o -c -std=c++1z -DGL_SILENCE_DEPRECATION -DSWAGLOG="\"common/swaglog.h\"" -g -fPIC -O2 -Wunused -Werror -Wshadow -Wno-unknown-warning-option -Wno-deprecated-register -Wno-register -Wno-inconsistent-missing-override -Wno-c99-designator -Wno-reorder-init-list -Wno-error=unused-but-set-variable -DGL_SILENCE_DEPRECATION -DSWAGLOG="\"common/swaglog.h\"" -I/opt/homebrew/include -I/opt/homebrew/opt/openssl/include -I. -Ithird_party/acados/include -Ithird_party/acados/include/blasfeo/include -Ithird_party/acados/include/hpipm/include -Ithird_party/catch2/include -Ithird_party/libyuv/include -Ithird_party/json11 -Ithird_party/curl/include -Ithird_party/libgralloc/include -Ithird_party/android_frameworks_native/include -Ithird_party/android_hardware_libhardware/include -Ithird_party/android_system_core/include -Ithird_party/linux/include -Ithird_party/snpe/include -Ithird_party/mapbox-gl-native-qt/include -Ithird_party/qrcode -Ithird_party -Icereal -Iopendbc/can -Ithird_party/json11 selfdrive/locationd/generated/ubx.cpp
scons: *** [panda/tests/safety/test.os] Error 1
clang++ -o selfdrive/locationd/locationd.os -c -std=c++1z -DGL_SILENCE_DEPRECATION -DSWAGLOG="\"common/swaglog.h\"" -g -fPIC -O2 -Wunused -Werror -Wshadow -Wno-unknown-warning-option -Wno-deprecated-register -Wno-register -Wno-inconsistent-missing-override -Wno-c99-designator -Wno-reorder-init-list -Wno-error=unused-but-set-variable -DGL_SILENCE_DEPRECATION -DSWAGLOG="\"common/swaglog.h\"" -fPIC -I/opt/homebrew/include -I/opt/homebrew/opt/openssl/include -I. -Ithird_party/acados/include -Ithird_party/acados/include/blasfeo/include -Ithird_party/acados/include/hpipm/include -Ithird_party/catch2/include -Ithird_party/libyuv/include -Ithird_party/json11 -Ithird_party/curl/include -Ithird_party/libgralloc/include -Ithird_party/android_frameworks_native/include -Ithird_party/android_hardware_libhardware/include -Ithird_party/android_system_core/include -Ithird_party/linux/include -Ithird_party/snpe/include -Ithird_party/mapbox-gl-native-qt/include -Ithird_party/qrcode -Ithird_party -Icereal -Iopendbc/can -Ithird_party/json11 selfdrive/locationd/locationd.cc
clang++ -o selfdrive/locationd/liblocationd.os -c -std=c++1z -DGL_SILENCE_DEPRECATION -DSWAGLOG="\"common/swaglog.h\"" -g -fPIC -O2 -Wunused -Werror -Wshadow -Wno-unknown-warning-option -Wno-deprecated-register -Wno-register -Wno-inconsistent-missing-override -Wno-c99-designator -Wno-reorder-init-list -Wno-error=unused-but-set-variable -DGL_SILENCE_DEPRECATION -DSWAGLOG="\"common/swaglog.h\"" -fPIC -I/opt/homebrew/include -I/opt/homebrew/opt/openssl/include -I. -Ithird_party/acados/include -Ithird_party/acados/include/blasfeo/include -Ithird_party/acados/include/hpipm/include -Ithird_party/catch2/include -Ithird_party/libyuv/include -Ithird_party/json11 -Ithird_party/curl/include -Ithird_party/libgralloc/include -Ithird_party/android_frameworks_native/include -Ithird_party/android_hardware_libhardware/include -Ithird_party/android_system_core/include -Ithird_party/linux/include -Ithird_party/snpe/include -Ithird_party/mapbox-gl-native-qt/include -Ithird_party/qrcode -Ithird_party -Icereal -Iopendbc/can -Ithird_party/json11 selfdrive/locationd/liblocationd.cc
Warning: Please note that the following versions of CasADi  are officially supported: 3.5.5 or 3.5.4 or 3.5.3 or 3.5.2 or 3.5.1 or 3.4.5 or 3.4.0.
 If there is an incompatibility with the CasADi generated code, please consider changing your CasADi version.
Version 3.5.4+ currently in use.
Warning: Please note that the following versions of CasADi  are officially supported: 3.5.5 or 3.5.4 or 3.5.3 or 3.5.2 or 3.5.1 or 3.4.5 or 3.4.0.
 If there is an incompatibility with the CasADi generated code, please consider changing your CasADi version.
Version 3.5.4+ currently in use.
Warning: Please note that the following versions of CasADi  are officially supported: 3.5.5 or 3.5.4 or 3.5.3 or 3.5.2 or 3.5.1 or 3.4.5 or 3.4.0.
 If there is an incompatibility with the CasADi generated code, please consider changing your CasADi version.
Version 3.5.4+ currently in use.
Warning: Please note that the following versions of CasADi  are officially supported: 3.5.5 or 3.5.4 or 3.5.3 or 3.5.2 or 3.5.1 or 3.4.5 or 3.4.0.
 If there is an incompatibility with the CasADi generated code, please consider changing your CasADi version.
Version 3.5.4+ currently in use.
Warning: Please note that the following versions of CasADi  are officially supported: 3.5.5 or 3.5.4 or 3.5.3 or 3.5.2 or 3.5.1 or 3.4.5 or 3.4.0.
 If there is an incompatibility with the CasADi generated code, please consider changing your CasADi version.
Version 3.5.4+ currently in use.
scons: building terminated because of errors.

OS Version
macOS Monterey Version 12.5.1
openpilot version or commit
13489d092e2c09119e880022507d7331cf54c615
Additional info
No response

Did you happen to solve this issue?

No, the issue remains.

Duplicate of #25112


pidwatchers: fix race conditions revealed by fuzz tests

Partially overlapping changes with fixes in PR #34. I'll rebase this on top of #34 so that we will cover all detected issues. :)


Code block not allowed with another text in ordered list

Describe the bug
when entering code block inside ordered list you can't have text in same step even if you create new line with Shift+Enter
Steps To Reproduce
Steps to reproduce the behavior:

Create/Edit Page
Make ordered list
Type text
Press shift+enter
try to enter codeblock

Expected behavior
the ability to have code block in same list number and even in same line
Your Configuration (please complete the following information):

Exact BookStack Version (Found in settings): BookStack v0.30.1
PHP Version: 7.2.24
Hosting Method (Nginx/Apache/Docker): Nginx

Hi @Zyzto,
Thanks for your request. The request to allow code blocks within lists is already open under #534 so I'll therefore close this off as a duplicate.


[Publisher bot] Add unit tests & refactor publisher bot

[Part of epic #50 "Ship MVP"]
What: refactor & add tests similar to what we did for predictoor, trader, trueval

No need to assign me to this


Add an lsn header to the change messages

The LSN is very useful for being able to "align" streams with each other. Currently the LSN is a part of the offset, but this is likely to change in the future. It would be useful if the LSN was added as a header to each change message.

And we're going to drop the offset from messages as well?


Images in webp format cannot be loaded properly on devices in iOS12 system.

Images in webp format cannot be loaded properly on devices in iOS12 system.

Duplicated for #2347 . Upgrade to v4.4.1 to solve this problem.
Note: Please using GitHub search before fire the issue. And please FILL THE ISSUE TEMPLATE. We'll auto-close the issue without valid issue template in the future.


Add web analytics to website

I'm assuming Google Analytics but there are other options. Any suggestions/preferences?

No idea.

I don't really have any problem with Google Analytics, I just wanted to give an opportunity for anyone who might have strongest preferences a chance to express them! I've used Woopra in the past and their realtime analytics are much better if that's likely to be of interest (e.g. during presentations about LC and/or workshops).
The one thing I'd quite like which isn't easily doable with GA is to make the data public, both for openness and transparency, and because it might be a useful dataset for lessons. I'm not sure of a platform that allow that, but I'm open to suggestions.
In the meantime, unless there are strong objections I suggest we stick GA in there to at least start getting some data.

I'll close this as it's handled by #6 — if we want to change analytics platforms we can always open a new issue.
For reference, there's a public spreadsheet with the last 28 days-worth of analytics data on it


Idea to connect EVCC?

Hello Trixing,
I think about to patch your implementation for my WallbePro Wallbox,
but then I thought about adding EVCC.io which is open source and supports more or less every wallbox.
Did you also thought about an interface or something like that for a second ... implementation?
I think that would also allow:

Allow for control of charging once Tesla adds an API for this.

Best regards
Sebastian

I found already a project which seems more close to my request, so I will close this issue here.
https://github.com/vikt0rm/dbus-goecharger


bed files will need to be in predetermined location as of right now

since i'm using the qc report as the input manifest for paired calling at the moment. fully qualified paths to the bed files are not available. just the actual file names. that means the means that the bed files will need to be a predetermined architecture. will probably need a readme file for this repo to cover things like this.

will need to add a pre submission validation for this


[REQUEST] Custom Proxy for Request Block

Add 'Proxy Type / IP / PORT / Proxy Auth Creds' in Request Block

good if you add three option inside request block :

DEFAULT (if proxy for the job is OFF, then req without proxy, or use the bot's proxy if it's ON)
ADD CUSTOM PROXY
DON'T USE ANY PROXY (Even if proxy is ON for the Job)

https://discourse.openbullet.dev/t/setting-a-temporary-proxy/1728

@openbullet
i tried that and also this one :
https://discourse.openbullet.dev/t/add-block-use-proxy-and-other-block-proxyless/921/3
But none of them works,
Can you send me a screenshot of lolicode you used and worked in openbullet2?
or share the lolicode

Everything works correctly, please write your LoliCode so I can see what you're doing wrong.

@openbullet
i just pasted your code

https://discourse.openbullet.dev/t/setting-a-temporary-proxy/1728

https://discourse.openbullet.dev/t/add-block-use-proxy-and-other-block-proxyless/921/3

Replace ProxyType with RuriLib.Models.Proxies.ProxyType. This error happens because you don't have the namespace RuriLib.Models.Proxies imported above in the "usings" section. Also remember to properly set up the port, username and password when you run otherwise nothing will work ^^

@openbullet
still not works :'(

Because you started without a proxy. This code is only to change the proxy if you already have one. If you don't have a proxy you have to use the other code
data.Proxy = new RuriLib.Models.Proxies.Proxy("<IP_ADDRESS>", 9050, RuriLib.Models.Proxies.ProxyType.Socks5, "username", "password");
data.UseProxy = true;

// Here put the request block

data.UseProxy = false;

If you want me to add some syntax sugar for LoliCode to do this because you don't want to use C# then open a separate issue.

Finally... problem solved
thank you


Updated to IZettle SDK 3.15.1

I also chmod +x the .sh files so they can be ran from a terminal on macos

@Clancey Thanks a lot for your support. Can you ensure the API definition also updated accordingly?


How do I prevent deleting cookies

What versions are you running?
$ go list -m github.com/chromedp/chromedp
github.com/chromedp/chromedp v0.7.4
$ google-chrome --version
92.0.4515.159
$ go version
go version go1.17 windows/amd64

What did you do? Include clear steps.
I designed a crawler to collect links to websites, using random click events and locked the navigation, but the cookies disappeared when the logout interface was triggered.
What did you expect to see?
How to listen for cookie modification events and prevent cookie deletion.

One of the options is to block the sign out request. See the demo below:
package main

import (
	"context"
	"fmt"
	"github.com/chromedp/cdproto/network"
	"github.com/chromedp/chromedp"
	"log"
	"net/http"
	"net/http/httptest"
)

func main() {
	mux := http.NewServeMux()
	mux.HandleFunc("/", func(w http.ResponseWriter, req *http.Request) {
		c := &http.Cookie{
			Name:   "test",
			Value:  "value",
			Path:   "/",
			MaxAge: 3600,
		}
		http.SetCookie(w, c)
		fmt.Fprint(w, indexHTML)
	})
	mux.HandleFunc("/sign-out", func(w http.ResponseWriter, req *http.Request) {
		c := &http.Cookie{
			Name:   "test",
			Path:   "/",
			MaxAge: -1,
		}
		http.SetCookie(w, c)
	})
	mux.HandleFunc("/print", func(w http.ResponseWriter, req *http.Request) {
		log.Printf("cookies sent by client: %s", req.Header.Get("Cookie"))
	})
	s := httptest.NewServer(mux)

	ctx, cancel := chromedp.NewContext(context.Background())
	defer cancel()

	err := chromedp.Run(ctx,
		// uncomment the next line to see the difference
		network.SetBlockedURLS([]string{s.URL + "/sign-out"}),
		chromedp.Navigate(s.URL),
		chromedp.Click("#btnSignOut", chromedp.ByQuery),
		chromedp.Navigate(s.URL+"/print"),
	)
	if err != nil {
		log.Fatal(err)
	}
}

const indexHTML = `<!doctype html>
<html>
<body>
  <button id="btnSignOut">Sign Out</button>
  <script>
    document.getElementById('btnSignOut').addEventListener('click', function(e) {
      e.preventDefault();
      fetch("/sign-out");
      return false;
    }, false);
  </script>
</body>
</html>`

@ZekeLu
Most websites remove sessions so that Cookies fail ,I would like to know how to determine the call related DOM events before disabling links,Because this crawler is not very specific website.
<?php

define( 'DVWA_WEB_PAGE_TO_ROOT', '' );
require_once DVWA_WEB_PAGE_TO_ROOT . 'dvwa/includes/dvwaPage.inc.php';

dvwaPageStartup( array( 'phpids' ) );

if( !dvwaIsLoggedIn() ) {	// The user shouldn't even be on this page
	// dvwaMessagePush( "You were not logged in" );
	dvwaRedirect( 'login.php' );
}

dvwaLogout();
dvwaMessagePush( "You have logged out" );
dvwaRedirect( 'login.php' );

?>

Session is stored on the server, which seems to have disabled links added to the scan configuration.


ARROW-16243: [C++][Python] Remove Parquet ReadSchemaField method

As @pitrou started discussing* in JIRA#ARROW-16243, it seems that ReadSchemaField() doesn't do anything different than ReadColumn(). This PR removes it and its Python method.
@jorisvandenbossche says that

(...) both are different, as Parquet counts the final child leaves, while Arrow counts the top-level parent leaves
The column indices you pass to eg ReadTable are parquet-based column indices.

Please feel free to close it if (not) necessary.

For the record, ReadSchemaField was added in https://github.com/apache/parquet-cpp/pull/312.
It was originally called by other functions in that PR, but that was later removed.
Still, we should first deprecate the C++ API, not remove it immediately (you can look for the ARROW_DEPRECATED macro which will help you do that). Of course, the unused Cython declaration can be removed.

Thank you for taking a look at it, @pitrou!

Still, we should first deprecate the C++ API, not remove it immediately

Of course, my bad :sweat_smile: I reverted the last commit, added ARROW_DEPRECATED to ReadSchemaField and removed read_schema_field. Let me know if I'm on the right track.
Thanks again!


Crash on iOS: EXC_BAD_ACCESS KERN_INVALID_ADDRESS 0x0000000000000000

BUG / PROBLEM REPORT
SUMMARY
I get from Crashlytics a few crashes from multiple users with different iPhones/iOS versions (Crash-free statistics=70%) I am not able to reproduce it. I'm not sure but it may happen while terminating app and is not visible for the user.
VERSIONS
Xamarin.Forms <IP_ADDRESS>2
ZXing.Net.Mobile 3.0.0-beta5
PLATFORMS

[ ]  Android
[x]  iOS

HOW TO REPRODUCE
I wasn't able to reproduce it, however I received on Crashlytics call stack:
Crashed: tid_1907
EXC_BAD_ACCESS KERN_INVALID_ADDRESS 0x0000000000000000
Crashed: tid_1907
0  MyApp.iOS                 0x1022e8538 ZXing_Datamatrix_Internal_BitMatrixParser__ctor_ZXing_Common_BitMatrix + 38 (BitMatrixParser.cs:38)
1  MyApp.iOS                 0x1022eb300 ZXing_Datamatrix_Internal_Decoder_decode_ZXing_Common_BitMatrix + 62 (Decoder.cs:62)
2  MyApp.iOS                 0x1022eb300 ZXing_Datamatrix_Internal_Decoder_decode_ZXing_Common_BitMatrix + 62 (Decoder.cs:62)
3  MyApp.iOS                 0x1022ded04 ZXing_Datamatrix_DataMatrixReader_decode_ZXing_BinaryBitmap_System_Collections_Generic_IDictionary_2_ZXing_DecodeHintType_object + 68 (DataMatrixReader.cs:68)
4  MyApp.iOS                 0x102272294 ZXing_MultiFormatReader_decodeInternal_ZXing_BinaryBitmap + 210 (MultiFormatReader.cs:210)
5  MyApp.iOS                 0x102271484 ZXing_MultiFormatReader_decodeWithState_ZXing_BinaryBitmap + 90 (MultiFormatReader.cs:90)
6  MyApp.iOS                 0x10226e310 ZXing_BarcodeReaderGeneric_Decode_ZXing_LuminanceSource + 223 (BarcodeReaderGeneric.cs:223)
7  MyApp.iOS                 0x10235d554 ZXing_Mobile_ZXingScannerView__c__DisplayClass37_0__SetupCaptureSessionb__0_ZXing_LuminanceSource + 249 (ZXingScannerView.ios.cs:249)
8  MyApp.iOS                 0x10235d2a8 ZXing_Mobile_ZXingScannerView_OutputRecorder_DidOutputSampleBuffer_AVFoundation_AVCaptureOutput_CoreMedia_CMSampleBuffer_AVFoundation_AVCaptureConnection + 472 (ZXingScannerView.ios.cs:472)
9  MyApp.iOS                 0x1010591d0 wrapper_runtime_invoke_object_runtime_invoke_dynamic_intptr_intptr_intptr_intptr + 4774844
10 MyApp.iOS                 0x1028cbe94 mono_jit_runtime_invoke + 3164 (mini-runtime.c:3164)
11 MyApp.iOS                 0x10298c5dc mono_runtime_invoke_checked + 3044 (object.c:3044)
12 MyApp.iOS                 0x10298fee0 mono_runtime_invoke + 3099 (object.c:3099)
13 MyApp.iOS                 0x100cad420 native_to_managed_trampoline_102(objc_object*, objc_selector*, _MonoMethod**, objc_object*, objc_object*, objc_object*, unsigned int) + 5429 (registrar.m:5429)
14 MyApp.iOS                 0x100cad4b4 -[ZXing_Mobile_ZXingScannerView_OutputRecorder captureOutput:didOutputSampleBuffer:fromConnection:] + 14596 (registrar.m:14596)
15 AVFoundation                   0x1b6fd022c -[AVCaptureVideoDataOutput _processSampleBuffer:] + 336
16 AVFoundation                   0x1b6fcff70 __47-[AVCaptureVideoDataOutput _updateRemoteQueue:]_block_invoke + 92
17 CoreMedia                      0x1b3548ca8 __FigRemoteOperationReceiverCreateMessageReceiver_block_invoke + 292
18 CoreMedia                      0x1b3569988 __rqReceiverSetSource_block_invoke + 232
19 libdispatch.dylib              0x1ac88dfd8 _dispatch_client_callout + 20
20 libdispatch.dylib              0x1ac890758 _dispatch_continuation_pop + 408
21 libdispatch.dylib              0x1ac8a0f18 _dispatch_source_invoke2 + 892
22 libdispatch.dylib              0x1ac8a08c4 _dispatch_source_invoke + 428
23 libdispatch.dylib              0x1ac894320 _dispatch_lane_serial_drain + 264
24 libdispatch.dylib              0x1ac894e7c _dispatch_lane_invoke + 368
25 libdispatch.dylib              0x1ac89df20 _dispatch_workloop_worker_thread + 580
26 libsystem_pthread.dylib        0x1ac8f36d0 _pthread_wqthread + 280
27 libsystem_pthread.dylib        0x1ac8f99e8 start_wqthread + 8

ZXing.Net.Mobile 3.0.0-beta5

Can you test with version v2.4.1 please?

ZXing.Net.Mobile 3.0.0-beta5

Can you test with version v2.4.1 please?

It's not an option for us because we have to use ZXing.Net 0.16.5 as min version
FYI as workaround in OnAppearing and OnDisappearing event  I enable/disable IsScanning & IsAnalyzing properties and no crash report anymore. Tested with > 1000 users.

FYI as workaround in OnAppearing and OnDisappearing event I enable/disable IsScanning & IsAnalyzing properties and no crash report anymore. Tested with > 1000 users.

Thanks for the info!


python37Packages.pkginfo: 1.4.2 -> <IP_ADDRESS>

Semi-automatic update generated by https://github.com/ryantm/nixpkgs-update tools. This update was made based on information from https://repology.org/metapackage/python3.7-pkginfo/versions.
meta.description for python37Packages.pkginfo is: '"Query metadatdata from sdists / bdists / installed packages"'.

Checks done (click to expand)

built on NixOS
/nix/store/ph3mwn0dlmikm0kz9f4187mzxd6w0ix0-python3.7-pkginfo-<IP_ADDRESS>/bin/.pkginfo-wrapped passed the binary check.
/nix/store/ph3mwn0dlmikm0kz9f4187mzxd6w0ix0-python3.7-pkginfo-<IP_ADDRESS>/bin/pkginfo passed the binary check.
2 of 2 passed binary check by having a zero exit code.
0 of 2 passed binary check by having the new version present in output.
found <IP_ADDRESS> with grep in /nix/store/ph3mwn0dlmikm0kz9f4187mzxd6w0ix0-python3.7-pkginfo-<IP_ADDRESS>
directory tree listing: https://gist.github.com/948f0a18196705c4d862b93c9b60f4f7
du listing: https://gist.github.com/7678cb5004d79e945149724d70c5efa6

Rebuild report (if merged into master) (click to expand)

36 total rebuild path(s)
9 package rebuild(s)
9 x86_64-linux rebuild(s)
9 i686-linux rebuild(s)
9 x86_64-darwin rebuild(s)
9 aarch64-linux rebuild(s)
First fifty rebuilds by attrpath
devpi-client
khal
octoprint
python27Packages.pkginfo
python27Packages.poetry
python27Packages.twine
python37Packages.pkginfo
python37Packages.poetry
python37Packages.twine

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/ph3mwn0dlmikm0kz9f4187mzxd6w0ix0-python3.7-pkginfo-<IP_ADDRESS> \
  --option binary-caches 'https://cache.nixos.org/ https://r-ryantm.cachix.org/' \
  --option trusted-public-keys '
  r-ryantm.cachix.org-1:gkUbLkouDAyvBdpBX0JOdIiD2/DP1ldF3Z3Y6Gqcc4c=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(r-ryantm's Cachix cache is only trusted for this store-path realization.)
Or, build yourself:
nix-build -A python37Packages.pkginfo https://github.com/r-ryantm/nixpkgs/archive/45e0099e64dce564e4ae9ad527b19a7ecfecc1f6.tar.gz

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/ph3mwn0dlmikm0kz9f4187mzxd6w0ix0-python3.7-pkginfo-<IP_ADDRESS>
ls -la /nix/store/ph3mwn0dlmikm0kz9f4187mzxd6w0ix0-python3.7-pkginfo-<IP_ADDRESS>/bin

obsolete, <IP_ADDRESS> is already in master