Elegant way to generate a transfer function matrix

Hi everybody,
I want to know if there is a more elegant way to generate a transfer-function-matrix for a hinf-controller.
In matlab I just do:
P11 = [0 0; W2G W2]
P12 = [W1; W2G]
P21 = [G 1]
P22 = [G]
P_ = [P11 P12; P21 P22]
sys = ss(P_, 'minimal');
In python with control, I habe to do:
import control
from control import *
Gss = ss([[-1.0, -10.0], [1, 0]],  [[10.0], [0]], [0, 1], [0])
G = tf(Gss)
W1 = tf([100], [0.1, 1])
W2 = tf([100], [0.1, 1])
W2G = W2*G
num = [ [ [0], [0], W1.num[0][0] ],  [W2G.num[0][0], W2.num[0][0], G.num[0][0]], [G.num[0][0], [1], G.num[0][0] ] ]
den = [ [ [1], [1], W1.den[0][0] ],  [W2G.den[0][0], W2.den[0][0], G.den[0][0]], [G.den[0][0], [1], G.den[0][0] ] ]
P = tf( num, den )
print(P)
The problem is that the return of the numerator and denominator is not directly the list.
And I get a high order system. Should I use just the balanced trunction?
Pss = ss(P)
Pbr = balred(Pss, 4)

Matlab is using minreal with exist also in "control", but I have to find manually a suitable tolerance...

You could try using parallel, series and feedback to construct the system.  Alternatively, take a look at the append and connect commands?  All of those should produce a system that doesn't involve creating extra states (unless you list one of the systems multiple times, which I guess is what  is causing the problem above?).

The following should work:
# Create a 3 input, 3 output system consisting of component systems
sysvec = append(ss(W1), ss(W2), Gss)

# Add interconnections between the components (NB: indexing starts at 1)
# Input of G (3) is output of W1 (1), input of W2 (2) is G (3)
# Keep all inputs and outputs
syscon = connect(sysvec, [[3, 1], [2, 3]], [1, 2, 3], [1, 2, 3])

Note that this generates a minimal representation in the state space because we never create a copy of the system or weighting matrices.
One annoying (and I think confusing) aspect of this construction is that the control.connect function uses indexing starting at 1 (to be compatible with MATLAB but also to allow negative feedback), while Python indexing normally starts at 0.  This is documented in the connect function, but I still think it is confusing.

Thanks for your help @murrayrm !
But I don't get it. Input of G is the controller output or better say the disturbed controller output.

I may have misunderstood the transfer function matrix you were trying to create (I sketched it out on a napkin that I have since tossed -:).  The main point is that you can use append to stack the system dynamics and then use connect to interconnect them.

I'm unfortunately not able to produce a minimal example (Kai Müller, Entwurf robubster Regelungen Teubner Springer 1996, Chapter 12.3.1, p. 172).
z-->o--------->W1---->v1
^        |
|         |
G        -------
^                 |
|---------------------------->W2---------->v2
|                  | y
---------K<---
or in traditional:
                           -------------------------------------->W2---->v2
                           |
                           |                  z
                           |                  |
                         u|                  v          y

w=0 --->o-----> K  -----> G ----->o-------------------->W1----->v1
^                                        |
|---------------------------------
from control import *
W1 = tf([2], [1])
W2 = tf([3], [1])
G = tf([1], [1, 1])
sysvec = append(ss(G), ss(W1), ss(W2))
P = connect(sysvec, [[1, 2] ], [2, 1], [2, 3, 1])
print(P)

A = [[-1.]]
B = [[1. 0.]]
C = [[1.]
[0.]
[ 0.]]
D = [[0. 0.]
[0. 2.]
[0. 0.]]

The right answer is: A=[-1], B = [0 1],  C=[2 0 1]^T, D=[2 0; 0 3; 1 0]
But I'm not able to produce it.
So there is a connection between G and W1. And I have to inputs: u and z, And I have three outputs: v1, v2 and y.

I put this example into MATLAB (same exact commands) and got the output
P =

  A =
       x1
   x1  -1

  B =
       u1  u2
   x1   2   1

  C =
       x1
   y1   0
   y2   0
   y3   1

  D =
       u1  u2
   y1   2   0
   y2   0   0
   y3   0   0

When I run those commands in Python 3.5 using the current master (which should be the same as v0.8.2), I get output
A = [[-1.]]

B = [[2. 1.]]

C = [[0.]
 [0.]
 [1.]]

D = [[2. 0.]
 [0. 0.]
 [0. 0.]]

