System of Diffusion-like Equations (Multigroup Neutron Diffusion)

Background
I'm working to solve the multigroup neutron diffusion equations.
It is essentially a coupled system of diffusion equations that represents an eigenvalue problem for eigenvalue  and eigenvector .

This system can be rewritten as a generalized eigenvalue problem.

I am only interested in the eigenmode with largest eigenvalue . It has been shown elsewhere that the most efficient and robust solution method for this class of equations is the Generalized Davidson eigensolver and I'm currently using the implementation in SLEPc (for a one-group, , problem). A Power Iteration algorithm has been simple to implement for the multigroup problem () but the method itself is rather inefficient.
Problem
The  and  matrices from above have dimensions  where  is the DOF of the mesh and  is the total number of energy groups. Essentially, each grid position has  functions associated with it.
To minimize bandwidth, it is favorable to arrange the matrix so that the matrix index is  where  is the index for the original DOF (as possible by Ordering::byVDIM). This seemed like a great candidate for the Vector* classes (e.g. VectorCoefficient, VectorMassIntegrator, etc.) in MFEM as there is a vector of functions associated with each grid location. However, this did not seem to work as I imagined, particularly the VectorDiffusionIntegrator.
It seems it may be possible to write my own BilinearIntegrator but I would like to leverage the existing code if possible. Especially as this will be scaling to very large supercomputers.
How should I go about building these  and  matrices in MFEM?
Thank you in advance!

Hi @wcdawn,
MFEM has been used to solve similar problems, although we don't have any public examples about them. You're right that our FiniteElementSpace supports Ordering::byVDIM. If you assemble a SparseMatrix from a BilinearForm that uses such space, then this matrix would be consistent with the Ordering::byVDIM. However, most Assemble functions of the integrators, assume that the local vectors are extracted in Ordering::byNODES.
For what operations do you need Ordering::byVDIM? Is it needed only on the linear algebra level, or for the local operations as well (in the integrators)? Are you looking at standard (eg obtaining SparseMatrix) assembly or partial assembly? What finite element spaces are you planning to use? One can certainly define a version of an integrator that uses local byVDIM vectors, but will have to be careful with standard operations like dot and matrix products.

Thanks for the response!
I think part of the problem is I need to eventually access a PETSC_MATAIJ matrix to pass to the SLEPc eigensolvers. If I could work with SparseMatrix directly, I could (at least for prototyping) reorder the matrix myself using things like GetRow and SetRow.
To answer your questions:

We want Ordering::byVDIM to reduce the bandwidth of the matrices. We want all energy groups at a particular position stored near each other. So yes, it is only needed on the linear algebra level.
Standard assembly is fine for now. But we do need to be able to obtain a PETSC_MATAIJ matrix which (to my understanding) means calling ParallelAssemble() at some point.
We're only interested in FE spaces using linear and curvilinear elements with polynomial basis functions of arbitrary order. I think this is an H_1 space but maybe L_2. My FEM is a bit rusty.

A pseudo-code version that currently works for G=1 follows.
ParBilinearForm a{fespace}, m{fespace};
// populate a & m using PWConstCoefficient, MassIntegrator, and DiffusionIntegrator
a.Assemble();
m.Assemble();
// apply boundary conditions
a.Finalize();
m.Finalize();
SlepcEigenSolver slepc{MPI_COMM_WORLD};
// slepc settings
PetscParMatrix* A{nullptr}, M{nullptr};

OperatorHandle Ah{Operator::PETSC_MATAIJ}, Mh(Operator::PETSC_MATAIJ};
a.ParallelAssemble(Ah);
Ah.Get(A);
Ah.SetOperatorOwner(false);
m.ParallelAssemble(Mh);
Mh.Get(M);
Mh.SetOperatorOwner(false);
slepc.SetOperators(*A,*M);
slepc.Solve();

Thanks again!

If fespace is with G components and has Ordering::byVDIM, then I believe that the result of a.Assemble and m.Assemble should be what you want. I would expect that the conversion to PetscParMatrix would still respect that ordering, but @stefanozampini is the person to verify this.

The conversion to PETSc does not change ordering. All of the hypre data gets wrapped in a MAT_HYPRE in PETSC.

I have updated the fespace to have the proper dimensions.
ParFiniteElementSpace fespace{&pmesh, fec, G, Ordering::byVDIM};

I can use VectorConstantCoefficient and VectorMassIntegrator to handle most of the terms (I think). I may need a MatrixCoefficient but VectorMassIntegrator can handle this as well.
I'm still confused about how to handle the diffusion term. VectorDiffusionIntegrator cannot be constructed with a VectorCoefficient. For each equation g=1...G, the coefficient for the diffusion term is different. Is there a different integrator I should use?

Hi, @wcdawn,
It may be worth pointing out that BilinearForm integrators compute a single dense matrix for each element of the mesh.  If you have isotropic multi-species diffusion with no coupling between species then your diffusion coefficient can indeed be viewed as a vector of scalar diffusion coefficients.  However, in this case the dense matrix computed by the integrator will contain zeros in all of the off-diagonal blocks corresponding to the non-existent couplings.  It would actually be more efficient to compute the diagonal blocks of this operator separately using something like DiffusionIntegrator with each scalar diffusion coefficient in turn.  This could be done using separate BilinearForm objects and then combine the operators using a BlockOperator or it could be done by implementing a custom VectorDiffusionIntegrator which calls DiffusionIntegrator multiple times and copies the results into a larger dense matrix leaving the off-diagonal blocks set to zero.
Best wishes,
Mark

I really and truly appreciate the help, but I'm more confused now than ever.
I've setup what I think should work but it doesn't seem to do what I think it should.
The system of equations is rewritten.

Where , , and  and  is a vector of functions with length .  is a diagonal matrix of diffusion coefficients.  and  will be mostly sparse but will have off-diagonal entries. I can provide more detail about the population of the matrices if it would be helpful.
For testing, I'm working on a problem where , , and  are constant (not spatially dependent). I have setup these as MatrixConstantCoefficient. I have setup Ordering::byVDIM so I think that the  indexing in the matrix coefficients should correspond to the appropriate elements in the  vector.
I perform the bilinear integration using DiffusionIntegrator (which does support MatrixCoefficient) and MassIntegrator. The linear system works for  but fails for .
Am I using the coefficients and integrators properly here? Does @vladotomov comment imply that integrators cannot be used with a fespace that has Ordering::byVDIM?
I think I understand the comment from @mstowell and it should be useful for eliminating multiply-by-zero operations. Unfortunately, I cannot get the code to work with dense matrix math yet so optimization is currently "Future Work."

Does @vladotomov comment imply that integrators cannot be used with a fespace that has Ordering::byVDIM?

It doesn't imply this. It means that if you write your own integrator, the local Vector that is received as input, is ordered byNODES. But since you're using the built-in integrators, you should not worry about this.
What do you mean by "fails"? Does something segfault, or doesn't the solver converge?
I would try to decouple the groups, and get the same solution for all groups, as the solution obtained for G=1 (since that's known to be correct).

@wcdawn You cannot use DiffusionIntegrator, since it works for scalar problems only https://github.com/mfem/mfem/blob/master/fem/bilininteg.cpp#L504. Likewise, I also think you cannot use VectorDiffusionIntegrator https://github.com/mfem/mfem/blob/master/fem/bilininteg.cpp#L2166 as I presume it assumes a Vector dimension equal to the geometrical dimension, https://github.com/mfem/mfem/blob/master/fem/bilininteg.cpp#L2214
With that said,  I guess you can extend the VectorDiffusionIntegrator by working as you wish,  by computing the Vector dimension (your G) out of the size of the coefficient matrix and the spatial dimension of the finite element.
However, note that you need to code up support for matrix coefficients since the VectorDiffusionIntegrator now works for constant coefficients only.

My use of "fails" was definitely not clear. The problem solves for some meshes but the matrices are assembled incorrectly. When the solver does converge, the matrix is wrong as boundary conditions are not enforced and the result is not "smooth" though material properties are constant. Refining the mesh for a problem that does converge, causes the problem to not converge. It just seems wrong.
I don't know about decoupling the groups. They're inherently coupled through the R and F matrix coefficients (above). Also, there is a single eigenvalue for the system described by all of these groups so I'm not sure how the result could be interpreted.
I went ahead and used BlockOperator to assemble the matrices myself, essentially in the Ordering::byNODES order. I populated the BlockOperator using SparseMatrix generated from different bilinear forms. The code works and gives the right answer. Sparsity plots below. This is a G=2, N=36 problem. As you can see, this has bandwidth approximately equal to N*G.

I'm still interested in implementing a Vector implementation.

@stefanozampini It would seem you're right. VectorDiffusionIntegrator does seem to use the spatial dimension instead of the dimension of the vector FE space from some preliminary results.
For your second point, my understanding is that VectorDiffusionIntegrator currently returns (space_dimlocal_dof) matrix but I will need to make it return (vector_dimlocal_dof) matrix. Is this correct?
Yes, I will also need to add support for MatrixCoefficient. I may be able to get by with only VectorCoefficient but if I'm adding one, I could pretty easily add both.

Hi @wcdawn,
Currently, VectorDiffusionIntegrator only supports a scalar coefficient, however, it is definitely possible to extend it to support vector coefficients with any number of components.
The vector dimension of the FE space is typically not directly known in the integrators because they only get the FiniteElement object and not the whole FE space. For that reason, for the VectorMassIntegrator we have different ways of informing the integrator about the vector dimension: 1) by using a VectorCoefficient from which we can extract its vector dimension using VectorCoefficient::GetVDim(); 2) by using a MatrixCoefficient and its method MatrixCoefficient::GetVDim(); or 3) when using a scalar coefficient, we can set the vector dimension explicitly by calling VectorMassIntegrator::SetVDim(int). The same approach can be used with the VectorDiffusionIntegrator class.

For your second point, my understanding is that VectorDiffusionIntegrator currently returns (space_dimlocal_dof) matrix but I will need to make it return (vector_dimlocal_dof) matrix. Is this correct?

Yes, the expected result is (vdim * num_local_dofs) x (vdim * num_local_dofs) (vdim is the vector dimension of the FE space) where the matrix is locally ordered byNODES, i.e. it is vdim x vdim block matrix where each block is num_local_dofs x num_local_dofs.
Let us know if you need help with extending the VectorDiffusionIntegrator for the vector and/or matrix coefficient cases.
If you are interested in contributing this addition to MFEM, let me know and I can add you to the Collaborators team, so that you can create your branch directly in the MFEM repo.

