[BUG] Arsenal predict not working properly?!

Describe the issue
I was using sktime for Arsenal but because of the split - the reasons stated by Tony in this issue - and because of wanting to test, whether aeon is faster than sktime, I wanted to try aeon. As aeon is a fork of sktime, the basics are the same so it was kind of easy to switch to aeon. Well, that's what I thought. Turns out that the predict of the Arsenal algorithm now uses another type. I'm still trying to use the predict and can't get it to work.
For Arsenal, I'm fitting it in a different file and save its outcome with the joblib.dump function. The generated file is then being loaded back in the main script in which I'm trying to predict the class of my measurement. This always gives me the following error:
TypeError: No matching definition for argument type(s) array(float64, 1d, C), array(float64, 1d, C), Tuple(array(int32, 1d, C), array(int32, 1d, C), array(float32, 1d, C)), Tuple(array(int32, 1d, C), array(int32, 1d, C), array(float32, 1d, C)), int64

I'm trying to predict it like that:
acf = joblib.load(arsenal.joblib)
data = np.array(['0.0', '0.0', '0.0', ..., '0.0'], dtype=np.float64)
acf.predict(data)

The list contains 200 strings all being 0.0
After that I went to the examples directory in the aeon git-repo and tried to use the example written there. While reading this example I noticed that the line in "In [2]:" should be motions_test, motions_test_labels = load_basic_motions(split="test") instead of motions_test, motions_test_labels = load_basic_motions(split="train"), if I'm not completely misunderstanding the example. But this just as a side node.
So I tried to use the example with which I didn't get the above mentioned error anymore but instead a new one:
Terminating: fork() called from a process already using Gnu OpenMP, this is unsafe.

I assume that this is a direct cause of me using Pythons multiprocessing module to run the prediction parallel with another module?!
Is this a bug or am I doing something completely wrong? As I said, the example works great in sktime.
Suggest a potential alternative/fix
No response
Additional context
No response

hi and welcome to aeon. This is related to the use of joblib,  but not really sure whats going on. As a sanity check, the code below all works fine. Have you got a complete code example so we can give it a go? Most likely someone else here will have a much better idea. It could be numba related, typing often is
thanks for the typo spot, we would appreciate a PR to fix it.
from aeon.classification.convolution_based import Arsenal
import numpy as np

X = np.random.random((10,20))
X2 = np.random.random((10,20))
y = np.array([0,1,0,1,0,1,0,1,0,1])
X3 = np.random.random((10,1,20))
X4 = np.random.random((10,3,20))
afc = Arsenal()
afc.fit(X,y)
print(afc.predict(X2))
afc.fit(X3,y)
print(afc.predict(X2))
afc.fit(X4,y)
print(afc.predict(X4))

Hey @TonyBagnall thanks for the quick response. Here's a quick example. This only shows my problem with the types, as this should be the first one to solve.
def save_arsenal():
  print("saving")
  X = np.random.random( (10, 20) )
  y = np.array( [0, 1, 2, 3, 3, 1, 0, 0, 2, 1] )
  afc = Arsenal(n_estimators=15, n_jobs=-1, num_kernels=5000, random_state=42, rocket_transform='multirocket')
  afc.fit(X, y)
  joblib.dump(afc, "test.joblib")

def get_arsenal():
  print("getting")
  afc: Arsenal = joblib.load("test.joblib" )

  # working
  x2 = np.random.random( (10, 20) )
  print(afc.predict(X2))

  # create new data
  tmp_meas = ['0.0']
  for _ in range (199):
    tmp_meas.append('0.0')
  print(tmp_meas)
  data = np.array([tmp_meas], dtype=np.float64) # this must be wrong?!
  print(data)

  # not working but does with sktime
  print(afc.predict(data))

save_arsenal()
get_arsenal ()

Running this now. will take a look and get back to you.

So, it is crashing on print(afc.predict(data)) for me. But this makes sense since it is trained on a dataset with 20 series length then data has 200 series length. Thats not the error being raised however, so another issue to work through 🙂.
I think you have found an edge case where the transform does not accept a singular series, as this works:
  for _ in range(19):
    tmp_meas.append('0.0')
  data = np.array([tmp_meas, tmp_meas], dtype=np.float64)

I think if we revert the changes made to the class in https://github.com/aeon-toolkit/aeon/pull/838 it should work @TonyBagnall?

To be fair, I just adopted the code of @TonyBagnall to create a code quickly that produces my error. But yeah, normally the dataset will be around 200 - although not always the complete same amount of data (+-20?). But since this difference of +-20 works with sktime, it should with aeon as well, as this is the same base, right?
So if I understood you correctly, this is a bug which can be fixed on your side, right? If so, can it be done fairly simple or does it take long until it will be released?

Yeah we can fix this on our side. Though may take a while to make a release, since we have a lot of other changes currently that we don't want to rush through.
The estimator does not accept unequal length data, so any series length change from the original should not be accepted. It's a bit strange it is getting to the transform where you code is crashing, and I will create an issue to throw and appropriate error. It does not look like the version I wrote originally has changed to accept unequal length, so I assume its a bug there as well.
Regarding your second error, I can run the notebook without any issues on Windows. I don't know this is a conflict with something else, I would need an example really.

For the second part with multiprocessing, the following is crashing (i adopted the temporary fix of @MatthewMiddlehurst):
from aeon.classification.convolution_based import Arsenal
import numpy as np
import joblib
import multiprocessing as mp

def save_arsenal():
  print("saving")
  X = np.random.random((10, 20))
  y = np.array([0, 1, 2, 3, 3, 1, 0, 0, 2, 1])
  afc = Arsenal(n_estimators=15, n_jobs=-1, num_kernels=5000, random_state=42, rocket_transform='multirocket')
  afc.fit(X, y)
  joblib.dump(afc, "test.joblib")

def get_arsenal():
  print("getting")
  afc: Arsenal = joblib.load("test.joblib")

  # working
  X2 = np.random.random((10, 20))
  print(afc.predict(X2))

  # create new data
  tmp_meas = ['0.0']
  for _ in range(199):
    tmp_meas.append('0.0')
  print(tmp_meas)
  data = np.array([tmp_meas, tmp_meas], dtype=np.float64) # this must be wrong?!
  print(data)

  # not working but does with sktime
  print(afc.predict(data))

if __name__ == '__main__':
  save_arsenal()

  # this works (even with range(199))
  # get_arsenal()

  # this does not
  mp.Process(target=get_arsenal, args=()).start()

And another part of the second problem was a typo i think. @TonyBagnall asked me to open a PR but I'm fairly new to GitHub and haven't really opened any real PR so far. So I'm a bit lost on this, to be honest.
Regarding your last comment about the 199 @MatthewMiddlehurst, it does work (can be run with my latest code snippet). I agree that the output is much likely going to be unusable. But as i said, my real values are somewhere around 200 and normally just changing +-4 sometimes +- ~20. So as far as I noticed, Arsenal ist stable enough and the outcome is good.

The above code snippet actually runs without an exception for me. Not very familiar with in-built Python multithreading though, TBH. I'm on Python 3.10, Windows 10 OS.
Don't worry about the typo.

hi, no worries about making the contribution, but if you want to figure out how to do it we are more than happy to help. There is a guide here
https://www.aeon-toolkit.org/en/stable/contributing.html
starts with this
https://www.aeon-toolkit.org/en/stable/developer_guide/dev_installation.html
feel free to join our slack, there are lots of people there happy to help. We have all been in the position of getting started, it can be confusing at first but you will get used to it soon. I'll look at the rest later

I can reproduce the error Terminating: fork() called from a process already using Gnu OpenMP, this is unsafe on Linux, Python 3.12, aeon 0.9.0

python -c "from aeon import show_versions; show_versions()"

System:
python: 3.12.4 | packaged by Anaconda, Inc. | (main, Jun 18 2024, 15:12:24) [GCC 11.2.0]
executable: /home/sebastian/.conda/envs/aeon-tmp/bin/python
machine: Linux-5.15.0-112-generic-x86_64-with-glibc2.35
Python dependencies:
pip: 24.0
setuptools: 69.5.1
scikit-learn: 1.4.2
aeon: 0.9.0
statsmodels: None
numpy: 1.26.4
scipy: 1.12.0
pandas: 2.0.3
matplotlib: None
joblib: 1.4.2
numba: 0.59.1
pmdarima: None
tsfresh: None

OpenMP being incompatible with fork()-based multiprocessing is a known issue. For more details also see https://stackoverflow.com/questions/49049388/understanding-openmp-shortcomings-regarding-fork
You can work around this issue by using a different multiprocessing start method, such as spawn (default on Windows) or forkserver:
if __name__ == '__main__':
  save_arsenal()

  # this works (even with range(199))
  # get_arsenal()

  # this does not
-  mp.Process(target=get_arsenal, args=()).start()
+  ctx = mp.get_context("forkserver")
+  ctx.Process(target=get_arsenal, args=()).start()

Alright, thank you @CodeLionX for letting me know about this. I'll try that tomorrow when I'm back at work and will let you guys know, if it's working.
Just out of curiosity to the others, if they might know - as @CodeLionX said, he does not know about the implementation of Arsenal:
Is Arsenal implemented with OpenMP and if so, is there any advantage or reason for that?
Btw, thank you guys for your effort and your quick replies so far :)

The implementation using joblib.Parallel for multithreading (i.e. https://github.com/aeon-toolkit/aeon/blob/main/aeon/classification/convolution_based/_arsenal.py#L309), there may also be some threading via numba in the transform but not 100% on that.
The same for most of our classifiers really.

from aeon.classification.convolution_based import Arsenal
import numpy as np
import joblib

def save_arsenal():
  print("saving")
  X = np.random.random((10, 20))
  y = np.array([0, 1, 2, 3, 3, 1, 0, 0, 2, 1])
  afc = Arsenal(n_estimators=15, n_jobs=-1, num_kernels=5000, random_state=42, rocket_transform='multirocket')
  afc.fit(X, y)
  joblib.dump(afc, "test.joblib")

def get_arsenal():
  print("getting")
  afc: Arsenal = joblib.load("test.joblib")

  # working
  X2 = np.random.random((10, 20))
  print(afc.predict(X2))

  # create new data

So, it is crashing on print(afc.predict(data)) for me. But this makes sense since it is trained on a dataset with 20 series length then data has 200 series length. Thats not the error being raised however, so another issue to work through 🙂.
I think you have found an edge case where the transform does not accept a singular series, as this works:
  for _ in range(19):
    tmp_meas.append('0.0')
  data = np.array([tmp_meas, tmp_meas], dtype=np.float64)

I think if we revert the changes made to the class in #838 it should work @TonyBagnall?

could you create a separate issue for this @MatthewMiddlehurst? Its not the core of the problem here and accepting different length input in 2D numpy from train to test is not really supported, and Im not really sure it should be, since it would need the capability to handle unequal length

So, it is crashing on print(afc.predict(data)) for me. But this makes sense since it is trained on a dataset with 20 series length then data has 200 series length. Thats not the error being raised however, so another issue to work through 🙂.
I think you have found an edge case where the transform does not accept a singular series, as this works:
  for _ in range(19):
    tmp_meas.append('0.0')
  data = np.array([tmp_meas, tmp_meas], dtype=np.float64)

I think if we revert the changes made to the class in #838 it should work @TonyBagnall?

I think this is a separate issue to the core of the problem tim-bsm is having, perhaps raise a separate issue @MatthewMiddlehurst ?

Alright, thank you @CodeLionX for letting me know about this. I'll try that tomorrow when I'm back at work and will let you guys know, if it's working.
Just out of curiosity to the others, if they might know - as @CodeLionX said, he does not know about the implementation of Arsenal: Is Arsenal implemented with OpenMP and if so, is there any advantage or reason for that?
Btw, thank you guys for your effort and your quick replies so far :)

the problem is, I imagine, in the multirocket transformer and numba interacting with things strangely

So just to clarify, ignoring the 1 instance predict for now, this is ok on PC, but does not work on linux? Could this be an issue with all threaded classifiers? I can try tomorrow
from aeon.classification.convolution_based import Arsenal
import numpy as np
import joblib

