fps of Pelee on TX1

At first, thank you for the good work.
Including the pre and post processings, I got 14 fps detection rate on Nvidia TX1 board. I didn't utilize tensorRT engine. Pretty good results but still want to get your comments on it. Is it reasonable with respect to fps results given for the iphones?

PeleeNet is built in a multi-branch and narrow channel style. TensorRT can combine many small branches of PeleeNet into a large layer and speed up the running time greatly. I do not have TX1 but the result on TX2 is not bad. This version of Pelee (304x304) can run over 71 FPS on TX2+TensorRT3.0. With some small changes to the architecture, it can run over 104 FPS.

@xonobo How to tansfer pepee to tensorRT? Can you share your experience？

@Robert-JunWang  can you tell me how about changes the architecture and it can run over 104fps。

PeleeNet is built in a multi-branch and narrow channel style. TensorRT can combine many small branches of PeleeNet into a large layer and speed up the running time greatly. I do not have TX1 but the result on TX2 is not bad. This version of Pelee (304x304) can run over 71 FPS on TX2+TensorRT3.0. With some small changes to the architecture, it can run over 104 FPS.

PeleeNet is built in a multi-branch and narrow channel style. TensorRT can combine many small branches of PeleeNet into a large layer and speed up the running time greatly. I do not have TX1 but the result on TX2 is not bad. This version of Pelee (304x304) can run over 71 FPS on TX2+TensorRT3.0. With some small changes to the architecture, it can run over 104 FPS.

It is so cool!!

@Robert-JunWang Hi
thanks for your work
I only got 48fps on TX2 + TensorRT3.0.4,it is slower than mobileNet-SSD(54fps ,group conv).
you can run 70+fps,can you share you experience?
And can you tell me how to changes the architecture to get over 104fps.
Thanks

I did not do any specific processing and just converted the merged Caffe model to TensorRT engine file. This speed is running FP32, The speed of the FP16 model is over 100+ PFS.  I am surprised to know that you can run mobilenet+ssd over 54FPS on TensorRT3 with grouped conv. In my experiment, TensorRT3.0 has a very bad performance for grouped conv. It even much slower than NVCaffe running on CPU. The performance of grouped conv is improved greatly on TensorRT4.  MobileNet+SSD runs at the similar speed to Pelee on FP32 mode on TensorRT4. However,  MobileNet cannot benefit from FP16 inference on TX2. The model runs on FP16 mode is almost the same as the one on FP32 mode.

I did not do any specific processing and just converted the merged Caffe model to TensorRT engine file. This speed is running FP32, The speed of the FP16 model is over 100+ PFS. I am surprised to know that you can run mobilenet+ssd over 54FPS on TensorRT3 with grouped conv. In my experiment, TensorRT3.0 has a very bad performance for grouped conv. It even much slower than NVCaffe running on CPU. The performance of grouped conv is improved greatly on TensorRT4. MobileNet+SSD runs at the similar speed to Pelee on FP32 mode on TensorRT4. However, MobileNet cannot benefit from FP16 inference on TX2. The model runs on FP16 mode is almost the same as the one on FP32 mode.

Grouped conv has been optimized in cudnn7,the inference time of group conv depends on cudnn libraries.I think ,in the same cudnn version,whether use tensorRT3 or tensorRT4,the time cost is the same.
Yes,you are right.MobileNet cannot benefit from FP16 inference on TX2. The model runs on FP16 mode is almost the same as the one on FP32 mode.MobileNet with Fp32 runs 50fps,FP16 runs 54fps,in my TX2.
Thanks for your reply,I will retry it

I guess you did not use jetson_clocks.sh to maximum GPU and CPU clockspeeds. After setting, both Pelee and SSD+MobileNet run over 70 FPS on FP32 mode. Pelee runs slightly faster than SSD+MobileNet on FP32 mode and much faster on FP16 mode on my TX2 (TensorRT4).

@xonobo I uploaded my TensorRT code for Pelee here: https://github.com/ginn24/Pelee-TensorRT


Update mavlink

@joaoantoniocardoso tu be sure did you test under QGC to see if the string communication is working fine ?

@joaoantoniocardoso tu be sure did you test under QGC to see if the string communication is working fine ?

Yeah, the following was tested:

multiple cameras
parameters


Document about config

[ ] I have marked all applicable categories:

[ ] exception-raising bug
[ ] RL algorithm bug
[ ] system worker bug
[ ] system utils bug
[ ] code design/refactor
[x] documentation request
[ ] new feature request

[x] I have visited the readme and doc
[x] I have searched through the issue tracker and pr tracker
[x] I have mentioned version numbers, operating system and environment, where applicable:

version: v0.4.8

This is my first time using DI-engine. I run mario example in docker. Util 8 hours later it still running. It seems that BaseLearner set iterator times is int(10^9).
I try to change train_iterations value but in total_config.py and formatted_total_config.py it still keep<PHONE_NUMBER> value :
    learner = BaseLearner(cfg.policy.learn.learner, policy.learn_mode, tb_logger, exp_name=cfg.exp_name)
    learner.config['train_iterations'] = 1000
    learner._cfg['train_iterations'] = 1000

Can you give me some example about config module?

For the overview of the config in DI-engine, you can refer to this doc.
For the termination of the entire program, you can refer to this code line.

So I can not change config to terminate the program. It's strange that config can not be config.
And I didn't find 'render_mode' setting in config. Is it di-engine suport? Jupyter report warning that render mode is None then output video is empty.

The problem you said is indeed a throublesome thing. There are many ways for terminating the training program, such as max env step, max train iter, stop value or even training without clearly termination. Therefore, we don't set related config field and leave this in the main function of the entry file. If you have some customed demands, you need to write your own entry file like the default case listed in ding/entry directory.
For the problem of render_mode, DI-engine doesn't support this argument and add another enable_save_replay method to save replay videos, you can have a try for this method.

enable_save_replay is called.
The video is not generated because libx264 is not find. In docker, ffmpeg is configure with --enable-libopenh264. It seem that ffmpeg not work correctly. So I recompile it with --enable-libx264 and then it work.

enable_save_replay is called.
The video is not generated because libx264 is not find. In docker, ffmpeg is configure with --enable-libopenh264. It seem that ffmpeg not work correctly. So I recompile it with --enable-libx264 and then it work.

Thanks for your feedback! We will add this problem into the FAQ part of doc.

Another question:
How to use framework.task? If task run, how to terminate it in my max_train_iter? If I run mario game and want to visualize some info, what should I do?
Can you give me a guide?


portmod: 2.0_beta9 -> 2.0.3