@v-dobrev Thank you for your explanation.
I am interested in adding support for VectorCoefficient and MatrixCoefficient for VectorDiffusionIntegrator and I have enough info to get started using your explanation.
Either being added to Collaborators and making a branch in MFEM or working from a fork. Whichever works best for your workflow.

@wcdawn, I added you to the Collaborators team, so now you should be able to create your branch in the mfem repo -- let me know if you run into any issues. We typically prefer this over merging from forks -- it is a bit easier for us to make small adjustments.

@wcdawn, VectorDiffusionIntegrator::AssembleElementMatrix performs the local action of the VectorDiffusionIntegrator. It is used, for example, when an integrator is added to a NonLinearForm, in which case there is no global SparseMatrix, but only the local actions are computed.

@vladotomov I assume you meant AssembleElementVector.
I'm still confused because the currently implemented routine for VectorDiffusionIntegrator reassigns the memory of the input and output vectors to a set of dim*dof matrices. Also, the BilinearForm::AssembleElementVector is only implemented for DiffusionIntegrator and VectorDiffusionIntegrator but it is called in none of the unit tests, examples, or minapps. I'm not sure how to implement it and there are no tests that I can use.
I'm going to open the Pull Request and the discussion can probably be moved there.

Yes I meant AssembleElementVector.
The dim*dof matrices are just a different representation of the input / output Vectors, so that it's easier to do operations with the components.
BilinearForm::AssembleElementVector is used in one of our internal applications, but you're right, MFEM does not contain examples or tests for them. If you have a PR, that would be a good place to add unit tests.


Is there any place where I can see all of the JSX elements that are created? Cannot style

I want to style my Markdown, but the examples don't really help.
Is it
heading1: {
  color: 'red';
  font: 'Bebas'
}

or
h1: {
  color: 'red'
....
}

I tried both, but the styles are not changing whatsoever.

Found it here, kinda...
I just couldn't figure out WHAT it was factually generating.
https://github.com/mientjan/react-native-markdown-renderer/blob/master/src/lib/styles.js


fix for behaviour (error) on strdup(NULL) when setlocale returns NULL (for example Samsung Galaxy Tab 10.1)

...sung Galaxy Tab 10.1)

This is a dupe of https://github.com/cjlin1/libsvm/pull/20

Whops, I missed it.


should have a placeholder in the endpoint url input box

It will be nice to have a placeholder in endpoint input field.
like
http(s)://xxxx.xxx.xxx

Added.


fix: avoid duplicated chat ctx for function call with messages

