Type error: Cannot read property of undefined (reading category) when importing flow

Current Behavior
Below are two flow exports. Each individually will import and run ok. However if I import one and then the other (either order) then importing the second one shows a popup error in the browser - Type error: Cannot read property of undefined (reading category) .
The browser console shows
TypeError: Cannot read properties of undefined (reading 'category')
at Object._ [as import] (red.min.js?v=:16:78556)
at Object.Ft [as importNodes] (red.min.js?v=:18:270747)
at E (red.min.js?v=:19:69139)
at HTMLDivElement.click (red.min.js?v=:19:50440)
at HTMLButtonElement. (vendor.js?v=:10:176787)
at HTMLButtonElement.dispatch (vendor.js?v=:2:43090)
at v.handle (vendor.js?v=:2:41074)
I found one other similar report, which was not resolved.
The flows need node-red-node-email but the error is seen whether this is available or not.
Confirmed by @Steve-Mcl in forum post
Flow 1
[{"id":"5ed5dcc8ccf90bfa","type":"group","z":"bdd7be38.d3b55","name":"Publishing to MQTT","style":{"label":true},"nodes":["b4227ef182f4ebef","a500a548eac99f1f","e7642367d639d549","ea94f646fa8e74e1","c04777c7cc3990a0","81428d3bcae766ee","86207c4b47bf3bd8","c458a09df04445f7","753fc1cc8863871e","e54df0d3d9480ac9","d13ea5ab5d57a0a7","43a40f5eb76748ac","cf6c087e45a7fbbf","de21d8a733a9c353","2fb7f6196432da68"],"x":54,"y":4659,"w":1172,"h":322},{"id":"ae9c6995a156ff5c","type":"subflow","name":"Delivery subflow","info":"","category":"","in":[{"x":50,"y":81,"wires":[{"id":"0b0e1e2df36d2d3a"}]}],"out":[{"x":420,"y":80,"wires":[{"id":"0b0e1e2df36d2d3a","port":0}]}],"env":[{"name":"controlProperty","type":"str","value":"control","ui":{"label":{"en-US":"Property for OK or FAIL"},"type":"input","opts":{"types":["str","env"]}}},{"name":"OKValue","type":"str","value":"OK","ui":{"label":{"en-US":"Value of success"},"type":"input","opts":{"types":["str","num","bool","env"]}}},{"name":"FAILValue","type":"str","value":"FAIL","ui":{"label":{"en-US":"Value for failure"},"type":"input","opts":{"types":["str","num","bool","env"]}}},{"name":"retrySecs","type":"num","value":"60","ui":{"label":{"en-US":"Retry period (secs)"},"type":"input","opts":{"types":["num","env"]}}},{"name":"maxQueue","type":"num","value":"100","ui":{"label":{"en-US":"Max messages in queue"},"type":"input","opts":{"types":["str","num","env"]}}},{"name":"contextStore","type":"str","value":"default","ui":{"label":{"en-US":"Context Store to use"},"type":"input","opts":{"types":["str","env"]}}}],"color":"#DDAA99","status":{"x":420,"y":160,"wires":[{"id":"89ab963214b94f59","port":0}]}},{"id":"e6a7f648cf7f127b","type":"inject","z":"ae9c6995a156ff5c","name":"Retry ","props":[{"p":"${controlProperty}","v":"__trigger","vt":"str"}],"repeat":"${retrySecs}","crontab":"","once":false,"onceDelay":0.1,"topic":"","x":100,"y":181,"wires":[["0b0e1e2df36d2d3a"]]},{"id":"89ab963214b94f59","type":"status","z":"ae9c6995a156ff5c","name":"","scope":["0b0e1e2df36d2d3a"],"x":300,"y":160,"wires":[[]]},{"id":"0b0e1e2df36d2d3a","type":"function","z":"ae9c6995a156ff5c","name":"State machine","func":"let store = env.get(\"contextStore\")\nif (store === \"default\") store = null\nlet stat = context.get(\"stat\", store) || {state: \"initial\", queue: []}\n// can't use a switch here I think as need to compare against env value\nconst control = msg[env.get(\"controlProperty\")]\n\nif (control === env.get(\"OKValue\")) {\n    handleOK(stat)\n} else if (control === env.get(\"FAILValue\")) {\n    handleFAIL(stat)\n} else if (control === \"__trigger\") {\n    handleTrigger(stat)\n} else {\n    // no valid control value so must be incoming message\n    handleMessage(msg, stat)\n}\n//node.warn(`state: ${stat.state}`)\n// decide what to do next based on the new state\nswitch (stat.state) {\n    case \"initial\":\n    case \"waitingForMsg\":\n        sendMsg(stat)   // send next message if any\n        break;\n        \n    case \"waitingForTrigger\":\n    case \"waitingForOKFail\":\n        // do nothing\n        break;\n}\nnode.status( `${stat.queue.length} ${stat.state}` )\ncontext.set(\"stat\", stat, store)\nreturn null;\n\n// Called when message to be queued is received\nfunction handleMessage(msg, stat) {\n    //node.warn(\"handleMessage\")\n    // push a clone onto the queue\n    stat.queue.push(RED.util.cloneMessage(msg))\n    // limit number in queue\n    const max = Number(env.get(\"maxQueue\"))\n    if (!isNaN(max) && max > 0) {\n        // max length hit, remove oldest\n        if (stat.queue.length > max) stat.queue.shift()\n    }\n    // Simulate a trigger event to handle any state change needed\n    handleTrigger(stat)\n}\n\n// Called to send the next message off the queue if any, but leaves it on queue\nfunction sendMsg(stat) {\n    //node.warn(\"sendMsg\")\n    let thisMsg = stat.queue[0]\n    if (thisMsg) {\n        // send a clone\n        //node.warn(\"sending\")\n        node.send(RED.util.cloneMessage(thisMsg))\n        stat.state = \"waitingForOKFail\"\n    } else {\n        // nothing in queue\n        stat.state = \"waitingForMsg\"\n    }\n}\n\n// Called when OK response received\nfunction handleOK(stat) {\n    //node.warn(\"handleOK\")\n    // ignore if in wrong state\n    if (stat.state === \"waitingForOKFail\") {\n        // OK received so drop the top message \n        stat.queue.shift()\n        // set the state to waiting for message, which will allow the next one to be sent\n        stat.state = \"waitingForMsg\"\n    } else {\n        node.warn(\"Ignoring unnexpected OK\")\n    }\n}\n\n// Called when FAIL response received\nfunction handleFAIL(stat) {\n    //node.warn(\"handleFAIL\")\n    // ignore if in wrong state\n    if (stat.state === \"waitingForOKFail\") {\n        // FAIL received so go to waiting for trigger state\n        stat.state = \"waitingForTrigger\"\n    } else {\n        node.warn(\"Ignoring unnexpected FAIL\")\n    }\n}\n\n// Called when a trigger message is received or after a new incoming message is queued\nfunction handleTrigger(stat) {\n    //node.warn(\"handleTrigger\")\n    if (stat.state === \"waitingForTrigger\") {\n        //node.warn(\"state to waiting\")\n        // set it to watitingForMsg in order to trigger send \n        stat.state = \"waitingForMsg\"\n    }\n    // ignore for other states\n}","outputs":1,"noerr":0,"initialize":"","finalize":"","x":280,"y":80,"wires":[[]]},{"id":"b4227ef182f4ebef","type":"change","z":"bdd7be38.d3b55","g":"5ed5dcc8ccf90bfa","name":"FAIL","rules":[{"t":"set","p":"control","pt":"msg","to":"FAIL","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":810,"y":4840,"wires":[["a500a548eac99f1f","c29d72a6228dcc80"]]},{"id":"a500a548eac99f1f","type":"link out","z":"bdd7be38.d3b55","g":"5ed5dcc8ccf90bfa","name":"","links":["e7642367d639d549"],"x":1185,"y":4840,"wires":[]},{"id":"e7642367d639d549","type":"link in","z":"bdd7be38.d3b55","g":"5ed5dcc8ccf90bfa","name":"","links":["a500a548eac99f1f"],"x":135,"y":4800,"wires":[["e54df0d3d9480ac9"]]},{"id":"ea94f646fa8e74e1","type":"comment","z":"bdd7be38.d3b55","g":"5ed5dcc8ccf90bfa","name":"Send MQTT messages to this link","info":"","x":210,"y":4700,"wires":[]},{"id":"c04777c7cc3990a0","type":"mqtt out","z":"bdd7be38.d3b55","g":"5ed5dcc8ccf90bfa","name":"","topic":"","qos":"1","retain":"false","respTopic":"","contentType":"","userProps":"","correl":"","expiry":"","broker":"e3d45312.a3103","x":710,"y":4740,"wires":[]},{"id":"81428d3bcae766ee","type":"trigger","z":"bdd7be38.d3b55","g":"5ed5dcc8ccf90bfa","name":"Timeout 5 secs","op1":"","op2":"0","op1type":"nul","op2type":"num","duration":"5","extend":false,"overrideDelay":false,"units":"s","reset":"","bytopic":"all","topic":"topic","outputs":1,"x":660,"y":4840,"wires":[["b4227ef182f4ebef"]]},{"id":"86207c4b47bf3bd8","type":"comment","z":"bdd7be38.d3b55","g":"5ed5dcc8ccf90bfa","name":"Adjust timeout time if necessary","info":"","x":690,"y":4800,"wires":[]},{"id":"c458a09df04445f7","type":"complete","z":"bdd7be38.d3b55","g":"5ed5dcc8ccf90bfa","name":"MQTT Complete","scope":["c04777c7cc3990a0"],"uncaught":false,"x":180,"y":4940,"wires":[["753fc1cc8863871e","43a40f5eb76748ac"]]},{"id":"753fc1cc8863871e","type":"change","z":"bdd7be38.d3b55","g":"5ed5dcc8ccf90bfa","name":"","rules":[{"t":"set","p":"reset","pt":"msg","to":"true","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":400,"y":4840,"wires":[["81428d3bcae766ee"]]},{"id":"e54df0d3d9480ac9","type":"subflow:ae9c6995a156ff5c","z":"bdd7be38.d3b55","g":"5ed5dcc8ccf90bfa","name":"Guaranteed delivery test","env":[{"name":"maxQueue","value":"0","type":"num"}],"x":410,"y":4740,"wires":[["81428d3bcae766ee","c04777c7cc3990a0","cf6c087e45a7fbbf"]]},{"id":"d13ea5ab5d57a0a7","type":"join","z":"bdd7be38.d3b55","g":"5ed5dcc8ccf90bfa","name":"","mode":"custom","build":"object","property":"payload","propertyType":"msg","key":"key","joiner":"\\n","joinerType":"str","accumulate":true,"timeout":"","count":"1","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":770,"y":4940,"wires":[["de21d8a733a9c353"]]},{"id":"43a40f5eb76748ac","type":"change","z":"bdd7be38.d3b55","g":"5ed5dcc8ccf90bfa","name":"key: completed, save topic and payload","rules":[{"t":"set","p":"key","pt":"msg","to":"completed","tot":"str"},{"t":"move","p":"payload","pt":"msg","to":"payload.data","tot":"msg"},{"t":"set","p":"payload.topic","pt":"msg","to":"topic","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":520,"y":4940,"wires":[["d13ea5ab5d57a0a7"]]},{"id":"cf6c087e45a7fbbf","type":"change","z":"bdd7be38.d3b55","g":"5ed5dcc8ccf90bfa","name":"key: sending, save topic and payload","rules":[{"t":"set","p":"key","pt":"msg","to":"sending","tot":"str"},{"t":"move","p":"payload","pt":"msg","to":"payload.data","tot":"msg"},{"t":"set","p":"payload.topic","pt":"msg","to":"topic","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":510,"y":4900,"wires":[["d13ea5ab5d57a0a7"]]},{"id":"de21d8a733a9c353","type":"function","z":"bdd7be38.d3b55","g":"5ed5dcc8ccf90bfa","name":"Check messages match","func":"/** Check that the message that is has been sent (completed) is the one that has just been passed to the MQTT node (sending)\n * payload.sending contains last msg sent to MQTT node\n * payload.completed contains msg indicated completed by MQTT node\n * in each case the payload contains topic of message and payload value in data\n */ \nconst previousKey = context.get(\"previousKey\") || \"\"\nconst thisKey = msg.key\n\n//node.warn(typeof msg.payload.sending.data)\nif (thisKey === \"completed\"  &&  previousKey === \"sending\") {\n    let equal = false           // whether messages are equivalent\n    // topics must be the same\n    if (msg.payload.sending.topic === msg.payload.completed.topic) {\n        if (typeof msg.payload.sending.data === \"string\") {\n            equal = compareDirect(msg.payload.sending.data, msg.payload.completed.data)\n        } else if (Buffer.isBuffer(msg.payload.sending.data)) {\n            equal = compareBuffers(msg.payload.sending.data, msg.payload.completed.data)\n        } else {\n            equal = compareJSON(msg.payload.sending.data, msg.payload.completed.data)\n        }\n    }\n    if (equal) {\n        msg.control = \"OK\"\n    } else {\n        msg.control = \"FAIL\"\n    }\n} else {\n    // out of sequence so ignore\n    msg = null\n}\ncontext.set(\"previousKey\", thisKey)\nreturn msg;\n\nfunction compareJSON(sending, completed) {\n    // compares JSON version of payload sent with that from the Complete node\n    return completed === JSON.stringify(sending)\n}\n\nfunction compareDirect(sending, completed) {\n    // directly compares payload sent with that from the Complete node\n    return completed === sending \n}\n\nfunction compareBuffers(sending, completed) {\n    // compares buffer payload sent with that from the Complete node\n    let answer = false\n    // check completed is also a buffer\n    if (Buffer.isBuffer(completed)) {\n        answer = Buffer.compare(sending, completed) === 0\n    }\n    return answer \n}","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":970,"y":4940,"wires":[["a500a548eac99f1f","c29d72a6228dcc80"]]},{"id":"2fb7f6196432da68","type":"link in","z":"bdd7be38.d3b55","g":"5ed5dcc8ccf90bfa","name":"Send to MQTT","links":[],"x":160,"y":4740,"wires":[["e54df0d3d9480ac9"]],"l":true},{"id":"e3d45312.a3103","type":"mqtt-broker","name":"","broker":"owl2.local","port":"1883","clientid":"tigger","autoConnect":true,"usetls":false,"protocolVersion":"4","keepalive":"60","cleansession":true,"autoUnsubscribe":true,"birthTopic":"tydwr/tigger/LWT","birthQos":"0","birthRetain":"true","birthPayload":"Online","birthMsg":{},"closeTopic":"tydwr/tigger/LWT","closeQos":"0","closePayload":"Offline","closeMsg":{},"willTopic":"tydwr/tigger/LWT","willQos":"0","willPayload":"Offline","willMsg":{},"sessionExpiry":""}]

Flow 2
[{"id":"72e9a4edb56a84a7","type":"group","z":"db2da7ec2cdcbc9c","name":"Sending emails","style":{"label":true},"nodes":["40032b86.16b0dc","9d7e52ff.9373a","98d72bd3.c5c98","78bcff9d.8c29c","eada5d9a.8c60e","87580f77.38e0a","75675144.54ee98","26ef1404.562c74","52c5b999.776288","a246571e.945ae8","406fad44.dfcbdc","be8e3686.b3db4"],"x":34,"y":39,"w":722,"h":362},{"id":"149380c1.63e107","type":"subflow","name":"Delivery subflow","info":"","category":"","in":[{"x":50,"y":81,"wires":[{"id":"62560ae6ab8737dc"}]}],"out":[{"x":420,"y":80,"wires":[{"id":"62560ae6ab8737dc","port":0}]}],"env":[{"name":"controlProperty","type":"str","value":"control","ui":{"label":{"en-US":"Property for OK or FAIL"},"type":"input","opts":{"types":["str","env"]}}},{"name":"OKValue","type":"str","value":"OK","ui":{"label":{"en-US":"Value of success"},"type":"input","opts":{"types":["str","num","bool","env"]}}},{"name":"FAILValue","type":"str","value":"FAIL","ui":{"label":{"en-US":"Value for failure"},"type":"input","opts":{"types":["str","num","bool","env"]}}},{"name":"retrySecs","type":"num","value":"60","ui":{"label":{"en-US":"Retry period (secs)"},"type":"input","opts":{"types":["num","env"]}}},{"name":"maxQueue","type":"num","value":"100","ui":{"label":{"en-US":"Max messages in queue"},"type":"input","opts":{"types":["str","num","env"]}}},{"name":"contextStore","type":"str","value":"default","ui":{"label":{"en-US":"Context Store to use"},"type":"input","opts":{"types":["str","env"]}}}],"color":"#DDAA99","status":{"x":420,"y":160,"wires":[{"id":"ed779289.25b5d8","port":0}]}},{"id":"602725f6.15eee4","type":"inject","z":"149380c1.63e107","name":"Retry ","props":[{"p":"${controlProperty}","v":"__trigger","vt":"str"}],"repeat":"${retrySecs}","crontab":"","once":false,"onceDelay":0.1,"topic":"","x":100,"y":181,"wires":[["62560ae6ab8737dc"]]},{"id":"ed779289.25b5d8","type":"status","z":"149380c1.63e107","name":"","scope":["62560ae6ab8737dc"],"x":300,"y":160,"wires":[[]]},{"id":"62560ae6ab8737dc","type":"function","z":"149380c1.63e107","name":"State machine","func":"let store = env.get(\"contextStore\")\nif (store === \"default\") store = null\nlet stat = context.get(\"stat\", store) || {state: \"initial\", queue: []}\n// can't use a switch here I think as need to compare against env value\nconst control = msg[env.get(\"controlProperty\")]\n\nif (control === env.get(\"OKValue\")) {\n    handleOK(stat)\n} else if (control === env.get(\"FAILValue\")) {\n    handleFAIL(stat)\n} else if (control === \"__trigger\") {\n    handleTrigger(stat)\n} else {\n    // no valid control value so must be incoming message\n    handleMessage(msg, stat)\n}\n//node.warn(`state: ${stat.state}`)\n// decide what to do next based on the new state\nswitch (stat.state) {\n    case \"initial\":\n    case \"waitingForMsg\":\n        sendMsg(stat)   // send next message if any\n        break;\n        \n    case \"waitingForTrigger\":\n    case \"waitingForOKFail\":\n        // do nothing\n        break;\n}\nnode.status( `${stat.queue.length} ${stat.state}` )\ncontext.set(\"stat\", stat, store)\nreturn null;\n\n// Called when message to be queued is received\nfunction handleMessage(msg, stat) {\n    //node.warn(\"handleMessage\")\n    // push a clone onto the queue\n    stat.queue.push(RED.util.cloneMessage(msg))\n    // limit number in queue\n    const max = Number(env.get(\"maxQueue\"))\n    if (!isNaN(max) && max > 0) {\n        // max length hit, remove oldest\n        if (stat.queue.length > max) stat.queue.shift()\n    }\n    // Simulate a trigger event to handle any state change needed\n    handleTrigger(stat)\n}\n\n// Called to send the next message off the queue if any, but leaves it on queue\nfunction sendMsg(stat) {\n    //node.warn(\"sendMsg\")\n    let thisMsg = stat.queue[0]\n    if (thisMsg) {\n        // send a clone\n        //node.warn(\"sending\")\n        node.send(RED.util.cloneMessage(thisMsg))\n        stat.state = \"waitingForOKFail\"\n    } else {\n        // nothing in queue\n        stat.state = \"waitingForMsg\"\n    }\n}\n\n// Called when OK response received\nfunction handleOK(stat) {\n    //node.warn(\"handleOK\")\n    // ignore if in wrong state\n    if (stat.state === \"waitingForOKFail\") {\n        // OK received so drop the top message \n        stat.queue.shift()\n        // set the state to waiting for message, which will allow the next one to be sent\n        stat.state = \"waitingForMsg\"\n    } else {\n        node.warn(\"Ignoring unnexpected OK\")\n    }\n}\n\n// Called when FAIL response received\nfunction handleFAIL(stat) {\n    //node.warn(\"handleFAIL\")\n    // ignore if in wrong state\n    if (stat.state === \"waitingForOKFail\") {\n        // FAIL received so go to waiting for trigger state\n        stat.state = \"waitingForTrigger\"\n    } else {\n        node.warn(\"Ignoring unnexpected FAIL\")\n    }\n}\n\n// Called when a trigger message is received or after a new incoming message is queued\nfunction handleTrigger(stat) {\n    //node.warn(\"handleTrigger\")\n    if (stat.state === \"waitingForTrigger\") {\n        //node.warn(\"state to waiting\")\n        // set it to watitingForMsg in order to trigger send \n        stat.state = \"waitingForMsg\"\n    }\n    // ignore for other states\n}","outputs":1,"noerr":0,"initialize":"","finalize":"","x":280,"y":80,"wires":[[]]},{"id":"40032b86.16b0dc","type":"link out","z":"db2da7ec2cdcbc9c","g":"72e9a4edb56a84a7","name":"","links":["eada5d9a.8c60e"],"x":715,"y":320,"wires":[]},{"id":"9d7e52ff.9373a","type":"change","z":"db2da7ec2cdcbc9c","g":"72e9a4edb56a84a7","name":"OK","rules":[{"t":"set","p":"control","pt":"msg","to":"OK","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":550,"y":320,"wires":[["40032b86.16b0dc"]]},{"id":"98d72bd3.c5c98","type":"change","z":"db2da7ec2cdcbc9c","g":"72e9a4edb56a84a7","name":"FAIL","rules":[{"t":"set","p":"control","pt":"msg","to":"FAIL","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":550,"y":360,"wires":[["40032b86.16b0dc"]]},{"id":"78bcff9d.8c29c","type":"inject","z":"db2da7ec2cdcbc9c","g":"72e9a4edb56a84a7","name":"Send test email","props":[{"p":"payload"},{"p":"topic","vt":"str"},{"p":"to","v":"someone@somewhere.com","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"email subject","payload":"This is the email contents","payloadType":"str","x":340,"y":80,"wires":[["52c5b999.776288"]]},{"id":"eada5d9a.8c60e","type":"link in","z":"db2da7ec2cdcbc9c","g":"72e9a4edb56a84a7","name":"","links":["40032b86.16b0dc"],"x":175,"y":280,"wires":[["406fad44.dfcbdc"]]},{"id":"87580f77.38e0a","type":"complete","z":"db2da7ec2cdcbc9c","g":"72e9a4edb56a84a7","name":"","scope":["be8e3686.b3db4"],"uncaught":false,"x":370,"y":320,"wires":[["9d7e52ff.9373a"]]},{"id":"75675144.54ee98","type":"catch","z":"db2da7ec2cdcbc9c","g":"72e9a4edb56a84a7","name":"","scope":["be8e3686.b3db4"],"uncaught":false,"x":350,"y":360,"wires":[["98d72bd3.c5c98"]]},{"id":"26ef1404.562c74","type":"link in","z":"db2da7ec2cdcbc9c","g":"72e9a4edb56a84a7","name":"Email delivery","links":["52c5b999.776288"],"x":95,"y":180,"wires":[["406fad44.dfcbdc"]]},{"id":"52c5b999.776288","type":"link out","z":"db2da7ec2cdcbc9c","g":"72e9a4edb56a84a7","name":"","links":["26ef1404.562c74"],"x":455,"y":80,"wires":[]},{"id":"a246571e.945ae8","type":"comment","z":"db2da7ec2cdcbc9c","g":"72e9a4edb56a84a7","name":"Send email messages to this link","info":"","x":190,"y":140,"wires":[]},{"id":"406fad44.dfcbdc","type":"subflow:149380c1.63e107","z":"db2da7ec2cdcbc9c","g":"72e9a4edb56a84a7","name":"Guaranteed delivery","env":[],"x":360,"y":180,"wires":[["be8e3686.b3db4"]]},{"id":"be8e3686.b3db4","type":"e-mail","z":"db2da7ec2cdcbc9c","g":"72e9a4edb56a84a7","server":"smtp.gmail.com","port":"465","authtype":"BASIC","saslformat":false,"token":"","secure":true,"tls":true,"name":"","dname":"","x":350,"y":260,"wires":[]},{"id":"1034d23a3ba16675","type":"group","z":"db2da7ec2cdcbc9c","name":"Publishing to MQTT","style":{"label":true},"nodes":["8bed187d18f1775d","d94bd0a592a3ad72","04f71eed39690546","7f547cec7932ba41","27fcfce0cae62640","7dca73f85662f315","fb17d270bf0b4b9a","0866631e9e6da383","1348e3d206d0cc83","cdd4ffb09922fef1","430d018a776903b1","34b76192fa82bed4"],"x":34,"y":439,"w":812,"h":322},{"id":"8bed187d18f1775d","type":"change","z":"db2da7ec2cdcbc9c","g":"1034d23a3ba16675","name":"FAIL","rules":[{"t":"set","p":"control","pt":"msg","to":"FAIL","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":670,"y":620,"wires":[["04f71eed39690546"]]},{"id":"d94bd0a592a3ad72","type":"change","z":"db2da7ec2cdcbc9c","g":"1034d23a3ba16675","name":"OK","rules":[{"t":"set","p":"control","pt":"msg","to":"OK","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":670,"y":720,"wires":[["04f71eed39690546"]]},{"id":"04f71eed39690546","type":"link out","z":"db2da7ec2cdcbc9c","g":"1034d23a3ba16675","name":"","links":["7f547cec7932ba41"],"x":795,"y":660,"wires":[]},{"id":"7f547cec7932ba41","type":"link in","z":"db2da7ec2cdcbc9c","g":"1034d23a3ba16675","name":"","links":["04f71eed39690546"],"x":155,"y":580,"wires":[["34b76192fa82bed4"]]},{"id":"27fcfce0cae62640","type":"link in","z":"db2da7ec2cdcbc9c","g":"1034d23a3ba16675","name":"Email delivery","links":["2090b139.480446","3e9920770783be4e"],"x":95,"y":520,"wires":[["34b76192fa82bed4"]]},{"id":"7dca73f85662f315","type":"comment","z":"db2da7ec2cdcbc9c","g":"1034d23a3ba16675","name":"Send MQTT messages to this link","info":"","x":190,"y":480,"wires":[]},{"id":"fb17d270bf0b4b9a","type":"mqtt out","z":"db2da7ec2cdcbc9c","g":"1034d23a3ba16675","name":"","topic":"","qos":"1","retain":"false","respTopic":"","contentType":"","userProps":"","correl":"","expiry":"","broker":"b11cbe817c4d2a5a","x":770,"y":540,"wires":[]},{"id":"0866631e9e6da383","type":"trigger","z":"db2da7ec2cdcbc9c","g":"1034d23a3ba16675","name":"Timeout 5 secs","op1":"","op2":"0","op1type":"nul","op2type":"num","duration":"5","extend":false,"overrideDelay":false,"units":"s","reset":"","bytopic":"all","topic":"topic","outputs":1,"x":520,"y":620,"wires":[["8bed187d18f1775d"]]},{"id":"1348e3d206d0cc83","type":"comment","z":"db2da7ec2cdcbc9c","g":"1034d23a3ba16675","name":"Adjust timeout time if necessary","info":"","x":570,"y":580,"wires":[]},{"id":"cdd4ffb09922fef1","type":"complete","z":"db2da7ec2cdcbc9c","g":"1034d23a3ba16675","name":"MQTT Complete","scope":["fb17d270bf0b4b9a"],"uncaught":false,"x":200,"y":720,"wires":[["430d018a776903b1","d94bd0a592a3ad72"]]},{"id":"430d018a776903b1","type":"change","z":"db2da7ec2cdcbc9c","g":"1034d23a3ba16675","name":"","rules":[{"t":"set","p":"reset","pt":"msg","to":"true","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":290,"y":640,"wires":[["0866631e9e6da383"]]},{"id":"34b76192fa82bed4","type":"subflow:149380c1.63e107","z":"db2da7ec2cdcbc9c","g":"1034d23a3ba16675","name":"Guaranteed delivery","x":320,"y":540,"wires":[["0866631e9e6da383","fb17d270bf0b4b9a"]]},{"id":"b11cbe817c4d2a5a","type":"mqtt-broker","name":"","broker":"localhost","port":"1883","clientid":"","autoConnect":true,"usetls":false,"protocolVersion":"4","keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","birthMsg":{},"closeTopic":"","closeQos":"0","closePayload":"","closeMsg":{},"willTopic":"","willQos":"0","willPayload":"","willMsg":{},"userProps":"","sessionExpiry":""}]

Expected Behavior
No response
Steps To Reproduce
No response
Example flow
No response
Environment

Node-RED version: 3.1.3
Node.js version: 20.5.1
npm version: 9.8.0
Platform/OS: Ubuntu 20.04
Browser: Edge

Removing the guaranteed delivery subflow instance from the first flow fixes the problem.  Both flows use the same subflow.

In addition to the above problem, if the email node is opened and closed then a red warning triangle appears complaining of Invalid Token.

Fixed via https://github.com/node-red/node-red/pull/4546
The email node validation is a separate matter and not part of this issue.

Should I open a new issue for the email node problem?

I see the email node issue has already been reported.  I have added an example which allows it to be replicated. https://github.com/node-red/node-red-nodes/issues/1043


Setting Up Apache Solr on Local Instance

I am currently in the process of installing a local version of readthedocs.org following the installation instructions http://read-the-docs.readthedocs.org/en/latest/install.html#solr-search-setup.
However, while trying to install and setup solr for search using the following command -- to generate the schema.xml file.
./manage.py build_solr_schema > $SOLR_PATH/solr/conf/schema.xml

However, instead of generating the schema.xml file, I get the following error.
Traceback (most recent call last):
   File "./manage.py", line 11, in <module>
   execute_from_command_line(sys.argv)
  File "/home/***/ford-env/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 399, in execute_from_command_line
  utility.execute()
  File "/home/***/ford-env/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 392, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/home/***/ford-env/local/lib/python2.7/site-packages/django/core/management/base.py", line 242, in run_from_argv
    self.execute(*args, **options.__dict__)
  File "/home/***/ford-env/local/lib/python2.7/site-packages/django/core/management/base.py", line 285, in execute
    output = self.handle(*args, **options)
  File "/home/***/ford-env/local/lib/python2.7/site-packages/haystack/management/commands/build_solr_schema.py", line 26, in handle
    schema_xml = self.build_template(using=using)
  File "/home/***/ford-env/local/lib/python2.7/site-packages/haystack/management/commands/build_solr_schema.py", line 52, in build_template
    c = self.build_context(using=using)
  File "/home/***/ford-env/local/lib/python2.7/site-packages/haystack/management/commands/build_solr_schema.py", line 38, in build_context
    raise ImproperlyConfigured("'%s' isn't configured as a SolrEngine)." % backend.connection_alias)

Am I missing a step? I can get my local rtd to run fine, just sans search functionality. Any help is appreciated.
I also posted this a couple of days ago as a stackoverflow question http://stackoverflow.com/questions/25333255/setting-up-apache-solr-on-local-instance-of-readthedocs-org

Solr is no longer supported. We have moved to Elastic Search.


Add support for malformed protobuf filenames

Not all existing protobuf files follow the convention of snake case for file names. We should ensure that we support any non erroneous format supported by the java and grpc protoc plugins.

CC: @AlexeySoshin

Do you want to take it, or should I?

You’re more than welcome to pick it up. Thanks again for bringing it to my attention.
We will need to verify what’s is considered valid by protoc-gen-java and match that.
Test proto files can be added to the test-api module. They can then have simple assertions added in the generator-tests module. Nothing fancy is needed since compilation will verify if the out is correct. That module will contain existing examples.
If you run into any issues of have any questions feel free to reach out


More info on Ratings page

This does a few things:

adds Skill Rating and Uncertainty directly. People were already solving sets of equation to get at it, let's not force them to.
Ties the color associated with the row to the difference in skill rating after the match (green on a win, red on a loss). This was previously done from delta(Balance Rating). Since that's capped at 0, the diffs would show 0 on wins, for example, in this case.
Adds notes on how Balance and Leaderboard ratings are calculated and displayed
Clarifies which rating is being taken for the peak/change summary calculations (it's balance).
While for many, Supreme Strait may be the name of the game, I still renamed the column from "Game" to "Map name" ;)

This is how it looks for me with http://localhost:4000/teiserver/battle/matches/ratings?filter=Team. I know the colors look weird, but I have a sneaking suspicion that it's because the skill ratings and changes for test data are being generated inconsistently, as two independent random numbers for each match entry, while one the former should (but it adds a fair bit of complexity so let's ignore that) be a cumulative sum of the latter.

I don't think it looks too noisy, but that's me :)
I was also iffy on whether delta uncertainty should be colored, as it most likely will always remain negative, but it's simpler that way and I don't think it hurts at all.

It does look somewhat too noisy but we've also made a specific choice to not show exact uncertainty levels to most players. The progression graph now shows some and I'm happy with that level as it's very understandable. I don't want to encourage issues from "a little bit of knowledge is a dangerous thing" portion in this regard.
I'll leave the PR open as I'm happy to discuss it but my gut feeling is this will end up being rejected.

May I ask why that specific choice was made? It's already something people are explicitly asking how to figure out. I was not aware of it, but okay - my primary goal here was to prevent the issue of rating pages like this for balance ratings below 0 before the clipping to [0, infty) operation, which have confused people in the past - myself included! Would any of these following solutions be acceptable?

Drop the uncertainty column and show the skill rating changes; use those to pick the color
Drop both the uncertainty and skill columns and show the leaderboard rating changes instead of the current balance rating changes
Revert to the current set of columns (keep the descriptions for Balance/Leaderboard so people can realize at a glance why their balance rating stays 0), show diffs for both Balance and Leaderboard. The latter is not in the database but it should be as simple as skill_change + 3 * uncertainty_change.

How about this? :)

This should be better. I previously mistakenly added a screenshot of my own current ratings on server4 😅

1 - Drop the uncertainty column and show the skill rating changes; use those to pick the color

This would be completely acceptable to me :)

This should now be ready for review :)


Investigate upgrading to latest jsdom version

We're on 20 and 24 was released in January. Maybe worth seeing what new features / perf improvements / bug fixes there are.
We just need to make jsdom version explicit in package.json if we want to upgrade.
https://www.npmjs.com/package/jsdom
https://github.com/jsdom/jsdom/releases

Closed as completed in #4318.


Update validation.php

Translation fix: minimal/maximal was messed up.
https://github.com/caouecs/Laravel4-lang/pull/319

Thanks


When the outline is closed, there are residual symbols

When the outline is closed, there are residual symbols
https://user-images.githubusercontent.com/43649186/217988432-21b91e1f-8b0d-4db8-89bd-8d6d1b4e37ff.mp4

Is this a problem with my terminal ？

I don't have this issue, but I'm on macOS. Windows terminals tend to be pretty terrible to be fair. Maybe try another terminal or a neovim gui wrapper like neovide or something.

+1 I have this problem as well on windows terminal. Resizing the Outline buffer from the right side of the screen also causes a mess, with a bunch of virtualtext or extmarks littering the sign column on the left hand side of the screen.
Despite whatever engineering faults windows terminal has I have no intention of switching and I haven't experienced this issue with any other plugins.

I met the same error on windows terminal.


fix: initialize typescript for providing typings

main.d.ts in root directory does nothing, i've checked with my vscode (doesn't provide completions and error checking for declared var). it has to be in the same directory with main.js (if only i know why you put main.d.ts in root directory tho?).

sorry for the commit before, now it is working.


Create RFP-10

Should we move to 3-digit RFP numbers (e.g. RFP-010) to keep folder sorting consistent? There are very few references outside this repo so should be easy to make the change.

I considered re-doing the numbering  when I opened this branch. Potential problem: changing file names may break any direct links. I suspect they are few, however.


Z-index Issue: Dropdowns Display Behind Dialog Overlay

In the existing preset file located at plugins/panda/src/theme/tokens/z-index.ts, there appears to be an issue with the z-index values assigned to the dropdown and dialog components. Currently, the z-index value for the dropdown component is lower than that of the dialog component.
This configuration results in an issue when a dropdown is placed within a dialog. When the dropdown is toggled, the items are displayed behind the dialog overlay, instead of being rendered on top as expected.

Remembered encountering this issue and had to remove the portal for combobox/select

@BigDog1400,
Thank you for taking the time to create this issue. I've adapted this list from Chakra on my positive experiences with it.
The problem you've described occurs when rendering a Select within a Dialog, which is obviously not correct.
The recommendation is to avoid using Portal unless necessary. You might be surprised at how often you can achieve the same results without using Portal, leading to cleaner code and fewer issues with z-index.
For further reading:
https://chakra-ui.com/community/recipes/z-index
https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_positioned_layout/Understanding_z-index/Stacking_context

I am away from my computer for testing it. But I guess that removing the Portal from the Select will solve this issue. If that's the case it may be worth to add an annotation in the documentation?

@BigDog1400
I've updated to examples to not show a Portal component as there is no requirement to render them.

Great 😃 Thanks 👍


chore: remove updatePendingPaymentsByWalletId from getBalance

this is handled both by trigger and in cron as a fallback.
eventually, this could be in the hourly cron (instead of daily)
cc @ntheile

note: to not merge until we have related event in trigger

@dolcalmi it's a good task I think if you want to pick it up (adding the event on trigger so we can merge this one)


Multiple source folders with a nested layout doesn't work

Expected behavior and actual behavior
I followed the example in the middleman-core/fixtures to setup a Middleman app with two source folders: source and nakama-docs. The root layout is source/layouts/layout.haml and the documentation layout is in nakama-docs/layouts/docs.haml and acts as a nested layout:
- wrap_layout :layout do
  = partial 'sidebar'
  = yield

When I render the website I get no page content at all (completely blank) on any page which uses the documentation layout as it's layout:
page '/docs/*', :layout => 'docs'

I'm not sure what needs to be done to have the page render. How can I debug it further because I get no errors at all with the development server (bundle exec middleman)?
Steps to reproduce the problem (from a clean middleman installation)
Create two source folders (as exemplified in the middleman-core/fixtures/multiple-sources-app example). Put a layout in source0 and a nested layout in source1. Render the page which expects the nested layout and see completely empty output in the browser.
Additional information

Ruby version: ruby 2.3.3p222 (2016-11-21 revision 56859) [x86_64-darwin14]
Middleman version: 4.2.0
OS version: Darwin localhost.local 14.5.0 Darwin Kernel Version 14.5.0: Mon Aug 29 21:14:16 PDT 2016; root:xnu-2782.50.6~1/RELEASE_X86_64 x86_64

I just found my answer here - https://forum.middlemanapp.com/t/is-nested-layouts-broken-with-haml/1296
My nested layout should look like:
= wrap_layout :layout do
  = partial 'sidebar'
  = yield


Save backlight state

I noticed that dinit does not save the backlight level when restarting or re-enabling. Could you please add such a service?
There are similar projects for OpenRC:  https://github.com/beatussum/save-backlight/blob/master/save-backlight
SystemD: https://github.com/systemd/systemd/blob/b56920e36c5692c0dde701bfb48330653a9c62c9/units/systemd-backlight%40.service.in
Best regards, Drsheppard01

In OpenRC service it's just drop into cache and it's daemon running with new booting

and? it doesn't handle like 90% of scenarios that may potentially arise
the correct implementation is in systemd and it's significantly more complex


Feature request: support more properties on Events

Currently Events only contain the "change" field, which is sometimes insufficient or inefficient to use.
For example, the window title change event already contains the new title of the current window, so it would make sense to expose that in the event directly. Otherwise we need extract the focussed window from the entire tree, which could be costly and also potentially add a race condition.
Or in the case of workspace change events, there is no way to get the previously selected workspace without keeping track of the current workspace by hand, which is error-prone and duplicate effort since the workspace change event already includes the "old" workspace.
It would be nice if the Event struct was expanded to add support for these other events (even as just a map[string]interface{}). Thoughts?

Agreed! I think the events should expose all the info that is sent along. Probably best just to create dedicated structs.


Allow customising the bisect formatter

Currently bisect runner has 2 formatters: https://github.com/rspec/rspec-core/blob/main/lib/rspec/core/invocations.rb#L46-L47
Since they are not configurable, currently we can only parse the result from either stdout or monkey patch the formatter's bisect_repro_command method to get the repro from bisect notifier: https://github.com/rspec/rspec-core/blob/main/lib/rspec/core/bisect/coordinator.rb#L35
Is it currently possible to add customized formatters to bisect runner? Or is it ok to put up a PR to support this feature?

Can you monkey patch Bisect#bisect_formatter_klass_for and return your own formatter class from it?

That's still monkey patch... Just wondering if there is a more official way or should be an official support for this 😅

Eventually, if there's demand. I can't really remember this request popping up while I contribute to RSpec.
It's a relatively small change code-wise, but that formatter part of the private API would have to be made public and documented.
I encourage you to monkey-patch for now, since there's low risk of this code to change, and if there's more people asking for to use custom bisect formatters, we'll consider accepting a PR.
It would be wonderful to describe your use case.

It would be wonderful to describe your use case.

@pirj thanks for your reply. The use case for us is to build a flaky test analyzer, which we first took out failed spec batches and put each one of them to our CI nodes with --bisect options to catch the issued spec example/file. At the end of the process, we would like to gather the end result after bisecting, which basically is the repro returning after bisect runner execution.

I think this is a reasonable request, the bisect formatter is not the same api as our normal formatters, but the same principles could be used to make this happen. I'm not sure it will be a priority for anyone on the core team but if you'd like to work on it @tubaxenor I'm happy to help review it.

I can try spend some time and work on this later this month, thanks for reopen this 🙇

Closing due to inactivity during the monorepo migration, but if someone wanted to revisit this they'd be welcome.


⚠ Bofrost.at has degraded performance

In 020de1d, Bofrost.at (https://www.bofrost.at) experienced degraded performance:

HTTP code: 200
Response time: 1501 ms

Resolved: Bofrost.at performance has improved in 6675b9c after 8 minutes.


Choose Coconut version

'provide an option to choose what Coconut version to use (or even "coconut-develop")'
Plans:

[ ] N/A

Will revisit later if needed.


Mandy add search function

change the listPosts.html for using cloneNode() to present each post as a card
change the script.js for adding searching function of listing posts

It has been deploy, can be demonstrated in this website.
https://mzhang-sps-summer22.appspot.com/listPosts.html

Add reviewers

Merge the branch has the filter function


Remove -composites=false since it appears unneeded.
Simplify references to current directory.
This will fail until https://github.com/go-gl/glfw/pull/148#issuecomment-152880115 is resolved.

https://github.com/go-gl/glfw/pull/148#issuecomment-152880115 has been resolved. Travis CI now passes, and this is ready to merge, just needs a LGTM. @slimsag, would you mind reviewing please?

Well, I just re-created this very change because I forgot I already did this work... :(

Closing in favor of #46 which supersedes this change.


Empty labels for some metrics

mq_log_bytes_required_for_media_recovery_megabytes
mq_log_bytes_occupied_by_reusable_extents_megabytes
mq_log_bytes_occupied_by_extents_waiting_to_be_archived_megabytes

This problem doesn't seem like a bug on mq-java-exporter side. These metrics, you've mentioned, are not implemented yet and are generated automatically (see #67). But still, the reason, labels are empty is because there are no values received from MQ for these metrics.

Small update: i've just checked, these metrics are generated with correct labels only when linear logging is enabled on MQ (these metrics are related to this type of logging, so it is quite logical).


feat: price chart wip

Description

Test plan

Related issues

Fixes #[issue number here]

Backwards compatibility

Closing as https://github.com/valora-inc/wallet/pull/4646 was closed. Will create a new branch off https://github.com/valora-inc/wallet/tree/tomm/act-990-0


delay is not working

I use the delay flag, but no matter what I enter it always refreshes every 3+- sec.
Doesn't seem to be used in the code? at least not in main

From their Readme: What this means for clerk, you won't get automatical checkout addition anymore just notifications of in stock inventory and the a browser open for you to add it to your cart. We added some basic randomization of request times too just in case.
I don't think -delay should be used with the last version.

but instead of querying every 3 sec I rather query every 30 sec or even 60 sec

Agreed. Despite the added randomization, the delay option should still work IMHO.

Should just parametrize it. Here's a quick hack.
diff --git a/main.go b/main.go
index 95f9391..1eef1c1 100644
--- a/main.go
+++ b/main.go
@@ -88,7 +88,8 @@ func main() {

        for {
                rand.Seed(time.Now().UnixNano())
-               n := rand.Intn(5)
+               n := rand.Intn(5) + 15
+               log.Println(fmt.Sprintf("sleep for duration %v", n))
                time.Sleep(time.Duration(n) * time.Second)

                info, err := rest.GetSkuInfo(*config.SKU, config.Locale, config.Currency, client)

Fixed by https://github.com/ianmarmour/nvidia-clerk/releases/tag/v2.8
Closing


Development play

Hey :)
Is there any release plan for the library? What are the plans for future development/features? Anything in the pipeline?

The library is currently in the maintenance mode. If there are any plans for new features, appropriate tasks will be added to the project board.


Feature/top right languages switcher

Card Number

14
53
26

Description
This PR includes:

[x] Languages Switcher at the top right page
[x] Added cn_ version of banners

Note: Content translation will update soon when client confirm what they want. Austin suggestion

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.1 out of 2 committers have signed the CLA.:white_check_mark: Fifciu:x: astaphobiaYou have signed the CLA already but the status is still pending? Let us recheck it.

Wrong PR


Add SSL certificate(s) for *.cf.rubygems.org

Forgive me if there's some other repository I should be filing this issue against.
production.cf.rubygems.org uses CloudFront (d2chzxaqi4y7f8.cloudfront.net), but it doesn't support https://. Same goes for other *.cf.rubygems.org things like staging.cf.rubygems.org.
I am happy to purchase (or donate the money for) an SSL certificate for *.cf.rubygems.org (or individual ones for each CF instance, if it makes better sense). AWS CloudFront supports SSL for free if you use SNI, so there's really no reason why not to enable it.

We're phasing out CloudFront. Last week we updated our Fastly config to go directly to S3 and we should be able to remove any other references as well.
Were you seeing these URLs in use somewhere?

Yes, both https://rubygems.org/pages/download and https://github.com/sstephenson/ruby-build/ use them.

I just opened https://github.com/rubygems/rubygems.org/pull/1026 to fix https://rubygems.org/pages/download

Awesome, thanks!

@reedloden I think we can close this, since all references to CloudFront have been removed.


Add py dependency

See https://github.com/henry0312/pytest-pycodestyle/issues/97, https://docs.pytest.org/en/stable/changelog.html#pytest-7-2-0-2022-10-23

Thank you!


How run the test suite locally

The issue resolved by this Pull Request:
Resolves #RHOAIENG-15407
Description of your changes:
Document how to run the test suite locally
Testing instructions
Read and execute the README.md commands
Checklist

[X] The commits are squashed in a cohesive manner and have meaningful messages.
[X] Testing instructions have been added in the PR body (for PRs involving changes that are not immediately obvious).
[X] The developer has manually tested the changes and verified that the changes work

/lgtm
/approve


Audio Switcher Client Issue

Details:
Audio Switcher
Version: <IP_ADDRESS>
Operating System: Microsoft Windows NT 6.2.9200.0 64-bit
Administrator Privileges: False
User Comments:
Had this error a few times now and noticed it only happens when the :Show Default Playback icon in tray" is selected.  It seems the icon is missing for my speakers not only in playback tab, but also in tray when I switch by clicking the icon in tray to switch to speakers....and then it throws this error...
Stacktrace:
System.IndexOutOfRangeException: Index was outside the bounds of the array.
   at FortyOne.AudioSwitcher.AudioSwitcher.RefreshTrayIcon()
   at FortyOne.AudioSwitcher.AudioSwitcher.RefreshNotifyIconItems()
   at FortyOne.AudioSwitcher.AudioSwitcher.RefreshPlaybackDevices()

Custom icons not showing in the application, then causing an error in the app.

#1557


[Flink-25600][table-planner] Support new statement set syntax in sql client and update docs

What is the purpose of the change
this pr is a follow up work of FLINK-25392, aims at adding support new statement set syntax in sql client and update related docs.
Brief change log
The new statement set will contain multi line statement which ends with ; in order to support such case, I do some refactor on the sql command parser
1. make extended command parsers support command end with ';'
2. support partial parsing in sql parser, converting incomplete statement to StagingOperation
3. LinerParser in sql client marks a statement as finished only when parsing succeed.
Verifying this change
This change added tests and can be verified as follows:

Added test on partial parsing
Added it test on new statement set
*Other refactor changes can be verified in existing tests. *

Does this pull request potentially affect one of the following parts:

Dependencies (does it add or upgrade a dependency): (no)
The public API, i.e., is any changed class annotated with @Public(Evolving): (no)
The serializers: (no)
The runtime per-record code paths (performance sensitive): (no)
Anything that affects deployment or recovery: JobManager (and its components), Checkpointing, Kubernetes/Yarn, ZooKeeper: (no)
The S3 file system connector: (no)

Documentation

Does this pull request introduce a new feature? (yes)
If yes, how is the feature documented? (docs)

@flinkbot run azure

waiting azure test result


fixed problem with kb_itr_get always returns iterator same as kb_itr_first

as kb_itr_get always returns an iterator from first;

Your proposed fix is incomplete. A correct solution is already in PR #73.
I created an issue (#141) for this bug with a test program that fails with this PR (but passes with PR73 provided that the kb_itr_get() is modified to use kb_itr_getp() which is introduced by PR#73)


Add section to dwc_mapping with some stats about the dataset

Such a section could be useful for populating the metadata. Examples:

Number of taxa, number of species

% of taxa over kingdoms and countries, with totals:

input_data %>%
  tabyl(input_country_code, input_kingdom) %>%
  adorn_totals("row") %>%
  adorn_percentages("row") %>%
  adorn_pct_formatting(rounding = "half up", digits = 0)

See https://github.com/trias-project/checklist-recipe/pull/18: decided not to implement this.


Where can I find ppi and enron dataset？

Describe the bug
hi-union-ppi.tsv and enron_slice_0.pkl are not found.
And when I use --bmname=[REDDIT-BINARY/Mutagenicity/Tox21_AHR],nothing happened，no ckpt exitsted.Where should I put these three datasets when they were downloaded manually.
Platform

OS: [e.g. Windows]
Python [e.g. 3.7]
Version [e.g. latest]

The REDDIT-BINARY/Mutagenicity/Tox21_AHR can be found at https://ls11-www.cs.tu-dortmund.de/staff/morris/graphkerneldatasets

Maybe you don’t train the model before explain it


Introduce a Settings class.

Coverage increased (+0.02%) to 81.284% when pulling 5acd0ddb17977ce7b98306c175ca635a4a2f586d on ubschmidt2:settings into 1de4496cc4bf0c6da6d3248667b413b4d9f42832 on census-instrumentation:master.

Codecov Report

Merging #837 into master will decrease coverage by 0.02%.
The diff coverage is 94.11%.

@@             Coverage Diff              @@
##             master     #837      +/-   ##
============================================
- Coverage     79.33%   79.31%   -0.03%
- Complexity      904      907       +3
============================================
  Files           156      157       +1
  Lines          3997     4002       +5
  Branches        375      375
============================================
+ Hits           3171     3174       +3
  Misses          749      749
- Partials         77       79       +2

Impacted Files
Coverage Δ
Complexity Δ

.../instrumentation/ContextTrampolineInitializer.java
100% <ø> (ø)
2 <0> (ø)
:arrow_down:

...nt/instrumentation/TraceTrampolineInitializer.java
100% <ø> (ø)
2 <0> (ø)
:arrow_down:

...in/java/io/opencensus/contrib/agent/AgentMain.java
91.3% <100%> (-1.29%)
4 <0> (-1)

...trib/agent/instrumentation/UrlInstrumentation.java
66.66% <100%> (ø)
3 <0> (ø)
:arrow_down:

...agent/instrumentation/ExecutorInstrumentation.java
84.21% <100%> (ø)
4 <0> (ø)
:arrow_down:

...b/agent/instrumentation/ThreadInstrumentation.java
62.5% <100%> (ø)
3 <0> (ø)
:arrow_down:

...ain/java/io/opencensus/contrib/agent/Settings.java
88.88% <88.88%> (ø)
4 <4> (?)

...census/implcore/trace/export/SpanExporterImpl.java
96.66% <0%> (-1.67%)
7% <0%> (ø)

Continue to review full report at Codecov.

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


chore(deps): update ci dependencies

This PR contains the following updates:

Package
Type
Update
Change

common-dev-assets

digest
d58f089 -> 7f9598e

github.com/IBM/platform-services-go-sdk
require
patch
v0.69.1 -> v0.69.2

github.com/terraform-ibm-modules/ibmcloud-terratest-wrapper
require
minor
v1.39.7 -> v1.40.3

Release Notes

IBM/platform-services-go-sdk (github.com/IBM/platform-services-go-sdk)
v0.69.2
Compare Source
Bug Fixes

Partner Center Sell: re-gen service after recent API definition changes (#358) (36d86ae)

terraform-ibm-modules/ibmcloud-terratest-wrapper (github.com/terraform-ibm-modules/ibmcloud-terratest-wrapper)
v1.40.3
Compare Source
Bug Fixes

fix various bugs related to stacks tests (#880) (dab2622)

v1.40.2
Compare Source
Bug Fixes

bug when recovering from panic (#879) (560ff7e)

v1.40.1
Compare Source
Bug Fixes

update bug fix for catalog types and add tests (#878) (9e659b0)

v1.40.0
Compare Source
Features

This update will allow correct overrides. Stack definitions inputs get overridden by catalog inputs which get overridden by test inputs. If no catalog product is specified we select the first one in the catalog.json. If no flavor is specified we select the first one in the catalog.json.Existing stack tests may need to be updated if CatalogProductName and CatalogFlavorName are not set as it will default to the first of each in the catalog json for the default values. (#877) (f28d49f)

Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.

[ ] If you want to rebase/retry this PR, check this box

This PR has been generated by Renovate Bot.

/run pipeline

/run pipeline

/run pipeline

/run pipeline

/run pipeline

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


Provide a control pannel

When #2 gets implemented, users will need a place to easily manage encrypt/unencrypt tasks.
Since they can build this themselves I think is better if the plugin includes some kind of control panel with  most common operations like:

[ ] Batch encryption based on a filter
[ ] Batch unencrypt based on a filter
[ ] List of encrypted tiddlers.

I'm not sure how this should look like.
Currently I have two fields, one per password with two ugly buttons, one for encrypt and other for decrypt, and a second text field to write the filter you want to use. Any idea to improve it is welcome. Here is a small screenshot:

@danielo515 I have to say that I think what you've got is pretty good.
It would be helpful if the tiddler listing indicated whether each tiddler was encrypted or not?
One possibility might be to add a button for bulk encryption to the search results in the filter tab of $:/AdvancedSearch, just like we do for export.

Nice working!!
When you say:

Currently I have two fields, one per password with two ugly buttons, one for encrypt and other for decrypt, and a second text field to write the filter you want to use.

...you mean "Currently I have two fields, one for the password with two [...]" - right? (I'm not nitpicking, I'm trying to make sure I understand).
Assuming you mean "for the", then I'm thinking:
Why are the buttons both showing at the same time? It will only make sense to do one of them, no? So maybe there could be some sensing mechanism to detect if the filter result is already encrypted (and then show button Decrypt) and vice versa. Or maybe this would not work with your solution.
(...and I guess a very polished version would either have the button/s grayed out, or even not showing at all, before there are any results to actually apply it to. Probably not worth spending time on.)
Does the layout reflect the workflow? Unless I misunderstand, one must first enter the filter and thereafter decide Encrypt/Decrypt. If so, I suggest putting the filter box above the buttons. Now, this would separate it from the filter result list - so maybe the password stuff could be to the right of the filter stuff. Like:

It would be helpful if the tiddler listing indicated whether each tiddler was encrypted or not?

+1

Hello @jermolene

@danielo515 I have to say that I think what you've got is pretty good.

Thank you  very much

It would be helpful if the tiddler listing indicated whether each tiddler was encrypted or not?

Yes. I though about that. I think the better approach is to use a listItemTemplate. Thank you for remind me that, I forgot about that idea already!

Hello @twMat

...you mean "Currently I have two fields, one for the password with two [...]" - right? (I'm not nitpicking, I'm trying to make sure I understand).

Yes, that is exactly what I mean. Thank you

Why are the buttons both showing at the same time? It will only make sense to do one of them, no? So maybe there could be some sensing mechanism to detect if the filter result is already encrypted (and then show button Decrypt) and vice versa. Or maybe this would not work with your solution.

The problem is that there is nothing that forces the results to be all encrypted or non encrypted. So it makes sense to have both buttons at the same time.

Unless I misunderstand, one must first enter the filter and thereafter decide Encrypt/Decrypt. If so, I suggest putting the filter box above the buttons.

That's correct, I like the idea but I don't like to have so many items in the same "row". I think you gave me a new idea:
Instead of displaying the input text for the password, just display both buttons (probably as icons) and when you cilck on one of them a drop-down to input the password appears.

Hello @twMat , @Jermolene
Taking with your suggestions in mind I created a second version. Now there is a lock icon and when you click it a popup that is opened. I'm not sure about where to place the popup, next to the lock button or below the search field.
Here are a couple of screenshots, please let me know what do you thing about it
Unexpanded

Popup next to button

Popup BELOW

I would also want to have the opinion of @felixhayashi

I would also want to have the opinion of @felixhayashi

:bowtie:
The popup idea is nice. If you use it, I would put it "below-left" of the unlock symbol

On the other hand, I think it is an essential part of the form and should be initially visible (as https://github.com/danielo515/TIddlywiki5-EncryptTiddlerPlugin/issues/3#issuecomment-88872735).
So tough decision ;)
-Felix

Hm. Having played around a bit with it in my own draging program I come to the conclusion that your first suggestion is probably best but putting the password + buttons row under the filter field.
It captures the workflow except that the filter result list is separated - but it is positioned so close that there should not be any confusion.
I'm not very fond of a popup here because I simply don't see a reason for it visually. If you insist on one, then I suggest to remove the visible frame+shading.
This also omits the need for a lock icon. I also note that it is not obvious if such an icon-lock should be opened or closed. Both/neither make sense here given that you have both Encrypt and Decrypt. Plus, the tiddler itself has this icon but there it symbolizes a status rather than an action.
(BTW, this makes me realize the X symbol also has double meaning in TW; close or make-empty. This is used elsewhere in TW though, so you should probably stick with it.)
You have decided to be generous to the user and write "Search via a filter expression", providing a link to what I assume is an explanation. If this is justified (and it probably is) then maybe a link to how one should actually Encrypt/Decrypt. As indicated in my initial post, it is a bit confusing with both commands available at the same time. For this it would be suitable with a popup (with frame+shading) as it is peripheral information and not the main feature. Could be a button with a questionmark or such.
Ok, just my opinions.

BTW, this makes me realize the X symbol also has double meaning in TW; close or make-empty

The plan was to consistently use "X" for close and the trashcan icon for destroy/make-empty, we should fix any inconsistencies.

Hello @twMat
I think that your ideas really makes sense. I leaved the idea of using a popup because, as you said, is a non-sense here. Also the password an encrypt/decrypt controls only appears when there is some filter written.
Here you can see the latest "implementation"

I also included @Jermolene suggestion to indicate if each tiddler is encrypted or not. This is indicated with the presence of a small padlock.


Help on implementation for point annotations.

Hi I was trying to use your code to implement the weak annotation section of your paper.
class AproLoss(nn.Module):
    def __init__(self):
        super().__init__()
        # partial cross entropy
        self.partialCE = SparseWeightedCE()
        # apro
        self.global_apro = Global_APro()
        self.local_apro = Local_APro(kernel_size=5, zeta_s=0.15) #set kernel_size and zeta_s
        self.mst = MinimumSpanningTree(Global_APro.norm2_distance)
        # pca n_component
        self.q = 1

    def compute_pca(self, x):
        B, C, H, W = x.shape
        pca_images = torch.empty((B, 1, H, W), device=x.device)
        for b in range(B):
            A = x[b, :, :, :].flatten(1).T
            U, S, V = torch.pca_lowrank(A, q=1)
            projection = torch.matmul(A, V)
            pca_images[b, :, :, :] = projection.T.reshape(1, H, W)

        # normalize
        # Min-max normalization
        min_vals = torch.min(pca_images, dim=0).values
        max_vals = torch.max(pca_images, dim=0).values
        # Avoid division by zero in case max == min
        normalized_ims = (pca_images - min_vals) / (max_vals - min_vals + 1e-10)
        return normalized_ims

    def forward(self, x, y_hat, y):
        # x: B, C, H, W
        # y_hat B, classes, H, W
        # partial cross entropy
        partial = self.partialCE(y_hat, y)
        # compute PCA
        # B, 1, H, W
        pca_imgs = self.compute_pca(x)

        # compute image tree
        img_mst_tree = self.mst(pca_imgs)

        # softmax y
        _, class_hat = torch.max(y_hat, dim=1)
        # Cls: B, H, W
        class_hat = class_hat.float()
        # y: B, H, W
        y = y.float()

        # psuedo label for global info
        soft_pseudo = self.global_apro(class_hat, pca_imgs, img_mst_tree, zeta_g=0.01)

        # labelled region only
        labelled_regions = (y != 0)

        # compute difference between psuedo labels and other
        loss_global_term = torch.abs(soft_pseudo-y) * labelled_regions
        # normalize the loss
        n_regions = labelled_regions.sum().clamp(min=1)
        loss_global = loss_global_term.sum() / n_regions

        # local term
        soft_pseudo = self.local_apro(pca_imgs, y, labelled_regions)
        loss_local_term = torch.abs(y - soft_pseudo) * labelled_regions
        loss_local_term = loss_local_term.sum() / labelled_regions.sum()
        loss_local = loss_local_term
        return partial + loss_global + loss_local

Is the above implementation correct?
I'm worried about a couple of things.

The tree / GP being inside the loss function, should they be in the model?
The shapes and sizes of my labels, in your example you sum over dim 1, 2, and 3. What shape is box regions?

Any help would be greatly appreciated, currently the loss looks like this.

Hi, @alfieroddan

The tree/GP is utilized solely in the loss function, not incorporated in the model.
In our implementation, the shape of box_mask_target is [box_num, 1, h, w].

Upon reviewing your implementation, I found some confusion,

The use of PCA is unnecessary in this context. Instead, you should directly construct a minimum spanning tree from the raw image, for example, by calling self.mst(raw_image).
The method aims to generate the pseudo labels of  unlabeled regions rather than labeled points.

To facilitate integration with your existing code, I have made some minor amendments and uploaded the updated code.
And I made some simple modifications to your code, you can pull the newest code and try it:
img_mst_tree = self.mst(raw_image)
soft_pseudo = self.global_apro(y_hat, raw_imgs, img_mst_tree, zeta_g=0.001)
soft_pseudo = self.global_apro(soft_pseudo, y_hat, img_mst_tree, zeta_g=0.05)
unlabelled_regions = (y == 0)
loss_global_term = torch.abs(soft_pseudo-y) *unlabelled_regions
n_regions = unlabelled_regions.sum().clamp(min=1)
loss_global = loss_global_term.sum() / n_regions

soft_pseudo = self.local_apro(raw_imgs, y)
loss_local_term = torch.abs(y - soft_pseudo) * unlabelled_regions
loss_local_term = loss_local_term.sum() / unlabelled_regions.sum()
loss_local = loss_local_term
return partial + loss_global + loss_local

The main codes are shown above, and there may be some minor issues that you need to adjust for your project.

Thanks for getting back to me so quickly,
Sorry I should've mentioned that PCA is done as my image has more then 3 channels.
This great, thank you very much. I will implement the changes.
By the way I had to modify the GP_cuda implementation to compile for Pytorch > 1.10. If you would like the changes let me know!

class AproLoss(nn.Module):
    def __init__(self):
        super().__init__()
        # partial cross entropy
        self.partialCE = SparseWeightedCE()
        # apro
        self.global_apro = Global_APro()
        self.local_apro = Local_APro(kernel_size=5, zeta_s=0.15) #set kernel_size and zeta_s
        self.mst = MinimumSpanningTree(Global_APro.norm2_distance)
        # pca n_component
        self.q = 1

    def compute_pca(self, x):
        B, C, H, W = x.shape
        # Reshape data for PCA (combine all dimensions except for the channels)
        data_reshaped = x.view(-1, C)

        # Mean centering
        mean_centered_data = data_reshaped - data_reshaped.mean(dim=0)

        # Compute covariance matrix
        cov_matrix = torch.mm(mean_centered_data.t(), mean_centered_data) / (data_reshaped.size(0) - 1)

        # Compute eigenvalues and eigenvectors
        eigenvalues, eigenvectors = torch.linalg.eigh(cov_matrix)

        # Select the eigenvector corresponding to the largest eigenvalue
        principal_component = eigenvectors[:, -3]

        # Project the data onto the principal component
        reduced_data = torch.mm(mean_centered_data, principal_component.unsqueeze(1))

        # Reshape back to the original batch, H, W (with 1 channel)
        pca_images = reduced_data.view(B, H, W).unsqueeze(1)

        # normalize
        # Min-max normalization
        min_vals = torch.min(pca_images, dim=0).values
        max_vals = torch.max(pca_images, dim=0).values
        # Avoid division by zero in case max == min
        normalized_ims = (pca_images - min_vals) / (max_vals - min_vals + 1e-10)
        return normalized_ims

    def forward(self, x, y_hat, y):
        # x: B, C, H, W
        # y_hat B, classes, H, W
        # partial cross entropy
        partial = self.partialCE(y_hat, y)
        # compute PCA
        # B, 1, H, W
        pca_imgs = self.compute_pca(x)

        # compute image tree
        img_mst_tree = self.mst(pca_imgs)

        # softmax y
        _, class_hat = torch.max(y_hat, dim=1)
        # Cls: B, H, W
        class_hat = class_hat.float()
        # y: B, H, W
        y = y.float()

        # psuedo label for global info
        soft_pseudo = self.global_apro(y_hat, pca_imgs, img_mst_tree, zeta_g=0.001)
        soft_pseudo = self.global_apro(soft_pseudo, y_hat, img_mst_tree, zeta_g=0.05)

        # unlabelled region only
        unlabelled_regions = (y == 0)

        # compute difference between psuedo labels and other
        loss_global_term = torch.abs(soft_pseudo-y) * unlabelled_regions
        # normalize the loss
        n_regions = unlabelled_regions.sum().clamp(min=1)
        loss_global = loss_global_term.sum() / n_regions

        # local term
        soft_pseudo = self.local_apro(pca_imgs, y)
        loss_local_term = torch.abs(y - soft_pseudo) * unlabelled_regions
        loss_local_term = loss_local_term.sum() / unlabelled_regions.sum()
        loss_local = loss_local_term
        return partial + loss_global + loss_local

class AproLightning(SparseSegLightning):
    def __init__(self,
                 net: Callable,
                 loss: Callable):
        super().__init__(
            net=net,
            loss=loss
        )

    def compute_loss(self, x, y_hat, target):
        return self.criterion(x, y_hat, target["mask"])

After implementing your changes, see above.
I have a couple of questions about input sizes which could be causing a problem.

Can the MST take in a 1 channel image?

You changed the global_apro() function to run twice, once with output logits (I think this should be output classes no? Doesn't work with logits, I changed to class values (class_hat (B, H, W) and the loss definitely seems to decrease but the output metrics are the same if you just the partial cross entropy.

Look forward to hearing your response.
If possible some pseudo code explaining like you do the README, but with point wise annotations would be great.

Sorry for the delayed reply.

A 1-channel image is acceptable; additionally, images with more than 3 channels are also fine.
Apologies for any confusion earlier in the code – there may have been a mix-up between y and y_hat. The code has been corrected below, and if I have any further misunderstandings, please let me know.

By the way, the purpose of the APro loss is to guide the y_hat using optimized pseudo labels; there's no need to convert these to class values.
   def forward(self, x, y_hat, y):
        # x: B, C, H, W
        # y_hat B, classes, H, W
        # partial cross entropy
        partial = self.partialCE(y_hat, y)
        # compute PCA
        # B, 1, H, W
        pca_imgs = self.compute_pca(x)

        # compute image tree
        # I think directly using x is also fine
        # img_mst_tree = self.mst(x)
        img_mst_tree = self.mst(pca_imgs)

        # y: B, H, W
        y = y.float()

        # psuedo label for global info
        # using low level feature
        soft_pseudo = self.global_apro(y_hat, pca_imgs, img_mst_tree, zeta_g=0.001)
        # using deep feature
        soft_pseudo = self.global_apro(soft_pseudo, y_hat, img_mst_tree, zeta_g=0.05)

        # unlabelled region only
        unlabelled_regions = (y == 0)

        # compute difference between generated psuedo labels and predicted one
        loss_global_term = torch.abs(soft_pseudo-y_hat) * unlabelled_regions
        # normalize the loss
        n_regions = unlabelled_regions.sum().clamp(min=1)
        loss_global = loss_global_term.sum() / n_regions

        # local term
        soft_pseudo = self.local_apro(pca_imgs, y_hat)
        loss_local_term = torch.abs(y_hat - soft_pseudo) * unlabelled_regions
        loss_local_term = loss_local_term.sum() / unlabelled_regions.sum()
        loss_local = loss_local_term
        return partial + loss_global + loss_local

Thanks so much for your help! Will try again with this :).


Automator: update<EMAIL_ADDRESS>dependency in<EMAIL_ADDRESS>

Generated by Automator - 2020-09-11T19:17:26+00:00

@istio-testing: The following test failed, say /retest to rerun all failed tests:

Test name
Commit
Details
Rerun command

unit-tests_istio_release-1.7
4c1320c2b42a2333193d1d3569b8a2e9d6f1b083
link
/test unit-tests_istio_release-1.7

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

/retest


Color customization: disable colors

Allow colors in workbench.colorCustomizations and editor.tokenColorCustomizations to be set to null/false/etc, to completely disable that colorization.
For example, if a color theme sets "diffEditor.removedTextBorder" to some value, I want to add a customization to set that to null/etc, and I want that to completely disable the border around removed text in the diff editor. Specifically, I tried using the Night Owl theme, but it adds borders around each removed line, which looks horrible. Setting the color to zero alpha does not work because there is still a border and that causes issues since removedTextBackground is semi-transparent. I want to be able to customize the theme so its as if the theme never set that property.
Default Dark+ diff editor :+1:

Default Dark+ with the border set to zero alpha :-1:

Night Owl :-1:

Night Owl with the border set to zero alpha :-1:

/duplicate of #128062


CV_bridge DIR error Install

I get this error when i try installing gpu_stereo_image_proc on my Jetson Xavier platform..
-- Could NOT find cv_bridge (missing: cv_bridge_DIR)
-- Could not find the required component 'cv_bridge'. The following CMake error indicates that you either need to install the package with the same name or change your environment so that it can be found.
CMake Error at /opt/ros/melodic/share/catkin/cmake/catkinConfig.cmake:83 (find_package):
Could not find a package configuration file provided by "cv_bridge" with
any of the following names:
cv_bridgeConfig.cmake
cv_bridge-config.cmake

Add the installation prefix of "cv_bridge" to CMAKE_PREFIX_PATH or set
"cv_bridge_DIR" to a directory containing one of the above files.  If
"cv_bridge" provides a separate development package or SDK, be sure it has
been installed.
Call Stack (most recent call first):
gpu_stereo_image_proc/CMakeLists.txt:4 (find_package)
How Can I solve it? Thanks... I think CV_bridge has no support on ROS melodic in Ubuntu 18.04 especially ARM64 paltform

Hi, thank you for your report.
Have you installed cv-bridge on your Xavier?
I just logged in my Xavier and checked that cv-bridge package was available on L4T 32.2 (AARCH64 + Ubuntu 18.04).
Try the following command and feedback the result.
sudo apt install ros-melodic-cv-bridge

Thx.

More easily, you can try
rosdep install -y gpu_stereo_image_proc --rosdistro=melodic

to install all the ROS packages on which gpu_stereo_image_proc depends.

sudo apt install ros-melodic-cv-bridge

yes, i have been try to install with this script and getting an error
dpkg: error processing archive /var/cache/apt/archives/libopencv-dev_3.2.0+dfsg-4ubuntu0.1_arm64.deb (--unpack):
trying to overwrite '/usr/bin/opencv_version', which is also in package libopencv 3.3.1
Selecting previously unselected package ros-melodic-cv-bridge.
Preparing to unpack .../ros-melodic-cv-bridge_1.13.0-0bionic.20191009.142329_arm64.deb ...
Unpacking ros-melodic-cv-bridge (1.13.0-0bionic.20191009.142329) ...
Errors were encountered while processing:
/var/cache/apt/archives/libopencv-dev_3.2.0+dfsg-4ubuntu0.1_arm64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

to install all the ROS packages on which gpu_stereo_image_proc depends.

I trying another option with installing vision_OpenCV package for ROS too...
It's successfull to adding cv_bridge package, but the error change to imageproc.config
CMake Error at /opt/ros/melodic/share/catkin/cmake/catkinConfig.cmake:83 (find_package):
Could not find a package configuration file provided by "image_proc" with
any of the following names:
image_procConfig.cmake
image_proc-config.cmake

Add the installation prefix of "image_proc" to CMAKE_PREFIX_PATH or set
"image_proc_DIR" to a directory containing one of the above files.  If
"image_proc" provides a separate development package or SDK, be sure it has
been installed.
Can you told me the tutorial clearly to use your code? i need it for my study #thanks a lot

image_proc is another ROS package. http://wiki.ros.org/image_proc
Try rosdep install -y gpu_stereo_image_proc --rosdistro=melodic instead of installing dependencies one-by-one.

Can you told me the tutorial clearly to use your code?

Simply speaking, gpu_stereo_image_proc is just a replacement (i.g. GPU implementation) of existing stereo_image_proc package. http://wiki.ros.org/stereo_image_proc?distro=melodic
Basic usage is completely identical with stereo_image_proc package.
For example,

Launch your camera driver (you need to prepare them by your own), then
Launch stereo_image_proc node (libsgm_stereo_image_proc.launch or vx_stereo_image_proc.launch).

https://github.com/WHILL/gpu_stereo_image_proc/blob/cc9259f436ba5afca23c393002bc68bb3b03029d/package.xml#L19-L28
thanks a lot for the sharing


API service: add tests

What is the expected enhancement?
Add endpoint tests for API service.
Ref: https://www.django-rest-framework.org/api-guide/testing/#api-test-cases
Required to address JoSS review comments https://github.com/openjournals/joss-reviews/issues/5673#issuecomment-1679076266

[ ] unit test @AnsahMohammad
[ ] CI/tox @mickahell


Doesnt seem to work on my setup

Any idea what it can be?
I run a simple create-react-app setup

@vongohren what version of React are you using?

Must be < 16, because I see that I somehow set up the createContext polyfill incorrectly for pre-16 versions. Whoops
This line: https://github.com/ua-oira/react-super-responsive-table/blob/master/src/tableContext.js#L7
Should just be:
const { Provider, Consumer } = createContext({})

It would help to add explicit testing under React 15 as well in Travis. I think it's just testing the latest React now, so this kind of typo can go undetected.

@jasonphillips thats a straight up assumption :P And assumptions are straight out dangerous: https://medium.com/thrive-global/9-reasons-why-making-assumptions-is-dangerous-345e8b24008c
But no i do not just < 16 react.
This is my version "react": "^16.2.0".

@jasonphillips you are right that it is broken at < 15. I get the error @vongohren posted above. I'm about to fix it.
@vongohren I'm having trouble reproducing the error at react@16. I just tested the component using react-create-app and<EMAIL_ADDRESS>It works for me. Could you provide how you are using it, either the component or repo code?

Thanks for the response, we tried a different way to view our data so that is why I have not been able to test. Sorry for that.


Demo?

This sounds great - any chance you could put up a demo? Would like to add to react.rocks...thx.

Definitely next up :) This is my first component and Im still trying to
figure out how to package it for others. v 0.2.0 just gave a jsx to the
require and thats what im using. Looking at some other repos It seems like
that might not be kosher though so I published 0.3.0 which attempted to
transpile the jsx and supply a .js to the require. This is not working for
me and probably not working for anyone else?
As a consumer of the component what do you want?
On Fri, Jan 16, 2015 at 11:38 AM, Jeff Winkler<EMAIL_ADDRESS>wrote:

This sounds great - any chance you could put up a demo? Would like to add
to react.rocks...thx.
—
Reply to this email directly or view it on GitHub
https://github.com/jacobrosenthal/react-wizard/issues/1.

Can you push 0.3.0 to github so we can help you with the issue?

oh thought I had. Done now.

simple example with no css in master now

examples with css now. Demo next

First pass guidelines for writing a demo - https://github.com/winkler1/rawgit_it/wiki/One-weird-trick...to-get-people-to-use-your-open-source-stuff

Getting some warning on the command line regarding react-tools deprecation.
I am interested in something like this as a meteorjs package.


Draft: GCP deploy fixes

Fixes the issues mentioned in #787 to be able to deploy on GCP without any manual changes.

@simoneb The backend auth providers available are: auth0, azure-ad and cognito. The one that is provided in AUTH_PROVIDER env-var is initialized. If none is specified, the fallback one is auth0.
This causes problems on the production deployment, since no auth provider is specified there. So, the default will be auth0. But to use it, it needs additional settings (like AUTH0_DOMAIN).
On development, cognito is specified in the env-vars. This does not need additional values, so it initializes fine.
We can either set the default to cognito for both development and production. Or we can implement a dummy (in-memory) authorization provider as the default.

@simoneb The backend auth providers available are: auth0, azure-ad and cognito. The one that is provided in AUTH_PROVIDER env-var is initialized. If none is specified, the fallback one is auth0.
This causes problems on the production deployment, since no auth provider is specified there. So, the default will be auth0. But to use it, it needs additional settings (like AUTH0_DOMAIN).
On development, cognito is specified in the env-vars. This does not need additional values, so it initializes fine.
We can either set the default to cognito for both development and production. Or we can implement a dummy (in-memory) authorization provider as the default.

Understood. In that case it's ok to then initialize the env var.


Enable GWP-ASan to see additional debugging data in Crashlytics

The list of issues in the Crashlytics dashboard for Endless Key has a banner reading:

★ Your app has NDK crashes that can lead to security vulnerabilities. Enable GWP-ASan to see additional debugging data in Crashlytics Learn more ↗

Given how useless the C backtraces are (c.f. #124) I wonder if this might be worth doing. It is allegedly just a matter of changing the AndroidManifest.xml:
<application android:gwpAsanMode="always">
  ...
</application>

I believe the manifest is generated by p4a, and hence this probably means a change in .p4a.
Some simple googling of p4a "gwpAsanMode" doesn’t reveal the magic argument to put in there though.

Unfortunately I can’t see anything obvious in the p4a documentation about an argument which would add an attribute to <application>. The closest I can see is --meta-data, which adds a <meta-data> tag beneath <application>.

I think this is the template which p4a uses to generate AndroidManifest.xml. It doesn’t have the capability to add arbitrary attributes to <application>.
So either:

We need to find another way to enable gwpAsanMode
We need to use a custom template (if that’s possible)
p4a needs modifying to support gwpAsanMode as an option

For reference we are using our own fork of python-for-android at tag "v2022.09.04-endless9": https://github.com/endlessm/kolibri-installer-android/blob/899a5dbef2c1b1dfeb7f4dd0bc7392d7bfb6d01c/requirements.txt#L3
The p4a repo has multiple templates for the Android manifest. We are using the webview one. Here is an example in which we managed to tweak the template: https://github.com/endlessm/python-for-android/commit/e275da0a9a4ed798eba86cdc20ea60840b7fb099

Do we not upstream things to python-for-android?

We managed to upstream some (specially @dbnicholson), we failed to upstream some more. And to make things worse, we started our fork from Learning Equality's own fork of p4a. @dbnicholson is the one in the Platform team that may know the details.

Do we not upstream things to python-for-android?

I've definitely tried (and succeeded in most cases). The whole crashlytics thing should be upstreamed, but it is fairly complex in this case since it requires several pieces to work. For example, https://github.com/endlessm/python-for-android/pull/11 is a prerequisite for crashlytics and I wrote it as if I would send it upstream but never did.

@dbnicholson mentioned when we spoke about this that he believes that most of the crashes we're seeing are spurious and (IIUC) are caused by python-for-android unceremoniously terminating the process when it is time to quit.

Turns out p4a does have support for this in the --extra-manifest-application-arguments option. Except that it's basically undocumented and only in the sdl2 bootstrap. Thanks again, pythonforandroid. Should be easy to add it to the other bootstrap manifest templates and send upstream.

Once we're using https://github.com/endlessm/python-for-android/pull/18, it should be as simple as adding the following to .p4a:
--extra-manifest-application-arguments 'android:gwpAsanMode="always"'


Add _gpus_arg_default in argparse_utils for backward compatibility

What does this PR do?

Fixes #7400.
pytorch_lightning/utilities/argparse_utils.py was renamed to pytorch_lightning/utilities/argparse.py at PL 1.2.0.
A checkpoint saved in PL < 1.2 tries to use argparse.utils._gpus_arg_default() which does not exists in PL >= 1.2.0.
# pytorch_lightning/utilities/argparse_utils.py
from pytorch_lightning.utilities.argparse import *

The current solution for backward compatibility above does not work since the function starts with an underscore.
Before submitting

[ ] Was this discussed/approved via a GitHub issue? (not for typos and docs)
[x] Did you read the contributor guideline, Pull Request section?
[x] Did you make sure your PR does only one thing, instead of bundling different changes together?
[x] Did you make sure to update the documentation with your changes? (if necessary)
[ ] Did you write any new necessary tests? (not for typos and docs)
[x] Did you verify new and existing tests pass locally with your changes?
[x] Did you update the CHANGELOG? (not for typos, docs, test updates, or internal minor changes/refactorings)

PR review
Anyone in the community is free to review the PR once the tests have passed.
Before you start reviewing make sure you have read Review guidelines. In short, see the following bullet-list:

[x] Is this pull request ready for review? (if not, please submit in draft mode)
[ ] Check that all items from Before submitting are resolved
[ ] Make sure the title is self-explanatory and the description concisely explains the PR
[ ] Add labels and milestones (and optionally projects) to the PR so it can be classified

Did you have fun?
Make sure you had fun coding 🙃

I think a better solution is to set
__all__ = ['_gpus_arg_default'] in pytorch_lightning.utilities.argparse
since this file will be eventually removed

I thought of that solution, but the _gpus_arg_default is already unused and remains only for backward compatibility.
After the argparse_utils.py is removed at v1.4, there will be no other file that imports the function.

is already unused and remains only for backward compatibility.

I know, but I would say it's nicer to have both things together.

After the argparse_utils.py is removed at v1.4, there will be no other file that imports the function.

But if we remove this file in v1.4, will a checkpoint created before 1.2 be able to reload? As you said:

A checkpoint saved in PL < 1.2 tries to use argparse.utils._gpus_arg_default()

In future versions, before loading the checkpoint we need to monkey patch a dummy function onto the modules where it was used. The fact that this function got pickled into the checkpoints means we will forever have to track changes surrounding that. Horrific. :(

But if we remove this file in v1.4, will a checkpoint created before 1.2 be able to reload?

That is the real problem. Both of the solutions won't help when this file is removed.
There should be a monkey patch function as @awaelchli said, which is not easy.


Use inbuilt icu

[x] OSX Build -- Tobias-Fischer
[x] OSX ARM Build -- Tobias-Fischer
[x] Windows Build
[x] Linux Build -- hmaarrfk q server
[x] Linux arm Build -- hmaarrfk cf server

Checklist

[x] Used a personal fork of the feedstock to propose changes
[x] Bumped the build number (if the version is unchanged)
[ ] Reset the build number to 0 (if the version changed)
[x] Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)
[ ] Ensured the license file is being packaged.

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.

@conda-forge-admin, please rerender

See conversation in #6 for reasoning about this PR.
In short: All previous qt-webengine builds used inbuilt icu (by mistake) already. However, they pulled in icu as a host dependency (although that system/host icu was not being used). In turn, this constrained the versions of icu that qt-webengine was compatible with - without any reason.
This PR removes the icu dependency so that the inbuilt icu will be used AND the build will be compatible with any conda icu at runtime.
Fixes #6, needed for https://github.com/conda-forge/qt-feedstock/pull/227 to get the latest qt-main and qt-webengine.

This PR would require a rebuild for all platforms.

This PR is ready for review @conda-forge/qt-webengine @andfoy @hmaarrfk

Ok, i added a delegation list above.

As a note to others, system provided ICU was never used in previous builds due to a missing compiler flag.

linux_aarch64.zip

osx-64 build logs:
osx-64.zip
build: https://anaconda.org/TobiasRobotics/qt-webengine/files (cfep03 label)

osx-arm64 build logs:
osx-arm64.zip
build: https://anaconda.org/TobiasRobotics/qt-webengine/files (cfep03 label)

I'm attempting to build windows now. it may take a while.

Windows build logs:
win_64_log.zip
https://anaconda.org/mark.harfouche/qt-webengine/files

I guess i have to review logs and stuff. Will do tonight.

osx-arm64 build after @isuruf review comment logs:
osx-arm64-new.zip
build (force overwritten the previous build as hash did not change): https://anaconda.org/TobiasRobotics/qt-webengine/files (cfep03 label)

Thanks everybody!


Question: Auto-annotate in background

Hello, I have a technical question.
While I am annotating with labelme, my PC has plenty of resources idle.
Therefore I would like to run automatic annotation while I am working in labelme.
Here are the features I would like to implement

Create an annotate directory and an auto-annotate directory

annotate directory will be used to annotate in labelme (same behavior as before)
auto-annotate directory saves the result of auto-annotation in the background

After the annotation work in labelme is finished, wait until auto annotation is finished and move the contents of the auto-annotate directory to the annotate directory

Can you tell me what files I should edit to implement these features?

@nyxrobotics I do not fully grasp why you want to create two folders, as you can annotate the automatically generates masks from the original annotate folder.
Yet, any changes regarding auto-annotate should be done in: https://github.com/pieterblok/maskal/blob/1f40d97d5fb96781b3f9f2225bb1e436d66c1585/active_learning/sampling/prepare_dataset.py#L924

Closing this issue due to inactivity...


Document modes

The APA7 LaTeX package actually offers four different modes (journal-like appearance, double-spaced manuscript, double-spaced student manuscript, LaTeX-like document). It would be good to offer some of these:

[ ] journal-like appearance
[ ] double-spaced manuscript
[ ] single-spaced document

Presumably the implementation is just to provide a base format (double-spaced manuscript?), and two shortcuts to set options to match the other modes.

Use doc, man, and jou as shortcuts for setting the appropriate layout/style but also allow user to override any setting (e.g. font).

Make sure everything also works in two column mode (e.g. full-width content; https://github.com/typst/typst/issues/2360).


Update Slide.js

Coverage remained the same at 100.0% when pulling 8a02660509e705bfedb0edce69c49439c54fb99a on shvaikalesh:patch-1 into 2b17ab724d2fd2805b4e53b5efb761caba59f193 on kittikjs:dev.


DatasetSuperGroup.write_backed() currently broken

backed writing currently does not work. An incomplete list of problems:

.write_backed() expects DatasetSuperGroup.adata to be an actual adata object, not just a propertiy that concatenates on the fly
there is quite a bit of redundant code that handles streamlining in the write_backed() function which can be removed and checked if .streamline_features() and .streamline_metadata() have been called before

Also note that the DAO backend is likely favourable over using composite backed objects. It probably makes sense to keep maintaining this but I would not heavily optimise it. I also agree that after the streamlining code is removed, this should be very little code, similar to write_dao.


Contributing: nvm arguments are different under Windows

Originally posted by @chalin in https://github.com/open-telemetry/opentelemetry.io/issues/1066#issuecomment-1019306352:

Thanks for the feedback @mic-max. It's unfortunate that the nvm command for Windows accepts different arguments. I'll see how we can capture that in the instructions.

References:

https://github.com/coreybutler/nvm-windows
https://docs.microsoft.com/en-us/windows/dev-environment/javascript/nodejs-on-windows

@chalin Can we add above URLs in the document section ?

Thanks for the ping @rahuldimri. I had something in mind already, see #1603.


ApacheCloudStackClient: Allows connection timeout to be specified

Allows a custom connection timeout (in seconds) to be specified
Uses a default connection timeout of 60 seconds

Ping @rafaelweingartner for review

Can one of the admins verify this patch?

add to whitelist

@rafaelweingartner thanks for the review, I've updated the PR per your suggestions. Please re-review.

@rafaelweingartner thanks, changes fixed now. Please re-review.

@rafaelweingartner alright fixed the unit test too, please accept it and help create the 1.0.4 release with the changes. Thanks.

@rhtyd please squash the commits

@rafaelweingartner done (ps. there is a way to squash and merge the PR in the Github UI?)

@rhtyd not that I know of.
Is there?

Thanks @rafaelweingartner
Yes, see:

Aha, I never clicked on this arrow before. I would always clicked on the green and shine button and get the merge commit box.
BTW: I just merged and closed the version. There is a delay of 30-60 min. until the jar gets into the maven central repo.

Thanks @rafaelweingartner looking forward to using the 1.0.4 release!


negate(Bool) -> Bool

negate
negate() negates a Bool value
Not sure if that's the best name for the op?
Motivation for inclusion
Especially when working with UI you need to show/hide controls - the problem is that the same observable (let's say shouldShowSearchBar) will drive both the visibility of a search and the fact that some buttons will not be hidden - I get to use that often and I think having a map {!$0} for each case gets very verbose.
Example of usage
shouldShowSearchBar.bindTo(searchBar.rx_firstResponder) //true will make the bar first responder
shouldShowSearchBar.negate().bindTo(searchResults.rx_hidden) //true -> false will **unhide** the view

the operator could also work on Observable<Int> or Observable<Double> but I think this won't be a common use case, what do you guys think?

ReactiveCocoa uses not, I think it's a better name

Something like this?
extension ObservableType where E: BooleanType {
    /// Boolean not operator
    @warn_unused_result(message="http://git.io/rxs.uo")
    public func not() -> Observable<Bool> {
        return self.map { value -> Bool in
            return !value
        }
    }
}

extension Driver where Element: BooleanType {
    /// Boolean not operator
    @warn_unused_result(message="http://git.io/rxs.uo")
    public func not() -> Driver<Bool> {
        return self.map { value -> Bool in
            return !value
        }
    }
}

Perfect, care to push it to repo? Maybe send a PR, and we may need to put things in

Oh BTW Driver is RxCocoa - We discussed doing a second repository (RxCocoa+Ext) for RxCocoa, so maybe the driver version should be left out for now

Grr... This is where I wish there was some way to define operators that can be used on both Observable and Driver. But yeah I'll leave the Driver not operator out.

The jury is not out on this. We can discuss it with @kzaher on the RxSwift Slack and see how we move forward. I can see how splitting things can be a pain, although we also need to think about the server side and people who do not include RxCocoa.

It's somewhat out. https://github.com/ReactiveX/RxSwift/issues/496
I agree with everything that @kzaher said there. I don't think there is a better way than what's currently in place, especially if Driver is not the only Unit. Maybe there's some way to opt into operators, like a mixin or trait.

@thanegill will you find the time to do a PR with this operator?