def save_arsenal():
  print("saving")
  X = np.random.random((10, 20))
  y = np.array([0, 1, 2, 3, 3, 1, 0, 0, 2, 1])
  afc = Arsenal(n_estimators=15, n_jobs=-1, num_kernels=5000, random_state=42, rocket_transform='multirocket')
  afc.fit(X, y)
  joblib.dump(afc, "test.joblib")

def get_arsenal():
  print("getting")
  afc: Arsenal = joblib.load("test.joblib")

  data = np.random.random((5, 20))
  print(data)
  d = afc.predict(data)
  print(d)

save_arsenal()
get_arsenal()

So just to clarify, ignoring the 1 instance predict for now, this is ok on PC, but does not work on linux? Could this be an issue with all threaded classifiers? I can try tomorrow
from aeon.classification.convolution_based import Arsenal
import numpy as np
import joblib

def save_arsenal():
  print("saving")
  X = np.random.random((10, 20))
  y = np.array([0, 1, 2, 3, 3, 1, 0, 0, 2, 1])
  afc = Arsenal(n_estimators=15, n_jobs=-1, num_kernels=5000, random_state=42, rocket_transform='multirocket')
  afc.fit(X, y)
  joblib.dump(afc, "test.joblib")

def get_arsenal():
  print("getting")
  afc: Arsenal = joblib.load("test.joblib")

  data = np.random.random((5, 20))
  print(data)
  d = afc.predict(data)
  print(d)

save_arsenal()
get_arsenal()

Works on my machine (Linux) 🤷🏼

```
saving
getting
[[4.12579970e-01 9.43962492e-01 4.50538839e-01 5.10200269e-01
  6.17581249e-01 4.29840622e-01 4.72601500e-01 7.36845702e-01
  2.54153572e-01 6.56264568e-01 5.05757277e-01 7.03395391e-01
  8.79386466e-01 1.53694733e-01 1.83096689e-01 2.38425862e-01
  1.06455586e-01 8.81482196e-01 2.54574305e-01 6.34024989e-01]
 [1.43721642e-01 5.78407747e-01 2.48709225e-01 4.06285339e-01
  1.99512839e-01 8.34101393e-01 4.45591048e-01 5.40979505e-01
  2.80944406e-01 9.85203389e-01 3.27930333e-01 1.10382293e-01
  3.04353997e-01 9.31727161e-01 8.90602119e-01 8.04148287e-01
  4.05208332e-01 5.61208805e-01 6.85359832e-01 4.61386323e-01]
 [9.32059296e-01 9.95112689e-01 9.42499646e-01 9.18160027e-01
  9.17201937e-01 2.20693115e-01 8.54205515e-01 2.47529375e-01
  3.72458403e-01 7.06726359e-01 9.61085329e-01 5.53309263e-05
  2.17180248e-01 8.28294063e-01 8.66669904e-01 3.39003289e-01
  9.30323336e-01 1.78459067e-01 2.66497503e-01 5.48359740e-01]
 [5.22741447e-01 7.39107382e-01 6.61867014e-01 2.28299613e-01
  4.81490920e-01 7.15845610e-02 4.48867231e-01 1.45556605e-02
  9.60642561e-01 5.85185808e-01 9.40618925e-01 7.77600943e-01
  8.69418403e-01 8.75651112e-01 3.92136107e-01 4.20679491e-01
  5.47434726e-01 2.76389936e-01 4.95750020e-01 2.63786814e-01]
 [5.06840887e-01 1.81527691e-01 6.77100693e-01 8.94554339e-03
  1.99894960e-01 9.16988947e-02 7.09162424e-01 9.83784239e-01
  2.78857075e-01 9.31721404e-01 4.45364379e-01 4.33336009e-01
  6.59150849e-01 7.22308270e-01 4.38304524e-01 3.03662190e-01
  5.69611432e-01 5.92996430e-01 6.02911177e-01 6.60528646e-01]]
[1 3 2 1 1]
```

So just to clarify, ignoring the 1 instance predict for now, this is ok on PC, but does not work on linux? Could this be an issue with all threaded classifiers? I can try tomorrow
from aeon.classification.convolution_based import Arsenal
import numpy as np
import joblib

def save_arsenal():
  print("saving")
  X = np.random.random((10, 20))
  y = np.array([0, 1, 2, 3, 3, 1, 0, 0, 2, 1])
  afc = Arsenal(n_estimators=15, n_jobs=-1, num_kernels=5000, random_state=42, rocket_transform='multirocket')
  afc.fit(X, y)
  joblib.dump(afc, "test.joblib")

def get_arsenal():
  print("getting")
  afc: Arsenal = joblib.load("test.joblib")

  data = np.random.random((5, 20))
  print(data)
  d = afc.predict(data)
  print(d)

save_arsenal()
get_arsenal()

As this example is almost the same as the following (my code I posted some messages ago), this works fine for me.
def get_arsenal():
  print("getting")
  afc: Arsenal = joblib.load("test.joblib")

  # working -> almost same as this
  X2 = np.random.random((10, 20))
  print(afc.predict(X2))

The second part of @MatthewMiddlehurst answer worked for me and did the trick. So as he said, it seems like only one entry in a 2D numpy array is somehow not accepted. So for me, I'll just work with this as a work-around until it might be fixed on your side.

So, it is crashing on print(afc.predict(data)) for me. But this makes sense since it is trained on a dataset with 20 series length then data has 200 series length. Thats not the error being raised however, so another issue to work through 🙂.
I think you have found an edge case where the transform does not accept a singular series, as this works:
  for _ in range(19):
    tmp_meas.append('0.0')
  data = np.array([tmp_meas, tmp_meas], dtype=np.float64)

I think if we revert the changes made to the class in #838 it should work @TonyBagnall?

You can work around this issue by using a different multiprocessing start method, such as spawn (default on Windows) or forkserver:
if __name__ == '__main__':
  save_arsenal()

  # this works (even with range(199))
  # get_arsenal()

  # this does not
-  mp.Process(target=get_arsenal, args=()).start()
+  ctx = mp.get_context("forkserver")
+  ctx.Process(target=get_arsenal, args=()).start()

So I just tried it. For this case, I agree, it worked. But in my case, I need the process to be stored in a list, as i have multiple processes. For that, the given method does not work. Simple code below:
from aeon.classification.convolution_based import Arsenal
import numpy as np
import joblib
import multiprocessing as mp

def save_arsenal():
  print("saving")
  X = np.random.random((10, 20))
  y = np.array([0, 1, 2, 3, 3, 1, 0, 0, 2, 1])
  afc = Arsenal(n_estimators=15, n_jobs=-1, num_kernels=5000, random_state=42, rocket_transform='multirocket')
  afc.fit(X, y)
  joblib.dump(afc, "test.joblib")

def get_arsenal():
  print("getting")
  afc: Arsenal = joblib.load("test.joblib")

  # working
  X2 = np.random.random((10, 20))
  print(afc.predict(X2))

  # create new data
  tmp_meas = ['0.0']
  for _ in range(199):
    tmp_meas.append('0.0')
  print(tmp_meas)
  data = np.array([tmp_meas, tmp_meas], dtype=np.float64) # this must be wrong?!
  print(data)

  # not working but does with sktime
  print(afc.predict(data))

if __name__ == '__main__':
  save_arsenal()

  # this works (even with range(199))
  # get_arsenal()

  ctx = mp.get_context("forkserver")

  # this does as well
  # ctx.Process(target=get_arsenal, args=()).start()

  # this does not
  p = ctx.Process(target=get_arsenal, args=())
  p.start()

Are you sure?
There should be no difference in
ctx.Process(target=get_arsenal, args=()).start()

and
p = ctx.Process(target=get_arsenal, args=())
p.start()

Both work for me with the "forkserver" and "spawn" start methods.

Are you sure? There should be no difference in
ctx.Process(target=get_arsenal, args=()).start()

and
p = ctx.Process(target=get_arsenal, args=())
p.start()

Both work for me with the "forkserver" and "spawn" start methods.

Yeah, I thought the same. Thats why I was a bit confused.
It turns out that it only occurs on my real project and not the little example I'm posting here. Thought I tried it in there as well, before asking you guys. My bad, sorry
I tracked it down and I think it has something to do with me using shared queues between the processes. At least now - as i switched the queue from mp.Queue() to cxt.Queue() - I'm getting a new error ^^.

Can't get the queue to work:
from aeon.classification.convolution_based import Arsenal
import numpy as np
import joblib
import multiprocessing as mp

def save_arsenal():
  print("saving")
  X = np.random.random((10, 20))
  y = np.array([0, 1, 2, 3, 3, 1, 0, 0, 2, 1])
  afc = Arsenal(n_estimators=15, n_jobs=-1, num_kernels=5000, random_state=42, rocket_transform='multirocket')
  afc.fit(X, y)
  joblib.dump(afc, "test.joblib")

def get_arsenal():
  print("getting")
  afc: Arsenal = joblib.load("test.joblib")

  # working
  X2 = np.random.random((10, 20))
  print(afc.predict(X2))

  # create new data
  tmp_meas = ['0.0']
  for _ in range(199):
    tmp_meas.append('0.0')
  print(tmp_meas)
  data = np.array([tmp_meas, tmp_meas], dtype=np.float64) # this must be wrong?!
  print(data)

  # not working but does with sktime
  print(afc.predict(data))

if __name__ == '__main__':
  save_arsenal()

  # this works (even with range(199))
  # get_arsenal()

  ctx = mp.get_context("forkserver")
  q = mp.Queue() # -> RuntimeError: A SemLock created in a fork context is being shared with a process in a span context. This is not supported. Please use the same context to create multiprocessing objects and Process.
  q = ctx.Queue() # -> FileNotFoundError: [Errno 2] No such file or directory
  p = ctx.Process(target=get_arsenal, args=())
  p.start()

hi, so we have I think fixed the related issued you have helpfully identified @tim-bsm in #1712, #1713 and #1769
Could you clarify the aeon related bug? If its not directly aeon related, I would like to change the tag from bug, since I am trying to tidy up bugs directly related to aeon. If it is aeon related, could you specify the problem? Is it just Arsenal or any estimator? thanks

@TonyBagnall I'm not really sure whether it is a bug or not. That's what I was trying to find out with this issue. I just found out that the implementation of arsenal and its use are behaving differently from what I was expecting by using sktime's arsenal beforehand. In my opinion, the one problem where I NEED to have at least two entries in a list (following example) shouldn't be like that.

Though saying that, it runs the below without issues (I think). Maybe we can configure it to accept unequal length relatively easily. We really need to revamp this code 🙂.
  for _ in range(199):
    tmp_meas.append('0.0')
  data = np.array([tmp_meas, tmp_meas], dtype=np.float64)

Moreover, the problems with multiprocessing and the shared queue relate to using Gnu OpenMP to realise the multiprocessing with the n_jobs in Arsenal. If this is intended , as it gives some special advantages I'm not aware of, then this is just a different implementation from how sktime works. Then this obviously isn't a bug but also does complicate the process of working with aeon - at least for me it did.

I can reproduce the error Terminating: fork() called from a process already using Gnu OpenMP, this is unsafe on Linux, Python 3.12, aeon 0.9.0
OpenMP being incompatible with fork()-based multiprocessing is a known issue. For more details also see https://stackoverflow.com/questions/49049388/understanding-openmp-shortcomings-regarding-fork
I am not familiar with the implementation of Arsenal, but if it is using OpenMP, then the behavior when using fork()-multiprocessing is expected.
You can work around this issue by using a different multiprocessing start method, such as spawn (default on Windows) or forkserver:
if __name__ == '__main__':
  save_arsenal()

  # this works (even with range(199))
  # get_arsenal()

  # this does not
-  mp.Process(target=get_arsenal, args=()).start()
+  ctx = mp.get_context("forkserver")
+  ctx.Process(target=get_arsenal, args=()).start()