Motivation for this change
compilation failed (https://gitlab.com/portmod/portmod/-/issues/301) + just updating to latest stable version
Things done
Tested the installation and use of some mod

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[x] Tested execution of all binary files (usually in ./result/bin/)
21.11 Release Notes (or backporting 21.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

Note
target staging due to a fix to "file" to fix "patool" test (and expected functionality), a depency of portmod

Why is this targeting staging? This can go straight to master.

It's due to patool failing to compile with a fix for file that was merged into staging a few days ago


Added FEG-sandhausen.de Domain

@Whity07 First stage of verification passed, official domain is feg-sandhausen.de as far as I verified. This is just an informational note. Pull request is still in the review. I appreciate your patience while waiting for the final decision.

Perfect! Thx

@Whity07 Thank you for your patience while waiting for a review and processing your request. Pull request merged.


Fix for Unhandled TDS_ORDERBY

Test and proposed fix for DataAction/AdoNetCore.AseClient#104

To properly handle TDS_ORDERBY, you should implement something like OrderByToken : IToken and register it in the TokenParser. Have a look at some of the existing token implementations to get an idea of what's needed.
Meanwhile I'm going to rectify the gaping issue with the catch-all token's length calculator... Your current change wouldn't be necessary if it worked correctly 😜

Thanks @senseibaka.  I did look at doing that but as I don't need the OrderBy information (and can't really see how to expose that info in the driver anyhow... ), I'm happy to withdraw this PR in favour of your fix for #107?
Would there be any chance of an early NuGet release for the fix for #107 - as we are having to use a custom build of the driver at the moment?

Yeah, I'm not sure how it'd be exposed by the driver either... It might tie in to some higher-level ORM thing.
In terms of getting an early release, I've actually just gone on holiday for a few weeks, but @c-j-hughes might be able to step in?

Withdrawing this in favour of #108


Pop/thump when signal starts or stops

Hello, I am getting a pretty loud spike when the DSP starts or stops. Below is a screenshot of the output recorded with audacity. First spike is when the input is started and the second is a bit more than 6 seconds after it stopped. It does this every time it receives or loses a signal. I tested with no gain, delay or filters, and even with the DSP disabled.

Can you clarify "start" and "stop"? Is this when you send commands to the DSP via the serial connection and/or Telnet? Is it when you connect and disconnect an audio cable? Or is it when the actual analog signal to the board starts and stops? Also, are you using one of the example configs from my GitHub project or your own filters? Let me know.

When I play a file or pause/stop it, or a song ends and the next starts it will spike. It does this with any configuration. Any one of the examples or a custom one I set up with no gain, delay or filters. I also tried disabling the DSP using telnet with the d command. On the screenshot the first spike is when I played the file and the second is a little more than 6 seconds after I paused it. The level of the signal does not seem to make any difference. In the screenshot the file is barely audible as I kept lowering the volume out from a separate PC to see if it changed. I have tried several sources to try and isolate the spike with the same issue on all of them (receiver pre-out from HDMI source, PC line out, phone). Different power sources. It will also spike when the board it either powered on (from on board switch or plugging in) or reset. If I physically remove the DSP board and jumper the 2 3.5mm plugs together the spike is gone.
I will mess with it some more tonight to see if I can isolate the problem any more. Any recommendations appreciated.

It is a lot like a thump from a amp powering on that does not have a built in delay.

Hmmm... This ESP32 board is actually pretty sophisticated and includes the ability to sense an active signal as well as perform automatic gain control. I am wondering if it is associated with one of these settings and that your sources are quieter than mine which is exposing the issue.  If so, I may be able to defeat it.
I'll try to reproduce the issue on my end and get back to you.

One other thing I noticed is that when the spike happens the green led behind the WROVER module blinks. Both when a signal is acquired and when lost. It does not blink on power on.

Also the power on spike is much less then the signal acquire/loss spike, and not really a big deal.
Is there a way I could load the original sketch via a older board manager or something.

One other thing I noticed is that the green led behind the WROVER module blinks when the spike occurs. It does not blink on power up. The spike on power up is much less and not really a problem.

Is there a older board manager or something that will work with the original sketch?

Ah! That's good information as the green LED means that the audio is likely clipping at either the input or the output stage. You can check this by monitoring the clipping count. The clipping count is displayed for each channel when you type the 'i' command at the Serial or Telnet interface. Check the counts before the thump, then check it again after. See whether the input or output clipping goes up.

FYI... the sound you are hearing on power up/reset is on my end as well and is something I have been trying to minimize. This may be inherent to the way the ES8388 chip initializes prior to the Arduino environment starting up. So that's somewhat of a know issue. However, this other problem is very strange. So just to make sure - you are saying this happens when there is no signal between songs? In other words, you play two tracks back-to-back and you hear this "pop" during the silence between tracks?

I have not tried back to back with a playlist. Just one song at a time manually with several seconds in between as I crossed the room to select another. That was when I first noticed it after one track ended. I originally suspected the pop was due to the headphone jack on my phone, but then it was doing it when I was not handling the phone. I will try a playlist in a bit, you are probably right that it won't do it. It takes 5 or 6 seconds after play stops. Then I will compare the before and after clipping information as well.
The power up spike is easily remedied with a speaker delay relay. Or just leave it on.

Back to back play is fine. Only pops at the beginning and end. Tried several different cables and sources. Every source starts with 0 clipping counts. Once play starts input and output clipping numbers jump (primarily on input 0), but only when an output is connected. If I leave the output disconnected all clipping stays at 0. I will post a few telnet samples below;
PC before play;
I-DSP: Channel A: Left
I-DSP:   Input 0 = 1
I-DSP:   Input 1 = 0
I-DSP:   Gain = 0.000000 dB
I-DSP:   Scaling factor = 1.000000
I-DSP:   User delay = 100 millis
I-DSP:   Delay samples = 4410
I-DSP:   Input clipping count = 0
I-DSP:   Output clipping count = 0
I-DSP:   Filter count = 0
I-DSP: Channel B: Right
I-DSP:   Input 0 = 0
I-DSP:   Input 1 = 1
I-DSP:   Gain = 0.000000 dB
I-DSP:   Scaling factor = 1.000000
I-DSP:   User delay = 100 millis
I-DSP:   Delay samples = 4410
I-DSP:   Input clipping count = 0
I-DSP:   Output clipping count = 0
I-DSP:   Filter count = 0
After starting play;
I-DSP: Channel A: Left
I-DSP:   Input 0 = 1
I-DSP:   Input 1 = 0
I-DSP:   Gain = 0.000000 dB
I-DSP:   Scaling factor = 1.000000
I-DSP:   User delay = 100 millis
I-DSP:   Delay samples = 4410
I-DSP:   Input clipping count = 935
I-DSP:   Output clipping count = 935
I-DSP:   Filter count = 0
I-DSP: Channel B: Right
I-DSP:   Input 0 = 0
I-DSP:   Input 1 = 1
I-DSP:   Gain = 0.000000 dB
I-DSP:   Scaling factor = 1.000000
I-DSP:   User delay = 100 millis
I-DSP:   Delay samples = 4410
I-DSP:   Input clipping count = 0
I-DSP:   Output clipping count = 0
I-DSP:   Filter count = 0
After play finishes;
I-DSP: Channel A: Left
I-DSP:   Input 0 = 1
I-DSP:   Input 1 = 0
I-DSP:   Gain = 0.000000 dB
I-DSP:   Scaling factor = 1.000000
I-DSP:   User delay = 100 millis
I-DSP:   Delay samples = 4410
I-DSP:   Input clipping count = 1669
I-DSP:   Output clipping count = 935
I-DSP:   Filter count = 0
I-DSP: Channel B: Right
I-DSP:   Input 0 = 0
I-DSP:   Input 1 = 1
I-DSP:   Gain = 0.000000 dB
I-DSP:   Scaling factor = 1.000000
I-DSP:   User delay = 100 millis
I-DSP:   Delay samples = 4410
I-DSP:   Input clipping count = 0
I-DSP:   Output clipping count = 0
I-DSP:   Filter count = 0
Phone after play, different cable;
I-DSP: Channel A: Left
I-DSP:   Input 0 = 1
I-DSP:   Input 1 = 0
I-DSP:   Gain = 0.000000 dB
I-DSP:   Scaling factor = 1.000000
I-DSP:   User delay = 100 millis
I-DSP:   Delay samples = 4410
I-DSP:   Input clipping count = 4169
I-DSP:   Output clipping count = 2507
I-DSP:   Filter count = 0
I-DSP: Channel B: Right
I-DSP:   Input 0 = 0
I-DSP:   Input 1 = 1
I-DSP:   Gain = 0.000000 dB
I-DSP:   Scaling factor = 1.000000
I-DSP:   User delay = 100 millis
I-DSP:   Delay samples = 4410
I-DSP:   Input clipping count = 8
I-DSP:   Output clipping count = 0
I-DSP:   Filter count = 0
I wonder if there is a problem with my board.

Definitely clipping. Might have something to do with the delay setting though odd that it shows clipping at input. Looking at it now.

Can you check to see if you get clipping when using the 's' (stop)  and 'r' (run) commands alternating back and forth? Also, same for 'e' (enable) and 'd' (disable). Very, very odd.

I tested with your delay settings and no clipping on my end.  If you lower the output level from your sources, does that reduce the clipping numbers?

I've upgraded to the most recent ESP32 board library (2.0.13) and not seeing this issue, so I am stumped. As I mentioned, you will definitely get noise during resets and shutdowns, as well as when you connect and disconnect an audio cable from the board. You will also get clipping when playing a source that is too loud at the input or amplified too much in the DSP, but I've never had clipping when the input is silent from either of my two boards.
Just to be clear, are you connecting and disconnecting cables from either the board or the audio source when you hear the thump? That would definitely cause clipping.

One more thing. Are you saying the clipping counts don't go up if the output is disconnected but they do if the output is connected?

I did several tests to try and narrow the variables. The board was restarted between all connection changes. It only pops when a signal is acquired or lost at the left input. The DSP can be started and stopped while it has a signal with no issues. The clipping numbers only change when it pops, and the led only lights when it pops. The right input does not do this.
Input signal is output from a PC at 35% volume. No output cable attached to board. Board input connected to left only. I get a pop at signal start and another 6 seconds after signal loss.
I think that there is a problem with the left input on the board.
I can work with this though as I plan on using this for a BOSS subwoofer setup and I will only have one input channel. Using the right input I can use the DSP to split that signal to both outputs with each output signal having its own DSP settings.
Loaded this configuration to the board and no more pops!
I-DSP:   Sampling rate = 44100
I-DSP:   Sampling bits = 16
I-DSP:   Sampling delay = 4.353742 ms
I-DSP:   Dither = ON
I-DSP: Channel A: BOSS1
I-DSP:   Input 0 = 0
I-DSP:   Input 1 = 1
I-DSP:   Gain = 0.000000 dB
I-DSP:   Scaling factor = 1.000000
I-DSP:   User delay = 0 millis
I-DSP:   Delay samples = 0
I-DSP:   Input clipping count = 0
I-DSP:   Output clipping count = 0
I-DSP:   Filter count = 2
I-DSP:   Filter 1 coeffs = 7.21943416266700e-05 1.44388683253340e-04 7.21943416266700e-05 -1.97558262910536e+00 9.75871406471866e-01 (FLT)
I-DSP:     Low Pass: Frequency=  120.0  Q=7.00000000000000e-01  Gain= 0.0
I-DSP:   Filter 2 coeffs = 7.21943416266700e-05 1.44388683253340e-04 7.21943416266700e-05 -1.97558262910536e+00 9.75871406471866e-01 (FLT)
I-DSP:     Low Pass: Frequency=  120.0  Q=7.00000000000000e-01  Gain= 0.0
I-DSP: Channel B: BOSS2
I-DSP:   Input 0 = 0
I-DSP:   Input 1 = 1
I-DSP:   Gain = 0.000000 dB
I-DSP:   Scaling factor = 1.000000
I-DSP:   User delay = 0 millis
I-DSP:   Delay samples = 0
I-DSP:   Input clipping count = 0
I-DSP:   Output clipping count = 0
I-DSP:   Filter count = 2
I-DSP:   Filter 1 coeffs = 7.21943416266700e-05 1.44388683253340e-04 7.21943416266700e-05 -1.97558262910536e+00 9.75871406471866e-01 (FLT)
I-DSP:     Low Pass: Frequency=  120.0  Q=7.00000000000000e-01  Gain= 0.0
I-DSP:   Filter 2 coeffs = 7.21943416266700e-05 1.44388683253340e-04 7.21943416266700e-05 -1.97558262910536e+00 9.75871406471866e-01 (FLT)
I-DSP:     Low Pass: Frequency=  120.0  Q=7.00000000000000e-01  Gain= 0.0
Now to do a bit more testing, but I think the problem is solved. Thanks for helping me work through this problem, and thanks for designing this firmware. This project really has a lot of potential.
One more question. I plan on using this mainly for movies and such. Should the sampling rate be changed to 48000? If so how is that done.

That's really unfortunate about the left channel issue. There is a possibility that there is a setting I am not initializing properly for the onboard ES8388 chip, but without being able to duplicate the issue I don't have any way to solve it. :( If you decide to try this on another ESP32-LyraT board, let me know if you run into the same issue.
Regarding setting the sampling rate to 48000, just change the value in dsp_process.h as follows and rebuild:
#define DSP_SAMPLE_RATE         48000             // The sample rate
That said, with a low pass filter at 120Hz you won't really benefit. In fact, you could probably set it to 16000 and it would sound the same since you won't have any frequencies above 8000Khz (1/2 the Nyquist rate) to filter.

It is strange. Even if the left channel is bypassed in the configuration it will pop if a signal is received or lost on it. It needs to be completely disconnected in the wiring. The 6 second delayed pop after signal loss really seems like something turning off.
Either way I figured out a way to work around the issue and the board is working nicely. I am using it with a little 50w wondom board amp that has a startup and shutdown pop, so I already have a relay board to delay the speaker connection. Therefore the small power up pop from the DSP is not an issue.
Someone on AVS forum said they ordered the lyrat board. If they have the same issue then it may be the firmware, but I would think you would have it as well. The pop is unmissable. Most likely the board I got has something buggy.

One other question. In the examples any filters are listed twice for each one.
{0, DSP_FILTER_HIGH_PASS, 120, 0.7, 0.0 },
{0, DSP_FILTER_HIGH_PASS, 120, 0.7, 0.0 },
{1, DSP_FILTER_HIGH_PASS, 120, 0.7, 0.0 },
{1, DSP_FILTER_HIGH_PASS, 120, 0.7, 0.0 },
Not a problem really. Just curious if it is necessary.

Excellent question!
The reason they are listed twice is that this provides a steeper roll-off cut than using a single filter. Specifically, a single high pass filter provides a 6dB/octave roll-off while two increases it to 12dB/octave. This is called cascading filters to achieve higher orders. You can see this change if you plot the transfer curve (frequency plot) by using the 'p' command in the DSP. When you compare the two plots you'll see the difference.


Terminal: Run Recent Command shows up when there are no terminals

Repro:

Close all terminals
Run the command, 🐛 nothing happens

We should either hide it or implement it when there isn't a terminal.

@Tyriar can i help with this issue?

@SalerSimo sure! Here's a code pointer:
https://github.com/microsoft/vscode/blob/e35499613e27748de549fcc8e8bca831b480affc/src/vs/workbench/contrib/terminalContrib/history/browser/terminal.history.contribution.ts#L141-L152

@Tyriar I opened a PR for this, can you tell me if the code I wrote is fine? I'm not sure if using a sleep function is accepted here, and, if it's not, I think that the only solution for this issue would be hiding the "Run Recent Command" command when there are no open terminals.


Typo on Page - Great than

Please fix the typo where the text says "Great than 0" and should say "Greater than 0".
https://learn.microsoft.com/en-us/azure/azure-monitor/alerts/tutorial-log-alert#configure-alert-logic

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

ID: e63aad7d-7388-788b-2989-0d005f1292f4
Version Independent ID: 019873d5-39bc-4a73-82a2-7d2c1696c187
Content: Tutorial - Create a log query alert for an Azure resource - Azure Monitor
Content Source: articles/azure-monitor/alerts/tutorial-log-alert.md
Service: azure-monitor
Sub-service: alerts
GitHub Login: @bwren
Microsoft Alias: bwren

@merylnstark
Thanks for your feedback! We will investigate and update as appropriate.


BNDInvocation.writeReturnValue(_ value: T) could not find the type(Only in iOS10)

While i using the ObservableArray binding for tableview, there some issue just in ios10(the same code in ios11 is ok).Check out the frame for issue, i found the problem in "ProtocolProxy.swift", and the error is fatal error: Bridging ObjC type BNDNSObjCValueType(rawValue: 105) , the BNDInvocation.writeReturnValue<T>(_ value: T) could not find the type.
Is there someone have the same problem with me ?
Any help?

I know where the problem is - thanks for reporting this. I'll fix it later today.

@scotteg could you give us a tip how to fix it, i want to test some feature on ios10 and it would be great to have a fix locally until new release. thanks!

I've just released 6.4.3 where this should be fixed. CocoaPods release coming in few minutes... Thanks for waiting :)


Lorem ipsum dolor sit amet, consectetur suspendisse.

How to edit Lorem ipsum dolor ... in the home page ?
and the section :
Last news

You need to edit app/Resources/translations/cocorico_home.fr.xliff and app/Resources/translations/cocorico_home.en.xliff


upgrade TypeScript to 5.6

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 98.44%. Comparing base (c3a10cb) to head (0fbaaf0).

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #294   +/-   ##
=======================================
  Coverage   98.44%   98.44%
=======================================
  Files          74       74
  Lines        1547     1547
  Branches      257      257
=======================================
  Hits         1523     1523
  Misses         24       24

Flag
Coverage Δ

98.44% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


[WIP] dvclive docs: add description to pipelines and dvc commands

You may disregard these recommendations if you used the Edit on GitHub button from dvc.org to improve a doc in place.

❗ Please read the guidelines in the Contributing to the Documentation list if you make any substantial changes to the documentation or JS engine.
🐛 Please make sure to mention Fix #issue (if applicable) in the description of the PR. This causes GitHub to close it automatically when the PR is merged.
Please choose to allow us to edit your branch when creating the PR.
Thank you for the contribution - we'll try to review it as soon as possible. 🙏
Closes #2282

Fixed by #2333


Test Atlantis

Plan Error
parsing atlantis.yaml: repo config not allowed to set 'workflow' key: server-side config needs 'allowed_overrides: [workflow]'

Plan Error
parsing atlantis.yaml: yaml: unmarshal errors:
  line 7: field enable not found in type raw.Autoplan

atlantis plan -w test

Plan Error
yaml: unmarshal errors:
  line 7: field enable not found in type raw.Autoplan


Limit to edge type (reply, quote, retweet)

At the moment whether the edges displayed when visualizing users and tweets are of type reply, quote and retweet. When the network is big it could be useful to only see the replies or quotes. Ideally I think users would be able to control which relations are included. Of course someone in Gephi or Cytoscape or some other network visualization tool could do this themselves. But it could be useful to limit the size of the network in memory for large graphs and could also be useful for the HTML/D3 representation.

That is precisely what I was looking for. I was going to ask how the network was built, now it's clear that is currently built with "reply, quote and retweet" relationships.
Related to the type of connection, when I was opening the generated .gefx file in Gephi I see warnings of this type  "Type 'retweet' of the edge 'xxx -> yyyy (id = nnn)' is not recognized. Set to default value." classified as a severe issue. I also see these warnings for 'reply' type.
This is what I see in Gephi while I import the network:

I don't know if this is an important thing to consider or nothing to worry about. Once the file is opened in Gephi there is no option to see the type of relationship. I guess that by using "Sum" as "edge merge strategy" I get in the total number of "reply, quote and retweet" interactions among two users. Once it is clarified I could help completing the documentation or create a specific section for Gephi usage.

Yes, the Gexf file format has different versions and different expectations too, so it should be relatively straight forward for twarc-network to write in whatever Gexf format it expects without warnings.

It wasn't clear to me if  GEXF 1.3 is out yet, and if networkx supports it. But I did notice the same error when importing GEXF, which went away when importing GML instead:
twarc2 network --format gml tweets.jsonl tweets.gml

I noticed that the resulting edge data includes a Type and a type columns. Maybe that's what is causing the GEXF importer difficulty because it wants to use type to indicate whether the edge is directed or not?
In v0.0.7 I've changed the property name to tweet_type which seems to make those errors with GEXF go away. I do notice that there probably needs to be some thought put into what tweet_type should be for nodes when using the different node types: tweets, hashtags and users. But that feels like a different issue?

I meant to say @numeroteca any improvements to the documentation would be welcome!

Done in #6


What constants?

What constants should be exposed by an interoperable Domain Payload interface?

All implementation constants appear to be status constants.
References
https://github.com/auraphp/Aura.Payload
None.
https://github.com/auraphp/Aura.Payload_Interface
PayloadStatus class:
    /** A command/query was accepted for later processing. */
    const ACCEPTED = 'ACCEPTED';

    /** User is authenticated. */
    const AUTHENTICATED = 'AUTHENTICATED';

    /** User is authorized. */
    const AUTHORIZED = 'AUTHORIZED';

    /** A creation command succeeded. */
    const CREATED = 'CREATED';

    /** A deletion command succeeded. */
    const DELETED = 'DELETED';

    /** There was a major error of some sort. */
    const ERROR = 'ERROR';

    /** There was a failure of some sort. */
    const FAILURE = 'FAILURE';

    /** A query successfully returned results. */
    const FOUND = 'FOUND';

    /** A command/query was not accepted for processing. */
    const NOT_ACCEPTED = 'NOT_ACCEPTED';

    /** User is not authenticated. */
    const NOT_AUTHENTICATED = 'NOT_AUTHENTICATED';

    /** User is not authorized. */
    const NOT_AUTHORIZED = 'NOT_AUTHORIZED';

    /** A creation command failed. */
    const NOT_CREATED = 'NOT_CREATED';

    /** A deletion command failed. */
    const NOT_DELETED = 'NOT_DELETED';

    /** A query failed to return results. */
    const NOT_FOUND = 'NOT_FOUND';

    /** An update command failed. */
    const NOT_UPDATED = 'NOT_UPDATED';

    /** User input was not valid. */
    const NOT_VALID = 'NOT_VALID';

    /** A command/query is in-process but not finished. */
    const PROCESSING = 'PROCESSING';

    /** There was a success of some sort (generic). */
    const SUCCESS = 'SUCCESS';

    /** An update command succeeded. */
    const UPDATED = 'UPDATED';

    /** User input was valid. */
    const VALID = 'VALID';

https://github.com/bitExpert/adrenaline/blob/master/src/bitExpert/Adrenaline/Domain/DomainPayload.php
Arbitrary $type.
https://github.com/bitExpert/adroit/blob/master/src/bitExpert/Adroit/Domain/Payload.php
Arbitrary type.
https://github.com/dashifen/domain/tree/master/src/Payload
Typed by class, CRUDEO:

CreatePayload
DeletePayload
EmptyPayload
OtherPayload
ReadPayload
UpdatePayload

https://github.com/equip/adr/blob/master/src/PayloadInterface.php
HTTP-based Status interface:
    const STATUS_CONTINUE = 'Continue';
    const STATUS_SWITCHING_PROTOCOLS = 'Switching Protocols';
    const STATUS_PROCESSING = 'Processing';
    const STATUS_OK = 'OK';
    const STATUS_CREATED = 'Created';
    const STATUS_ACCEPTED = 'Accepted';
    const STATUS_NON_AUTHORITATIVE_INFORMATION = 'Non-Authoritative Information';
    const STATUS_NO_CONTENT = 'No Content';
    const STATUS_RESET_CONTENT = 'Reset Content';
    const STATUS_PARTIAL_CONTENT = 'Partial Content';
    const STATUS_MULTI_STATUS = 'Multi-Status';
    const STATUS_ALREADY_REPORTED = 'Already Reported';
    const STATUS_IM_USED = 'IM Used';
    const STATUS_MULTIPLE_CHOICES = 'Multiple Choices';
    const STATUS_MOVED_PERMANENTLY = 'Moved Permanently';
    const STATUS_FOUND = 'Found';
    const STATUS_SEE_OTHER = 'See Other';
    const STATUS_NOT_MODIFIED = 'Not Modified';
    const STATUS_USE_PROXY = 'Use Proxy';
    const STATUS_TEMPORARY_REDIRECT = 'Temporary Redirect';
    const STATUS_PERMANENT_REDIRECT = 'Permanent Redirect';
    const STATUS_BAD_REQUEST = 'Bad Request';
    const STATUS_UNAUTHORIZED = 'Unauthorized';
    const STATUS_PAYMENT_REQUIRED = 'Payment Required';
    const STATUS_FORBIDDEN = 'Forbidden';
    const STATUS_NOT_FOUND = 'Not Found';
    const STATUS_METHOD_NOT_ALLOWED = 'Method Not Allowed';
    const STATUS_NOT_ACCEPTABLE = 'Not Acceptable';
    const STATUS_PROXY_AUTHENTICATION_REQUIRED = 'Proxy Authentication Required';
    const STATUS_REQUEST_TIMEOUT = 'Request Timeout';
    const STATUS_CONFLICT = 'Conflict';
    const STATUS_GONE = 'Gone';
    const STATUS_LENGTH_REQUIRED = 'Length Required';
    const STATUS_PRECONDITION_FAILED = 'Precondition Failed';
    const STATUS_PAYLOAD_TOO_LARGE = 'Payload Too Large';
    const STATUS_URI_TOO_LONG = 'URI Too Long';
    const STATUS_UNSUPPORTED_MEDIA_TYPE = 'Unsupported Media Type';
    const STATUS_RANGE_NOT_SATISFIABLE = 'Range Not Satisfiable';
    const STATUS_EXPECTATION_FAILED = 'Expectation Failed';
    const STATUS_IM_A_TEAPOT = "I'm a teapot";
    const STATUS_MISDIRECTED_REQUEST = 'Misdirected Request';
    const STATUS_UNPROCESSABLE_ENTITY = 'Unprocessable Entity';
    const STATUS_LOCKED = 'Locked';
    const STATUS_FAILED_DEPENDENCY = 'Failed Dependency';
    const STATUS_UPGRADE_REQUIRED = 'Upgrade Required';
    const STATUS_PRECONDITION_REQUIRED = 'Precondition Required';
    const STATUS_TOO_MANY_REQUESTS = 'Too Many Request';
    const STATUS_REQUEST_HEADER_FIELDS_TOO_LARGE = 'Request Header Fields Too Large';
    const STATUS_UNAVAILABLE_FOR_LEGAL_REASONS = 'Unavailable For Legal Reasons';
    const STATUS_INTERNAL_SERVER_ERROR = 'Internal Server Error';
    const STATUS_NOT_IMPLEMENTED = 'Not Implemented';
    const STATUS_BAD_GATEWAY = 'Bad Gateway';
    const STATUS_SERVICE_UNAVAILABLE = 'Service Unavailable';
    const STATUS_GATEWAY_TIMEOUT = 'Gateway Timeout';
    const STATUS_VERSION_NOT_SUPPORTED = 'HTTP Version Not Supported';
    const STATUS_VARIANT_ALSO_NEGOTIATES = 'Variant Also Negotiates';
    const STATUS_INSUFFICIENT_STORAGE = 'Insufficient Storage';
    const STATUS_LOOP_DETECTED = 'Loop Detected';
    const STATUS_NOT_EXTENDED = 'Not Extended';
    const STATUS_NETWORK_AUTHENTICATION_REQUIRED = 'Network Authentication Required';

https://github.com/geggleto/Payload/blob/master/src/Payload.php
Payload constants:
    const WARNING = "WARNING";
    const ERROR = "ERROR";
    const SUCCESS = "SUCCESS";

https://github.com/JoeBengalen/Payload
Abstract PayloadStatus class:
    /**
     * @var int Action succeeded.
     */
    const SUCCESS = 1;

    /**
     * @var int Requested data found.
     */
    const FOUND = 2;

    /**
     * @var int Requested data not found.
     */
    const NOT_FOUND = 3;

    /**
     * @var int Invalid input.
     */
    const INVALID = 4;

    /**
     * @var int Error during execution.
     */
    const ERROR = 5;

https://github.com/perfect-oblivion/payload
HTTP-based Status interface:
    const STATUS_CONTINUE = 100;                               // Continue
    const STATUS_SWITCHING_PROTOCOLS = 101;                    // Switching Protocols
    const STATUS_PROCESSING = 102;                             // Processing
    const STATUS_OK = 200;                                     // OK
    const STATUS_CREATED = 201;                                // Created
    const STATUS_ACCEPTED = 202;                               // Accepted
    const STATUS_NON_AUTHORITATIVE_INFORMATION = 203;          // Non-Authoritative Information
    const STATUS_NO_CONTENT = 204;                             // No Content
    const STATUS_RESET_CONTENT = 205;                          // Reset Content
    const STATUS_PARTIAL_CONTENT = 206;                        // Partial Content
    const STATUS_MULTI_STATUS = 207;                           // Multi-Status
    const STATUS_ALREADY_REPORTED = 208;                       // Already Reported
    const STATUS_IM_USED = 226;                                // IM Used
    const STATUS_MULTIPLE_CHOICES = 300;                       // Multiple Choices
    const STATUS_MOVED_PERMANENTLY = 301;                      // Moved Permanently
    const STATUS_FOUND = 302;                                  // Found
    const STATUS_SEE_OTHER = 303;                              // See Other
    const STATUS_NOT_MODIFIED = 304;                           // Not Modified
    const STATUS_USE_PROXY = 305;                              // Use Proxy
    const STATUS_TEMPORARY_REDIRECT = 307;                     // Temporary Redirect
    const STATUS_PERMANENT_REDIRECT = 308;                     // Permanent Redirect
    const STATUS_BAD_REQUEST = 400;                            // Bad Request
    const STATUS_UNAUTHORIZED = 401;                           // Unauthorized
    const STATUS_PAYMENT_REQUIRED = 402;                       // Payment Required
    const STATUS_FORBIDDEN = 403;                              // Forbidden
    const STATUS_NOT_FOUND = 404;                              // Not Found
    const STATUS_METHOD_NOT_ALLOWED = 405;                     // Method Not Allowed
    const STATUS_NOT_ACCEPTABLE = 406;                         // Not Acceptable
    const STATUS_PROXY_AUTHENTICATION_REQUIRED = 407;          // Proxy Authentication Required
    const STATUS_REQUEST_TIMEOUT = 408;                        // Request Timeout
    const STATUS_CONFLICT = 409;                               // Conflict
    const STATUS_GONE = 410;                                   // Gone
    const STATUS_LENGTH_REQUIRED = 411;                        // Length Required
    const STATUS_PRECONDITION_FAILED = 412;                    // Precondition Failed
    const STATUS_PAYLOAD_TOO_LARGE = 413;                      // Payload Too Large
    const STATUS_URI_TOO_LONG = 414;                           // URI Too Long
    const STATUS_UNSUPPORTED_MEDIA_TYPE = 415;                 // Unsupported Media Type
    const STATUS_RANGE_NOT_SATISFIABLE = 416;                  // Range Not Satisfiable
    const STATUS_EXPECTATION_FAILED = 417;                     // Expectation Failed
    const STATUS_IM_A_TEAPOT = 418;                            // I'm a teapot
    const STATUS_MISDIRECTED_REQUEST = 421;                    // Misdirected Request
    const STATUS_UNPROCESSABLE_ENTITY = 422;                   // Unprocessable Entity
    const STATUS_LOCKED = 423;                                 // Locked
    const STATUS_FAILED_DEPENDENCY = 424;                      // Failed Dependency
    const STATUS_UPGRADE_REQUIRED = 426;                       // Upgrade Required
    const STATUS_PRECONDITION_REQUIRED = 428;                  // Precondition Required
    const STATUS_TOO_MANY_REQUESTS = 429;                      // Too Many Requests
    const STATUS_REQUEST_HEADER_FIELDS_TOO_LARGE = 431;        // Request Header Fields Too Large
    const STATUS_CONNECTION_CLOSED_WITHOUT_RESPONSE = 444;     // Connection Closed Without Response
    const STATUS_UNAVAILABLE_FOR_LEGAL_REASONS = 451;          // Unavailable For Legal Reasons
    const STATUS_CLIENT_CLOSED_REQUEST = 499;                  // Client Closed Request
    const STATUS_INTERNAL_SERVER_ERROR = 500;                  // Internal Server Error
    const STATUS_NOT_IMPLEMENTED = 501;                        // Not Implemented
    const STATUS_BAD_GATEWAY = 502;                            // Bad Gateway
    const STATUS_SERVICE_UNAVAILABLE = 503;                    // Service Unavailable
    const STATUS_GATEWAY_TIMEOUT = 504;                        // Gateway Timeout
    const STATUS_VERSION_NOT_SUPPORTED = 505;                  // HTTP Version Not Supported
    const STATUS_VARIANT_ALSO_NEGOTIATES = 506;                // Variant Also Negotiates
    const STATUS_INSUFFICIENT_STORAGE = 507;                   // Insufficient Storage
    const STATUS_LOOP_DETECTED = 508;                          // Loop Detected
    const STATUS_NOT_EXTENDED = 510;                           // Not Extended
    const STATUS_NETWORK_AUTHENTICATION_REQUIRED = 511;        // Network Authentication Required
    const STATUS_NETWORK_CONNECT_TIMEOUT_ERROR = 599;          // Network Connect Timeout Error

https://github.com/priskz/payload
Payload interface:
    const STATUS_VALID        = 'valid';
    const STATUS_INVALID      = 'invalid';
    const STATUS_CREATED      = 'created';
    const STATUS_UPDATED      = 'updated';
    const STATUS_DELETED      = 'deleted';
    const STATUS_FOUND        = 'found';
    const STATUS_NOT_FOUND    = 'not_found';
    const STATUS_EXCEPTION    = 'exception';
    const STATUS_UNAUTHORIZED = 'unauthorized';

After normalizing the constants, these are the usage counts (with synonyms grouped together).
Count
3+
ACCEPTED
ACCEPTED
ACCEPTED

CREATED
CREATED
CREATED
CREATED
CreatePayload

DELETED
DELETED
DeletePayload

ERROR
ERROR
ERROR

FOUND
FOUND
FOUND
FOUND
FOUND
ReadPayload

INVALID
INVALID
NOT_VALID

NOT_FOUND
NOT_FOUND
NOT_FOUND
NOT_FOUND
NOT_FOUND
EmptyPayload

PROCESSING
PROCESSING
PROCESSING

SUCCESS
SUCCESS
SUCCESS
OK
OK

UNAUTHORIZED
UNAUTHORIZED
UNAUTHORIZED
NOT_AUTHORIZED

UPDATED
UPDATED
UpdatePayload

2
ALREADY_REPORTED
ALREADY_REPORTED

BAD_GATEWAY
BAD_GATEWAY

BAD_REQUEST
BAD_REQUEST

CONFLICT
CONFLICT

CONTINUE
CONTINUE

EXPECTATION_FAILED
EXPECTATION_FAILED

FAILED_DEPENDENCY
FAILED_DEPENDENCY

FORBIDDEN
FORBIDDEN

GATEWAY_TIMEOUT
GATEWAY_TIMEOUT

GONE
GONE

IM_A_TEAPOT
IM_A_TEAPOT

IM_USED
IM_USED

INSUFFICIENT_STORAGE
INSUFFICIENT_STORAGE

INTERNAL_SERVER_ERROR
INTERNAL_SERVER_ERROR

LENGTH_REQUIRED
LENGTH_REQUIRED

LOCKED
LOCKED

LOOP_DETECTED
LOOP_DETECTED

METHOD_NOT_ALLOWED
METHOD_NOT_ALLOWED

MISDIRECTED_REQUEST
MISDIRECTED_REQUEST

MOVED_PERMANENTLY
MOVED_PERMANENTLY

MULTI_STATUS
MULTI_STATUS

MULTIPLE_CHOICES
MULTIPLE_CHOICES

NETWORK_AUTHENTICATION_REQUIRED
NETWORK_AUTHENTICATION_REQUIRED

NOT_EXTENDED
NOT_EXTENDED

NOT_IMPLEMENTED
NOT_IMPLEMENTED

NOT_MODIFIED
NOT_MODIFIED

NO_CONTENT
NO_CONTENT

NON_AUTHORITATIVE_INFORMATION
NON_AUTHORITATIVE_INFORMATION

NOT_ACCEPTABLE
NOT_ACCEPTABLE

PARTIAL_CONTENT
PARTIAL_CONTENT

PAYLOAD_TOO_LARGE
PAYLOAD_TOO_LARGE

PAYMENT_REQUIRED
PAYMENT_REQUIRED

PERMANENT_REDIRECT
PERMANENT_REDIRECT

PRECONDITION_FAILED
PRECONDITION_FAILED

PRECONDITION_REQUIRED
PRECONDITION_REQUIRED

PROXY_AUTHENTICATION_REQUIRED
PROXY_AUTHENTICATION_REQUIRED

RANGE_NOT_SATISFIABLE
RANGE_NOT_SATISFIABLE

REQUEST_HEADER_FIELDS_TOO_LARGE
REQUEST_HEADER_FIELDS_TOO_LARGE

REQUEST_TIMEOUT
REQUEST_TIMEOUT

RESET_CONTENT
RESET_CONTENT

SEE_OTHER
SEE_OTHER

SERVICE_UNAVAILABLE
SERVICE_UNAVAILABLE

SWITCHING_PROTOCOLS
SWITCHING_PROTOCOLS

TEMPORARY_REDIRECT
TEMPORARY_REDIRECT

TOO_MANY_REQUESTS
TOO_MANY_REQUESTS

UNAVAILABLE_FOR_LEGAL_REASONS
UNAVAILABLE_FOR_LEGAL_REASONS

UNPROCESSABLE_ENTITY
UNPROCESSABLE_ENTITY

UNSUPPORTED_MEDIA_TYPE
UNSUPPORTED_MEDIA_TYPE

UPGRADE_REQUIRED
UPGRADE_REQUIRED

URI_TOO_LONG
URI_TOO_LONG

USE_PROXY
USE_PROXY

VALID
VALID

VARIANT_ALSO_NEGOTIATES
VARIANT_ALSO_NEGOTIATES

VERSION_NOT_SUPPORTED
VERSION_NOT_SUPPORTED

1
AUTHENTICATED

AUTHORIZED

CLIENT_CLOSED_REQUEST

CONNECTION_CLOSED_WITHOUT_RESPONSE

EXCEPTION

FAILURE

NETWORK_CONNECT_TIMEOUT_ERROR

NOT_ACCEPTED

NOT_AUTHENTICATED

NOT_CREATED

NOT_DELETED

NOT_UPDATED

OtherPayload

WARNING

The most-common (3 or more) constants are:
ACCEPTED
CREATED
DELETED
ERROR
FOUND
INVALID
NOT_FOUND
PROCESSING
SUCCESS
UNAUTHORIZED
UPDATED

Recorded in IMPLEMENTATIONS.


TabInputWebview viewType comment is inaccurate/unclear or there is a bug in viewType

TabInputWebview.viewType in vscode.d.ts is described as:

The type of webview. Maps to {@linkcode WebviewPanel.viewType WebviewPanel's viewType}

WebviewPanel.viewType in vscode.d.ts says:

Identifies the type of the webview panel, such as 'markdown.preview'.

However, when checking a TabInputWebview that I have, the viewType is for the form mainThreadWebview-markdown.preview.
Should the mainThreadWebview- prefix either be stripped from here, or a node added to the docstring in vscode.d.ts making sure that users know to expect it?

Update, this seems to vary.
For image-preview, I see imagePreview.previewEditor, however, for my webview handled by registerWebviewPanelSerializer, I see mainThreadWebview-mywebview.
So it seems that mainThreadWebview- is only added as a prefix for some webviews, and not others.


Fix WorkersByJobId: Filtered Workers Not Empty Check

Context
I forgot to update the previous PR with this fix.  We have enough cruft lying around from all of the churn, that we hit cases where we get a NPE when we cannot parse the worker payload in getAllWorkersByJobId.  This checks to ensure workers is not empty before referencing the first element of workers.
Checklist

[X] ./gradlew build compiles code correctly
[ ] Added new tests where applicable
[X] ./gradlew test passes all tests
[ ] Extended README or added javadocs where applicable

@hmitnflx - If you have a sec, could you have a look at this one?  Should be quick.

@Andyz26 Hey! One more for our production readiness if you don't mind.

@Andyz26 Sorry about self-approving on this one. @kmg-stripe and I wanted to make sure that we made our target of releasing today.


Is injectReflexive dodgy?

It seems like injectReflexive is going to give us undecidable instance headaches one day...

Hah, I wondered the same exact thing when I saw it. I don't know, but it seems likely.

This relates to purescript/purescript-free#42, but I thought it might be applicable here.
As another possibility for avoiding overlapping instances, can we just remove the instances defined in the Inject module? So this module would only define the Inject type class with no instances. Then it is on the user to define their own specific instances.
I think the Inject type class is useful to have. And writing your own instances isn't too bad. I just added some prisms for Coproduct, which seems to help:
https://github.com/ethul/purescript-refractor-coproduct
Just a thought!


Add some basic runtime type validation in Onyx

Details

Add some basic runtime type validation in Onyx for merge, set and mergeCollection operation
Related Issues

https://github.com/Expensify/App/issues/39852
Automated Tests

Test 1: For set operation: https://github.com/Expensify/react-native-onyx/blob/9ee724140cf4d78ce8d298545fa8445067a4f192/tests/unit/onyxTest.js#L75
Test 2: For merge operation: https://github.com/Expensify/react-native-onyx/blob/9ee724140cf4d78ce8d298545fa8445067a4f192/tests/unit/onyxTest.js#L117
Test 3: For mergeCollection: https://github.com/Expensify/react-native-onyx/blob/9ee724140cf4d78ce8d298545fa8445067a4f192/tests/unit/onyxTest.js#L434

Do not update the key if the value is not compatible with the existing value (array vs non-array)
Do not notify the subscriber's callback on the incompatible update.

Manual Tests

N/A
Author Checklist

[x] I linked the correct issue in the ### Related Issues section above
[x] I wrote clear testing steps that cover the changes made in this PR

[x] I added steps for local testing in the Tests section
[x] I tested this PR with a High Traffic account against the staging or production API to ensure there are no regressions (e.g. long loading states that impact usability).

[x] I included screenshots or videos for tests on all platforms
[x] I ran the tests on all platforms & verified they passed on:

[x] Android / native
[x] Android / Chrome
[x] iOS / native
[x] iOS / Safari
[x] MacOS / Chrome / Safari
[x] MacOS / Desktop

[x] I verified there are no console errors (if there's a console error not related to the PR, report it or open an issue for it to be fixed)
[x] I followed proper code patterns (see Reviewing the code)

[x] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick)
[x] I verified that the left part of a conditional rendering a React component is a boolean and NOT a string, e.g. myBool && <MyComponent />.
[x] I verified that comments were added to code that is not self explanatory
[x] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[x] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[x] I verified the JSDocs style guidelines (in STYLE.md) were followed

[x] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[x] I followed the guidelines as stated in the Review Guidelines
[x] I tested other components that can be impacted by my changes (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar are working as expected)
[x] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[x] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[x] I verified that if a function's arguments changed that all usages have also been updated correctly
[x] If a new component is created I verified that:

[x] A similar component doesn't exist in the codebase
[x] All props are defined accurately and each prop has a /** comment above it */
[x] The file is named correctly
[x] The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
[x] The only data being stored in the state is data necessary for rendering and nothing else
[x] If we are not using the full Onyx data that we loaded, I've added the proper selector in order to ensure the component only re-renders when the data it is using changes
[x] For Class Components, any internal methods passed to components event handlers are bound to this properly so there are no scoping issues (i.e. for onClick={this.submit} the method this.submit should be bound to this in the constructor)
[x] Any internal methods bound to this are necessary to be bound (i.e. avoid this.submit = this.submit.bind(this); if this.submit is never passed to a component event handler like onClick)
[x] All JSX used for rendering exists in the render method
[x] The component has the minimum amount of code necessary for its purpose, and it is broken down into smaller components in order to separate concerns and functions

[x] If any new file was added I verified that:

[x] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[x] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[x] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.
[x] I have checked off every checkbox in the PR author checklist, including those that don't apply to this PR.

Screenshots/Videos

Android: Native

https://github.com/Expensify/react-native-onyx/assets/165644294/e4737868-d9c4-4b8c-af18-21bdea418e02

Android: mWeb Chrome

https://github.com/Expensify/react-native-onyx/assets/165644294/c04b147e-6a0f-496d-a18b-b08481b31588

iOS: Native

https://github.com/Expensify/react-native-onyx/assets/165644294/a66c1482-1055-462c-874d-04052165d646

iOS: mWeb Safari
https://github.com/Expensify/react-native-onyx/assets/165644294/177737b9-d955-4080-9242-5736bb248995

MacOS: Chrome / Safari
https://github.com/Expensify/react-native-onyx/assets/165644294/31101ff4-ebb1-4c66-8441-41f31b414e18

MacOS: Desktop
https://github.com/Expensify/react-native-onyx/assets/165644294/efd979e6-4840-4796-860b-77b94afad16c

I have read the CLA Document and I hereby sign the CLA

recheck

Assigned reviewers of https://github.com/Expensify/App/issues/39852

@dominictb please complete the author checklist and perform some basic manual testing of this PR with a local build of E/App using these changes.

Will do it as soon as possible. Thanks. Feels free to review the rest of the PR

Reviewed it once, going through once again.

LGTM, pending one confirmation.
@roryabraham Do we do a checklist here? or when we bump the App PR with updated Onyx version?

@mananjadhav some videos are uploaded in the PR description (local build). Feel free to check.

Thanks @dominictb I did check those.

Do we do a checklist here?

We should do a checklist here with a build of react-native-onyx linked against E/App dev. See instructions in the README on how to do this.

uh oh, @mananjadhav anything I need to do to complete the PR? Thanks!

No. I'll finish this checklist today.

Reviewer Checklist

[x] I have verified the author checklist is complete (all boxes are checked off).
[x] I verified the correct issue is linked in the ### Fixed Issues section above
[x] I verified testing steps are clear and they cover the changes made in this PR

[x] I verified the steps for local testing are in the Tests section
[x] I verified the steps for Staging and/or Production testing are in the QA steps section
[x] I verified the steps cover any possible failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[x] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)

[x] I checked that screenshots or videos are included for tests on all platforms
[x] I included screenshots or videos for tests on all platforms
[ ] I verified tests pass on all platforms & I tested again on:

[ ] Android: Native
[ ] Android: mWeb Chrome
[ ] iOS: Native
[ ] iOS: mWeb Safari
[ ] MacOS: Chrome / Safari
[ ] MacOS: Desktop

[x] If there are any errors in the console that are unrelated to this PR, I either fixed them (preferred) or linked to where I reported them in Slack
[x] I verified proper code patterns were followed (see Reviewing the code)

[x] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick).
[x] I verified that the left part of a conditional rendering a React component is a boolean and NOT a string, e.g. myBool && <MyComponent />.
[x] I verified that comments were added to code that is not self explanatory
[x] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[x] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method
[x] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[x] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is either coming verbatim from figma or has been approved by marketing (in order to get marketing approval, ask the Bug Zero team member to add the Waiting for copy label to the issue)
[x] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[x] I verified the JSDocs style guidelines (in STYLE.md) were followed

[x] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[x] I verified that this PR follows the guidelines as stated in the Review Guidelines
[x] I verified other components that can be impacted by these changes have been tested, and I retested again (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar have been tested & I retested again)
[x] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[x] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[x] If a new component is created I verified that:

[x] A similar component doesn't exist in the codebase
[x] All props are defined accurately and each prop has a /** comment above it */
[x] The file is named correctly
[x] The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
[x] The only data being stored in the state is data necessary for rendering and nothing else
[x] For Class Components, any internal methods passed to components event handlers are bound to this properly so there are no scoping issues (i.e. for onClick={this.submit} the method this.submit should be bound to this in the constructor)
[x] Any internal methods bound to this are necessary to be bound (i.e. avoid this.submit = this.submit.bind(this); if this.submit is never passed to a component event handler like onClick)
[x] All JSX used for rendering exists in the render method
[x] The component has the minimum amount of code necessary for its purpose, and it is broken down into smaller components in order to separate concerns and functions

[x] If any new file was added I verified that:

[x] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[x] If a new CSS style is added I verified that:

[x] A similar style doesn't already exist
[x] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(theme.componentBG)

[x] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[x] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[x] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[x] If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
[x] If the PR modifies the UI (e.g. new buttons, new UI components, changing the padding/spacing/sizing, moving components, etc) or modifies the form input styles:

[x] I verified that all the inputs inside a form are aligned with each other.
[x] I added Design label and/or tagged @Expensify/design so the design team can review the changes.

[x] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[x] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.
[x] I have checked off every checkbox in the PR reviewer checklist, including those that don't apply to this PR.

Screenshots/Videos

Android: Native

Android: mWeb Chrome

iOS: Native

iOS: mWeb Safari

MacOS: Chrome / Safari

MacOS: Desktop

@roryabraham All yours.

looks like reassure is just not set up correctly in Onyx?

@roryabraham I merged main. Can u check?

@roryabraham Can you action the PR so that the workflows are executed?

@roryabraham @mananjadhav let's merge this so I can bump the version in Expensify/App

@roryabraham @mananjadhav any update before we can merge?

sorry for the delay. As this is your first PR in this repo I have to manually approve workflows to run, so that's why it was delayed.


Integrate with .docker/config or OIDC provider setups

The current flow requires an explicit username password  pair.
I believe security could be enhanced with JIT credentials with short-expiry times.
The easiest would be to leverage existing local .docker configuration or environment variables for OIDC setups like IRSSA and WorkloadIdentity.
Thoughts? :)

