Bringing two lines after a statement   that is before a closing brace gives the wrong result  in CSharp

if I have the following code:
namespace System
{
    class P
    {
        static void Main()
        {
            Bit t = new Bit { State = true };
            Bit f = new Bit { State = false };

            Nybble n0 = new Nybble() { Bits = new Bit[4] { f, f, f, f } };
            Nybble n1 = new Nybble() { Bits = new Bit[4] { f, f, f, t } };
            Nybble n2 = new Nybble() { Bits = new Bit[4] { f, f, t, f } };
            Nybble n3 = new Nybble() { Bits = new Bit[4] { f, f, t, t } };
            Nybble n4 = new Nybble() { Bits = new Bit[4] { f, t, f, f } };
            Nybble n5 = new Nybble() { Bits = new Bit[4] { f, t, f, t } };
            Nybble n6 = new Nybble() { Bits = new Bit[4] { f, t, t, f } };
            Nybble n7 = new Nybble() { Bits = new Bit[4] { f, t, t, t } };
            Nybble n8 = new Nybble() { Bits = new Bit[4] { t, f, f, f } };
            Nybble n9 = new Nybble() { Bits = new Bit[4] { t, f, f, t } };
            Nybble n10 = new Nybble() { Bits = new Bit[4] { t, f, t, f } };
            Nybble n11 = new Nybble() { Bits = new Bit[4] { t, f, t, t } };
            Nybble n12 = new Nybble() { Bits = new Bit[4] { t, t, f, f } };
            Nybble n13 = new Nybble() { Bits = new Bit[4] { t, t, f, t } };
            Nybble n14 = new Nybble() { Bits = new Bit[4] { t, t, t, f } };
            Nybble n15 = new Nybble() { Bits = new Bit[4] { t, t, t, t } };

            HByte b0 = new HByte() { Nybbles = new Nybble[2] { n0, n0 } };
            HByte b1 = new HByte() { Nybbles = new Nybble[2] { n0, n1 } };
            HByte b2 = new HByte() { Nybbles = new Nybble[2] { n0, n2 } };
            HByte b3 = new HByte() { Nybbles = new Nybble[2] { n0, n3 } };
            HByte b4 = new HByte() { Nybbles = new Nybble[2] { n0, n4 } };
            HByte b5 = new HByte() { Nybbles = new Nybble[2] { n0, n5 } };
            HByte b6 = new HByte() { Nybbles = new Nybble[2] { n0, n6 } };
            HByte b7 = new HByte() { Nybbles = new Nybble[2] { n0, n7 } };
            HByte b8 = new HByte() { Nybbles = new Nybble[2] { n0, n8 } };
            HByte b9 = new HByte() { Nybbles = new Nybble[2] { n0, n9 } };
            HByte b10 = new HByte() { Nybbles = new Nybble[2] { n0, n10 } };
            HByte b11 = new HByte() { Nybbles = new Nybble[2] { n0, n11 } };
            HByte b12 = new HByte() { Nybbles = new Nybble[2] { n0, n12 } };
            HByte b13 = new HByte() { Nybbles = new Nybble[2] { n0, n13 } };
            HByte b14 = new HByte() { Nybbles = new Nybble[2] { n0, n14 } };
            HByte b15 = new HByte() { Nybbles = new Nybble[2] { n0, n15 } };
            HByte b16 = new HByte() { Nybbles = new Nybble[2] { n1, n0 } };
            HByte b17 = new HByte() { Nybbles = new Nybble[2] { n1, n1 } };
            HByte b18 = new HByte() { Nybbles = new Nybble[2] { n1, n2 } };
            HByte b19 = new HByte() { Nybbles = new Nybble[2] { n1, n3 } };
            HByte b20 = new HByte() { Nybbles = new Nybble[2] { n1, n4 } };
            HByte b21 = new HByte() { Nybbles = new Nybble[2] { n1, n5 } };
            HByte b22 = new HByte() { Nybbles = new Nybble[2] { n1, n6 } };
            HByte b23 = new HByte() { Nybbles = new Nybble[2] { n1, n7 } };
            HByte b24 = new HByte() { Nybbles = new Nybble[2] { n1, n8 } };
            HByte b25 = new HByte() { Nybbles = new Nybble[2] { n1, n9 } };
            HByte b26 = new HByte() { Nybbles = new Nybble[2] { n1, n10 } };
            HByte b27 = new HByte() { Nybbles = new Nybble[2] { n1, n11 } };
            HByte b28 = new HByte() { Nybbles = new Nybble[2] { n1, n12 } };
            HByte b29 = new HByte() { Nybbles = new Nybble[2] { n1, n13 } };
            HByte b30 = new HByte() { Nybbles = new Nybble[2] { n1, n14 } };
            HByte b31 = new HByte() { Nybbles = new Nybble[2] { n1, n15 } };
            HByte b32 = new HByte() { Nybbles = new Nybble[2] { n2, n0 } };
            HByte b33 = new HByte() { Nybbles = new Nybble[2] { n2, n1 } };
            HByte b34 = new HByte() { Nybbles = new Nybble[2] { n2, n2 } };
            HByte b35 = new HByte() { Nybbles = new Nybble[2] { n2, n3 } };
            HByte b36 = new HByte() { Nybbles = new Nybble[2] { n2, n4 } };
            HByte b37 = new HByte() { Nybbles = new Nybble[2] { n2, n5 } };
            HByte b38 = new HByte() { Nybbles = new Nybble[2] { n2, n6 } };
            HByte b39 = new HByte() { Nybbles = new Nybble[2] { n2, n7 } };
            HByte b40 = new HByte() { Nybbles = new Nybble[2] { n2, n8 } };
            HByte b41 = new HByte() { Nybbles = new Nybble[2] { n2, n9 } };
            HByte b42 = new HByte() { Nybbles = new Nybble[2] { n2, n10 } };
            HByte b43 = new HByte() { Nybbles = new Nybble[2] { n2, n11 } };
            HByte b44 = new HByte() { Nybbles = new Nybble[2] { n2, n12 } };
            HByte b45 = new HByte() { Nybbles = new Nybble[2] { n2, n13 } };
            HByte b46 = new HByte() { Nybbles = new Nybble[2] { n2, n14 } };
            HByte b47 = new HByte() { Nybbles = new Nybble[2] { n2, n15 } };
            HByte b48 = new HByte() { Nybbles = new Nybble[2] { n3, n0 } };
            HByte b49 = new HByte() { Nybbles = new Nybble[2] { n3, n1 } };
            HByte b50 = new HByte() { Nybbles = new Nybble[2] { n3, n2 } };
            HByte b51 = new HByte() { Nybbles = new Nybble[2] { n3, n3 } };
            HByte b52 = new HByte() { Nybbles = new Nybble[2] { n3, n4 } };
            HByte b53 = new HByte() { Nybbles = new Nybble[2] { n3, n5 } };
            HByte b54 = new HByte() { Nybbles = new Nybble[2] { n3, n6 } };
            HByte b55 = new HByte() { Nybbles = new Nybble[2] { n3, n7 } };
            HByte b56 = new HByte() { Nybbles = new Nybble[2] { n3, n8 } };
            HByte b57 = new HByte() { Nybbles = new Nybble[2] { n3, n9 } };
            HByte b58 = new HByte() { Nybbles = new Nybble[2] { n3, n10 } };
            HByte b59 = new HByte() { Nybbles = new Nybble[2] { n3, n11 } };
            HByte b60 = new HByte() { Nybbles = new Nybble[2] { n3, n12 } };
            HByte b61 = new HByte() { Nybbles = new Nybble[2] { n3, n13 } };
            HByte b62 = new HByte() { Nybbles = new Nybble[2] { n3, n14 } };
            HByte b63 = new HByte() { Nybbles = new Nybble[2] { n3, n15 } };
            HByte b64 = new HByte() { Nybbles = new Nybble[2] { n4, n0 } };
            HByte b65 = new HByte() { Nybbles = new Nybble[2] { n4, n1 } };
            HByte b66 = new HByte() { Nybbles = new Nybble[2] { n4, n2 } };
            HByte b67 = new HByte() { Nybbles = new Nybble[2] { n4, n3 } };
            HByte b68 = new HByte() { Nybbles = new Nybble[2] { n4, n4 } };
            HByte b69 = new HByte() { Nybbles = new Nybble[2] { n4, n5 } };
            HByte b70 = new HByte() { Nybbles = new Nybble[2] { n4, n6 } };
            HByte b71 = new HByte() { Nybbles = new Nybble[2] { n4, n7 } };
            HByte b72 = new HByte() { Nybbles = new Nybble[2] { n4, n8 } };
            HByte b73 = new HByte() { Nybbles = new Nybble[2] { n4, n9 } };
            HByte b74 = new HByte() { Nybbles = new Nybble[2] { n4, n10 } };
            HByte b75 = new HByte() { Nybbles = new Nybble[2] { n4, n11 } };
            HByte b76 = new HByte() { Nybbles = new Nybble[2] { n4, n12 } };
            HByte b77 = new HByte() { Nybbles = new Nybble[2] { n4, n13 } };
            HByte b78 = new HByte() { Nybbles = new Nybble[2] { n4, n14 } };
            HByte b79 = new HByte() { Nybbles = new Nybble[2] { n4, n15 } };
            HByte b80 = new HByte() { Nybbles = new Nybble[2] { n5, n0 } };
            HByte b81 = new HByte() { Nybbles = new Nybble[2] { n5, n1 } };
            HByte b82 = new HByte() { Nybbles = new Nybble[2] { n5, n2 } };
            HByte b83 = new HByte() { Nybbles = new Nybble[2] { n5, n3 } };
            HByte b84 = new HByte() { Nybbles = new Nybble[2] { n5, n4 } };
            HByte b85 = new HByte() { Nybbles = new Nybble[2] { n5, n5 } };
            HByte b86 = new HByte() { Nybbles = new Nybble[2] { n5, n6 } };
            HByte b87 = new HByte() { Nybbles = new Nybble[2] { n5, n7 } };
            HByte b88 = new HByte() { Nybbles = new Nybble[2] { n5, n8 } };
            HByte b89 = new HByte() { Nybbles = new Nybble[2] { n5, n9 } };
            HByte b90 = new HByte() { Nybbles = new Nybble[2] { n5, n10 } };
            HByte b91 = new HByte() { Nybbles = new Nybble[2] { n5, n11 } };
            HByte b92 = new HByte() { Nybbles = new Nybble[2] { n5, n12 } };
            HByte b93 = new HByte() { Nybbles = new Nybble[2] { n5, n13 } };
            HByte b94 = new HByte() { Nybbles = new Nybble[2] { n5, n14 } };
            HByte b95 = new HByte() { Nybbles = new Nybble[2] { n5, n15 } };
            HByte b96 = new HByte() { Nybbles = new Nybble[2] { n6, n0 } };
            HByte b97 = new HByte() { Nybbles = new Nybble[2] { n6, n1 } };
            HByte b98 = new HByte() { Nybbles = new Nybble[2] { n6, n2 } };
            HByte b99 = new HByte() { Nybbles = new Nybble[2] { n6, n3 } };
            HByte b100 = new HByte() { Nybbles = new Nybble[2] { n6, n4 } };
            HByte b101 = new HByte() { Nybbles = new Nybble[2] { n6, n5 } };
            HByte b102 = new HByte() { Nybbles = new Nybble[2] { n6, n6 } };
            HByte b103 = new HByte() { Nybbles = new Nybble[2] { n6, n7 } };
            HByte b104 = new HByte() { Nybbles = new Nybble[2] { n6, n8 } };
            HByte b105 = new HByte() { Nybbles = new Nybble[2] { n6, n9 } };
            HByte b106 = new HByte() { Nybbles = new Nybble[2] { n6, n10 } };
            HByte b107 = new HByte() { Nybbles = new Nybble[2] { n6, n11 } };
            HByte b108 = new HByte() { Nybbles = new Nybble[2] { n6, n12 } };
            HByte b109 = new HByte() { Nybbles = new Nybble[2] { n6, n13 } };
            HByte b110 = new HByte() { Nybbles = new Nybble[2] { n6, n14 } };
            HByte b111 = new HByte() { Nybbles = new Nybble[2] { n6, n15 } };
            HByte b112 = new HByte() { Nybbles = new Nybble[2] { n7, n0 } };
            HByte b113 = new HByte() { Nybbles = new Nybble[2] { n7, n1 } };
            HByte b114 = new HByte() { Nybbles = new Nybble[2] { n7, n2 } };
            HByte b115 = new HByte() { Nybbles = new Nybble[2] { n7, n3 } };
            HByte b116 = new HByte() { Nybbles = new Nybble[2] { n7, n4 } };
            HByte b117 = new HByte() { Nybbles = new Nybble[2] { n7, n5 } };
            HByte b118 = new HByte() { Nybbles = new Nybble[2] { n7, n6 } };
            HByte b119 = new HByte() { Nybbles = new Nybble[2] { n7, n7 } };
            HByte b120 = new HByte() { Nybbles = new Nybble[2] { n7, n8 } };

            HChar c0 = new HChar() { Code = b0 };
            HChar c1 = new HChar() { Code = b1 };
            HChar c2 = new HChar() { Code = b2 };
            HChar c3 = new HChar() { Code = b3 };
            HChar c4 = new HChar() { Code = b4 };
            HChar c5 = new HChar() { Code = b5 };
            HChar c6 = new HChar() { Code = b6 };
            HChar c7 = new HChar() { Code = b7 };
            HChar c8 = new HChar() { Code = b8 };
            HChar c9 = new HChar() { Code = b9 };
            HChar c10 = new HChar() { Code = b10 };
            HChar c11 = new HChar() { Code = b11 };
            HChar c12 = new HChar() { Code = b12 };
            HChar c13 = new HChar() { Code = b13 };
            HChar c14 = new HChar() { Code = b14 };
            HChar c15 = new HChar() { Code = b15 };
            HChar c16 = new HChar() { Code = b16 };
            HChar c17 = new HChar() { Code = b17 };
            HChar c18 = new HChar() { Code = b18 };
            HChar c19 = new HChar() { Code = b19 };
            HChar c20 = new HChar() { Code = b20 };
            HChar c21 = new HChar() { Code = b21 };
            HChar c22 = new HChar() { Code = b22 };
            HChar c23 = new HChar() { Code = b23 };
            HChar c24 = new HChar() { Code = b24 };
            HChar c25 = new HChar() { Code = b25 };
            HChar c26 = new HChar() { Code = b26 };
            HChar c27 = new HChar() { Code = b27 };
            HChar c28 = new HChar() { Code = b28 };
            HChar c29 = new HChar() { Code = b29 };
            HChar c30 = new HChar() { Code = b30 };
            HChar c31 = new HChar() { Code = b31 };
            HChar c32 = new HChar() { Code = b32 };
            HChar c33 = new HChar() { Code = b33 };
            HChar c34 = new HChar() { Code = b34 };
            HChar c35 = new HChar() { Code = b35 };
            HChar c36 = new HChar() { Code = b36 };
            HChar c37 = new HChar() { Code = b37 };
            HChar c38 = new HChar() { Code = b38 };
            HChar c39 = new HChar() { Code = b39 };
            HChar c40 = new HChar() { Code = b40 };
            HChar c41 = new HChar() { Code = b41 };
            HChar c42 = new HChar() { Code = b42 };
            HChar c43 = new HChar() { Code = b43 };
            HChar c44 = new HChar() { Code = b44 };
            HChar c45 = new HChar() { Code = b45 };
            HChar c46 = new HChar() { Code = b46 };
            HChar c47 = new HChar() { Code = b47 };
            HChar c48 = new HChar() { Code = b48 };
            HChar c49 = new HChar() { Code = b49 };
            HChar c50 = new HChar() { Code = b50 };
            HChar c51 = new HChar() { Code = b51 };
            HChar c52 = new HChar() { Code = b52 };
            HChar c53 = new HChar() { Code = b53 };
            HChar c54 = new HChar() { Code = b54 };
            HChar c55 = new HChar() { Code = b55 };
            HChar c56 = new HChar() { Code = b56 };
            HChar c57 = new HChar() { Code = b57 };
            HChar c58 = new HChar() { Code = b58 };
            HChar c59 = new HChar() { Code = b59 };
            HChar c60 = new HChar() { Code = b60 };
            HChar c61 = new HChar() { Code = b61 };
            HChar c62 = new HChar() { Code = b62 };
            HChar c63 = new HChar() { Code = b63 };
            HChar c64 = new HChar() { Code = b64 };
            HChar c65 = new HChar() { Code = b65 };
            HChar c66 = new HChar() { Code = b66 };
            HChar c67 = new HChar() { Code = b67 };
            HChar c68 = new HChar() { Code = b68 };
            HChar c69 = new HChar() { Code = b69 };
            HChar c70 = new HChar() { Code = b70 };
            HChar c71 = new HChar() { Code = b71 };
            HChar c72 = new HChar() { Code = b72 };
            HChar c73 = new HChar() { Code = b73 };
            HChar c74 = new HChar() { Code = b74 };
            HChar c75 = new HChar() { Code = b75 };
            HChar c76 = new HChar() { Code = b76 };
            HChar c77 = new HChar() { Code = b77 };
            HChar c78 = new HChar() { Code = b78 };
            HChar c79 = new HChar() { Code = b79 };
            HChar c80 = new HChar() { Code = b80 };
            HChar c81 = new HChar() { Code = b81 };
            HChar c82 = new HChar() { Code = b82 };
            HChar c83 = new HChar() { Code = b83 };
            HChar c84 = new HChar() { Code = b84 };
            HChar c85 = new HChar() { Code = b85 };
            HChar c86 = new HChar() { Code = b86 };
            HChar c87 = new HChar() { Code = b87 };
            HChar c88 = new HChar() { Code = b88 };
            HChar c89 = new HChar() { Code = b89 };
            HChar c90 = new HChar() { Code = b90 };
            HChar c91 = new HChar() { Code = b91 };
            HChar c92 = new HChar() { Code = b92 };
            HChar c93 = new HChar() { Code = b93 };
            HChar c94 = new HChar() { Code = b94 };
            HChar c95 = new HChar() { Code = b95 };
            HChar c96 = new HChar() { Code = b96 };
            HChar c97 = new HChar() { Code = b97 };
            HChar c98 = new HChar() { Code = b98 };
            HChar c99 = new HChar() { Code = b99 };
            HChar c100 = new HChar() { Code = b100 };
            HChar c101 = new HChar() { Code = b101 };
            HChar c102 = new HChar() { Code = b102 };
            HChar c103 = new HChar() { Code = b103 };
            HChar c104 = new HChar() { Code = b104 };
            HChar c105 = new HChar() { Code = b105 };
            HChar c106 = new HChar() { Code = b106 };
            HChar c107 = new HChar() { Code = b107 };
            HChar c108 = new HChar() { Code = b108 };
            HChar c109 = new HChar() { Code = b109 };
            HChar c110 = new HChar() { Code = b110 };
            HChar c111 = new HChar() { Code = b111 };
            HChar c112 = new HChar() { Code = b112 };
            HChar c113 = new HChar() { Code = b113 };
            HChar c114 = new HChar() { Code = b114 };
            HChar c115 = new HChar() { Code = b115 };
            HChar c116 = new HChar() { Code = b116 };
            HChar c117 = new HChar() { Code = b117 };
            HChar c118 = new HChar() { Code = b118 };
            HChar c119 = new HChar() { Code = b119 };
            HChar c120 = new HChar() { Code = b120 };

            //72 101 108 108 111 32 87 111 114 108 100
            Console.WriteLine(c72.ToChar() + "" + c101.ToChar() + c108.ToChar() + c108.ToChar() + c111.ToChar() + c32.ToChar() + c87.ToChar() + c111.ToChar() + c114.ToChar() + c108.ToChar() + c100.ToChar());
            Console.ReadLine();
        }