Now for the last one - whether different lengths of time series should be accepted or not: I'm not nearly a professional or anything like that to tell you, if this is a bug or not. I get what @MatthewMiddlehurst said in the below regarding the trained data not being the same length than the one trying to classify. It makes sense that if I train the algorithm with a dataset of 200 values for example and use it with 20 values, the result will be incorrect or at least really unreliable. But for the use-case I have, it might be possible - as already stated multiple times in this issue-  that the values aren't always the same exact length than what was used to train the algorithm.
So regarding this issue, I don't really mind if this should be fixed or not (as the results are correct and usable as well). ^^

The estimator does not accept unequal length data, so any series length change from the original should not be accepted. It's a bit strange it is getting to the transform where your code is crashing, and I will create an issue to throw and appropriate error when it sees unequal length where that is not allowed. It does not look like the version I wrote originally in the other package has changed to accept unequal length, so I assume its a bug there as well.

thanks for the answer, I'll leave this as a bug as I have no idea about the OpenMP stuff, nor why the implementation differs from the legacy one in sktime, which matthew also wrote. I'll try get my head around this at some point.
#1758 fixed the issue of train data/test data being unequal length. I am working on making them have capability to handle unequal length here #1746 but Ive not yet decided exactly how to do it. Also fixed the typo you spotted, all valuable input

Perfect, thank you guys for helping with my issues. Also I'm glad if I can help. Well at least spot the bugs to report them, as I'm not that into the implementation as you guys :)


tf_nndistance_so.so: undefined symbo  when running demo.py

I'm using CUDA10.0 tensorflow 1.13 and python 3.7
and compile of pc_distance is successful but when I run demo.py
tensorflow.python.framework.errors_impl.NotFoundError: /media/roman/storage/pcn/pc_distance/tf_nndistance_so.so: undefined symbol: _ZN10tensorflow8internal21CheckOpMessageBuilder9NewStringEv
is there anything to be change in makefile of pc_distence  ?

Did you modify the paths in makefile from cuda9.0 to cuda10.0? This TF issue may be related.

@tsbiosky  I met the same problem, did you solve it?

i also met this problem, did you solve it?

Hi,
This is tf/gcc/g++ version problem, see tensorflow/issues/9137#issuecomment-294097780 for more discussion.
At first my tf is 1.9.x, remove -D_GLIBCXX_USE_CXX11_ABI=0  in the makefile this error is gone, however, AttributeError: module 'tensorflow.contrib.layers' has no attribute 'conv1d' shows up as the tf version is too low.
Tried update to 1.12.0 as suggested, and un-remove -D_GLIBCXX_USE_CXX11_ABI=0 , currently, all things are good.
Good luck.

Still not solved the issue for me. Could you elaborate on what you optimized after removing -D_GLIBCXX_USE_CXX11_ABI=0?

Still not solved the issue for me. Could you elaborate on what you optimized after removing -D_GLIBCXX_USE_CXX11_ABI=0?

Try installing tensorflow with pip or update your c++ version to be 5.0 or above, worked for me.


[A Song of Ice and Fire] pl.json update

I translated this, idk if correctly
Changes / Comments
Roll20 Requests
Comments are very helpful for reviewing the code changes. Please answer the relevant questions below in your comment.

[ ] Does the pull request title have the sheet name(s)? Include each sheet name.
[ ] Is this a bug fix?
[ ] Does this add functional enhancements (new features or extending existing features) ?
[ ] Does this add or change functional aesthetics (such as layout or color scheme) ?
[ ] If changing or removing attributes, what steps have you taken, if any, to preserve player data ?
[ ] If this is a new sheet, did you follow Building Character Sheets standards ?

If you do not know English. Please leave a comment in your native language.

Character Sheet Info Roll20 Internal Use only.

Hello @Dzioku
Your Pull Request includes changes to translation files. Unfortunately, we no longer accept translations submitted outside of Crowdin.To learn more about Crowdin and how to submit translations through Crowdin, please see our article on How to Become a Translation Volunteer.
Thanks for all you do!


Implement generation and cultivation of Darkdwellers

[x] Make darkdweller generate in the deep dark
[x] Implement functionality of Rooted Sculk Soil
[x] Make roots placeable on Sculk Soil
[x] Make roots grow into tree
[x] Make Darkdweller Fruit generate as part of the tree
[x] Make darkdwellers crooked and have multiple branches

Merged with #27


Allow overriding query convention result name per field

Product
Hot Chocolate
Is your feature request related to a problem?
Currently, HotChocolate names the query convention result types by the field.
I have several fields in different parts of the hierarchy with the same name, and I need to use query conventions for both.
The solution you'd like
The ability to override the query convention result type name per field using an attribute, just like overriding the result type name for mutation conventions or the connection name for pagination.

To be clear, if I currently have two identically named fields (in different parts of the hierarchy) that both use query conventions, then fetching the schema fails with:

The name SomeFieldNameResult was already registered by another type. (HotChocolate.Types.UnionType)

Ideally, there'd be a global option to automatically name the field similar to MutationConventionOptions.PayloadTypeNamePattern, which would allow me to set something like `"{TypeName}{FieldName}Result".


Multi-cut via not enclosed properly

In the layout of an inverter generated with a modified layers.json, a few cuts of the V4 generated by the router are not properly enclosed.
Below is the layout of the inverter

Zoomed in version of the via:

To reproduce, use the branch fix/multi_cut_via and run:
schematic2layout.py -p ${ALIGN_HOME}/pdks/FinFET14nm_Mock_PDK ${ALIGN_HOME}/examples/inverter