Hi!
Thanks for opening this discussion!
I'd like to add some context to set the stage and make sure we are on the same page of the problem we want to solve :)
There are 3 touch points where an OCI registry is involved.
1 - When a container image material type is added to an attestation (see in this video)
# add an material of type container_image
chainloop attestation add ...

This command will use your local docker keychain (.docker/config) to authenticate against the provided image reference OCI registry and retrieve the manifest => digest
https://github.com/chainloop-dev/chainloop/blob/29d39b98144b137774f7c0bbd383ebb62f94cd18/internal/attestation/crafter/materials/oci_image.go#L53
2 - When you upload an artifact or add a material to the attestation that requires upload (example)
# manual upload
chainloop artifact upload ...
# or add a material that requires upload, i.e artifact, SBOM, ...
chainloop attestation add ...
# or pushes the

3 - When an attestation gets received, it gets routed to an OCI registry by the control plane
In this case, it is the control plane the one that routes the attestation to the OCI registry.
AuthN
The first touch point uses local docker environment (whatever the CI where the attestation is happening is logged in as).
The other 2 cases, are in fact routed through the artifact CAS and indeed requires stable, OCI credentials.
In other words, the clients (CLI or control-plane) do not talk to OCI directly (or will not soon #2), so the Artifact CAS is the one that will push the artifacts on their behalf.
The reasoning behind this decision are

Artifacts backends should be plugable, today we have OCI but tomorrow some people might want to store artifacts to blob storage, artifactory, send it to a kafka stream, anything.
Operators can mix and match with different backends, the integration in the client side (CI) should not change in that case.
Leveraging local/CI credentials means that the owners of the CI/CD pipeline have access to the OCI registry where the attestation/artifacts will rest, and we try to keep both separated.
Simplicity on the CI side. A chainloop robot account is everything you'll ever need for a successful integration.

Short-lived/OIDC AuthZ for Artifact CAS
With that out of the way, could you confirm @zmarouf:

a) if that separation of concerns/credentials modeling described before makes sense in your case
b) This issue refers to the OCI repository that needs to be added to your Chainloop organization that powers the touchpoints 2 and 3?

