Constrained MPC: Differences to MATLAB and Numeric Issues for different OS

In the context of a masters course on constrained optimal control, we were looking to implement the classic cart-pendulum example, with a hard state constraint on the angle of the pendulum. Our implementation followed the constrained MPC aircraft model example.
During our implementation we observed that the output control sequences from the “optimal.solve_ocp” were different than from MATLAB’s “mpcActiveSetSolver” for the same model, stage cost, and prediction horizon. The following are the control sequences at time 0:
solve_ocp: 8.085e-01  1.464e-02  4.912e-01  7.621e-01  5.672e-01 5.080e-01  4.151e-01  2.398e-01  0.000e+00  0.000e+00
MATLAB: 0.8750 -0.1281 0.6964 0.7551 0.7363 0.7937 0.6934 0.6644 0.6041 0.4130
We also observed that the output from “input_output_response” simulation differed based on platform (Windows vs Linux/MacOS). On Linux/MacOS the optimiser would fail to meet the state constraints, while this behaviour does not occur on Windows.
I have included an implementation of our code in both Python and in JupyterLab, environment package lists, plots of the constrained state, and a comparison version in MATLAB: MPC_PythonControl_Analysis.zip
Are there any plans for classic MPC implementation for the cost function to directly compute the state predictions using the discrete-time linear dynamics rather than numerically computed using the trapezoid rule (line 311-322 in optimal.py)?
Are you able to provide any advice or guidance on why the numeric simulation result is different between OS versions?

Thanks for your comments!
The control.optimal module  is just a wrapper around scipy.optimize.minimize, so the differences in platforms probably trace back to SciPy (nothing in python-control is OS dependent, since it is pure Python).

During our implementation we observed that the output control sequences from the “optimal.solve_ocp” were different than from MATLAB’s “mpcActiveSetSolver” for the same model, stage cost, and prediction horizon.

It's odd that the results seem to be very different from MATLAB, since they should be solving the same underlying optimization problem (though with different solvers).  One thing to try might be using different solvers (using the minimize_method keyword) to see if that changes the results.

We also observed that the output from “input_output_response” simulation differed based on platform (Windows vs Linux/MacOS). On Linux/MacOS the optimiser would fail to meet the state constraints, while this behaviour does not occur on Windows.