This matches the output of MATLAB, but is different than what you showed as your output.  What version of python-control are you running?
There is still the issue that this is not the right system description for the block diagram.  I think that part of the problem is that your interconnection matrix is not right.  You have [[1, 2]] for the interconnection, which sets input 1 (G) to output 2 (W1).  From the block diagram, what you want is [[2, 1]], so that the input of W1 (= input #2) is the output from G (output #1).
Running the command with the updated interconnection matrix gives
P = connect(sysvec, [[2, 1]], [2, 1], [2, 3, 1])

gives
A = [[-1.]]

B = [[0. 1.]]

C = [[2.]
 [0.]
 [1.]]

D = [[2. 0.]
 [0. 0.]
 [0. 0.]]

This is almost what you expect, except that the D matrix is not correct.
One part of the problem is because of a limitation in the connect command (in MATLAB and Python).  The outputs for the connect command can only correspond to outputs from one of the subsystems.  The output that you want for y in your diagram is the output of G plus the input z.  But you can't actually do that with connect (in MATLAB or Python).
The output problem is that the input u should be going to output v2 through a gain of 3.  That is missing in both the MATLAB and Python versions, for reasons that don't make senses.
Have to run off to a meeting, but will take a closer look when I get a chance.

Try this:
from control import tf,ss,connect,append

UU = tf([1],[1])     #1 u   ->u_o
Z  = tf([1],[1])     #2 z   ->z_o
G  = tf([1], [1, 1]) #3 ug  ->y
W1 = tf([2], [1])    #4 uw1  ->v1
W2 = tf([3], [1])    #5 uw2  ->v2
ZY = tf([1],[1])     #6 zy_i->zy_o

sysvec = append(ss(UU),ss(Z),ss(G),ss(W1),ss(W2),ss(ZY))
Q=[[6,2],[6,3], # zy_i=z_o+y
   [4,6],       # uw1=zy_o
   [3,1],       # ug = u_o
   [5,1],       # uw2 =u_o
   ]
P = connect(sysvec,Q,[2,1],[4,5,6]) # z,u -> v1,v2,z+y,
print(P)

which gives your "right answer"
A = [[-1.]]

B = [[0. 1.]]

C = [[2.]
 [0.]
 [1.]]

D = [[2. 0.]
 [0. 3.]
 [1. 0.]]

I am pretty sure your D does not reflect your desired output of (v1,v2,y) but it is (v1,v2,z+y) and your inputs are ordered (z,u)

Thanks @bnavigator.  It would be useful to think about whether there is a nice way to do these sorts of manipulations.  The construct that @iljastas gave at the start is really the best way since it creates copies of the system/weighting filters that are then "minimized" away, but it is also tedious to put in the extra elements that you used to get things to work.
I'd lover to hear suggestions about what a cleaner implementation would look like.

Thanks @murrayrm  and @bnavigator I will try it later or tomorrow and post also a more complex example with and hinfsyn-controller!

Maybe it would be useful to have a function combine() or something similar to  mimic the Matrix combination of systems like in MATLAB. Here is a hack how that could look like. Of course it still needs all the type checks etc. to have it included into the StateSpace class:
import numpy as np
from control import StateSpace,tf,minreal
from control.statesp import _convertToStateSpace

def combine(systems):
    """ systems: 2D array of systems to combine """

    rrows=[]
    for srow in systems:
        s1 = srow[0]
        if not isinstance(s1,StateSpace):
            s1=_convertToStateSpace(s1)

        for s2 in srow[1:]:
            if not isinstance(s2, StateSpace):
                s2 = _convertToStateSpace(s2)
            if s1.dt != s2.dt:
                raise ValueError("Systems must have the same time step")
            n = s1.states + s2.states
            m = s1.inputs + s2.inputs
            p = s1.outputs
            if s2.outputs != p:
                raise ValueError('inconsistent systems')
            A = np.zeros((n, n))
            B = np.zeros((n, m))
            C = np.zeros((p, n))
            D = np.zeros((p, m))
            A[:s1.states, :s1.states] = s1.A
            A[s1.states:, s1.states:] = s2.A
            B[:s1.states, :s1.inputs] = s1.B
            B[s1.states:, s1.inputs:] = s2.B
            C[:, :s1.states] = s1.C
            C[:, s1.states:] = s2.C
            D[:, :s1.inputs] = s1.D
            D[:, s1.inputs:] = s2.D
            s1=StateSpace(A,B,C,D,s1.dt)
        rrows.append(s1)
    r1=rrows[0]
    for r2 in rrows[1:]:
        if r1.dt != r2.dt:
            raise ValueError("Systems must have the same time step")
        n = r1.states + r2.states
        m = r1.inputs
        if r2.inputs != m:
            raise ValueError('inconsistent systems')
        p = r1.outputs + r2.outputs
        A = np.zeros((n, n))
        B = np.zeros((n, m))
        C = np.zeros((p, n))
        D = np.zeros((p, m))
        A[:r1.states, :r1.states] = r1.A
        A[r1.states:, r1.states:] = r2.A
        B[:r1.states, :] = r1.B
        B[r1.states:, :] = r2.B
        C[:r1.outputs, :r1.states] = r1.C
        C[r1.outputs:, r1.states:] = r2.C
        D[:r1.outputs, :] = r1.D
        D[r1.outputs:, :] = r2.D
        r1=StateSpace(A,B,C,D,r1.dt)
    return r1

Gss = StateSpace([[-1.0, -10.0], [1, 0]], [[10.0], [0]], [0, 1], [0])
G = tf(Gss)
W1 = tf([100], [0.1, 1])
W2 = tf([100], [0.1, 1])
W2G=W2*G
P11=np.block([[0,0],[W2G,W2]])
P12=np.block([[W1],[W2G]])
P21=np.block([[G,1]])
P22=np.block([[G]])
P_=np.block([[P11,P12],[P21,P22]])
Pc=combine(P_)
Pctf=minreal(tf(Pc))

output:
8 states have been removed from the model

Input 1 to output 1:
0
-
1

Input 1 to output 2:
          1e+04
-------------------------
s^3 + 11 s^2 + 20 s + 100

Input 1 to output 3:
     10
------------
s^2 + s + 10

Input 2 to output 1:
0
-
1

Input 2 to output 2:
 1000
------
s + 10

Input 2 to output 3:
1
-
1

Input 3 to output 1:
 1000
------
s + 10

Input 3 to output 2:
   1.756e-12 s + 1e+04
-------------------------
s^3 + 11 s^2 + 20 s + 100

Input 3 to output 3:
     10
------------
s^2 + s + 10

MATLAB:
>> G=ss([-1,-10;1,0],[10;0],[0,1],[0]);
>> W1=tf(100,[0.1 1]);
>> W2=W1;
>> W2G=W2*G;
>> P11 = [0 0; W2G W2];
>> P12 = [W1; W2G];
>> P21 = [G 1];
>> P22 = [G];
>> Pc = [P11 P12; P21 P22];
>> Pctf=tf(Pc)

Pctf =

  From input 1 to output...
   1:  0

                 10000
   2:  -------------------------
       s^3 + 11 s^2 + 20 s + 100

            10
   3:  ------------
       s^2 + s + 10

  From input 2 to output...
   1:  0

        1000
   2:  ------
       s + 10

   3:  1

  From input 3 to output...
        1000
   1:  ------
       s + 10

                 10000
   2:  -------------------------
       s^3 + 11 s^2 + 20 s + 100

            10
   3:  ------------
       s^2 + s + 10

Continuous-time transfer function.

A combine() for TransferFunction would be even simpler, but that is just what has been done manually in the ininital question:
In [113]: from control import *
     ...: Gss = ss([[-1.0, -10.0], [1, 0]], [[10.0], [0]], [0, 1], [0])
     ...: G = tf(Gss)
     ...: W1 = tf([100], [0.1, 1])
     ...: W2 = tf([100], [0.1, 1])
     ...: W2G = W2*G
     ...: num = [ [ [0], [0], W1.num[0][0] ], [W2G.num[0][0], W2.num[0][0], G.num[0][0]], [G.num[0][0], [1], G.num[0][0] ] ]
     ...: den = [ [ [1], [1], W1.den[0][0] ], [W2G.den[0][0], W2.den[0][0], G.den[0][0]], [G.den[0][0], [1], G.den[0][0] ] ]
     ...: P = tf( num, den )
     ...: print(minreal(P))
-2 states have been removed from the model

Input 1 to output 1:
0
-
1

Input 1 to output 2:
          1e+04
-------------------------
s^3 + 11 s^2 + 20 s + 100

Input 1 to output 3:
     10
------------
s^2 + s + 10

Input 2 to output 1:
0
-
1

Input 2 to output 2:
 1000
------
s + 10

Input 2 to output 3:
1
-
1

Input 3 to output 1:
 1000
------
s + 10

Input 3 to output 2:
     10
------------
s^2 + s + 10

Input 3 to output 3:
     10
------------
s^2 + s + 10

I was not able to get the plant in a more complex exampleby the append, connect procedure.
Because I have a MIMO-System (G) with a disturance z2 after G: z2, G element of R^2 and W1 has to 2 inputs and two outputs
But thanks to @bnavigator the combine-method is great. Thanks a lot! Maybe my example will others.

`
import control
from control import *
import matplotlib.pyplot as plt
import numpy as np
from control.statesp import _convertToStateSpace
def combine(systems):
   rrows=[]
for srow in systems:
    s1 = srow[0]
    if not isinstance(s1,StateSpace):
        s1=_convertToStateSpace(s1)

    for s2 in srow[1:]:
        if not isinstance(s2, StateSpace):
            s2 = _convertToStateSpace(s2)
        if s1.dt != s2.dt:
            raise ValueError("Systems must have the same time step")
        n = s1.states + s2.states
        m = s1.inputs + s2.inputs
        p = s1.outputs
        if s2.outputs != p:
            raise ValueError('inconsistent systems')
        A = np.zeros((n, n))
        B = np.zeros((n, m))
        C = np.zeros((p, n))
        D = np.zeros((p, m))
        A[:s1.states, :s1.states] = s1.A
        A[s1.states:, s1.states:] = s2.A
        B[:s1.states, :s1.inputs] = s1.B
        B[s1.states:, s1.inputs:] = s2.B
        C[:, :s1.states] = s1.C
        C[:, s1.states:] = s2.C
        D[:, :s1.inputs] = s1.D
        D[:, s1.inputs:] = s2.D
        s1=StateSpace(A,B,C,D,s1.dt)
    rrows.append(s1)
r1=rrows[0]
for r2 in rrows[1:]:
    if r1.dt != r2.dt:
        raise ValueError("Systems must have the same time step")
    n = r1.states + r2.states
    m = r1.inputs
    if r2.inputs != m:
        raise ValueError('inconsistent systems')
    p = r1.outputs + r2.outputs
    A = np.zeros((n, n))
    B = np.zeros((n, m))
    C = np.zeros((p, n))
    D = np.zeros((p, m))
    A[:r1.states, :r1.states] = r1.A
    A[r1.states:, r1.states:] = r2.A
    B[:r1.states, :] = r1.B
    B[r1.states:, :] = r2.B
    C[:r1.outputs, :r1.states] = r1.C
    C[r1.outputs:, r1.states:] = r2.C
    D[:r1.outputs, :] = r1.D
    D[r1.outputs:, :] = r2.D
    r1=StateSpace(A,B,C,D,r1.dt)
return r1

def make_lowpass(dc, crossw):
return tf([dc], [crossw, 1])
def make_highpass(hf_gain, m3db_frq):
return tf([hf_gain, 0], [1, m3db_frq])
def make_weight(dc, crossw, hf):
s = tf([1, 0], [1])
return (s * hf + crossw) / (s + crossw / dc)
v = 1.1
lo = 2.2
A = [ [0, v], [0, 0] ]
B = [ [lo], [1] ]
C = [ [1, 0], [0, 1] ]
D = [ [0], [0]]
Gss = ss(A, B, C, D)
G = tf(Gss)
G1 = G[0,0]
G2 = G[1,0]
Wy1 = make_weight(dc=1, crossw=2.1, hf=0)
Wy2 = make_highpass(hf_gain=0.99, m3db_frq=2.1)
Wu = make_highpass(hf_gain=0.3, m3db_frq=2.1)
P11 = [ [W1, 0, W1G1], [0, W2, W2G2], [0, 0, 0] ]
P12 = [ [W1G1], [W2G2], [Wu] ]
P21 = [ [1, 0, G1], [0, 1, G2] ]
P22 = [ [G1], [G2] ]
P = [ [P11, P21], [P21, P22]]
P11=np.block( [ [Wy1, 0, Wy1G1], [0, Wy2, Wy2G2], [0, 0,0] ] )
P12=np.block( [ [Wy1G1], [Wy2G2], [Wu] ])
P21=np.block( [ [1, 0, G1], [0, 1, G2] ] )
P22=np.block( [ [G1], [G2] ] )
P_ = np.block( [ [P11, P12], [P21, P22]] )
Pc = combine(P_)
print(Pc.A.shape)
Pcss = minreal( Pc )
print(Pcss)
K, CL, gam, rcond = hinfsyn(Pcss, 2, 1)
Wy = np.block([ [Wy1, 0], [0, v] ])
Wy = combine(Wy)`

Please format your posts to include code within code tags. Mark the multiline code and click on the '<>' button. It will enclose the code in ``` tags
```
def yourcode():
    pass
```

results in
def yourcode():
    pass

with the python tag you even get some highlighting:
```python
def yourcode():
    pass
```

def yourcode():
    pass

See also https://guides.github.com/features/mastering-markdown/

Much better now :)
BTW have you looked at control.robust.augw()? It does something similar using the connect() function and intermediate "distribution" and "summer" systems Ieand Iu.

Use lmi method to avoid the rank conditions but still always penalize your control output even the slightest to avoid the ill-conditioned solutions.

@ilyan do you have an example or a literature source for solving this as a lmi formulation?

@iljastas Just have a look at the hinfsyn options. You can change the method. If nothing has changed in the last years, the default should be riccati based but you can change it to lmi. See this page https://nl.mathworks.com/help/robust/ref/hinfsynoptions.html

This issue has been idle for ~6 months and I don't think there is anything actionable in the comments except some ideas for future functionality.  Closing for now, but someone should create a new issue if there is something specific that we would like to request as an enhancement.


getFrameAtTime: videoFrame is a NULL pointer

Hi, Thank you very much for you library!
Now I was debugging example application in android studio.(Android Studio3.1.3)
Video was playing.
By the way, messages show when I tap 'stop app' icon in Android Studio.
Message show "Unfortunately, AndroidYouTubePlayer has stopped ".
I want to your detailed answer.

Hi, sorry I don't quite understand the issue. Provide more details if you can.


[Nested Tabstop] nested tabstop still be there even if outer is deleted

snippet cc "Blade cc_ item" b
  cc_${1:library}(
    name = '${2:`expand('#:t:r')`}',
    hdrs = [
      '$2.h',
    ],
    ${3:srcs = [
      '$2.cc',
    ],}
    ${4:deps = [
      $5
    ],}
  )

For the snip, even if $3 is deleted, the $2.cc still be there. After changing $2, things messed up:

Yeah, this issue can't happen with the default choiceNode-approach for nesting placeholders, which is one reason for having this in the wiki and not in luasnip.
If I have time I'll look into how we can delete the nested nodes with the parser_nested_assembler from the wiki.
My main problem is that I'm not sure how to reliably detect that the default-content (eg. the SELECTed region) is cleared.
Maybe via an autocommand after jumping into it.. I'll have to look into that.

Looking forward to it!


Sensor value scaling setting for -plot

Is your feature request related to a problem? Please describe.
Displaying two graphs with huge difference in numbers wont look pretty.
My power consumption ranges in the 400-7000 W
and my temperature sensor is like -20 to 35
Describe the solution you'd like
Scaling setting for the sensors used for graphs
Describe alternatives you've considered
Create a new sensor that is prescaled
Additional context
I guess i'd want a setting like below
- type: plot
  x_start: 5
  y_start: 10
  x_end: 199 # inclusive
  y_end: 119 # inclusive
  duration: 36000 # 10h in seconds
  low: -25 # if all values are larger than 10, we include 10 anyway
  high: 35 # if all values are smaller than 20, we include 20 anyway
  ylegend:
    position: right # show legend on the right
    color: red
  yaxis:
    tick_width: 4 # show very wide ticks
    grid: 3 # place a grid point every 3rd pixel
  data:
    - entity: sensor.power_meter
      width: 3 # show very thick line
      value_scale: 0.001
    - entity: sensor.my_outside_temperature
      color: red

That sounds easily doable with the current code, I'll have a look at it in the next weeks.


Kernel legacy compatibility

Restore compatbility with some legacy kernels (linux 3.2) because some missing declarations.

Hi @lelegard ,
Great! And good job with https://github.com/tsduck/tsduck/commit/480fd69ee19348d736c7b363d46a20695d041d8e (the if(0) is because my C and not C++ background).
However, one question: "I'm only not fully satisfied with the solution for old kernels when declaring DS_DVB_C_ANNEX_C." Do you feel that my solution is correct?

Hi @lelegard ,
Regarding my previos message, I found one error regarding this special case:
make test
source release-x86_64/setenv.sh && release-x86_64/utest
: invalid value DVB-C for option --delivery-system, use one of "ATSC", "ATSC-MH", "CMMB", "DAB", "DSS", "DTMB", "DVB-C", "DVB-C/A", "DVB-C/B", "DVB-C/C", "DVB-C2", "DVB-H", "DVB-S", "DVB-S-Turbo", "DVB-S2", "DVB-T", "DVB-T2", "ISDB-C", "ISDB-S", "ISDB-T", "undefined"
make[1]: *** [test] Error 1
make: *** [test] Error 2

So, I feel I can't do the simple
#if LINUX_VERSION_CODE < KERNEL_VERSION(3,3,0)
        DS_DVB_C_ANNEX_A = ::SYS_DVBC_ANNEX_AC,
#else
        DS_DVB_C_ANNEX_A = ::SYS_DVBC_ANNEX_A,
#endif
        DS_DVB_C_ANNEX_B = ::SYS_DVBC_ANNEX_B,
#if LINUX_VERSION_CODE < KERNEL_VERSION(3,3,0)
        DS_DVB_C_ANNEX_C = -11,
#else
        DS_DVB_C_ANNEX_C = ::SYS_DVBC_ANNEX_C,
#endif

But I do it in this way as if I repeat the SYS_DVBC_ANNEX_AC then the compilation fails.
Any idea to fix this problem?

Hi @lelegard ,
If I interchange the code (DS_DVB_C_ANNEX_A = -11 and DS_DVB_C_ANNEX_C = ::SYS_DVBC_ANNEX_AC) then executing all tests in Debian 7 with:
 make CC=/usr/lib/gcc-4.9-backport/bin/gcc GCC=/usr/lib/gcc-4.9-backport/bin/gcc CXX=/usr/lib/gcc-4.9-backport/bin/g++ AR=/usr/lib/gcc-4.9-backport/bin/gcc-ar ARFLAGS=rc test-suite
[...]
----  ALL 884 tests passed

So, we only need to fix this remaining trouble.
However, I don't have the solution.
Can you help please?

What is the problem with the current code (master repo):
#if LINUX_VERSION_CODE < KERNEL_VERSION(3,3,0)
        DS_DVB_C_ANNEX_A = ::SYS_DVBC_ANNEX_AC,
#else
        DS_DVB_C_ANNEX_A = ::SYS_DVBC_ANNEX_A,
#endif
        DS_DVB_C_ANNEX_B = ::SYS_DVBC_ANNEX_B,
#if LINUX_VERSION_CODE < KERNEL_VERSION(3,3,0)
        DS_DVB_C_ANNEX_C = -11,
#else
        DS_DVB_C_ANNEX_C = ::SYS_DVBC_ANNEX_C,
#endif

Before kernel 3.3, SYS_DVBC_ANNEX_AC is an enum value. With 3.3 onward, it is a macro definition pointing to SYS_DVBC_ANNEX_A. So, the code should be ok.

As a reference, you may check the attached file: dvbapi-headers-history.zip
The shell script does the following:

Clone the master kernel repo from kernel.org.
Checkout all main X.X.X versions of the kernel, one by one, and extract the DVB API header files.
Remove all duplicates, ie. consecutive versions of the kernel with identical DVB API headers.

The result is only 42 directories with 8 header files each (they are all in the zip file). It is then very easy to track the evolution of the various symbols:
$ grep ANNEX_AC kernel_*/*
kernel_2_06_028_dvbapi_5_00/frontend.h:	SYS_DVBC_ANNEX_AC,
kernel_2_06_029_dvbapi_5_00/frontend.h:	SYS_DVBC_ANNEX_AC,
kernel_2_06_030_dvbapi_5_00/frontend.h:	SYS_DVBC_ANNEX_AC,
kernel_2_06_032_dvbapi_5_01/frontend.h:	SYS_DVBC_ANNEX_AC,
kernel_2_06_036_dvbapi_5_02/frontend.h:	SYS_DVBC_ANNEX_AC,
kernel_3_00_000_dvbapi_5_03/frontend.h:	SYS_DVBC_ANNEX_AC,
kernel_3_01_000_dvbapi_5_03/frontend.h:	SYS_DVBC_ANNEX_AC,
kernel_3_02_000_dvbapi_5_04/frontend.h:	SYS_DVBC_ANNEX_AC,
kernel_3_03_000_dvbapi_5_05/frontend.h:#define SYS_DVBC_ANNEX_AC	SYS_DVBC_ANNEX_A
kernel_3_05_000_dvbapi_5_06/frontend.h:#define SYS_DVBC_ANNEX_AC	SYS_DVBC_ANNEX_A
kernel_3_07_000_dvbapi_5_09/frontend.h:#define SYS_DVBC_ANNEX_AC	SYS_DVBC_ANNEX_A
kernel_3_07_001_dvbapi_5_09/frontend.h:#define SYS_DVBC_ANNEX_AC	SYS_DVBC_ANNEX_A
kernel_3_07_002_dvbapi_5_09/frontend.h:#define SYS_DVBC_ANNEX_AC	SYS_DVBC_ANNEX_A
kernel_3_07_003_dvbapi_5_09/frontend.h:#define SYS_DVBC_ANNEX_AC	SYS_DVBC_ANNEX_A
kernel_3_07_004_dvbapi_5_09/frontend.h:#define SYS_DVBC_ANNEX_AC	SYS_DVBC_ANNEX_A
kernel_3_07_005_dvbapi_5_09/frontend.h:#define SYS_DVBC_ANNEX_AC	SYS_DVBC_ANNEX_A
kernel_3_07_006_dvbapi_5_09/frontend.h:#define SYS_DVBC_ANNEX_AC	SYS_DVBC_ANNEX_A
kernel_3_07_007_dvbapi_5_09/frontend.h:#define SYS_DVBC_ANNEX_AC	SYS_DVBC_ANNEX_A
kernel_3_07_008_dvbapi_5_09/frontend.h:#define SYS_DVBC_ANNEX_AC	SYS_DVBC_ANNEX_A
kernel_3_07_009_dvbapi_5_09/frontend.h:#define SYS_DVBC_ANNEX_AC	SYS_DVBC_ANNEX_A
kernel_3_07_010_dvbapi_5_09/frontend.h:#define SYS_DVBC_ANNEX_AC	SYS_DVBC_ANNEX_A
kernel_3_09_000_dvbapi_5_10/frontend.h:#define SYS_DVBC_ANNEX_AC	SYS_DVBC_ANNEX_A
kernel_3_10_000_dvbapi_5_10/frontend.h:#define SYS_DVBC_ANNEX_AC	SYS_DVBC_ANNEX_A
kernel_4_02_000_dvbapi_5_10/frontend.h:#define SYS_DVBC_ANNEX_AC	SYS_DVBC_ANNEX_A
kernel_4_05_000_dvbapi_5_10/frontend.h:#define SYS_DVBC_ANNEX_AC	SYS_DVBC_ANNEX_A
kernel_4_09_000_dvbapi_5_10/frontend.h:#define SYS_DVBC_ANNEX_AC	SYS_DVBC_ANNEX_A
kernel_4_12_000_dvbapi_5_10/frontend.h:#define SYS_DVBC_ANNEX_AC	SYS_DVBC_ANNEX_A
kernel_4_13_000_dvbapi_5_10/frontend.h:#define SYS_DVBC_ANNEX_AC	SYS_DVBC_ANNEX_A
kernel_4_14_000_dvbapi_5_10/frontend.h:#define SYS_DVBC_ANNEX_AC	SYS_DVBC_ANNEX_A
kernel_4_15_000_dvbapi_5_10/frontend.h:#define SYS_DVBC_ANNEX_AC	SYS_DVBC_ANNEX_A
kernel_4_16_000_dvbapi_5_11/frontend.h:#define SYS_DVBC_ANNEX_AC	SYS_DVBC_ANNEX_A
kernel_4_19_000_dvbapi_5_11/frontend.h:#define SYS_DVBC_ANNEX_AC	SYS_DVBC_ANNEX_A
kernel_5_03_000_dvbapi_5_11/frontend.h:#define SYS_DVBC_ANNEX_AC	SYS_DVBC_ANNEX_A

What is the problem with the current code (master repo):

The problem is quite obscure... Let me to explain it:

With the current code, the TSDuck library compiles OK.
However, when compiling and executing the tests comething fails (test 4). See this message: : invalid value DVB-C for option --delivery-system, use one of "ATSC", "ATSC-MH", "CMMB", "DAB", "DSS", "DTMB", "DVB-C", "DVB-C/A", "DVB-C/B", "DVB-C/C", "DVB-C2", "DVB-H", "DVB-S", "DVB-S-Turbo", "DVB-S2", "DVB-T", "DVB-T2", "ISDB-C", "ISDB-S", "ISDB-T", "undefined"
And if I try to use #define DS_DVB_C_ANNEX_C   DS_DVB_C_ANNEX_A then the compilation of the library fails because in the code at some points appears this:
 case DS_DVB_C_ANNEX_A: case DS_DVB_C_ANNEX_C:
And this is valid code, but it can't be compiled because both identifiers share the same value.

So, in order to maintain clean code, DS_DVB_C_ANNEX_A & DS_DVB_C_ANNEX_C can't share the same value. But, when doing in this way some of the tests fails.
Then I ask you for a balancing solution. In case we need to break something I prefer to define DS_DVB_C_ANNEX_A with a negative value and DS_DVB_C_ANNEX_C as SYS_DVBC_ANNEX_AC because at time the tests compile with no errors. However, I don't know about other side effects with this solution.
What's your opinion?

However, when compiling and executing the tests comething fails (test 4).

Please be more specific. Which test 4? In which environment? Before or after kernel 3.3? Or both?

And if I try to use #define DS_DVB_C_ANNEX_C DS_DVB_C_ANNEX_A

No, you can't do that, this is inconsistent.
All these efforts and time for obsolete unsupported kernels. I knew I should have stayed to my original position: obsolete and no longer supported, full stop.


SW-1558 Autocomplete with new label

@constanzauanini this will affect our existing autocompletes as well ( i think we have only one - for species name in create accession ).. it will look like this..

should i just make this an 'Autocomplete2' or should i use the new Textfield for Number of Trees so they are aligned?

@constanzauanini this will affect our existing autocompletes as well ( i think we have only one - for species name in create accession ).. it will look like this..
should i just make this an 'Autocomplete2' or should i use the new Textfield for Number of Trees so they are aligned?

I added an isV1 option for now, this seems to handle all our use-cases.

@constanzauanini this will affect our existing autocompletes as well ( i think we have only one - for species name in create accession ).. it will look like this..
should i just make this an 'Autocomplete2' or should i use the new Textfield for Number of Trees so they are aligned?

I added an isV1 option for now, this seems to handle all our use-cases.

Yes, I think this was the best option. Thank you!


Implement flake8-typing-imports

https://github.com/asottile/flake8-typing-imports

[ ] TYP001 | guard import by TYPE_CHECKING
[ ] TYP002 | @overload is broken in <3.5.2
[ ] TYP003 | Union[Match, ...] or Union[Pattern, ...] must be quoted in <3.5.2
[ ] TYP004 | NamedTuple does not support methods in 3.6.0
[ ] TYP005 | NamedTuple does not support defaults in 3.6.0
[ ] TYP006 | guard typing attribute by quoting

We're planning to implement flake8-type-checking (#1785) which, IIUC, covers TYP001. I'm not a huge fan of supporting TYP002 through TYP005 since we only support Python 3.7+. So I'm tempted not to implement this plugin. Any reactions to what you'd get from #1785?

Didn't notice that this is gonna be covered by #1785. Sorry for a waste of time on that

No prob at all.

The configuration of flake8-typing-imports is not implemented.

[ ] exempt-modules
[ ] strict
[ ] pydantic-enabled
[ ] pydantic-enabled-baseclass-passlist
[ ] fastapi-enabled
[ ] fastapi-dependency-support-enabled
[ ] cattrs-enabled

We should reopen this issue.

@JonathanPlasse - I think you're referring to flake8-type-checking? I've opened a new issue for configuration at #2195. (I think a new issue is appropriate.)

Oops, my bad. :sweat_smile:

TYP001 is a bit different than the checks in flake8-type-checking. It checks if the typing module has a given attribute or not for the specific python version.
So, if I have the following import with min_python_version=3.8.0 set:
from typing import TypeGuard

it'll complain as:
script.py:1:1: TYP001 guard import by `if TYPE_CHECKING:`: TypeGuard
(not in 3.8.0, 3.8.1, 3.8.2, 3.8.3, 3.8.4, 3.8.5, 3.8.6, 3.8.7, 3.8.8, 3.8.9, 3.8.10, 3.8.11, 3.8.12, 3.8.13, 3.8.14, 3.8.15, 3.9.0, 3.9.1, 3.9.2, 3.9.3, 3.9.4, 3.9.5, 3.9.6, 3.9.7, 3.9.8, 3.9.9, 3.9.10, 3.9.11, 3.9.12, 3.9.13, 3.9.14, 3.9.15)
from typing import TypeGuard
^

as TypeGuard was only introduced in 3.10.

@skshetry - I think you might be confusing this with flake8-typing-imports (which has different rules, and uses a different code prefix)

@skshetry - Totally and that does seem useful. (I thought flake8-typing-imports was only relevant for linting pre-3.7 code, which we don't really support, but I misunderstood that check.)

I'm tracking in #2302.


Feature: Add a option to take snapshot from video

Feature request
Add new method to take the snapshot of video at the current moment.
like
getCurrentFrame
this will return bob URL of the current frame

Duplicate of https://github.com/cookpete/react-player/issues/341


fastflags not working

Its just not working somehow, checked the json and everything was there but when I launch roblox the fastflags doesn't apply into the game I have 0 idea why. Heres the most recent logs if you need it (its petsim don't judge).
Bloxstrap_20230528T101157Z.log

{
"DFIntTaskSchedulerTargetFps": "9999",
"FFlagDebugGraphicsPreferD3D11": "True",
"FFlagFixGraphicsQuality": "True",
"FFlagDebugForceFutureIsBrightPhase3": "True"
}
not 21 slider

staying on 60 fps

WAIT THE JSON ISN"T THERE????

Okay, fair enough. Are you sure that Bloxstrap shows whenever you launch Roblox?
Also, Player Clientsettings aren't stored there.

oh wait what bloxstrap isn't showing up

See if you can launch Bloxstrap. There should be a "Play Roblox" shortcut on your desktop, or you can search for it in the Start menu.


Using uqff downloads the full safetensors weights.

Describe the bug
I ran the following, and it downloaded both uqff as well as full weights from Meta. I tried to skip -m, but it seems -m is required.
./mistralrs-server -i vision-plain -m meta-llama/Llama-3.2-11B-Vision-Instruct -a vllama --from-uqff EricB/Llama-3.2-11B-Vision-Instruct-UQFF/llama-3.2-11b-vision-hqq8.uqff
Latest commit or version
3e79d85

I had same problem.

@chigkim @vietvudanh you can now load UQFF models without downloading the full weights in #849!
For example (https://huggingface.co/EricB/Llama-3.2-11B-Vision-Instruct-UQFF):
./mistralrs-server -i vision-plain -m EricB/Llama-3.2-11B-Vision-Instruct-UQFF -a vllama --from-uqff llam3.2-vision-instruct-q4k.uqff

More models can be found here: https://huggingface.co/collections/EricB/uqff-670e4a49d56ecdd3f7f0fd4c.


Add ability to run all tests in a file

A feature in the (seemingly dead) vscode-phpunit-extended project is the ability to run all tests in a single file.  This can be very useful.

Hi, you mean like if there are multiple classes in one file? Otherwise it should already be possible to run the whole class right.

Hi, you mean like if there are multiple classes in one file? Otherwise it should already be possible to run the whole class right.

Oh, is this covered under the "PHPUnit Test" command? I think I misunderstood.

Oh, is this covered under the "PHPUnit Test" command? I think I misunderstood.

Yep it should work if you have the cursor on the class when you execute it. If the cursor is on a function it executes just the function =) Here's a gif from the readme https://raw.githubusercontent.com/elonmallin/vscode-phpunit/master/images/vscode-phpunit-test-class.gif

Yep it should work if you have the cursor on the class when you execute it. If the cursor is on a function it executes just the function =) Here's a gif from the readme https://raw.githubusercontent.com/elonmallin/vscode-phpunit/master/images/vscode-phpunit-test-class.gif

Oh, in that case I do think there should be a separate command to run the "nearest class", so I could run the entire class while my cursor is anywhere in the file. Although as you said above, if one so happened to have multiple classes in the same file, I would also think a run all tests in current file would be useful too, but I don't know if that has additional hurdles.

Oh, in that case I do think there should be a separate command to run the "nearest class", so I could run the entire class while my cursor is anywhere in the file. Although as you said above, if one so happened to have multiple classes in the same file, I would also think a run all tests in current file would be useful too, but I don't know if that has additional hurdles.

There's another use of the PHPUnit Test command if you put the cursor not on a function name or class name and run you will get a "quick pick" list where the last test you ran is at the top, then the class. So it's a down arrow and enter away from running the class test from anywhere in the file.
Ofc the downside is you can't hotkey it and you can't test multiple classes in the same file at once. Testing multiple classes I don't think is very common and probably not such a good practice. Testing the class with a hotkey might be but I don't think you test the whole class multiple times over, usually iterating on a function and testing that until it works, then running the full class test more seldomly so not as important. That said I'm happy to look at a PR =)

There's another use of the PHPUnit Test command if you put the cursor not on a function name or class name and run you will get a "quick pick" list where the last test you ran is at the top, then the class. So it's a down arrow and enter away from running the class test from anywhere in the file.
Ofc the downside is you can't hotkey it and you can't test multiple classes in the same file at once. Testing multiple classes I don't think is very common and probably not such a good practice. Testing the class with a hotkey might be but I don't think you test the whole class multiple times over, usually iterating on a function and testing that until it works, then running the full class test more seldomly so not as important. That said I'm happy to look at a PR =)

Thank you, I will investigate further.

Thank you, I will investigate further.


Specify multiple single value extractors in flatExtracting

For the time being, to extract multiple values and combine them before performing assertions we have to do something like this:
// ch type is TolkienCharacter
assertThat(fellowshipOfTheRing).flatExtracting(ch -> asList(input.getName(), ch.getAge()))
                               .contains(33 ,"Frodo", "Legolas", 1000);

It would be nice to simply specify the list of extractors (Java 8) :
assertThat(fellowshipOfTheRing).flatExtracting(TolkienCharacter::getName,
                                               TolkienCharacter::getAge))
                               .contains(33 ,"Frodo", "Legolas", 1000);

or with properties names (Java 7) :
assertThat(fellowshipOfTheRing).flatExtracting("name", "age"))
                               .contains(33 ,"Frodo", "Legolas", 1000);

I already have working prototype for the multiple extractor function method. I will clean it up and submit a pull requests.

Just noticed that the prototype was not really working. It was expecting all collections to contain objects of the same type.
When I tried to make it work for untyped objects, there is a conflict between:
public <V> ListAssert<V> flatExtracting(Extractor<? super T, ? extends Collection<V>> extractor)
 public final ListAssert<Object> flatExtracting(Function<Object, ? extends Collection<Object>>... extractors)
so it does not seem to be possible to make this work (unless I'm missing something).

I think what we want is :
public ListAssert<Object> flatExtracting(Function<Object, Object>... extractors)
// or
public ListAssert<Object> flatExtracting(Extractor<Object, Object>... extractors)

and not:
public ListAssert<Object> flatExtracting(Function<Object, ? extends Collection<Object>>... extractors)

the reason being that each extractor extracts one value, combine them in a list and flatten it.
conceptually it is converting a list of single value extractors to one multi value extractor, like allAsList in guava's future.
I'm not sure whether we would need to use wildcard or not, e.g:
public ListAssert<Object> flatExtracting(Extractor<? super Object, ? extends Object>... extractors)

I do not understand. If we want to extract a single value why use flatExtracting? The existing method public <V> ListAssert<V> flatExtracting(Extractor<? super T, ? extends Collection<V>> extractor) does not extract single values. For extracting single values is the extracting method. Or I'm I missing something?
Anyway:
public ListAssert<Object> flatExtracting(Function<Object, Object>... extractors)
public ListAssert<Object> flatExtracting(Extractor<Object, Object>... extractors)
public ListAssert<Object> flatExtracting(Extractor<? super Object, ? extends Object>... extractors)

each cause a compile time conflict with existing method:
public <V> ListAssert<V> flatExtracting(Extractor<? super T, ? extends Collection<V>> extractor)

We want to extract multiple single values as in:
assertThat(fellowshipOfTheRing).flatExtracting(TolkienCharacter::getName,
                                               TolkienCharacter::getAge))
                               .contains(33 ,"Frodo", "Legolas", 1000);

We combine them in a list si that our users don't have to do it manually as in:
// ch type is TolkienCharacter
assertThat(fellowshipOfTheRing).flatExtracting(ch -> asList(input.getName(), ch.getAge()))
                               .contains(33 ,"Frodo", "Legolas", 1000);

@PascalSchumacher does it make sense to you ?

Sure, thanks for explaining. :)

Done for 2.5.0 by specifying extractors by name and 3.5.0 by specifying extractors as lambdas.


PR_TEMPLATE_ADDED

the PR TEMPLATE has been added in the .github directory . @anubha-v-ardhan please review the code and let me know if you want some changes.

Can u suggest what changes I should make?

@anubha-v-ardhan we don't need a PR template as PR will be created from the issue itself. right ?

@anubha-v-ardhan we don't need a PR template as PR will be created from the issue itself. right ?

Yeah, This was a temporary plan when we only had "PR to tweet" support. I think we can close this now


batch converter

the batch converter seems to be stuck on 15 fractional bits.

Thanks for the report. Should now be fixed.
(I should probably take this as my cue to implement some automated testing...)


connection.end not a function

Hi @CGNonofr ,
I'm wondering if you can reproduce the below issue.
whenever I call monacoLanguageClientConnection.dispose, it throws an error says connection.end is not a function.
here is some screenshots for details.

Hi!
vscode-ws-jsonrpc wasn't updated, you're now supposed to use @codingame/monaco-jsonrpc instead
I think it's your issue

Hi!
vscode-ws-jsonrpc wasn't updated, you're now supposed to use @codingame/monaco-jsonrpc instead
I think it's your issue

Hi!
vscode-ws-jsonrpc wasn't updated, you're now supposed to use @codingame/monaco-jsonrpc instead
I think it's your issue

Yup, thank you for the tips.
after using the @codingame/monaco-jsonrpc, it hits another issue which I created a PR towards the open source jsonrpc project.
wondering if you have any insight around this.
https://github.com/microsoft/vscode-languageserver-node/pull/719

Hi!
vscode-ws-jsonrpc wasn't updated, you're now supposed to use @codingame/monaco-jsonrpc instead
I think it's your issue

Yup, thank you for the tips.
after using the @codingame/monaco-jsonrpc, it hits another issue which I created a PR towards the open source jsonrpc project.
wondering if you have any insight around this.
https://github.com/microsoft/vscode-languageserver-node/pull/719


Support minecraft 1.9 to minecraft 1.11

Currently, minecraft 1.12 is the oldest minecraft version that we support. However, resourcepack predicates were introduced in minecraft 1.9, so it should be possible to support minecraft 1.9, 1.10, and 1.11 as well. I have received a couple of requests to actually do this.
 Unfortunately, that event is not often fired in minecraft 1.11 and earlier, which breaks the system on those minecraft versions. Perhaps, I could work around it, but this will probably require even more usage of the InventoryClickEvent, which is not so nice...

When adding amounts to custom ingredients, I had to get rid of PrepareItemCraftEvent anyway. That was the only thing preventing me from supporting minecraft 1.11 to 1.9 (as far as I am aware). So I should try to add support for these versions.

It turns out there are more obstacles to support these versions than I initially expected:
Minecraft 1.11.2

Doesn't have BlockBreakEvent.setDropItems(boolean) and BlockBreakEvent.isDropItems()
Doesn't have EntityPickupItemEvent, but does have PlayerPickupItemEvent (so we would miss proper hopper stacking)

Minecraft 1.10.2

All limitations of Minecraft 1.11.2
Doesn't have ItemMeta.setUnbreakable(boolean), but there is some kind of work-around: https://www.spigotmc.org/threads/cross-version-itemmeta-setunbreakable.418928/
Doesn't have ShulkerBox (so any shulkerbox work-arounds would have to be moved to KnokkoCore)
Doesn't have AnvilInventory.getRepairCost(), AnvilInventory.setRepairCost(int), and  AnvilInventory.getRenameText()
Doesn't have World.spawn(Location, Class, lambda) (would require a minor refactoring)
Misses some enchantments (requires some refactorings in CustomItemsEventHandler.getItemEnchantFactor)
Misses some damage causes (requires some refactorings in CustomItemsEventHandler.isReducedByArmor)

Minecraft 1.9.4

All limitations of Minecraft 1.10.2
Doesn't have LivingEntity.getPotionEffect()
Doesn't have Entity.setGravity(boolean)

Due to the large number of problems and the small interest in these versions, I am not going to solve this anytime soon.

Since these MC versions are barely used anymore, I won't be adding support for them at all.


chore(main): release 0.20.2

:robot: I have created a release beep boop
0.20.2 (2024-12-20)
⛓ Dependencies

automated: Update icons (#225) (b1729e3)

This PR was generated with Release Please. See documentation.

:robot: Created releases:

v0.20.2
:sunflower:


Chrome autoplay policy fix

Now calling AudioContext resume when the user interacts with the page to fix the new changes in Chrome's autoplay policy.
I confirm I have signed the Contributor License Agreement.

Just a heads up: It looks like autoplay policy is being reverted again with an updated Chrome 66.
Related Chromium issue: https://bugs.chromium.org/p/chromium/issues/detail?id=840866

@JarnoVgr To be precise, the autoplay change in Chrome has been delayed until M70 (October). We should still merge this ASAP because any apps published beforehand will have problems when this change goes live.
@vkalpias Unless there's no reason not to do so, I'd recommend just merging this.


Bill of Health - Export-DbaDiagnosticQuery - ScriptAnalyzer should be thumbs up now

Type of Change

[X] Bug fix (non-breaking change, fixes #)
[ ] New feature (non-breaking change, adds functionality)
[ ] Breaking change (effects multiple commands or functionality)
[ ] Ran manual Pester test and has passed (`.\tests\manual.pester.ps1)
[ ] Adding code coverage to existing functionality
[ ] Pester test is included
[ ] Nunit test is included
[ ] Documentation
[ ] Build system