If so, as you pointed out, setting up the target OCI registry requires a keypair which then gets stored in a secret backend (AWS secret manager or Hashicorp Vault)
$ chainloop config set-oci-repo \
    # i.e ghcr.io/chainloop-dev/chainloop-cas
    --repo ghcr.io/[username or org]/[my-repository] \
    --username [username] \
    --password [personal access token]

Ideally we'd prefer not to store any credentials at all indeed, so leveraging identity based authentication would be much, much better.
If the goal is to allow the artifact CAS to push to OCI but instead of leveraging static/long-lasting credentials short-lived based on OIDC/Identity how would you do it? Could you elaborate a little bit more on your proposed IRSSA approach?
Thank you!!


Add information how to add shortcode

So far there is no information how to add the integreat shortcode to the template

Done!


Improve MathML for \brace

Removed an unnecessary escape character.

Codecov Report

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

@@           Coverage Diff           @@
##           master    #1884   +/-   ##
=======================================
  Coverage   94.74%   94.74%
=======================================
  Files          79       79
  Lines        4659     4659
  Branches      811      811
=======================================
  Hits         4414     4414
  Misses        221      221
  Partials       24       24

Flag
Coverage Δ

#screenshotter
88.9% <ø> (ø)
:arrow_up:

#test
86.79% <ø> (ø)
:arrow_up:

Impacted Files
Coverage Δ

src/functions/genfrac.js
94.31% <ø> (ø)
:arrow_up:

Continue to review full report at Codecov.

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


Cannot construct instance of io.leangen.graphql.generator.mapping.common.ObjectScalarAdapter$ScalarMap

First of all, thanks for this great lib! :)
I have the following setting:

graphql-spqr 0.9.7

a singleton service with query method that returns a TryoutObj pojo:

    @GraphQLQuery
	public TryoutObj someQuery() {
		return new TryoutObj("test");
	}

the pojo is defined as follows:

        public class TryoutObj {
		private Object val;
		private String name;
		public TryoutObj() {}
		public TryoutObj(Object val) {
			this.val = val;
		}
		public Object getVal() {
			return val;
		}
		public void setVal(Object val) {
			this.val = val;
		}
		public String getName() {
			return name;
		}
		public void setName(String name) {
			this.name = name;
		}
	}

I get a Jackson exception on executing query (using GraphiQL client, but it shouldn't be of importance) - full stack below:

java.lang.IllegalArgumentException: Cannot construct instance of io.leangen.graphql.generator.mapping.common.ObjectScalarAdapter$ScalarMap (although at least one Creator exists): no String-argument constructor/factory method to deserialize from String value ('test')
at [Source: UNKNOWN; line: -1, column: -1]
at com.fasterxml.jackson.databind.ObjectMapper._convert(ObjectMapper.java:3738) ~[jackson-databind-2.9.3.jar!/:2.9.3]
at com.fasterxml.jackson.databind.ObjectMapper.convertValue(ObjectMapper.java:3676) ~[jackson-databind-2.9.3.jar!/:2.9.3]
at io.leangen.graphql.metadata.strategy.value.jackson.JacksonValueMapper.fromInput(JacksonValueMapper.java:49) ~[spqr-0.9.7.jar!/:na]
at io.leangen.graphql.generator.mapping.common.ObjectScalarAdapter.convertOutput(ObjectScalarAdapter.java:43) ~[spqr-0.9.7.jar!/:na]
at io.leangen.graphql.generator.mapping.common.ObjectScalarAdapter.convertOutput(ObjectScalarAdapter.java:21) ~[spqr-0.9.7.jar!/:na]
at io.leangen.graphql.execution.ResolutionEnvironment.convertOutput(ResolutionEnvironment.java:49) ~[spqr-0.9.7.jar!/:na]
at io.leangen.graphql.execution.OperationExecutor.execute(OperationExecutor.java:52) ~[spqr-0.9.7.jar!/:na]
at graphql.execution.ExecutionStrategy.fetchField(ExecutionStrategy.java:227) [graphql-java-8.0.jar!/:na]
at graphql.execution.ExecutionStrategy.resolveField(ExecutionStrategy.java:170) [graphql-java-8.0.jar!/:na]
at graphql.execution.AsyncExecutionStrategy.execute(AsyncExecutionStrategy.java:59) ~[graphql-java-8.0.jar!/:na]
at graphql.execution.ExecutionStrategy.completeValueForObject(ExecutionStrategy.java:551) [graphql-java-8.0.jar!/:na]
at graphql.execution.ExecutionStrategy.completeValue(ExecutionStrategy.java:375) [graphql-java-8.0.jar!/:na]
at graphql.execution.ExecutionStrategy.completeField(ExecutionStrategy.java:332) [graphql-java-8.0.jar!/:na]
at graphql.execution.ExecutionStrategy.lambda$resolveField$0(ExecutionStrategy.java:172) [graphql-java-8.0.jar!/:na]
at java.util.concurrent.CompletableFuture.uniComposeStage(CompletableFuture.java:981) ~[na:1.8.0_161]
at java.util.concurrent.CompletableFuture.thenCompose(CompletableFuture.java:2124) ~[na:1.8.0_161]
at graphql.execution.ExecutionStrategy.resolveField(ExecutionStrategy.java:171) [graphql-java-8.0.jar!/:na]
at graphql.execution.AsyncExecutionStrategy.execute(AsyncExecutionStrategy.java:59) ~[graphql-java-8.0.jar!/:na]
at graphql.execution.Execution.executeOperation(Execution.java:158) ~[graphql-java-8.0.jar!/:na]
at graphql.execution.Execution.execute(Execution.java:100) ~[graphql-java-8.0.jar!/:na]
at graphql.GraphQL.execute(GraphQL.java:558) ~[graphql-java-8.0.jar!/:na]
at graphql.GraphQL.parseValidateAndExecute(GraphQL.java:500) ~[graphql-java-8.0.jar!/:na]
at graphql.GraphQL.executeAsync(GraphQL.java:470) ~[graphql-java-8.0.jar!/:na]
at graphql.GraphQL.execute(GraphQL.java:401) ~[graphql-java-8.0.jar!/:na]
at graphql.GraphQL.execute(GraphQL.java:371) ~[graphql-java-8.0.jar!/:na]
...
Caused by: com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot construct instance of io.leangen.graphql.generator.mapping.common.ObjectScalarAdapter$ScalarMap (although at least one Creator exists): no String-argument constructor/factory method to deserialize from String value ('test')
at [Source: UNKNOWN; line: -1, column: -1]
at com.fasterxml.jackson.databind.exc.MismatchedInputException.from(MismatchedInputException.java:63) ~[jackson-databind-2.9.3.jar!/:2.9.3]
at com.fasterxml.jackson.databind.DeserializationContext.reportInputMismatch(DeserializationContext.java:1342) ~[jackson-databind-2.9.3.jar!/:2.9.3]
at com.fasterxml.jackson.databind.DeserializationContext.handleMissingInstantiator(DeserializationContext.java:1031) ~[jackson-databind-2.9.3.jar!/:2.9.3]
at com.fasterxml.jackson.databind.deser.ValueInstantiator._createFromStringFallbacks(ValueInstantiator.java:371) ~[jackson-databind-2.9.3.jar!/:2.9.3]
at com.fasterxml.jackson.databind.deser.std.StdValueInstantiator.createFromString(StdValueInstantiator.java:323) ~[jackson-databind-2.9.3.jar!/:2.9.3]
at com.fasterxml.jackson.databind.deser.std.MapDeserializer.deserialize(MapDeserializer.java:357) ~[jackson-databind-2.9.3.jar!/:2.9.3]
at com.fasterxml.jackson.databind.deser.std.MapDeserializer.deserialize(MapDeserializer.java:29) ~[jackson-databind-2.9.3.jar!/:2.9.3]
at com.fasterxml.jackson.databind.ObjectMapper._convert(ObjectMapper.java:3733) ~[jackson-databind-2.9.3.jar!/:2.9.3]
... 82 common frames omitted

I had a look at ObjectScalarAdapter and noticed it has:

    @Override
    public Map<String, ?> convertOutput(Object original, AnnotatedType type, ResolutionEnvironment resolutionEnvironment) {
        return resolutionEnvironment.valueMapper.fromInput(original, type.getType(), MAP);
    }

that will probably throw on simple String input as the MAP is a subclass of LinkedHashMap.
An input based on this object with object scalar definition works perfectly as in .parseFieldValue(Value value) found in Scalars.java:203 there are some conditions that catch primitive/simple values, only the output is troublesome.
Is this a desired behavior or have I missed some config that needs to be there for this to work properly?

As a quick walkaround for a bit narrow use case I used:
.withOutputConverters((config, defaults) -> defaults.drop(ObjectScalarAdapter.class))
it works with
return new TryoutObj("test");
as well as with:
return new TryoutObj(new HashMap<String, Object>(){{put("foo", 845);}});
although I guess there might be some other features that will be disabled by doing so?

Yup, you figured out exactly what I wanted to suggest :)
Version 0.9.8 will probably drop the ObjectScalarAdapter  from output converters by default, as it caused more trouble than it's worth.
There only 2 possible downsides (both minor IMHO):