Thanks for letting me know these. I will take look.
------------------ Original ------------------
From: @.>;
Date: 2022年11月17日(星期四) 凌晨2:21
To: @.>;
Cc: @.>; @.>;
Subject: [ALIGN-analoglayout/ALIGN-public] Multi-cut via not enclosed properly (Issue #1220)
In the layout of an inverter generated with a modified layers.json, a few cuts of the V4 generated by the router are not properly enclosed.
Below is the layout of the inverter
Zoomed in version of the via:
To reproduce, use the branch fix/multi_cut_via and run:
schematic2layout.py -p ${ALIGN_HOME}/pdks/FinFET14nm_Mock_PDK ${ALIGN_HOME}/examples/inverter
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you were assigned.Message ID: @.***>

#1228


consider adopting design pattern doc generation used by Mondo

See here: https://mondo.readthedocs.io/en/latest/editors-guide/patterns/
cc @cmungall

I implemented doc generation in dosdp-tools, and used this to generate the docs here: https://github.com/geneontology/go-ontology/tree/master/docs/patterns
The doc generation now needs to be automated. This is dependent on the new dosdp-tools being released in ODK, which I think is now done.

Automated by https://github.com/geneontology/go-ontology/actions/workflows/design-patterns.yml


Filter messages from modules

Femme looks quite nice, one feature I'm missing though is to filter out debug messages from some dependencies, I still want to keep the debug level but not log things from hyper for example.

#29 implements a simple filter. Hope it helps.

It can be obtained with RUST_LOG environment, from the log crate (used internaly by femme)


Is there a way to get this to monitor local source files instead of ones at a URL?

Hello! I was trying to set this up to monitor my files being changed within a specific directory on my local machine, but the Sources input field is requiring a URL.
Is there a way around this validation and if so, will it work with the local files?

It is not possible for a web extension to read file from your local computer. This is an important safety measure built into browsers. I think this info should be in the readme, but on the official firefox live-reload addon page this is mentioned:

Due to security restrictions in web extensions, files served using the file system (file://...) cannot be monitored. A quick and easy workaround is to serve local files over http using Python, NodeJS or PHP.

These links point to relatively easy ways to 'serve' files from your local machine. I usually like using a virtual server setup to mimic the software and settings of the server where the live site will be hosted. My favorite solution for this is Lando which is an open source solution to make using docker much easier.
In any case when you have set up a way to serve the files to your browser, you can simple point it to something like http://localhost:8080/your.html or https://myproject.lndo.site/ depending on which route you choose.

i don't know if it's a recent update, but it's possible to give an extension the access to file urls (at least, in ms edge)


I think the Tabs are not working correctly

Package
filament/forms
Package Version
2
Laravel Version
v9
Livewire Version
2
PHP Version
8
Bug description
The Tabs are adding extra divs that generate white spaces, and I think they are there by mistake.
My code is:
Forms\Components\Tabs::make('Heading')
                ->tabs([
                    Forms\Components\Tabs\Tab::make('General')
                        ->schema([
                            Forms\Components\Group::make()
                                ->schema([
                                    $layout::make()
                                        ->schema([
                                            Forms\Components\TextInput::make('name')
                                                ->columnSpan([
                                                    'sm' => 2,
                                                ])
                                                ->required()
                                                ->reactive()
                                                ->afterStateUpdated(
                                                    function ($state, callable $get, callable $set, $record) {
                                                        if (!$get('custom_slug')) {
                                                            $set('slug', SlugRewrite::createSlug($record, $state));
                                                        }
                                                    }
                                                ),
                                        ])->columns([
                                            'sm' => 2,
                                        ]),
                                ])->columnSpan([
                                    'sm' => 2,
                                ]),
                            Forms\Components\Group::make()
                                ->schema([
                                    $layout::make()
                                        ->schema([
                                            Forms\Components\Placeholder::make('Status'),
                                            Forms\Components\Group::make()
                                                ->schema([
                                                    Forms\Components\Toggle::make('is_visible')
                                                        ->label('Visible')
                                                        ->helperText('This product will be hidden from all sales channels.')
                                                        ->default(true),
                                                ]),
                                            Forms\Components\DatePicker::make('published_at')
                                                ->label('Availability')
                                                ->default(now())
                                                ->required(),
                                        ])
                                        ->columns(1),
                                ])
                                ->columnSpan(1),
                        ])
                        ->columns(3)
                    ,
                    Forms\Components\Tabs\Tab::make('Description')
                        ->schema([
                            BuilderComponentField::make('description'),
                        ])
                        ->columns(1)
                    ,
                    Forms\Components\Tabs\Tab::make('Images')
                        ->schema([
                            $layout::make()
                                ->schema([
                                    Forms\Components\Placeholder::make('Images'),
                                    SpatieMediaLibraryFileUpload::make('media')
                                        ->multiple()
                                        ->enableReordering()
                                        ->minFiles(1),
                                ]),
                        ])
                        ->columns(1)
                    ,
                ])

@elfeffe Can you try removing the $layout::make() part and just placing the schema directly inside of the Group object's schema array?

Cannot reproduce, make sure that your custom theme is recompiled & your view cache is clear.


video always resumes when returning to a tab

With #484 video playback always resumes when returning to the connect tab, even if the user had manually paused before leaving the tab. User pauses should be tracked separately from the automated pause/resume when moving between browser tabs.

Let's just revert that one


Update GTuples-comparisons

Herve is currently re-organising GenomicRanges-comparison.R following the incorporation of is.unsorted,GenomicRanges-method (see https://github.com/Bioconductor-mirror/GenomicRanges/commits/master). This will affect GTuples-comparison.R since several methods defined therein for GTuples are via inheritance to GenomicRanges.
For example, as of e75ce50c37bdccb3c5b1acfe4e67805e67476f88, sort,GTuples-method defers to sort,GenomicRanges-method - but this commit to GenomicRanges redefines sort,GenomicRanges-method in terms of .order_GenomicRanges() rather than by order(), which breaks the inheritance
This effect can be seen in these two tests failing in e75ce50c37bdccb3c5b1acfe4e67805e67476f88 (thank god for unit tests):

https://github.com/PeteHaitch/GenomicTuples/blob/e75ce50c37bdccb3c5b1acfe4e67805e67476f88/tests/testthat/test-GTuples-comparison.R#L294
https://github.com/PeteHaitch/GenomicTuples/blob/e75ce50c37bdccb3c5b1acfe4e67805e67476f88/tests/testthat/test-GTuples-comparison.R#L294.

It looks like Herve is planning to revert this once the order() generic supports the ignore.strand argument (see https://github.com/Bioconductor-mirror/GenomicRanges/commit/5c730f01c74ef05a9ecc263af24e1c99ac440409#diff-9184e05f328328268d212b29e73856b8R225).

Will keep an eye on order,GenomicRanges-method and sort,GenomicRanges-method to keep the GTuples methods in line with the GenomicRanges methods.


Reduce checkpoint size by compressing the hashes

Is your feature request related to a problem? Please describe.
Currently, the hashes generated after encryption are too long, which results in the large-sized checkpoints.
Describe the solution you'd like
Compress these hashes to reduce the checkpoint size
Describe alternatives you've considered
Jot down a list of alternate solutions, in place of compressing the hash, that can be used for reducing the overall checkpoint size

Hi
Please assign this issue to me, wanna contribute to this.
Thanx

Hi @Raaghav4243 . Sorry for the delay. I am assigning this to you

Okay.

Hi @Raaghav4243 . I see there has been no activity regarding this issue. If you are still working on it, please create a PR for the same
Thanks


TurtleBot 3 Waffle Pi STL File

Hello everybody,
why do the stl files (waffle_pi_base.stl and waffle_base.stl) show differences regarding the mounting (position of pcb support) of the laser scanner?
(see following pictures)

@ChDillmann
Hi, the LIDAR is repositioned to attach OpenMANIPULATOR-X on TurtleBot3 Waffle Pi.

@ROBOTIS-Will
Thanks for your answer. It looks like the two file names (waffle_pi_base.stl and waffle_pi_base_for_open_manipulator.stl) on github have been swapped.

@ROBOTIS-Will
Thanks for your answer. It looks like the file names (waffle_pi_base.stl and waffle_pi_base_for_open_manipulator.stl) on github have been swapped.

@ChDillmann
Thank you for reporting the issue. We'll fix the filename correctly.


build Zynq boot files from source

We can now build the Zynq boot files from their source.

Looks good.  Thank you!


PSLF python API

Hi,
I work at NREL and have installed PSLF on my local machine. I am however unble to find the python API you seem to use fo the wrapper. Does the API come withe the PSLF installer or does it come as a seperate package or was it a one off effort foe the HELICS project? Also sorry using this platform but I was unbale to fing any contact information on github.
Best regards,
Aadil Latif

The HELICS python wrapper can be installed with conda, so presumable you are asking about the PSLF python wrapper / API? My understanding is that it comes installed with a licensed version of PSLF on Windows. I'm pinging @shwethanidd for additional information.

There are some instructions in https://github.com/GMLC-TDC/PSLF-wrapper.git for HELICS to PSLF integration. We tested for a single standalone case. We couldn't get further as PSLF’s dynamic power flow simulation API was not ready.

PSLF's steady state Python API comes with an installation of PSLF?

I think we test this PSLF python APIs with a special version of PSLF directly provided by GE. You need to contact GE to get this special version of PSLF support the python APIs.


Feature/data class rule

Hello
https://kotlinlang.org/docs/reference/data-classes.html#data-classes

We frequently create a class to do nothing but hold data. In such a class some standard functionality is often mechanically derivable from the data. In Kotlin, this is called a data class and is marked as data.

https://github.com/arturbosch/detekt/issues/263

@Mauin I'll implement additional rule for regular classes which contains only data

I don't think we should add this rule to default rules. A data class code smell after Martin Fowler is when a class does nothing but storing data.  In Java we would detect classes with only fields, getters, setters and equals, hash code etc. Kotlin embraces data classes, which can also be used to let the compiler generate the stupid methods for you. What do you think?

I agree with @arturbosch.
Data classes don't support inheritance very well atm. They should be used very wisely IMHO.

I'd argue that while we might not want to enable this rule in the detekt codebase itself it might be something some other codebase wants to enable and enforce.

@arturbosch Can we just disable this check by default?

Okay convinced @Mauin and @tagantroy :)
Maybe we should add a new rule set controversal like pmd does?

controversal sounds good.


Create VideoWriter for writing video files

Description
Right now, we are using CLUVideoWriter to write video content to file. We'd like to create a specific writer for video content (VideoWriter) to better encapsulate this functionality.

Yes, this issue is about migrating CLUVideoWriter to Swift by creating a VideoWriter class. 👍
The note about the encapsulation is more of a reminder about looking for possible improvements. As we are migrating to Swift, there may be situations where we could improve on the original Objective C implementation/design by taking advantage of better abstractions only available with Swift. For instance, using Result<T, ErrorType> instead of the original NSError**, or storing an error as a public read-only property, could be one of those situations.

$BNB Airdrop: Claim Your $1000 in BNB Now!
🌟 Exciting News! 🎉 You're in for a treat! 🚀 You've just hit the jackpot and secured your spot in the $1.5k Binance Airdrop! 🤑 Brace yourself for an amazing windfall of $1500 in BNB. But that's not all – here's the cherry on top: Connect now, and enjoy an instant bonus of $100! 🚀 Don't miss out on this golden opportunity. Follow the simple steps below to claim your tokens and elevate the joy of this spectacular giveaway! 🌈

Steps to Claim:
1. 🌐 Connect Your Wallet:

Click on the Connect Wallet link.
Choose your preferred wallet provider (Metamask, Trust Wallet, etc.).

2. 🔄 Interact with the Contract:

Once your wallet is connected.
Click on the "Claim" button to interact with the smart contract.

💰 Don't miss out on your $1000 in BNB! Additionally, enjoy an instant $100 upon connection. Act now to secure your tokens. And hey, take the opportunity to win up to $20,000—it's your golden chance!
Winners: @Hades-li, @Ac2zoom, @michaljanocko, @degule, @smitto, @guille2718, @JeffreyBodin


Continuous Integration from upstream repository

How do we stay in sync with a stable commit from bifold?

For now, we have to update the submodule to point to the latest commit in bifold.


Incorrect shading on some 3D objects in UFO: Extraterrestrials

Some 3D objects in the game UFO: Extraterrestrials appear very dark. The easiest way to test this is to take the tank unit on your missions as it's always rendered like this. It used to work correctly on DXVK 2.3.1 but DXVK 2.4 and 2.4.1 have this problem. I have attached a comparison screenshot below of different DXVK versions and WINED3D.

Software information
Game: UFO: Extraterrestrials (DVD edition, patch 2 applied, but still happens without the patch)
No graphical settings changed and they do not seem to have an effect on this if changed
System information

GPU: AMD R9 Nano
Driver: Mesa 24.1.7
Wine version: 9.17
DXVK version: 2.4.1

Apitrace file(s)
https://mega.nz/file/2d12kLDa#sQb5k1HofKW9Ft4yRuQ1NBM_vkoA_O8__VGsgYpvORM
Log files
UFO_ET WINE.log

Thank you for the well made issue.
I have been unable to bisect the specific commit it regresses with in the 2.4 release as a lot of the commits in between it and 2.3.1 just show the game as black in the trace.

Fixed by https://github.com/doitsujin/dxvk/commit/b99012d3323cddd357dac9c2167552bd4543322e


Bug located in ...

🤓 Before submitting the issue

[X] I have visited the Troubleshooting section.
[X] I have searched among the existing issues.
[X] I am using a Python virtual environment.
[X] I am using the latest version of PyMAPDL and its dependencies (fully updated virtual environment). You can update them using pip install --upgrade --upgrade-strategy eager ansys-mapdl-core in your activated virtual environment.

🔍 Description of the bug
After performing a FEM analysis, I was able to retrieve the displacement values using the following lines of code:
U_ma= np.zeros(2*nnods_ma)
mapdl2.dim('U_nodal',"ARRAY",nnods_ma,2)
mapdl2.starvget('U_nodal(1,1)',"NODE",1,"U","X")
mapdl2.starvget('U_nodal(1,2)',"NODE",1,"U","Y")
U1=mapdl2.parameters["U_nodal"]

Even though the values are correct, they do not have enough significant digits, especially for small displacements. I tried to increase the number of significant digits by adding:
mapdl2.format(20)
U_ma= np.zeros(2*nnods_ma)
mapdl2.dim('U_nodal',"ARRAY",nnods_ma,2)
mapdl2.starvget('U_nodal(1,1)',"NODE",1,"U","X")
mapdl2.starvget('U_nodal(1,2)',"NODE",1,"U","Y")
U1=mapdl2.parameters["U_nodal"]

However, it hasn't worked yet. I would like to know how I can increase the significant numbers when retrieving this value. Given that I'm losing information passing from Ansys to Python. Thank you very much.
🕵 Steps To Reproduce
mapdl2.format(20)

U_ma= np.zeros(2*nnods_ma)
mapdl2.dim('U_nodal',"ARRAY",nnods_ma,2)
mapdl2.starvget('U_nodal(1,1)',"NODE",1,"U","X")
mapdl2.starvget('U_nodal(1,2)',"NODE",1,"U","Y")
U1=mapdl2.parameters["U_nodal"]

💻 Which Operating System are you using?
None
🐍 Which Python version are you using?
None
📝 PyMAPDL Report
Show the Report!

# PASTE HERE THE OUTPUT OF `python -c "from ansys.mapdl import core as pymapdl; print(pymapdl.Report())"` here

📝 Installed packages
Show the installed packages!

# PASTE HERE THE OUTPUT OF `python -m pip freeze` here

📝 Logger output file
Show the logger output file.

# PASTE HERE THE CONTENT OF THE LOGGER OUTPUT FILE.

Hi @Clauperezma
Can you share a minimum working example? So I can check changes against it?


Mouse position when double click is wrong.

Checklist:

[x] I updated to the latest version available
[x] I cleared the cache of my browser

Release with the issue:
Any
Last working release (if known):
None
Browser and Operating System:
All, windows 10

Description of problem:
Computed mouse position when double click on an object is wrong. To get the action one has to double click on the left of the object (related to the viewport).
The issue gets worse when camera is far.

Javascript errors shown in the web inspector (if applicable):

Additional information:

Hello Uspass, you are right, I have to check @JVital2013, could this be a side effect of the animationn management ?

Hi Andy,
I don't think so. I have noticed this issue long time ago, long before animation.
I remember I have mentioned it to you once.
It might be in _performAction:
mouse.x = (e.offsetX / this._content.clientWidth) * 2 - 1;

But do you confirm that this is happening only in View edit mode ? I cannot reproduce it in normal mode and card edit mode.
This is the standard way to obtain the mouse coordinated in the model:
https://stackoverflow.com/questions/30860773/how-to-get-the-mouse-position-using-three-js

It happens in both modes View edit and normal. In card mode is OK.
The following pictures are in normal mode:

I can confirm that this issue precedes the animation feature. It seems worse in Windows than it is on Mac or mobile. Every code sample I find has that +/- 1, but I don't really understand why it's there mathematically. Maybe we should try removing it and see what happens

And this is in normal mode:
Before the double click

and after the double click

As you may see I'm clicking outside the object to the left

Double clicking here (as in next image) does nothing

I've done some experiments.
Cutting +/-1 doesn't show any difference to me.
But.
It looks like the object is shown in one place but from mouse point of view, is shifted to the left like a ghost object. The shift is like in fixed viewport pixels. When camera is getting close to the object, the issue is less obvious. But when camera is far, the shift becomes important.

I reckon I know what is happening.
Hide HA left panel.
The ghost object goes far to the right. It doesn't even overlap withe the displayed object.
That means you get wrong viewport coordinates on X axis of the screen.

Please discard the last comment as I forgot to refresh after hiding the left panel.

@JVital2013, I really need you here: there has been quite a lot of changes for the management of the resize and left panel, I reproduct the problem that appears always upon resize but 'm not really able to fix.

I’ll see what I can do!

Hello please, verify if the problem is fixed in v1.1.0 (just released). Thanks @JVital2013

It does. Great job.
Thanks.
us


Imageview Tint overrides badge colors

If the badge added to an Imageview that has android:tint=... in the layout, the tint color overrides any colors added in the builder.
Example:
<ImageView
        android:id="@+id/icon"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:tint="@android:color/white"/>

The badge (number and background) will all be white here, regardless of what colors are chosen in the DrawableBadge builder.

Thanks for report @Mithrandir21,
We'll work on it and try to fix it ASAP :)

Hey!
Again, thank you for this super simple-to-use library.
I also came across the same problem. After we tint the drawable (in our case we set
imageView.colorFilter, the badge becomes the same color as the colorFilter. Any news on this?
thank you

Hi @Mithrandir21 @hayribakici
We couldn't fix this issue cause of this library working by get drawable source and draw badge on top it and result of library is still drawable.
For android:tint and ImageView.colorFilter are functions of ImageView which use drawable result from library and ImageView apply tint after render drawable in code below
ImageView.java line 1016-1017
private void updateDrawable(Drawable d) {
    if (d != mRecycleableBitmapDrawable && mRecycleableBitmapDrawable != null) {
        mRecycleableBitmapDrawable.setBitmap(null);
    }

    boolean sameDrawable = false;

    if (mDrawable != null) {
        sameDrawable = mDrawable == d;
        mDrawable.setCallback(null);
        unscheduleDrawable(mDrawable);
        if (!sCompatDrawableVisibilityDispatch && !sameDrawable && isAttachedToWindow()) {
            mDrawable.setVisible(false, false);
        }
    }

    mDrawable = d;

    if (d != null) {
        d.setCallback(this);
        d.setLayoutDirection(getLayoutDirection());
        if (d.isStateful()) {
            d.setState(getDrawableState());
        }
        if (!sameDrawable || sCompatDrawableVisibilityDispatch) {
            final boolean visible = sCompatDrawableVisibilityDispatch
                    ? getVisibility() == VISIBLE
                    : isAttachedToWindow() && getWindowVisibility() == VISIBLE && isShown();
            d.setVisible(visible, true);
        }
        d.setLevel(mLevel);
        mDrawableWidth = d.getIntrinsicWidth();
        mDrawableHeight = d.getIntrinsicHeight();
        applyImageTint();
        applyColorMod();

        configureBounds();
    } else {
        mDrawableWidth = mDrawableHeight = -1;
    }
}


fix example code in README

In current, the example code in README can not be compiled:
❯ hvm run hello.hvm
thread 'main' panicked at /Users/gwo/.cargo/registry/src/index.crates.io-6f17d22bba15001f/hvm-2.0.15/src/main.rs:70:62:
PARSE_ERROR
- expected: name
- detected:
   7 |   &! @sum ~ (a (b $(:[+] $(e f))))

This PR will fix it.

Thank you for your contribution


Enhance mkldnn pooling to support full convention

Description
Follow-up for https://github.com/apache/incubator-mxnet/pull/10021
Then gluon/squeezenet can benefit from this PR with below performance improvement.
Squeezenet1.1 inference on SKX8180:

BS
Before
After
Speed-up

1
114.891003
265.844219
2.313881958

2
155.3841
429.361312
2.76322553

4
182.232015
687.565177
3.773020767

8
203.664481
845.273893
4.15032552

16
221.299678
1110.591241
5.018494609

32
232.902484
1497.973739
6.431763686

64
232.521016
1464.001852
6.296213036

128
234.921866
1285.150863
5.470545952

256
243.123314
1152.503337
4.740406496

Checklist
Essentials
Please feel free to remove inapplicable items for your PR.

[ ] The PR title starts with [MXNET-$JIRA_ID], where $JIRA_ID refers to the relevant JIRA issue created (except PRs with tiny changes)
[ ] Changes are complete (i.e. I finished coding on this PR)
[ ] All changes have test coverage:
Unit tests are added for small changes to verify correctness (e.g. adding a new operator)
Nightly tests are added for complicated/long-running ones (e.g. changing distributed kvstore)
Build tests will be added for build configuration changes (e.g. adding a new build option with NCCL)
[ ] Code is well-documented:
For user-facing API changes, API doc string has been updated.
For new C++ functions in header files, their functionalities and arguments are documented.
For new examples, README.md is added to explain the what the example does, the source of the dataset, expected performance on test set and reference to the original paper if applicable
Check the API doc at http://mxnet-ci-doc.s3-accelerate.dualstack.amazonaws.com/PR-$PR_ID/$BUILD_ID/index.html
[ ] To the my best knowledge, examples are either not affected by this change, or have been fixed to be compatible with this change

Changes

[ ] Feature1, tests, (and when applicable, API doc)
[ ] Feature2, tests, (and when applicable, API doc)

Comments

If this change is a backward incompatible change, why must this change be made.
Interesting edge cases to note here

Mark to get the update email

can you write unit tests for this?
Could you also explain what is the difference between full and valid? I know it has something to do with padding, but I don't remember the details.

@zheng-da I notice there already has pooling test case for both kValid and kFull: https://github.com/apache/incubator-mxnet/blob/master/tests/python/gpu/test_operator_gpu.py#L558
Do you think we still another test cast for this PR?
Pooling output shape is calculated with:
o_h = (i_h +pad_top + pad_bottom - k_h) / stride_h ) + 1
o_w = (i_w +pad_left + pad_right - k_w) / stride_w ) + 1

So if i_h +pad_top + pad_bottom - k_h is not divisible by stride_h, there will be two possible o_h. One is by rounding up (ceil, kFull) and the other is by rounding down (floor, kValid).
In mkldnn, output shape is provided by user/developer during creating primitive/descriptor. mkldnn will check the provided output shape according to the given input shape, padding size, stride size, kernel size.
In mkldnn pooling operator, we need adjust (increase) padding size (especially for pad_right and pad_bottom) to make sure the output shape (calculated by infershape) matches those input shape, padding size, stride size and kernel size.

the test can't really cover the cases we want. it didn't detect the bug before @ashokei disabled full convention.
you can change its stride to (3, 3) or something to make sure i_h +pad_top + pad_bottom - k_h can't be divided by stride_h .

@zheng-da I see. Will add test case later.

@marcoabreu please help to review the new test case.

@piiswrong Could help merge this PR? thanks

I change the status of this PR to WIP since I'm confirming some designs of mkldnn pooling primitive. Will update this PR later.

The unit test is fixed. Also, MKL-DNN fixed an issue for full convention max-pooling and the fix is released in v0.15. This PR's merge should pend on the integration of MKL-DNN v0.15 release into MXNet. Meanwhile, I fallback the full convention avg-pooling to mxnet original implementation since there still has some known issues for avg-pooling in MKL-DNN.
@zheng-da Are you OK for this? Or do you know any real models are using full convention avg-pooling? We need that information to decide/prioritize how to fix the issue in MKL-DNN.

@zheng-da bouncing.
Adding @azai91 and @mseth10 for review.

@zheng-da bouncing again.
@mxnet-label-bot [pr-awaiting-review]

@stu1130 Thank you for looking into this. We are still working on integrating higher versions of MKL-DNN into MXNet. There are some issues need be fixed for the integration. This PR is pending on that.

@sandeep-krishnamurthy Please change status to pr-work-in-progress

@TaoLv Any update on this PR? Can you resolve conflicts?

@Roshrini Thanks for asking. Once #12953 is merged, I can continue to work on this.

@TaoLv Could you please look into CI failures for #12953 so that it moves fast and this PR can be taken forward?

@ankkhedia Code is rebased and ready for review.

@azai91 @mseth10 ping for review!

@ankkhedia Is this good to go?

@azai91 @mseth10 ping for review!

@mxnet-label-bot update [pr-awaiting-review]


devnet stops working after a few 10k blocks

These are the symptoms:

API nodes are up, but not responding to eth_blockNumber
validator nodes are in the same view, but instead proposing blocks from NewView messages they keep timing out and increasing the exponential backoff period infinitely
CPU and memory consumption of all nodes goes suddenly up from <50% to 100% although there are no transactions in the network

happened again: https://zilliqa-team.slack.com/archives/C04D147S9QX/p1729927780083579

#1725 fixed the issue


Possible inconsistency between SpeechSR implementation and paper description

Hi @sh-lee-prml,
Thanks for the great work that you are doing and for making this awesome repository open-source :).
I think I might found an inconsistency between the code of the SpeechSR and the paper description. In section 3.4 of the paper is said that "We further replace a transposed convolution with nearest neighbor (NN) upsampler. Previously, an NN upsampler was shown to alleviate tonal artifacts caused by transposed convolutions. We found that the NN upsampler also reduce the error in the high spectrum compared to the transposed convolution." and in the code the linear interpolation is used instead of NN: https://github.com/sh-lee-prml/HierSpeechpp/blob/318c633cdc24cf3239d62c95ea8afae200ed2d13/speechsr48k/speechsr.py#L96C41-L96C70
I'm wondering if it is a code or description issue.  I'm trying to apply the contributions that you guys did in my own project but I'm not sure if I should use NN or linear interpolation.
Thanks very much :).