        public static string FixString(string s, int length)
        {
            return s.Length < length ? FixString("0" + s, length) : s;
        }

    }

    class HChar
    {
        private HByte code;

        public HChar()
        {
            code = new HByte();
        }

        public HByte Code
        {
            get
            {
                return code;
            }
            set
            {
                code = value;
            }
        }

        public char ToChar()
        {
            return (char)Convert.ToUInt32(code + "", 2);
        }

        public override string ToString()
        {
            return base.ToString();
        }

    }

    struct Bit
    {
        private bool state;

        public bool State
        {
            get
            {
                return state;
            }
            set
            {
                state = value;
            }
        }

        public override string ToString()
        {
            return state ? "1" : "0";
        }
    }

    class Nybble
    {
        private Bit[] bits;

        public Nybble()
        {
            bits = new Bit[4];
        }

        public Bit[] Bits
        {
            get
            {
                return bits;
            }
            set
            {
                bits = value;
            }
        }

        public static Nybble Parse(string s)
        {
            s = P.FixString(s, 4);

            Nybble n = new Nybble();

            for (int i = 0; i < 4; i++)
            {
                n.bits[i].State = s[i] == '1';
            }

            return n;
        }

        public override string ToString()
        {
            Text.StringBuilder sb = new Text.StringBuilder();

            foreach (Bit b in bits )
            {
                sb.Append(b + "");
            }

            return sb + "";
        }
    }