If you're directly consuming the query result (without first serializing it to JSON), and the client expects to receive either maps or scalars (what graphql-java would normally return), it could get confused.
If your JSON library used to serialize the result doesn't know how to deal with the returned object, or is misconfigured, you could get unexpected results

Both are fringe cases that you probably don't care about.

Thanks! :)


Adding implementation of excludeOverriden within the query. Includes …

…tests for functionality
Fixes #21
@sigmundch

I signed it!

Whoops I commented on the commit not the files lol, in any case this looks good, just some minor nits.
You should also update the pubspec/changelog.
Once you do that and resolve the author/cla issue I can go ahead and merge.

With the changelog should I update the pubspec as well? If so what version would you like? Seems like the changelog is based around versions.

Hmmm after poking around I'm not seeing anything in Declaration that lets you get the containing class so I could check if its the right one. Any workaround there?

I would bump it to 0.3.4, since this shouldn't be a breaking change, and follow the existing format for the changelog.
For the Declaration it looks like at least for the property the two are different (one is kind: PROPERTY and isFinal: true). If you just verify that one its probably good enough since they both go through the same code path.

Editor monkeyed with the pubspec. Fixing now

Grr git doesn't seem to want to use my gmail address despite setting up the config...

Tests are good. If everything is :+1: I can squash the commits into a single if that's your preference.