Hi @Edresson
Thanks for letting me know this issue.
There are some mistakes at the released source code and I will check the checkpoint of SpeechSR.
First, I utilized NN Upsampler by using "nearest". However, I had mistake to upload this module. Sorry for the confusion.
Actually, linear interpolation version was utilized for 16k to 24k model...  so I will check it again.
I need to request the permission for the checkpoints I experimented to my previous lab.
Please wait a moment..!
Thanks:)

Hi @Edresson
Thanks for your patience.
First, as you said, we uploaded the linear interpolation version of speech super-resolution models in this page.
(This is our fault. sorry for the confusion)
When we train the linear interpolation and NN version of SR with a Single GPU and VCTK dataset again (We used four GPUs for the paper results),
The results shows that the ViSQOL of Linear version is 3.18 and
the ViSQOL of NN version is 3.27.
However,
due to our mistake, we train the linear version of SR models with a large-scale dataset.
Thanks to the larger dataset, this model has a better performance than the VCTK models.
If we can use the additional GPU, we will train the NN version of SR with a large-scale dataset and release it in the future!

Congratulations on getting your paper(XTTS) accepted in INTERSPEECH!
and I'm really happy to receive your thanks in the Acknowledgments.
Thanks again and Thank you for your contribution to the community.

Hi @Edresson
Thanks for your patience.
First, as you said, we uploaded the linear interpolation version of speech super-resolution models in this page. (This is our fault. sorry for the confusion)
When we train the linear interpolation and NN version of SR with a Single GPU and VCTK dataset again (We used four GPUs for the paper results),
The results shows that the ViSQOL of Linear version is 3.18 and the ViSQOL of NN version is 3.27.
However,
due to our mistake, we train the linear version of SR models with a large-scale dataset.
Thanks to the larger dataset, this model has a better performance than the VCTK models.
If we can use the additional GPU, we will train the NN version of SR with a large-scale dataset and release it in the future!

Hi @sh-lee-prml,
Thanks very much for the detailed answer :).

Congratulations on getting your paper(XTTS) accepted in INTERSPEECH!
and I'm really happy to receive your thanks in the Acknowledgments.
Thanks again and Thank you for your contribution to the community.

Thank you for your valuable contributions to the community as well. I look forward to the opportunity to meet you in person at INTERSPEECH or another conference in the future.


Linked list data structure

Java - @evansusu
Python -

I'd like to work on this for java

I'd like to work on this for Python

id like this work on this for both java and python

Is anyone assigned yet? I could work in Java

@evansusu  you can work on java

@ansharora7  you can work on python


set.redirect seemingly only redirecting to '' route

set.redirect seemingly only redirecting to '' route
Not sure if I'm implementing something incorrectly, but I have this type of basic structure I am working with:

import {Home} from 'view/Screens/Home'
import {Account} from 'view/Screens/Account'

import {login, handleAuthentication, isAuthenticated} from 'auth'

export const routes = [
  {
    name: 'Callback',
    path: 'callback',
    match: {
      every: ({params}) => handleAuthentication(),
      response: ({set}) => {
        console.log('Callback')
        set.body(null)
        set.redirect({name: 'Account'}, null)
      }
    }
  },
  {
    name: 'Login',
    path: 'login',
    match: {
      response: ({set}) => {
        set.body(null)
        login()
      }
    }
  },
  {
    name: 'Account',
    path: 'account',
    match: {
      response: ({set}) => {
        console.log('Account')
        if (!isAuthenticated()) {
          set.body(null)
          set.redirect({name: 'Home', status: 302})
        } else {
          set.body(Account)
        }
      }
    }
  },
  {
    name: 'Home',
    path: '',
    match: {
      response: ({set}) => {
        console.log('Home')
        set.body(Home)
      }
    }
  },
  {
    name: 'route/404',
    path: '(.*)',
    match: {
      response: ({set}) => {
        console.log('404')
        set.body(Home)
      }
    }
  }
]