Purpose
Discovered the dbatools Bill of Health page, this PR should get a thumbs up for ScriptAnalyzer
Approach
I've removed a variable assignment which was no longer used.
And I removed a helper function which was also available as a central function.
Commands to test
Run ScriptAnalyzer, there should be no warnings for Export-DbaDiagnosticQuery

hey @andrekamman ! thanks so much. Would you be able to check what's up with the conflict? We've been making a lot of changes, so you may need to update your dev branch.

I noticed I was very far behind. My git foo is still not awesome level. I decided to refork dbatools and do the change again. Which ofcourse disables the automatic updating of this PR :-(
What would be best way to handle this? Is there a way I can update the file? Or do I attach so someone with more rights can do that or perhaps submit new PR?
Note to self: learn how to to update the fork

Use GitHub Desktop for Windows ;) I don't mess with command line. I <3 GUI.
But the changes are so few, I'd resync, create a new branch, make the changes again and resubmit PR.


Feat Request: the webpage prohibits the screen from automatically turning off.

These documents may be helpful. :smile:
Chrome developer docs
MDN

This feature had been add in #7.


PageQuerySet.unpublish doesn't call page_unpublished signal

This may cause issues with pages not being purged from the cache. This method is only currently used in Wagtail to unpublish pages after copying them (which don't get their page_published signal fired anyway).
I suggest we remove this method and add a keep_live attribute to the Page.copy method which when set to false, will not publish the copied pages in the first place.

Agreed that this should be done in team meeting. @kaedroho to address.

Fixed by #1934


Update SNS.1 to handle TopicArn

Issue #, if available:
Description of changes: Correct parameter for SNS.1 to use correct TopicArn instead of SNSTopicArn
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

We will fix this in the next release.

This has been addressed in v2.1.0


Scene transition notification

I'm trying to figure out how to get some kind notification if the user switches between scenes. I need the notification to stop/pause a video in one if my scenes. Otherwise it continues playing in the background. I didn't find anything in the code or in the doc. Is there some workaround for this or did I miss something.
Thanks

The way TabNavigator switches tabs is that you decide which TabItem has the prop selected={true}, which is determined by your code. So when you change which tab is selected, that's when you'd know that the user is switching between scenes.

Yes, thats true. I figured out that the video doesn't stop because only the selected scene is going to be rerendered. This causes the player to continue playing in the background.

We keep the scenes around because they might contain UI state (e.g. scroll position, how far you've watched a video). Sounds like you have enough to work with to come up with a solution.

Just in case someone comes by, my solution to the problem: Since only the selected scene is getting updated ("rendered") you can't update other scenes by passing down props.  So I used a EventEmitter to emit  a transition event, when the user is switching between scenes.


Fixed Issue#28

Fixed Issue #28
Implemented Devices Reducer with dummy data and removed devices data constant

Test the removed expo-google-auth by running an eas custom android build @j33l


 Most (though not all) are one commit each, so it might be easier to look at the commits separately rather than the overall diff. We could also cherry-pick the ones you like, or I could make 14 PRs :-)
Paper dataset generation configs:

Rename Configs/2203_00690 to Configs/paper_2203_00690 (subpackage names can't start with a number), add an __init__.py to the folder, and replace xxxx_yyyy in the files with the actual folder name. This way the configurations work, and they can be imported.
Remove parameter specifications in the config that are overridden by cross_dict, preventing a warning
Add leading zeros to test set config filenames, so sorted(glob('config_test_*.py')) returns the test configs in order.

Image generation: (all to avoid always-on warnings)

Disable KWARGSNUMERICWARNING1/KWARGSNUMERICWARNING2 by default.
Avoid using the deprecated pd.DataFrame.append function when preparing metadata to csv, and remove some duplication in the metadata writing code.
List some columns to be left out of metadata by default, which prevents the 'column could not be serialized' warning to be always thrown. Now, if you see the warning, something new you added isn't getting written.

Tensorflow dataset generation:

tfrecord image order now matches sorted glob of image files
shuffle=False option, useful for re-using the dataset loading code for test data

Inference:

When checking if the covariance matrix is positive-definite, check symmetry and existence of Cholesky decomposition rather than doing an eigendecomposition and checking the eigenvalues are positive. Roughly doubles the inference speed for me; see https://stackoverflow.com/questions/16266720 for discussion, you'll want to read several of the answers.
Catch-and-return-inf on a few more singular cases. May only happen if MCMC is being very naughty.

Tests:

add an ini so people can attempt to use pytest as the test runner. Unfortunately, I still get some mysterious numba errors when using pytest that don't appear when using unittest. That might be specific to my setup/numba version though, not sure.
Use a batch size of 8, not 1000, to test xresnet34. My GPU doesn't have enough RAM for 1000.

Misc:

Backport #34 (including 64->32 fix) to main. Should help you get a clean diff when you compare main and redshift_input, and helps me get the benefits of that PR when making new test sets off main.
Add the cosmos dataset directory to gitignore. Prevents git from slowing down / complaining about dirty working directory during some operations.

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
32 unchanged lines in 4 files lost coverage.
Overall coverage decreased (-9.7%) to 84.961%

Files with Coverage Reduction
New Missed Lines
%

../../../../../opt/hostedtoolcache/Python/3.8.12/x64/lib/python3.8/site-packages/paltas/generate.py
2
95.0%

../../../../../opt/hostedtoolcache/Python/3.8.12/x64/lib/python3.8/site-packages/paltas/Analysis/dataset_generation.py
4
93.79%

../../../../../opt/hostedtoolcache/Python/3.8.12/x64/lib/python3.8/site-packages/paltas/Analysis/hierarchical_inference.py
9
91.09%

../../../../../opt/hostedtoolcache/Python/3.8.12/x64/lib/python3.8/site-packages/paltas/Configs/config_handler.py
17
93.96%

Totals

Change from base Build<PHONE_NUMBER>:
-9.7%

Covered Lines:
2062

Relevant Lines:
2427

💛  - Coveralls


WIP: Resolve "add plugin capability into the framework" - [closed]

In GitLab by @Schumann on May 1, 2020, 13:24
Merges 15-add-plugin-capability-into-the-framework -> master
Closes #15

In GitLab by @Schumann on May 1, 2020, 13:25
closed


feat(showcase): add angular and karma

Minor format tweaks

@stevemao looks good to me 👍 I think we might want to flag a core maintainer from each project on this pull request, to make sure they're cool with being added to the list -- I'm sure they most likely will be.

CC @dignifiedquire @IgorMinar @pkozlowski-opensource

I'm cool. Thanks for adding it :)

Is there anything left on this PR?

@jameswomack Should be good to merge

This was only added to a particular spanish beta and is neither in the current english nor spanish version :/


Fix incorrect annotation position.

The annotation is currently pointing at the last master/main commit instead of the first pull request commit. This PR fixes that.

LGTM! Thanks @rizo!


Node object from interface implementation results in duplicate ID

I defined an interface like this:
  interface(:notification) do
    field :id, non_null(:id)
    # a bunch of other fields with resolver functions that resolve the same for every interface implementation
  end

And there's a connection:
  connection(node_type: :notification)

  node object(:me) do
    connection field :notifications, node_type: :notification do
      resolve &Notification.list_my_notifications/2
    end
  end

And then I'm defining the concrete implementation as a node object like this. And since I don't want to copy all the fields including the resolver functions to every interface implementation, I'm using import_fields to import them from the interface.
  node object(:notification_about_something_specific) do
    interface :notification
    import_fields :notification

    # plus specific fields for this notification type
  end

And this basically works as expected when using the API. However, there is one problem: By using both node and import_fields, two :id field definitions are created. And those two ID fields will end up in the SDL file generated with mix absinthe.schema.sdl, which then causes tools that read that file to return an error.
I'm not sure how to fix this. I can move all the field definitions to the interface implementations instead of using import_fields, but that kind of defeats the purpose of defining an interface. And I can remove the id field from the interface definition, so that only the implementations define it, but that seems logically wrong.
I wonder if it would make sense if the node macro overwrites any existing id field instead of just adding one?

I`ve got just the same error, resulting SDL looks like:
type User {
  "The id of the object."
  id: ID!

  "The ID of an object"
  id: ID!

  role: UserRole!

  email: String!
}

Honestly, I didn't realize people were using import_fields on interfaces. I can see how it is sometimes convenient but the moment you need a custom resolver things can get a bit weird. We can work to make import_fields deduplicate, but there are trade offs. The duplicate ID thing without an explicit :id field is weird, will look into it.


[docs] Fix typos in base components docs

Fixing some typos in the base component docs

[x] I have followed (at least) the PR section of the contributing guide.

Thanks


Aio image push

Which issue(s) this PR addresses:

Closes #469
This PR adds a process for building, tagging, and releasing multi-arch AIO container images to quay.io/microshift/microshift-aio.

you had a tiny conflict, it's resolved now. I only wonder how long will it take to create both images, the problem is that we build the arm64 image compiling microshift under qemu-static-arm64, it'd be far more efficient to just build the microshift-arm64 binary, and then have a dockerfile that copied it inside (similar to packaging/images/components)

/lgtm

/LGTM
merging


Use other plugins in callback not working after upgrading to 1.4.0+1

When building app, getting this error:

e: C:\Development\Projects\Flutter\Test\android\app\src\main\kotlin\oko\oko\Application.kt: (8, 37): Unresolved reference: LocatorService

Application.kt
package oko.oko

import io.flutter.app.FlutterApplication;
import io.flutter.view.FlutterMain;
import io.flutter.plugin.common.PluginRegistry;
import io.flutter.plugin.common.PluginRegistry.PluginRegistrantCallback;
import io.flutter.plugins.battery.BatteryPlugin;
import rekab.app.background_locator.LocatorService;

class Application : FlutterApplication(), PluginRegistrantCallback {
    override fun onCreate() {
        super.onCreate()
        LocatorService.setPluginRegistrant(this)
        FlutterMain.startInitialization(this)
    }

    override fun registerWith(registry: PluginRegistry?) {
        if (!registry!!.hasPlugin("io.flutter.plugins.battery")) {
            BatteryPlugin.registerWith(registry!!.registrarFor("io.flutter.plugins.battery"))
        }
    }
}

And version 1.4.0 realy doen't contains LocatorServer.kt file, unlike version 1.3.2

HI @khalitovsv
Thank you for opening a new issue.
LocatorService is removed from the recent version. Please refer to the wiki for more info.

Can you update instruction https://github.com/rekab-app/background_locator/wiki/Use-other-plugins-in-callback?

Thank you for pointing out, It's been updated;

[suggestion]
I think it would be a good idea to add the necessary imports to this instruction (people using VS Code may need to open Android Studio to figure out what imports are missing) :
https://github.com/rekab-app/background_locator/wiki/Use-other-plugins-in-callback
Also, some classes are deprecated, maybe this will be a problem in the future:


Bad token = Internal Error

I deleted src bucket (which dropped API token rights). Job in KBC Storage Ex failed with Internal Error instead of "wrong API token rights" or so.
(docker-09fe30f5e0d4da319e090198c8822231)

duplicate of https://github.com/keboola/ex-storage/issues/2


[Test 8] - Use of Alternative Text (alt text)

Describe what you worked on here

going to see how we do the alternative text part


fixed the degreesToStringHDMS_() function to promote a seconds value …

…of 60 up to the next minute
see issue:  https://github.com/openlayers/openlayers/issues/5827

Thanks @rjackson64840! Can you please submit a CLA so we can merge this?

Will do next week when I'm back in the office.
Sent from my Fire
On January 28, 2017, at 9:15 AM, Andreas Hocevar<EMAIL_ADDRESS>wrote:
Thanks @rjackson64840! Can you please submit a CLA so we can merge this?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.￼
{"api_version":"1.0","publisher":{"api_key":"05dde50f1d1a384dd78767c55493e4bb","name":"GitHub"},"entity":{"external_key":"github/openlayers/openlayers","title":"openlayers/openlayers","subtitle":"GitHub repository","main_image_url":"https://cloud.githubusercontent.com/assets/143418/17495839/a5054eac-5d88-11e6-95fc-7290892c7bb5.png","avatar_image_url":"https://cloud.githubusercontent.com/assets/143418/15842166/7c72db34-2c0b-11e6-9aed-b52498112777.png","action":{"name":"Open in GitHub","url":"https://github.com/openlayers/openlayers"}},"updates":{"snippets":[{"icon":"PERSON","message":"@ahocevar in #6410: Thanks @rjackson64840! Can you please submit a [CLA](https://github.com/openlayers/cla) so we can merge this?"}],"action":{"name":"View Pull Request","url":"https://github.com/openlayers/openlayers/pull/6410#issuecomment-275853700"}}}

Looks good to me as well. I think it was me who introduced the tests with basically wrong expectations. My bad.

@openlayers/core: have we received the CLA from @rjackson64840 ?

I have to get the formed signed by someone at work and that person is out
sick today.

@openlayers/core: have we received the CLA from @rjackson64840 ?
--
You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHub:
https://github.com/openlayers/openlayers/pull/6410#issuecomment-276408445

I have the CLA now.  How/where do I submit it?
Russ
On Tue, 31 Jan 2017 10:12:29 -0600, Frédéric Junod
<EMAIL_ADDRESS>wrote:

@openlayers/core: have we received the CLA from @rjackson64840 ?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.

--
Using Opera's revolutionary email client: http://www.opera.com/mail/

This email has been checked for viruses by Avast antivirus software.
https://www.avast.com/antivirus

@rjackson64840 if this is a CCLA, you can email it to openlayers-cla < at > lists.osgeo.org.


add code to slice schedule list to design days and hourly schedule.

Json hourly schedule output contains design days and one year hourly values, which resulted in a list with length of 8808.
Added a list index slice to separate the heating / cooling design days and simulation hourly values.

@weilixu thanks for putting this fix together. I noticed that you left this as a draft pull request. Are you planning on doing more on this?

@weilixu thanks for putting this fix together. I noticed that you left this as a draft pull request. Are you planning on doing more on this?

That is all the fix for this issue. I am not sure whether this is a robust solution or not. I can work on the unit tests and fix the CI in this week.

I'm trying to clean up some old branches so I'm moving this code to my current working branch implement_phase3 and closing this branch.


Build errors (cannot find module and output file has not been built from source) when using Typescript composite references

TypeScript Version:
^3.1.0-dev.20180825

Search Terms:
composite references
Code

git clone --branch issue/3 git@github.com:tommedema/serverless-mono-example.git
yarn install
yarn build (runs tsc -b .)

Expected behavior:
Should build all packages
Actual behavior:
$ tsc -b .
node_modules/@types/node/index.d.ts:34:22 - error TS6305: Output file<EMAIL_ADDRESS>has not been built from source file<EMAIL_ADDRESS>
34 /// <reference path="./inspector.d.ts" />
                        ~~~~~~~~~~~~~~~~

packages/sls-random/src/index.ts:6:8 - error TS2307: Cannot find module 'aws-lambda'.

6 } from 'aws-lambda'
         ~~~~~~~~~~~~

error Command failed with exit code 1.

Playground Link:
Related Issues:

https://github.com/tommedema/serverless-mono-example/issues/3

This was due to a circular referencing of base tsconfig. Fixed at https://github.com/tommedema/serverless-mono-example/commit/627ca9b8f36bf8b2c95e5484e318389a259c9c1d


Remove automatically generated protobuf files

Since 7cb551d66d3d195d04d7e247b3dc8d9f597a347c protobuf files are regenerated automatically so these files can be removed from the repository.

Theoretically this makes sense, but I'd be interested to know if you'd found any problems with them being included?

Seeing the changes in a PR diff and tracking their changes over time has value in my opinion so I'd hesitate to add them to git ignore unless they're troublesome in some way

Maybe I missed the memo here, but does this mean that you now require the protobuf tools to compile librespot?

The protobuf generator we use is pure rust, and is compiled as part of the build process. The goal was to streamline and remove all dependencies or environmental requirements which cargo couldn't sort out itself.

Ahh OK great. Thanks. (sorry for the noise)

Theoretically this makes sense, but I'd be interested to know if you'd found any problems with them being included?

Whenever protobuf is updated (even for minor versions, e.g. 2.8.0 to 2.8.1) the protobuf files have to be included as well. Also, they shouldn't be changed manually so tracking the changes in the repository doesn't make sense.

Seeing the changes in a PR diff and tracking their changes over time has value in my opinion so I'd hesitate to add them to git ignore unless they're troublesome in some way

It's just the automatically generated code, real changes to the protocol files are to the .proto files in protocol/proto. Changes to the generated files could be useful when something breaks but I haven't encountered such a case yet.

Whenever protobuf is updated (even for minor versions, e.g. 2.8.0 to 2.8.1) the protobuf files have to be included as well. Also, they shouldn't be changed manually so tracking the changes in the repository doesn't make sense.

I'd rather keep them checked in as well, just to be safe. We could pin protobuf instead?

Yeah we'll definitely need to be sure everyone has the same Protobuf version if we're keeping them checked in. I had assumed that was the case already thanks to Cargo.lock? Presumably we'd currently require a cargo update to make Protobuf get bumped up by even a minor version. And the result of cargo update would make sense as a standalone PR IMO.

@tstenner have you actually had cargo automatically update one of the protobuf dependencies? If so I think the issue here is how those dependencies are defined rather than the generated files being included.

I did, and the files were regenerated automatically. There something to be said for removing them from the repository, but I also see your point that the files' histories are helpful to have just in case.

@tstenner If there are no explicit problems that this solves, lets keep it checked in for now, and revisit this in the future?


Small language changes for clarification

Adjustments to make clear that only userfile storage is available on CC Free tier

This change is


Can't get mouse to move at all

Followed instructions but I can't get the mouse to move to any knob. I'm on a Mac mini m2 and latest sonoma....

RIght I guess this is abandoned, bummer.


📝  Table documentation

Resolves #440

The density selector in the argstable does nothing, but then again it didn't in the old version either 🤔

True @oddvernes completely forgot about this 🙈

I will make separate issue for ArgTable


Extend sample data using seperate script for METS processing, Splits example data and necessary data of setup Makefile process

Extend OCR_Workflow with automatic task after Export DMS and improves existing ocr script task
Extend the example data for using script task
Splits example data and necessary data in Makefile and resource directory
Extend and improve documentation to use these script tasks

The script_ocr.sh is renamed to script_ocr_process_dir.sh an does not include the patch from https://github.com/markusweigelt/ocrd_manager/pull/35#issuecomment-1261493971. I will create a new PR for that to avoid the confusion of mixing the changes.


How to force reload first page

Hi,
The user set filter and scroll down pages and reaches the end, I do not know how to force the first page to be reloaded (eg with other filtering parameters).
Could Anyone help me ?


No response to I2Cdriver command line

Hello,
I am using the moisture sensor for a smart greenhouse project. To familiarize myself with the I2C interface, I am first attempting to get it working with the I2CDriver product. Unfortunately, I am not getting any meaningful response; no matter what register I read from, the response is always 0xFF. I have not attempted a write, since it doesn't seem to be working right and I don't want to screw it up.
 I will try the moisture sensor next with my microcontroller; if that does work, I will bring this issue to the I2CDriver manufacturer. Thanks for reading!
System info: Windows 10 Home 10.0.19043, Build 19043, 64-bit

I don't know where exactly my I2CDriver is, but I think you issue the command wrong, try:
i2ccl COM10 w 0x20 0x00 r 0x20 2
First argument in w command is the device address, 0x20 being the default address of the sensor. Let me know if it helps.

@Miceuz, thanks for getting back to me! I just saw this.
I messaged you on Tindie yesterday, feel free to ignore that since we're talking here.
I appreciate the help, its definitely gotten me further, although I'm still a bit confused.
That command seems to be working:
C:\WINDOWS\system32>i2ccl COM10 w 0x20 0x00 r 0x20 2
0x00,0xf9

C:\WINDOWS\system32>i2ccl COM10 w 0x20 0x00 r 0x20 2
0x00,0xf7

C:\WINDOWS\system32>i2ccl COM10 w 0x20 0x00 r 0x20 2
0x00,0xf8

/* Now I put my hand around the sensor... */

C:\WINDOWS\system32>i2ccl COM10 w 0x20 0x00 r 0x20 2
0x02,0x26

C:\WINDOWS\system32>i2ccl COM10 w 0x20 0x00 r 0x20 2
0x02,0x23

I'm getting variable but consistent (and non-0xFF) readings for the capacitance.
However, I still feel like something is wrong, because when I query the sensor's address, it reports 0xFF - which is obviously not true, since I'm speaking with address 0x20. First I reset and then ask for the address in one line:
C:\WINDOWS\system32>i2ccl COM10 w 0x20 0x06

C:\WINDOWS\system32>i2ccl COM10 w 0x20 0x02 r 0x20 1
0xff

I also can't seem to change the address.
If it helps, the device version is apparently 0x26:
C:\WINDOWS\system32>i2ccl COM10 w 0x20 0x07 r 0x20 1
0x26

Thanks again for looking at this problem, I'm new to using i2cdriver so I really appreciate the pointers and the insight about your product.
One more questsion: The i2cdriver documentation has register addresses for writes written in decimal, but you are writing register addresses in hex; do you know if one way is preferred?
Regards,
Kris

Hi Kris,
To change the address you have to perform the register two times in a row, that's my workaround to fight against noise on lines changing address to random number - happened on several occasions.
Regarding the address read - are you allowing enough time for sensor to boot (about 1 second)
I suggest having a look at the sensor library for Arduino environment: https://github.com/Apollon77/I2CSoilMoistureSensor You can the implementation for all the functions there.

Oh, I didn't see that you have to perform that write twice in a row. Is that documented anywhere?
But, trying it that way did not work either.
I did allow enough time for the boot, yes.
I forgot to mention one thing - the current draw jumps from 5 mA to 10 mA briefly when I send the restart, so I think that command is going through.
Thank you for the library link! I am going to switch from i2ccl to the i2cdriver python module, as its much better documented, to troubleshoot. My project is in C (or Cpp, not currently though), so I appreciate having that library to reference. For the time being python might be quicker to just get something working.
Will report back shortly..!

I'm having more success with the Python module and libraries and will probably stick to that over i2ccl. It's much better documented both from the official sources, and with open source contributions.
Thanks again for your help @Miceuz!


No Authorized Tessels Found

Hi.
I am getting no authroized tessel found whenever I am trying to connect to tessel via WiFi or root access. I have tried updating the tessel several times too using t2 update -f
rahul@thinkubuntu:~$ t2 version
INFO Looking for your Tessel...
INFO Connected to InGen.
INFO Tessel Environment Versions:
INFO t2-cli: 0.1.22
INFO t2-firmware: 0.2.0
INFO Node.js: 8.11.3

rahul@thinkubuntu:~$ t2 list
INFO Searching for nearby Tessels...
 	USB	InGen
 	LAN	InGen	(USB connect and run `t2 provision` to authorize)

rahul@thinkubuntu:~$ t2 provision
INFO Looking for your Tessel...
INFO Connected to InGen.
INFO Authenticating Tessel with public key...
INFO Tessel is already authenticated with this computer.

rahul@thinkubuntu:~$ t2 root
INFO Looking for your Tessel...
WARN No Authorized Tessels Found.

rahul@thinkubuntu:~$ t2 provision -f
INFO Looking for your Tessel...
INFO Connected to InGen.
INFO Creating public and private keys for Tessel authentication...
INFO SSH Keys written.
INFO Authenticating Tessel with public key...
INFO Tessel authenticated with public key.

rahul@thinkubuntu:~$ t2 root
INFO Looking for your Tessel...
WARN No Authorized Tessels Found.

I have this problem as well. I can push, list, and update, but I can't root.


Bazel version required

Hi, I'm trying to compile pycoral with bazel 0.21 but it fails with:
ERROR: Unrecognized option: --experimental_repo_remote_exec
INFO: Invocation ID: 39fc9363-9dd7-4600-8a20-a9995f7691ee
Makefile:164: recipe for target 'tflite' failed
make: *** [tflite] Error 2
make: *** Waiting for unfinished jobs....
ERROR: Unrecognized option: --experimental_repo_remote_exec
INFO: Invocation ID: 77a603b4-dbdb-4b82-abd3-4aacc175c6bf
Makefile:155: recipe for target 'pybind' failed

Is newer/older version required? Thanks.
marek

I've tried 3.7.1 and compilation seems to start but it fails due which() command because CC contains /. I think I need to patch bazel files to add new compiler (trying to build with yocto)


Error when trying to create volume.

I follow these steps and end up with the error of it not finding the driver:
Error response from daemon: create rethink-storage: create rethink-storage: Error looking up volume plugin gce: legacy plugin: plugin not found```

Version: `Docker version 1.12.1, build 6f9534c`

```$ docker images
REPOSITORY            TAG                 IMAGE ID            CREATED             SIZE
mcuadros/gce-docker   latest              04344d74665a        11 weeks ago        148.2 MB```

The gce-container is running? as privileged? Can you post the log of it?

t=2016-09-27T13:44:26+0000 lvl=info msg="starting watcher" project=rare-disk-144021 zone=us-central1-f instance=swarm-manager
t=2016-09-27T13:44:26+0000 lvl=crit msg="error creating watcher: error retrieving region from zone: googleapi: Error 403: Insufficient Permission, insufficientPermissions"
t=2016-09-27T13:44:26+0000 lvl=crit msg="error creating volume plugin: error retrieving region from zone: googleapi: Error 403: Insufficient Permission, insufficientPermissions"```

Pretty clear what the error is.  I'm just not sure how to fix it.

The instance requires Read/Write privileges to Google Compute Engine and IP forwarding flags should be active to.

IP forwarding flags should be active where?
I assumed since I had read/write access on the host, it was all I needed.  Where else do I need to enable read/write privileges?

In the instance:
Identity and API access > Access scopes > Compute
(you can also configure this on the service Account)
and
Networking > IP forwarding > On


[BUG] Remove the clusteruserattribute in the controller's handler when the corresponding userattribute no longer exists.

Ref: SURE-6923

Validation Template
What was fixed, or what change has occurred
Orphaned ClusterUserAttributes are now cleaned up by the corresponding controller.
Areas or cases that should be tested

Create a downstream cluster with ACE enabled
Create two users and assign them to the downstream cluster
Log in by both users and download the kubeconfigs
On the local cluster change the second user's token to point to the first one
Delete the second user
Observe that the ClusterUserAttribute for the second user was left on the downstream cluster
Restart Rancher or trigger clusteruserattribute controller in other way
Observe that the ClusterUserAttribute for the second user was removed from the downstream cluster

What areas could experience regressions

Additional strain on ClusterUserAttribute controller as we now always make a read to check if the corresponding UserAttribute object exists whereas previously we did that only when the refresh was needed.

Are the repro steps accurate/minimal?
N/A.

I am pastin the workaround here... Although a fix for this issue has been developed, it has been targeted to 2.9.next. In the meantime, users encountering this problem can apply the below workaround to resolve it...
What's causing the issue is the orphaned ClusterUserAttribute's on downstream cluster(s)
Customer need to delete those (obviously only the orphaned ones, that the controller is complaining about in the logs).

Checking for offending ClusterUserAttribute's:

KUBECONFIG=<path/to/downstream/kubeconfig> kubectl -n cattle-system get clusteruserattribute <orphaned-clusteruserattribute-name>

thank you @pmatseykanets

Validated on v2.9-head id 3c48a19. All scenarios in test plan have been executed and passed.


Issue when attempting to build.

Just want to start off by saying that this is absolutely amazing.
Have been using for about a week now it has saved me loads of development time. However, I just recently ran into an issue when attempting to build.
I get the following warning:
WARNING in ./src/$$_gendir/~/ngx-avatar/ngx-avatar.ngfactory.ts
271:44-54 "export 'ɵa' (imported as 'import1') was not found in 'ngx-avatar'
and I get the following error:
ERROR in ng:///H:/Code/Megatron/Client/node_modules/ngx-avatar/ngx-avatar.d.ts.AvatarComponent.html (4,5): Type 'string' is not assignable to type 'boolean'.
Thanks!

Hello, I'm glad this component has been helpful to you.
Thank you for raising this issue, I'm working on it.

Hello,
I've just released a new version ( 2.1.0 ) which fixes issues related to prod and AOT build.

Thanks dude!
Absolutely amazing works. Means a lot!


fix: respect storage options on create_index

Currently, if create_index is used with non-standard storage backends, or configuration options passed at runtime, lance does not respect the storage option specified. This can be resolved by checking and passing storage_options from the create_index methods to allow for the LanceDataset to be recreated.

Hi, thanks for the PR. This method is indeed flawed, but I think there is a more sensible solution.

no prob, happy to contribute to such an interesting project
agree completely, i view this as a pretty "dirty" fix created with the intent to patch the functionality until further review of process is implemented. would be ideal to just reuse the current instances and retain the current object store, since object storage should be static anyways relative to object instantiation at runtime


Reflex-dom 0.5 Prerender & Obelisk Routing issues

I've got an issue with the new prerendering types combined with the obelisk routing subRoute function that I can't quite figure out to encode the types.
If you use subRoute it forces the top of your context to be concretely RoutedT so it can peel the layer off and replace it with the sub part of the route. This makes a lot of sense. So if you want to wire a ReaderT / EventWriterT / etc in, you want to end up with something like: RoutedT t r (ReaderT e m) a and use mapRoutedT (flip runReaderT env) to get rid of your layer before handing it to obelisk. This works perfectly OK when the function to run the reader is pure, but often it is not and it is this point where I start getting into trouble with the types.
See the following example, where running the readerT involves (a contrived-but-minimal-example of) going off to local storage in MonadJSM. In ObeliskWidget, Client m does not have a MonadJSM or DomBuilder, which my current intuition makes me think that ObeliskWidget is missing some constraints. Isn't (Client m) ~ HydrationDomBuilderT at the top level in obelisk in runFrontend, or am I missing something?
I'm hoping that I'm just being silly or there are just some missing constraints in obelisk, because this has me a little stuck. :slightly_smiling_face: @tomsmalley ?
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE ScopedTypeVariables #-}
module Frontend where

import qualified Data.Text as T
import Data.Foldable (for_)
import Data.Functor (void)
import Control.Monad.Fix (MonadFix)
import Obelisk.Frontend
import Obelisk.Route
import Obelisk.Route.Frontend
import Reflex.Dom.Core

import Common.Api
import Common.Route
import Obelisk.Generated.Static
import Control.Monad.Reader (ReaderT, runReaderT, ask, lift)
import GHCJS.DOM (currentWindowUnchecked)
import GHCJS.DOM.Types (MonadJSM)
import GHCJS.DOM.Window (Window, getLocalStorage)
import GHCJS.DOM.Storage (getItem)

runStorage :: (MonadJSM m) => ReaderT (Maybe T.Text) m a -> m a
runStorage m = getStorage >>= runReaderT m

runStoragePure :: ReaderT (Maybe T.Text) m a -> m a
runStoragePure = flip runReaderT Nothing

getStorage :: (MonadJSM m) => m (Maybe T.Text)
getStorage = do
  w <- currentWindowUnchecked
  s <- getLocalStorage w
  getItem s ("stored_item" :: T.Text)

pageHead :: (DomBuilder t m) => m ()
pageHead = el "title" $ text "Obelisk Minimal Example"

pageBody
  :: forall t m
  .  (DomBuilder t m, MonadFix m, MonadHold t m, Monad m)
  => RoutedT t (R FrontendRoute) (ReaderT (Maybe T.Text) m) ()
pageBody =  do
  text "Welcome to Obelisk!"
  subRoute_ $ \case
    FrontendRoute_Main -> do
      el "p" $ text $ T.pack commonStuff
      mMay <- lift $ (ask :: ReaderT (Maybe T.Text) m (Maybe T.Text))
      for_ mMay $ el "p" . text
      elAttr "img" ("src" =: static @"obelisk.jpg") blank

frontend :: Frontend (R FrontendRoute)
frontend = Frontend
  { _frontend_head = prerender_ pageHead pageHead
  , _frontend_body = mapRoutedT runStoragePure pageBody
  -- Could not deduce (MonadJSM (Client m))
  --, _frontend_body = prerender_ (mapRoutedT runStoragePure pageBody) (mapRoutedT runStorage pageBody)
  --, _frontend_body = prerender_ blank (mapRoutedT runStorage pageBody)
  -- This obviously wont work because it would require: Client m ~ m
  --,_frontend_body = mapRoutedT (\m -> prerender_ (runStoragePure m) (runStorage m)) pageBody
  -- This works in 0.4
  --, _frontend_body = prerender blank $ do -- Get an m is untouchable without this outer prerender.
  --    mapRoutedT (\m -> prerender blank (runStorage m)) pageBody
  --    pure ()
  }

There is definitely some weirdness with constraints happening there. Fortunately the "right" way to deal with this kind of thing avoids them entirely: make your reader take a Dynamic and use the version of prerender that allows you to access the result,
pageBody
  :: forall t m
  .  (DomBuilder t m, MonadFix m, MonadHold t m, PostBuild t m)
  => RoutedT t (R FrontendRoute) (ReaderT (Dynamic t (Maybe T.Text)) m) ()
pageBody = do
  text "Welcome to Obelisk!"
  subRoute_ $ \case
    FrontendRoute_Main -> do
      el "p" $ text $ T.pack commonStuff
      dyn_ . fmap (traverse_ $ el "p" . text) =<< ask
      elAttr "img" ("src" =: static @"obelisk.jpg") blank

frontend :: Frontend (R FrontendRoute)
frontend = Frontend
  { _frontend_head = prerender_ pageHead pageHead
  , _frontend_body = do
    storage <- prerender (pure Nothing) getStorage
    mapRoutedT (flip runReaderT storage) pageBody
  }

This way the browser doesn't have to fully recreate your page, it can just add the paragraph and text node when it learns about the contents of local storage. If this was a token you want to send requests with, you'd use something like attachWithMaybe so the token is grabbed as necessary when you do a request.

w.r.t. the constraints stuff, it seems to me the right constraints should be there. With prerender_ blank $ void $ lift getStorage I get the error
frontend/src/Frontend.hs:58:10-19: error:
    • Could not deduce (MonadJSM (Client m))
        arising from a use of ‘getStorage’
      from the context: ObeliskWidget js t (R FrontendRoute) m
        bound by a type expected by the context:
                   forall js t (m :: * -> *).
                   ObeliskWidget js t (R FrontendRoute) m =>
                   RoutedT t (R FrontendRoute) m ()
        at frontend/src/Frontend.hs:(55,12)-(61,3)
      or from: PrerenderClientConstraint
                 js t (Client (RoutedT t (R FrontendRoute) m))
        bound by a type expected by the context:
                   PrerenderClientConstraint
                     js t (Client (RoutedT t (R FrontendRoute) m)) =>
                   Client (RoutedT t (R FrontendRoute) m) ()
        at frontend/src/Frontend.hs:(57,22)-(58,19)
    • In the first argument of ‘lift’, namely ‘getStorage’
      In a stmt of a 'do' block: lift getStorage
      In the second argument of ‘($)’, namely ‘do lift getStorage’
   |
58 |     lift getStorage
   |          ^^^^^^^^^^

So we have the constraint
PrerenderClientConstraint js t (Client (RoutedT t r m))

but essentially
type PrerenderClientConstraint js t m = MonadJSM m

so
MonadJSM (Client (RoutedT t r m))

from the Prerender instance of RoutedT we have
type Client (RoutedT t r m) = RoutedT t r (Client m)

so
MonadJSM (RoutedT t r (Client m))

from the MonadJSM instance of RoutedT
instance MonadJSM m => MonadJSM (RoutedT t r m)

thus
MonadJSM (Client m) => MonadJSM (RoutedT t r (Client m))

Am I missing something? @cgibbard save me

I ran into this too and I suspect https://github.com/reflex-frp/reflex-dom/pull/294 might help GHC figure this out correctly.

Thanks for that help, @tomsmalley . That helped sort out my brain a lot to get a much better outcome. https://github.com/qfpl/reflex-dom-storage/pull/5/files#diff-e5269899b0235b3f89c1dee8ec397b00R198
Glad that that is still a weird thing that should work but GHC can't figure it out. It had me feeling really dumb for a while there. :slightly_smiling_face:
We can close this if you'd like or we can wait to see if https://github.com/reflex-frp/reflex-dom/pull/294 fixes this?

I've confirmed that https://github.com/reflex-frp/reflex-dom/pull/294 fixes this issue but it also introduced small but bizarre type inference errors in the hydration tests in reflex-dom so GHC may still be having issues.

Cool. I'll close this and we'll just track the reflex-dom work. Thanks for you help everyone!


[MRG] VIZ: change n_chanels default if there are less chanels

When plotting a `raw** file that has less channels than  20 channels
the visualization does not look proper.

This PR fixes it to get this:

looks much better ...

Tweaked the docstring and made the n_channels similarly limited during PageUp / PageDown use.

Thanks @massich


fix: solid-start merge babel options

Probably an oversight. solid-start's vite plugin completely omits the babel option for vite-plugin-solid.
As for the server transform, I'm not sure where to put it, but for now I'll just use push.

We also have another section where we use the solid babel compiler and override it with options:
    async transform(code, id, transformOptions) {
      const isSsr =
        transformOptions === null || transformOptions === void 0 ? void 0 : transformOptions.ssr;
      let babelSolidCompiler = (code, id, fn) => {
        // @ts-ignore
        return solid({
          ...(options ?? {}),
          babel: fn
        }).transform(code, id, transformOptions);
      };

Could you see if we could do something about this as well?
Also, thanks for helping with this!

@nksaraf which part is this?

This is the transform function from function solidStartFileSystemRouter(options)

Okay so I've fixed it, not sure with the conflicts


Missing endpoints for contests

'/contest/:contestSlug': 'get contest details',
'/contestRanking/:contestSlug': 'get contest ranking',

Seems like above two endpoints didn't work. Right?

Sorry for this inconvenience, the routes are not available! I accidentally wrote those routes in documentation.

Solved by https://github.com/alfaarghya/alfa-leetcode-api/commit/f53abd7595517bfb2a5d09a57590b280a9ce23f6.


Top navbar dropdown menu items have no hover response

The items in the top navbar dropdown menus have no response (change text color/background) when hovered over (except the cursor changing).
Not a big issue, but adding that would be a nice quality of life improvement.

It turns out the uk-link-reset class on the dropdown <ul> elements in the the _includes/navbar-menu.html and _includes/navbar-lower-menu.html files that override the theme in the jekyll-legumeinfo and jekyll-starter-legumeinfo repos is the cause of the issue. Simply removing the class reverts the dropdown links to their native coloring, thus restoring the proper hover behavior.
It looks like the commit that originally introduced the uk-link-reset class preceded these repos so it's not justified in either of their commit logs. If I remember correctly @sammyjava introduced the class because he didn't like the default grey color given to dropdown menu items. He can keep it that way in jekyll-legumeinfo if he (and others) would like but I'm going to open an issue to remove the class from the jekyll-starter-legumeinfo repo.

I hadn't noticed the lack of hover action, TBH. I'll follow what you do on the starter site, I don't care that much, and I think hover action is warranted.


implement TB and team glossary feedback

@ailiop I wonder if you could please help me to untangle this github mess that I made? After putting my edits into 66f08de1a234a3b116685b6ee6b89e0562678fb3 and 85d066bd062eee33dca78898b9a6b585a60b10a9, I thought I was merging into main, but it seems that I did the opposite and merged main into this branch? I am not sure what to do next -- want to merge my edits into main. Sorry about this.

@behoppe If I understand what's happened correctly, you should be able to undo the unintended merge and then merge the right way:

Make sure the your local repo is on the PR branch.

The following will make some destructive changes to the branch; if you are worried about losing work, make a backup branch (starting at behoppe/behoppe-cilkplus-glossary) and switch back to the PR branch.

Hard-reset the PR branch to commit 85d066b (i.e., just before the "bad" merge).
git reset --hard 85d066b
Force-push to the PR branch remote, effectively undoing the "bad" merge commit.  E.g., if your remote is named behoppe:
git push --force-with-lease behoppe behoppe-cilkplus-glossary
Merge the PR as you normally would.

Thanks @ailiop, your advice helped me a lot. I started using GitHub Desktop along the way, and needed to resolve a bewildering number of conflicts -- mostly related to infrastructure changes (for defn and sphinx-bootstrap-theme) that got a bit mixed up into this glossary stuff. I hope those conflicts don't ripple into confusion for other PRs.

Hi @ailiop unfortunately my PR included 9ea46115debbb791e9509442c90d077eda3443c0, which removed a whole slew of great new articles from publication on the main branch. Sorry. I am not sure where exactly I goofed or how to repair this. (I guess that there was a moment when I needed to update my PR branch and the change went in the opposite direction.) Thoughts? I am sorry for all the trouble.

@behoppe If removing the 9ea4611 commit would fix the issue, you can accomplish that with an interactive rebase of the PR branch onto some earlier commit and drop the offending commit in the rebase.  You would have to force-push the rebased branch.
As before, since force-pushing is destructive, you may want to first make a local copy of the branch before the above.

Hi @ailiop thank you very much. I think I did not follow your advice correctly the first time. sorry. This time around I took more care to use rebase --interactive and the result is #179. Unfortunately, when I merge that into main the result is still missing all the articles that I accidentally removed. However, I see in the deploy preview for #179 that those articles are published in that branch. I am confused about this and will follow up with you. thanks for your help and advice!


Support For Secondary Usergroups

Hi, could you add support for WUMA to detect secondary usergroups? I don't think it would be hard and would be great for servers with donation systems:
https://www.gmodstore.com/scripts/view/4270/any-admin-mod-secondary-user-groups-easy-donation-system
Thanks.

I could contact him for you and ask for a copy to develop with if you'd like.

Honestly, I don't think its worth the time. I'm sorry.


in-dexter:0.5.3

I am submitting

[ ] a new package
[x] an update for a package

Description:

fix error in typst.toml file.
Add a sample for raw display.

Thanks!


[oscbank~] + [filterbank~] working as compiled code

hello, a while ago i was thinking about the possibilities of the objects [oscbank~] and possibly [filterbank~] becoming compiled code rather than abstractions that relied on the clone object, possibly using SIMD. I think this would be very beneficial and efficient especially when working with additive/modal synths that might need a lot more partials playing per voice.
this was talked about a bit on the plugdata discord server https://discord.com/channels/993531159956955256/1039916394462068796/1312480398634385448

SIMD?

btw, a reference from the chat https://github.com/richardeakin/pd-oscbank
I did compile this when we discussed about it but never looked at it again

well, funny thing is that [sine~] is now multichannel and can be considered some sort of oscillator bank... all you need to do is use [sum~] at the end to merge it all into a single channel

SIMD?

i mentioned SIMD stuff to kyrsive because Nasko recently wrote something about having written a filterbank using that for optimization, and I vaguely recall something about Tim thinking that'd be useful to have in plugdata in general

well, funny thing is that [sine~] is now multichannel and can be considered some sort of oscillator bank... all you need to do is use [sum~] at the end to merge it all into a single channel

Oh that's nice, working with multichannel stuff is always nice

well, funny thing is that [sine~] is now multichannel and can be considered some sort of oscillator bank..

Oooh I'll try looking into that. For multichannel, how many sines are possible? For something like razor persay, 320 harmonics are used (but one would probably only need 200-250 at most), though that is just one voice playing polyphonically. Is it possible to reach that amount in multichannel?

btw, a reference from the chat https://github.com/richardeakin/pd-oscbank

Also yah i forgot to mention the former puredata external oscbank, pretty interesting tool, don't know a thing about compiling so I never tested it lol. Maybe there's something valuable hidden in there.


solr.xml: honor plugin enable=true|false

Plugins can be disabled via enable="false" but unfortunately it's up to the caller of creating a PluginInfo to remember to consult this flag.  This PR addresses plugin disablement in solr.xml stuff.  No test, I know... it's not like every possible other case is tested :-).  Nonetheless I will manually test one of these soon that I have an interest in disabling via config before merging the PR.  Seems so minor, maybe no CHANGES.txt.

Wondering about having similar at lines 646 and 805 in this file.

I forgot to push the BackupRepository case yesterday; did it now.  Converting to Java streams shows very nice results there too :-)


ServiceMonitor for elastic-cluster deployed by elastic-operator

Good day
i already installed prometheus exporter plugin while deploy and elastic with operator.
now i stuck on how deploy a servicemonitor to export target to prometheus
`
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: elastic-cluster
#namespace: monitoring
spec:
endpoints:
interval: 20s
path: "/_prometheus/metrics"
port: https
scheme: https
tlsConfig:
insecureSkipVerify: true
basicAuth:
password:
name: secrets-values
key: basic_auth_password
username:
name: secrets-values
key: basic_auth_user
namespaceSelector:
matchNames:
elastic-cluster
selector:
matchLabels:
common.k8s.elastic.co/type: elasticsearch
elasticsearch.k8s.elastic.co/cluster-name: elastic-cluster`
maybe someone tell how to deploy the password and the user of elastic to service monitor?
dev tool show that plugin installed
elastic-cluster-es-node-1 prometheus-exporter <IP_ADDRESS>
elastic-cluster-es-coordinator-0 prometheus-exporter <IP_ADDRESS>
elastic-cluster-es-node-0 prometheus-exporter <IP_ADDRESS>
elastic-cluster-es-node-2 prometheus-exporter <IP_ADDRESS>
elastic-cluster-es-coordinator-1 prometheus-exporter <IP_ADDRESS>

Here is an example on how to create a ServiceMonitor that takes the basic auth details from a secret:
https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/user-guides/basic-auth.md
Just point it to the secret created by the elastic operator


Roadmap v0.2 - Journal

Tasks:

[x] Design document
[x] Journal abstraction
[x] A memory implementation
[ ] #128
[x] #117

How we create a journal stream with other params?  If one tablet is ready to split to two tablet, it means that we shall create one new journal for  the new tablet.

How we create a journal stream with other params?

We can allow users to create a stream with some metadata and persist the metadata in Journal. Users may also consider storing metadata in Kernel. Kernel only supports one stream for now, but we will allow users to create multiple streams sooner or later.


Add support for custom port to RabbitMQ management plugin

Fixes #4316
Microsoft Reviewers: Open in CodeFlow

@dotnet-policy-service agree company="Hexesoft"

@davidfowl are you sure you want to do this?  If we do it here should we do it for the others?

Hi @mitchdenny! When I added the overload I took a look at WithPgAdmin and WithRedisCommander methods and I noticed a simply difference: another resource (for example "pgadmin4" container / "redis-commander" container) is added to the builder, instead in this case we have a different images ("rabbitmq" and "rabbitmq-management") for a single resource. I initially thought to a RabbitMQManagementResource with WithHostPort but I opted for an overload method due this reason.

@Dona278 ah! good point, I keep forgetting that.

This PR will require unit tests, and XML doc comments with examples before we can move forward.

@mitchdenny I added a second parameter (nullable) to an existing test because it already checks all the things, port included. It's ok or do you want a specific test only for that case?

Will this be in the 8.0.3 release? I didn't see it in the 8.0.2 drop from last week.

Will this be in the 8.0.3 release? I didn't see it in the 8.0.2 drop from last week.

No it didn't make it into 8.0.2.
We plan on releasing an 8.1 soon (likely the end of this month). This will make it into that release.


Include all configuration in the  element

This fixes a bug in the prefixIds plugin.  It assumed that the  element will have a single text fragment underneath.
So this works:

The above parses so that node.children[0] is a "text" node with all the CSS classes where "node" is the style element.
And this fails:

This fails because only node.children[0] is processed and node.children looks something like:
[
.class1 (type = "text")
comment (type = "comment")
.class2 (type = "text")
]

Any issues with this PR?

Any issues with this PR?

Hey! Thanks for reporting the issue and pull request.
I've rebased this for you and added a test. This will be included in the next release.


Add NER experiments

This PR includes all NER experiments
It adds three new variables in the project.yml

ner_config (config_tok2vec, config_pretraining, config_transformer): Controls which config should be used when training, assembling, and evaluating
gpu_id: Whether GPU or CPU should be used when training/evaluating
pretrained_weights: Filename of the pretrained weight .bin file

Add new configs for NER
Added config for tok2vec, pretraining and transformer + configs for assembling the NER models to one pipeline
Add new commands

For every label, I created a separate train & evaluate command (e.g train-ner-i for the label INTERVENTIONS)
Commands for pretraining: Preprocessing the data and pretraining the weights
Assemble command for the NER
Evaluation command that evaluates both Spancat and NER and compares some KPI's

Transfer-Entities component
To assemble the different NER models to one pipeline, I've added a custom component that moves doc.ents to doc.spans

Ack that's weird, I cannot merge it. It says "Only those with write access to this repository can merge pull requests"

Ack that's weird, I cannot merge it. It says "Only those with write access to this repository can merge pull requests"

The permissions have been updated - can you try again? :-)