lgtm, I will let @sigmundch have another look as well though

Also imo no need to squash the commits, unless you want to. We aren't picky about it since we have a manual changelog instead of one built from commit history.

Whatever you guys prefer. Just force of habit at work.

Awesome, thanks Don! LGTM
I'll merge it manually in a sec (just noticed that we also need to update static_in_pieces_test.dart, but it's just a matter of copying the output you got in the static_test.dart, so I'll go ahead and do it as I merge it in)

Awesome thank you guys!
Could you let me know when it gets pushed to pub so I can start getting a patch for polymer together?

it's alive! it's alive!

And polymer.dart is updated with https://github.com/dart-lang/polymer-dart/pull/532


Replacing LogDNA SVG Logo

Pre-submission checklist:
Please check each of these after submitting your pull request:

[ ] Are you only including a repo_url if your project is 100% open source? If so, you need to pick the single best GitHub repository for your project, not a GitHub organization.
[ ] Is your project closed source or, if it is open source, does your project have at least 250 GitHub stars?
[ ] Have you picked the single best (existing) category for your project?
[ ] Does it follow the other guidelines from the new entries section?
[ ] Have you included a URL for your SVG or added it to hosted_logos and referenced it there?
[ ] Does your logo clearly state the name of the project/product and follow the other logo guidelines?
[x] Does your project/product name match the text on the logo?
[ ] Have you verified that the Crunchbase data for your organization is correct (including headquarters and LinkedIn)?
[x] ~5 minutes after opening the pull request, the CNCF-Bot will post the URL for your staging server. Have you confirmed that it looks good to you and then added a comment to the PR saying "LGTM"?

Looks Good To Me - LGTM!

Thanks, but we fixed the logdna logo in: https://github.com/cncf/landscape/commit/792b2d6461d557c269cc52fcb5378fc706d2af2c


HBASE-22407 add an option to use Hadoop metrics tags for table metrics (and fix some issues in metrics)

Most of the changes are actually just refactoring, like moving code into overridable methods so it could be overridden

:broken_heart: -1 overall

Vote
Subsystem
Runtime
Comment

0
reexec
64
Docker mode activated.

_ Prechecks _

+1
hbaseanti
0
Patch does not have any anti-patterns.

+1
@author
0
The patch does not contain any @author tags.

+1
test4tests
0
The patch appears to include 3 new or modified test files.

_ master Compile Tests _

0
mvndep
26
Maven dependency ordering for branch

+1
mvninstall
245
master passed

+1
compile
84
master passed

+1
checkstyle
93
master passed

+1
shadedjars
255
branch has no errors when building our shaded downstream artifacts.

+1
findbugs
267
master passed

+1
javadoc
63
master passed

_ Patch Compile Tests _

0
mvndep
15
Maven dependency ordering for patch

+1
mvninstall
235
the patch passed

+1
compile
81
the patch passed

+1
javac
81
the patch passed

-1
checkstyle
13
hbase-hadoop2-compat: The patch generated 18 new + 0 unchanged - 0 fixed = 18 total (was 0)

-1
checkstyle
70
hbase-server: The patch generated 5 new + 5 unchanged - 3 fixed = 10 total (was 8)

+1
whitespace
0
The patch has no whitespace issues.

+1
shadedjars
261
patch has no errors when building our shaded downstream artifacts.

+1
hadoopcheck
490
Patch does not cause any errors with Hadoop 2.7.4 or 3.0.0.

-1
findbugs
37
hbase-hadoop2-compat generated 1 new + 0 unchanged - 0 fixed = 1 total (was 0)

+1
javadoc
65
the patch passed

_ Other Tests _

+1
unit
30
hbase-hadoop-compat in the patch passed.

-1
unit
34
hbase-hadoop2-compat in the patch failed.

+1
unit
8303
hbase-server in the patch passed.

+1
asflicense
68
The patch does not generate ASF License warnings.

11151

Reason
Tests

FindBugs
module:hbase-hadoop2-compat

org.apache.hadoop.hbase.regionserver.MetricsTableSourceImplWithTags doesn't override MetricsTableSourceImpl.equals(Object)  At MetricsTableSourceImplWithTags.java:At MetricsTableSourceImplWithTags.java:[line 1]

Failed junit tests
hadoop.hbase.regionserver.TestMetricsRegionServerSourceImpl

Subsystem
Report/Notes

Docker
Client=17.05.0-ce Server=17.05.0-ce base: https://builds.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-236/1/artifact/out/Dockerfile

GITHUB PR
https://github.com/apache/hbase/pull/236

Optional Tests
dupname  asflicense  javac  javadoc  unit  findbugs  shadedjars  hadoopcheck  hbaseanti  checkstyle  compile

uname
Linux 68f443fd956d 4.4.0-138-generic #164-Ubuntu SMP Tue Oct 2 17:16:02 UTC 2018 x86_64 GNU/Linux

Build tool
maven

Personality
/testptch/patchprocess/precommit/personality/provided.sh

git revision
master /<PHONE_NUMBER>

maven
version: Apache Maven 3.5.4 (1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-17T18:33:14Z)

Default Java
1.8.0_181

findbugs
v3.1.11

checkstyle
https://builds.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-236/1/artifact/out/diff-checkstyle-hbase-hadoop2-compat.txt

checkstyle
https://builds.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-236/1/artifact/out/diff-checkstyle-hbase-server.txt

findbugs
https://builds.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-236/1/artifact/out/new-findbugs-hbase-hadoop2-compat.html

unit
https://builds.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-236/1/artifact/out/patch-unit-hbase-hadoop2-compat.txt

Test Results
https://builds.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-236/1/testReport/

Max. process+thread count
4683 (vs. ulimit of 10000)

modules
C: hbase-hadoop-compat hbase-hadoop2-compat hbase-server U: .

Console output
https://builds.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-236/1/console

Powered by
Apache Yetus 0.9.0 http://yetus.apache.org

This message was automatically generated.

:broken_heart: -1 overall

Vote
Subsystem
Runtime
Comment

0
reexec
24
Docker mode activated.

_ Prechecks _

+1
hbaseanti
0
Patch does not have any anti-patterns.

+1
@author
0
The patch does not contain any @author tags.

+1
test4tests
0
The patch appears to include 3 new or modified test files.

_ master Compile Tests _

0
mvndep
23
Maven dependency ordering for branch

+1
mvninstall
256
master passed

+1
compile
103
master passed

+1
checkstyle
94
master passed

+1
shadedjars
293
branch has no errors when building our shaded downstream artifacts.

+1
findbugs
262
master passed

+1
javadoc
79
master passed

_ Patch Compile Tests _

0
mvndep
16
Maven dependency ordering for patch

+1
mvninstall
261
the patch passed

+1
compile
80
the patch passed

+1
javac
80
the patch passed

-1
checkstyle
18
hbase-hadoop2-compat: The patch generated 18 new + 0 unchanged - 0 fixed = 18 total (was 0)

-1
checkstyle
63
hbase-server: The patch generated 5 new + 5 unchanged - 3 fixed = 10 total (was 8)

+1
whitespace
0
The patch has no whitespace issues.

+1
shadedjars
268
patch has no errors when building our shaded downstream artifacts.

+1
hadoopcheck
714
Patch does not cause any errors with Hadoop 2.8.5 2.9.2 or 3.1.2.

-1
findbugs
34
hbase-hadoop2-compat generated 1 new + 0 unchanged - 0 fixed = 1 total (was 0)

+1
javadoc
71
the patch passed

_ Other Tests _

+1
unit
33
hbase-hadoop-compat in the patch passed.

-1
unit
32
hbase-hadoop2-compat in the patch failed.

+1
unit
12755
hbase-server in the patch passed.

+1
asflicense
101
The patch does not generate ASF License warnings.

16192

Reason
Tests

FindBugs
module:hbase-hadoop2-compat

org.apache.hadoop.hbase.regionserver.MetricsTableSourceImplWithTags doesn't override MetricsTableSourceImpl.equals(Object)  At MetricsTableSourceImplWithTags.java:At MetricsTableSourceImplWithTags.java:[line 1]

Failed junit tests
hadoop.hbase.regionserver.TestMetricsRegionServerSourceImpl

Subsystem
Report/Notes

Docker
Client=17.05.0-ce Server=17.05.0-ce base: https://builds.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-236/2/artifact/out/Dockerfile

GITHUB PR
https://github.com/apache/hbase/pull/236

Optional Tests
dupname  asflicense  javac  javadoc  unit  findbugs  shadedjars  hadoopcheck  hbaseanti  checkstyle  compile

uname
Linux b2327ea304e6 4.4.0-145-generic #171-Ubuntu SMP Tue Mar 26 12:43:40 UTC 2019 x86_64 GNU/Linux

Build tool
maven

Personality
/testptch/patchprocess/precommit/personality/provided.sh

git revision
master / ada772a1d3

maven
version: Apache Maven 3.5.4 (1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-17T18:33:14Z)