When there is a message along with the function calls, the message will be added to the chat ctx twice: after it's played, and after the function calls finished.
[
...
 ChatMessage(role='assistant',
             id='item_1158d15105e5',
             name=None,
             content=' Hello from the weather station. Would you like to know '
                     'the weather? If so, tell me your location.',
             tool_calls=None,
             tool_call_id=None,
             tool_exception=None),
 ChatMessage(role='user',
             id='item_bf51c7ec1c80',
             name=None,
             content='New York.',
             tool_calls=None,
             tool_call_id=None,
             tool_exception=None),
 ChatMessage(role='assistant',
             id='item_d41fa35f7251',
             name=None,
             content=' Let me check the weather in New York for you.',
             tool_calls=None,
             tool_call_id=None,
             tool_exception=None),
 ChatMessage(role='assistant',
             id='item_cb041bd44d6c',
             name=None,
             content=' Let me check the weather in New York for you.',
             tool_calls=[FunctionCallInfo(tool_call_id='call_nuu9ElDEKiU3FgShMJCshaly',
      ...
             tool_exception=None),
 ChatMessage(role='tool',
             id='item_6dabd488c4a1',
             name='get_weather',
             content='The weather in New York is Clear +33°F.',
             tool_calls=None,
             tool_call_id='call_nuu9ElDEKiU3FgShMJCshaly',
             tool_exception=None),
...

I have tested that remove the text for ChatMessage.create_tool_calls(tool_calls_info, text=collected_text) won't affect the follow up answers.

I think there is an issue with this solution. Now the text won't be duplicated, but what originally the LLM sent in one call (text + function call) will be moved to two messages. Me, as a user, want the LLM to both send some text and call the function in the same message. If the chat context is modified, the LLM ends just sending the text and waiting for user response to call the function (undesired behavior).
I'm not sure what the fix is as I'm pretty new to this code, but I'd say we should bring the text and the function call into the same message.

`            # Remove any existing message with the same text as collected_text
self._chat_ctx.messages = [
msg for msg in self._chat_ctx.messages if msg.content != collected_text
]
        extra_tools_messages = [
            ChatMessage.create_tool_calls(tool_calls_info, text=collected_text)
        ]
        extra_tools_messages.extend(tool_calls_results)`

I tried this code on my end and it respects better the chat history. Is there a cleaner way of doing it?

I had the same concern that this may teach LLM to not put a message with the function calls, during my testing if I put when performing function calls, let user know that you are checking the weather in prompt, it can always response a message after the change (in this example https://github.com/livekit/agents/blob/main/examples/voice-pipeline-agent/function_calling_weather.py#L90). But this may be different to different prompts.
For the option of only add the first chat ctx if interrupted, now we can say anything inside a function call, so if we only add the message after function call the order is different to what user heard:
actual: message from LLM, something said in fnc, fnc answer
chat_ctx: something said in fnc, message from LLM, fnc answer

@jmugicagonz Could you give me an example of system prompt of this change affects the LLM behavior. I'll test with that and mark this pr as a draft. We may need more discussion on how to fix it or if it's a real issue.

Thanks for your answer Long. I'd say that you don't always want the LLM to tell the user 'i'm checking the weather' as it can feel repetitive for longer conversations and with other functions. Moreover, a longer prompt may make that information to be missed. You could maybe try with this prompt:
"You are a weather assistant created by LiveKit. Your interface with users will be voice. "
"You will provide weather information for a given location. "
"When a user asks for the weather information in a given location, you will say 'thanks for asking! I'll get you the weather information for that location' and then you will inmediately call the function 'get_weather' to retrieve the weather information."
Anyways, I can confirm you that the behavior 'this may teach LLM to not put a message with the function calls' definetly happens, I have extensively tested it on my end.
I'm not sure I understand what you mean with the problem of 'only add the first chat ctx if interrupted'. Now, a message with content and a function call will first append the content to the chat context and then later on the function call, when this finishes. If you just wait the llm to end the function call, and you append both the content and the function call together, how does that change the order? (it's totally possible, I just don't see why)

I'm not sure I understand what you mean with the problem of 'only add the first chat ctx if interrupted'. Now, a message with content and a function call will first append the content to the chat context and then later on the function call, when this finishes. If you just wait the llm to end the function call, and you append both the content and the function call together, how does that change the order? (it's totally possible, I just don't see why)

The problem is that it's possible to use agent.say to say something in a function call. The message from the fnc_call is played first, then the say inside the fnc_call, and last the answer of the fnc_call.
The order user heard is 1. message from LLM, 2. something said in fnc, 3. fnc answer.
If the agent don't append the message from LLM first, or remove it after the function call, the order in the chat ctx will be
1. something said in fnc, 2. message from LLM,  3. fnc answer.

If the content for a chat message with function call is required, I would suggest to keep it as is. also this behavior to have the message saved twice is actually there a long time ago. It should be ok if it works in the past.

I'm not sure I understand what you mean with the problem of 'only add the first chat ctx if interrupted'. Now, a message with content and a function call will first append the content to the chat context and then later on the function call, when this finishes. If you just wait the llm to end the function call, and you append both the content and the function call together, how does that change the order? (it's totally possible, I just don't see why)

The problem is that it's possible to use agent.say to say something in a function call. The message from the fnc_call is played first, then the say inside the fnc_call, and last the answer of the fnc_call.
The order user heard is 1. message from LLM, 2. something said in fnc, 3. fnc answer.
If the agent don't append the message from LLM first, or remove it after the function call, the order in the chat ctx will be 1. something said in fnc, 2. message from LLM, 3. fnc answer.

I get now what you mean, thanks for the explanation @longcw .
In that case, I would create a single message, where the content would be "message from LLM" + "something said in fnc" and the function call. And then another message with the "fnc answer". Is that possible?

I also think that saying something inside a function, even if it helps the user understand what is going on, and smooth the waiting time, will confuse the LLM. The LLM will see in its history messages that weren't in the instructions, changing its behavior. This is difficult to see in short interactions with small basic prompts. Our testing shows it in longer interactions with more complex prompts.

I have added an alternative proposal in this PR

Implemented the proposal in https://github.com/livekit/agents/pull/1262#issuecomment-2554514428:

we add it to the chat ctx before the fnc call, and record the message id
after function finished, if the last item in the chat ctx is still the message recorded in step 1, we replace it with the message containing the content and the function call. If the last item in the chat ctx has changed, i.e. the user called .say in the function call, we remove the content of the function call and add it to the ctx.

cc @jmugicagonz  @davidzhao
The example of two cases:

prompt LLM to say something with fnc

[
...
 ChatMessage(role='assistant',
             id='item_f4a0fc5a4a02',
             name=None,
             content=' Hello from the weather station. Would you like to know the weather? If so, tell me your location.',
             tool_calls=None,
             tool_call_id=None,
             tool_exception=None),
 ChatMessage(role='user',
             id='item_c4102c5a3861',
             name=None,
             content='New York.',
             tool_calls=None,
             tool_call_id=None,
             tool_exception=None),
 ChatMessage(role='assistant',
             id='item_9b39bcb41ff5',
             name=None,
             content=' Let me check the weather for New York. Please hold on for a moment.',
             tool_calls=[FunctionCallInfo(tool_call_id='call_KCAuyRssGQpRMFFuc2seyEXL',
...
                                          arguments={'location': 'New York'})],
             tool_call_id=None,
             tool_exception=None),
 ChatMessage(role='tool',
             id='item_10aae8cc82af',
             name='get_weather',
             content='The weather in New York is Sunny +39°F.',
             tool_calls=None,
             tool_call_id='call_KCAuyRssGQpRMFFuc2seyEXL',
             tool_exception=None),
 ChatMessage(role='assistant',
             id='item_0b0604788ec6',
             name=None,
             content=' The weather in New York is currently sunny with a '
                     'temperature of 39°F.',
             tool_calls=None,
             tool_call_id=None,
             tool_exception=None)]

prompt LLM to not say anything but call .say inside the function call

[
...
 ChatMessage(role='user',
             id='item_68e0bce3f5bb',
             name=None,
             content='New York.',
             tool_calls=None,
             tool_call_id=None,
             tool_exception=None),
 ChatMessage(role='assistant',
             id='item_4c3f981dd320',
             name=None,
             content=' The current weather in New York is',  # from `say`
             tool_calls=None,
             tool_call_id=None,
             tool_exception=None),
 ChatMessage(role='assistant',
             id='item_006f08b148d7',
             name=None,
             content='',
             tool_calls=[FunctionCallInfo(tool_call_id='call_Rs5RsUZnfTBb5OVSYdoDzv7o',
 ...
             tool_call_id=None,
             tool_exception=None),
 ChatMessage(role='tool',
             id='item_875357725db7',
             name='get_weather',
             content='The weather in New York is Sunny +39°F.',
             tool_calls=None,
             tool_call_id='call_Rs5RsUZnfTBb5OVSYdoDzv7o',
             tool_exception=None),
 ChatMessage(role='assistant',
             id='item_41910771d609',
             name=None,
             content=' Sunny with a temperature of 39°F.',
             tool_calls=None,
             tool_call_id=None,
             tool_exception=None)]

Indeed, I also noticed that if we do both: prompt the LLM to return a message with the function call, and call say inside the function without adding the LLM message to the function call ctx, the LLM tends to just return the message without the function call and call the function in the next response. But this issue can be fixed by simply adding an explicit requirement for calling the function like Call the function to get the weather.
The prompt I used for testing
            "You are a weather assistant created by LiveKit. Your interface with users will be voice. "
            "You will provide weather information for a given location. "
            # when using option 1, you can suppress from the agent with prompt
            # "do not say anything while waiting for the function call to complete."
            # uncomment this to use option 2
            "when performing function calls, let user know that you are checking the weather."
            "Call the function to get the weather."

The behaviors of LLM can vary depends on the prompt and length of the context. Users can choose different options based on needs


possible incompatibility with Kotlin coroutines 1.7.0

Using .flowWhenStarted() now throws this error:

java.lang.IllegalStateException: Flow invariant is violated:
  Emission from another coroutine is detected.
  Child of StandaloneCoroutine{Active}@ab35420, expected child of ScopeCoroutine{Active}@2bcc1d9.
  FlowCollector is not thread-safe and concurrent emissions are prohibited.
  To mitigate this restriction please use 'channelFlow' builder instead of 'flow'
 at kotlinx.coroutines.flow.internal.SafeCollector_commonKt$checkContext$result$1.invoke(SafeCollector.common.kt:68)
 at kotlinx.coroutines.flow.internal.SafeCollector_commonKt$checkContext$result$1.invoke(SafeCollector.common.kt:25)
 at kotlin.coroutines.CoroutineContext$Element$DefaultImpls.fold(CoroutineContext.kt:70)
 at kotlinx.coroutines.Job$DefaultImpls.fold(Job.kt:112)
 at kotlinx.coroutines.JobSupport.fold(JobSupport.kt:25)
 at kotlin.coroutines.CombinedContext.fold(CoroutineContextImpl.kt:131)
 at kotlinx.coroutines.flow.internal.SafeCollector_commonKt.checkContext(SafeCollector.common.kt:25)
 at kotlinx.coroutines.flow.internal.SafeCollector.checkContext(SafeCollector.kt:106)
 at kotlinx.coroutines.flow.internal.SafeCollector.emit(SafeCollector.kt:83)
 at kotlinx.coroutines.flow.internal.SafeCollector.emit(SafeCollector.kt:66)
 at com.airbnb.mvrx.MavericksLifecycleAwareFlowKt$flowWhenStarted$1$1$transform$1.invokeSuspend(MavericksLifecycleAwareFlow.kt:36)

This is Mavericks version 3.0.1

Also tried latest 3.0.2 and it has the same issue

Thanks for reporting. We don't currently plant to update coroutines support in the near future, but if someone wants to contribute a PR that'd be great

Thanks a ton for this fix 🚀


MS Teams Bad request issue

Describe the bug
Although I set MS Teams channel webhook address in config.yaml file, I didn't get any notifications.
Expected behavior
Should get kwatch notification to my MS Teams channel.
Actual behavior
When I checked the pod logs, it gives the following error:
time="2022-02-23T13:23:01Z" level=error msg="failed to send msg with Microsoft Teams: call to teams alert returned status code 400: Bad payload received by generic incoming webhook."
Version/Commit
0.4.0

Thank you so much @akoken , my webhook is now working properly :-)

I'm glad that it worked for you @ibannieto :)

I think corporate proxy causes this issue. I rebuilt the docker image by setting proxy and it worked. Guess what? Now Kubernetes API requests are failing with TLS handshake error. Notification-only proxy configuration would most likely work.

Hi, @akoken
I'm facing the same issue. kwatch don't work with proxy
TLS handshake error with enterprise proxy or i/o timeout when I removed it


Need official images from Debian

@siretart PTAL

@siretart is there an official location for debian images or do we just grab them from Docker.io?
Same question on Ubuntu images?

[sorry for the late answer]
To the best of my knowledge, these repositories are as official as it gets:

https://hub.docker.com/_/debian
https://hub.docker.com/_/ubuntu

Both are maintained by Debian (Ubuntu) Developers.

@siretart Mind opening a PR to add them.  That way I can blame you :^)

I notice in the current shortnames.conf file that distributions such as suse and rhel list quite a number of variants.
Debian has actually quite a number of tags: https://hub.docker.com/_/debian
Is it possible to specify a prefix or a pattern so that podman pull debian/bullseye-slim would fetch the right image? Or would you prefer to spell out the dozens of variants?

@siretart tags and digests are not allowed as short-name aliases.
I think Debian could be covered as "debian" = "docker.io/library/debian". Tags and digests will be appended to the alias so if we do a podman pull debian:foo we'd be pulling docker.io/library/debian:foo.

RHEL and SUSE have different images rhel7, rhel6 rhel8 as opposed to tags in Centos
centos:6, centos:7, centos:8.  We believe that the user should specify tags if they don't want :latest, and that shortnames should not include the tag.

We now have a debian image.


Need Old folding cell Pod Version code

I Need the previous version of Folding cell pod version the new pod version had issues of the functions that commented as migrating to 4.2

You can look commits: https://github.com/Ramotion/folding-cell/commits/master
last tag swift 4.2 is 4.0.3


Add changelog for fix to issue 431

Signed-off-by: Gary Smith<EMAIL_ADDRESS>

Sorry I omitted this from the original PR


Add 'console_script' executables for basic document/AST output

Especially for quick demonstration purposes, without having to hook in to the whole sphinx infastructure. For example myst-to-ast path/to/doc.md would convert:
# header

Some **bold** text

to
<document>
    <section>
        header
    <paragraph>
        Some
        <emphasis>
            bold
        text

This would basically just be:
from myst_parser.docutils_renderer import DocutilsRenderer
from myst_parser.block_tokens import Document

renderer = DocutilsRenderer()

ast = renderer.render(Document("# Hi"))

print(ast.pformat())

right?
Another thought - it would be really cool if we leveraged some interactivity to make it easier to wrap your head around XML. I realized that with a little lightweight library, you can convert XML to an OrderedDict. This lets you use the IPython JSON display library like so:
from IPython.display import JSON
import xmltodict

xmld = xmltodict.parse(xml)
JSON(xmld)

And you can do stuff like:

I wonder if that could be a little helper utility in Myst to wrap the above process.
Now I just need to figure out how to get the docutils AST to output actual XML instead of pseudo XML that pformat makes :-P  @chrisjsewell any idea on that?

output actual XML

documetnt.asdom()?

I did a hacky take at this in #37

This is now available as myst-docutils-psuedoxml


Asset Type card is missing descriptions

They are under the subtype/asset type drop down though

Also affects subtypes
https://community.esri.com/t5/arcgis-utility-network-questions/descriptions-in-utility-network-data-dictionary/m-p/1310516#M2616

@previnWong we keep hearing this, could we get this updated soon?

Fixed


divshot.io becomes firebase.io (service shutdown)

We need to migrate the project (in progress right now)

Preliminary manual deploy did work: https://readium.firebaseapp.com
TravisCI in progress: https://travis-ci.org/readium/readium-js-viewer/builds/96288641
...

Ah, Firebase deploy hangs (seems to be a common CLI problem):
https://travis-ci.org/readium/readium-js-viewer/jobs/96288643#L3724


Non-sticky Var Explorer

Description
What steps will reproduce the problem?

Running code.
Before I updated to Spyder 5.4.3 I had a stick Var Explorer, but now, it flushes all Vars when the code is done running. I would like my Sticky Var Explorer back please. :)

As shown the Var Explorer is loaded when the program is running (in debug mode here)

And when the code terminates, it flushes the Var Explorer and its no longer possible to see the Var values..

On Mon, Apr 24, 2023 at 5:05 PM Carlos Cordoba @.***>
wrote:

Hey @MPaaske https://github.com/MPaaske, thanks for reporting. I don't
understand what you mean by this. Could you post a screenshot of the
behavior you're observing in Spyder? Thanks!
—
Reply to this email directly, view it on GitHub
https://github.com/spyder-ide/spyder/issues/20865#issuecomment-1520353768,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AHFFN5ANT5L5O3GAZTJVP3DXC2JDJANCNFSM6AAAAAAXJPDGYE
.
You are receiving this because you were mentioned.Message ID:
@.***>

@MPaaske, unfortunately it's not possible to attach files to your Github replies via email. Instead, you need to drag and drop your images here.

What I'm looking for, is for the Var values "stick" with the final values of the Vars (like in the image above), even when the code is done running, at this moment, it flushes the Var Explorer and there's no data left. At this moment I only get to examen the Var Values in the Explorer when the code is actively running.

So, what you're saying is that the Variable explorer is not updated after you run a file? Instead, that happens only when you're debugging it?

Yes.

Ok, I'd suggest to go to the menu
Tools > Reset Spyder to factory defaults

and try again. That could solve your problem.

Closing due to lack of response.


[Investigation]  RLP can target a Gateway resource

Use case
As an administrator of a gateway, I want to be able to apply a RateLimitPolicy to the gateway. I would expect that my policy is applied to each virtual host and any matching routes  on that gateway

For us to target a Gateway, we may need to allow the specifying of a host to apply the policy to. If we allow a host, the kuadrant controller should ensure it matches the gateway addresses field or the HTTPRoute/TLSRoute host name

RateLimitPolicy Policy Attachement Design Notes
Introduction
On designing kuadrant rate limiting and considering Istio/Envoy's rate limiting offering, we hit two limitations (described here). Therefore, not giving up entirely in existing Envoy's RateLimit Filter, we decided to move on and leverage the Envoy's Wasm Network Filter and implement rate limiting wasm-shim module compliant with the Envoy's Rate Limit Service (RLS). This wasm-shim module accepts a PluginConfig struct object as input configuration object.
The current RateLimitPolicy CRD already implements a targetRef with a reference to Gateway API's HTTPRoute. We are considering allowing the targetRef to reference a Gateway API's Gateway. Having in place this HTTPRoute - Gateway hierarchy, we are also considering to apply Policy Attachment's defaults/overrides approach to the RateLimitPolicy CRD.

Goals
The goal of this document is to define:

The schema of this PluginConfig struct.
The schema (CRD) of the RateLimitPolicy
The kuadrant-controller behavior filling the PluginConfig struct having as input the RateLimitPolicy k8s objects
The behavior of the wasm-shim having the PluginConfig struct as input.

Envoy's Rate Limit Service Potocol
Kuadrant's rate limit relies on the Rate Limit Service (RLS) protocol, hence the gateway generates, based on a set of actions, a set of descriptors (one descriptor is a set of descriptor entries). Those descriptors are send to the external rate limit service provider. When multiple descriptors are provided, the external service provider will limit on ALL of them and return an OVER_LIMIT response if any of them are over limit.
Schema (CRD) of the RateLimitPolicy
High level overview of the proposed rate limiting policy
// RateLimitPolicy provides a way to apply rate limiting policy configuration
type RateLimitPolicy struct {
    metav1.TypeMeta   `json:",inline"`
    metav1.ObjectMeta `json:"metadata,omitempty"`

    // Spec defines the desired state of RateLimitPolicy.
    Spec RateLimitPolicySpec `json:"spec"`

    // Status defines the current state of RateLimitPolicy.
    Status RateLimitPolicyStatus `json:"status,omitempty"`
}

// RateLimitPolicySpec defines the desired state of RateLimitPolicy.
type RateLimitPolicySpec struct {
    // TargetRef identifies an API object to apply policy to.
    TargetRef gatewayv1a2.PolicyTargetReference `json:"targetRef"`

    // Override defines policy configuration that should override policy
    // configuration attached below the targeted resource in the hierarchy.
    // +optional
    Override *RateLimitPolicyConfig `json:"override,omitempty"`

    // Default defines default policy configuration for the targeted resource.
    // +optional
    Default *RateLimitPolicyConfig `json:"default,omitempty"`
}

// RateLimitPolicyConfig contains rate limiting policy configuration.
type RateLimitPolicyConfig struct {
    // GatewayConfigurations is a list of rate limit configuration options to be applied at the envoy gateway
    // +optional
    GatewayConfigurations []*GatewayConfigurationSpec `json:"gatewayActions,omitempty"`

    // RateLimits is a list of configuration objects oriented to
    // the external rate limiting service
    // +optional
    RateLimits []*RateLimitSpec `json:"rateLimits,omitempty"`
}

// RateLimitSpec contains rate limiting limits
type RateLimitSpec struct {
    // Conditions is the list of conditions to match to apply the specified limit
    Conditions []string `json:"conditions"`
    // Variables is the list of independent counters defined for the specified limit
    Variable []string `json:"variables"`
    // MaxValue defines the maximum number of requests for the defined period of time
    MaxValue int `json:"max_value"`
    // Seconds defines the period of time for the rate limit
    Seconds int `json:"seconds"`
}

// GatewayConfigurationSpec contains rate limiting configuration at the envoy gateway
type GatewayConfigurationSpec struct {
    // Rules is a list of rules to match the request. A match occurs
    // when at least one rule matches the request.
    // If not set, it is equivalent to matching all the requests.
    // +optional
    Rules []*RateLimitRule `json:"rules,omitempty"`

    // Configurations is alist of Envoy rate limit configurations
    // +optional
    Configurations []*RateLimitConfiguration `json:"configurations,omitempty"`
}

// RateLimitConfiguration defines Envoy rate limit configuration
type RateLimitConfiguration struct {
    // +optional
    Actions []*RateLimitAction `json:"actions,omitempty"`
}

// RateLimitRule defines rules to match requests
type RateLimitRule struct {
    // +optional
    Paths   []string `json:"paths,omitempty"`
    // +optional
    Methods []string `json:"methods,omitempty"`
    // +optional
    Hosts []string `json:"hosts,omitempty"`
}

// RateLimitAction one Envoy rate limit action
// https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/route/v3/route_components.proto#envoy-v3-api-msg-config-route-v3-ratelimit-action
// Precisely one of the available action types must be defined
type RateLimitAction struct {
    // +optional
    GenericKey *GenericKeySpec `json:"generic_key,omitempty"`
    // +optional
    Metadata *MetadataSpec `json:"metadata,omitempty"`
    // +optional
    RemoteAddress *RemoteAddressSpec `json:"remote_address,omitempty"`
    // +optional
    RequestHeaders *RequestHeadersSpec `json:"request_headers,omitempty"`
}

// RateLimitPolicyStatus defines the observed state of RateLimitPolicy.
type RateLimitPolicyStatus struct {
    // Conditions describe the current conditions of the RateLimitPolicy.
    //
    // +optional
    // +listType=map
    // +listMapKey=type
    // +kubebuilder:validation:MaxItems=8
    Conditions []metav1.Condition `json:"conditions,omitempty"`
}

RateLimitPolicy instance targeting an HTTPRoute resource adding rate limiting on few paths
---
apiVersion: apim.kuadrant.io/v1alpha1
kind: RateLimitPolicy
metadata:
  name: myroute
spec:
  targetRef:
    group: gateway.networking.k8s.io
    kind: HTTPRoute
    name: myroute
  default:
    gatewayActions:
    - rules:
      - paths: ["/admin"]
        methods: ["GET"]
      - paths: ["/newuser"]
        methods: ["POST"]
      configurations:
      - actions:
        - generic_key:
            descriptor_key: my-key
            descriptor_value: my-value
    rateLimits:
    - conditions: ["my-key == my-value"]
      max_value: 100
      seconds: 60
      variables: []

RateLimitPolicy instance targeting a Gateway resource
---
apiVersion: apim.kuadrant.io/v1alpha1
kind: RateLimitPolicy
metadata:
  name: mygateway
spec:
  targetRef:
    group: gateway.networking.k8s.io
    kind: Gateway
    name: mygateway
  default:
    gatewayActions:
    - configurations:
      - actions:
        - generic_key:
            descriptor_key: my-gw-key
            descriptor_value: my-gw-value
    rateLimits:
    - conditions: ["my-gw-key == my-gw-value"]
      max_value: 100
      seconds: 60
      variables: []

Note: there is no PREAUTH, POSTAUTH stage defined. Ratelimiting filter should be placed after authorization filter to enable authenticated rate limiting.
Kuadrant-controller's behavior
RLP targeting a Gateway
Initially, only one RLP having reference to a given gateway is considered.
The rate limit configuration precendece is defined as follows:
Gateway override > HTTPRoute override > HTTPRoute default > Gateway default

We define one rate limit configuration A has precedence over another rate limit configuration B as follows:

gatewayActions

Regarding rate limit actions evaluated at the gateway, rather than overriding, aggregation seems to be the right approach. Mainly because adding more entries seems to not affect existing rate limit configuration. Adding more descriptor entries never shadows or disables rate limit counters. Yet, more rate limit counters can be activated and effectively make rate limiting more restrictive (never more open). One example to illustrate:
Let's say we have 2 rate limit configurations (one counter per config):
admin counter
conditions: ["admin-request" == yes]
variables: []
max_value: 1
seconds: 60

devel counter
conditions: ["developer-request" == yes]
variables: []
max_value: 2
seconds: 60

The external provider receives one descriptor with one entry:
descriptors:
  - entries:
    - developer-request: "yes"

Then, only devel counter would be activated and increased. If gateway level actions are added, one descriptor entry would be added:
descriptors:
  - entries:
    - developer-request: "yes"
    - admin-request: "yes"

Then, both devel and admin counters are activated and increased. If any of the activated counter's limit is exceeded, the request would be rate limited with 429 Too Many Requests.

rateLimits

Regarding the list of rate limit objects, the controller will apply a patching strategy having as key the variables and conditions fields. In short, when both variables and conditions fields are identical, the limit with higher precedence will apply. One example to illustrate. Let's say rate limit configuration A has precedence over configuration B.
A defines
rateLimits:
- conditions: ["keyA == valueA"]
  max_value: 1
  seconds: 60
  variables: []

B defines
rateLimits:
- conditions: ["keyA == valueA"]
  max_value: 100
  seconds: 60
  variables: []
- conditions: ["otherkey == othervalue"]
  max_value: 100
  seconds: 60
  variables: []

The resulting merge will be
rateLimits:
# taken from A
- conditions: ["keyA == valueA"]
  max_value: 1
  seconds: 60
  variables: []
# taken from B
- conditions: ["otherkey == othervalue"]
  max_value: 100
  seconds: 60
  variables: []

"VirtualHosting" RateLimitPolicies
When a request hits the gateway, only one HTTPRoute is used to route the request. Then, only the rate limiting policy targeting that HTTPRoute will be activated. Optionally, if it exists, the rate limiting policy targeting that gateway will also be activated.
When a RLP targets an accepted HTTPRoute, the intersection of the HTTPRoute hostnames and Gateway's Listener's Hostname provides the domain(s) for which the rate limiting policy should be applied. Note that the domain could be * and the policy should apply to all hostnames hitting the gateway.
The controller will build a index of policies indexed by the virtualhost domain. The policies will be computed merging HTTPRoute and Gateway level policies according to the precedence rules.
Schema of the PluginConfig struct
Currently the PluginConfig looks like this:
#  The filter’s behaviour in case the rate limiting service does not respond back. When it is set to true, Envoy will not allow traffic in case of communication failure between rate limiting service and the proxy.
failure_mode_deny: true
ratelimitpolicies:
  default/toystore: # rate limit policy {NAMESPACE/NAME}
    hosts: # HTTPRoute hostnames
      - '*.toystore.com'
    rules: # route level actions
      - operations:
          - paths:
              - /admin/toy
            methods:
              - POST
              - DELETE
        actions:
          - generic_key:
              descriptor_value: yes
              descriptor_key: admin
    global_actions: # virtualHost level actions
      - generic_key:
          descriptor_value: yes
          descriptor_key: vhaction
    upstream_cluster: rate-limit-cluster # Limitador address reference
    domain: toystore-app # RLS protocol domain value

Proposed new design:
// PluginConfig defines the object to be passed as input into the WASM plugin
type PluginConfig struct {
    // +optional
    RateLimitPolicies []*RateLimitPolicySpec `json:"rateLimitPolicies,omitempty"`

    // FailureModeDeny defined the filter’s behaviour in case the rate limiting service does not respond back. When it is set to true, Envoy will not allow traffic in case of communication failure between rate limiting service and the proxy. By default it will be `false`
    // +optional
    FailureModeDeny *bool `json:"failureModeDeny,omitempty"`
}

type RateLimitPolicySpec struct {
    // RateLimitDomain is the Envoy's RLS protocol domain value
    RateLimitDomain string `json:"rateLimitDomain,omitempty"`
    // Hostnames list of domain names that will be matched to this rate limit policy
    Hostnames []string `json:"hostnames"`
    // UpstreamCluster is the Envoy's cluster name to be used as external rate limit service
    UpstreamCluster string `json:"upstreamCluster"`

    // +optional
    Name *string `json:"name,omitempty"`
    // +optional
    GatewayConfigurations []*GatewayConfigurationSpec `json:"gatewayActions,omitempty"`
}

// GatewayConfigurationSpec contains rate limiting configuration at the envoy gateway
type GatewayConfigurationSpec struct {
    // Rules is a list of rules to match the request. A match occurs
    // when at least one rule matches the request.
    // If not set, it is equivalent to matching all the requests.
    // +optional
    Rules []*RateLimitRule `json:"rules,omitempty"`

    // Configurations is alist of Envoy rate limit configurations
    // +optional
    Configurations []*RateLimitConfiguration `json:"configurations,omitempty"`
}

// RateLimitConfiguration defines Envoy rate limit configuration
type RateLimitConfiguration struct {
    // +optional
    Actions []*RateLimitAction `json:"actions,omitempty"`
}

// RateLimitRule defines rules to match requests
type RateLimitRule struct {
    // +optional
    Paths   []string `json:"paths,omitempty"`
    // +optional
    Methods []string `json:"methods,omitempty"`
    // +optional
    Hosts []string `json:"hosts,omitempty"`
}

// RateLimitAction one Envoy rate limit action
// https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/route/v3/route_components.proto#envoy-v3-api-msg-config-route-v3-ratelimit-action
// Precisely one of the available action types must be defined
type RateLimitAction struct {
    // +optional
    GenericKey *GenericKeySpec `json:"generic_key,omitempty"`
    // +optional
    Metadata *MetadataSpec `json:"metadata,omitempty"`
    // +optional
    RemoteAddress *RemoteAddressSpec `json:"remote_address,omitempty"`
    // +optional
    RequestHeaders *RequestHeadersSpec `json:"request_headers,omitempty"`
}

An example
#  The filter’s behaviour in case the rate limiting service does not respond back. When it is set to true, Envoy will not allow traffic in case of communication failure between rate limiting service and the proxy.
failureModeDeny: true
rateLimitPolicies:
- name: some_name # rate limit policy {NAMESPACE/NAME}
  rateLimitDomain: some_value # RLS protocol domain value
  upstreamCluster: rate-limit-cluster # Limitador address reference
  hostnames: # hostnames
    - '*.toystore.com'
  gatewayActions: # rate limit configuration list
  - rules:
    - paths: ["/admin/toy"]
      methods: ["POST", "DELETE"]
    configurations:
    - actions:
      - generic_key:
          descriptor_value: yes
          descriptor_key: admin

WASM-SHIM
Each rate limit policy host has a logical name as well as a set of hostnames to be applied it based on the incoming request’s host header.
The WASM-SHIM builds a tree based data structure holding the rate limit policies. The longest hostname match is used to select the policy to be applied. Only one policy is being applied per invocation.
The policy contains rules and configuration to build a list of Envoy's RLS descriptors.
A given configuration will be applied, and therefore the actions activated, when rule match occurs. A rule match occurs when at least one rule matches the request. If not set, it is equivalent to matching all the requests.
If an action cannot append a descriptor entry, no descriptor is generated for the configuration.
The external rate limit service will be called when there is at least one descriptor being generated by the list of configurations.
Source: https://hackmd.io/IKEYD6NrSzuGQG1nVhwbcw

Opened PR for doc proposal regarding this issue: https://github.com/Kuadrant/kuadrant-controller/pull/164


Wiki/Docs: "nextgenas.flexjssdk" replaced by "nextgenas.sdk.editor"

Hi Josh,
seems to me that the docs are not up-to-date.
Keep up the great work!
Thanks,
Olaf

Thanks!


[Bug]: Game crash when Shift-Crafting.

What happened?
A bug happened!
WHY RELEASE A NEW VERSION WHEN ITS NOT TESTET PROPERLLY AND CRASHES THE GAME ALL THE TIME????!!
Modloader
Fabric (Default)
Minecraft Version
1.20.2
Mod Version
rc2
Relevant log output
.

try again.


Formatted Text not showing

I noticed one thing worth improving in the SendApp.
When adding an unordered list, the text below is always displayed just below the list. I tried adding some blank lines between the list and the last sentence of the message, but unfortunately it didn’t work.
So, trying to find a solution, I discovered that there was an option to add a line between, it was displayed in the preview option of the editor:

Hi @JasGo00 ,
Thank you for the patience.

Here is the link for text formats supported in CC application.


Test valid_commits workflow

The valid_commits workflow seems to be working well, so we can close this PR.
Run ./scripts/ci/valid_commits.sh
refactor(global): Add file. ... OK
success: all commits seem well formatted.


Document SAR approver

cc @liggitt

@mikedanese Please feel free to re-open this issue if it represents work in progress


Issue with editting fields in wwwint environment

There is no problem creating and editing text fields in wwwint environment. The pattern field seems to be giving an error without anything reporting in the console. Need to investigate further why it is giving a regex error Value should be a valid regular expression..

Seems to be a problem with actual regex being used. Once this is fixed, it can be saved without an issue.
@amnonkhen could you please report here if you find more issues.

The validation error should not be reported to console. It is the normal functioning of the checklist editor. If you are getting an error for the regex of your field, it means the regex you are using is invalid. Please post here the regex you used, so it can be investigated further. Checking the collection field in my local environment I do not see this validation problem.

Also, please name tickets in a way that describes the issue, like "cannot save pattern fields due to validation error"

This is the issue you reported. Only after investingation figured this is a problem with the regex.


Stuck on npm install

Describe the bug
I was able to build a first project without specifying a stack. Bolt chose Vite. It was pretty OK.
For all subsequent projects, I had problems installing the modules right from the start. Either an ultra-slow “npm install”. Or a blocked “npm install”. And if, by chance, he finally manages to install the modules (apparently): error when launching the project.
Link to the Bolt URL that caused the error
https://bolt.new/~/github-gntkki
Steps to reproduce

Start a project (with your nextjs template, with a prompt to build a nextjs app or with an imported GitHub repo)
Be stuck on npm install (idealTree:project: sill idealTree buildDeps)

Expected behavior
To install the modules properly and at a normal speed.
Screen Recording / Screenshot
No response
Platform
Browser name = Safari
Full version = 18.0
Major version = 18
navigator.appName = Netscape
navigator.userAgent = Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.0 Safari/605.1.15
performance.memory = undefined
Username = waam
Chat ID = 6f323332cb67

Additional context
No response

I simply stopped using Safari for Bolt.
Everything is OK on Chrome.


Failed to unbind radar address

https://github.com/AeroSenseSw/AeroSenseAssure/blob/48b6de882c4f221aae86c9ec9de3aff9780073ed/src/main/java/com/aerosense/radar/tcp/connection/DisconnectServerEventProcessor.java#L28
Wrong parameter usage when invoking
RadarAddressHashMap:
public void unbindAddress(String radarId, String address)

bug fixed, thank you!


Twitter

Obtain Twitter dataset (http://konect.uni-koblenz.de/networks/), convert to one of the supported graph formats (edge- or vertex-based) if necessary, write configuration file.

@Erackron, do you have an ETA for this?

I was looking at extracting the necessary data for this graph this weekend, but I was unable to transfer the Twitter graph from the AtLarge server to DAS4 (firewall issues that I am hoping Otto can solve).
We can add a configuration file that is not "optimal"; we can select a random vertex id to start the BFS from with the risk that the BFS will reach a very small fraction of the graph. For the EVO properties we can set the maximum vertex id to some very large value.

Downloading to /var/scratch/mcapota. ETA 45 min.

Closed by PR #60.


fix(userspace/libsinsp): always import users and groups from scap to retain backward compatibility with existent scap files for host users/groups

What type of PR is this?

Uncomment one (or more) /kind <> lines:

/kind bug

/kind cleanup

/kind design

/kind documentation

/kind failing-test

/kind feature

Any specific area of the project related to this PR?

Uncomment one (or more) /area <> lines:

/area build

/area driver-kmod

/area driver-ebpf

/area libscap

/area libsinsp

/area tests

/area proposals

What this PR does / why we need it:
Which issue(s) this PR fixes:

Fixes #
Special notes for your reviewer:
Does this PR introduce a user-facing change?:

NONE

@Andreagit97 Hi! Can you review this one? :)
I introduced a few issues unfortunately...

LGTM label has been added.  Git tree hash: e5570fff3af22a1dd05520fa31dbd93550c33ad1

[APPROVALNOTIFIER] This PR is APPROVED
This pull-request has been approved by: FedeDP, leogr
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS [FedeDP,leogr]

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment


Update MISRA link in SAFETY.md

Link is now a 404.
Was only a blog post anyway:
https://web.archive.org/web/20201028092101/https://www.misra.org.uk/MISRAHome/MISRAC2012/tabid/196/Default.aspx

Might as well just link https://www.misra.org.uk/misra-c/ instead of the old deleted page.  Or the wikipedia article.


Investigate rate limit issues in repo build

We now had multiple times issues when building the repo with messages like those:
+ gh release download --dir download --repo gardenlinux/package-krb5 1.21.3-3g10
HTTP 403: You have exceeded a secondary rate limit. Please wait a few minutes before you try again.

The repo build should be more resilient.

@fwilhe Are these authenticated requests?
If not, this usually helps:
env:
  # needed to use github cli
  GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Yes, but lots of them. Might be that we're even doing too many requests for being authenticated.


More triangles/vertices per meshlet

Builder changes

Increased meshlet max vertices/triangles from 64v/64t to 255v/128t (meshoptimizer won't allow 256v sadly). This gives us a much greater percentage of meshlets with max triangle count (128). Still not perfect, we still end up with some tiny <=10 triangle meshlets that never really get simplified, but it's progress.
Removed the error target limit. Now we allow meshoptimizer to simplify as much as possible. No reason to cap this out, as the cluster culling code will choose a good LOD level anyways. Again leads to higher quality LOD trees.
After some discussion and consulting the Nanite slides again, changed meshlet group error from adding the max child's error to the group error, to doing group_error = max(group_error, max_child_error). Error is already cumulative between LODs as the edges we're collapsing during simplification get longer each time.
Bumped the 65% simplification threshold to allow up to 95% of the original geometry (e.g. accept simplification as valid even if we only simplified 5% of the triangles). This gives us closer to log2(initial_meshlet_count) LOD levels, and fewer meshlet roots in the DAG.

Still more work to be done in the future here. Maybe trying METIS for meshlet building instead of meshoptimizer.
Using ~8 clusters per group instead of ~4 might also make a big difference. The Nanite slides say that they have 8-32 meshlets per group, suggesting some kind of heuristic. Unfortunately meshopt's compute_cluster_bounds won't work with large groups atm (https://github.com/zeux/meshoptimizer/discussions/750#discussioncomment-10562641) so hard to test.
Based on discussion from https://github.com/bevyengine/bevy/discussions/14998, https://github.com/zeux/meshoptimizer/discussions/750, and discord.
Runtime changes

cluster:triangle packed IDs are now stored 25:7 instead of 26:6 bits, as max triangles per cluster are now 128 instead of 64
Hardware raster now spawns 128 * 3 vertices instead of 64 * 3 vertices to account for the new max triangles limit

Hardware raster now outputs NaN triangles (0 / 0) instead of zero-positioned triangles for extra vertex invocations over the cluster triangle count. Shouldn't really be a difference idt, but I did it anyways.

Software raster now does 128 threads per workgroup instead of 64 threads. Each thread now loads, projects, and caches a vertex (vertices 0-127), and then if needed does so again (vertices 128-254). Each thread then rasterizes one of 128 triangles.
Fixed a bug with needs_dispatch_remap. I had the condition backwards in my last PR, I probably committed it by accident after testing the non-default code path on my GPU.

@zeux @scthe not asking for your review, but tagging you as you may be interested in this PR.

255v/256t

nit: 255v/128t (the code is correct, the PR description is not)

Thanks for catching that, updated the PR description.

I've noticed You have a following line:
if simplified_group_indices.len() as f32 / group_indices.len() as f32 > 0.65 {

Is the 65% a heuristic? You could also try 75%. If you had 4 meshlets, reduction by 25% ends up with 3 meshlets. In the next iteration METIS might "redistribute" these meshlets. In my experience this is a mixed bag.
This change should reduce number of roots at a cost of less uniform meshlet size and a bigger overall DAG.
It's also interesting to see what happens if you remove this code path (or just comment out return None). At some point it's an infinite loop where each iteration has same meshlet count as before. Striving for (at minimum) 25% reduction prevents this scenario. There are some subtleties here to relax this number, but it's probably a problem with simplification if you cannot remove even 25% of tris. When does this happen?

if simplified_group_indices.len() as f32 / group_indices.len() as f32 > 0.65 {

I ran the mesh converter on the "Huge Icelandic Lava Cliff" mesh from quixel megascans, with various percentages. Here's the data: https://pastebin.com/raw/pvQPfbZG. It's structured as key:value pairs where the key is a triangle count [0, 128], and the value is the number of meshlets in the current LOD level that have that many triangles.
I'm not sure what you would say is "best". 50% has less variance, but also less LOD levels compared to higher percentages. I think ideally we want log2(lod_0_meshlet_count) levels, so ~14 total here? So maybe higher percentage is better? Perhaps 99%, or basically as long as we simplified something (maybe one meshlet's worth?).

Btw, here's the git patch (on top of the previous commit) that I use for testing https://pastebin.com/raw/mFKrCtYr.
Run it with cargo run --example meshlet --features meshlet,meshlet_processor --release. It'll print the triangle count statistics and save the newly created meshlet mesh, and then exit. If you want to visualize the meshlet mesh, discard the changes to meshlet.rs and then rerun the same command.

I think I want to ship these improvements for now, and I'll continue to experiment on my own, and open another PR if I end up finding further improvements.


Issues with "off" sensors and invalid numeric values

Describe the bug
Multiple instances of this message in the logs:
ValueError: Sensor sensor.frigorifero_fridge_temp has device class 'temperature', state class 'measurement' unit '°C' and suggested precision 'None' thus indicating it has a numeric value; however, it has the non-numeric value: '-' (<enum 'StateOptions'>)

Expected behavior
Either not ending up in such an inconsistent state or adding some defensive logic to support and discard these values.
Screenshots

Environment details:

Environment (HASSIO, Raspbian, etc): hassio
Home Assistant version installed: 2023.8.4
Component version installed: 0.33.21
Last know working version:
LG device type and model with issue: 1REB1GLPX1___
LG devices connected (list):

2023-08-27 10:15:09.311 INFO (MainThread) [custom_components.smartthinq_sensors] Initializing ThinQ platform with region: IT - language: it-IT
2023-08-27 10:15:16.311 INFO (MainThread) [custom_components.smartthinq_sensors] LGE Device added. Name: Frigorifero - Type: REFRIGERATOR - Model: 1REB1GLPX1___ - ID: e256c140-...
2023-08-27 10:15:19.069 INFO (MainThread) [custom_components.smartthinq_sensors] LGE Device added. Name: Asciugatrice - Type: DRYER - Model: RC90U2_WW - ID: 2ca6ccd0-7c25-1...
2023-08-27 10:15:22.610 INFO (MainThread) [custom_components.smartthinq_sensors] LGE Device added. Name: Lavatrice - Type: WASHER - Model: WTWN3 - ID: d9bf16c0-...
2023-08-27 10:15:22.610 INFO (MainThread) [custom_components.smartthinq_sensors] Founds 3 LGE device(s)

Output of HA logs
2023-08-27 10:15:03.038 ERROR (MainThread) [homeassistant] Error doing job: Task exception was never retrieved
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/components/sensor/__init__.py", line 591, in state
    numerical_value = int(value)
                      ^^^^^^^^^^
ValueError: invalid literal for int() with base 10: <StateOptions.NONE: '-'>

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 229, in _handle_refresh_interval
    await self._async_refresh(log_failures=True, scheduled=True)
  File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 374, in _async_refresh
    self.async_update_listeners()
  File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 164, in async_update_listeners
    update_callback()
  File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 431, in _handle_coordinator_update
    self.async_write_ha_state()
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 746, in async_write_ha_state
    self._async_write_ha_state()
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 808, in _async_write_ha_state
    state = self._stringify_state(available)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 752, in _stringify_state
    if (state := self.state) is None:
                 ^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/sensor/__init__.py", line 595, in state
    raise ValueError(
ValueError: Sensor sensor.frigorifero_fridge_temp has device class 'temperature', state class 'measurement' unit '°C' and suggested precision 'None' thus indicating it has a numeric value; however, it has the non-numeric value: '-' (<enum 'StateOptions'>)

Additional context
The issue normally goes away if I force a reload of the integration from HA.
I've noticed from the screenshot that the appliance reports as being off despite I can confirm that from an hw point it is on and connected to wifi.

Please try if last release fix the issue.

The update seems to have resolved the issue.  Log errors are gone.

Fine, I close this issue.

confirm it seems to have solved the issue. thank you!


⚠ AlphaRatio has degraded performance

In ea6d63d, AlphaRatio ($AR) experienced degraded performance:

HTTP code: 200
Response time: 588 ms

Resolved: AlphaRatio performance has improved in 1e59a1a.


Deleted files still appear in module list

Recently, while playing around with adding precondensed module types, I inserted this line:
(in modules.js)
      infer.def.load(override, scope)
      return this.modules[name] = scope.exports
    },

    resolveModule: function(name, parentFile) {
+     console.log(this.modules);
      var over = this.maybeOverride(name)
      if (over) return over
      var known = this.knownModules[name]

and logged the output after a few file additions and deletions:
{ 'node_modules/underscore/underscore.js':
   { types: [ [Object] ],
     forward: [ [Object], [Object], [Object], [Object] ],
     maxWeight: 100,
     origin: 'node_modules/underscore/underscore.js' },
  '5.js':
   { types: [ [Object] ],
     forward: null,
     maxWeight: 100,
     origin: '5.js' },
  '6.js':
   { types: [ [Object] ],
     forward: null,
     maxWeight: 100,
     origin: '6.js' },
  '7.js':
   { types: [ [Object] ],
     forward: null,
     maxWeight: 100,
     origin: '7.js' },
  '8.js':
   { types: [ [Object] ],
     forward: null,
     maxWeight: 100,
     origin: '8.js' } }

For references, 5.js through 8.js were all files added and deleted via API. It looks like tern is still retaining references to them, at least in the Modules class.

Yes, plugins don't typically clean up with regard to deletion until the next context reset (which the server automatically schedules, but which you can force with the .reset() method). This is done intentionally to reduce complexity.


[import] Add Galerie moderneho umeni v Roudnici nad Labem importer

Fixes https://jira.sng.sk/browse/WEBUMENIA-1209
Type of change

[ ] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)

Checklist:

[x] I have updated the CHANGELOG
[x] I have requested at least 1 reviewer for this PR
[ ] I have made corresponding changes to the documentation

Thanks for the review! The problem with author name will be solved on their side.


A simple question about the code

Hi, @lucidrains, I'm a beginner trying to use Q-transformer and encountered a question while reading the code. In the QHeadMultipleActions class, I noticed that Q-transformer encodes the bin into an embedding using self.action_bin_embeddings. However, when obtaining the q value, it multiplies the attention output with self.action_bin_embeddings once again. Is there a specific reason for using this approach to derive the q value instead of employing a new MLP layer multiplied by the attention output? I've shared the relevant code below. Thank you!
def maybe_append_actions(self, sos_tokens, actions: Optional[Tensor] = None):
        if not exists(actions):
            return sos_tokens

        batch, num_actions = actions.shape
        action_embeddings = self.action_bin_embeddings[:num_actions]

        action_embeddings = repeat(action_embeddings, 'n a d -> b n a d', b = batch)
        past_action_bins = repeat(actions, 'b n -> b n 1 d', d = action_embeddings.shape[-1])

        bin_embeddings = action_embeddings.gather(-2, past_action_bins)
        bin_embeddings = rearrange(bin_embeddings, 'b n 1 d -> b n d')

        tokens, _ = pack((sos_tokens, bin_embeddings), 'b * d')
        tokens = tokens[:, :self.num_actions] # last action bin not needed for the proposed q-learning
        return tokens

def get_q_values(self, embed):
        num_actions = embed.shape[-2]
        action_bin_embeddings = self.action_bin_embeddings[:num_actions]

        if self.dueling:
            advantages = einsum('b n d, n a d -> b n a', embed, action_bin_embeddings)

            values = einsum('b n d, n d -> b n', embed, self.to_values[:num_actions])
            values = rearrange(values, 'b n -> b n 1')

            q_values = values + (advantages - reduce(advantages, '... a -> ... 1', 'mean'))
        else:
            q_values = einsum('b n d, n a d -> b n a', embed, action_bin_embeddings)

        return q_values.sigmoid()

@KID0031 hey thanks for your interest
yes you are right that a linear projection would probably do fine there as well. i'm following the weight tied output embedding technique from earlier transformer architectures (which in theory should allow the network to learn better embeddings), but that has been shown to be unnecessary
i'll make it an option to do it the way you describe

@KID0031 try setting this to False
on reflection, i also think i had a bug in the weight tied action bin embeddings, so thanks for raising this


Provide custom palette directly to neogit

Better integration with Neogit custom palette: https://github.com/NeogitOrg/neogit/blob/0820552997dd4dda4faa147228f0e61ea88290a3/doc/neogit.txt#L563

You could use Cattpuccin's implementation as a reference:
https://github.com/catppuccin/nvim/blob/f8a155ab5891c5d2fb709b7e85627f1783d5a5d9/lua/catppuccin/groups/integrations/neogit.lua
You probably won't need to define all highlight groups; most default links should be fine to leave as is.
They use darken & lighten helpers for darker and lighter colours for backgrounds etc.
If you want to do something similar you can use blend. There's an example of this here:
https://github.com/scottmckendry/cyberdream.nvim/blob/731290012f435e06e4d5d64ed7c09cec49df2663/lua/cyberdream/extensions/markdown.lua

This removes .setup() call. Overall Neogit should look much cleaner with this update.
Question, when you set Cyberdream with transparent = true, does fg becomes white if set to t.bg on your terminal? Or is this a normal behavior in Neovim? I'm assuming Cyberdream sets bg to "NONE" if transparency is enabled.
For example:
NeogitCommitViewHeader = { bg = t.cyan, fg = t.bg }
To avoid this I set it to t.bg_solid
I noticed this behavior when customizing my fzf-lua/telescope, I can open a issue to show screenshots if necessary.
Thanks!

Great stuff @gldtn 🙂 thanks again for contributing to the project!


Privacy Proof for DP Logistic Regression

It appears as though the differentially private logistic regression algorithm differs slightly from the algorithm it is based on, proposed in the paper by Chaudhuri, Monteleoni and Sarwate.
Are the two algorithms equivalent? If not, is there a proof that shows the adapted algorithm is still differentially private?

Hi Nicolaas,
Thanks for your question. You're right that we had to make a few adjustments to Chaudhuri et al's algorithm. This was primarily for two reasons:

In order to generalise the algorithm to allow for a user-specified l2 norm of the data (the algorithm in the paper specifies a norm of 1); and,
In order to make it fit with the syntax of Scikit-learn's native Logistic Regression model.

Here is what we did to address the above points:

Non-unity norms: The change to non-unity norms can be determined by looking at the proof of Theorem 2. Everything in the proof holds until you get to the line |\lambda_1(E) + \lambda_2(E)| \le 2c. If our new data norm is q (named data_sensitivity in our code), then we get |\lambda_1(E) + \lambda_2(E) \le 2 c q. This leads to the data_sensitivity term in the local delta variable (not to be confused with the \delta of differential privacy).
Later in the proof, we get \|b - b'\| \le 2 q, which requires us to change the exp term in the next equation to exp{-\epsilon'_p \|b\| / (2 q)}, which results in us changing the scale variable in the Vector mechanism.

Sklearn syntax: The objective functions employed in the paper (equation (1)) and by scikit-learn (maths formula (for l2 regularisation) and code) are different. In order to rewrite equation (1) to match the form of scikit-learn, we must multiply across the objective by n, and divide the regulariser by 2, therefore \Lambda = 1 / (2 n C). However, in practice the code uses alpha = 1 / C, giving \Lambda = alpha / (2 n).
In our code, the c / (n \Lambda) of Algorithm 2 becomes c / (alpha / 2) (with the added data_sensitivity term from 1. above).

All these changes ensures that we can match the behaviour of the non-private Sklearn version, while also being general enough for a wide range of use cases. Let me know if you have any other queries.


Single quotes are escaped

Describe the bug
Single quotes in messages are being escaped and not displayed properly.
This happens due to the addslashes($messages) in NotificationBuilder.php when calling message($message).
To Reproduce
Steps to reproduce the behavior:
Add a flash notification containing a single quote in the message.
Expected behavior
Single quotes being displayed properly.
Screenshots

Hello @Mythos, thanks for reporting the issue.
Right now I don't have time to fix the issue, but I will try to fix it soon.

This issue has been fixed with #33.


Fix build

Codecov Report

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

@@          Coverage Diff           @@
##           master     #31   +/-   ##
======================================
  Coverage    90.6%   90.6%
======================================
  Files          23      23
  Lines         564     564
======================================
  Hits          511     511
  Misses         53      53

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 559ac35...f4780cc. Read the comment docs.


⚠ Turnos 24x7 has degraded performance

In 7777486, Turnos 24x7 (https://reservas-dev.alternativasinteligentes.com/) experienced degraded performance:

HTTP code: 200
Response time: 997 ms

Resolved: Turnos 24x7 performance has improved in 0a1b083.


main.go: Fix logging options

Only display the logging options that actually work

I've tested that -v=10 gives me more logs, and that -log_backtrace_at produces a backtrace. Also checked that the usage text looks right.


enablesimulateinstalls / testmode GAID fix

+is_first_session should always be true when using TestMode or enableSimulateInstalls, but it won't be if we're passing up GAID. This checks to see if TestMode is enabled before passing GAID.

Test Plan
A) Install test

Gogole play dependency added to testbed app (To collect GAID)
Set Debug = true in manifest
Uninstall and install test bed
v1/install should return is_first_session as true always

B) Cookie based Matching test

Cookie based strong match should not work when test mode is enabled.
Match guaranteed should return false even if Cookie based matching  enabled

@mparul ^

LGTM 👍


Downgrade dotnet-publish-iis to latest stable release

cref https://github.com/aspnet/IISIntegration/pull/259
cc @Tratcher

Hi @natemcmaster, I'm your friendly neighborhood .NET Foundation Pull Request Bot (You can call me DNFBOT). Thanks for your contribution!
You've already signed the contribution license agreement. Thanks!
The agreement was validated by .NET Foundation and real humans are currently evaluating your PR.
TTYL, DNFBOT;

:shipit:


Cannot get a very simple .save() to work?

I'm still very new to Ember, and I'm using Emberfire to play around with it. I can't seem to save a very simple model. When invoking save() in the model, it results in a Uncaught TypeError: undefined is not a function error on line 334 of firebase.js - which is the following line of code:
var serializedRecord = record.serialize({includeId:false});
Any ideas what may be causing this?
Some debug info:
ember.debug.js:3975DEBUG: -------------------------------
ember.debug.js:3975DEBUG: Ember      : 1.10.0
ember.debug.js:3975DEBUG: Ember Data : 1.0.0-beta.16
ember.debug.js:3975DEBUG: Firebase   : 2.2.3
ember.debug.js:3975DEBUG: EmberFire  : 1.4.3
ember.debug.js:3975DEBUG: jQuery     : 1.11.2
ember.debug.js:3975DEBUG: -------------------------------

// clients/new.js

import Ember from 'ember';

export default Ember.Controller.extend({
	actions: {
		saveClient: function(){
			var newClient = this.store.createRecord('client', {
				clientName: this.get('clientName'),
				clientEmail: this.get('clientEmail')
			});
			newClient.save();
			this.setProperties({
				clientName: '',
				clientEmail: ''
			});
		}
	}
});

// models/client.js

import DS from 'ember-data';

export default DS.Model.extend({
    clientName: DS.attr('string'),
    clientEmail: DS.attr('string')
});

Hey, please downgrade your ember-data to 1.0.0-beta.12 for now. beta.15 changed the way serialization works and I am working on updating emberfire to support it.

I forgot to mention, you'll need to downgrade it in both package.json and bower.json.

Okay will do, thanks! I'll keep this open for now.

PR has been created to support beta 16: #234

for others coming to this issue, you can downgrade with these commands:
npm install --save-dev<EMAIL_ADDRESS>bower install --save ember-data#1.0.0-beta.12

You can now upgrade emberfire to 1.4.4 in package.json to fix this.


Loading too slowly

Why the size of workbench.api.js  is so large in version 2. Due to my slow network speed to cloud server, it takes at least 1.7 min to load the full UI. But in version 1, it just take serveral seconds to load.

It looks like I forgot to minify the latest pre-release. Normally
it will be 5.4 MB although that's still about 2 MB bigger than v1
(I'll be checking some time soon to see if we can shrink it any).
We also don't have caching enabled yet. Once we do that subsequent
loads should be very quick.

Since we're not hearing anymore from OP, I'm writing this off as fixed.


Dart freezes randomly on windows

Hello,
Since we upgraded to 1.13 we have a terrible experience with Dart.
The dart VM stop working at random time:

the Dart analyzer stops working in Webstorm (have to restart it)
Dartium freezes and shows "Page unresponsive: wait or kill"
pub serve stops serving assets.
Custom dart scripts hang forever

It happens several time per hour.
I don't really know what happens but several of my co-worker see the same behavior.
It happens on windows 8.1 and Windows 10. Not on MacOS.
Please give me pointer of how I can help diagnose this.
Thank you.

cc @danrubel

Can you try if this is still an issue in 1.14? I think to remember that there were similar issues reported not to long ago. 1.14 stable was already released.

I upgraded to 1.14. While it seems to happen a bit less (only 2 or 3 times a day), I can still experience the Analyzer and pub serve that stops working.
There is a few dart-related entries in the Webstorm idea.log (pasted bellow) but it doesn't look like the source of the problem.
Is there somewhere else I could check?
2016-02-09 13:44:14,773 [16015004]   INFO - yzer.DartAnalysisServerService - analysis_getNavigation() took too long for file C:\xxx.dart: 1001ms

and
java.lang.Throwable
	at com.intellij.openapi.diagnostic.Logger.error(Logger.java:115)
	at com.jetbrains.lang.dart.analyzer.DartAnalysisServerService$1.serverError(DartAnalysisServerService.java:204)
	at com.google.dart.server.internal.BroadcastAnalysisServerListener.serverError(BroadcastAnalysisServerListener.java:180)
	at com.google.dart.server.internal.remote.processor.NotificationServerErrorProcessor.process(NotificationServerErrorProcessor.java:37)
	at com.google.dart.server.internal.remote.RemoteAnalysisServerImpl.processNotification(RemoteAnalysisServerImpl.java:502)
	at com.google.dart.server.internal.remote.RemoteAnalysisServerImpl.processResponse(RemoteAnalysisServerImpl.java:517)
	at com.google.dart.server.internal.remote.RemoteAnalysisServerImpl.access$600(RemoteAnalysisServerImpl.java:49)
	at com.google.dart.server.internal.remote.RemoteAnalysisServerImpl$ServerResponseReaderThread.run(RemoteAnalysisServerImpl.java:868)
2016-02-08 17:46:18,259 [30100754]  ERROR - yzer.DartAnalysisServerService - WebStorm 11.0.3  Build #WS-143.1559.5
2016-02-08 17:46:18,259 [30100754]  ERROR - yzer.DartAnalysisServerService - JDK: 1.8.0_51
2016-02-08 17:46:18,259 [30100754]  ERROR - yzer.DartAnalysisServerService - VM: Java HotSpot(TM) Server VM
2016-02-08 17:46:18,259 [30100754]  ERROR - yzer.DartAnalysisServerService - Vendor: Oracle Corporation
2016-02-08 17:46:18,259 [30100754]  ERROR - yzer.DartAnalysisServerService - OS: Windows 8
2016-02-08 17:46:18,259 [30100754]  ERROR - yzer.DartAnalysisServerService - Last Action: EditorRight
2016-02-08 17:46:18,259 [30100754]  ERROR - yzer.DartAnalysisServerService - Dart analysis server, SDK version 1.14.1, server version 1.14.0, error: Failed to handle completion domain request: {clientRequestTime:<PHONE_NUMBER>704, params: {file: C:\Users\xavier.hainaux\dart\pdwg\dart\core\lib\game\game_chrome.dart, offset: 1755}, method: completion.getSuggestions, id: 9071}
Instance of 'AnalysisNotScheduledError'
#0      PendingFuture.forciblyComplete (package:analyzer/src/context/context.dart:2014)
#1      AnalysisContextImpl._evaluatePendingFutures (package:analyzer/src/context/context.dart:1417)
#2      AnalysisContextImpl.performAnalysisTask.<anonymous closure> (package:analyzer/src/context/context.dart:1067)
#3      _PerformanceTagImpl.makeCurrentWhile (package:analyzer/src/generated/utilities_general.dart:194)
#4      AnalysisContextImpl.performAnalysisTask (package:analyzer/src/context/context.dart:1066)
#5      PerformAnalysisOperation.perform (package:analysis_server/src/operation/operation_analysis.dart:371)
#6      AnalysisServer.performOperation (package:analysis_server/src/analysis_server.dart:807)
#7      Future.Future.delayed.<anonymous closure> (dart:async/future.dart:228)
#8      _rootRun (dart:async/zone.dart:903)
#9      _CustomZone.run (dart:async/zone.dart:802)
#10     _CustomZone.runGuarded (dart:async/zone.dart:708)
#11     _CustomZone.bindCallback.<anonymous closure> (dart:async/zone.dart:733)
#12     _rootRun (dart:async/zone.dart:907)
#13     _CustomZone.run (dart:async/zone.dart:802)
#14     _CustomZone.runGuarded (dart:async/zone.dart:708)
#15     _CustomZone.bindCallback.<anonymous closure> (dart:async/zone.dart:733)
#16     Timer._createTimer.<anonymous closure> (dart:async-patch/timer_patch.dart:16)
#17     _Timer._runTimers (dart:isolate-patch/timer_impl.dart:385)
#18     _Timer._handleMessage (dart:isolate-patch/timer_impl.dart:414)
#19     _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:148)

May be related to https://github.com/dart-lang/sdk/issues/24271#issuecomment-180403148


edited documentation for compressor and effect

thanks for your reviews! --
re: p5.Effect methods, should these doc blocks be copied and pasted into classes that inherit? i think you have already done this in Delay for a couple of methods.

@jvntf good question. I don't think it'll be necessary to duplicate this documentation ourselves—we should be able to tell yuidoc to do it. So when we say a class @extends {p5.Effect}, yuidoc should be able to show p5.Effect methods documentation on the subclass. That doesn't seem to be enabled but it must be possible...@Spongman I'm curious if this is something you've looked into already?

Looking at the template code, I believe it should be possible to customize the rendered documentation to reference the base class. There's no need to duplicate the information in the source.


Perf_Mon: Check and sync core clock counters with host and neighbouring cores

When ARC FW reboots the GS chip, it goes through the following,
// De-assert per-tensix reset
   for (uint32_t i=0; i<8; i++)
   {
      p_reg[TENSIX_RESET_REG_ADDR(i)>>2] = 0xffffffff;
   }

Writing 1s to all 8 32-bit registers that contain the reset bit for all 120 tensix cores. The write is done through the AXI bus. Because of the linear loop and depending on the performance of the AXI bus, cores will not reset all on the same clock cycle and their starts will have deltas. The delta times can be obtained from simulation as there is no other traffic on the AXI bus.
SW can also be use to obtain the deltas. One idea discussed with @coffeeandcheesecake is to have a node, let's say node 0,0 calculate its delta from all other nodes and use that data to reference all clock count relative to 0,0.
The idea that has high potential to work is that 0,0 (node A) can find its clock delta with x,y (node B) by first getting the roundtrip time of A->B->A through the NOC layer. In this calculation B's recorded timestamp at the time of receiving A's time should be sent back to A. Because of how on the NOC layer A->B and B->A do not have the same length and because these travel times are a mixture terms dependent and independent of NOC distance, similar B->A->B measurements also need to be done in order to determine both latency overhead because of NOC travel time and the delta between clock counter starts.

Tried setting iopriority and priority and it really did not make much of a difference.
There was still a chance of getting below 8 significant digit precision.
(python_env) root@e04cs07:/home/mmemarian/models/tt-metal# ionice -c 1 -n 0 build/programming_examples/profiler/test_custom_cycle_count
                  Metal | INFO     | Initializing device 0. Program cache is NOT enabled
                 Device | INFO     | Opening user mode device driver
2024-04-24 14:25:18.159 | INFO     | SiliconDriver   - Detected 13 PCI devices : {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}
2024-04-24 14:25:18.548 | INFO     | SiliconDriver   - Detected 13 PCI devices : {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}
2024-04-24 14:25:18.787 | INFO     | SiliconDriver   - Detected 13 PCI devices : {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}
2024-04-24 14:25:19.032 | INFO     | SiliconDriver   - Detected 13 PCI devices : {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}
2024-04-24 14:25:19.264 | INFO     | SiliconDriver   - Detected 13 PCI devices : {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}
2024-04-24 14:25:19.501 | INFO     | SiliconDriver   - Detected 13 PCI devices : {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}
2024-04-24 14:25:19.744 | INFO     | SiliconDriver   - Detected 13 PCI devices : {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}
2024-04-24 14:25:19.985 | INFO     | SiliconDriver   - Detected 13 PCI devices : {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}
2024-04-24 14:25:20.220 | INFO     | SiliconDriver   - Detected 13 PCI devices : {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}
2024-04-24 14:25:20.458 | INFO     | SiliconDriver   - Detected 13 PCI devices : {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}
2024-04-24 14:25:20.694 | INFO     | SiliconDriver   - Detected 13 PCI devices : {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}
2024-04-24 14:25:20.930 | INFO     | SiliconDriver   - Detected 13 PCI devices : {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}
2024-04-24 14:25:21.173 | INFO     | SiliconDriver   - Detected 13 PCI devices : {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}
2024-04-24 14:25:21.175 | WARNING  | SiliconDriver   - hwloc_set_area_membind(): failed for physical_device_id: 12 on NodeSet: {1} with errno: Input/output error (pid: 237132 tid:<PHONE_NUMBER>32128)
---- ttSiliconDevice::init_hugepage: bind_area_to_memory_nodeset() failed (physical_device_id: 12 ch: 0). Hugepage allocation is not on NumaNode matching TT Device. Side-Effect is decreased Device->Host perf (Issue #893).
                  Metal | INFO     | AI CLK for device 0 is:   1202 MHz
x,y,cpuTime,delay,freq,cpu-device-diff
    1,    1,<PHONE_NUMBER>0575.70,<PHONE_NUMBER>558.78,   1.187994847150121,<PHONE_NUMBER>6506.05
    9,    9,<PHONE_NUMBER>2070.80,<PHONE_NUMBER>747.61,   1.187995034495884,<PHONE_NUMBER>9730.23

#5182 is being completed as part of this issue

Blocked by #8223


Wrap qulacs with macro

This PR enhances wrapping Python interface using Julia macro via pywraputils.jl.
Feature 1 LazyHelp
pywraputils.jl provides LazyHelp (similar to that of Plotly.jl or SciPy.jl) which allows us to access the Docstring of Python object defined in __doc__. For example Julia can tell us how to use StateVector
help?> StateVector
search: StateVector

    StateVector
StateVector(arg0: int) -> qulacs.QuantumState

StateVector

Feature 2 @pyfunc, @pyclass
these macros wrap python function and python class efficiently 👍

🚀


Selling Chrome 2209 Leaked CDM

own extracted chrome 2209 working with amazon , netflix & all
https://commerce.coinbase.com/checkout/d5bfac19-e8fd-4684-8d8a-503143320e76

show some proof

what proof you need

chrome cdm proof , what is your discord or email address?

no selling

don't pay attention


Replace _is_pairwise import with _is_pairwise_metric for compatibility with scikit-learn 1.1

Dear maintainers,
this pull request replaces the import of _is_pairwise with the import of _is_pairwise_metric for compatibility with scikit-learn 1.1 (hopefully to be released soon). About backward compatibility: _is_pairwise was deprecated in 0.24 (December 2020).
Fixes #908.
Thanks for considering it.

Thanks. We require scikit-learn>=1.0.0 so this should be good.
CI failures look unrelated.

Thanks @TomAugspurger !


Not able to install on node > 0.12.7

Due to the dependency issue https://github.com/brianmcd/contextify/issues/188
we are not able to install this e.g. with node v4.x or v5.x for Linux or El Captain.
Unfortunately downgrading to node 0.12.7 is not an option for me.
Any thoughts?

Thanks for raising this issue. We'll test and get back to you as soon as possible!

@deiu The author of contextify fixed the issue (5 mike ago) and I can confirm that this project installs the sane<EMAIL_ADDRESS>!
I am closing this issue now and probably you could close https://github.com/linkeddata/ldnode/issues/139 as well ...