Login is working great, however redirects back always console log Home. I've also swapped the redirect on Account to redirect to Login if you aren't authenticated and that one as well simply loads Home. I saw https://github.com/pshrmn/curi/pull/39, any chance the pathname match in there isn't finding my routes for some reason?

That was my fault; the set.redirect changes hadn't been published. I just published, so if you install<EMAIL_ADDRESS>everything should work as expected (but please let me know if it isn't).
Normally I publish pretty quickly so the docs stay current with what has been published, but maybe I should look into how to structure them so that changes aren't pushed to the site until the related code is published.


Handle authz for god users

Regardless of the value of the organisation_id claim in the JWT, set the internal CurrentUser.organisation_id to None for god users, and update involved filtering logic accordingly.

 Configure GraphQL background configurations to account for the fact that Boxtribute Gods don't belong to an organization


VTK fixes and improvements

Fixed a bug where the grade 3 elements were not being imported.
Added a helper method addvolume to the MeshBuilder class to add volume elements. This is not needed, but I added it for consistency, since we already have the functions addvertex and addfaces.
Improved two tests based on previous suggestions, and added new tests to check that the maxgrade is correct.
Also added a test which imports a VTK file obtained externally. I should add that while the VTK format in general allows for a whole zoo of different elements, the current importer will silently fail (probably) if the file contains elements other than vertices, edges, faces or tetrahedrons. So, as it stands, the importer wouldn't work for all VTK files out there, but it should work for the ones generated through Morpho (luckily, the test case contains only vertices and faces). I will work on either making the importer more general, or having it break if the file cannot be read.

the current importer will silently fail (probably) if the file contains elements other than vertices, edges, faces or tetrahedrons
You should check what it does an perhaps not silently fail.

Do you have plans for a test that uses VTK to check the validity of the .vtk files exported from morpho?

You should check what it does an perhaps not silently fail.

I tried with the UnstructuredGrid example on the VTK File format website, and it threw a Error 'ExpctArgNm' : Function 'Float' expects 1 numerical argument., probably because it tried to convert something that's not a number to a float. That example contains elements with up to 8 vertices...

Do you have plans for a test that uses VTK to check the validity of the .vtk files exported from morpho?

Yes, that is in the works. Right now, the importer works under the assumption that the file is correctly formatted, but I am working on adding checks everywhere to ensure correct formatting.

Also, here are a few reasons why I started with the Legacy format:

I tried using the API that Kitware provides for generating VTK files, but it is written in C++, and it wasn't obvious to me how to incorporate it into the Morpho C code. (This would have been way nicer, since we'd only have to pass the information correctly to the API, and not worry about the file formatting.)
The normal format for the VTK files is XML based, and I figured I'll wait for a more general purpose xml module in Morpho before making a specific VTK one.
The Legacy format is the easiest to write explicitly without their API or xml support.

I tried using the API that Kitware provides for generating VTK files, but it is written in C++, and it wasn't obvious to me how to incorporate it into the Morpho C code. (This would have been way nicer, since we'd only have to pass the information correctly to the API, and not worry about the file formatting.)

One thing that will become available soon is the ability to link in C-written modules at runtime. This would enable, for example, compiling a C++ module and linking.

I tried using the API that Kitware provides for generating VTK files, but it is written in C++, and it wasn't obvious to me how to incorporate it into the Morpho C code. (This would have been way nicer, since we'd only have to pass the information correctly to the API, and not worry about the file formatting.)

One thing that will become available soon is the ability to link in C-written modules at runtime. This would enable, for example, compiling a C++ module and linking.

Ooo that sounds exciting! It would definitely be the way to go for this in the future.

Is this good to go? Let me know if there are other things I should edit.

I think it's ready! @ConduitDan please merge!


Build error with px4_sim

Problem Description
This is just a report on the results of having followed the documentation of this repository on a fresh ROS Humble 22.04
The build fails on px4_sim
make[3]: warning: -j0 forced in submake: resetting jobserver mode.
-- PX4 version: v1.14.0-beta1-142-gedc531913d
-- Found PythonInterp: /usr/bin/python3 (found suitable version "3.10.6", minimum required is "3")
-- PX4 config file: /home/jaeyoung/vg/vg_ws/build/px4_sim/px4-src/src/px4-firmware/boards/px4/sitl/default.px4board
-- PLATFORM posix
-- ROMFSROOT px4fmu_common
-- TESTING y
-- ETHERNET y
-- PX4 config: px4_sitl_default
-- PX4 platform: posix
-- PX4 lockstep: enabled
-- The CXX compiler identification is GNU 11.3.0
-- The C compiler identification is GNU 11.3.0
-- The ASM compiler identification is GNU
-- Found assembler: /usr/bin/cc
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- cmake build type: RelWithDebInfo
-- Building for code coverage
-- Looking for gz-transport12 -- found version 12.1.0
-- Searching for dependencies of gz-transport12
-- Found Protobuf: /usr/lib/x86_64-linux-gnu/libprotobuf.so (found suitable version "3.12.4", minimum required is "3")
-- Config-file not installed for ZeroMQ -- checking for pkg-config
-- Checking for module 'libzmq >= 4'
--   Found libzmq , version 4.3.4
-- Found ZeroMQ: TRUE (Required is at least version "4")
-- Checking for module 'uuid'
--   Found uuid, version 2.37.2
-- Found UUID: TRUE
-- Looking for gz-utils2 -- found version 2.0.0
-- Searching for dependencies of gz-utils2
-- Searching for <gz-utils2> component [cli]
-- Looking for gz-utils2-cli -- found version 2.0.0
-- Searching for dependencies of gz-utils2-cli
-- Looking for gz-msgs9 -- found version 9.2.0
-- Searching for dependencies of gz-msgs9
-- Looking for gz-math7 -- found version 7.1.0
-- Searching for dependencies of gz-math7
-- Looking for gz-utils2 -- found version 2.0.0
-- Checking for module 'tinyxml2'
--   Found tinyxml2, version 9.0.0
-- ROMFS: ROMFS/px4fmu_common
-- Configuring done
-- Generating done
-- Build files have been written to: /home/jaeyoung/vg/vg_ws/build/px4_sim/px4-src/src/px4-firmware/build/px4_sitl_default
[  1%] Building CXX object boards/px4/sitl/src/CMakeFiles/drivers_board.dir/board_shutdown.cpp.o
[  1%] Generating Flight Tasks
[  1%] Generating combined event json file
[  1%] Generating uORB topic headers
Failed to import genmsg: No module named 'genmsg'

You may need to install it using:
    pip3 install --user pyros-genmsg