Default Java
1.8.0_181

findbugs
v3.1.11

checkstyle
https://builds.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-236/2/artifact/out/diff-checkstyle-hbase-hadoop2-compat.txt

checkstyle
https://builds.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-236/2/artifact/out/diff-checkstyle-hbase-server.txt

findbugs
https://builds.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-236/2/artifact/out/new-findbugs-hbase-hadoop2-compat.html

unit
https://builds.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-236/2/artifact/out/patch-unit-hbase-hadoop2-compat.txt

Test Results
https://builds.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-236/2/testReport/

Max. process+thread count
4083 (vs. ulimit of 10000)

modules
C: hbase-hadoop-compat hbase-hadoop2-compat hbase-server U: .

Console output
https://builds.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-236/2/console

Powered by
Apache Yetus 0.9.0 http://yetus.apache.org

This message was automatically generated.

@sershe-ms Could you please look into the merge conflict?

Close since the PR is stale and can not be merged. Feel free to reopen.


Tests for Mandala Health

Currently in order to answer the question "is mandala healthy", it takes 10min to do some manual testing/inspecting, we can write some tests to automate this process, so it will take 1 command line run to check mandala health.

indexer (most important, other things never failed so far if this is healthy):net_indexer()

compare lastProcessedHeight, targetHeight with current block height
compare lastProcessedTimestamp to current time.

graphql: make graphql query to https://tc7-graphql.aca-dev.network directly, check if:

earliest txReceipt and logs exist.
middle txReceipt and logs exist.
latest txReceipt and logs exist.

rpc: make some example calls:

net_cacheInfo and check cachedBlocks and latest block
eth_getLogs (earliest, middle, latest logs)
eth_getTxByHash, eth_getTxReceipt (earliest, middle, latest txs)
eth_call
eth_getCode

A better version will be some sort of UI that integrates these checks, which keeps checking indexer every 10 min, checks graph and rpc every hour, and display the result/error. Maybe have a button to manually re-run the checks.

related to #249

we can have a health check endpoint and configure datadog to call the endpoint every 10 mins. we could setup alerts and see historical results from datadog.

sounds good, we can prioritize #249 over this one. For the health check endpoint, I think checking indexer health should be enough, since as along as indexer is healthy, other services work as expected (so far). If in the future we found other services failed while indexer is healthy, we can then make some other tests to cover it.

already have health monitoring endpoint with datadog


Migrate tests to Pytest plain asserts

When looking at the code when it is formatted with Black there are a number of cases where it would be a bit more readable if plain pytest asserts were used.
I've done a few files as an example. Is this wanted? Let me know what you think.

Peter, I think this is done. I think I need to review again in a day or so with a fresh pair of eyes.
Are you still up for reviewing this? :laughing:

Peter, I think this is done. I think I need to review again in a day or so with a fresh pair of eyes.
Are you still up for reviewing this? laughing

Totally! It's half past one in the morning am I'm half-way through with reviewing your work of art. I should better go to bed... :sleeping:

Totally! It's half past one in the morning am I'm half-way through with reviewing your work of art. I should better go to bed...

Please don't burn out becuase of me as this isn't urgent. Take care of yourself.

@smithdc1 We should finish this off an merge the changes. Do you think you have time to go over the code for a final round anytime soon?

I can probably find time in the next week. What do you need me to do? I can review this again with a fresh pair of eyes?
(Happy new year btw! 🎉 - is it still to late to be saying this? 🤷♀)

@bittner --- just looking at this again and I've noticed that Context is misused in a fair number of places. For example:
https://github.com/jazzband/django-analytical/blob/896a19196f0ecca146e4cb8fb3b26e71e15642c8/tests/unit/test_tag_clickmap.py#L40-L41
Passing Context into render is wrong (although it works), instead this should be something like:
r = ClickmapNode().render({'request': req})

Shall I tidy these up in this PR as well?

@bittner --- just looking at this again and I've noticed that Context is misused in a fair number of places. For example:
...
Shall I tidy these up in this PR as well?

This PR is big enough. And that change might have side effects we don't manage to understand yet. Hence, I'd suggest to first merge this PR and then create a follow-up PR just for the fix of the (mis-)use of Context. What do you think?

Happy to look at it as a follow up PR 🙂

Shall we merge?

We could do. If I spot anything else when I'm looking at context I can submit a follow up PR.
I'm sure I'll have missed something but I think what we have here is a good enough change.
Now is better than never? (And we're also not doing it 'right now!') 🤷♀

Now is better than never? (And we're also not doing it 'right now!') woman_shrugging

Shoot! :grimacing: I'll be doing it "right now"! :fearful:


[Suggestion] Give the ability to bind custom textures for research tasks.

It will be cool, if you give the ability to bind custom textures for research tasks.
What I mean? I say about tasks that are represented below:

The textures, that are bound to them, are strictly limited (only map, flask and chest textures and nothing more). If you allow to use custom textures for them, addons' auhors can let players to be more immersed in the atmosphere of Thaumcraft.
For now it's just a texture of question mark. :c

In B25 I've added the ability to add custom textures in the following format:
"required_research":["EXAMPLE_RESEARCH;thaumcraft:textures/items/thaumonomicon.png"]

Using special codes like "!", "m_", etc. will override this texture and proper research entries will still use their own icons.


MeshPrimitive.Tangents requires Vec3 instead of Vec4

Spec requires Vev4 for Tangent.

XYZW vertex tangents where w is a sign value (-1 or +1) indicating handedness of the tangent basis

PR created #115

Merged.


Fix/live 13135 transaction scroll  diff

Draft
DIFF TEST, NO REVIEW

/generate-screenshots

/generate-screenshots


KF 4325 port rocks into 1.7

Description
KFP ROCK images need to be integrated into track/2.0 to provide more secure images.
Related issue: https://github.com/canonical/pipelines-rocks/issues/33
Summary of changes:

Updated metadata.yaml files for all charms to refer to published ROCK images.
Updated requirements.
Added trust to bundle for argo-controller.

kfp-ui charm is waiting for container too long, test is timing out.
2023-09-21T23:58:54.4761170Z   - lastTransitionTime: "2023-09-21T23:46:30Z"
2023-09-21T23:58:54.4761337Z     lastUpdateTime: "2023-09-21T23:46:30Z"
2023-09-21T23:58:54.4761914Z     message: ReplicaSet "kfp-ui-5c64cf58dd" has timed out progressing.
2023-09-21T23:58:54.4762038Z     reason: ProgressDeadlineExceeded
2023-09-21T23:58:54.4762123Z     status: "False"


Error: TypeError: can't pickle property objects

Migrated from GitLab: https://gitlab.com/meltano/sdk/-/issues/55
Originally created by @aaronsteers on 2021-03-22 18:03:38

This error occurs when a jsonschema is constructed using helper classes, and an ObjectType class is not instantiated with it's subproperties.
TypeError: can't pickle property objects

Example which triggers this:
    schema = PropertiesList(
        Property("active", BooleanType),
        Property("annotation_hotkeys", ObjectType), # << This one needs to be instantiated
        Property("annotators_can_create_tags", BooleanType),
        Property("annotators_can_instantiate_workflows", BooleanType),
    ).to_dict()

From slack: https://meltano.slack.com/archives/C01PKLU5D1R/p1616340560020700

View 5 previous comments from the original issue on GitLab


[Bug]: In the release customer portal we are seeing the error message in the Billing and usage tab

Is there an existing issue for this?

[X] I have searched the existing issues

Description
In the release customer portal we are seeing the error message in the Billing and usage tab

Steps To Reproduce

go to https://release-customer.appsmith.com/
sign in as<EMAIL_ADDRESS>password : Appsmith@123
Now click on Billing and usage tab
The usage section is displayed with error

Public Sample App
No response
Environment
Production
Issue video log
No response
Version
v1.10

@RakshaKShetty @btsgh - can you test this once, the issue from Togai on staging is resolved.

@deepikaappsmith Seeing this issue again this weeks regression along with the error on customer pportal i am not seeing the usage capture on the togais sandbox attaching the screenshot here

Closing the issue for now as the data is displaying in customer portal now but will track same in next regression as we faced this continuously twice in weekly regressions


Will the corpus be openly published?

Given how good this model works, I'd be interested in having access to the original corpus with which it was trained. Will that be possible? I mean, is there any plan for uploading it to huggingface/datasets or publish it in any other form?
Thank you very much in advance :)

@alexvaca0 Thanks for your interest! We will be publishing the original tweets soon, hopefully in datasets. Leave this issue open so we let you know when they are available.

Hi @alexvaca0. I'm having some problems regarding the original tweets -- that is, the raw tweets prior to any preprocessing and filtering. The machine which contained this data is not turning on, let's hope the disk is ok.
In the meanwhile, I have access to the preprocessed and filtered tweets (as described on the paper). If that's useful for you, send me an email and I'll give access to you.
I leave this issue open until we are able to publish the original data.

Oh that would be so great, if it is still possible to have access to the tweets... thank you very much :)

Well, this is quite late, but finally, the tweets were released. I could only upload half of them, but I suppose this might be enough (~300M tweets).
Check https://huggingface.co/datasets/pysentimiento/spanish-tweets
In the following days, I will be uploading the rest of them.


Create ccastudents.txt

Added a new school

@Maximusyt1 Please provide us with:

the school official website URL
the school street address, including city and country
an URL of a page on the official website where the school offers an IT-related long-term (>1 year) course
a proof, which shows that the school recognizes the domain you are submitting as an official email domain for the students.

@Maximusyt1 You might miss my previous comment. Please react.

Hey. I will get to this in the morning as it as midnight now.

the school official website URL: https://ccaeducate.me/
the school street address, including city and country: 1 Innovation Way, Harrisburg, PA 17110, USA
an URL of a page on the official website where the school offers an IT-related long-term (>1 year) course: I can't find out how to link the course, but if you go to https://ccaeducate.me/course-catalog/2023-24/ and filter with the name "Computer" then it will show.
a proof, which shows that the school recognizes the domain you are submitting as an official email domain for the students: The image below shows me logged into my CCA outlook account (I crossed out my name in white, so thats why its blank in some places):

@Maximusyt1 Thank you for your patience while waiting for a review and processing your request. Pull request merged.


chore(ecc): Add additional curve tests for bls12-381 and bls12-377

Add Additional Curve Tests
Description
This pr adds additional curve tests added in #811 to BLS12-381 and BLS12-377
Type of change

[x] New feature

Checklist

[ ] Linked to Github Issue
[x] Unit tests added
[ ] This change requires new documentation.

[ ] Documentation has been added/updated.

[ ] This change is an Optimization

[ ] Benchmarks added/run

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 72.36%. Comparing base (52042bf) to head (068a009).

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #837      +/-   ##
==========================================
+ Coverage   72.32%   72.36%   +0.04%
==========================================
  Files         147      147
  Lines       33820    33882      +62
==========================================
+ Hits        24459    24520      +61
- Misses       9361     9362       +1

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

We will be doing a differential fuzzer to check other stuff, so I will close this Pr


MOB-init should initialize the NCBI taxonomy databases

The host range module in MOB-typer will initialize the NCBI taxonomy databases but this functionality should be provided by MOB-init as well.

mob_init from version 2.0.1 has ete3 initialization routine incorporated.