    class HByte
    {
        private Nybble[] nybbles;

        public HByte()
        {
            nybbles = new Nybble[2];
        }

        public Nybble[] Nybbles
        {
            get
            {
                return nybbles;
            }
            set
            {
                nybbles = value;
            }
        }

        public static HByte SetAsByte(byte b)
        {
            var hb = new HByte();
            hb.Nybbles[0] = Nybble.Parse(Convert.ToString((byte)(b << 4) >> 4, 2));
            hb.Nybbles[1] = Nybble.Parse(Convert.ToString((b >> 4), 2));
            return hb;
        }

        public static HByte Parse(string s)
        {
            s = P.FixString(s, 8);
            var hb = new HByte();
            for (int i = 0; i < 2; i++)
                hb.Nybbles[i] = Nybble.Parse(s.Substring(i * 4, 4));
            return hb;
        }

        public override string ToString()
        {
            return nybbles[0] + "" + nybbles[1];
        }
    }
}

With the following hats painted:

If I say "bring two lines green air after urge" I'll get the following result:

So instead of putting those two lines after the return statement it puts them after the closing brace I noticed this behavior after the big upgrade cursorless had recently.

This one bites me as well, but is just cursorless inference working as intended. The "two lines" modifier gets applied to both "green air" and "urge", so the lines get placed after "two lines urge"
You can say "bring two lines green air after line urge" instead
@AndreasArvidsson does this one hit you much? I'm hesitant to add any exceptions to inference, but I wonder if "n scopes" combined with "bring after" is one we want to do, and infer just "scope" instead of "n scopes" in that case 🤔

That makes sense. Now that you have explained why it's happening I know what to do to avoid it. I think we should leave it as it is to maintain consistency.

I can't really remember if this has bitten me before. There is definitely some special cases around positional targets and inheritance that we might want to explore further.


Dimensionless base unit

This is some demo code to add DimensionlessUnit and also an implicit conversion between DimensionlessUnit and double.
The DimensionlessUnit seems to work, but implicit conversion does not yet work.  I believe this is because it first needs to be converted from UnknownUnit back to DimensionlessUnit to have access to the implicit conversion (But I don't know how to do this, and even if I did it probably wouldn't compile).
Many suggestions welcome

Obviously not quite ready to merge....Wanted to get some review and comments.

Closing.  The root issue that this PR was attempting to address has been solved in main.  Dimensionless may be interesting to add at a later date, but I don't have a use case at the moment.


set appVersion to the spinnaker's version it's going to deploy

Hi guys,
I feel that the current appVersion is misleading since it looks like it is going to deploy 1.16 version which is a year old. This is quite noticable on the artifacthub page for this chart
When you create a helm chart using helm create you get the following description by default:
# This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application. Versions are not expected to
# follow Semantic Versioning. They should reflect the version the application is using.

Thus I think this value should be updated at the same time as you update the halyard.spinnakerVersion on the file values.yaml
kind regards,

Hi,
I have updated the PR so that if halyard.spinnakerVersion is not set, it uses the chart's appVersion:
{{ .Values.halyard.spinnakerVersion | default .Chart.AppVersion }}

This way just by updating the AppVersion the spinnaker version is going to be updated without having to update the value on several places
kind regards,

A chart's version may not match the application version. For example, a Spinnaker version may remain the same but the chart may be updated to enhance the deployment.
It is true that when a chart is updated, the appVersion should also be updated to track changes.

A chart's version may not match the application version. For example, a Spinnaker version may remain the same but the chart may be updated to enhance the deployment.
It is true that when a chart is updated, the appVersion should also be updated to track changes.


Adding DRIVETRAIN_SOC_KWH to ha_discovery

Adding the sensor soc_kwh to ha discovery

@Tonno87 did you check if this is correct?
SAIC API always reports  72.5kWh as total battery capacity, with a soc_kwh of  58.0 @ 80% SoC even for car with a different battery size (e.g. MG4 LUX has 64 kWh battery with a 51.2kWh capacity @ 80% SsoC)

I know that the value itself is false, but it's provided by the gateway and usable with the right factor.
My MG5 SR has 50,3 kWh, but only 47,6 kwh usable. So i need a factor of 0,657 to get a usable value for a template sensor (100% x 72,5kWh x 0,657 = 47,63kWh).
Not the best way, but usable... Another idea is to provide an adjustable factor by mqtt. So everyone can adjust the "right" value (e.g. after battery checkup or something).

Merged into 0.4.0-rc will be in main branch with the next release


Finetuning of Kaleido-BERT for Fashion Captioning Update

#6
During the fine-tuning on the image captioning task, Did you use any pre-training task (for e.g., AKPM, TIM and AMLM) along with the fashion captioning task i.e., given an image ( i.e., sequence of image patches generated by "Kaleido Patch Generator") predict the corresponding caption?

no, just input the image feature


Allow creation of mocks from the terminal

I would love to have the option to create CMock mocks from the terminal like ceedling mock:create[filename]

I would also like to use this feature.
However, to be aligned with other commands I think ceedling mock:[filename] would be better as it is then consistent with other Ceedling commands (i.e., ceedling test:[filename], ceedling gcov:[filename]).
To be even more consistent ceedling mock should then expand ceedling mock:all.

@cjoecker and @swaldhoer Can you explain what this feature achieves for you? What is your need to generate mocks independently of a build? Is the actual mock what you need or would specific details about what goes into a mock / how it's generated?

The base line is, we are using ceedling directly to run our unit tests, i.e., we run ceedling test:test_abc.
However, the actual test implementations need to be passed to the static program analysis (SPA) build for MISRA-C, CWA, and architecture verification and some other analysis.
Oversimplified, the SPA build is basically the same as the ceedling build, except that the compiler is not gcc but the SPA compiler.
This SPA build needs to compile and link, therefore we need the generated mocks to run the build step.
Currently one needs to run a full ceedling build, just to pass things to the SPA compiler.
Therefore running

ceedling mock:test_abc
SPA build commands

instead of

ceedling test:test_abc
SPA build

would save lots of time and would feel somewhat more logical in this steps context.

@mkarlesky we have some large files where we want to mock just some functions, not all. It would be useful to generate a mock file from the terminal to copy/paste the functions I want to mock somewhere else.

Ah ha. This is very helpful. Thank you.
With what we have planned for the future, generating individual mocks will not be terrifically hard. At the moment, it's not especially easy to crank out in light of other priorities. However, there is already plumbing that exists for a build-only test suite option that does everything except execute tests. This could be extended fairly easily to add a generation-only option as well where only file generation — mocks and runners (and preprocessed versions of files used as input for these) — happens.
I'll add this to the backlog. It will probably end up as a new feature added to the next minor point release following the massive release coming very, very soon.
I'm going to close this issue for now but know that it's in the backlog.


Update to swift 403

Update to swift403

Codecov Report

Merging #28 into master will increase coverage by 6.76%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master      #28      +/-   ##
==========================================
+ Coverage   72.79%   79.56%   +6.76%
==========================================
  Files           4        5       +1
  Lines         136      274     +138
  Branches        0        8       +8
==========================================
+ Hits           99      218     +119
- Misses         37       56      +19

Flag
Coverage Δ

#KituraCache
79.56% <ø> (+6.76%)
:arrow_up:

Impacted Files
Coverage Δ

Sources/KituraCache/AnyKey.swift
85.71% <0%> (-4.29%)
:arrow_down:

Sources/KituraCache/CacheObject.swift
76.92% <0%> (-0.86%)
:arrow_down:

Sources/KituraCache/Statistics.swift
100% <0%> (ø)
:arrow_up:

Tests/KituraCacheTests/TestCache.swift
93.02% <0%> (ø)

Sources/KituraCache/KituraCache.swift
71.15% <0%> (+1.24%)
:arrow_up:

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 b835bc4...eb4a33c. Read the comment docs.


feat: use generic Modal with render props

This PR extracts out the Modal functionality into a generic Modal component onto which actual views are rendered through render props.

Both of the existing modal components have few things in common:
1]They both overlay over existing page. Both have similar CSS design(rounded corners, shadows).
2]Both have some similar functions as well, both will go away when "save" is clicked. As for now one of them have cancellation feature but as we add more modals, this too can be a common functionality.
These things should be moved to a generic component. This modal will accept :
1]save click handler as a prop
2]isCancellable boolean prop to decide whether to enable the cancellable feature or not.
3]The actually view to render as render prop

Thank you so much!

Thenks a ton! @dartpain


Fix markdown in README.md

Fix tab indentation, strikethrough through tildes, and list fragmentation

thanks!


Option for Max-width centering threshold