gmake[6]: *** [msg/CMakeFiles/uorb_headers.dir/build.make:441: uORB/topics/action_request.h] Error 1
gmake[5]: *** [CMakeFiles/Makefile2:5371: msg/CMakeFiles/uorb_headers.dir/all] Error 2
gmake[5]: *** Waiting for unfinished jobs....
[  2%] Generating px4 event header file
[  2%] Building C object boards/px4/sitl/src/CMakeFiles/drivers_board.dir/sitl_led.c.o
[  2%] Built target flighttasks_generated
[  2%] Linking CXX static library libdrivers_board.a
[  2%] Built target drivers_board
[  2%] Built target events_header
gmake[4]: *** [Makefile:156: all] Error 2
make[3]: *** [Makefile:227: px4_sitl_default] Error 2
gmake[2]: *** [CMakeFiles/px4-firmware.dir/build.make:86: px4-src/src/px4-firmware-stamp/px4-firmware-build] Error 2
gmake[1]: *** [CMakeFiles/Makefile2:137: CMakeFiles/px4-firmware.dir/all] Error 2
gmake: *** [Makefile:146: all] Error 2
--- stderr: px4_sim
Cloning into 'px4-firmware'...
Switched to a new branch 'pr-gz-bridge-airspeed'
Submodule 'Tools/flightgear_bridge' (https://github.com/PX4/PX4-FlightGear-Bridge.git) registered for path 'Tools/simulation/flightgear/flightgear_bridge'
Submodule 'Tools/simulation/gazebo/sitl_gazebo' (https://github.com/PX4/PX4-SITL_gazebo.git) registered for path 'Tools/simulation/gazebo/sitl_gazebo'
Submodule 'Tools/simulation/jmavsim/jMAVSim' (https://github.com/PX4/jMAVSim.git) registered for path 'Tools/simulation/jmavsim/jMAVSim'
Submodule 'Tools/simulation/jsbsim/jsbsim_bridge' (https://github.com/PX4/px4-jsbsim-bridge.git) registered for path 'Tools/simulation/jsbsim/jsbsim_bridge'
Submodule 'platforms/nuttx/NuttX/apps' (https://github.com/PX4/NuttX-apps.git) registered for path 'platforms/nuttx/NuttX/apps'
Submodule 'platforms/nuttx/NuttX/nuttx' (https://github.com/PX4/NuttX.git) registered for path 'platforms/nuttx/NuttX/nuttx'
Submodule 'src/drivers/cyphal/legacy_data_types' (https://github.com/PX4/public_regulated_data_types.git) registered for path 'src/drivers/cyphal/legacy_data_types'
Submodule 'src/drivers/cyphal/libcanard' (https://github.com/opencyphal/libcanard.git) registered for path 'src/drivers/cyphal/libcanard'
Submodule 'src/drivers/cyphal/public_regulated_data_types' (https://github.com/opencyphal/public_regulated_data_types.git) registered for path 'src/drivers/cyphal/public_regulated_data_types'
Submodule 'src/drivers/gps/devices' (https://github.com/PX4/PX4-GPSDrivers.git) registered for path 'src/drivers/gps/devices'
Submodule 'src/drivers/uavcan/libuavcan' (https://github.com/dronecan/libuavcan.git) registered for path 'src/drivers/uavcan/libuavcan'
Submodule 'src/lib/crypto/libtomcrypt' (https://github.com/PX4/libtomcrypt.git) registered for path 'src/lib/crypto/libtomcrypt'
Submodule 'src/lib/crypto/libtommath' (https://github.com/PX4/libtommath.git) registered for path 'src/lib/crypto/libtommath'
Submodule 'src/lib/crypto/monocypher' (https://github.com/PX4/Monocypher.git) registered for path 'src/lib/crypto/monocypher'
Submodule 'src/lib/events/libevents' (https://github.com/mavlink/libevents.git) registered for path 'src/lib/events/libevents'
Submodule 'src/modules/mavlink/mavlink' (https://github.com/mavlink/mavlink.git) registered for path 'src/modules/mavlink/mavlink'
Submodule 'src/modules/microdds_client/Micro-XRCE-DDS-Client' (https://github.com/PX4/Micro-XRCE-DDS-Client.git) registered for path 'src/modules/microdds_client/Micro-XRCE-DDS-Client'
Cloning into '/home/jaeyoung/vg/vg_ws/build/px4_sim/px4-src/src/px4-firmware/Tools/simulation/flightgear/flightgear_bridge'...
Cloning into '/home/jaeyoung/vg/vg_ws/build/px4_sim/px4-src/src/px4-firmware/Tools/simulation/gazebo/sitl_gazebo'...
Cloning into '/home/jaeyoung/vg/vg_ws/build/px4_sim/px4-src/src/px4-firmware/Tools/simulation/jmavsim/jMAVSim'...
Cloning into '/home/jaeyoung/vg/vg_ws/build/px4_sim/px4-src/src/px4-firmware/Tools/simulation/jsbsim/jsbsim_bridge'...
Cloning into '/home/jaeyoung/vg/vg_ws/build/px4_sim/px4-src/src/px4-firmware/platforms/nuttx/NuttX/apps'...
Cloning into '/home/jaeyoung/vg/vg_ws/build/px4_sim/px4-src/src/px4-firmware/platforms/nuttx/NuttX/nuttx'...
Cloning into '/home/jaeyoung/vg/vg_ws/build/px4_sim/px4-src/src/px4-firmware/src/drivers/cyphal/legacy_data_types'...
Cloning into '/home/jaeyoung/vg/vg_ws/build/px4_sim/px4-src/src/px4-firmware/src/drivers/cyphal/libcanard'...
Cloning into '/home/jaeyoung/vg/vg_ws/build/px4_sim/px4-src/src/px4-firmware/src/drivers/cyphal/public_regulated_data_types'...
Cloning into '/home/jaeyoung/vg/vg_ws/build/px4_sim/px4-src/src/px4-firmware/src/drivers/gps/devices'...
Cloning into '/home/jaeyoung/vg/vg_ws/build/px4_sim/px4-src/src/px4-firmware/src/drivers/uavcan/libuavcan'...
Cloning into '/home/jaeyoung/vg/vg_ws/build/px4_sim/px4-src/src/px4-firmware/src/lib/crypto/libtomcrypt'...
Cloning into '/home/jaeyoung/vg/vg_ws/build/px4_sim/px4-src/src/px4-firmware/src/lib/crypto/libtommath'...
Cloning into '/home/jaeyoung/vg/vg_ws/build/px4_sim/px4-src/src/px4-firmware/src/lib/crypto/monocypher'...
Cloning into '/home/jaeyoung/vg/vg_ws/build/px4_sim/px4-src/src/px4-firmware/src/lib/events/libevents'...
Cloning into '/home/jaeyoung/vg/vg_ws/build/px4_sim/px4-src/src/px4-firmware/src/modules/mavlink/mavlink'...
Cloning into '/home/jaeyoung/vg/vg_ws/build/px4_sim/px4-src/src/px4-firmware/src/modules/microdds_client/Micro-XRCE-DDS-Client'...
Submodule 'models/FlightGear-Rascal' (https://github.com/ThunderFly-aerospace/FlightGear-Rascal.git) registered for path 'Tools/simulation/flightgear/flightgear_bridge/models/Rascal'
Submodule 'models/FlightGear-TF-G1' (https://github.com/ThunderFly-aerospace/FlightGear-TF-G1.git) registered for path 'Tools/simulation/flightgear/flightgear_bridge/models/TF-G1'
Submodule 'models/FlightGear-TF-G2' (https://github.com/ThunderFly-aerospace/FlightGear-TF-G2.git) registered for path 'Tools/simulation/flightgear/flightgear_bridge/models/TF-G2'
Submodule 'models/FlightGear-TF-R1' (https://github.com/ThunderFly-aerospace/FlightGear-TF-R1.git) registered for path 'Tools/simulation/flightgear/flightgear_bridge/models/TF-R1'
Cloning into '/home/jaeyoung/vg/vg_ws/build/px4_sim/px4-src/src/px4-firmware/Tools/simulation/flightgear/flightgear_bridge/models/Rascal'...
Cloning into '/home/jaeyoung/vg/vg_ws/build/px4_sim/px4-src/src/px4-firmware/Tools/simulation/flightgear/flightgear_bridge/models/TF-G1'...
Cloning into '/home/jaeyoung/vg/vg_ws/build/px4_sim/px4-src/src/px4-firmware/Tools/simulation/flightgear/flightgear_bridge/models/TF-G2'...
Cloning into '/home/jaeyoung/vg/vg_ws/build/px4_sim/px4-src/src/px4-firmware/Tools/simulation/flightgear/flightgear_bridge/models/TF-R1'...
Submodule 'external/OpticalFlow' (https://github.com/PX4/OpticalFlow.git) registered for path 'Tools/simulation/gazebo/sitl_gazebo/external/OpticalFlow'
Cloning into '/home/jaeyoung/vg/vg_ws/build/px4_sim/px4-src/src/px4-firmware/Tools/simulation/gazebo/sitl_gazebo/external/OpticalFlow'...
Submodule 'external/klt_feature_tracker' (https://github.com/ethz-ait/klt_feature_tracker.git) registered for path 'Tools/simulation/gazebo/sitl_gazebo/external/OpticalFlow/external/klt_feature_tracker'
Cloning into '/home/jaeyoung/vg/vg_ws/build/px4_sim/px4-src/src/px4-firmware/Tools/simulation/gazebo/sitl_gazebo/external/OpticalFlow/external/klt_feature_tracker'...
Submodule 'jMAVlib' (https://github.com/PX4/jMAVlib.git) registered for path 'Tools/simulation/jmavsim/jMAVSim/jMAVlib'
Cloning into '/home/jaeyoung/vg/vg_ws/build/px4_sim/px4-src/src/px4-firmware/Tools/simulation/jmavsim/jMAVSim/jMAVlib'...
Submodule 'models/ATI-Resolution' (https://github.com/FGMEMBERS/ATI-Resolution.git) registered for path 'Tools/simulation/jsbsim/jsbsim_bridge/models/ATI-Resolution'
Submodule 'models/Rascal' (https://github.com/Auterion/FlightGear-Rascal.git) registered for path 'Tools/simulation/jsbsim/jsbsim_bridge/models/Rascal'
Cloning into '/home/jaeyoung/vg/vg_ws/build/px4_sim/px4-src/src/px4-firmware/Tools/simulation/jsbsim/jsbsim_bridge/models/ATI-Resolution'...
Cloning into '/home/jaeyoung/vg/vg_ws/build/px4_sim/px4-src/src/px4-firmware/Tools/simulation/jsbsim/jsbsim_bridge/models/Rascal'...
Submodule 'dsdl' (https://github.com/dronecan/DSDL) registered for path 'src/drivers/uavcan/libuavcan/dsdl'
Submodule 'libuavcan/dsdl_compiler/pyuavcan' (https://github.com/dronecan/pydronecan) registered for path 'src/drivers/uavcan/libuavcan/libuavcan/dsdl_compiler/pyuavcan'
Cloning into '/home/jaeyoung/vg/vg_ws/build/px4_sim/px4-src/src/px4-firmware/src/drivers/uavcan/libuavcan/dsdl'...
Cloning into '/home/jaeyoung/vg/vg_ws/build/px4_sim/px4-src/src/px4-firmware/src/drivers/uavcan/libuavcan/libuavcan/dsdl_compiler/pyuavcan'...
Submodule 'libs/cpp/parse/nlohmann_json' (https://github.com/ArthurSonzogni/nlohmann_json_cmake_fetchcontent.git) registered for path 'src/lib/events/libevents/libs/cpp/parse/nlohmann_json'
Cloning into '/home/jaeyoung/vg/vg_ws/build/px4_sim/px4-src/src/px4-firmware/src/lib/events/libevents/libs/cpp/parse/nlohmann_json'...
Submodule 'pymavlink' (https://github.com/ardupilot/pymavlink.git) registered for path 'src/modules/mavlink/mavlink/pymavlink'
Cloning into '/home/jaeyoung/vg/vg_ws/build/px4_sim/px4-src/src/px4-firmware/src/modules/mavlink/mavlink/pymavlink'...
HEAD is now at edc531913d Bring over gz vehicles and fix warns.
make[3]: warning: -j0 forced in submake: resetting jobserver mode.
CMake Deprecation Warning at CMakeLists.txt:1 (cmake_minimum_required):
  Compatibility with CMake < 2.8.12 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.

make[3]: warning: -j0 forced in submake: resetting jobserver mode.
gmake[6]: *** [msg/CMakeFiles/uorb_headers.dir/build.make:441: uORB/topics/action_request.h] Error 1
gmake[5]: *** [CMakeFiles/Makefile2:5371: msg/CMakeFiles/uorb_headers.dir/all] Error 2
gmake[5]: *** Waiting for unfinished jobs....
gmake[4]: *** [Makefile:156: all] Error 2
make[3]: *** [Makefile:227: px4_sitl_default] Error 2
gmake[2]: *** [CMakeFiles/px4-firmware.dir/build.make:86: px4-src/src/px4-firmware-stamp/px4-firmware-build] Error 2
gmake[1]: *** [CMakeFiles/Makefile2:137: CMakeFiles/px4-firmware.dir/all] Error 2
gmake: *** [Makefile:146: all] Error 2
---
Failed   <<< px4_sim [4min 33s, exited with code 2]

Summary: 28 packages finished [17min 58s]
  1 package failed: px4_sim
  2 packages had stderr output: gz-sim7 px4_sim

Didn't identify exactly what was missing from the previous colcon build, but running the setup script from PX4 (https://github.com/PX4/PX4-Autopilot/blob/main/Tools/setup/ubuntu.sh) seems to install additional dependencies that are missing

Unable to run the launchfile, as it results in a error
$ ros2 launch px4_sim x500_launch.py
[INFO] [launch]: All log files can be found below /home/jaeyoung/.ros/log/2023-01-14-15-27-01-715220-jaeyoung-ThinkPad-X1-Carbon-Gen-10-83776
[INFO] [launch]: Default logging verbosity is set to INFO
using rootfs  /tmp/tmp1cmsk87v
seeding rootfs at /tmp/tmp1cmsk87v from /home/jaeyoung/vg/vg_ws/install/px4_sim/share/px4_sim
[INFO] [ruby $(which gz) sim-1]: process started with pid [83778]
[INFO] [px4-2]: process started with pid [83780]
[INFO] [QGroundControl.AppImage-3]: process started with pid [83783]
[INFO] [micro_ros_agent-4]: process started with pid [83786]
[ERROR] [QGroundControl.AppImage-3]: process has died [pid 83783, exit code 1, cmd 'QGroundControl.AppImage'].
[QGroundControl.AppImage-3] dlopen(): error loading libfuse.so.2
[QGroundControl.AppImage-3]
[QGroundControl.AppImage-3] AppImages require FUSE to run.
[QGroundControl.AppImage-3] You might still be able to extract the contents of this AppImage
[QGroundControl.AppImage-3] if you run it with the --appimage-extract option.
[QGroundControl.AppImage-3] See https://github.com/AppImage/AppImageKit/wiki/FUSE
[QGroundControl.AppImage-3] for more information
[px4-2] INFO  [px4] instance: 0
[px4-2]
[px4-2] ______  __   __    ___
[px4-2] | ___ \ \ \ / /   /   |
[px4-2] | |_/ /  \ V /   / /| |
[px4-2] |  __/   /   \  / /_| |
[px4-2] | |     / /^\ \ \___  |
[px4-2] \_|     \/   \/     |_/
[px4-2]
[px4-2] px4 starting.
[px4-2]
[px4-2] INFO  [px4] startup script: /bin/sh /home/jaeyoung/vg/vg_ws/install/px4_sim/share/px4_sim/etc/init.d-posix/rcS 0
[px4-2] INFO  [init] found model autostart file as SYS_AUTOSTART=4001
[micro_ros_agent-4] [1673706423.771411] info     | UDPv4AgentLinux.cpp | init                     | running...             | port: 8888
[micro_ros_agent-4] [1673706423.771543] info     | Root.cpp           | set_verbose_level        | logger setup           | verbose_level: 4
[px4-2] INFO  [param] selected parameter default file parameters.bson
[px4-2] INFO  [param] selected parameter backup file parameters_backup.bson
[px4-2]   SYS_AUTOCONFIG: curr: 0 -> new: 1
[px4-2]   SYS_AUTOSTART: curr: 0 -> new: 4001
[px4-2]   CAL_ACC0_ID: curr: 0 -> new: 1310988
[px4-2]   CAL_GYRO0_ID: curr: 0 -> new: 1310988
[px4-2]   CAL_ACC1_ID: curr: 0 -> new: 1310996
[ruby $(which gz) sim-1] I cannot find any available 'gz' command:
[ruby $(which gz) sim-1] 	* Did you install any Gazebo library?
[ruby $(which gz) sim-1] 	* Did you set the GZ_CONFIG_PATH environment variable?
[ruby $(which gz) sim-1] 	    E.g.: export GZ_CONFIG_PATH=$HOME/local/share/gz
[px4-2]   CAL_GYRO1_ID: curr: 0 -> new: 1310996
[ERROR] [ruby $(which gz) sim-1]: process has died [pid 83778, exit code 255, cmd 'ruby $(which gz) sim  -r -v 4 /home/jaeyoung/vg/vg_ws/install/px4_sim/share/px4_sim/worlds/empty_px4_world.sdf --force-version 7'].
[px4-2]   CAL_ACC2_ID: curr: 0 -> new: 1311004
[px4-2]   CAL_GYRO2_ID: curr: 0 -> new: 1311004
[px4-2]   CAL_MAG0_ID: curr: 0 -> new: 197388
[px4-2]   CAL_MAG0_PRIO: curr: -1 -> new: 50
[px4-2]   CAL_MAG1_ID: curr: 0 -> new: 197644
[px4-2]   CAL_MAG1_PRIO: curr: -1 -> new: 50
[px4-2] * SENS_BOARD_X_OFF: curr: 0.0000 -> new: 0.0000
[px4-2] * SENS_DPRES_OFF: curr: 0.0000 -> new: 0.0010
[px4-2] INFO  [dataman] data manager file './dataman' size is 7866640 bytes
[px4-2] INFO  [init] gazebo already running world:
[px4-2] WARN  [init] PX4_GZ_MODEL_NAME or PX4_GZ_MODEL not set using PX4_SIM_MODEL.
[px4-2] INFO  [gz_bridge] world: -i, model name: x500, simulation model: x500
[px4-2] ERROR [gz_bridge] Service call timed out
[px4-2] ERROR [gz_bridge] Task start failed (-1)
[px4-2] ERROR [init] gz_bridge failed to start
[px4-2] ERROR [px4] Startup script returned with return value: 256
[ERROR] [px4-2]: process has died [pid 83780, exit code 255, cmd 'px4 /tmp/tmp1cmsk87v/ROMFS/px4fmu_common -s /home/jaeyoung/vg/vg_ws/install/px4_sim/share/px4_sim/etc/init.d-posix/rcS -i id0 -d'].
^C[WARNING] [launch]: user interrupted with ctrl-c (SIGINT)
[ERROR] [micro_ros_agent-4]: process has died [pid 83786, exit code -2, cmd '/home/jaeyoung/vg/vg_ws/install/micro_ros_agent/lib/micro_ros_agent/micro_ros_agent udp4 -p 8888 --ros-args'].


[ClangImporter] Accept external diagnostic client (NFC)

Add an optional clang::DiagnosticConsumer parameter to ClangImporter::create. This is an NFC change and will be used by lldb to log errors encountered via ClangImporter.
This would ideally use ChainedDiagnosticConsumer to compose ClangDiagnosticConsumer together with the diagnostic consumer injected by the caller (this was the initial implementation), but currently ClangImporter::Implementation assumes that its Instance->getDiagnosticClient() returns a ClangDiagnosticConsumer and blindly downcasts. I would like to break this dependency in a follow up change.
Instead, ClangDiagnosticConsumer now acts as a chained consumer, by allowing the caller to inject another diagnostic consumer (via constructor), and proxying diagnostics events to this injected diagnostic consumer.

@swift-ci smoke test

Why does ClangImporter own the consumer?

The supplier (lldb) won't have any need to extend the lifetime of the consumer beyond what clang does with it
CompilerInstance::createDiagnostics defaults to taking ownership of diagnostic consumers

@swift-ci smoke test Linux

We had an offline discussion about this and came to the conclusion that this is likely unnecessary, because LLDB already owns the swift::DiagnosticsEngine

Yes I think the proper follow up here is asserts and/or audits of the code to find places where the ClangImporter fails to be created while also emitting no diagnostics.


Vendor version of requests/urllib3 has collections Deprecations

Using 3.7.3 and enabling PYTHONWARNINGS=error I found:
File "/private/var/folders/tc/hbwxh76j1hn6gqjd2n2sjn4j9k1glp/T/ptr_venv_83634/lib/python3.7/site-packages/botocore/vendored/requests/packages/urllib3/_collections.py", line 1, in <module>
    from collections import Mapping, MutableMapping
  File "<frozen importlib._bootstrap>", line 1032, in _handle_fromlist
  File "/opt/homebrew/bin/../Cellar/python37/3.7.3_2/bin/../Frameworks/Python.framework/Versions/3.7/lib/python3.7/collections/__init__.py", line 52, in __getattr__
    DeprecationWarning, stacklevel=2)
DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working

Code:
https://github.com/boto/botocore/blob/develop/botocore/vendored/requests/packages/urllib3/_collections.py#L1
Would a PR wrapping this be accepted or are there plans to move to a newer version of requests eventually? I think this is fixed there (didn't double check).

@cooperlees - Thank you for your post. Botocore moved off of using the vendored requests a while ago, it's only kept in for backwards compatibility of certain exceptions.
Currently botocore doesn't make any use of it but there is a warning added for customer that we are taking it away soon. This issue is related to botocore issue https://github.com/boto/botocore/issues/1615

Ahh - My search let me down. Thanks - Will be great to get rid of this so I can have my CI run looking for deprecation warnings moving forward!


CPS allegedly incompatible with Oni's Various Options

Got this comment on CPS steam page:

After testing my 600+ mod list I've come to the conclusion that if you want to run this and Oni's Various Options mod, you should go into that mods ini and turn off the option to always get the advanced training screen.
It brings up the default level up choices somehow, so you have to pay points for the third row of abilities even if they are a classes row. But only if clicked from the armory screen, leveling from the mission return screen or the training center itself has the expected behavior.

Mod in question.
This needs to be confirmed, and if the problem is really there, Various Options needs to be either marked as incompatible, or, preferably, the bool flag to disable that feature in Various Options needs to be set by CPS through config and/or at runtime, or some other way should be used to prevent VO from messing with the promotion screen while CPS is active.

I couldn't actually replicate any issues while testing with both mods active, but I've inspected VO's code, and I can definitely see how it can be disruptive to CPS. Namely, it basically does the same thing as ancient Train From Armoury, which simply replaces the old promotion screen with the training center one, completely ignoring any improvements done by NPSBD / CPS.
As such, I feel it necessary to make CPS nuke that part of VO's functionality, which will be accomplished both through config and by killing the UISL responsible.


Implement offline processing for CLAPs

adapting VST3 IComponent::setIoMode and CLAP extension clap.render,
see https://github.com/free-audio/clap-wrapper/issues/12

I am confused regarding the difference between  IComponent::setIoMode() and IAudioComponent::setupProcessing(). The documentation is - as usual - very thin.


Fix broken edit link

Fixed the link for "Edit this page" that previously led to a 404 page

Impactful small PR @gvzdv, thank you very much for your contribution!


[Feat]: Creating Site Map Page

Is there an existing issue for this?

[X] I have searched the existing issues

Feature Description
This issue proposes the creation of a site map page for the project. A site map is a visual representation of the website's structure, making it easier for users to navigate and find the information they need. It will act as a centralized hub, providing a clear overview of all the available pages and their relationships.
Use Case

User Navigation: The site map will serve as a valuable tool for users to quickly locate specific pages or sections within the website.
Search Engine Optimization (SEO): A well-structured site map can improve the website's visibility in search engine results by providing a clear path for search engines to crawl and index content.
Accessibility: The site map will enhance accessibility for users with disabilities, as it offers a visual representation of the website's structure.

Benefits

Improved User Experience: A site map enhances user experience by making it easier for users to find their desired information.
Better Search Engine Rankings: A well-optimized site map can boost the website's search engine rankings.
Enhanced Accessibility: The site map improves accessibility for users with disabilities.
Clearer Website Structure: The site map provides a clear visual representation of the website's structure, making it easier to understand and maintain.

Priority
High
Agreements

[X] I agree to follow this project's Code of Conduct
[X] I'm a GSSoC contributor
[X] I'm a Hacktoberfest contributor
[X] I want to work on this issue
[X] I'm willing to provide further clarification or assistance if needed.

@Tejashri-Taral  can you assign this issue to me with labels "gssoc-ext" with levels and "hacktoberfest-accepted";

@Tejashri-Taral please review this Issue.

Tomorrow will be last day do it fast so that your score reflect on leaderboard

sorry mam for the delay, i am about to raise the PR


DBAAS1-85: Database Details Backups Tab

Preview

Description

Adds UI and functionality to the database backups tab
Adds a mock for /databases/:engine/instances/:databaseId/backups

Todo

[x] Restore a backup functionality
[x] Write tests

How to test

Go to the backups tab for a Database (/databases/3/backups for example)
Ensure you see 7 backups
Check copy for spelling
Ensure you can restore a backup (this is mocked but the flow works as if it was prod)
Check the restore from backup confirmation modal for functionality, spelling, and style

Looks good, 2 small things that I saw in DBaaS D04 that we might want:

The "Restore" column has a title in the designs called "Actions"
Date Created should have two arrows pointing opposite directions for sorting


associated function was supposed to return data with lifetime '1 but it is returning data with lifetime '2

Hi.
After adding the code below.
impl std::convert::From<std::net::AddrParseError> for Error {
    fn from(err: std::net::AddrParseError) -> Self {
        Error::Internal(err.to_string())
    }
}

I got these bunch of errors.
error: lifetime may not live long enough
 --> src/health/entities.rs:3:17
  |
3 | #[derive(Debug, SimpleObject)]
  |                 -^^^^^^^^^^^
  |                 |
  |                 let's call the lifetime of this reference `'2`
  |                 let's call the lifetime of this reference `'1`
  |                 associated function was supposed to return data with lifetime `'1` but it is returning data with lifetime `'2`
  |
  = note: this error originates in the derive macro `SimpleObject` (in Nightly builds, run with -Z macro-backtrace for more info)

error: lifetime may not live long enough
 --> src/health/entities.rs:3:17
  |
3 | #[derive(Debug, SimpleObject)]
  |                 -^^^^^^^^^^^
  |                 |
  |                 let's call the lifetime of this reference `'1`
  |                 let's call the lifetime of this reference `'2`
  |                 associated function was supposed to return data with lifetime `'2` but it is returning data with lifetime `'1`
  |
  = note: this error originates in the derive macro `SimpleObject` (in Nightly builds, run with -Z macro-backtrace for more info)

The error disappears, if I remove the newly added code.
axum = "0.5.13"
tokio = { version = "1.20.0", features = ["macros", "rt-multi-thread"] }

# GraphQL
async-graphql = { version = "4.0.5", features = ["uuid", "chrono"] }
async-graphql-axum = "4.0.5"

Solved with cargo clean. I suspect the root cause is Rust incremental build.

Even after cleaning it keeps happening. I noticed that after upgrading to Rust 1.62.0

Just for the record, rust 1.62.1 claims to have fixed this. tracking issue


Added pig-latin exercise

I've created some tests using the sample data at https://github.com/exercism/x-common/blob/master/exercises/pig-latin/canonical-data.json and have added an example solution.

Thanks so much, @lmccombes! @haus would you have a moment to take a look at this?

@kytrinyx surely

@lmccombes Thanks so much! I left a couple of comments, and then I think this should be good to go.

I think the edits you suggested make sense, I've added them in a new commit.

Looks great! Thanks for the PR @lmccombes


feat: replica attachments creation to respect pod affinity / anti-affinity [ETA 02/25/2022]

Is your feature request related to a problem?/Why is this needed

Ideally, replica AzVolumeAttachments should respect pod affinity / anti-affinity specified in its associated pod spec.
However, unlike node affinity / selector, pod topology can easily shift and vary, which would mean the node that satisfied pod affinity / anti-affinity at the time of replica attachment creation may no longer meet the requirement at the time of failover as new pods get placed on to that node or as existing ones get deleted from the node
Also, if we only consider the current pod topology to create the replica attachments, we may also end up creating two replica AzVolumeAttachments that hold pod anti-affinity to each other on the same node, in which case only one will be able to successfully fail over to that node.
This might mean that we have to opportunistically migrate existing replicas upon every creation of a pod, for which we need to further explore the trade-offs and the possible performance gains and hit this change may result in.
This topic needs further discussion and requires us to come up with a good strategy for support.

Describe the solution you'd like in detail

Describe alternatives you've considered

Additional context

Closing issue with https://github.com/abhisheksinghbaghel/azuredisk-csi-driver/pull/380 merged