We have seen in some unit testing that different builds can sometimes have convergence issues (see, for example, #838, #918).  These seems to come from different choices of BLAS and other routines. Can you use  np.show_config() on the two platforms and post the results here so that we can see if that might explain the differences.

Are there any plans for classic MPC implementation for the cost function to directly compute the state predictions using the discrete-time linear dynamics rather than numerically computed using the trapezoid rule (line 311-322 in optimal.py)?

I think the only way to do this right now is to explicitly create a discrete time nonlinear I/O system.  If someone wanted to add a integral_cost_method parameter that allowed different choices, that would be another approach.

Thank you Professor Murray for your quick response.

It's odd that the results seem to be very different from MATLAB, since they should be solving the same underlying optimization problem (though with different solvers).

I have tried all solvers available to scipy.optimize.minize on the Mac with ARM and Linux systems. Results here: Scipy_optimization_solver.zip
No method produced results the same as MATLAB. Several solver types returned "Method %s cannot handle constraints.", or returned an error requiring the Jacobian function directly as an input. I am intrigued to notice that the optimization results change based on the OS/architecture, see for example 'TNC' or 'Powell' methods.
This result indicates to me that the underlying optimization problem is not the same. Perhaps this difference in the underlying optimization problem comes from the use of the trapezoidal integration of the cost function over the prediction horizon in optimal.py. In the case of my problem (deterministic, discrete-time, LTI) the Hessian can be directly computed at initalization of the controller. I perhaps expected 'create_mpc_iosystem' or 'solve_ocp' to do this step if it was available based on the dynamics.

Can you use  np.show_config() on the two platforms and post the results

Please see numpy.show_config() on four platforms (Windows-intel, Mac-intel, Mac-arm, Linux): numpy_configs.zip

The control.optimal module is just a wrapper around scipy.optimize.minimize, so the differences in platforms probably trace back to SciPy (nothing in python-control is OS dependent, since it is pure Python).

different builds can sometimes have convergence issues (see, for example, https://github.com/python-control/python-control/issues/838, https://github.com/python-control/python-control/issues/918).

I am concerned that scipy.optimize.minimize and numpy appear to return different numeric results depending on OS or system architecture! Additionally, for teaching purposes we intended to use JupyterLab hosted on our university's HPC. Our HPC runs openSUSE OS and has both Intel and non-Intel CPU nodes, thus making it an 'exotic' platform in the sense of https://github.com/python-control/python-control/issues/838.

I took a look at this example.  A couple of comments:

At a high level, all of the methods are giving roughly the same response for the MPC controller.  There are small differences, as would be expected from using different algorithms, with different convergence criteria.  Some of the optimizers are struggling because the optimal controller pushes up against the angle constraint.
The default solver is SciPy-version (and perhaps OS) dependent.  On my Mac, it defaulted to 'SLSQP', which was not able to converge on at least a few of the MPC iterations (which led to a slight constraint violation), but when I changed the method to 'trust-constr', it worked OK (but took a long time).
One issue that I uncovered is that there is no way to set the minimize_method when setting up an MPC problem (via create_mpc_iosystem).  I'll fix that in an upcoming PR (and I used that local change to switch the solver).

I don't have MATLAB on my computer, so I can't yet sort out why the MATLAB solution to the fixed horizon problem is (quite) different than the python-control version.  Since this is a discrete time system, the trapezoidal rule is not being used (the code lines mentioned above only gets used if ct.isctime(self.system) evaluates to True (which won't be the case here).
I'll keep look at this, but wanted to post some initial observations.

I did a bit more looking into this, trying to understand the difference in the results from MATLAB versus those computed using solve_ocp.
I used the following code to compute the cost of the trajectory associated with the inputs returned by MATLAB (as reported above):
matlab_inputs = [
    0.8750, -0.1281, 0.6964, 0.7551, 0.7363,
    0.7937, 0.6934, 0.6644, 0.6041, 0.4130]
matlab_resp = ct.input_output_response(system, np.arange(0, finiteHorizon) * Ts, matlab_inputs, x_0)
matlab_cost = sum(map(
                cost, np.transpose(matlab_resp.states[:, :-1]),
                np.transpose(matlab_resp.inputs[:, :-1])))

This returns a cost of<PHONE_NUMBER>964345.
The result of the same computation applied to the results from the optimal cost returned by obc.solve_ocp is<PHONE_NUMBER>258572.  This would imply that the MATLAB cost is not in fact optimal, at least according to the cost function used here.
A possibility is that MATLAB is including the terminal point of the trajectory in the cost calculation (whereas solve_ocp uses the terminal_cost parameter to set the value for that).  Replacing the solve_ocp call with
res_terminal = obc.solve_ocp(
    model, np.arange(0, finiteHorizon) * Ts, x_0.flatten(), cost, constraints,
    terminal_cost=cost)

yields
res_terminal.inputs = [
    0.83727566 -0.04713427  0.58002926  0.86883298  0.62362542
    0.59600354  0.54358056  0.41263552  0.21386074  0.        ]

and a cost of<PHONE_NUMBER>091476.  The MATLAB optimal trajectory with the added terminal cost gives total cost of<PHONE_NUMBER>095968, so still not optimal.
Conclusion based on these data: MATLAB seems to be solving a different problem than solve_ocp.  This could be a bug in solve_ocp or just a difference in the way that problems are set up.
@JMK593: If you have any thoughts/insights, please post here.

Thank you @murrayrm for your continued investigation.
I have done some further analysis.
First, I found an error in the computation of my Hessian, my apologies. I left out a bracket.
Previous: 2 * Phi.'*Qbar*Phi + Rbar
Correct: 2 * (Phi.'*Qbar*Phi + Rbar)
This changes the control action penalty and thus the output control sequence from the optimizer. However, the underlying issue still remains.
Second, following your most recent post I investigated the ct.input_output_response. I believe the bug may be here as I assume it is used in the creation of the optimizer problem.
For clarity I have outlined my dynamics and finite horizon cost function here: Python_Control_Testing_Issue_929.pdf
Note:

For simplicity I use same state penalty in the stage cost for the terminal state penalty.
Also there are two ways of writing the cost function, a full form and simplified. The simplified version removes the constant component. The optimization problem is equivalent.

Python and updated MATLAB Code here: Code.zip
In MATLAB I implemented the simplified cost function (equation (4)) using the mpcActiveSetSolver subject to the inequality constraints (equation (5)).
Following my fix to the Hessian (noted above) the control sequence is:  0.851223168355364 -0.077048264865308 0.623036904869950 0.826831770859904 0.665257404304965 0.685763761198126 0.575030284310556 0.495404310892419 0.363276926486268 0.180415598218110
Cost Simplified: -16.904383936469159
Cost Full: 6.870956160635309e+02
To provide a fair comparison, I implemented this same simplified cost function in scipy.optimize.minmize directly, subject to the linear inequality constraints. This bypasses obc.solve_ocp. Subject to slight differences from the different optimization routines, one would expect the result to be the same, within floating point error tolerance.
costFunc = lambda u: 0.5 * u.transpose() @ H @ u + fT.transpose() @ u
output_directHessianLambda = scipy.optimize.minimize(costFunc, guess0.flatten(), constraints=constrainFunc)

Control Sequence: [ 8.512e-01 -7.706e-02  6.231e-01  8.268e-01  6.653e-01  6.858e-01  5.750e-01  4.954e-01  3.632e-01  1.804e-01]
Cost (simplified): -16.904383924727043
The result is almost the same as MATLAB! (Difference in cost appears to be smaller than single floating point error tolerance.)
Consider a direct implementation of the cost function using the dynamics. This is implementation of equation (3).
def costFuncFULLWithState(useq):
    state = x_0
    cost = 0
    err = state - xstar
    cost += err.transpose() @ Q @ err
    for uk in useq:
        state = A@state + B * uk
        err = state - xstar
        cost += err.transpose() @ Q @ err + uk * R * uk
    return cost

Control Sequence: [8.512e-01 -7.706e-02  6.231e-01  8.268e-01  6.653e-01 6.857e-01  5.750e-01  4.954e-01  3.632e-01  1.804e-01]
Cost (full):<PHONE_NUMBER>759122
The result is almost the same sequence as above, and is almost the same as MATLAB (both sequence and cost)!
Now let us try with the ct.input_output_response function to compute the states over the finite horizon as a function of the input control sequence. Then using the predicted states, we compute the cost.
def costFuncWithState_io_resp(useq):
    io_state = ct.input_output_response(system, np.arange(0, finiteHorizon) * Ts, useq, x_0.flatten())
    cost = 0
    counter = -1
    for state in io_state.states.transpose():
        err = np.reshape(state,(4,1)) - xstar
        counter += 1
        cost += err.transpose() @ Q @ err + useq[counter]*R*useq[counter]
    return cost

Control sequence:  [ 8.373e-01 -4.719e-02  5.801e-01  8.687e-01  6.237e-01  5.959e-01  5.436e-01  4.126e-01  2.140e-01  2.518e-04]
Cost (full):<PHONE_NUMBER>678216
Intriguingly, the result is now different, but is similar to the output in your recent response. As you noted the cost is also smaller than the output from MATLAB.
Let us inspect whether ct.input_output_response for a given control sequence of length 10 (i.e. u_0, u_1, ..., u_9) returns a state sequence of length 11 (i.e. x_0, x_1, ..., x_10).
Terminal output (state dynamics directly): terminaloutput_direct.txt
Terminal output (ct.input_output_response): terminaloutput_input_output_response.txt
Confirmed it does not! Given the control sequence u_0, u_1, ..., u_9 (10 values), the function ct.input_output_response only returned x_0, x_1, ..., x_9 (10 values). The terminal state value (x_10 = A x_9 + B u_9) was not returned and the final value of the control sequence was not utilized! Thus the terminal state and final control action was not used in the cost function! This perhaps explains why there is a non-zero number for the last control action while the obc.solve_ocp returns a 0 for the final control action.
Now including the final state value x_10 directly. Inserting the following code in the cost function computation after the for loop:
finalstate = A@np.reshape(state,(4,1)) + B * useq[-1]
err = finalstate - xstar
cost += err.transpose() @ Q @ err

Control sequence: [8.512e-01 -7.706e-02  6.231e-01  8.268e-01  6.653e-01 6.858e-01  5.750e-01  4.954e-01  3.632e-01  1.804e-01]
Cost (full):<PHONE_NUMBER>758178
This is now approximately the same sequence and cost as MATLAB, and the earlier implementations.
This confirms the original suspicion that the obc.solve_ocp was not solving the same underlying optimization problem as the MATLAB implementation. The ct.input_output_response function does not return the terminal state as a function of the final control action.
I have not found anything yet to suggest that platform (OS/CPU architecture) influenced the output from scipy.optimize.minize. Given the same functional problem, scipy.optimize.minize returned the same output as MATLAB (subject to tolerances). If it is of interest, I can run this script on other machines and report back, although I do not anticipate any differences.
Final note, in the above I used the linear constraints computed in the form Ain u <= Bin. This was consistent across all implementations of scipy.optimize.minimize and my MATLAB code.
Ain = np.concatenate((-Phi,Phi,-np.eye(finiteHorizonINT),np.eye(finiteHorizonINT)),axis=0)
Bin = np.concatenate((Lambda@x_0 - xmin, xmax - Lambda@x_0, -umin, umax),axis=0) # note: function of the state
constrainFunc = scipy.optimize.LinearConstraint(Ain, lb=-np.inf, ub=Bin.flatten(), keep_feasible=False)

If the constriants in obc.solve_ocp are computed using ct.input_output_response then I might suspect that a fix to ct.input_output_response to include the final state may change the constraints given to the optimizer through obc.solve_ocp.

Thanks for all of this extra information @JMK593. I think it is now clear what is going on and indeed the problem that was solved in MATLAB is different than the one solved by solve_ocp.  However, I don't think the issue is a bug in input_output_response, but rather a change needs to be made to solve_ocp.  Here's why...
As with MATLAB, input_output_response (lsim in MATLAB) returns a simulation with the same number of time points as the length of the time and input vectors.  So if you pass time and input arrays of length $N$ (so $[t_0, t_1, ..., t_{N-1}]$ and $[u_0, u_1, ..., u_{N-1}]$), you get back a response of length $N$ (so $[x_0, x_1, ..., x_{N-1}]$).  The "final" state $x_N$ is not computed and hence the final input $u_{N-1}$ is not used.  This matches the documented behavior for both input_output_response and the MATLAB lsim command ("y = lsim(sys,u,t) returns the system response y, sampled at the same times t as the input. For single-output systems, y is a vector of the same length as t").
The optimal control computation in solve_ocp uses input_output_response internally.  However the "trajectory cost" (cost parameter) does not currently include the last point in the simulation (so time point $t_{N-1}$).  You could include that point by using the terminal_cost parameter, but I think this is still not quite the behavior we want.  What I think most people would expect is that the terminal point for a discrete time system would correspond to the state $x_N$, which is the state that you get after applying the final input $u_{N-1}$.
With the current code, if you want to get the same optimal control problem that you passed to “mpcActiveSetSolver” in MATLAB, then the function call needs to look like this:
res = obc.solve_ocp(
    model, np.arange(0, finiteHorizon + 1) * Ts, x_0.flatten(), cost, constraints,
    terminal_cost=cost)

This returns the input
[ 0.8512555  -0.07711761  0.62313661  0.8267344   0.66535392  0.68563258
  0.57505296  0.4952667   0.36327124  0.18020503  0.        ]

which is the same one you reported above for the manually constructed optimization.
However, I believe that the proper implementation of solve_ocp on discrete time systems would be to have the trajectory cost include everything up to time $t_{N-1}$ and then have the terminal cost be applied to the state at time $t_N$.  In particular, for a finite-time, linear quadratic optimal control problem, the cost should be
$J = \Sigma_{k=0}^{k=N-1} \left( x_k^T Q x_k + u_k^T R u_k \right) + x_N^T Q_N x_N$
With that change (not yet implemented), then the original function call
res = obc.solve_ocp(
    model, np.arange(0, finiteHorizon) * Ts, x_0.flatten(), cost, constraints)

should work just fine.
Making this change in the code will cause inconsistencies for anyone relying on the current behavior for solve_ocp applied to discrete time systems (and for MPC controllers created using create_mpc_iosystem).   However, since we are moving from version 0.9.4 to version 0.10.0, this would probably be the right time to make this change.  I'll include it in PR #930 and that should fix things so that your original call returns an output similar to what you see in MATLAB (and the hand constructed optimal control problem you passed to SciPy).

Thank you @murrayrm. I now see the underlying issue. I look forward to testing version 0.10.0 with the revised solve_ocp and create_mpc_iosystem.
Regarding MATLAB's lsim, I think it is misleading to take a sequence of control actions of length N then return a state sequence of length N and completely ignoring the final control action.
As an improvement to python-control over this misleading MATLAB usage, in the case of a discrete-time system, if given an intial condition (x_0) with associated time (t_0) and a control sequence of length N, is it necessary to also require an input of the time points? Would it not be easy to compute the output times associated with the state sequence? Then given an initial state condition and control sequence of length N, the output sequence would be the appropriate length of N+1 for that control sequence of length N.

I played around a bit more with implementing the change I described above and decided that the way we have it is actually the most clear (and of course maintains backward compatibility).  The main reason for sticking with the current implementation is that all sorts of things get complicated when you start returning inputs and states that are a different length than the list of time points that you specified (which I found out by seeing how many unit tests I started having to modify, as well as the number of examples that broke).
So for now the current behavior is as follows: for a discrete time system if you give a list of time points $[t_0, \dots, t_N]$, corresponding to a horizon of length $N$ (and a array of length $N+1$), then the trajectory cost is computed at the time points $[t_0, \dots, t_{N-1}]$ and the terminal cost is computed at the time point $t_N$.  This makes sense (to me) since you are explicitly specifying the points in time and the last point corresponds to the final time.  I've added some additional comments in the documentation to make this more clear.
Following that documentation (see PR #930), if you want to have the stage cost applied to all points include the last one, you should use a call of the form
res = obc.solve_ocp(
    model, np.arange(0, finiteHorizon + 1) * Ts, x_0, cost, constraints,
    terminal_cost=cost)

To see why this makes sense, suppose represent the value of the finiteHorizon as $N$ and assume Ts is 1 (to simplify the discussion).  This will set the timepts vector to $[0, 1, ..., N-1, N]$ and the final point in the optimization is at time $N$.  If you want to include the cost of the state at time $N$ in the overall cost, you need to set terminal_cost=cost.  All of that gives the same optimization problem as the one assembled manually in MATLAB or SciPy in the discussion above.
This may all seem odd, but to me it makes more sense when you think about the fact that np.arange returns a list of points that does not include the stop value.  So if you have a horizon of length $N=1$, you get the associated time points ($[0, 1]$) by using the command np.arange(0, 2), and your initial time is $k = 0$ and time at the end of the horizon is $k = 1$.

Thank you @murrayrm for considering my suggestion.
I further explored the current work around for solve_ocp in the context of simulating the system. In the following I explore the difference between the control sequences from using solve_ocp and from scipy.optimize.minimize with the cost function directly used.
Files here: Code_V2.zip
The current workaround to achieve the same cost function as a finite horizon of length N, is to add +1 to the horizon which will return a control sequence of length N+1 where the final value is 0. We would expect that the final value of the returned control sequences from the optimizer would stay at 0 for all time as this control action appears to not be included in the cost function.
For optimal control problem
obc.solve_ocp(system, np.arange(0, finiteHorizon+1) * Ts, xin, cost, constraints, terminal_cost=cost, squeeze=True)

and dynamics simulated by
x[:,ind+1] = (A@xcurrent + B*uapplied[ind]).flatten()

intriguingly the final value (N+1, the extra output from solve_ocp) does not remain at 0.

This difference impacts the first value of the control sequence (the applied control action).

Note: This is just the direct numeric difference (a-b).
I further explored by removing the terminal_cost=cost from solve_ocp.
obc.solve_ocp(system, np.arange(0, finiteHorizon+1) * Ts, xin, cost, constraints, squeeze=True)

The final value of the sequence does remain at zero but the applied control is considerably different.

Finally, I created a new terminal cost with R=0.
termcost = obc.quadratic_cost(system, Q, 0, x0=xstar.flatten(), u0=0)
obc.solve_ocp(system, np.arange(0, finiteHorizon+1) * Ts, xin, cost, constraints, terminal_cost=termcost, squeeze=True)

The final value of the control sequence remains at zero as desired. The applied control action is still different.

While the workaround and potential solution posed in the earlier answers is sufficient to produce the same optimization problem for the initial condition with the same optimization output, the solution does not work for subsequent state values. This includes different choices for the terminal cost. The issue remains and cannot be closed.
Additionally, in my initial post, I raised a second issue where the use of create_mpc_iosystem and feedback and simulation using input_output_response results in different numeric results on different platforms.
Creating the MPC object with the proposed workaround
ctrl = obc.create_mpc_iosystem(system, np.arange(0, finiteHorizon +1) * Ts, cost, constraints, terminal_cost=cost)

and comparing the control actions to a simulation using the optimal control problem at each time
res = obc.solve_ocp(system, np.arange(0, finiteHorizon+1) * Ts, xcurrent.flatten(), cost, constraints, terminal_cost=cost, squeeze=True)

with dynamics computing the next state at each time
ct.input_output_response(system, np.arange(0, 2)*Ts, useq[ind,0:2], xcurrent.flatten())

By my limited understanding of the how create_mpc_iosystem and feedback operate, I would expect that the underlying optimization problem and propagation of the dynamics to be the same. However, I found that the applied control action is different.

I have assumed that the outputs from input_output_response operated on a feedback loop are in the form of [states, control sequence]. I additionally noted that the first value (t=0) of all of the control sequences is 0, and the second value (t_1) of the control sequences matches the optimization output from earlier discussions.
Finally, for Linux and Mac platforms the resulting simulation is still constraint violating. In my analysis (see the above comments), when scipy.optimize.minimize is given the optimization problem directly there appears to be no or minimal numeric issues. The numeric issue of loop simulation with constraint violating differences between platforms has not yet been addressed.

It will take me a while to look through all of that, but one quick comment:

I have assumed that the outputs from input_output_response operated on a feedback loop are in the form of [states, control sequence].

This is not correct.  The output of the feedback function is whatever the outputs are for the system given in the first argument.  The actual input from the controller is not available (though it could be recomputed from the internal state of the controller).
If you want to create a system that has both the outputs from the system and the inputs from the controller, you need to use interconnect and explicitly describe what is connected to what.  Alternatively, in PR #930 you can use create_statefbk_iosystem:
loop = ct.create_statefbk_iosystem(system, ctrl)

which will have output given by [system states, control output].  (I added this functionality while debugging because having to use interconnect was a pain.)

Thank you for the quick response.
I stated incorrectly that I used the outputs from res = ct.input_output_response, implying that I used res.outputs. I actually used res.states.
I found that the res.states is of size: number of states + length of finite prediction horizon. I naively assumed that after the system states (the first set of values) that the rest of res.states would be the output values of the optimizer in the closed-loop. I also noted that in this second set of states (after the system states) the second value (at discrete-time index 1) had the same values as the output of the optimizer from earlier. Observe in the last figure above, the difference in control action between my two tests remains at 0 for several steps. (The control actions in both simulations are definitely non-zero initially.) Hence my naive assumption that this was the control action.
As suggested I have re-run the loop simulation using the updated functions
clctrl , clsys = ct.create_statefbk_iosystem(system, ctrl)

statefbk_results = ct.input_output_response(clsys, timeVec, 0, x_0.flatten())

Please see the difference between the extracted applied control action from statefbk_results.outputs[:,:-1] to computing the control action from obc.solve_ocp and propagating the state via ct.input_output_response at every time step (i.e. operating the time loop manually). The shape of the curve appears to be similar to the earlier figure.

Computing the difference between what I assumed was the control action and the output from ct.input_output_response is different. Although, I do note that the first few values of this difference are zero.

Also for clarity here is the difference in control action between using the loop from  ct.create_statefbk_iosystem and directly computing the control action from scipy.optimize.minimize and propagating the state manually. Also again, the first few values of the difference are zero.

Updated code here: Code_V3.zip


Fix it to work if no config file exists

See https://github.com/RobotNerd/prose-english-vim/issues/3
This one was accidentally entered twice.


Database backed sessions fail with Enhance

Database backed sessions fail when used with Enhance. I am not sure where the bug is. It is probably not in the CLI. It may be in sandbox, but this bug does not seem to reproduce with architect on its own so seems like it is related to enhance in some way.
Reproduction:

begin new .
Add the session table info to .arc

@tables
sessions
  _idx *
  ttl ttl

Add the environment variable to the .env file (ARC_SESSION_TABLE_NAME=sessions)

When you launch sandbox and hit any route it you get the following error:
ResourceNotFoundException: Requested resource not found
    at de_ResourceNotFoundExceptionRes (/Users/ryanbethel/_PARA_Local/code-projects/consulting/begin-com/quick-map/node_modules/@aws-sdk/client-dynamodb/dist-cjs/protocols/Aws_json1_0.js:2878:23)
    at de_PutItemCommandError (/Users/ryanbethel/_PARA_Local/code-projects/consulting/begin-com/quick-map/node_modules/@aws-sdk/client-dynamodb/dist-cjs/protocols/Aws_json1_0.js:1893:25)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async /Users/ryanbethel/_PARA_Local/code-projects/consulting/begin-com/quick-map/node_modules/@smithy/middleware-serde/dist-cjs/deserializerMiddleware.js:7:24
    at async /Users/ryanbethel/_PARA_Local/code-projects/consulting/begin-com/quick-map/node_modules/@aws-sdk/lib-dynamodb/dist-cjs/baseCommand/DynamoDBDocumentClientCommand.js:26:34
    at async /Users/ryanbethel/_PARA_Local/code-projects/consulting/begin-com/quick-map/node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/middleware-signing/dist-cjs/awsAuthMiddleware.js:14:20
    at async /Users/ryanbethel/_PARA_Local/code-projects/consulting/begin-com/quick-map/node_modules/@smithy/middleware-retry/dist-cjs/retryMiddleware.js:27:46
    at async /Users/ryanbethel/_PARA_Local/code-projects/consulting/begin-com/quick-map/node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/middleware-logger/dist-cjs/loggerMiddleware.js:7:26 {
  '$fault': 'client',
  '$metadata': {
    httpStatusCode: 400,
    requestId: 'KA2GJVPJSJCV1CRFYH1FRYQQ2ZODDJB6LA5SZJSDJV62QQOIGI0A',
    extendedRequestId: undefined,
    cfId: undefined,
    attempts: 1,
    totalRetryDelay: 0
  },
  __type: 'com.amazonaws.dynamodb.v20120810#ResourceNotFoundException'

I suspect this is an aws v3 SDK bug, but I am not sure.

@ryanblock Does this look at all familiar to you? It looks like this could be related to the V3 SDK, and you know the sessions/sandbox code better than anyone.

@kristoferjoseph or @tbeseda does this error look familiar to either of you? I am pretty sure this is an aws SDK related bug but I can't track it down.


Add support for HarfBuzzSharp on WASM

Description of Change

Bugs Fixed

Related to issue #

API Changes

Behavioral Changes

PR Checklist

[ ] Has tests (if omitted, state reason in description)
[ ] Rebased on top of master at time of PR
[ ] Changes adhere to coding standard
[ ] Updated documentation

Can't wait to try this out 😃


Add support for Ultravisor log collection from Host

Add support for Ultravisor log collection from Host

Test pending...


Implement Inspect proc macro

The new Inspector widget will be used to for runtime inspection of an object content in various editors. In rusty-editor it will replace hand-written Sidebar, which contains tons of boilerplate code. Inspector widget can work only with objects that implements Inspect trait, manual implementation of which is very error prone and could be easily offloaded to the proc macro system, in other words - it could be generated automatically for a struct that has #[derive(Inspect)] attribute. An example of manual implementation could be found here.
There is a list of attributes that should be supported for structure fields (for now it proc macro should be implemented only for structures):

#[inspect(skip)] - do not expose property info
#[inspect(name = "<name>")] - a name override for a field (by default proc macro should take the name of the field, split it at _ and capitalize all letters)
#[inspect(group = "<group>")] - a group override for a field, by default group should be Common

Cool! I'll implement the derive macro as soon as possible.

Using a Vec buffer might more efficient, but the change woud be easy if needed.


Webhook unavailable when using routeNotificationForGoogleChat

The space returned in routeNotificationForGoogleChat is not recognized/loaded when sending the notification due to an issue in GoogleChatChannel.php.  The following change temporarily corrects this...
Change:
?? $notifiable->routeNotificationFor('googleChat')
To:
?? $notification->routeNotificationForGoogleChat()

I apologize, this is wrong.  routeNotificationForGoogleChat must be defined on the Notifiable model, not the Notification.


simplify map.jinja

fix issue with refactor an mappings.

@javierbertoli this will fix the mapping issues I introduced.

Definitely simpler :smile:
Thanks, @aboe76

It's not working with debian server :
----------
          ID: nfs-service
    Function: service.running
        Name: nfs
      Result: False
     Comment: The named service nfs is not available
     Started: 18:55:19.104654
    Duration: 36.478 ms
     Changes:

I don't really like this change as it would result in various nested grains.filter_by calls for each grain that is being used. It's not inconceivable that one would like to incorporate settings based on, say, osmajorrelease or osrelease.
It also seems to drop the :lookup convention for overriding settings users don't typically want to set themselves and the change wouldn't be backward compatible.
By and large I like the earlier approach and would like to incorporate something similar in the template-formula. We might  be able to cut it down, but just because a specific instance is shorter, doesn't mean that the general approach is better.


update json example for 0.4.0

This looks fine to me.
If we want to further tweak this, we can do so in a future PR.


Block service

Added BlockService to validate transaction and receipt hashes against in specific block
Fixed #449

@rg911 can we add unit testing to the block service. E2E tests are great but they don't run every build and they don't increase coverage.

@rg911 0.8.4-SNAPSHOT.202002181344 client has been pushed

Rebased to #453


Remove NOJSC macro.

Please select one of the following

[x] I am removing an existing difference between facebook/react-native and microsoft/react-native :thumbsup:
[ ] I am cherry-picking a change from Facebook's react-native into microsoft/react-native :thumbsup:
[ ] I am making a fix / change for the macOS implementation of react-native
[ ] I am making a change required for Microsoft usage of react-native

Description of changes
Remove macro NOJSC, no longer used by react-native-windows.
Microsoft Reviewers: Open in CodeFlow

/azp run

Superseded by 53753d082ebcc3b2d74d3e5d39cbd8076097553d.
Closing this PR.


New Modified YCSB Benchmark

The baseline is still not that great :(

@abhishekjoshi2 Did you set DEFAULT_TILEGROUP to 1000000?

DEFAULT_TILEGROUP_SIZE IS 1000000

@jessesleeping @yingjunwu After fixing the random number generation bug, the result is not good

what's the scale factor?

1 1 10 4 0 1 0 32768 0
[0   - 0.1 s]: 133080 0.00202885
[0.1 - 0.2 s]: 117180 0.00298686
[0.2 - 0.3 s]: 108940 0.00275381
[0.3 - 0.4 s]: 100790 0.00327413
[0.4 - 0.5 s]: 94290 0.00286351
[0.5 - 0.6 s]: 85890 0.0029107
[0.6 - 0.7 s]: 81830 0.00305511
[0.7 - 0.8 s]: 77780 0.00257136
[0.8 - 0.9 s]: 73130 0.00232463
[0.9 - 1   s]: 69980 0.00257216
[1   - 1.1 s]: 66970 0.00313573
[1.1 - 1.2 s]: 63940 0.00156397
[1.2 - 1.3 s]: 56210 0.00320228
[1.3 - 1.4 s]: 59180 0.00236566
[1.4 - 1.5 s]: 58180 0.00292197
[1.5 - 1.6 s]: 57230 0.0031452
[1.6 - 1.7 s]: 56460 0.00301098
[1.7 - 1.8 s]: 55240 0.00271542
[1.8 - 1.9 s]: 53820 0.00353029
[1.9 - 2   s]: 52730 0.0041722
[2   - 2.1 s]: 51650 0.00309777
[2.1 - 2.2 s]: 50520 0.00376089
[2.2 - 2.3 s]: 49380 0.0018226
[2.3 - 2.4 s]: 48240 0.00290216
[2.4 - 2.5 s]: 47570 0.00294303
[2.5 - 2.6 s]: 46810 0.0036317
[2.6 - 2.7 s]: 45410 0.00264259
[2.7 - 2.8 s]: 44970 0.0022237
[2.8 - 2.9 s]: 43890 0.00182274
[2.9 - 3   s]: 43400 0.00345622
[3   - 3.1 s]: 42520 0.00235183
[3.1 - 3.2 s]: 41790 0.00191433
[3.2 - 3.3 s]: 40990 0.000975848
[3.3 - 3.4 s]: 40190 0.00472754
[3.4 - 3.5 s]: 39750 0.00377358
[3.5 - 3.6 s]: 38940 0.00308166
[3.6 - 3.7 s]: 34810 0.00316001
[3.7 - 3.8 s]: 37570 0.00346021
[3.8 - 3.9 s]: 37310 0.0032163
[3.9 - 4   s]: 36600 0.00327869
[4   - 4.1 s]: 35990 0.00527924
[4.1 - 4.2 s]: 35500 0.00338028
[4.2 - 4.3 s]: 35240 0.00340522
[4.3 - 4.4 s]: 34980 0.00343053
[4.4 - 4.5 s]: 34350 0.00407569
[4.5 - 4.6 s]: 34020 0.00293945
[4.6 - 4.7 s]: 33480 0.00179211
[4.7 - 4.8 s]: 33230 0.00150466
[4.8 - 4.9 s]: 32940 0.00394657
[4.9 - 5   s]: 32670 0.00428528
[5   - 5.1 s]: 32060 0.00374298
[5.1 - 5.2 s]: 31660 0.00347442
[5.2 - 5.3 s]: 31580 0.00189994
[5.3 - 5.4 s]: 31220 0.00352338
[5.4 - 5.5 s]: 30840 0.00486381
[5.5 - 5.6 s]: 30410 0.00394607
[5.6 - 5.7 s]: 30350 0.00263591
[5.7 - 5.8 s]: 29980 0.00133422
[5.8 - 5.9 s]: 29800 0.00402685
[5.9 - 6   s]: 29670 0.00235929
[6   - 6.1 s]: 29220 0.00273785
[6.1 - 6.2 s]: 28940 0.00345543
[6.2 - 6.3 s]: 28820 0.00277585
[6.3 - 6.4 s]: 28530 0.00245356
[6.4 - 6.5 s]: 28190 0.00354736
[6.5 - 6.6 s]: 27880 0.00322812
[6.6 - 6.7 s]: 27550 0.00435572
[6.7 - 6.8 s]: 27430 0.00328108
[6.8 - 6.9 s]: 27560 0.00181422
[6.9 - 7   s]: 27140 0.0018423
[7   - 7.1 s]: 26750 0.00336449
[7.1 - 7.2 s]: 26740 0.00373972
[7.2 - 7.3 s]: 26430 0.00302686
[7.3 - 7.4 s]: 25870 0.00502513
[7.4 - 7.5 s]: 25570 0.0023465
[7.5 - 7.6 s]: 25660 0.000389712
[7.6 - 7.7 s]: 25370 0.00197083
[7.7 - 7.8 s]: 24940 0.00200481
[7.8 - 7.9 s]: 24920 0.00280899
[7.9 - 8   s]: 24310 0.00452489
[8   - 8.1 s]: 24350 0.00246407
[8.1 - 8.2 s]: 24470 0.00286065
[8.2 - 8.3 s]: 24350 0.00287474
[8.3 - 8.4 s]: 23950 0.00626305
[8.4 - 8.5 s]: 23570 0.00636402
[8.5 - 8.6 s]: 24190 0.00496073
[8.6 - 8.7 s]: 22800 0.00175439
[8.7 - 8.8 s]: 22490 0.00222321
[8.8 - 8.9 s]: 22990 0.00434972
[8.9 - 9   s]: 23030 0.00477638
[9   - 9.1 s]: 22670 0.00308778
[9.1 - 9.2 s]: 22650 0.00264901
[9.2 - 9.3 s]: 22230 0.00449843
[9.3 - 9.4 s]: 22670 0.00308778
[9.4 - 9.5 s]: 21890 0.00502513
[9.5 - 9.6 s]: 21310 0.00328484
[9.6 - 9.7 s]: 21800 0.00137615
[9.7 - 9.8 s]: 19540 0.00102354
[9.8 - 9.9 s]: 21460 0.00186393
[9.9 - 10  s]: 21390 0.00140252
40267.5 0.00298752

Benchmarking multiple loggers

Interesting numbers. I think the decrease of the throughput with no logging is due to GC. I think you could try to further optimize the synchronized logging (if you still have time :-))

Throughput over time...

@yingjunwu  We're testing with 100% insert workload here, so GC doesn't help in this case. For synchronous logging, group commit needs to be implemented but that's not within our goal..

ok that's fine. Then you can focus on optimizing asynchronous logging and checkpointing.
If you find that the throughput of SSD is a major bottleneck, then you can try to dump the log to /dev/shm, which refers to the computer's memory. For example, if the original logging dumps the logs to the file /home/yourname/test.log, then now you can try to dump to /dev/shm/test.log. This is merely a simulation but helps you understand what is the real bottleneck.
Remember to clean it up after the experiments though...
I will look at the GC and get back to you later.

Effect of checkpoints.. (no logging)

Effect of logging.. in a nutshell...

I don't understand the figure for checkpoints. How many threads did you use for checkpointing? I noticed that you run the workloads for 10 seconds. However, is the time enough for checkpointing the whole database? I think you can learn from Figure 2 in the paper: http://cs-www.cs.yale.edu/homes/dna/papers/fast-checkpoint-sigmod16.pdf.

@yingjunwu We are still running expiriments but, the graph we have above is not intending to show how log checkpoint creation takes, only the impact of running a checkpoint during transaction processing.

@MattPerron that's reasonable. I expect the checkpointing will not interfere with the transaction processing, as it is a multi-version system. nice work!


Bugfix tag outofbounds

Related issues
Closes #143
Description
Added an additional check in Tag constructor to validate input length. Maximum length allowed is 25 characters.
Updated UG constraints and error table to reflect this change.
Add tests to TagTest for this change.
How to test
Create or update a meeting with one or more tags with length exceeding 25, e.g. using abcdefghijklmnopqrstuvwxyz.
Other information
Will need to implement additional tests

Codecov Report

Merging #207 (7f053b2) into master (0d36517) will increase coverage by 0.03%.
The diff coverage is 100.00%.

@@             Coverage Diff              @@
##             master     #207      +/-   ##
============================================
+ Coverage     71.61%   71.64%   +0.03%
- Complexity      560      562       +2
============================================
  Files            94       94
  Lines          1878     1880       +2
  Branches        202      202
============================================
+ Hits           1345     1347       +2
  Misses          447      447
  Partials         86       86

Impacted Files
Coverage Δ

src/main/java/seedu/address/model/tag/Tag.java
83.33% <100.00%> (+3.33%)
:arrow_up:

Continue to review full report at Codecov.

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


Porting apps: Overview of porting process

Issue tracking new topic at http://dotnet.github.io/docs/porting/overview.html

Although I was tracking an existing PR with #212, I think I'm going to break that up until multiple PRs and track with these issues.
The overview doc will go over:

Should you port?
a. Advantages that .NET Core brings
b. Good candidates for porting
c. Bad candidates for porting

Porting process overview as a list of steps:
a. Handle 3rd party dependencies, NuGet and non-NuGet
b. Migrate existing assets to .NET Framework 4.6.1 if you haven't already
c. Analyze .NET Framework APIs you use and develop a plan of attack
d. Port tests over to xUnit or NUnit, as MSTest does not support .NET Core
e. Execute your plan of attack

Overview of tools you'll use
a. ApiPort - command line or VS extension
b. NuGet - command line or NuGet Package Explorer
c. .NET CLI - the low-level toolset that VS uses under the covers to build/restore/etc

Ron can help with this.


When running previous cell could run

VSCode Version: 1.49.0 Insider
OS Version: Win10

Adding cells and running them perform runs in wrong order

@jrieken, @rebornix, @brettfo Do you encounter this before?

Sorry, it's kind of hard to tell what's going on. I guess you clicked run on one cell and it ran the whole notebook. The extension decides when a cell runs. Can you tell whether executeAllCells was run instead of executeCell? If not, I think you'll have to see what the extension is doing.


how can i get the result about "Prometheus gauge metrics"

Hi,
I run it as:

prometheus-es-exporter -c ./exporter.cfg -p 9200 -e <IP_ADDRESS>:9200

and it's running :
[2017-08-24 11:29:54,125] elasticsearch.INFO MainThread GET http://<IP_ADDRESS>:9200/_cluster/health?level=indices [status:200 request:0.198s]
[2017-08-24 11:29:54,440] elasticsearch.INFO MainThread GET http://<IP_ADDRESS>:9200/_nodes/stats [status:200 request:0.313s]
[2017-08-24 11:29:54,496] elasticsearch.INFO MainThread GET http://<IP_ADDRESS>:9200/_stats [status:200 request:0.048s]
[2017-08-24 11:29:54,499] root.INFO MainThread Starting server...
[2017-08-24 11:29:54,499] root.INFO MainThread Server started on port 9200
[2017-08-24 11:29:54,541] elasticsearch.INFO MainThread GET http://<IP_ADDRESS>:9200/_all/_search [status:200 request:0.041s]
[2017-08-24 11:29:54,672] elasticsearch.INFO MainThread GET http://<IP_ADDRESS>:9200/%3Cmegacorp%3E/_search [status:200 request:0.130s]
[2017-08-24 11:30:09,047] elasticsearch.INFO MainThread GET http://<IP_ADDRESS>:9200/_all/_search [status:200 request:0.114s]
[2017-08-24 11:30:14,027] elasticsearch.INFO MainThread GET http://<IP_ADDRESS>:9200/%3Cmegacorp%3E/_search [status:200 request:0.095s]

but what's the path of result? how can i get the result about "Prometheus gauge metrics"
thanks

Hi @qiangchow,
The standard path for Prometheus endpoints is /metrics, so assuming you are running the exporter locally, you can find the metrics at http://localhost:9200/metrics. If you configure a Prometheus scrape for the exporter's IP/Port, Prometheus will use the /metrics path by default.
The exporter will actually serve the metrics on any path at the moment, e.g. http://localhost:9200/ and http://localhost:9200/foobar will give the same result. However, this may change in the future, so I recommend you use /metrics
Braedon

Closing issue for now. Feel free to re-open if you have further questions about this.


🐛 Extension searches for binary and suggests download even if disabled

VS Code version
1.93.1
Extension version
v2024.10.20458 (pre-release)
Biome version
none
Operating system

[ ] Windows
[X] macOS
[ ] Linux

Description
I have disabled the Biome extension in my VS Code user settings (hoping I would have fewer problems if it were only enabled in specific workspaces).
{
  "biome.enabled": false
}

When I open a *.js file, I see this dialog:

I didn't expect the extension to do anything if it was not enabled.
Steps to reproduce

Install the latest pre-release of the extension
Open user setttings.json and attempt to disable the extension with "biome.enabled": false
Open a JavaScript file
See the extension open a dialog suggesting to download and globally install Biome

Expected behavior
I only want Biome to run in projects that are configured with a biome.json and have Biome as a dependency. I never expect the extension to have an impact or Biome to run when the extension is disabled. So I expected nothing to happen when I opened a JS file with the extension disabled.
I was hoping that the "biome.searchInPath": false setting would keep the extension for looking for an executable outside of the project's dependencies, but I get a warning that this setting has been deprecated.
I also tried setting "biome.requireConfigFile": true in hopes that the extension would do nothing if a biome.json configuration file was not found in a workspace. With this setting I still get the dialog above when opening a JS file.
Does this issue occur when using the CLI directly?
Not sure / Not applicable
Link to a minimal reproduction
No response
Logs
2024-10-03 14:53:56.890 [info] Biome extension 2024.10.20458 activated
2024-10-03 14:53:56.890 [info] Biome extension started
2024-10-03 14:53:56.890 [info] User-facing commands registered
2024-10-03 14:53:56.890 [info] Started listening for lockfile changes
2024-10-03 14:53:56.890 [info] Started listening for configuration changes
2024-10-03 14:53:56.890 [info] Started listening for active text editor changes
2024-10-03 14:54:38.585 [error] Could not find the Biome binary
2024-10-03 14:54:38.585 [info] Created a global LSP session

Thanks for reporting this @tschaub.
The global session shouldn't indeed be created when the extension is disabled globally. A fix for this is on the way and will be published shortly.


changes in openmeteo

Breaking change

Proposed change

Type of change

[ ] Dependency upgrade
[ ] Bugfix (non-breaking change which fixes an issue)
[ ] New integration (thank you!)
[ ] New feature (which adds functionality to an existing integration)
[ ] Deprecation (breaking change to happen in the future)
[ ] Breaking change (fix/feature causing existing functionality to break)
[ ] Code quality improvements to existing code or addition of tests

Additional information

This PR fixes or closes issue: fixes #
This PR is related to issue:
Link to documentation pull request:

Checklist

[ ] The code change is tested and works locally.
[ ] Local tests pass. Your PR cannot be merged unless tests pass
[ ] There is no commented out code in this PR.
[ ] I have followed the development checklist
[ ] I have followed the perfect PR recommendations
[ ] The code has been formatted using Black (black --fast homeassistant tests)
[ ] Tests have been added to verify that the new code works.

If user exposed functionality or configuration variables are added/changed:

[ ] Documentation added/updated for www.home-assistant.io

If the code communicates with devices, web services, or third-party tools:

[ ] The manifest file has all fields filled out correctly.
Updated and included derived files by running: python3 -m script.hassfest.
[ ] New or updated dependencies have been added to requirements_all.txt.
Updated by running python3 -m script.gen_requirements_all.
[ ] For the updated dependencies - a link to the changelog, or at minimum a diff between library versions is added to the PR description.
[ ] Untested files have been added to .coveragerc.

To help with the load of incoming pull requests:

[ ] I have reviewed two other open pull requests in this repository.

Description:
Feature wind bearing-In the initial configuration of our Home Assistant dashboard, the wind bearing parameter was conspicuously absent. This posed a limitation, as users could not readily view the direction from which the wind was originating. Recognizing the importance of this metric — especially for those who rely on precise meteorological data for daily activities — we took the initiative to enhance the dashboard. As depicted in the subsequent figure, we successfully integrated the wind bearing attribute. This augmentation not only provides a more comprehensive view of the weather conditions but also elevates the user experience, offering a seamless interface where one can access all pertinent weather details at a glance.
Feature email-We have recently rolled out a pivotal enhancement to our EMAIL_AUTOMATION feature, geared towards keeping users informed and prepared for their day. With this latest addition, users are automatically sent an email every day precisely at 8 am, providing insights into the day's temperature. This temperature data is meticulously sourced from the reliable Open-Meteo integration, which also offers a plethora of other meteorological attributes such as wind bearing, wind speed, and so on.
However, our primary focus for this feature was the temperature. Given the paramount importance of temperature information - especially in regions with severe cold - we deemed it essential for users to have this detail at their fingertips as they start their day. It assists in making informed decisions about attire, travel, and other daily activities.
The ensuing figure vividly demonstrates our email notification system in action, showcasing how users are presented with the day's temperature. With this initiative, we aim to offer users a more proactive and informed start to their day, ensuring they are well-equipped with the crucial weather details they need.
Feature wind chill-We have added the windchill capability to our Open-Meteo integration, which is a huge improvement. This advancement was made possible by using existing temperature and windspeed properties and calculating windchill using a well-established method. The windchill number obtained is then deducted from the original temperature data.
The value of including windchill in weather data cannot be emphasized. Windchill gives critical information on how people experience weather conditions. It considers the combined effects of temperature and wind to provide a more realistic picture of subjective coldness. This knowledge is especially useful for outdoor activities because it allows people to make informed decisions about how to dress appropriately, reduce the risk of cold-related health conditions, and ensure their safety.In essence, the addition of the windchill capability improves the usefulness and dependability of our Open-Meteo integration, allowing users to make more educated weather-related decisions.

Code has some strange changes, which I commented in the PR. Modified an existing integration (adding wind chill). Other feature (email notification) is realized through existing home assistant features (which is good).
The screenshot of wind chill shows "unknown". Why?
Screenshots: feature seems not to work properly, shows "unknown" value for wind chill, even though temperature and wind speed are shown in the weather widget.
Tests: do not test the new property "windchill", so the new feature is actually not tested


error cannot find module 'ejs'

node:internal/modules/cjs/loader:1215
  throw err;
  ^

Error: Cannot find module 'ejs'
Require stack:
- /usr/lib/node_modules/tcg/bin/tcg
    at Module._resolveFilename (node:internal/modules/cjs/loader:1212:15)
    at Module._load (node:internal/modules/cjs/loader:1038:27)
    at wrapModuleLoad (node:internal/modules/cjs/loader:212:19)
    at Module.require (node:internal/modules/cjs/loader:1297:12)
    at require (node:internal/modules/helpers:123:16)
    at Object.<anonymous> (/usr/lib/node_modules/tcg/bin/tcg:9:11)
    at Module._compile (node:internal/modules/cjs/loader:1460:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1544:10)
    at Module.load (node:internal/modules/cjs/loader:1275:32)
    at Module._load (node:internal/modules/cjs/loader:1091:12) {
  code: 'MODULE_NOT_FOUND',
  requireStack: [ '/usr/lib/node_modules/tcg/bin/tcg' ]
}

Node.js v22.3.0

This is what I got after installing it via sudo npm install -g, looks like an undeclared dependency.

😓  sorry you got an error.
I just tried on my Node 20.14.0 npm 10.8.0 with npm install -g typescript-call-graph and it installed right away.
I'm unsure what happened on your end; perhaps Node 22.3.0 is doing something weird - I don't know enough about inner workings of these things. I doubt sudo is messing things up, but I suspect you tried without sudo and it still complained 🤔

without sudo it wouldn't install, since it needs root access to install to those directories.


Pre-allocate quadratic vectors when using DQM.from_numpy_vectors

Codecov Report

Merging #728 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master     #728   +/-   ##
=======================================
  Coverage   92.10%   92.10%
=======================================
  Files          63       63
  Lines        4560     4560
=======================================
  Hits         4200     4200
  Misses        360      360

Continue to review full report at Codecov.

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


Build is failing for Rails 4.2

Build log
PR that caused the failure

Rails 4.2 has been end-of-life for many years now, so I'm inclined to bump up the Rails requirement rather than fix the code. We should do one or the other, though.
If we want to change the Rails requirement, I can do a PR. Since the failing part of the build also uses Ruby 2.3, which is also end-of-life and keeps us from updating Rubocop, I'd like some guidance on whether that requirement should be bumped up as well as part of the same PR.

I think it is time, indeed, to end supporting Rails 4.2 and Ruby versions 2.3, 2.4, 2.5 (maybe even 2.6 as many gems I see are doing).


Add metric for 'most popular'  / 'most active' in Challenge list

When thinking about sorting challenges #211 the concept of 'most active' challenges suddenly made new sense to me. We could use this in various ways / places but the challenge list would be a great start. That requires us to think about what constitutes 'most popular' or 'most active' In its simplest form it could be '% of total tasks that changed status in the past X days'.

Backend PR maproulette/maproulette2#457 adds server-side support for this.

We don't show popularity for each challenge yet, but it is now possible to sort challenges by popularity in search results.


fix(autocomplete): focus behaviour

Closes #2849
Closes #2834
Closes #2779
Closes #2962
Closes #2872
Closes #2974

📝 Description
In react aria, popover can be closed by clicking or interacting outside or by escape key (handled by useOverlay). When the popover is closed, focus is back to the trigger, i.e. the input. Since we have different focus behaviours in autocomplete, this PR is to handle them on our side instead of doing them internally on react aria side for better flexibilty.
here's the updated focus behaviour for autocomplete.

click selector button -> open listbox -> click selector button -> close listbox -> input stay focused
click selector button -> open listbox -> click outside autocomplete-> close listbox -> input stay blurred
click selector button -> open listbox -> input stay focused
click autocomplete input -> open listbox -> input stay focused
open listbox -> select an item -> close listbox -> input stay focused
with selected item -> click clear button -> input stay focused and listbox is open
whenever it is focus -> click outside -> input stay blurred

the behaviours are consistent even the autocomplete is in the modal.
⛳ Current behavior (updates)

Please describe the current behavior that you are modifying

🚀 New behavior
pr2854-demo-1.webm
pr2854-demo-2.webm
pr2854-demo-3.webm
💣 Is this a breaking change (Yes/No):

📝 Additional Information

Summary by CodeRabbit

New Features

Added new focus management options to Autocomplete and Popover components.
Enhanced the Select component by simplifying popover rendering logic.

Bug Fixes

Improved Modal component by incorporating disableFocusManagement property to better control focus behavior.
Adjusted focus handling across various components for enhanced user interaction.

Refactor

Streamlined test cases for the Autocomplete component to cover new functionality scenarios.
Updated use-autocomplete logic for better focus management and interaction handling.

Tests

Expanded and refactored test suites for Autocomplete component to ensure robustness and reliability.

This is a relatively large interaction, can this pr be merged and release? Thanks @jrgarciadev

I'm really looking forward to this integration
Please merge and release


Docs: Cookie banner on the new website looks... unfinished?

Hi 👋
Page URL: https://www.typescriptlang.org/
Issue: Cookie banner on the new website looks like a placeholder. It currently says "We use optional cookies to provide... read here.", the link is broken and "More info" button just opens a modal with the following text:
Manage cookie preferences
Most Microsoft sites...

Recommended Fix: Replace placeholder with actual cookie banner.
Browser: Firefox

This seems to be an odd issue around localization, think we've got a fix

I've not had any reports of this today - so I'm going to assume my fix worked out


Test the move of report_formatter and charting to core

Note, everything is passing other than an unrelated vmware provider failure.


TEP-0114: Custom Tasks Beta - References and Specifications

In TEP-0114: Custom Tasks Beta, we proposed migrating Custom Tasks and Runs to beta. This issue tracks this API changes to references and specifications in Custom Tasks and Runs.
Today, embedded specs are in Run.Spec.Spec. In TEP-0114: Custom Tasks Beta, we agreed to align the embedded specs with the rest of the API such that it's CustomRun.Spec.CustomSpec.
# before
apiVersion: tekton.dev/v1alpha1
kind: Run
metadata:
  name: run-with-spec
spec:
  spec:
    apiVersion: example.dev/v1alpha1
    kind: Example
    spec:
      field1: value1
      field2: value2
# after
apiVersion: tekton.dev/v1beta1
kind: CustomRun
metadata:
  name: customrun-with-spec
spec:
  customSpec:
    apiVersion: example.dev/v1beta1
    kind: Example
    spec:
      field1: value1
      field2: value2

Today, references are in Run.Spec.Ref. In TEP-0114: Custom Tasks Beta, we agreed to align the references with the rest of the API such that it's CustomRun.Spec.CustomRef.
# before
apiVersion: tekton.dev/v1alpha1
kind: Run
metadata:
  name: run-with-reference
spec:
  ref:
    apiVersion: example.dev/v1alpha1
    kind: Example
    name: my-example
---
# after
apiVersion: tekton.dev/v1beta1
kind: CustomRun
metadata:
  name: customrun-with-reference
spec:
  customRef:
    apiVersion: example.dev/v1beta1
    kind: Example
    name: my-customtask

Note that the API for TaskRuns and PipelineRuns is:
apiVersion: tekton.dev/v1beta1
kind: PipelineRun
metadata:
  name: pipelinerun-with-ref
spec:
  pipelineRef:
    name: my-pipeline
---
apiVersion: tekton.dev/v1beta1
kind: TaskRun
metadata:
  name: taskrun-with-reference
spec:
  taskRef:
    name: my-task
---
apiVersion: tekton.dev/v1beta1
kind: PipelineRun
metadata:
  name: pipelinerun-with-spec
spec:
  pipelineSpec:
    params:
      - name: param1
    tasks:
      - name: my-task
---
apiVersion: tekton.dev/v1beta1
kind: TaskRun
metadata:
  name: taskrun-with-spec
spec:
  taskSpec:
    params:
      - name: param1
    steps:
      - name: my-step

/assign

/assign

This issue was resolved in #5403  , it can be closed now


[INTEGRATION][AIRFLOW] OpenLineage for Redshift SQL Operator

TBD

Closing as this issue is no longer needed.


Pathfinding stops working after first use

TypeError: Cannot read properties of undefined (reading 'upperIds')
at mergeHulls (cdt2d_bundle.js:587:26)
at monotoneTriangulate (cdt2d_bundle.js:641:7)
at cdt2d (cdt2d_bundle.js:128:15)
at cdt2dConstrainedGraph (cdt2d_access_functions.js:50:21)
at Pathfinder._buildTriangles (pathfinding.js:197:23)
at Pathfinder.initialize (pathfinding.js:181:10)
at Pathfinder.runPath (pathfinding.js:288:52)
at calculatePathPointsForSegment (segments.js:97:19)
at Ruler._getMeasurementSegments (segments.js:57:7)
at 🎁CONFIG.Canvas.rulerClass.prototype._getMeasurementSegments#0 (libWrapper-wrapper.js:187:52)
at Ruler.measure (foundry.js:35789:26)
at Ruler._onMouseMove (foundry.js:36402:10)
at Token5e._onDragLeftMove (Token.js:54:33)
at 🎁CONFIG.Token.objectClass.prototype._onDragLeftMove#0 (libWrapper-wrapper.js:187:52)
at MouseInteractionManager.callback (foundry.js:30532:17)
at #handleDragMove (foundry.js:30911:26)
at #handlePointerMove (foundry.js:30876:64)
at vh.notifyListeners (EventBoundary.ts:1464:33)
at vh.notifyTarget (EventBoundary.ts:658:14)
at vh.propagate (EventBoundary.ts:310:18)
at vh.dispatchEvent (EventBoundary.ts:210:14)
at vh.mapPointerMove (EventBoundary.ts:815:64)
at vh.mapEvent (EventBoundary.ts:231:28)
at ra.onPointerMove (EventSystem.ts:396:31)

I am going to need a bit more here. What version of Foundry, what system/version are you using, and what version of Elevation Ruler? Is it specific to a single scene or does it do the same thing everywhere? If it is a specific scene, can you upload a json export of that scene so I can see what the walls look like? Thanks!

Foundry Virtual Tabletop: Version 12 Stable, 12.327
Game System: dnd5e, 3.2.1
Active Modules: 3
Performance Mode: 3
OS: Windows 15.0.0 x86 (64-bit)
Client: Not/A)Brand/<IP_ADDRESS>
GPU: ANGLE (NVIDIA, NVIDIA GeForce RTX 2080 SUPER (0x00001E81) Direct3D11 vs_5_0 ps_5_0, D3D11)
Max Texture Size: 16384
Scene: 6040 x 4632 | Grid Size: 102 | Padding Percentage: 0.25
Walls: 528 | Ambient Lights: 0 | Ambient Sounds: 0 | Tiles: 0 | Tokens: 5
Largest Texture: 4000 x 3000
Actors: 5 | Items: 0 | Journal Entries: 0 | Rollable Tables: 0 |
Playlists: 0 | Compendium Packs: 13 | Chat Messages: 5
World Scripts:
/* -------------------------------------------- /
/  World Data                                  /
/ -------------------------------------------- */
Actors: 5 | 52 kB
CardStacks: 0 | 764 B
Messages: 5 | 17 kB
CombatEncounters: 3 | 13 kB
FogExplorations: 2 | 2 MB
Folders: 4 | 2 kB
Items5e: 0 | 764 B
Journal: 0 | 764 B
Macros: 0 | 764 B
Playlists: 0 | 764 B
RollTables: 0 | 764 B
Scenes: 3 | 2 MB
WorldSettings: 8 | 10 kB
Users: 1 | 2 kB
/* -------------------------------------------- /
/  Compendium Data                             /
/ -------------------------------------------- */
"dnd5e.heroes": 12 Actors | 415 kB
"dnd5e.monsters": 331 Actors | 2 MB
"dnd5e.items": 872 Items | 843 kB
"dnd5e.tradegoods": 23 Items | 13 kB
"dnd5e.spells": 319 Items | 409 kB
"dnd5e.backgrounds": 3 Items | 6 kB
"dnd5e.classes": 12 Items | 60 kB
"dnd5e.subclasses": 12 Items | 19 kB
"dnd5e.classfeatures": 235 Items | 201 kB
"dnd5e.races": 34 Items | 47 kB
"dnd5e.monsterfeatures": 252 Items | 172 kB
"dnd5e.rules": 20 Journal Entries | 373 kB
"dnd5e.tables": 31 Rollable Tables | 45 kB
/* -------------------------------------------- /
/  Active Modules                              /
/ -------------------------------------------- */
elevationruler | 0.9.4 | "Elevation Ruler" | "https://github.com/caewok/fvtt-elevation-ruler/releases/latest/download/module.json"
find-the-culprit | 2.0.3 | "Find the Culprit" | "https://github.com/esheyw/find-the-culprit/releases/latest/download/module.json"
lib-wrapper | <IP_ADDRESS> | "libWrapper" | "https://github.com/ruipin/fvtt-lib-wrapper/releases/latest/download/module.json"

I messed around with this quite a bit but could not replicate any error. I even tried re-adding the actors to the scene. I must be missing something, but not quite sure what.

I have the same error, but on PF2E system.

I managed to reproduce it on this very simple scene, but it took a few minutes,

Is this still happening in v0.9.10?

I believe this to be fixed.

Is this still happening in v0.9.10?

I thought I got it for a moment but I cleared cache and now cannot reproduce the error

I addressed one more issue in v0.9.11 that I suspect was a cause of some of those errors. Given certain token and wall configurations, it was possible for the scene edge map to contain zero-length edges. I added some code to exclude those, so that the triangulation worked. Between that and the consistency checking I added in v0.9.10, I am hoping this is resolved. Thanks!

Should you happen to be interested, you'll find the walls on that blank map line up neatly with this one:
https://media.dndbeyond.com/compendium-images/uhlh/3BvViwHwkqOlBEFe/map-0.02-the-crystal-ball-player.jpg
from https://www.dndbeyond.com/claim/source/uni-and-the-hunt-for-the-lost-horn


unable to download clipboard via bower

When I am trying to download clipboard via bower I am getting following error. Can you please help me here.
bower ENOTFOUND     Package clipboard not found

Everything seems to be working over here.
$ bower info clipboard

bower clipboard#*           not-cached git://github.com/zenorocha/clipboard.js.git#*
bower clipboard#*              resolve git://github.com/zenorocha/clipboard.js.git#*
bower clipboard#*             download https://github.com/zenorocha/clipboard.js/archive/v1.5.5.tar.gz
bower clipboard#*              extract archive.tar.gz
bower clipboard#*             resolved git://github.com/zenorocha/clipboard.js.git#1.5.5

{
  name: 'clipboard',
  version: '1.5.5',
  description: 'Modern copy to clipboard. No Flash. Just 2kb',
  license: 'MIT',
  main: 'dist/clipboard.js',
  ignore: [
    '/.*/',
    '/demo/',
    '/test/',
    '/.*',
    '/bower.json',
    '/karma.conf.js',
    '/src',
    '/lib'
  ],
  keywords: [
    'clipboard',
    'copy',
    'cut'
  ],
  homepage: 'https://github.com/zenorocha/clipboard.js'
}

Available versions:
  - 1.5.5
  - 1.5.4
  - 1.5.3
  - 1.5.2
  - 1.5.1
  - 1.5.0
  - 1.4.3
  - 1.4.2
  - 1.4.1
  - 1.4.0
  - 1.3.1
  - 1.3.0
  - 1.2.0
  - 1.1.0
  - 1.0.0

You can request info for a specific version with 'bower info clipboard#<version>'

I am currently getting this error.  It is only happening within my specific project.  If I try to use bower install outside of the project, then everything works fine.  This has only happened with this specific plugin.  It may have something to do with my configuration, but the fact that somebody else has had this problem and also this error only occurs with clipboard.js, makes me feel like it could have something to do with the bower package.

Could you share your bower.json and the error trace?

bower.json
{
  "name": "test",
  "version": "1.0.0",
  "authors": [
<EMAIL_ADDRESS>  ],
  "description": "app platform",
  "main": "index.html",
  "moduleType": [
    "amd"
  ],
  "keywords": [
    "app"
  ],
  "license": "MIT",
  "private": true,
  "ignore": [
    "**/.*",
    "node_modules",
    "bower_components",
    "test",
    "tests"
  ],
  "dependencies": {
    "clipboard": "~1.5.9"
  }
}

Error Trace
bower clipboard#~1.5.9       ENOTFOUND Package clipboard not found
FYI, I have gotten this message no matter how I have configured my bower.json.

Just tested your bower json and ran bower install. Everything seems to be working here.
Make sure you're using the latest bower version or open an issue with bower.
bower cached        git://github.com/zenorocha/clipboard.js.git#1.5.9
bower validate      1.5.9 against git://github.com/zenorocha/clipboard.js.git#~1.5.9
bower install       clipboard#1.5.9

clipboard#1.5.9 bower_components/clipboard

I'm definitely using the most recent version of bower.  I've done a lot of different things, and coming here was my very last resort.  It just seems pretty weird that it only happens with this package and nothing else.  Sadly, I guess I'll have to look for an alternate solution.  Anyways thanks for your help!

Sorry about that, there's no way for me to reproduce this bug.

Okay I figured it out.  I am using a private registry and apparently it has a limited amount of packages that I am receiving.  If anybody else is having the same error, definitely make sure to check your bower configuration registry.


Using custom memory alloc funcs for contig mem.

Hi,
I would like have the QAT engine use custom contiguous memory alloc/free functions (as appln wants to have more control of mem mgmt) as opposed to the available USDM based funcs.
Is there a procedure to provide custom memory functions (alloc, free) to be used by QAT engine ?
I only see the following functions available as of now:
cmn_mem_drv_inf.c --> qaeCryptoMemAlloc()
qae_mem_utils.c --> qaeCryptoMemAlloc()
--
Thanks,
Narasimha

Hi @nanayak
Unfortunately, there is no straight forward way to directly configure and use custom alloc/free from different contiguous memory module other than USDM and qat_contig_mem.
The qat_contig_mem memory module present inside QAT Engine is an alternative to USDM. The alloc/free to the qat_contig_mem memory module is done through the interface file "qae_mem_utils.c" and to the USDM memory module is done through "cmn_mem_drv_inf.c". Please refer to it to provide your own implementation of memory module.

Thanks Yogaraj for the inputs.


Include Tests in static code analysis

Closes #535
Code Changes

[x] change --no-tty to -T so checks run again
[x] disable irrelevant pylint checks across tests
[x] resolve remaining pylint issues
[x] include tests as part of pylint checks
[x] include tests as part of xenon checks
[x] include tests as part of our mypy checks
[x] resolve any new isort checks
[x] resolve and new black checks

Steps to Confirm

[x] Updated and ran the static tests individually multiple times until getting the all clear

Pre-Merge Checklist

[x] All CI Pipelines Succeeded
Documentation Updated:

[x] documentation complete, or draft/outline provided (tag docs-team to complete/review on this branch)
[x] documentation issue created (tag docs-team to complete issue separately)

[x] Issue Requirements are Met
[x] Relevant Follow-Up Issues Created
[x] Update CHANGELOG.md

Description Of Changes
pylint
To make this work, we needed to disable checks for missing-docstring and redefined-outer-name. The first for being irrelevant and the second for conflicting with how pytest actually works, returning a false negative. The remainder of the changes are potential corrections for the relevant pylint errors remaining.
mypy
At the first pass, over 200 errors were found across more than 20 files. This was more of a blitz to get all of the type hinting correct without taking time to look for any other testing consolidation etc.

@ThomasLaPiana I found that the CI checks were passing with just a help message as part of this PR, currently working through it but may need a second set of eyes if I get stuck on anything here much longer. We may want to hold off on other dependency version bumping as well

Thanks for the help on the external test issue I caused @earmenda ! @ThomasLaPiana this one is large in file size but really the only test_ file changes should be for the static checks. The nox changes in particular had the most impact, I tried to separate out some commits to help a little with reviewing but sorry for the PR size! 😓

@SteveDMurphy no worries! it do be like that sometimes :)
Thanks for the changes and the catch on that tricky nox bug!

pulled locally and testing now

@SteveDMurphy herculean effort, thanks for knocking this one out!

confirmed nox -s check_all -- docker works


Feature/deflate

Adds inflate (deflate algorithm) to TIFF files.
Also allows passing params to reading directories, so that image data loading can be turned off
Make getTiffRawImageData public so that the image data can be loaded after the directories.

I was going to do 2 commits but then it got committed by accident.

Coverage decreased (-0.07%) to 73.751% when pulling e98fe1dfd653c07de299e018ce431782082d192b on pauldaustin:feature/deflate into d8780ffde132d9e3e7745b781c2f7a1fca8a7654 on apache:master.

From an initial look the code looks good. @pauldaustin could you create a JIRA issue for it, and also include some basic unit tests, please? There's some info on contributing here. Thanks!

Thanks for working on the PR comments so quickly. Could you take a look at the Travis CI broken build? It appears to be an issue with the code formatting.
You can look at the .travis.yml file, and run the same maven targets in your own computer to reproduce it.

Do you know if there are an exported configurations for Eclipse code style, formatting and import ordering. I use that on my own projects so it automatically gets formatted properly when I save.
I avoided using the eclipse auto formatter which would resolve these issues as it re-formatted a bunch of the other code. My code style also sorts methods into a consistent order which if run regularly on a project makes merging changes between branches easier.

Looks like the formatter wouldn't have helped as the spaces were at the end of lines in the javadoc comment and it didn't strip them when I tried the formatter.

Looks like the formatter wouldn't have helped as the spaces were at the end of lines in the javadoc comment and it didn't strip them when I tried the formatter.

:+1: I kind of got used to the style used in most Commons projects, so I don't have an imported style/formatter settings for Eclipse (I also use it for Java). Some projects have mixed styles too, mixing old and new, with different rules. Easier to try to copy the existing style and run Maven targets before committing I guess.
New error:
[ERROR] 7002: org.apache.commons.imaging.common.bytesource.ByteSource: Method 'public java.lang.String getFilename()' has been removed

I think an existing method that was public has now been removed? That is not backward compatible - i.e. existing users would have issues unless we released a new major version (next release is still maintenance/alpha).

I renamed getFilename() (obvious typo) to getFileName(). Since we do not have a 1.0 release yet, breaking BC is OK. We should get the public names right before 1.0.

I renamed getFilename() (obvious typo) to getFileName(). Since we do not have a 1.0 release yet, breaking BC is OK. We should get the public names right before 1.0.

Is there a way to tell cliir to ignore these errors for now then? So that the PR's checks can all pass

I merged master into my branch to get the other changes.
Maybe this will fix the PR check issues.

@pauldaustin no that won't fix the build. I've created a PR that disables Clirr check for backward compatibility - https://github.com/apache/commons-imaging/pull/45
If/once that gets merged, if you rebase your changes again then the build should pass this time.
Thanks
Bruno

Done @pauldaustin . If you rebase this PR onto master, the tests should finally pass. Sorry for the delay!

I'm giving up, seems to be a bunch of errors I'm not sure how to fix, or are in parts of the code I haven't changed.

@pauldaustin just had a look, and the PR is passing in some JDK's, and the failures appear to be related to Travis-CI. Nothing wrong with your code as far as I can tell, so I believe it's ready to be reviewed and hopefully merged :) 👍 thanks for rebasing it

@kinow That's great news thanks.

Merged, thanks!


resizing doesn't work in my app

Hi the TextFit is not at all resizing the font. I'm using react v ^0.14.7;
I'm using the Textfit to resize the react-datagrid column heading.
`
render() {
var categoryHeadings = GenerateCategoryHeadingsFromReportColumns(this.props.reportColumns);
    return (

                {
                    _.map(categoryHeadings, function (columnHeading, key) {
                        if (columnHeading === undefined) {
                            return '';
                        }

                        var divStyle = {
                            width: columnHeading.width,
                            minWidth: columnHeading.width,
                            paddingRight: columnHeading.paddingRight
                        };
                        return (

                                <Textfit style={inlineStyle}
                                                 mode="single"
                                                 forceSingleModeWidth={false}>
                                                 {columnHeading.categoryName}
                                                   </Textfit>

                        );
                    })
                }

    );
}

`

I’m sorry, this does not seem to be a clearly described issue. Given your description, it is tricky to figure out what went wrong. Perhaps you should first try other avenues of action, such as investigate the problem further, ask for help on support forums. You could also try to come up with a simpler way to reproduce your problem on a website like jsfiddle.net. If you have new findings, by all means, feel free to add them here and the issue might be reopened.


New Plugins Interface Design Documents

This document is intended to reflect the plugin design that @HonoreDB and I came up with.

Looks good to me, happy to hear feedback if anybody has the time and inclination.

Oh @travis - I like how you suddenly fail on a doc change with an error exclaiming that two identical things aren't equal.

LGTM, will merge by EOD unless objections


Add (or document) local file embedding for SSH keys, systemd units and dropins

With https://github.com/coreos/fcct/pull/99, we can use the following FCC to embed files from a directory in a config:
storage:
  files:
    contents:
      local: foo.conf

I would like to use a similar mechanism to embed:

SSH Keys
systemd units
systemd dropins

Not sure if this came up before, though some YAML parsers allow support for custom tags like !include: myfile which would solve this at a more generic level.


tty is not accepting input when generating a new app using Ruby 2.7.2 via asdf

Are you in the right place?

For issues or feature requests file a GitHub issue in this repository
For general questions or discussion post in Gitter

Describe the problem
Hi.
I'm trying out TTY for the first time. Trying to generate a new app and hitting a wall immediately. It just sits there and does nothing. When pressing "return" is just goes to the new line, pressing Ctrl+C exist app.
Steps to reproduce the problem
 teletype new issup

Actual behaviour
 teletype new issup
Creating gem 'issup'...
rspec is already configured, ignoring --test flag.
Do you want to set up continuous integration for your gem? Supported services:
* CircleCI:       https://circleci.com/
* GitHub Actions: https://github.com/features/actions
* GitLab CI:      https://docs.gitlab.com/ee/ci/
* Travis CI:      https://travis-ci.org/

Future `bundle gem` calls will use your choice. This setting can be changed anytime with `bundle config gem.ci`.
Enter a CI service. github/travis/gitlab/circle/(none):
gitlab
github
none
^C
/Users/konung/.asdf/installs/ruby/2.7.2/lib/ruby/gems/2.7.0/gems/tty-command-0.9.0/lib/tty/command/process_runner.rb:146:in `join'
/Users/konung/.asdf/installs/ruby/2.7.2/lib/ruby/gems/2.7.0/gems/tty-command-0.9.0/lib/tty/command/process_runner.rb:146:in `read_streams'
/Users/konung/.asdf/installs/ruby/2.7.2/lib/ruby/gems/2.7.0/gems/tty-command-0.9.0/lib/tty/command/process_runner.rb:48:in `run!'
/Users/konung/.asdf/installs/ruby/2.7.2/lib/ruby/gems/2.7.0/gems/tty-command-0.9.0/lib/tty/command.rb:185:in `execute_command'
/Users/konung/.asdf/installs/ruby/2.7.2/lib/ruby/gems/2.7.0/gems/tty-command-0.9.0/lib/tty/command.rb:104:in `run'
/Users/konung/.asdf/installs/ruby/2.7.2/lib/ruby/gems/2.7.0/gems/tty-0.10.0/lib/tty/commands/new.rb:126:in `execute'
/Users/konung/.asdf/installs/ruby/2.7.2/lib/ruby/gems/2.7.0/gems/tty-0.10.0/lib/tty/cli.rb:128:in `new'
/Users/konung/.asdf/installs/ruby/2.7.2/lib/ruby/gems/2.7.0/gems/thor-0.20.3/lib/thor/command.rb:27:in `run'
/Users/konung/.asdf/installs/ruby/2.7.2/lib/ruby/gems/2.7.0/gems/thor-0.20.3/lib/thor/invocation.rb:126:in `invoke_command'
/Users/konung/.asdf/installs/ruby/2.7.2/lib/ruby/gems/2.7.0/gems/thor-0.20.3/lib/thor.rb:387:in `dispatch'
/Users/konung/.asdf/installs/ruby/2.7.2/lib/ruby/gems/2.7.0/gems/thor-0.20.3/lib/thor/base.rb:466:in `start'
/Users/konung/.asdf/installs/ruby/2.7.2/lib/ruby/gems/2.7.0/gems/tty-0.10.0/exe/teletype:14:in `<top (required)>'
/Users/konung/.asdf/installs/ruby/2.7.2/bin/teletype:23:in `load'
/Users/konung/.asdf/installs/ruby/2.7.2/bin/teletype:23:in `<main>': interrupted

Expected behaviour
It should let me proceed past this point
Describe your environment

OS version: MacBook Pro osx Big Sur
Ruby version: 2.7.2 installed via asdf
TTY version: v0.10.0

I'm using fish-shell in iTerm, but I also tried bash and using osx built-in terminal to the same effect. As well as restarting iTerm and opening new sessions. Nothing seems to work

Update
Looks like if I switch to Ruby 2.6.6 tty new app works as expected.
Also I noticed that tty is using an old version of tty-command, which is why it could be having trouble with newer version of Ruby? Just an idea.

As far as I can tell the culprit is actually bundler? My ruby 2.7.2 had 2.2.6 as the default version of bundler. But my Ruby 2.6.6  (that didn't give me problems) was running 1.7.3 as the default.

Hi Nick 👋
Thanks for giving the tty project a try. I do apologise for the not-so-great experience. This gem requires an update!
Thanks also for this report! It seems to me that tty-comand and this issue  in particular is at fault. This will be a priority for me to fix. Though I cannot promise any timelines as I do this in my spare time.

@piotrmurach Is there any update on this issue? I cloned the master branch of tty today and ran into this issue. I am using ruby 3.0.1 with asdf. If this is not fixed, is there any workaround?

So after posting the comment, I was trying to debug the issue with VSCode and ran the command a couple of times. Then everything started working again. But the CI configuration prompt no longer appears and I am not sure what fixed the problem. Below is a screenshot of the terminal output -

I remember setting the writers array to [stream] after compacting it once and everything started working on subsequent runs.
https://github.com/piotrmurach/tty-command/blob/1340c436e8c111dc9eb94997c5cf818bc8bfd42e/lib/tty/command/process_runner.rb#L90-L93
Nevertheless I am happy with the output I have got and thanks @piotrmurach for creating these gems. 🏆

so, I ran into this today, ruby 3.0.1p64 Bundler version 2.2.17 and at least with  tty-0.10.0 and tty-command-0.9.0
I ran into a couple of issues where argument forwarding was broken and was not passing arguments through to the Thor executable that actually does the work of assembling the bundle gem arguments from the options. But even once I spiked that and got it calling bundle correctly, I also ran into the ci option issue identified here. Once I hard coded the ci option in the list of arguments passed to bundler I ran into the next problem which was bundler asking about creating a changelog. AFAIK the changelog dialog does not have a cli flag to avoid the prompt, so at this point, I think we're sorta stuck until we can forward stdin arguments as I think folks in this thread have already identified.


DEV code is now in production bundle in master

This PR broke Uglify's dead code elimination for DEV: https://github.com/reactjs/redux/pull/2030.
Uglify is not smart enough to understand that if a literal is assigned to a variable, and later that variable gets compared, it's the same as literal. As a result, DEV-only code ends up in the production bundle:
{var c=t[r];"production"!==p&&void 0===e[c]&&(0,l["default"])('No reducer provided for key "'+c+'"'),"function"==typeof e[c

I suggest reverting #2030, at least in the current form.

Yeah, not sure why I didn't give that more scrutiny. Luckily, it hasn't been released.
We may want to add a quick check of the gzipped UMD bundle size to the build scripts. We do this on react router and it helps guard against ballooning the bundle size, provided you know what a "good" size looks like.
I'll revert this once in on desktop (since it can't be done automatically).

We may want to add a quick check of the gzipped UMD bundle size to the build scripts.

Yes, that would be great!

Do you guys know by any chance how this can be avoided?

That sounds like a tooling problem. We don't add the polyfill ourselves, so it would seem you need to configure your tooling not to do that. It's similar to checking for a DOM with typeof window !== 'undefined'.

yeah, u have reverted your checks to if (process.env.NODE_ENV !== 'production') {, but the mentioned commit tried not to only cache this value, but also guarded against lack of process like this:
var NODE_ENV = typeof process !== 'undefined' ? process.env.NODE_ENV : 'development'
this has triggered (on your previous webpack config too, i see u have switched to rollup now) process polyfill to be included
anyhow i'll try to explore possibilities to avoid this, from that I understand Aurelia has its own bundler which does not recognize process and packages that use it cannot be properly transpiled by its users

@Andarist It's 50% smaller: https://github.com/reactjs/redux/pull/2283#issuecomment-284913574


Page Content

Is syncing page content technically possible? If so, it is reasonably possible?

It is technically possible but I don't want to implement it—someone is welcome to do it. https://developers.notion.com/reference/get-block-children


[BUG] F-Droid build failed

Describe the bug
https://gitlab.com/linsui/fdroiddata/-/jobs/7228770654
> Task :app:lintVitalRelease FAILED
/home/vagrant/build/org.sbv.pockettracker/app/src/main/res/values-night/colors.xml:7: Error: The color "notwinner_color" in values-night has no declaration in the base values folder; this can lead to crashes when the resource is queried in a configuration that does not match this qualifier [MissingDefaultResource]
    <color name="notwinner_color">@color/black</color>
           ~~~~~~~~~~~~~~~~~~~~~~
/home/vagrant/build/org.sbv.pockettracker/app/src/main/res/values-land/dimens.xml:5: Error: The dimen "block1_end" in values-land has no declaration in the base values folder; this can lead to crashes when the resource is queried in a configuration that does not match this qualifier [MissingDefaultResource]
    <dimen name="block1_end">0dp</dimen>
           ~~~~~~~~~~~~~~~~~
   Explanation for issues of type "MissingDefaultResource":
   If a resource is only defined in folders with qualifiers like -land or -en,
   and there is no default declaration in the base folder (layout or values
   etc), then the app will crash if that resource is accessed on a device
   where the device is in a configuration missing the given qualifier.
   As a special case, drawables do not have to be specified in the base
   folder; if there is a match in a density folder (such as drawable-mdpi)
   that image will be used and scaled. Note however that if you  only specify
   a drawable in a folder like drawable-en-hdpi, the app will crash in
   non-English locales.
   There may be scenarios where you have a resource, such as a -fr drawable,
   which is only referenced from some other resource with the same qualifiers
   (such as a -fr style), which itself has safe fallbacks. However, this still
   makes it possible for somebody to accidentally reference the drawable and
   crash, so it is safer to create a default fallback in the base folder.
   Alternatively, you can suppress the issue by adding
   tools:ignore="MissingDefaultResource" on the element.
   (This scenario frequently happens with string translations, where you might
   delete code and the corresponding resources, but forget to delete a
   translation. There is a dedicated issue id for that scenario, with the id
   ExtraTranslation.)
2 errors, 0 warnings
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:lintVitalRelease'.
> Lint found fatal errors while assembling a release target.

  Fix the issues identified by lint, or create a baseline to see only new errors.
  To create a baseline, run `gradlew updateLintBaseline` after adding the following to the module's build.gradle file:
  \`\`\`
  android {
      lint {
          baseline = file("lint-baseline.xml")
      }
  }
  \`\`\`
  For more details, see https://developer.android.com/studio/write/lint#snapshot

  Lint found 2 errors, 0 warnings. First failure:

  /home/vagrant/build/org.sbv.pockettracker/app/src/main/res/values-night/colors.xml:7: Error: The color "notwinner_color" in values-night has no declaration in the base values folder; this can lead to crashes when the resource is queried in a configuration that does not match this qualifier [MissingDefaultResource]
      <color name="notwinner_color">@color/black</color>
             ~~~~~~~~~~~~~~~~~~~~~~

  The full lint text report is located at:
    /home/vagrant/build/org.sbv.pockettracker/app/build/intermediates/lint_vital_intermediate_text_report/release/lintVitalReportRelease/lint-results-release.txt

To Reproduce
Steps to reproduce the behavior:

Go to '...'
Click on '....'
Scroll down to '....'
See error

Expected behavior
A clear and concise description of what you expected to happen.
Video and Screenshots
If applicable, add a video and/or screenshots to help explain your problem.
Device (please complete the following information):

Phone Brand/Model [e.g. Pixel 7 Pro]:
Android Version [e.g. 33]:
App Version [e.g. v0.20.3]:

Bounty (in Bitcoin sats) offered for a solution
Incentivize developers to work on your issue. Describe clear milestones to claim payment.

Sorry, wrong repo.


[Docs] Fixed responsiveness

Notes for Reviewers
This PR fixes #8029
Added responsiveness for both vulnerability and supported platforms table.
Added missing subcontents on the sidebar
Signed commits

[x] Yes, I signed my commits.

@vishalvivekm @thisiskaransgit  , please review the changes .

🚀 Preview for commit f362d991360098ec66d2c776920dd93d6e59791a at: https://64aae56b51b999484372f396--meshery-docs-preview.netlify.app

🚀 Preview for commit c119197aa48bbca0953f1b8101fa96c8e13c7736 at: https://64aae96dc6d6e648f3dcbe02--meshery-docs-preview.netlify.app

@Ghat0tkach Let's discuss this on Websites Meeting call on Monday. Please add this as an agenda item in the meeting mintes if you would

Thank You


[DO NOT MERGE] - Review app infinite disco

The type of this PR is: Feat

This PR solves [PROJECT-XX]
Description
https://infinite-disco.artsy.net/infinite-discovery
This PR is the POC of the Elastic Search recommendations.

Warnings

:warning:

Routes added to routes.tsx should have a corresponding cypress.js smoke test. See the cypress/e2e folder for examples.

  Generated by :no_entry_sign: dangerJS against 92b26c287cb5fdddd6cd4bc36c56da7593c341b2

Closing in favor of https://github.com/artsy/force/pull/14997


WIP: feature/increase code quality

Codecov Report

Merging #8 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master       #8   +/-   ##
=======================================
  Coverage   75.38%   75.38%
=======================================
  Files           4        4
  Lines          65       65
  Branches       19       19
=======================================
  Hits           49       49
  Misses          6        6
  Partials       10       10

Continue to review full report at Codecov.

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

Coverage remained the same at 80.556% when pulling e2fd84bbc399981502cd455fa2ea66892dcda9ef on feature/increase-code-quality into c20c0ee64fe4d5fb59ac783ed1fbbeea1cb3a7e4 on master.


[KTVHCURLTools  URLEncode:] memory issue

'[KTVHCURLTools  URLEncode:] '
When dealing with long url string, this method will generate too many autorelease object.
In extreme cases, this will result in FOOM.

Fixed in 2.0.


What are normal/valid options for the "parameters" param object?

For example... if I want to call a CRM Action for the Opportunity entity. How do I pass the Opportunity/target to that CRM Action? I assume it has to go inside "parameters" object, but what should the property key be, and what's the value's data type?

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

ID: 2a261db5-f03e-8100-f9b9-592ba9a34cea
Version Independent ID: 281480d2-01b3-1488-9f00-9e82fd6d93ef
Content: invokeProcessAction (Client API reference) in model-driven apps - PowerApps
Content Source: powerapps-docs/developer/model-driven-apps/clientapi/reference/Xrm-Utility/invokeProcessAction.md
Service: powerapps
GitHub Login: @KumarVivek
Microsoft Alias: kvivek

Any updates on this?

@michaelmmcrae1 @sudipmandal Thanks for contacting us. We have updated the docs and pushed it live. Closing the issue.


Chore(examples): add example

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Search modal blocks page on Safari

It looks like the search modal is blocking page content when browsing the side using Safari.  Here's what it looks like loading the https://deno.land page:

The modal doesn't seem to be dismissible (I tried hitting ESC and clicking away from the search box).  The page doesn't seem to have any javascript errors.  From some spot checking, it looks like it's on any page on the site, third party modules, and the docs.
I tried Chrome and see that the page looks to load normally.
Details

Safari Version 15.2 (166<IP_ADDRESS>.8, 16612)

Should be fixed now.

Thank you!

Just wanted to note that this bug looks to be back on a couple pages – specifically on the https://deno.land/ and https://deno.land/x page (just the third party modules landing page, browsing individual modules seems to work).

@blakechambers is this still the case?

@crowlKats Everything looks like it's working now.  Thanks!


Updated typescript to 4.4.2

Waiting for Yarn pnp to work properly with Typescript 4.4.2
Current issues:

[ ] Typescript doesn't detect installed dependencies creating errors everywhere


how to get the TIN pretrain model in Kinetics-600?

how to get the TIN pretrain model in Kinetics-600, i want to get the pretrain model. thanks

I have upload Kinetics-700 TIN pretrain model. I think it's performance will be better than  Kinetics-600 pretrain model.


fix typos in select.md

Coverage remained the same at 100.0% when pulling 00e82b0ba82efe127d946dffc525f83a31226e8b on Sicaine:patch-1 into 3b09b51741895ed39b8d89b8d80a9836e088cae2 on mybatis:master.

Thanks!


does  this control recycle the invisible views?

like recyclerview in android. to prevent excess memory consumption etc.

@alicint yes, that's correct

thanks, I will try it out


Example application

Any progress on example app?

I would love to help out on this. Is there an OAuth 2 service we can use?


Application Charge currency being returned as weird object with each letter as a different value

Issue summary
Before opening this issue, I have:

[x] Upgraded to the latest version of the relevant packages

@shopify/* package and version:
Node version: 20.14.0
Operating system: MacOS

[x] Set { logger: { level: LogSeverity.Debug } } in my configuration, when applicable
[x] Found a reliable way to reproduce the problem that indicates it's a problem with the package
[x] Looked for similar issues in this repository
[x] Checked that this isn't an issue with a Shopify API

If it is, please create a post in the Shopify community forums or report it to Shopify Partner Support

Description
This is really a duplicate of https://github.com/Shopify/shopify-api-js/issues/1325 but applicable to one-time charges (ApplicationCharge class).
Not sure if this is the right repo, I observe the issue in a Remix app.
Current code:
https://github.com/Shopify/shopify-app-js/blob/64e921bf80f65f9ee0f7bdf0ed9969e64e41e996/packages/apps/shopify-api/rest/admin/2024-07/application_charge.ts#L78
Previous fix in recurring charges:
https://github.com/Shopify/shopify-api-js/commit/513f9e6c3bb6a9f1d289820a9a40602c5ef04d28#diff-b7fd618aa27ac126617eff6762287fed5dbe2aa82a516a1da587a788fc4bf786
Expected behavior
The charge's currency should be a string (to be consistent with recurring charges), or perhaps a proper currency object.
Actual behavior
currency property is an object like { 0: "U", 1: "S", 2: "D" }

Steps to reproduce the problem
  const charges = await admin.rest.resources.ApplicationCharge.all({
    session,
  });

  console.log(charges[0].currency);

Thanks for flagging! I will add this to our work list.