Is your feature request related to a problem? Please describe.
The Pickr pop-up is always centered on the page instead of connected to the button if the browser window is too narrow.
Describe the solution you'd like
I assume the (matchMedia('(max-width: 576px)') line that switches the margins to auto and centers the popup is intended to make the picker work better on mobile devices, which is a fine idea, but I have a situation where I want the window that Pickr is being used in to be a narrow sidebar. It would be handy if the max-width value could be overridden with a configuration option instead of being hard coded.
Describe alternatives you've considered
Obviously I can manually tweak the max-width value myself in the source code, but that isn't a great solution.

That it gets centered on mobile devices wasn't my initial idea to be honest, it developed that way because I couldn't find a way to properly align it on mobile-devices (the scrolling works differently on mobile / desktop)... I'm open to any Idea of how to change it completely that way it works the same as on desktop :)
The (matchMedia('(max-width: 576px)') was basically just a cheap and fast way to "bypass" this issue...

No sure what would be a better solution for mobile, but in the spirit of cheap and fast solutions 😏  , it would be great if the matchMedia check could be made optional (or a configurable value) to handle the case of wanting to use Pickr in a narrow browser window.

The problem is the user-input is really messed up due to the browsers try to align the input field with the virtual-keyboard 😕:

Nano layout
Classic layout

@paul-lrr I'll try to come up with a solution in the next days (this issue really bugs me), otherwise I'll add an option to disable it :)

OK I've managed to come up with a (hopefully) working version, this time pickr will always try to stick to it's reference element (the button) - only if the user tries to change the input it'll center it if regular positioning fails, this way it works in scrollable containers (will disappear if out-of-view) but will be greatly visible during mobile / low-res screens user-input.
Updated in 6986a75b2c7028b34722527c5ad14b2bdefd6dd5, it's kinda complex and I'd love to get a feedback from you if everything works as expected (using the current dist-files) since I've only tested it locally and in the Environment of the demo-page!

That seems to be working great! I'm using the nano theme and the pop-up stays with the button regardless of the window width. 👍
On mobile (iPhone 11 running iOS 13) the popup also stays with the button. When I tap on the input field, the popup moves to the top of the screen but I assume this is to account for the for the keyboard. There is a small amount of positioning weirdness when I open the popup on mobile while zoomed in but I think that is a fairly narrow use case

Awesome! Yeah, zooming is currently not taken into account - gets even more weird to implement that...
Anyway, I've published 1.5.0 where this "update" is applied :)


Add support for .NET 7, 8

Support means builds (workflows) and specific package versions in .csproj

.NET 9 is too early, I will add that once most of the dependent packages add support for it


feat: customize execution via json file

allows customization of all previous command line arguments and all card model arguments via json.
definition can be done as a file or as a string
definition as a string is useful when using ankdown in a script.
because different attributes can be defined in different ways, prioritization is important
Prioritization from low to high:

default config within the code
config via json file
config via json string
config direct via comandline arguments

Ah, one more thing: Could you add a note to the README mentioning that you can configure these options?

Can I do that if the implementation is clear.

Can I do that if the implementation is clear.

When the options are removed, it would just be good if new users can easily see what the configuration syntax looks like, either in the README or in the docopt. An example config with both dollar and css options would be enough.


feat(locale-modal): link with icon replacement

Related Ticket(s)
#3648
#3652
Description
Replaced the button with a LinkWithIcon instead.
Before:

After:

Changelog
Changed

replaced button with dds-link-with-icon in Web Components
replaced icon and text with <LinkWithIcon> in React

@IgnacioBecerra looks like snapshots are out of date, can you update?


Godot 3.1 Beta: Mono Domain finalization timeout

Godot version:
3.1 Beta
OS/device including version:
MacBook Pro (Retina, 13-inch, Early 2015)
Mojave OS
Issue description:
Godot will sometimes crash on build, or on exit with the error
ERROR: _unload_scripts_domain: Mono: Domain finalization timeout
   At: modules/mono/mono_gd/gd_mono.cpp:713.

Native stacktrace:

	0   Godot                               0x0000000101fd28b4 mono_handle_native_crash + 1076
	1   Godot                               0x0000000101fe48ba mono_sigsegv_signal_handler + 282
	2   libsystem_platform.dylib            0x00007fff5e570b3d _sigtramp + 29
	3   ???                                 0x0000000000000001 0x0 + 1
	4   Godot                               0x0000000102b3df49 _ZN22RasterizerStorageGLES37TextureD2Ev + 57
	5   Godot                               0x0000000102b39397 _ZN22RasterizerStorageGLES34freeE3RID + 1719
	6   Godot                               0x00000001042c60cc _ZN18VisualServerRaster4freeE3RID + 28
	7   Godot                               0x0000000103e4ec0c _ZN13StreamTextureD2Ev + 44
	8   Godot                               0x00000001044f3926 _ZN6RefPtr5unrefEv + 54
	9   Godot                               0x000000010455a682 _ZN7Variant5clearEv + 114
	10  Godot                               0x0000000103d963dd _ZN10SceneStateD2Ev + 701
	11  Godot                               0x0000000103d8ea28 _ZN11PackedSceneD1Ev + 72
	12  Godot                               0x000000010262712c _Z30godot_icall_Reference_DisposedP11_MonoObjectP6Objectb + 188
	13  ???                                 0x0000000114cb23fb 0x0 +<PHONE_NUMBER>
	14  ???                                 0x0000000114cb228c 0x0 +<PHONE_NUMBER>
	15  Godot                               0x00000001020a4174 mono_gc_run_finalize + 676
	16  Godot                               0x000000010219c268 sgen_gc_invoke_finalizers + 232
	17  Godot                               0x00000001020a5c0f finalizer_thread + 479
	18  Godot                               0x0000000102161277 start_wrapper_internal + 375
	19  Godot                               0x00000001021610d7 start_wrapper + 71
	20  libsystem_pthread.dylib             0x00007fff5e579339 _pthread_body + 126
	21  libsystem_pthread.dylib             0x00007fff5e57c2a7 _pthread_start + 70
	22  libsystem_pthread.dylib             0x00007fff5e578445 thread_start + 13

Steps to reproduce:
It just happens randomly, I'm not sure how to reproduce. I can start a fresh project and see if I can reproduce it. I believe it has something to do with the networking code.
Let me know if you want my project for testing and I can DM you.

3.1 beta4 has just been released. Let me know when you have time if you the problem is still there in this new release.

It appears that beta4 fixes this issue! Have tested the problematic project multiple times with no crash

Hi. Sorry to bump this issue, it's only to give to all of you some information: this ERROR: Mono: Domain finalization timeout. message error with a very long native stacktrace can be reproduced if you have a QueueFree() call in a protected override void Dispose(bool disposing) method, and this Dispose method is called during the shutdown (with dispoing false) like this:
protected override void Dispose(bool disposing)
{
    _anyOtherRelateveObject.QueueFree();
    base.Dispose(disposing);
}


Corruptions in the Witcher 3 when vignetting is enabled

I noticed, that in The Witcher 3 I'm getting some rectangular graphical corruptions in the second world of Through Time and Space. Disabling vignetting removes the corruptions.

Here is the save of that location: tw3_save.tar.xz.zip
Note: all attached files are really tar.xz, but with added .zip to allow Github attaching.
Software information
The Witcher 3 GOTY, max settings, HBAO+, hairworks disabled, depth of field disabled.
System information

GPU: AMD Sapphire Pulse RX 5700 XT
Kernel / amdgpu: 5.6.7
Driver: radv/aco, Mesa 20.1.0-devel (git-9bc5b2d169) (NAVI10, DRM 3.36.0, 5.6.7, LLVM 11.0.0)
Wine version: 5.7 + esync patches
DXVK version: 1.6.1-6-6d5f5580

Corruption happens regardless of using aco or llvm.
Apitrace file(s)
Renderdoc frame: https://ufile.io/8aej0kbz
Log files
dxvk_logs.tar.xz.zip
If it's really a Mesa issue, I can open upstream bug.

You sure this isn't a driver bug?

Works fine on my Polaris.

It could be a driver bug, but interestingly it's not specific to aco or llvm - happens in both. May be amdgpu bug then? I can report it to Mesa/radv first.

Not all driver issues are necessarily compiler-related, could just be a general problem with RADV+Navi.

Does AMDVLK render coreectly?

Opened Mesa bug here.

Let me try amdvlk, I haven't built it in a long time.

amdvlk renders fine:

Interesting, if I load an older save and then load that save, the corruption goes away.

Closing since nobody seems to be able to reproduce this.


test: add some example in chunk_test.go and ioutil_test.go

What type of PR is this?
test

Check the PR title.

[ ] This PR title match the format: <type>(optional scope): <description>.
[ ] The description of this PR title is user-oriented and clear enough for others to understand.
[ ] Attach the PR updating the user documentation if the current PR requires user awareness at the usage level. User docs repo.

(Optional) Translate the PR title into Chinese.
为pkg/common/utils下的chunk_test.go和ioutil_test.go添加一些场景测试
(Optional) More detail description for this PR(en: English/zh: Chinese).

en: Supplement unit test for pkg/common/utils, coverage increased from 72.34% to 88.1%
zh(optional): 补充 pkg/common/utils 的单元测试，覆盖率从 72.34% 提高到了 88.1%。
(Optional) Which issue(s) this PR fixes:
Fixes #257

(Optional) The PR that updates user documentation:

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.


Add KD_Lib to implementations

KD_Lib is a library built over Pytorch to easily facilitate knowledge distillation for custom deep learning models.

Thank you for the contribution!


rclone versioning tests are skipped

See https://build.dev.storj.tools/blue/rest/organizations/jenkins/pipelines/gateway-st-gerrit/runs/2137/nodes/168/log/?start=0. There's no way these tests complete in 0.004s.

/build/testsuite/integration /tmp/tmp.UkM8ZNfnF2/rclone /build
go: downloading storj.io/common v0.0.0-20240325183111-3a1a80390ccd
go: downloading github.com/stretchr/testify v1.9.0
go: downloading github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc
go: downloading github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2
go: downloading golang.org/x/sync v0.6.0
go: downloading golang.org/x/sys v0.17.0
go: downloading github.com/google/pprof v0.0.0-20230602150820-91b7bce49751
go: downloading golang.org/x/crypto v0.19.0
ok  	storj.io/gateway/testsuite/integration	28.728s
/tmp/tmp.UkM8ZNfnF2/rclone /build```

are we sure these are running?
=== RUN   TestRcloneVersioning
    rclone_versioning_test.go:23: AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY or AWS_ENDPOINT are not set
--- SKIP: TestRcloneVersioning (0.00s)


Update docs for sidecar listen behavior on Kubernetes

What content needs to be created or modified?

Change is here: https://github.com/dapr/dapr/pull/3429
This table needs to be updated for sure: https://docs.dapr.io/operations/hosting/kubernetes/kubernetes-annotations/
Maybe a note here? I have to think about it, I don't think any of these docs create an expectation that dapr would be available on anything other than localhost: https://docs.dapr.io/operations/hosting/kubernetes/kubernetes-overview/

/assign

looks like this was resolved - closing


You should put it on npm and/or bower

Anyway, thanks for opensourcing this. Would love to try it.

Good idea. I look forward to your label rearranging code :)

HEY
I AM NEW TO CODING AND GITHUB. PLEASE LET ME KNOW WHICH SOFTWARE OR EDITOR SHOULD I USE TO RUN THIS CODE.


tests for KernelsDropdown class

This PR adds new tests for KerneslDropdown class in notebookAcitons.ts file.
Testing: All unit tests were run in the development box.
Coverage: Code coverage of the target class was measured.

Coverage increased (+0.1%) to 40.064% when pulling 2cff036ee2b4d7fcb7a4e2eb7a84346fe6f83b20 on feat/nbActionsCov into 53ec7585a9da594c2465bfffa01238d1efc190a7 on main.


etcd test write timeout

I think the etcd specification is incorrect:
https://github.com/anishathalye/porcupine/blob/7cbc8342681863b08e96432402d0588fc1defa88/porcupine_test.go#L151-L152
A write can timeout
https://github.com/anishathalye/porcupine/blob/7cbc8342681863b08e96432402d0588fc1defa88/test_data/jepsen/etcd_000.log#L61
In this case, the Step function should not apply the write

The specification is correct. When the server receives a write operation, it performs the write.
From the client's perspective, an operation can time out. At that point, there are two possibilities, because the client can't tell whether the request was dropped by the network before reaching the server, or the request was received and processed but the response was dropped by the network before reaching the client. After a timed-out write operation, the client performs no more operations (you can verify this in that example history, client 4 does no more operations after that point).
How do we represent timed-out write operations as part of the history? They are operations with a known invocation time, but we have no upper bound on when the response was received (or whether the operation was received at all), which we can model with an upper bound of infinity. (If the operation wasn't received at all, then we can choose its linearization point to be after all reads, at which point it doesn't matter how we order writes.)
Here is where we handle all the write/CAS operations that time out, by appending their return (with unknown value) to the end of the history: https://github.com/anishathalye/porcupine/blob/master/porcupine_test.go#L285-L287

After a timed-out write operation, the client performs no more operations (you can verify this in that example history, client 4 does no more operations after that point).

Great observation. I added an assertion to make sure that a process does not perform any operations after a timeout and it looks like the test dataset follows that rule.
Maybe the state could be marked as unknown after a write timeout. This way, the next time we have a successful write we can catch up. Read and CAS should be dropped until the next successful write.

I found some counterexamples:

After a timed-out write operation, the client performs no more operations (you can verify this in that example history, client 4 does no more operations after that point).

Great observation. I added an assertion to make sure that a process does not perform any operations after a timeout and it looks like the test dataset follows that rule.

https://github.com/anishathalye/porcupine/blob/7cbc8342681863b08e96432402d0588fc1defa88/test_data/jepsen/etcd_100.log#L20-L31
also in etcd_101.log and etcd_102.log

How do we represent timed-out write operations as part of the history? They are operations with a known invocation time, but we have no upper bound on when the response was received (or whether the operation was received at all), which we can model with an upper bound of infinity. (If the operation wasn't received at all, then we can choose its linearization point to be after all reads, at which point it doesn't matter how we order writes.)

Ok I understand now, setting a realy large return time does make sense since it would model both cases: a) the write was performed, b) the write was not performed and it's too far in the future to invalidate it with a read.


[Cognitive] - Replace azure_c_shared_utility_macro_utils

Define a strategy to replace this from the c shared utility.
The c shared utility is getting all util macros from: http://www.github.com/azure/azure-macro-utils-c , so one option is to make Azure SDK Core to expose all macros from it.
Another approach is to make the speech SDK to directly consume the azure-macro-utils-c from its repo, instead of getting it from the c shared utility.

Prefer not to offer this from Azure Core.


Corrected link to getting started guide

Tried to use the getting started guide link and found it was broken, I have included the corrected link to the guide.

@dannylloyd  your changes have been merged, thanks for your contribution 👍


multiple spyder icons showing up in Mac dock

From<EMAIL_ADDRESS>on 2013-11-16T19:01:29Z
Please note that reporting bugs from Spyder's help menu ("?" > "Report
issue...") will fill version details for Spyder, Python and Qt in this description for you.
What steps will reproduce the problem?

opening a new IPython console (and associated kernel)
if I close the IPython console, the icon does not disappear.. 3. What is the expected output? What do you see instead? I'd rather not have multiple icons in my dock everytime I add a new console. What version of the product are you using? On what operating system? Spyder 2.2.5 Mac osX .dmg download;  Mac OS 10.8.5

Please provide any additional information below
.
Original issue: http://code.google.com/p/spyderlib/issues/detail?id=1645

From ccordoba12 on 2013-12-30T16:06:05Z
We can't do anything about this. This is caused because matplotlib uses an (operating system) thread to create plots in a new window, and Mac associates an icon to it.
If you don't want this to happen, you have to do two things:

Don't start a Python console by default, which you can do in

Spyder > Preferences > Console > Advanced settings > Startup

Use only the IPython inline backend, which can be selected in:

Spyder > Preferences > IPython console > Graphics > Graphics backend
Status: WontFix


ZEIT should be capitalized

This fixes the branding for ZEIT Now

Thank you! Let m know if you want to see any more changes or have any comments or suggestions in general

:tada: This PR is included in version 1.2.34 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Trying to sync fork

Sorry, I was in the wrong repo. Trying to sync my fork with this one, not the other way round


SQL Server Licence

What licence is used for SQL Server at Edge SQL Module? How can I use my licence?

@bechynsky Thank you for your feedback. Could you provide the URL of the documentation that you are following?
-James

@bechynsky Since we have not heard back from you we will now proceed to close this thread. If there are further questions regarding this matter, please tag me in your reply. We will gladly reopen the issue and continue the discussion.


GKE: Pin K8s version, use cilium, setup similar node group to EKS

Requires: https://github.com/pluralsh/plural/pull/178
Summary
Pins the GKE kubernetes version. Uses Cilium as the CNI. Sets up the same type of node groups as we use on EKS with the same labels. Also deploys the FileStore CSI driver.
Test Plan

Checklist

[ ] My change requires a change to the documentation and I have updated the documentation accordingly.
[ ] I have added tests to cover my changes.

@michaeljguarino I've tested both an upgrade from the current latest version and a fresh deployment and everything went smoothly so I think this can be merged.


Improve performance

Does the game still require HTML? If not, then the Reaction class has outdated code.

Does the game still require HTML? If not, then the Reaction class has outdated code.

Wait let me check that(I think arcade supports html formatting), anyways I am merging this


Add MIT license

Judging from setup.py, this project is MIT-licensed. I added a text license to make that clearer.
Thanks for creating this!

2017

Aha! Yes it is.


PR: Unify UI of editors in Variable Explorer and simplify code

Description of Changes

[x] Wrote at least one-line docstrings (for any new functions)
[x] Added unit test(s) covering the changes (if testable)

[x] Included a screenshot or animation (if affecting the UI, see Licecap)

This PR is a follow-up to PR #21312 which added the Refresh button, in order to make the UI and the code in the array editor, collections editor, dataframe editor and object explorer more uniform, as suggested in issue #21556:

Redistribute and reorder the actions in the context menus and the toolbars so that the UI is more logical and consistent.
Move buttons in bottom left corner of dataframe editor (Format, Resize, Background Color, Column Min/Max) to toolbar.
Tweak the UI for consistency: no vertical space between toolbar and main widget, and standardize vertical space between main widget and "Close" button at the bottom and align right edge.
Use standard functions from SpyderWidgetMixin to create actions, menus and toolbars; this changes the appearance of the toolbar in the object explorer.
Minor refactoring to simplify the code.

After the PR, the editors look as follows:

Here are the corresponding images from before the PR:

Issue(s) Resolved

Fixes #21556
Affirmation
By submitting this Pull Request or typing my (user)name below,
I affirm the Developer Certificate of Origin
with respect to all commits and content included in this PR,
and understand I am releasing the same under Spyder's MIT (Expat) license.

I certify the above statement is true and correct: Jitse Niesen

I added a commit which reflects the latest comment on the issue regarding the UI. I also updated the screenshots at the top of this pull request and added a screenshot of the Variable Editor itself.

Thanks @CAM-Gerlach for your further comments. I implemented them and updated the screenshots at the top of this PR.

Seems like insert above is below insert below for some reason? Seems like they should be reversed (as in my original suggestion)

Done, under the assumption that you meant that insert after and insert before should be reversed.

Seems like the refresh button is on the left rather than the right in the collections editor toolbar?

Done.

The (normally blank) circular progress indicator leaves a gap between the refresh button and the options menu; we should move that to the left of the right toolbar button group (i.e. to the left of the search button)

Yes, I noticed that as well and I was planning to ask you about it, but I forgot, so I'm glad you picked that up. I did not find a clear way to do this using Spyder's API so I ended up overriding the private _setup() method of PluginMainWidget.

Upon seeing how they look in the UI, I think we should split the row and column actions in DF viewer context menu and toolbar into separate groups, instead of having them all in one big one. This would make them easier to navigate and not seem too overwhelming to users. So instead of Insert above, Insert below, Insert before Insert after Duplicate row Duplicate column Remove Row Remove Column; I suggest Insert above, Insert below, Duplicate row Remove Row | Insert before Insert after Duplicate column Remove Column.

Done.

Finally, I went back and forth on this a lot before and almost suggested it previously but didn't, but given the column resize buttons in the array and df editors affect only the presentation rather than the content itself, I think we should move them to immediately to the left of the refresh button instead of as a separate group at the beginning of the toolbar. This also puts core content-focused toolbar actions first in the df editor, as is generally expected and done in the other toolbars.

Done. This does mean that the toolbar in the array editor only has buttons on the right and nothing on the left, but so be it. I did the same move in the collection editor.

Hello @jitseniesen! Thanks for updating this PR. We checked the lines you've touched for PEP 8 issues, and found:

In the file spyder/plugins/variableexplorer/widgets/dataframeeditor.py:

Line 70:1: E302 expected 2 blank lines, found 1
Line 149:1: E265 block comment should start with '# '
Line 151:1: E265 block comment should start with '# '
Line 182:1: E265 block comment should start with '# '
Line 184:1: E265 block comment should start with '# '

In the file spyder/widgets/collectionseditor.py:

Line 827:9: E122 continuation line missing indentation or outdented
Line 835:9: E122 continuation line missing indentation or outdented

@ccordoba12 As requested, the PR is now using add_item_to_menu() and add_item_to_toolbar() from SpyderWidgetMixin to build the menus and toolbars, and it's using sections to add the separators. For consistency, I also "declared" all the names of actions and widgets in enum-style classes like DataframeEditorActions. It does make the code more verbose but I guess that is the price to pay for consistency. I also addressed your other comments.
The PR does need a rebase, but I don't want to mess up your review process. So please let me know when you want to rebase.

Note: There are some really minor issues about this that I'd like to discuss with @jitseniesen and @CAM-Gerlach, but I'm going to merge because @dalthviz needs this so he can finish the migration of the editor to the new API.
So, I'll open a new issue about them.


Edge glitches

Edge glitches appears when i draw an image with not FilterDefault and not (45n) angle of rotation.
Is this a known issue?

I think it's a bug. I'd be glad if you could give me a minimum code to reproduce this.

And what machine are you using? If GPU is different, it might be hard to reproduce on my machine.

A few interesting details was found while composing minimum code. Here it is:
import (
	"github.com/hajimehoshi/ebiten"
	"github.com/hajimehoshi/ebiten/ebitenutil"
	_ "image/jpeg"
	_ "image/png"
)

var img *ebiten.Image

func update(image *ebiten.Image) error {
	op := &ebiten.DrawImageOptions{}
	op.GeoM.Rotate(0.234)           //random non 45-degree angle
	op.GeoM.Translate(100, 100)     //just for a fine pic, not important
	op.Filter = ebiten.FilterLinear //non DefaultFilter here needed
	image.DrawImage(img, op)
	return nil
}

func main() {
	//order is important: first load drawable image
	img, _, _ = ebitenutil.NewImageFromFile("ship.png", ebiten.FilterLinear) //non DefaultFilter here needed
	filter := ebiten.FilterDefault                                           //any, doesn't matter

	//then load another image
	//no matter png or jpg
	//as you see we do not do anything with it later
	//ebitenutil.NewImageFromFile("small.png", filter) without variable do the same
	img2, _, _ := ebitenutil.NewImageFromFile("small.png", filter)
	_ = img2

	ebiten.Run(update, 800, 800, 1, "minitest")
}

This error appears with any drawable images.
But not any img 2 files cause a problem: it has to be non-transparent, and probably larger than 128x128. Nature of image doesnt matter, filled rectangle is enough.
This may be important: color is glitches is equal to color of img2 flood color!

May it be some wicked effect with texture packaging when linear filter grabs an edge pixel of adjacent texture?
My system: Win7x64, Radeon HD 7800 series
i do not include images, cz first may be any of size ~100-400 px, and second is easy to generate, but i will attach it on first request

Thank you for the helpful information!

This may be important: color is glitches is equal to color of img2 flood color!
May it be some wicked effect with texture packaging when linear filter grabs an edge pixel of adjacent texture?

Your guess is right. Ebiten tries to share GL textures for multiple image instances as much as possible.

My system: Win7x64, Radeon HD 7800 series
i do not include images, cz first may be any of size ~100-400 px, and second is easy to generate, but i will attach it on first request

OK, I don't have Radeon HD machine, but I'll try this on another Windows machine.

Got same result with Win7x64 GForce GTX 560Ti

Looks like there was a bug in the linear filter. Could you update and take a look? Thank you!

Yay! Dat works! Thanks for fast response )

Great! Thank you very much for the bug reporting!


TAJO-1475: implement scanner for elasticsearch storage

I implemented scanner for elasticsearch storage which is based on tajo storage.
Thanks.

I close because elasticsearch doesn't support JDK 1.6.


Fix hacking version

Our code is currently not compatible with hacking 1.1 released on May 9.
https://pypi.org/project/hacking/#history
This is a temporary fix to use old hacking for tests.

LGTM!


Reviewing Vanguard_project and push to classrum gituhb

Reviewd vanguard-ourider-playfab in github
Pushed to Lakshmimutyala/vanguard-outrider-platfab
Verified and attahced document with screenshot of each


Add Homebrew installation instructions to README

Juliaup can now be installed via Homebrew (on both macOS and Linux), so let's mention it on the README for the benefit of users who might want to manage their installation using that.

Ah, very cool!
Before we merge it, though, we probably need to fix a few things:

Ideally we would have brew create two symlinks in /usr/local/bin: juliaup (it already does that) and julia that maps to julialauncher. Right now it creates a symlink julialauncher -> julialauncher, that is not what we want.
We'll have to add a https://rubydoc.brew.sh/Formula#conflicts_with-class_method attribute somewhere to indicate that this conflicts with the normal julia formula, i.e. one can either use julia or juliaup, but not both.
We should exclude juliainstaller from the formula. So probably just have two cargo install invocations, like cargo install --bin juliaup and cargo install --bin julialauncher.
We should integrate updates to the brew formula with the release channel concepts we have here. Right now I see for example that juliaup 1.5.29 is published on brew, but that is not a released version. I think ideally we would have our existing github workflow create a PR like https://github.com/Homebrew/homebrew-core/pull/93451 whenever we approve a build for the release channel, right? If I understand it correctly, it might be enough to for example run brew bump-formula-pr --tag 1.5.29 juliaup from our github worklow?

I'll have a go at a PR over on homebrew that makes some of these changes.

https://github.com/Homebrew/homebrew-core/pull/93495

And https://github.com/JuliaLang/juliaup/pull/232 should take care of the version bumps.


don't break tabIndex

I use Pell as part of a form. Using 'TAB' to navigate the form fields, I'm first taken through all the buttons I have initialized for my Pell's instance before arriving in the editor with the cursor.
title_input (press 'TAB' here)
description_input (I expect the cursor to be in the editor and not looping through the icons)
Quick fix: add tabIndex=-1 to the icon's button elements
Currently I have this workaround after Pell is initialized:
document.querySelectorAll('.pell-button').forEach(button => button.setAttribute('tabIndex', "-1"))

but it would be cool to have this built-in.

+1, I'm resorting to these sort of hack as well but it's not clean as I got many pell instances being dynamically created.

Thanks, slated for V2


ORC-853: Optimize writeDouble Implementation

What changes were proposed in this pull request?
Use the optimized Apache Avro implementation of writing a double to a stream.  Remove extra method which supports this functionality; condense it into a single method.
Why are the changes needed?
Performance. Had a measurable impact on the Driver performance harness for writing double values.
How was this patch tested?
No change in functionality. Use existing unit tests.

@pgaref Thanks for the review.  I'll add additional comments.
Yes. I only posted the results of one run, but it was representative of the greater series of tests.  Anyway, the reason I even thought to do this was because I have worked a bit with Avro in the pass and this strange implementation really stuck with me.  Some time ago, I found it super interesting and I tried different ways to out-perform it, but I was never able to.  Now, TBH there is some amount of YMMV here, as this may be sensitive to CPU architecture, but the person that implemented this in the first place found it was optimal, and I could only confirm that with my personal setup, so there is some merit to it.

Merged, Thanks @belugabehr !


Clue links - UI improvement

Having links on the clues is bad sometimes, as it makes it hard to select and copy a (part of a) regex.
Perhaps a better way to do this is to display a link to regexper.com on hover.

Solved in 733713ae814717ff4f484949e71f82d551c22ec1.


tidy for 3.5, 3.6+ python

and clean up of imports

I would want to merge this, except it takes my sorted imports and unsorts them!


Problem with $slotOptions and dwonload button

Hello,
I had some problem with the most recent version - "vue-xlsx": "^0.2.1"
The Download button is not appearing. I've updated the render function with this new one and it seems to be working.
render(h) {
    if (this.$slots.default && this.loaded) {
      return h(
        "div",
        {
          on: {
            click: this.disableWrapperClick ? () => {} : this.download
          }
        },
        [
          this.$slots.default
        ]
      );
    }
    return null;
  }

Here is the old function for comparison:
  render(h) {
    if (this.$scopedSlots.default && this.loaded) {
      return h(
        "div",
        {
          on: {
            click: this.disableWrapperClick ? () => {} : this.download
          }
        },
        [
          this.$scopedSlots.default({
            download: this.download
          })
        ]
      );
    }
    return null;
  }

I'm not sure why $scopedSlots. is undefined. Could you please adjust the code, so it works fine on<EMAIL_ADDRESS>

@heitara Thank you for the issue, I will take a look ASAP!

You can check my fork. I’ll send a PR.
Sent from my iPhone

On Apr 26, 2020, at 18:35, Nicolò Maria Mezzopera<EMAIL_ADDRESS>wrote:

@heitara Thank you for the issue, I will take a look ASAP!
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or unsubscribe.


ARMNN:TFLITE Delegate :Issue with opening shared object file

I am following the procedure as per  https://developer.arm.com/documentation/102561/2111/Overview-of-running-the-application/Run-the-application#:~:text=Rate this page%3A-,Run the application,-The steps in
while performing line 6 https://developer.arm.com/documentation/102561/2111/Overview-of-running-the-application/Run-the-application#:~:text=Run the run_classifier.py application
Observed error with both of the library creation method :
/armnn/build-tool/scripts/aarch64_build/libarmnn.so.33: cannot open shared object file: No such file or directory
Exception ignored in: <function Delegate.del at 0x7f1c8e8e4550>
Local build:
I have performed the local build of ARM NN  ref:  https://github.com/ARM-software/armnn/blob/branches/armnn_24_08/build-tool/README.md#:~:text=docker image prune-,Build Arm NN without Docker,-For ease of
PreBuilt binaries
I have tried to use the prebuilt binaries for platform   https://github.com/ARM-software/armnn/blob/branches/armnn_24_08/README.md#:~:text=Release Archive (Download)-,Linux Arm v8a,-Linux Arm v8.2a

Hiya,
Sorry for the delayed response. It looks like the build isn't able to find the .so file in question. Is it actually in the folder it's looking in? Alternatively, try setting your LD_LIBRARY_PATH to where you extracted the pre-built binaries.
It's also worth making sure that the arch you're compiling for is the same as the binaries. ie. both Aarch64
We're not seeing any issues on our end with the build tool, but let me know how you get on with these steps and I'll dig a bit further.

I am facing a similar issue with missing libarmnn.so.34 .


security_register functions Address mode 3 byte, why the register address get's left shifted?

Please ask your question
Hello, I'm using a W25q16 chip and the read test is failing on the security registers test.
In the security_register functions (w25qxx_program_security_register, w25qxx_read_security_register, w25qxx_erase_security_register, etc) when using the quad spi in dula line (handle->spi_qspi == W25QXX_INTERFACE_SPI && handle->dual_quad_spi_enable != 0) the register's addresses are left shifted by 8 bits. This causes the QUAD SPI (on my stm32l475) to set the TEF flag ( Transfer error flag.This bit is set in indirect mode when an invalid address is being accessed in indirect mode).
The failure occurs on registers 2  (W25QXX_SECURITY_REGISTER_2 = 0x2000) and 3 (W25QXX_SECURITY_REGISTER_3 = 0x3000) since the addresses (being shifted) are out of bounds (Valid Address Range: 0x000000 to 0x1FFFFF for a 16 Megabit flash memory).
Can you please provide some explanation ?
Best regards
Additional context
No response

Can you give me your stm32l475_interface.c, test program and test output.

Hi, thanks for your reply.
The interface .c file I've used for testing comes from the example project in the repo (project\stm32f767\driver\src) along with the qspi files (.c and .h in the project\stm32f767\interface).
qspi.c.txt
qspi.h.txt
stm32f767_driver_w25qxx_interface.c.txt
In these files, I've just made use of my delay routines and I've linked the CubeMx qspi initialization  (clock @40MHz with both mode 0 and mode 3 working):
void MX_QUADSPI_Init(void)
{
  /* USER CODE BEGIN QUADSPI_Init 0 */

  /* USER CODE END QUADSPI_Init 0 */

  /* USER CODE BEGIN QUADSPI_Init 1 */

  /* USER CODE END QUADSPI_Init 1 */
  /* QUADSPI parameter configuration*/
  hqspi.Instance = QUADSPI;
  hqspi.Init.ClockPrescaler = 1;
  hqspi.Init.FifoThreshold = 1;
  hqspi.Init.SampleShifting = QSPI_SAMPLE_SHIFTING_HALFCYCLE;
  hqspi.Init.FlashSize = 20;
  hqspi.Init.ChipSelectHighTime = QSPI_CS_HIGH_TIME_1_CYCLE;
  hqspi.Init.ClockMode = QSPI_CLOCK_MODE_0;
  if (HAL_QSPI_Init(&hqspi) != HAL_OK)
  {
    Error_Handler();
  }
  /* USER CODE BEGIN QUADSPI_Init 2 */

  /* USER CODE END QUADSPI_Init 2 */

}

In the test code, after the board initialization, I call the following :
 if (w25qxx_register_test(W25Q16, W25QXX_INTERFACE_SPI, W25QXX_BOOL_TRUE)) {
     printf("\n************** EXT FLASH REG TEST: FAIL \n\n");
 } else {
     printf("\n************** EXT FLASH REG TEST: PASS \n\n");
 }

 if(w25qxx_read_test(W25Q16,  W25QXX_INTERFACE_SPI, W25QXX_BOOL_TRUE)) {
     printf("\n************** EXT FLASH READ TEST: FAIL \n\n");
 } else {
     printf("\n************** EXT FLASH READ TEST: PASS \n\n");
 }

Here are the results with the original w25qxx_security_register_t (driver_w25qxx.h)
/**
 * @brief w25qxx security register enumeration definition
 */
typedef enum
{
    W25QXX_SECURITY_REGISTER_1 = 0x1000,        /**< security register 1 */
    W25QXX_SECURITY_REGISTER_2 = 0x2000,        /**< security register 2 */
    W25QXX_SECURITY_REGISTER_3 = 0x3000,        /**< security register 3 */
} w25qxx_security_register_t;

TestFAIL.txt
here are the results with the modified w25qxx_security_register_t (driver_w25qxx.h) to overcome what looks like an incorrect 8-bit register address left shift
/**
 * @brief w25qxx security register enumeration definition
 */
typedef enum
{
    W25QXX_SECURITY_REGISTER_1 = 0x10/*00*/,        /**< security register 1 */
    W25QXX_SECURITY_REGISTER_2 = 0x20/*00*/,        /**< security register 2 */
    W25QXX_SECURITY_REGISTER_3 = 0x30/*00*/,        /**< security register 3 */
} w25qxx_security_register_t;

TestPASS.txt
Regardless of the memory size, the security register addresses are always the same (according to the parts datasheets) and I can't explain the reason for the security register address shift. Can you please explain the reason for this operation?
Hope this helps and thanks for looking into this.
Best regards
Luca

Hello, Your analysis is correct, and this enumeration is indeed incorrect. We have updated the latest driver and thank you very much for raising the issue. You can pull this driver again.

Thanks for looking into this.
I've seen you have changed the register addresses (the enumeration) but shouldn't the bug be in the left shift on the functions (unless I'm missing any other purpose for those functions)?
Regards

Your previous analysis was correct. In order to be compatible with SPI and QSPI interfaces at the same time, the design was changed to a right shifted 8-bit address as the enumeration of register addresses. According to the datasheet and the chip verification, the current modification is correct.

Thanks for your work and for fixing this.


Private repository with public wiki

add Private repository with public wiki,thanks

While we're at it, I'd purpose to do it for everything in the repo, so to have a panel to set rules on whether the following are public:

Code (and pull requests)
Issues
Releases
Wiki

@thehowl issues are in another issue thread..

It seems that in 0.9 milestone cannot be achieved

Yes, too many issues make 0.9 impossible.

gogs function and external system demain point is not the same

gogs function and external system demain point is not the same

What does this mean?

#2642 is links in wiki, not gogs function.
Private repository with public wiki is gogs function

See https://github.com/gogits/gogs/issues/2642#issuecomment-185391491

Patch has pushed to fix this issue, please test on develop branch or https://try.gogs.io.


Call out breaking assert_that change more explicitly

I got the feedback from some internal customers that we're not clear enough about this error message when they upgraded to the latest version. This should help.

Thank you for your contribution! Follow this checklist to help us incorporate your contribution quickly and easily:

[ ] Mention the appropriate issue in your description (for example: addresses #123), if applicable. This will automatically add a link to the pull request in the issue. If you would like the issue to automatically close on merging the pull request, comment fixes #<ISSUE NUMBER> instead.
[ ] Update CHANGES.md with noteworthy changes.
[ ] If this contribution is large, please file an Apache Individual Contributor License Agreement.

See the Contributor Guide for more tips on how to make review process smoother.
To check the build health, please visit https://github.com/apache/beam/blob/master/.test-infra/BUILD_STATUS.md
GitHub Actions Tests Status (on master branch)

See CI.md for more information about GitHub Actions CI or the workflows README to see a list of phrases to trigger workflows.

R: @Abacn @hjtran


[Issue] azd up fails on todo-csharp-cosmos-sql

Describe the bug
WHen performing azd up on the csharp cosmos sql template it fails with:
2023/01/19 13:55:26 command_runner.go:79: Run exec: 'dotnet publish D:\source\repos\todo-csharp\src\api -c Release --output C:\Users\timheuer\AppData\Local\Temp\azd3394537926'
  (✓) Done: Deploying service api

ERROR: deploying service: packaging service api: dotnet publish on project 'D:\source\repos\todo-csharp\src\api' failed: exit code: 1, stdout: MSBuild version 17.5.0-preview-22620-02+a6f6699d1 for .NET
  Determining projects to restore...
  All projects are up-to-date for restore.
C:\Program Files\dotnet\sdk\7.0.200-preview.22628.1\Current\SolutionFile\ImportAfter\Microsoft.NET.Sdk.Solution.targets(36,5): error NETSDK1194: The "--output" option isn't supported when building a solution. [D:\source\repos\todo-csharp\src\api\Todo.Api.sln]
, stderr: : exit status 1

This is calling dotnet publish on a directory that has both a SLN and csproj and will give preference to SLN if a proj is not specified.  --output isn't supported there.

@rajeshkamal5050 could you have a look?

@hemarina can you triage this and please do check with @timheuer on his setup/dependencies?

Correct: https://github.com/dotnet/sdk/issues/15607

Yes, we should be updating templates. Provided the recommended fix is backward compatible and works with previous dotnet runtime/sdks.

I can confirm that explicitly specifying the project file (not just the containing directory) works in previous dotnet SDKs.

@hemarina we should probably get this fixed definitely for our Apr release.

Marking this as blocker for 0.8 April 5th release. If not needed, please clarify and remove blocker.
@savannahostrowski @ellismg

Closed as part of #1779


Quick Accent does not have ς

Description of the new feature / enhancement
When pressing lowercase "s" with arrow keys or spacebar the end of word lowercase sigma ( ς ) should also appear alongside σ
Scenario when this would be used?
This is useful for people typing in Greek who wish to have this as an option
Supporting information
No response

I made a string change in a fork that should resolve this, but I am unfamiliar with tests etc which are requested for a PR


PDF to TXT

It closes the issue #241

@pranjay-poddar please check it

Add screenshots in PR

https://user-images.githubusercontent.com/77090462/180646375-b0305c4a-1dbf-4436-a20a-455d6e1600fe.mov
@pranjay-poddar Please check it

@pranjay-poddar please check


fix(lints): constant_identifier_names

Refer #149
Fix lints for the rule - constant_identifier_names

In #149, it's mentioned that

constant_identifier_names: This rule will be intentionally be disabled since we use ALL_CAPS_WITH_UNDERSCORES for constants.

More info: #177


"You have to be logged in to [...]" even though I am logged in

In GitLab by @manuel-g-castro on Oct 13, 2022, 09:23
Hi @ggcr and @ jberlin. I was looking into the graph that @mcastril sent us as an example for #41 and wanted to know who's experiment it was.
When I clicked on the config page it required login even as the header clearly indicated that I was already logged in. Since I had an active CAS session from logging in to gitlab, I wasn't redirected from AS GUI to CAS. I checked other experiments and the behavior persisted.
Upon logout from AS GUI's page and logging back in I manage to see the configuration tab of all the experiments.

In GitLab by @ggcr on Oct 13, 2022, 09:28
Interesting, probably we are doing the sign-up validation at first and then taking the CAS credentials... I will have a look.
Also when you are logged out of the GUI and click in any autosubmitgui link, it does not redirect you to the experiment, and instead it prompts you to the homepage.

In GitLab by @ggcr on Oct 17, 2022, 10:50
Update: I am still working in finding out the problem of the Configuration logged in verification but I've been able to redirect successfully after login.

In GitLab by @mcastril on Oct 18, 2022, 14:39
Thank for the update @ggcr

In GitLab by @ggcr on Nov 21, 2022, 09:03
Finally. This has been solved by doing the validation on the Front End instead of the Back End.
Already deployed.

In GitLab by @mcastril on Oct 18, 2022, 17:53
We have to understand the authentication workflow to know which is the failing step: either the internal GUI credential stored in the cache, or a CAS thing.
Given that you already debugged CAS-relates issues during the deployment, I think that you are in a good position to investigate and explain this workflow @ jberlin . This will be of help to Cristian.

In GitLab by @ jberlin on Oct 18, 2022, 15:18
I think I had a similar problem with the log-off, you log-off, click on home and then the message that you are being redirected to CAS for auth appears, then you are logged in again, I think this can be solved by removing the auth token from the cache

In GitLab by @manuel-g-castro on Oct 13, 2022, 09:33
Yeah, the redirect thing annoys me a lot. Maybe is something that CAS doesn't support since in ES's wiki it happens aswell.

In GitLab by @ggcr on Nov 21, 2022, 09:06
mentioned in commit 5b47a36eaca79c02494148343097e7b07ced0b79

In GitLab by @ jberlin on Feb 17, 2023, 15:40
unassigned @ggcr

In GitLab by @ggcr on Nov 30, 2022, 13:10
unassigned @ggcr

In GitLab by @ggcr on Jan 4, 2023, 10:35
mentioned in commit autosubmit_api@915a1646f4bf000cf5bd631e3ec01f10dd3c8419


Trailing commas in 2.12.2

PR was just merged https://github.com/scala/scala/pull/5245.
We need to allow trailing commas in 2.12.2 but not previous version. much like literal type syntax

AFAIK @xeno-by said scalameta already did support this.

Ah okay, maybe its a recent addition. I may have missed it. My bots only running 1.4 still

scala> """
     | List(1,
     | 2,
     | 3,
     | )
     | """.parse[Term]
res1: scala.meta.parsers.Parsed[scala.meta.Term] =
<input>:5: error: illegal start of simple expression
)
^

Trailing commas don't seem to work in scala.meta.

I presume we will have to change quasiquotes too?

@DavidDudson Yes, but it'll happen automatically once we modify the parser.

See #660 for a PR adding support for trailing commas.


Create individual counter per line

I'd like individual lines to have their own loop counter available.
Something like
/click loop 7 /cast [nomod] flame shock
This will cast flame shock the first time its line is executed, and every 7th time thereafter.

Done as a block in GSE3


Merkletreejs hash does not match expected Solidity keccak hash

I presume this is because the hexstring is parsed as text, for e.g. this tree:
└─ 7bd62a75d6e486a759d2060beeaaa851c1bb46427fa155a3b09d7895a761f58b
   ├─ e9e8231adc2ecb81d80587742818d309b6cdfc3fb4abb09eeab4f8b8492bd58a
   │  ├─ 8b117e8553a17ab37aba92ae84cc97a7d4df9aebce486b72741df499cb04a344
   │  └─ 9214d159784576263b97979db3f50143f3314f118237c8ec2c9ed005589e93de
   └─ 2299a49e35aeeb95f3e0466bc143bc6df56ab5e13b8c6d191614a966122a0d63
      ├─ 57b7579accf9fdd32ca51f776a3d032dd6dcfea6a4a83ba304de30e12a7db68e
      └─ 06c6b07877bcb499d6952d8e1503e591a64f476a6c35beb93d601eccd48f4a1a

If you put in the first two leaves concatenated on https://emn178.github.io/online-tools/keccak_256.html it would actually be f68b7c2821ff5479150c5204d6671eb40a33748a1d2e5becc7b34dc17964dad1 which matches the Solidity output of keccak256(abi.encodePacked(leaf1,leaf2))
For some additional context, I have a struct like:
Obj {
 id: uint256,
 ...
}

This is then encoded in Solidity like keccak256(abi.encode(objs)) and is used as the leaf. The leaf encoding is correct (verified using debugger) and the entire process works fine in Solidity, except that each hash does not agree to the one produced by Solidity.
Here's the code I am using to run this:
import { keccak256 } from "keccak256";
...
tree = new MerkleTree(hashes, keccak256); // hashes is array of keccak256(abi.encode(objs))
const root = tree.getHexRoot();
console.log(tree.toString());

hashes looks like:
[
  '0x8b117e8553a17ab37aba92ae84cc97a7d4df9aebce486b72741df499cb04a344',
  '0x9214d159784576263b97979db3f50143f3314f118237c8ec2c9ed005589e93de',
  '0x57b7579accf9fdd32ca51f776a3d032dd6dcfea6a4a83ba304de30e12a7db68e',
  '0x06c6b07877bcb499d6952d8e1503e591a64f476a6c35beb93d601eccd48f4a1a'
]

Ran into something similar - try dropping the object-based import of keccak256, like so:
import keccak256 from "keccak256"
Assuming that that does the trick, this seems to actually be an issue with how keccak256 exports its functions - very surprising, not good.


After resizing the window the column menu jumps to left screen border

After resizing the window the column menu jumps to left screen border:

The bug is still present in the most recent version v4.0.0-alpha2.


YAMLException: duplicated mapping key name: http-kiali

Describe the bug
YAMLException: duplicated mapping key name: http-kiali in https://github.com/istio/istio/blob/1.0.5/install/kubernetes/helm/istio/charts/kiali/templates/service.yaml#L10-L13
Expected behavior
No dup key error for this yaml template
Steps to reproduce the bug
Just the line describe above
Version
1.0.5
Installation
n/a
Environment
n/a
Cluster state
n/a

mark as closed as it is fixed in 1.1


UDP Client | Loop exit does not work (IDFGH-4488)

Hello everyone!
I took as a basis the project of their examples udp_client.
I need to send requests to the broadcast address not constantly, but once every 5 seconds and then wait 30 seconds. This part works provided that there is a device on the network that responds to requests.
The essence of the work is as follows:

I wrapped the data receiving block in a loop while (1)
I create a task taskListenExit to change the flag receiverLoopFlag (in order to exit the reception cycle)
I send a broadcast request and for 2 seconds I am in a receive cycle in order to receive responses from all devices
after 2 seconds I have to exit the receive loop and send the next request

The problem is, I cannot get out of the receive loop if there are no devices on the network (no response).
Tell me, am I doing something wrong?
/* Receive data cycle status (for forced exit if no responses) */
bool receiverLoopFlag = 1;

/* The task of exiting the loop waiting for responses */
static void taskListenExit() {
  while (1) {
    vTaskDelay(SMALL_PERIOD_SCAN * 1000 / portTICK_PERIOD_MS);
    receiverLoopFlag = 0;
  }
}

static void taskUDPClient(void * pvParameters) {
  char rx_buffer[1024];
  int addr_family = 0;
  int ip_protocol = 0;
  while (1) {
    struct sockaddr_in dest_addr;
    dest_addr.sin_addr.s_addr = inet_addr(HOST_IP_ADDR);
    dest_addr.sin_family = AF_INET;
    dest_addr.sin_port = htons(PORT);
    addr_family = AF_INET;
    ip_protocol = IPPROTO_IP;

    int sock = socket(addr_family, SOCK_DGRAM, ip_protocol);
    if (sock < 0) {
      break;
    }
    int iRequest = NUM_REQUESTS;
    /* Cycle of periodically sending a packet to search for devices */
    while (1) {
      int err = sendto(sock, SEARCH_PHRASE, strlen(SEARCH_PHRASE), 0, (struct sockaddr *)&dest_addr, sizeof(dest_addr));
      if (err < 0) {
        break;
      }
      receiverLoopFlag = 1;
      /* Waiting cycle for responses */
      while (receiverLoopFlag == 1) {
        struct sockaddr_in source_addr;
        socklen_t socklen = sizeof(source_addr);
        int len = recvfrom(sock, rx_buffer, sizeof(rx_buffer) - 1, 0, (struct sockaddr *)&source_addr, &socklen);
        if (len < 0) {
          break;
        }
        if (len > 0) {
          /* Package processing */
        }
      }
      iRequest--;
      if (iRequest > 0) {
        vTaskDelay(SMALL_PERIOD_SCAN * 1000 / portTICK_PERIOD_MS);
      } else {
        vTaskDelay(LONG_PERIOD_SCAN * 1000 / portTICK_PERIOD_MS);
        iRequest = NUM_REQUESTS;
      }
    }
    if (sock != -1) {
      shutdown(sock, 0);
      close(sock);
    }
  }
  vTaskDelete(NULL);
  }
}

// INIT UDP Client
esp_err_t udpClientInit() {
  if (xTaskCreate(taskUDPClient, "taskUDPClient", 4096, NULL, 5, NULL) != pdPASS) {
    return ESP_FAIL;
  }
  if (xTaskCreate(taskListenExit, "taskListenExit", 4096, NULL, 4, NULL) != pdPASS) {
    return ESP_FAIL;
  }
  return ESP_OK;
}

Why am I not getting out of the loop while (receiverLoopFlag == 1)?
I change the flag and the condition becomes false
I checked in the function of task static void taskListenExit(), it is called correctly and changes the value of the flag.
Can I use cJSON inside a while loop (receiverLoopFlag == 1)?
For the test, I displayed the size of free memory and found that there was a leak with each call. Apparently cJSON_Delete (root) doesn't free memory? I removed part of the code to shorten the code, but the code is standard there.

if (len > 0) {
  /* Package processing */
}

https://stackoverflow.com/questions/15941005/making-recvfrom-function-non-blocking

I have read the link. The task matches mine!
But there is very little information and I did not understand anything how to implement it.
Is there an example or a more detailed explanation of how to do this?

Thanks, figured it out!


New Wifi Duck compatibility ?

Hey, I recently bought the WHID Cactus and I really like it, however I got into all settings and did everything I can do with ESPloitV2 and want to spice it up by changing firmware, that's why I'm asking if the ameliorated wifi-ducky by spacehuhn (Wifi Duck) is supported because I don't see it on the wiki. And if it's compatible, how do I switch to it from ESPloit. Thank you very much for this amazing project and keep going ! Greetings from France!

I'm also looking forward to this..

better dont change it i tried reflashing with esploitv2 again and now i have ai-thinker that doesnt work


Update 02-template-syntax.md

@Conduitry hinted me about this, it was still missing in the guide.

Thanks — I think we probably want to talk about spread later in the docs, so I replaced this with an explanation of undefined and null attributes (which is the easiest way to omit an attribute)


refactor(ja-no-space-between-full-width): replace match-index with String.prototype.matchAll

Replace match-index with String.prototype.matchAll.
Ref. https://github.com/textlint-ja/textlint-rule-preset-ja-spacing/issues/55

Thanks!