Initialising modules with different weights with DDP is dangerously buried in the doc notes

🐛 Bug
More a discussion than a real bug.
The docs for the DDP say:

Make sure to set the random seed before the instantiation of a Trainer() so that each model initializes with the same weights.

In the most common settings, it is considered bad practice to initialise the modules with different parameters according to the GPU.
To me - and this is a personal opinion - it does not make sense in theory as well.
The reason why I posted it as a bug and not as a doc issue is that this is really dangerous, if you don't know about it.
Using a note in the docs does not help either. I don't assume a user reads the entire docs before using a library.

So a solution would be to broadcast the weights from process 0 to all others before starting training. Is this correct? Then setting the seed is optional.

I am not sure what the solution might be, as my knowledge about lightning is poor.
On a high level, I guess passing the seed would be the minimal information pytorch needs to coordinate the initialisations.

On a high level, I guess passing the seed would be the minimal information pytorch needs to coordinate the initialisations.

We can't know the seed unless the user sets it, right?
So I believe my suggestion is the only way if we want to allow for random initial conditions while having the same state across processes.

@justusschock @tchaton @SeanNaren any thoughts/concerns here?

@awaelchli You're right, but luckily there is nothing left to do for us besides removing this line from the docs. Since your refactor bases it back to plain torch.nn.DistributedDataParallel, it does that automatically (see here , here and
here

oh you're right, that's awesome. And it only makes sense now that pytorch DDP would take care of this. I sent a PR to remove the outdated info


flickering borders

hi joewing,
i'm using the snapshot 1215 on puppylinux.
if i open 2 windows and move the front window around, the thin border that surrounds the second window flickers, like it's continually being redrawn.
this doesn't happen in 976

This should be better in snapshot 1217.
Thanks!

1217 fixes the issue for me .. no more flickers
thankyou


Fix fail to change the style in web backend

Context:
There is a problem that I introduced with a recent PR I made, the web backend currently does not change its fill style or stroke style if the path at the moment of the change is empty, this was introduced simply because if the path is empty is not possible to obtain with the current methods a context to the gradients, that we used to translate the gradients coordinates from local to global space.
This fix that, allowing the style change if the requested change is to a solid color, but currently text with gradient fill is not allowed.

thank you

Thank you


Feature request: Flash/Pulse for Equaliser effect

I am trying to get my G560 speakers to flash/pulse on beat.
I'm aware that device support has been requested, however I currently have them set up as a generic device in Aurora.
The current Audio Visualiser's "Equalizer Effect Type" are all centred around a keyboard with different animations. These aren't suitable for a non keyboard, light only, device as they don't show up well with the animation and detract from the effect of being an Audio Visualizer. Can a pulse/flash Equalizer Effect please be added to the Audio Visualizer Layer type.
Also, "View Type" would need to have a Colour Cycle mode with a colour change speed control as currently the "Gradient Color Shift" goes too fast when concentrated on just the speakers and again detracts from the effect of the Audio Visualizer.

can you precise what you mean with pulse/flash Equalizer Effect?
-change speed when music is louder?
-light up when music is over a specific loudness level?
-only on certain frequencies?
Also can you further describe what you mean with colour change speed control.
Also you can set lower animation speed by using the Override System.
I do not understand what you want to tell me with: Concentrated on just the speakers and again detracts from the effect of the Audio Visualizer?

Hi @gitmacer
With regards to:
can you precise what you mean with pulse/flash Equalizer Effect?
-change speed when music is louder?
-light up when music is over a specific loudness level?
-only on certain frequencies?
The speakers are made up of (i think) 2 on the sides of each of the L + R speakers. Then there is a cluster of 4 LEDS at the back of each of the speakers (L+R).
Generally from what I've seen, you have those options already. You have "Scale with Volume" which I'm assuming changes with volume? If not, yes showing up brighter when louder would be great.
It also appears you can select the frequencies, so I'm not worried about that. I will just have to find the best frequencies.
However, the issue is not so much the customization but the animations. Currently there are three effects "Power Bars", "Waveform", Waveform (from bottom).". When using these effects they translate badly to a strong flash of colour when there are not multiple keys to shows these animations. The Power Bars, for example,  create a kind of flickering effect from what would be the top end of the bar effect if on a keyboard that could display it. This obviously weakens the effect when you are expecting the lights to flash on the beat (Frequencies). It does flash up on the beat (sort of), but it also has a flickering occurring from it trying to translate the Power effect to a cluster of four single LEDs (on the back of the speakers) that are trying to throw a single flash of color on a beat. "Waveform" almost doesn't show up at all as it does not translate well at all to a flash of color. It tends to make the side speaker LEDS glow only.
Essentially, the animations themselves are not appropriate for LEDs that just need to throw out non-animated color on beats. The animations just need to be removed and a single color/colors flashed without animations.
On a side note, having presets for some effective frequencies for which to flash on would also be great.
Also you can set lower animation speed by using the Override System.
I do not understand what you want to tell me with: Concentrated on just the speakers and again detracts from the effect of the Audio Visualizer?
Again, these issues are created by single LED clusters trying to translate effects like "Gradient notched Color", "Gradient Color Shift" and "Gradient (Horizontal/Vertical)". Single LEDs can't display these effects. These just translate badly. The "Gradient Color Shift" is probably the best, but creates almost a flickering sort of color change.
I also don't seem to be able to see the "Effect Speed" option on any of these settings in the Override System.
I hope this was clear. It's a bit hard to describe.
I have attached some photos for reference purposes.

Hi @gitmacer
With regards to:
can you precise what you mean with pulse/flash Equalizer Effect?
-change speed when music is louder?
-light up when music is over a specific loudness level?
-only on certain frequencies?
The speakers are made up of (i think) 2 on the sides of each of the L + R speakers. Then there is a cluster of 4 LEDS at the back of each of the speakers (L+R).
Generally from what I've seen, you have those options already. You have "Scale with Volume" which I'm assuming changes with volume? If not, yes showing up brighter when louder would be a great option to have

.
It also appears you can select the frequencies, so I'm not worried about that. I will just have to find the best frequencies.
However, the issue is not so much the customization but the animations. Currently there are three effects "Power Bars", "Waveform", Waveform (from bottom).". When using these effects they translate badly to a strong flash of colour when there are not multiple keys to shows these animations. The Power Bars, for example, create a kind of flickering effect from what would be the top end of the bar effect if on a keyboard that could display it. This obviously weakens the effect when you are expecting the lights to flash on the beat (Frequencies). It does flash up on the beat (sort of), but it also has a flickering occurring from it trying to translate the Power effect to a cluster of four single LEDs (on the back of the speakers) that are trying to throw a single flash of color on a beat. "Waveform" almost doesn't show up at all as it does not translate well at all to a flash of color. It tends to make the side speaker LEDS glow only.
Essentially, the animations themselves are not appropriate for LEDs that just need to throw out non-animated color on beats. The animations just need to be removed and a single color/colors flashed without animations.
On a side note, having presets for some effective frequencies for which to flash on would also be great.
Also you can set lower animation speed by using the Override System.
I do not understand what you want to tell me with: Concentrated on just the speakers and again detracts from the effect of the Audio Visualizer?
Again, these issues are created by single LED clusters trying to translate effects like "Gradient notched Color", "Gradient Color Shift" and "Gradient (Horizontal/Vertical)". Single LEDs can't display these effects. These just translate badly. The "Gradient Color Shift" is probably the best, but creates almost a flickering sort of color change.
I also don't seem to be able to see the "Effect Speed" option on any of these settings in the Override System.
I hope this was clear. It's a bit hard to describe.
I have attached some photos for reference purposes.

Hi @gitmacer
With regards to:
can you precise what you mean with pulse/flash Equalizer Effect?
-change speed when music is louder?
-light up when music is over a specific loudness level?
-only on certain frequencies?
The speakers are made up of (i think) 2 on the sides of each of the L + R speakers. Then there is a cluster of 4 LEDS at the back of each of the speakers (L+R).
Generally from what I've seen, you have those options already. You have "Scale with Volume" which I'm assuming changes with volume? If not, yes showing up brighter when louder would be great.
It also appears you can select the frequencies, so I'm not worried about that. I will just have to find the best frequencies.
However, the issue is not so much the customization but the animations. Currently there are three effects "Power Bars", "Waveform", Waveform (from bottom).". When using these effects they translate badly to a strong flash of colour when there are not multiple keys to shows these animations. The Power Bars, for example, create a kind of flickering effect from what would be the top end of the bar effect if on a keyboard that could display it. This obviously weakens the effect when you are expecting the lights to flash on the beat (Frequencies). It does flash up on the beat (sort of), but it also has a flickering occurring from it trying to translate the Power effect to a cluster of four single LEDs (on the back of the speakers) that are trying to throw a single flash of color on a beat. "Waveform" almost doesn't show up at all as it does not translate well at all to a flash of color. It tends to make the side speaker LEDS glow only.
Essentially, the animations themselves are not appropriate for LEDs that just need to throw out non-animated color on beats. The animations just need to be removed and a single color/colors flashed without animations.
On a side note, having presets for some effective frequencies for which to flash on would also be great.
Also you can set lower animation speed by using the Override System.
I do not understand what you want to tell me with: Concentrated on just the speakers and again detracts from the effect of the Audio Visualizer?
Again, these issues are created by single LED clusters trying to translate effects like "Gradient notched Color", "Gradient Color Shift" and "Gradient (Horizontal/Vertical)". Single LEDs can't display these effects. These just translate badly. The "Gradient Color Shift" is probably the best, but creates almost a flickering sort of color change.
I also don't seem to be able to see the "Effect Speed" option on any of these settings in the Override System.
I hope this was clear. It's a bit hard to describe.
I have attached some photos for reference purposes.

Hi @gitmacer
With regards to:
can you precise what you mean with pulse/flash Equalizer Effect?
-change speed when music is louder?
-light up when music is over a specific loudness level?
-only on certain frequencies?
The speakers are made up of (i think) 2 on the sides of each of the L + R speakers. Then there is a cluster of 4 LEDS at the back of each of the speakers (L+R).
Generally from what I've seen, you have those options already. You have "Scale with Volume" which I'm assuming changes with volume? If not, yes showing up brighter when louder would be great option to have.
It also appears you can select the frequencies, so I'm not worried about that. I will just have to find the best frequencies.
However, the issue is not so much the customization but the animations. Currently there are three effects "Power Bars", "Waveform", Waveform (from bottom).". When using these effects they translate badly to a strong flash of colour when there are not multiple keys to shows these animations. The Power Bars, for example, create a kind of flickering effect from what would be the top end of the bar effect if on a keyboard that could display it. This obviously weakens the effect when you are expecting the lights to flash on the beat (Frequencies). It does flash up on the beat (sort of), but it also has a flickering occurring from it trying to translate the Power effect to a cluster of four single LEDs (on the back of the speakers) that are trying to throw a single flash of color on a beat. "Waveform" almost doesn't show up at all as it does not translate well at all to a flash of color. It tends to make the side speaker LEDS glow only.
Essentially, the animations themselves are not appropriate for LEDs that just need to throw out non-animated color on beats. The animations just need to be removed and a single color/colors flashed without animations.
On a side note, having presets for some effective frequencies for which to flash on would also be great.
Also you can set lower animation speed by using the Override System.
I do not understand what you want to tell me with: Concentrated on just the speakers and again detracts from the effect of the Audio Visualizer?
Again, these issues are created by single LED clusters trying to translate effects like "Gradient notched Color", "Gradient Color Shift" and "Gradient (Horizontal/Vertical)". Single LEDs can't display these effects. These just translate badly. The "Gradient Color Shift" is probably the best, but creates almost a flickering sort of color change.
I also don't seem to be able to see the "Effect Speed" option on any of these settings in the Override System.
I hope this was clear. It's a bit hard to describe.
I have attached some photos for reference purposes.

I created a profile that could be like you want but it probably needs some value tweeking for your system.
It uses the override system so read here to find out more.
1 key EQ VU meter.zip

I created a profile that could be like you want but it probably needs some value tweeking for your system. It works best on music with big volume differences because it can only react to all frequencies.
It uses the override system so read here to find out more.
1 key EQ VU meter.zip

Hi @gitmacer Thanks for your help here.
I have loaded in your profile. I can see your logic changes in the Override System (though i'm not yet use to the logic process there). Unfortunately the LocalInfo/SpeakerLevel value is not being detected. I changed this to SystemVolume and I'm getting all constant red with no change regardless of volume level or beat. I'm not sure yet how to tweak the variables effectively, but i'm going to assume it is simply the SpeakerLevel detection not working that has broken this for me. Amy hints for getting this to work?
Also, ultimately what I'm after is a color cycle mode that flashes or perhaps the brightness changes on beats (or a combination of both) as I always found the 2 tone color mode fairly limited. The color cycle speed will be adjustable. Either way, I can tweak this when I get more familiar with the specific variables and functions. I guess I need to get the SpeakerLevel detection working first.
Cheers

Looking into this, it looks like the "Blinking" Layer Type is what I'm after if this was to be added as a View Type in the Audio Visualizer  and the Equalizer Effect Type could be turned off.
With both these things added, it would also enable the ability to just have a "Solid Color" beat flash as well by simply disabling the Equalizer Effect Type and changing the View Type to the already included Solid Color option.
The other feature would be the ability to add Opacity Level to Equalizer Effect Type so that (if wanted) the speakers (or other device) would flash brighter based on the frequencies set as well.
I hope this has clarified the feature request.

Looking into this, it looks like the "Blinking" Layer Type is what I'm after if this was to be added as a View Type in the Audio Visualizer  and the Equalizer Effect Type could be turned off.
With both these things added/changed, it would also enable the ability to just have a "Solid Color" beat flash as well by simply disabling the Equalizer Effect Type and changing the View Type to the already included Solid Color option.
The other feature would be the ability to add Opacity Level to Equalizer Effect Type so that (if wanted) the speakers (or other device) would flash brighter based on the frequencies set as well.
I hope this has clarified the feature request.

Try to select the right audio device in the settings also you can tick the debug checkbox to see the values to check if it changes when you play a sound.

@gitmacer I have assigned the device for GSI Playback Device (and the GSI Recording Device) in General Settings and I have no change. There is still no reaction from the LocalInfo/SpeakerLevel option.

Have you a audio app like nahimic installed?

Have you a audio app like nahimic installed?

Nope. I just did a look through my Program Files and installed programs. I had broadcaster software which I just uninstalled and restarted my PC. Nothing I can see that ties directly into my audio besides the Realtek driver/software.

I guess you also don't use a USB audio device

For my headset I do. It's got a little USB DAC for the headset... but this is what is handled by G Hub. the G560 speaker themselves also USB controlled, but again, this is handled by G Hub. Other than that, no.

Can you try if it works when you playback audio over your onboard realtek audio? USB Soundcard can cause problems if so you can try if it works when you passthrough the audio through virtual audio cable and set it as GSI playback device and enable playback in the windows settings.

Set "Realtek High definition audio" as GSI playback device.
Set "Realtek High definition audio" as Windows playback device.
Restart Aurora

It should look like that

Can you try if it works when you playback audio over your onboard realtek audio? USB Soundcard can cause problems if so you can try if it works when you passthrough the audio through virtual audio cable and set it as GSI playback device and enable playback in the windows settings.

Set "Realtek High definition audio" as GSI playback device.
Set "Realtek High definition audio" as Windows playback device.
Restart Aurora

It should look like that

Looks like you nailed it on this one. I plugged my headphones in directly to the Realtek Onboard audio and it worked. I can even keep the speaker audio plugged into USB and it passes it through to the lights. With a little tweaking for its responsiveness (at the moment  it needs a bit more bass end tweak), an option for a color blink/cycle and it'll be pretty close. Thanks for your work on this one.
Unfortunately, the fact that it needs some sort of pass through for USB audio does also mean that the way in which you have configured it does not work for the speakers. Hopefully this will at least help others with non-animated type devices though.

@gitmacer, looks like you nailed it on this one with the issue. I plugged my headphones in directly to the Realtek Onboard audio and it worked. I can even keep the speaker audio plugged into USB and it passes it through to the lights. With a little tweaking for its responsiveness (at the moment it needs a bit more bass end tweak), an option for a color blink/cycle and it'll be pretty close. Thanks for your work on this one.
Unfortunately, the fact that it needs some sort of pass through for USB audio does also mean that the way in which you have configured it does not work for the speakers. Hopefully this will at least help others with non-animated type devices though.

@gitmacer, looks like you nailed it on this one. I plugged my headphones in directly to the Realtek Onboard audio and it worked. I can even keep the speaker audio plugged into USB and it passes it through to the lights. With a little tweaking for its responsiveness (at the moment it needs a bit more bass end tweak), an option for a color blink/cycle and it'll be pretty close. Thanks for your work on this one.
Unfortunately, the fact that it needs some sort of pass through for USB audio does also mean that the way in which you have configured it does not work for the speakers. Hopefully this will at least help others with non-animated type devices though.

with virtual audio cable you can create a useable middle software device to get the data from and you can still listen to the sound when the speaker are used.
With that aproach the lights will flash depending on the overall loudness and you can't choose the frequencies to listen.
BTW: you can reduce the flashing by enabling smoothing on the normal Audio layer.

OK, so i gave this a go and the virtual connection did work which is great in the interim if i need it before device support is added.
As far as the light flashing by level, it's not quite the right responsiveness for music without adjusting for frequencies. The smoothing ... i'm not sure if it is better in for music visualization or not.
I definitely feel like this would need to be implemented as previously mentioned:

Looking into this, it looks like the "Blinking" Layer Type is what I'm after if this was to be added as a View Type in the Audio Visualizer and the Equalizer Effect Type could be turned off.
With both these things added/changed, it would also enable the ability to just have a "Solid Color" beat flash as well by simply disabling the Equalizer Effect Type and changing the View Type to the already included Solid Color option.
The other feature would be the ability to add Opacity Level to Equalizer Effect Type so that (if wanted) the speakers (or other device) would flash brighter based on the frequencies set as well.
I hope this has clarified the feature request.

In any case, thank you for your help on this one @gitmacer


Cannot unbox a type object (VMNull) to int.

[1] > variations([],2)
Cannot unbox a type object (VMNull) to int.
  in method pull-one at /home/demanuel/.raku/sources/8C90CE9BD69E1A7610021238EC68B91E8677F102 (Math::Combinatorics::Variations) line 60
  in any <main> at /usr/share/perl6/runtime/perl6.moarvm line 1
  in any <entry> at /usr/share/perl6/runtime/perl6.moarvm line 1

Wouldn't be better if it returned an empty list instead instead of failing?

I only just noticed this issue. I've pushed a fix. Should be on zef shortly.


Add seminar 15

@BrikerMan Thanks for helping 梦琪 for sending this PR for our meeting notes!
I have invited you to our BOT5 Club team so that you will be able to have the write privileges of our repo.
Please accept it by visiting https://github.com/wechaty, and then feel free to merge this PR by yourself!


how to pass a component as function argument?

Modern c++ is very difficult for me and the level here is high. please i want to do something like this:
//comp.hpp

struct _t1_tag {};
struct _t2_tag {};
struct _t3_tag {};

using id = entt::identifier<_t1_tag, _t2_tag, _t3_tag>;

constexpr auto ty_t1_tag = id::type<_t1_tag>;
constexpr auto ty_t2_tag = id::type<_t2_tag>;
constexpr auto ty_t3_tag = id::type<_t3_tag>;

//other.cpp
#include "comp.hpp"
void Game::setComp(entt::entity e, const entt::id_type??? p_comp)
	{
			m_registry.emplace<p_comp>(e);
	}

sorry for the english

You can't use a runtime parameter as a template argument.
I mean, you can't do that in C++ and therefore you can't do that with EnTT. 🤷♂
However, you can use the opaque emplace to achieve the same result maybe?
void Game::setComp(entt::entity e, const entt::id_type p_comp) {
    m_registry.storage(p_comp).emplace(e);
}

Finally i decided to use a template solution. For nested function calls i modified some other stuff make them templates too.. ...
	void setComp(const entt::entity e)
		{
                   m_registry.emplace<T>(e);
		}

For now this simple aproach works super fast in main loop.. im still searching for a param solution...

Im really sorry for the mess my browser is very old and my conection is about 10 KB/s and all stuff with asycronous load like actions menu in the posts wont load so i cant edit or delete posts...  i forgot to put  template stuff
	template <typename T>
	void setComp(const entt::entity e)
		{
                   m_registry.emplace<T>(e);
		}

:)

No worries at all. I'm glad you solved. Closing the issue then. 👍


build(.devcontainer): install psql, clarify steps

Describe the bug
sudo service postgresql start
isn't needed in codespace-instructions.sh
Describe the issue
build(.devcontainer): install psql, clarify steps
To Reproduce
Steps to reproduce the behavior:

Go to https://github.com/freeCodeCamp/classroom/blob/main/codespace-instructions.sh

sudo service postgresql start
was introduced via https://github.com/freeCodeCamp/classroom/pull/385
Expected behavior
install psql, clarify steps
The same set of changes as https://github.com/ngillux/classroom/pull/1
Additional context
Relates to https://github.com/ngillux/classroom/pull/1
https://github.com/freeCodeCamp/classroom/pull/390
and https://github.com/freeCodeCamp/classroom/pull/385

Please contact @GuillermoFloresV if you have further questions about this. Thanks!


[KeyVault] - Update published samples

This commit regenerates published samples for KeyVault Keys.
I purposely excluded Key Rotation samples from being published as Key Rotation
is still in Preview...

@diberry FYI
If there's anything that you'd like changed feel free to let me know.
By the way, the way I did this was:

Make changes to sdk/keyvault/keyvault-keys/samples-dev
Run npx dev-tool samples publish --force from sdk/keyvault/keyvault-keys to regenerate samples
Selectively add the changes I wanted. Note that not all samples are ready to be published (specifically Key Vault Key Rotation is not yet in GA)

helloWorld looks good. Thank you.


Update actions

Codecov Report

Merging #13 (6b932d1) into main (fff6614) will not change coverage.
The diff coverage is n/a.

:exclamation: Current head 6b932d1 differs from pull request most recent head 9adba66. Consider uploading reports for the commit 9adba66 to get more accurate results

@@            Coverage Diff            @@
##              main       #13   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files           11        11
  Lines          328       328
=========================================
  Hits           328       328

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 fff6614...9adba66. Read the comment docs.


Fix the release workflow (#784)

Fix the release workflow and temporarily disable the e2e tests.

PR Checklist
PR Structure

[ ] This PR has reasonably narrow scope (if not, break it down into smaller PRs).
[ ] This PR avoids mixing refactoring changes with feature changes (split into two PRs
otherwise).
[ ] This PR's title starts with name of package that is most changed in the PR, ex.
paymentservice.stellar, or all or doc if the changes are broad or impact many
packages.

Thoroughness

[ ] This PR adds tests for the most critical parts of the new functionality or fixes.

What
Sync main and develop
Why
N/A
Known limitations
N/A

Something went wrong with PR preview build please check

Something went wrong with PR preview build please check

Something went wrong with PR preview build please check


Test and handover rotation snapshots

After https://github.com/DiamondLightSource/hyperion/issues/349 we are able to do snapshots just before the rotation. We should deploy and test this and confirm it works.
Acceptance Criteria

Rotation snapshots are working on the beamline
Scientist is happy with what they are putting in ispyb

need a flag to decide whether GDA or Hyperion is taking snapshots

we unanimously think medium

Need to:

Do a release
Test w/o beam


Add support for Temurin instead of AdoptOpenJdk

SUMMARY
AdoptOpenJdk choco package has been deprecated in flavor of Temurin
In addition, AdoptOpenJdk has been rebrand Temurin (Adoptium) and will provide upcoming version of java
ISSUE TYPE

Feature Idea

@kakawait, please check if issue was covered by #145.


Keep track of databases by storing database names in another database

In order to delete a database database names need to be stored in an internal database. Otherwise we wouldn't be able to list the databases we currently have. Got this from talking to @substack in person about their database needs.

To clarify, you would like to have the API expose something that would list all available to you databases, yea?

Yes!


Inputs not getting passed through to EGS game over Steam Link

[OriginSteamOverlayLauncher_Log.txt](https://github.com/WombatFromHell/OriginSteamOverlayLauncher/files/7230428/OriginSteamOverlayLauncher_Log.txt
OriginSteamOverlayLauncher - Copy.txt
)
I can see that steam is attaching to the process because the windowed application is the only thing transmitted to a steam link, however PS4 controller inputs aren't passed to the game, either the collection launcher or the actual game. OSOL doesn't sit in the directory of the games, and I'm on the latest release.

I'm having the same issue. I followed the LauncherURI instructions.

Confirm, this is still an issue.


Application settings name limited to 53 characters

It seems that there is a limit of 53 characters on Application settings names for Azure App Service on Linux. This limit does not seem to be documented. Additionally, the portal allows users to enter names longer than 53 characters but they are silently truncated to 53 characters as can be seen on Kudu.
https://github.com/MicrosoftDocs/azure-docs/issues/36178 discusses a 64-character limit, which seems wrong given our experience with Azure App Service on Linux and in any case would also seem to be not documented.
It would nice to disallow users from entering Application settings names longer than the limit in the portal to avoid problems and to document the limit in the FAQ for Azure App Service on Linux. In case the limit is supposed to be 64, it would be nice to fix the bug as well.

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

ID: 4ad93cdc-b192-914c-796c-b1e022d31df5
Version Independent ID: 56f48dbd-a0f0-a2ce-6ccc-0a82ae51a876
Content: Run built-in containers FAQ - Azure App Service
Content Source: articles/app-service/faq-app-service-linux.md
Service: app-service
GitHub Login: @msangapu-msft
Microsoft Alias: msangapu

Thanks for the feedback! We are currently investigating and will update you shortly.

@kpwbo, the product team is aware of this limitation and does intend to address it. As soon as I get more details about these changes, when it will roll out, I'll update this thread.
I'll close this issue but please feel free to @ down below if you have any additional questions.

@RyanHill-MSFT thank for the feedback; can you please share the timeline for this bug fix? This is very problematic, especially due to its "hidden" nature: in the Azure Portal, everything looks just fine.

@RyanHill-MSFT thank for the feedback; can you please share the timeline for this bug fix? This is very problematic, especially due to its "hidden" nature: in the Azure Portal, everything looks just fine.

The changes should be applied by April.


Flaky Test: solana-local-cluster::local_cluster test_leader_failure_4

AUTO-GENERATED. DO NOT EDIT.
📝 Buildkite Analytics

I believe this (and other local cluster tests) is flaky because we don't reliably spin up nodes and have them catch up with the rest of the cluster in these local cluster tests.
The flow is supposed to look like this for the non-bootstrap nodes:

Pull requests sent
Gossip votes observed
Insert repair tree
Request orphan repairs
Replay & freeze blocks
Vote (once staked)
OC blocks & make roots
Generate leader schedule
Keep activating stake

However, there seems to be a race condition where the later nodes to start up do not fully observe any gossip votes (step) and thus never repair/replay/vote/etc because they chuck them out during verify due to 1 of 2 reasons:

At first, we reject the votes because we don't see the vote account key in epoch authorized voters. E.g. the voting validator doesn't show up as staked until epoch 3 but we're seeing votes for epoch 0.
Later on, we fail because we don't have epoch stakes for the epoch because root bank never advances (because we're not voting and thus not rooting anything) and we only compute leader schedule 3 epochs ahead

A simple solution for this would be to insert the vote/stake accounts into genesis for these validator so they can immediately participate, have votes observed, etc.
We just need to be careful about which tests are explicitly trying to test stake activation.
The only remaining mystery for me is why the nodes spinning up (w/ the exception of non-bootstrap node 1) don't seem to observe gossip votes from the bootstrap node. This is the 1 node that is a verified voter to start with and could have votes observed to start the chain of events outlined above.


DFBUGS-32: Dummy

dummy PR to test backport change

@hoxhaeris @bradmwilliams can you please check why the bot is not adding the labels for the PR in this repo?
We have the necessary labels in the repo though: https://github.com/red-hat-storage/ocs-client-operator/labels?q=jira

@hoxhaeris @bradmwilliams can you please check why the jira bot is not adding the labels for the PR in this repo? We have the necessary labels in the repo though: https://github.com/red-hat-storage/ocs-client-operator/labels?q=jira

Hi @Nikhil-Ladha, we'll have a look.

@Nikhil-Ladha , I've found the issue. The Jira plugin does not have access to this repository, hence the API call is failing with a 403. I'll check what needs to be done to fix this.

@Nikhil-Ladha, the bot (openshift-ci-bot) needs admin access to this repository for the labels to work properly. You'll need to grant this access yourself if you have the required permissions, or request it from the org/repo owners.

From what I see, it is a part of the org: https://github.com/orgs/red-hat-storage/people?query=opens
And, that should work otherwise we would be seeing in other repos as well 🤔

Seems like we need to re-authenticate the bot for newly created repos.
I see the same issue for ceph-csi-operator repo as well: https://github.com/red-hat-storage/ceph-csi-operator/pull/61

/jira refresh

The issue seems to be resolved now.
Thanks a lot @hoxhaeris for helping in sorting this issue out 🚀


Pass data into template

   <template v-for="(action,index) in TableSettings.actions">
      <v-runtime-template :parent="item" :template="action.html"></v-runtime-template>
   </template>

item is a object that contains an id such as:
{
'id': 321
}

action.html have:
Edit
but _.get(this,'id') is undefine..

Why just not to use an   tag wihout v-runtime-template like these:

   <template v-for="(action,index) in TableSettings.actions">
      <a class='text-white hover-info' :href="`Edit.aspx?id=${item.id}`">Edit
   </template>

Because as i said, the a tag is coming from a variable action.html ..
you can see that i have for loop on TableSettings.actions, every action can be diff thing..
it can be a tag or even a button or anything..

What about using
 with a :href above?

it will not work cause action.html contains item.id, and the v-html will not render that item.id..

ok guys i solved it by looking at the source code of that lib.
 <v-runtime-template :template-props="{item}" :template="action.html"></v-runtime-template
im passing the item in the template-props so then the item is now accessible from the template


graph equality that ignores epoch and migration subdivisions

For epochs the idea would be to make sure the demes are "equal" in the examples below, by checking equality of sizes (and other attributes) over the demes' lifetimes rather than mandating equal numbers of epochs each with equal attribute values. The below example is obvious from visual inspection, but if you do the same with exponentially-changing epochs its less obvious! I haven't really thought through the best way of achieving this. Maybe take the union of each deme's epoch end times and split epochs for each deme at all the time points? Or instead of splitting epochs, just check deme sizes for a few (5?) evenly spaced times in each interval.
demes:
- name: A
  epochs:
  - start_size: 100

demes:
- name: A
  epochs:
  - {start_size: 100, end_time: 50}
  - {start_size: 100, end_time: 0}

And similarly for comparing migrations, the following three examples should be "equal". We could just compare resulting migration matrices here.
migrations:
 - {demes: [A, B], start_time: 100, end_time: 0, rate: 1e-4}

migrations:
 - {demes: [A, B], start_time: 100, end_time: 50, rate: 1e-4}
 - {demes: [A, B], start_time: 50, end_time: 0, rate: 1e-4}

migrations:
 - {source: A, dest: B, start_time: 100, end_time: 0, rate: 1e-4}
 - {source: B, dest: A, start_time: 100, end_time: 0, rate: 1e-4}

What's the use-case for this, out of interest?

I can think of two:

msprime to_demes()/from_demes() round trip tests. Hypothesis can generate examples with consecutive epochs (or migrations) that have identical parameters. These are merged during conversion back and forth (which is reasonable).
demes-slim tests demes sizes are set correctly by running a simulaiton and printing deme sizes in each generation. It's fairly easy to parse this output in python and construct a new demes graph, where each deme has 1 epoch per generation (deduplicated slightly, for consecutive epochs of constant-size). It would be easiest to just do a graph equality check at this point.


network id underflow

Describe the Bug
The trains & depot tabs show -1 as the network id, but on history & alerts it underflows to an unsigned integer:

To Reproduce
Steps to reproduce the behavior:

have some trains running to fill those tabs
click between them and compare

Save file & Username
Quezler
Log file
I'd rather not post that publicly since it contains ips and whatnot, please ping me (@Quezler#3982) on the factorio discord if you want it in your dm's.

My PC will not download your file due to "security risks". Could you upload it to a file sharing site (i.e. Google Drive or Dropbox)?

Unfortunately i don't have either of those on hand (not logged in), mind if i try sending it via a discord dm?

It's alright, I managed to reproduce it independently.
Unfortunately, this appears to be in LTN itself, LTN Manager is displaying exactly what it is getting. I'm going to reach out to Optera about this.

What part of the LTN API would send unsigned int for it to appear like that in your history?


Uni.invoke() (or call() or handle())

After some experience I find I prefer the map()/flatMap() API to onItem().
But it's really annoying that there's no equivalent shortcut way to call UniOnItem.invoke(), since it's an operation I use all the time.
I would like to see invoke() added to Uni, though perhaps it would make more sense to name it handle(), since it's a sort of event handlery thing. Or call() perhaps.

This issue came a few times. I, first, need to understand the use case, as most of the time, I've seen these methods used just for log purposes.
We want to add a log operator:

Uni.log(), Multi.log() - log all the events
Uni.onItem().log() - log item events
...

The log operator can log automatically (using a predefined log statement) or be used with a callback returning the String to be logged.
If requested, the log should be able to clean up the stack trace to be meaningful.
When not used for logging, these methods are often used to implement side-effects. While they cannot be discarded, users must be a bit careful with that.
About the naming, what about onItem(Consumer<T>)? The "traditional" method is named doOnNext which does not fit well with the rest of Mutiny.

This isn't anything to do with logging. (For logging I would need a matching method that is called on failures.)
It's specifically in order to be able to call side-effects, which are rather hugely important when one is writing data-access code. :-) The most basic operations like persist() and delete() and flush() are all side-effects.

About the naming, what about onItem(Consumer<T>)? The "traditional" method is named doOnNext which does not fit well with the rest of Mutiny.

You could call it affect(). Since it's used to cause an effect.

I like that name!
@jponge @kenfinnigan WDYT?

Is this the same as peek?

affect sounds weird to me, but it's probably due to how I translate that to 🇫🇷 😉
Some random ideas:

do(Consumer<T> item) (e.g., (...).onNext().do(this::persist).(...)
perform
trigger (might be nice)

do is a keyword in Java.

And trigger() is almost a bit too exciting and action-packed, perhaps. ;-)

do is a keyword in Java.

Yeah, I thought about it over lunch 🤦

In fairness, it's probably the least used keyword except for goto and strictfp.

I kind of like affect().
Some other options could be alter(), perturb(), transform(). Just a few I thought of, though may induce other connotations.

`peek is already used in Java streams for that purpose. I vote for the peek.

also?

peek is already used in Java streams for that purpose

I dunno, "peek" sounds kinda like the opposite of what this is. "Peek" sounds like something with no side-effect, whereas we've already established that the whole point of this operation is to do side effects.

I dunno, "peek" sounds kinda like the opposite of what this is.

I'd be totally happy with calling it "poke", however. 😝

Will poke get me infinite threads?
On Mon, 1 Jun 2020, 22:17 Gavin King<EMAIL_ADDRESS>wrote:

I dunno, "peek" sounds kinda like the opposite of what this is.
I'd be totally happy with calling it "poke", however. 😝
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/smallrye/smallrye-mutiny/issues/146#issuecomment-637079805,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AANKF2GHSWMNCFXSMEF7QBLRUQEG3ANCNFSM4NI76VLA
.

But peek doesn't have any effect -- on the processing pipeline. It lets you see the value and do something with it, but the pipeline isn't affected. Hence, you could also say that affect is the exact opposite :grin:

Sure, but I'm not writing a code that produces a processing pipeline. I'm writing code that does something interesting to the world. I DGAF what this operation does to the stream, since my program isn't about streams.

I'm not writing a code that produces a processing pipeline

Yea, well, you do. If you use the Uni API, you build a pipeline, even though there's ever only 1 item flowing through it.

Yea, well, you do.

That's the myopic perspective of the designer of a reactive streams library.
It's not my perspective as a user of the API. I'm trying to make an interesting program that does useful things. I actually don't care about reactive streams at all. When I look at my code I want to see information about how my program solves the problem the program is designed to solve. Not information about reactive streams.

Not information about reactive streams.

And that's why
on().item().invoke(sideEffect)

while surely very cool and elegant, arguably, to someone who's very myopically interested in reactive streams, is completely intrusive and annoying in my program which does interesting stuff that end users care about.

Actually it's a perspective of someone who hates reactive programming libraries and believes that if we really need to impose them on users, then we shouldn't try to hide what's really going on, because leaking abstraction etc. etc. etc. But I'm ready to agree to disagree.

Well, I'm trying to find a way to hate it slightly less.

Alright, so reflecting on @Ladicek point about peek() implying something that has no effect on the stream, I managed to clarify what I dislike about that name, and that suggested a better name.
So why don't I like peek()? Well, "peek" in English means to just sneak a quick glance at the item. Whereas what I'm going to do from this operation is actually use the item to do something very meaningful, perhaps even perform a side-effect on the item itself.
So why not call the operation use()? The name implies to me that I'm going to use the item without affecting or transforming the stream itself. It's a common English word, that's not a Java keyword, and that has just three letters in it!

Hear me out on this one. This reads really naturally, I think:
return factory.withSession(
		//retrieve a Book
		session -> session.find(Book.class, book1.id)
				.use( book -> session.remove(book) )
				.map( book -> "deleted " + book.title )
)

Kotlin has also

I am sure that every designer of the stream library had the same discussion. We already have a standard Java library. While some names may be less than perfect, they are well known and understood, so why not just stick with that? Easy to use reactive library is something to be excited about; a slightly better name for functionality that I already know under a different name is not.

I am sure that every designer of the stream library had the same discussion. We already have a standard Java library. While some names may be less than perfect, they are well known and understood, so why not just stick with that?

Ummmmm, because the other APIs are terrible, and terribly confusing?

We have tried to use the names from java.util.Stream in MicroProfile reactive streams ops. Feedback has not been good. While "known" it's just confusing and didn't work well (confusing names, hard to find the proper method...).

invoke and invokeUni have been added to the Uni class.


RequestChain not repeatable

Depending upon Service configuration it appears a resource.load() can result in a RequestChain being returned instead of a standard NetworkRequest.
If this request chain fails for some reason then it would be desirable to be able to requestChain.repeated() the RequestChain... however the previous wrappedRequest state is not cleared when the repeated RequestChain is created (i.e. the request's self.networking is still set from the original attempt to fulfil the request) - therefore attempting to call repeatedChain.start() results in an "already started" message, and no attempt to repeat the request over the network.
With wrappedRequest being a private variable - it is also not possible to recreate the request/chain with a reset internal state.

This is a good point: it does seem like a RequestChain should repeat the underlying request.
I’d like to drive this out with a use case or two if possible. Can you provide a sketch of what you’re doing?

All I am trying to to is react to a failed request (say server returns 500 error, or a network erro) by repeating the initial request. Normally in reaction to a "Tapp here to retry" type button.

Create request
Request is wrapped by a RequestChain, as I have configuration which chains the request to handle auth access token renewal etc.
Request is sent & fails.
User wants to retry the request - tapping retry button
Repeated RequestChain is created and executed
Retry fails as wrapped request has already been 'started'

OK, thanks for the use case! That is helpful. Rethinking my thinking on this, you’re spot on: the current behavior is incorrect. I’ll get a fix together, and ping you for a sanity check when it’s ready.

A side note on implementing “tap to retry” behavior, which you likely already know, but just in case it’s useful to you or any others reading: req.repeated() does not call req’s callback hooks a second time. In other words:
let request = resource.request(.post)
request.onCompletion { _ in print("hello") }
request.repeated().start()  // will _not_ say "hello" a second time

This is by design: the contract of Request is that it is a thing that happens exactly once, and has a single outcome that never changes once the request is done. Hooks can and should rely on the fact they they can be called at most once. (Look at #132, for example: repeating already-called hooks would cause requestCount to go negative.)
Be careful! This:
let req0 = resource.load()
let req1 = resource.load()

…is not the same as this:
let req0 = resource.load()  // request has hooks that update resource state
let req1 = req0.repeated()  // repeated request has no hooks
req1.start()

The latter example will not update the resource state. For that reason, you’ll usually want to implement “tap to retry” by calling resource.load() again, as ResourceStatusOverlay does. If you’re implementing tap to retry for mutating request (POST etc.), then you’ll probably want to pass around some kind of “make request and handle results” closure that you call twice instead of using repeated().
(The primary purpose of repeated() is to exist inside a request chain, for doing retries before any hooks get called. Note that inside a chain, the problem above doesn’t exist because hooks attached to the whole chain don’t get called until the chain declares itself done. In other words, the whole chain appears to be a single request. The different with “tap to retry” is that you can see a request fail, and you want to then see a different second outcome. Second outcome implies second request implies attaching hooks again.)

@jwardle: If you have a minute, would you mind testing #134 and see if it gives the behavior you expect?

@pcantrell: this issue appears to be fixed! Thanks!

I was attempting to create a reusable 'loading more' implementation using repeated(), however will review he above commentary to see if there is a better resource-centric method given my requirements!


Buffer Overflow when selecting Challenge 11

On the 66443dd i686-Linux build, I get a *** buffer overflow detected ***: terminated crash when selecting Challenge 11.
I've attached my eeprom.bin here (same one as issue #111): eeprom_20230828.zip

Weird, I tried it on a85a18774fc2a75eac870d5717236e22a97f7ecc and worked perfectly, then I tried on 66443dd and it crashed exactly as you said:
romdataInit: loaded rom, size = 33554432
memp heap at 0xb31ff010 - 0xb41ff010
rom  file at 0xb43ff010 - 0xb63ff010
*** buffer overflow detected ***: terminated
Aborted (core dumped)
Nice save file btw.

This is happening in the strcpy at mplayer.c:3702, as apparently the bot names for that challenge are exactly 12 characters long, while the name field is also 12 long.

Should be fixed now.


Can't resolve 'fs' when page is not in "pages" folder but exported from another component

Describe the bug
I use today an approach by module in all projects I develop
Nextjs is not really adapted for that as all pages are located in the pages folder.
I thus create a page in the pages folder that only re-export everything from a file placed in another folder like src/modules/Common/pages
Using this syntax in src/pages/home.jsx
export { default, getStaticProps } from "../modules/Common/pages/home";

Occurs in next-i18next version
8.2.0
Steps to reproduce
I made a repo on github that you can find here https://github.com/martinratinaud/next-i18nnext-issue
git clone https://github.com/martinratinaud/next-i18nnext-issue
cd next-i18nnext-issue
yarn
yarn dev

Expected behaviour
There should not be any problem and especially not
Failed to compile
./node_modules/next-i18next/dist/commonjs/serverSideTranslations.js:48:0
Module not found: Can't resolve 'fs'
null

OS (please complete the following information)

MBP 2019 16"
Firefox 88.0.1 (64 bits)

NextJs performs automatic bundle splitting, as your getStaticProps function only runs in a server environment, and needs access to NodeJs APIs like fs.
If you want to organise your pages/data fetching functions in some sort of custom way, you'll need to make this feature request to the NextJs team directly.
Good luck!

Thanks @isaachinman for the quick answer


Extracting text and author from a heise.de article

Example article: https://www.heise.de/newsticker/meldung/Facebook-Sicherheitscheck-verbreitet-falschen-Alarm-3582470.html
Standard session:
a = newspaper.Article('https://www.heise.de/newsticker/meldung/Facebook-Sicherheitscheck-verbreitet-falschen-Alarm-3582470.html')
a.download()
a.parse()

Actual behaviour:
a.text is a string of length 0 and a.authors contains 2 elements, i.e. 'heise' and 'André Kramer'.
Expected behaviour:
a.text contains the complete article text and a.authors contains just the one element 'André Kramer'.
Reproducible: always
Version: from PyPi, installed today

The author issue is because of the following tag: <meta name="DC.creator" content="heise online">
Newpaper's extractor's get_authors() method will check for dc.creator as this is used for authors.
Now the extractor also (correctly) identified this tag <meta name="author" content="André Kramer" />.
Given that it's found two different types of author tags with differing content, it might be reasonable to infer that one is incorrect. This package does not do so though, and so both are returned.

I have looked into the a.text problem and found that it is certainly an lxml.html parser problem. Specifically lxml.html.fromstring(doc) is called, which returns an object who's .text attribute is an empty string.
I have not yet found why the lxml parser failed on this particular article, but as it stands this is not a problem of the Newspaper package.


Remove unnecessary dependencies

@pseudotensor do you have any idea why requirements_runtime.txt was added?

@pseudotensor can we merge it?


broken windows build

The recently merged windows PR (#23) is failing to build the windows packages.
There is a complaint about an absolute path being found in the pyFFTW.egg-info/SOURCES.txt
https://ci.appveyor.com/project/conda-forge/pyfftw-feedstock/build/job/jxmffjos8pc21sik#L855
see related issue:  pyFFTW/pyFFTW#249

Strange that it didn't come up in the PR builds. 😕


disqusShortname was deprecated in Hugo version 0.120.0

https://gohugo.io/templates/internal/#configure-disqus

hey @flexxindicomplex, it is also fixed. please check


Contextual option leads to client side exception

What version of Node.js are you using?
16.13.1
What version of npm are you using?
8.3.0
What operating system are you using?
Linux (ubuntu 20.04)
Describe the Bug
When viewing a civilian and selecting the button to view a related vehicle it triggers a client side exception every time.
Expected Behavior
It should load the related vehicle details via the contextual button.
To Reproduce

When viewing a civilian and selecting the button to view a related vehicle it triggers a client side exception every time.

On what page does this occur?

That'd be helpful!

Fixed it already, actually!

Fixed it already, actually!

:fire: way too fast, thanks!


Batch Verification

Eh. You have no database. WTF?!?! Raw heroku
use golang + whatever mysql , nosql
or maybe try if you see a future . Postgres10 + ElasticSearch  :)
This way already verified stuff you have stored already.
but what do I know. My github is empty :(

There's no database because I don't want to store anything. The purpose of the project being open source is to prove as best I can that I don't store sensitive data. I would also prefer not to serve stale data to users and perform fresh verifications on request.


Trade status {}

Expected behavior
Send trade offer through Steam
Actual behavior
When I try to trade I'm getting an error right after the message "Preparing to send offer.."
Steps to reproduce the behavior
Trade
Other

[Operating System]: Windows Server 2016
[Node.js version]: Node 6.9.5
[How did you start the script]: node index.js

Error Stack
Getting this message:
Trade status
{}
My Steamguard was enabled less than 7 days ago, could that be the reason?

Yes, it could be the problem.

At skinmine.net I'm getting the error: You must have 2FA enabled, we do not accept trades that go into Escrow but at my website all I'm getting is: {}

Your account is not ready to trade then. Try to send a trade to someone, and see if it goes through.


docs: for commit and release.

Ref:

https://github.com/angular/angular.js/blob/master/DEVELOPERS.md#commits
https://www.conventionalcommits.org/en/v1.0.0/

Close as included in #115.


'fishhook.h' file not found

[✅] Review the documentation: https://facebook.github.io/react-native
[✅] Search for existing issues: https://github.com/facebook/react-native/issues
[✅] Use the latest React Native release: https://github.com/facebook/react-native/releases

Environment
Run react-native info in your terminal and paste its contents here.
React Native Environment Info:
System:
OS: macOS Sierra 10.12.6
CPU: (4) x64 Intel(R) Core(TM) i5-5257U CPU @ 2.70GHz
Memory: 31.63 MB / 8.00 GB
Shell: 3.2.57 - /bin/bash
Binaries:
Node: 10.1.0 - ~/.nvm/versions/node/v10.1.0/bin/node
Yarn: 1.9.2 - ~/.nvm/versions/node/v10.1.0/bin/yarn
npm: 5.6.0 - ~/.nvm/versions/node/v10.1.0/bin/npm
Watchman: 4.7.0 - /usr/local/bin/watchman
SDKs:
iOS SDK:
Platforms: iOS 11.2, macOS 10.13, tvOS 11.2, watchOS 4.2
IDEs:
Android Studio: 3.2 AI-181.55<IP_ADDRESS>14246
Xcode: 9.2/9C40b - /usr/bin/xcodebuild
npmPackages:
react: 16.6.1 => 16.6.1
react-native: 0.57.7 => 0.57.7
npmGlobalPackages:
react-native-cli: 2.0.1
react-native-update-cli: 0.1.0
Description
Describe your issue in detail. Include screenshots if needed. If this is a regression, let us know.
When upgrading react native to 0.57.7, using pod to add dependency compile will report an error.
in pods/FBRetainCycleDetector/FBAssociationManager.mm report the error
'fishhook.h' file not found

Reproducible Demo
When upgrading to 0.57.7  not have a demo
fixed
when i use
#import <fishhook.h>
fix this problem

same issue


v1.19.x vs v1.18.x compatibility with 3rd party services, especially solr

The Problem/Issue/Bug:

People on versions below v1.19 are referred to the HEAD version of docker-compose.solr.yaml, which does not work until v1.19.x
People upgrading to v1.19 with solr have to add the networks: line to make their project work.
The failure mode if people are missing the networks line is awful - ddev-router has a fatal that's hard to understand and says nothing about solr.

How this PR Solves The Problem:

[x] Add comment in docker-compose.solr.yaml explaining to remove the networks line below v1.19
[x] Figure out how to reduce the problems with people hitting the ddev-router issue with solr

Manual Testing Instructions:

[ ] Read docs
[ ] Try adding a service without the required networks line, and get the error
[ ] Try adding a service with the required networks line and see no error

Automated Testing Overview:

Nothing added at this point. It's possible we should add a test for the network-checking behavior

Related Issue Link(s):
Release/Deployment notes:

Here's what I can think of so far @jonaseberle - thanks so much! Will look at your proposals for release notes now though.

The notes are specific to solr. But what about redis, memcache, or any of a variety of other external services?

This is actually just version-specific test data.
But the solr recipe is linked here https://ddev.readthedocs.io/en/stable/users/extend/additional-services/#apache-solr. It already mentions that is going to be replaced by https://github.com/drud/ddev-contrib/tree/master/docker-compose-services/solr
or am I missing something?

@jonaseberle @heddn I requested review again because I did add a check for the networks element. Would appreciate if you could review and do the manual test. I'll put a link to the artifacts here as soon as it's built.

Sorry, I first misunderstood the direction this PR took ;)
It works fine and also works find if I happen to have additional custom networks.
But I seem to always get cached results. Here's my test setup:
docker-compose.redis.yaml:
services:
  redis:
    container_name: ddev-${DDEV_SITENAME}-redis
    # networks: [default, ddev]
    image: "redis"
    labels:
      com.ddev.site-name: ${DDEV_SITENAME}
      com.ddev.approot: $DDEV_APPROOT

ddev start - see the error message
uncomment the networks: line
ddev start - still see the error message
again ddev start - now it is ok

Also the other way around (removing the networks: line by e.g. checking out another branch of a project) yields the result from the previous ddev start.
I currently don't understand why, but app.ComposeYaml seems to contain cached data.

Thanks, I'll see if I can figure out why that happens. I know that the .ddev/.ddev-docker-compose-full.yaml doesn't get generated until ddev start but don't know how caching will happen otherwise, but I'll chase it.
Another thing I noticed in seeing test results is that the called code does a util.Failed(), terminating ddev, and it should instead bubble up the error to a more appropriate point.

You fixed the caching problem :)
A simple
services:
  redis:
    container_name: ddev-${DDEV_SITENAME}-redis
    networks: [default, ddev_default]
    image: "redis"
    labels:
      com.ddev.site-name: ${DDEV_SITENAME}
      com.ddev.approot: $DDEV_APPROOT

yields service "redis" refers to undefined network ddev_default: invalid compose project in ddev v1.18.
But adding it as a global network fixes that
# ddev v1.18 compatibility
networks:
  ddev_default:
    external: true

So yes, this saves v1.18 users from having to create a docker network themselves! Splendid, thank you! I am really happy.
I also tested with a Selenium setup (with VIRTUAL_HOST and HTTP_EXPOSE).

Ah, the problem is that the v1.18 network is defined like this:
networks:
  default:
    name: ddev_default
    external: true

So I didn't quite do it right. But not sure how to do it right, because of the namespace conflict over "default"

Yeah, I also tried if I could get rid of the external network definition but in the end couldn't find a way.
I am really happy that you integrated docker-compose by the way - that makes the testing matrix a lot smaller :)
Anyways, this is easy enough IMHO.


run experiment 1 and get all zeros for result

I also get this error: No such file or directory: '/home/dodinh/data/embeddings/word2vec/GoogleNews-vectors-negative300.vocab_sub_humour'
What's more, I think in line 544 of run_experiments.py, sys.args should be sys.argv.

Thanks for the report, I fixed the embedding path and the cmdline argument parsing. We still need to check what's going wrong with experiment 1.


Virtual time for Puppeteer

This is a prototype for integrating Virtual Time with Puppeteer.  Virtual Time tries to make the browser deterministic (by controlling the renderer process's view of time, which is paused while there are pending network fetches) and to reduce the CPU load (not wall time) for renders by eliminating unnecessary compositing and JS execution.
The general idea is the page should be (effectively) paused while it's being inspected, and after navigating or otherwise interacted with, some virtual time can be granted to let the page settle.  I've hooked this up to page.goto, page.waitFor() and page.screenshot.
I've added a deterministic object to the launch parameters (which is used to turn virtual time on):  e.g.
const browser = await puppeteer.launch({deterministic: {date: new Date()}});
...
The date controls what's returned by Date.now etc... in the browser.  Unless otherwise specified by deterministic:animationBeginFrameInterval, rAF now runs every 100 virtual milliseconds rather than at 60 fps.  RequestAnimationFrame no longer runs when virtual time is paused.
NB VirtualTime is an experimental chromium feature, and Chrome 66.0.3347.1 or newer is required for all of the flags to work.

I'm not really sure how this code review tool works, but I've fixed the two nits.
Re settings, currently whether or not to use virtual time is a global setting because --initial-virtual-time is a browser context setting.  It would be great if we could do that per WebContents but that's not currently possible.  See HeadlessContentBrowserClient::AppendExtraCommandLineSwitches.

I think overriding the virtual FPS with options.deterministic.animationBeginFrameInterval can be pretty useful too.

I don't think I understand usecases atm, but maybe I'll figure if I play with the virtual time more.

Using a local build of chrome (ToT + https://chromium-review.googlesource.com/c/chromium/src/+/937402) and your script (modified to launch my local build) the two gifs are the same.

Thanks; I'll be able to check once I get back from vacation on March, 10.

Hey Andrey I've updated the pull request to work with the latest ToT chromium. It passes the CQ now:)
I'd like to write some tests for this feature, but considering it needs ToT chromium I'm expecting those would fail on the CQ because that (I assume) downloads a release build of chrome. It will be some time before our chromium patches make it to a release build.  What do you think we should do here?

Hey Andrey I've updated the pull request to work with the latest ToT chromium. It passes the CQ now:)

@ADClarke nice! I'm happy the issues are resolved.

I'd like to write some tests for this feature, but considering it needs ToT chromium I'm expecting those would fail on the CQ because that (I assume) downloads a release build of chrome.

We depend on a particular revision of chromium that we roll from time to time, see "puppeteer" field in our package.json.
We're releasing 1.2.0 tomorrow; we'll be able to roll chromium to the current latest after that, your code will work just fine.

Ah interesting.  I added some code to check the version of chrome when using puppeter.connect, am I duplicating anything here?

I've added some tests, PTAL :)

Thanks that fixes it.  I did find another bug with begin frame timestamps however.  We'll need to wait for https://chromium-review.googlesource.com/#/c/chromium/src/+/972985 to land and be used by puppeteer before we can proceed however.

Closing this for now since @pavelfeldman is re-working the protocol for virtual time.

https://chromium-review.googlesource.com/c/chromium/src/+/1056405
It looks like the re-working is done, are we able to use virtual time with puppeteer now?

@lucemia you can use it already with raw protocol, using createCDPSession.
The reason we haven't exposed this yet is because there's no good debugging story ATM: virtual time doesn't work in headful.


Latest [Dev-6.0] branch broken?

Hi,
I just downloaded the latest Dev-6.0 branch to update my code and found I am getting a compilation error at line 1111 of indev.c saying LV_SIGNAL_DRAG_BEGIN  is undefined...
Upon investigation it looks like the header file lv_obj.h line 125 might have an issue with its comments which has inadvertently commented out this define... I fixed the comment locally and it seems to be fine now.
Perhaps @kisvegabor or @embeddedt can take a look and check.
Kind Regards,
Pete

Sorry about that... while block pasting I forgot that it would comment out the line as well. Fixed in latest dev-6.0.

No Worries @embeddedt, thanks...
Kind Regards,
Pete


[DCOS-37718] fix sdk security

In order to address DCOS-37718, I had to make some sdk_security changes, and I am upstreaming these here.
This also builds on @hectorj2f's change in #2498.
Some changes:

The security setup now supports arbitrary foldered service names
Security info is now stored for cleanup in the teardown fixtures

Retriggered CI: This PR was affected by an outage of json-schema.org in one of our dependencies. That's since been cleaned up so we should be good to go.

    def cleanup_security(service_name: str,
                         security_info: Dict) -> None:
    ...

>       for role_name, permissions in security_info["permissions"].items():
E       AttributeError: 'list' object has no attribute 'items'

@nickbp are you happy to merge these changes given that the HW tests that are failing are due to a known Mesos issue.
The template tests seem to be some disconnect between TC and GitHub as the builds there show green.

Yes, other PRs stuck on that failure have also been getting merged.


Use PointerEvent constructor, no need to support IE any more

This reverts commit 04e323d69ea72db228673be55eed2af696fc5e38, reversing changes made to b12d86f4cc899766f4480f4d659e37920822e8bb.
Fixes #13862.
Fixes #14437.

@openlayers/core If anyone could take a look at this, it would be greatly appreciated. Thanks in advance.


Bug report Preview On Github button does not work

Clicking Preview on Github button opens an empty browser (Microsoft Edge) tab but apparently no request to Github issued.

VSCode Version: 1.20.1
OS Version: Windows 10 1709

Steps to Reproduce:

Click Help --> Report Issue menu.
Bug report window opens up.
Fill in the fields.
Click Preview on Github button.

Does this issue occur when all extensions are disabled?: Yes

Are you able to open links from other applications, like Slack or Outlook? What version of Edge are you using?

Unfortunately I use neither Slack nor Outlook. But clicking Help --> Documentation menu opens documentation in Edge. Sendfeedback menu in Libre Office also opens related page in Edge.
I can not get the Edge version (neither in Edge, nor in App list in Settings). But install date is 14.12 .2018.

Just changed the default browser to Chrome. It worked. Seems something wrong with the Edge. I will change the default back, and report the result.

It is working now! I don't know what is changed but it definitely works. Sorry for the misinformation.


Need All Key Value pairs in FileMeta struct

Add all the Key Value pairs that we get from the .torrent file into the FileMeta struct

All the field name(Key) and their data type can be found in the link below :
https://wiki.theory.org/index.php/BitTorrentSpecification
Under the heading Metainfo File Structure

Commit : 4885e1bd3f90aac864d05ea80a3362ddfea4ba47
It adds all the possible KEY :  VALUE that can be decoded from ".torrent" file into FileMeta Struct.
The Key Value pairs inside ".torrent" file are encoded in a format called "Bencode" and this commit fixes the above raised issue of putting all those key value pairs in a data structure FileMeta. So, that the information can be used to download things  that the torrent file was created to download.
https://wiki.theory.org/index.php/BitTorrentSpecification
Above link contains all the possible data and its format that can be extracted out of torrent file.


Add images for Topic

/botio build

From: MushinBot (botio-academy.horizen.global)

Received
Command cmd_build from @tuanhvdev received. Current queue size: 0
Live output at: https://botio-academy.horizen.global/81b9efb21b1acd9/output.txt

From: MushinBot (botio-academy.horizen.global)

Success
Full output at https://botio-academy.horizen.global/81b9efb21b1acd9/output.txt
Total script time: 1.91 mins
You can download the generated site at: https://botio-academy.horizen.global/latest.tar.gz
Or view a preview at https://devweb-academy.horizen.global


Plugin line-highlight always has a padding-left of 3em when data-line=""

Information:

Prism version:  1.29.0
Plugins: line-highlight
Environment: Browser

Description
if data-line="", the padding-left always is 3em.

The relevant CSS is as follows:
https://github.com/PrismJS/prism/blob/59e5a3471377057de1f401ba38337aca27b80e03/plugins/line-highlight/prism-line-highlight.css#L1-L4
Perhaps it would be better to modify it to the following format?
pre[data-line]:not([data-line=""]) {
	position: relative;
	padding: 1em 0 1em 3em;
}

Sorry, I'm confused what's the issue here?

Try using the line-highlight plugin with data-line="".

Yeah that seems intentional. If you want to change it, you should overwrite the rule in your site's CSS, but I don't think this is a bug.


Add linting suite to this project

The core team wants to ship a suite of linting tools that are tied directly to this project. The goal here is simple: Update this repository such that we can include and publish a set of eslint rules with RxJS that all projects can use.
This issue is "done" when:

[ ] We can build, test, and publish at least one lint rule from this repository.
[ ] The publish of the lint rules occurs when the rxjs package is published.
[ ] Documentation is included appropriately in the https://rxjs.dev site when we publish
documentation.

Other Thoughts

This may be a very good time to move over the amazing work that @cartant has done into this repository, so we can leverage it and keep it in sync between releases.
This particular issue isn't about creating lint rules for all individual deprecations. Just about getting something in place so we can do that.

Given that we simply don't have the bandwidth to execute on this. I'm closing this issue.


fix: add padding to artworks

I think a bit of padding can make the artwork grid a bit more clean

Thanks!


KubeSphere App Store

Research the tools provided below and document them in an explanatory manner.

MinIO
MySQL
Elasticsearch Exporter
stonedb-helm
databend-query
meshery
easegress
juicefs

Research about the tools is in the link.
https://gist.github.com/SeyyidhanTaskin/03eca5a39f243fae652b2fdad734a45f


Paho java client failing to connect: Bad user name or password (4)

Mongo DB authentication: When i user username "test5" and password "123" from paho JS client it works but from java client it doesn't.
I have this code

    MqttConnectOptions conOpt = new MqttConnectOptions();
    conOpt.setCleanSession(false);
    conOpt.setUserName("test5");
    conOpt.setPassword("123".toCharArray());
    MqttDefaultFilePersistence filePersistence = new MqttDefaultFilePersistence("/home/manish/Downloads/mqttPersist");
    client = new MqttAsyncClient(appProps.getProperty("mqtt.broker"),
            appProps.getProperty("mqtt.clientId"), filePersistence);
    client.setCallback(this);
    client.connect(conOpt, new IMqttActionListener() {
        @Override
        public void onSuccess(IMqttToken imt) {
            try {
                client.subscribe(Constants.INTERNAL_TOPICS, Constants.INTERNAL_TOPIC_QOS);
            } catch (MqttException ex) {
                ex.printStackTrace();
            }
        }

        @Override
        public void onFailure(IMqttToken imt, Throwable thrwbl) {
            thrwbl.printStackTrace();
        }
    });

i am getting this exception

Bad user name or password (4)
at org.eclipse.paho.client.mqttv3.internal.ExceptionHelper.createMqttException(ExceptionHelper.java:28)
at org.eclipse.paho.client.mqttv3.internal.ClientState.notifyReceivedAck(ClientState.java:885)
at org.eclipse.paho.client.mqttv3.internal.CommsReceiver.run(CommsReceiver.java:118)
at java.lang.Thread.run(Thread.java:745)

emqt console

06:47:36.456 [error] Client(notification_subs_bot@<IP_ADDRESS>:50741): Username 'undefined' login failed for username_or_password_undefined
06:47:36.463 [error] Client(notification_subs_bot@<IP_ADDRESS>:50742): Username 'undefined' login failed for username_or_password_undefined

According paho documentation public void setPassword(char[] password) So here i am passing char[] as paasword

I can say this is a bug someone must fix this

@mkj-git  Please check your password encryption type

Here is my ac.config

##--------------------------------------------------------------------
## MongoDB Auth/ACL Plugin
##--------------------------------------------------------------------

## Mongo Server 27017, <IP_ADDRESS>:27017, localhost:27017
auth.mongo.server = <IP_ADDRESS>:27017

## Mongo Pool Size
auth.mongo.pool = 8

## Mongo User
## auth.mongo.login =

## Mongo Password
## auth.mongo.password =

## Mongo Database
auth.mongo.database = mqtt

## auth_query
auth.mongo.auth_query.collection = mqtt_user

auth.mongo.auth_query.password_field = password

## Password hash: plain, md5, sha, sha256
auth.mongo.auth_query.password_hash = sha256

## sha256 with salt suffix
## auth.mongo.auth_query.password_hash = sha256 salt

## sha256 with salt suffix
## auth.mongo.auth_query.password_hash = salt sha256

## pbkdf2 with macfun iterations dklen
## macfun: md4, md5, ripemd160, sha, sha224, sha256, sha384, sha512
## auth.mongo.auth_query.password_hash = pbkdf2 sha256 1000 20

auth.mongo.auth_query.selector = username=%u

## super_query
auth.mongo.super_query = on

auth.mongo.super_query.collection = mqtt_user

auth.mongo.super_query.super_field = is_superuser

auth.mongo.super_query.selector = username=%u

## acl_query
auth.mongo.acl_query = on

auth.mongo.acl_query.collection = mqtt_acl

auth.mongo.acl_query.selector = username=%u

## acl_nomatch
auth.mongo.acl_nomatch = deny

@mkj-git  auth.mongo.auth_query.password_hash = sha256

yes this is already there and even if i give sha256 equivalent of my password i got same error you can try with a java paho client

try with a665a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae3

@mkj-git client password plain, mongodb password is sha256

what i am saying i tried with both plain & sha256
123
a665a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae3
in mongodb its a665a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae3

@mkj-git

06:47:36.456 [error] Client(notification_subs_bot@<IP_ADDRESS>:50741): Username 'undefined' login failed for username_or_password_undefined
06:47:36.463 [error] Client(notification_subs_bot@<IP_ADDRESS>:50742): Username 'undefined' login failed for username_or_password_undefined

Check the value of username from Pahojs to EMQTT for undefined

In paho if i setPassword("xyz") then it is expected to send the password. are you saying that paho client is not sending username & password to the broker.
I too have seen
06:47:36.456 [error] Client(notification_subs_bot@<IP_ADDRESS>:50741): Username 'undefined' login failed for username_or_password_undefined
and i was thinking that its broker bug

Can you confirm if client is not sending the credentials to broker or its broker issue. Because in either case its really a critical issue. I doubt anyone would be able to connect with paho client credntials

@mkj-git
You call the wrong method to connect MQTT server.
Replace
client.connect(conOpt, new IMqttActionListener() { // first parameter is Object not MqttConnectOptions, and it will create an empty MqttConnectOptions with empty user name and password.
to
client.connect(conOpt, null, new IMqttActionListener() {


[Fixed]: change color of submit button, social icons on contact page issue #241

This PR fixes issue #241
Screenshots
Before this PR

After this PR
Informatician.webm
Please review this PR.
Thanks

@harmeetsingh11 after hovering on submit button change it to the black


is_coroutine_function missing error with latest release 0.19.4

getting:
from quart.utils import is_coroutine_function

     E   ImportError: cannot import name 'is_coroutine_function' from 'quart.utils'

line of code that throws this error:
from quart.utils import is_coroutine_function
Environment:

Python version: 3.9
Quart version: 0.19.4

nvm, this was intentional as per this commit: https://github.com/pallets/quart/commit/6173414dcaf8be0d4286bf5951cff9497a080ad3


Tokenizer code make cpu full

Tokenizer make our java application cpu full. the version is current version.
see this code in
com.dangdang.ddframe.rdb.sharding.parsing.lexer.analyzer.Tokenizer#scanSymbol
while (null == (symbol = Symbol.literalsOf(literals))) {
            literals = input.substring(offset, offset + --length);
        }

if input like this:select * from a where a.x in(?,?,?,?,?,?,?) and there are n elements ? in this sql.
the loop code will execute n! times and make cpu full.
please check it , thanks.

we don't maintain 1.x any more, please upgrade


Picomc error during launch - missing positional arguments

Platform: MacOS
(base) ➜  ~ java -version
java version "1.8.0_202"
Java(TM) SE Runtime Environment (build 1.8.0_202-b08)
Java HotSpot(TM) 64-Bit Server VM (build 25.202-b08, mixed mode)
(base) ➜  ~ python -V
Python 3.7.2

The python is from anaconda.
Installed using pip install picomc
(base) ➜  ~ which pip
/usr/local/anaconda3/bin/pip
(base) ➜  ~ which picomc
/usr/local/anaconda3/bin/picomc
(base) ➜  ~ picomc config show
[default] java.path: java
[default] java.memory.min: 512M
[default] java.memory.max: 2G
[default] java.jvmargs: -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:G1NewSizePercent=20 -XX:G1ReservePercent=20 -XX:MaxGCPauseMillis=50 -XX:G1HeapRegionSize=32M

Trying to launch anything results in various errors:
(base) ➜  ~ picomc --debug play
DEBUG picomc, version 0.4.0
DEBUG Python 3.7.2
DEBUG Resolving default application root
DEBUG Using application directory: /Users/zajozor/Library/Application Support/picomc
DEBUG Loading Config from /Users/zajozor/Library/Application Support/picomc/accounts.json
DEBUG Commiting all dirty configs
Traceback (most recent call last):
  File "/usr/local/anaconda3/bin/picomc", line 8, in <module>
    sys.exit(main())
  File "/usr/local/anaconda3/lib/python3.7/site-packages/picomc/main.py", line 8, in main
    picomc_cli(obj=es)
  File "/usr/local/anaconda3/lib/python3.7/site-packages/click/core.py", line 722, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/anaconda3/lib/python3.7/site-packages/click/core.py", line 697, in main
    rv = self.invoke(ctx)
  File "/usr/local/anaconda3/lib/python3.7/site-packages/click/core.py", line 1066, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/anaconda3/lib/python3.7/site-packages/click/core.py", line 895, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/local/anaconda3/lib/python3.7/site-packages/click/core.py", line 535, in invoke
    return callback(*args, **kwargs)
  File "/usr/local/anaconda3/lib/python3.7/site-packages/click/decorators.py", line 64, in new_func
    return ctx.invoke(f, obj, *args[1:], **kwargs)
  File "/usr/local/anaconda3/lib/python3.7/site-packages/click/core.py", line 535, in invoke
    return callback(*args, **kwargs)
  File "/usr/local/anaconda3/lib/python3.7/site-packages/picomc/cli/utils.py", line 16, in wrapper
    fn(x, *a, **kwa)
  File "/usr/local/anaconda3/lib/python3.7/site-packages/click/decorators.py", line 64, in new_func
    return ctx.invoke(f, obj, *args[1:], **kwargs)
  File "/usr/local/anaconda3/lib/python3.7/site-packages/click/core.py", line 535, in invoke
    return callback(*args, **kwargs)
  File "/usr/local/anaconda3/lib/python3.7/site-packages/picomc/cli/utils.py", line 16, in wrapper
    fn(x, *a, **kwa)
  File "/usr/local/anaconda3/lib/python3.7/site-packages/click/decorators.py", line 64, in new_func
    return ctx.invoke(f, obj, *args[1:], **kwargs)
  File "/usr/local/anaconda3/lib/python3.7/site-packages/click/core.py", line 535, in invoke
    return callback(*args, **kwargs)
TypeError: play() missing 2 required positional arguments: 'am' and 'im'

and
(base) ➜  ~ picomc instance list
t
(base) ➜  ~ picomc --debug instance launch t
DEBUG picomc, version 0.4.0
DEBUG Python 3.7.2
DEBUG Resolving default application root
DEBUG Using application directory: /Users/zajozor/Library/Application Support/picomc
DEBUG Loading Config from /Users/zajozor/Library/Application Support/picomc/accounts.json
DEBUG Commiting all dirty configs
Traceback (most recent call last):
  File "/usr/local/anaconda3/bin/picomc", line 8, in <module>
    sys.exit(main())
  File "/usr/local/anaconda3/lib/python3.7/site-packages/picomc/main.py", line 8, in main
    picomc_cli(obj=es)
  File "/usr/local/anaconda3/lib/python3.7/site-packages/click/core.py", line 722, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/anaconda3/lib/python3.7/site-packages/click/core.py", line 697, in main
    rv = self.invoke(ctx)
  File "/usr/local/anaconda3/lib/python3.7/site-packages/click/core.py", line 1066, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/anaconda3/lib/python3.7/site-packages/click/core.py", line 1066, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/anaconda3/lib/python3.7/site-packages/click/core.py", line 895, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/local/anaconda3/lib/python3.7/site-packages/click/core.py", line 535, in invoke
    return callback(*args, **kwargs)
  File "/usr/local/anaconda3/lib/python3.7/site-packages/picomc/cli/instance.py", line 15, in inner
    return fn(*args, instance_name=sanitize_name(instance_name), **kwargs)
  File "/usr/local/anaconda3/lib/python3.7/site-packages/click/decorators.py", line 64, in new_func
    return ctx.invoke(f, obj, *args[1:], **kwargs)
  File "/usr/local/anaconda3/lib/python3.7/site-packages/click/core.py", line 535, in invoke
    return callback(*args, **kwargs)
  File "/usr/local/anaconda3/lib/python3.7/site-packages/picomc/cli/utils.py", line 16, in wrapper
    fn(x, *a, **kwa)
  File "/usr/local/anaconda3/lib/python3.7/site-packages/click/decorators.py", line 64, in new_func
    return ctx.invoke(f, obj, *args[1:], **kwargs)
  File "/usr/local/anaconda3/lib/python3.7/site-packages/click/core.py", line 535, in invoke
    return callback(*args, **kwargs)
  File "/usr/local/anaconda3/lib/python3.7/site-packages/picomc/cli/utils.py", line 16, in wrapper
    fn(x, *a, **kwa)
TypeError: launch() missing 1 required positional argument: 'im'

Let me know what am I doing wrong or what else can I provide!

Upgrading click seems to help with this:
(base) ➜  ~ pip list |grep click
click                              6.7
WARNING: You are using pip version 20.1.1; however, version 20.2.1 is available.
You should consider upgrading via the '/usr/local/anaconda3/bin/python3 -m pip install --upgrade pip' command.
(base) ➜  ~ pip install --upgrade click
Collecting click
  Downloading click-7.1.2-py2.py3-none-any.whl (82 kB)
     |████████████████████████████████| 82 kB 625 kB/s
Installing collected packages: click
  Attempting uninstall: click
    Found existing installation: click 6.7
    Uninstalling click-6.7:
      Successfully uninstalled click-6.7
Successfully installed click-7.1.2
WARNING: You are using pip version 20.1.1; however, version 20.2.1 is available.
You should consider upgrading via the '/usr/local/anaconda3/bin/python3 -m pip install --upgrade pip' command.
(base) ➜  ~ picomc play
Choose your account name:
>

Yes, that's the correct solution. Click 7 is a hard requirement. See abc5314

Thanks for the fix.
Would you mind updating the pypi version as well, so that it is easier to explain to some friends?


Documentation for enqueueAt and enqueueIn

Hi,
Is it possible to get some documentation/working examples of enqueueAt and enqueueIn, I've tried using enqueueIn example from readme, but looks like it only runs first-time when queue is defined.
Also noticed when enqueueIn task runs, others don't run. On second run, others run and enqueueIn task doesn't.
And for some reason I can't get enqueueAt working. Not sure what changed, I've already spent 7hrs to figure it out but haven't got anywhere.
I would appreciate any examples you can provide.
  What node version are you running?
> node test.js
worker started
scheduler started
worker polling math
worker polling otherQueue
worker paused
scheduler became master
scheduler polling
scheduler working timestamp<PHONE_NUMBER>
scheduler enquing job<PHONE_NUMBER> >> {"class":"subtract","queue":"math","args":[2,1]}
# First job delayed job popped from delayed queue

worker polling math
working job math {"class":"add","queue":"math","args":[1,2]}
job success math {"class":"add","queue":"math","args":[1,2]} >> 3
# ADD 1 complete

worker polling math
working job math {"class":"add","queue":"math","args":[1,2]}
job success math {"class":"add","queue":"math","args":[1,2]} >> 3
# ADD 2 complete

worker polling math
working job math {"class":"add","queue":"math","args":[2,3]}
job success math {"class":"add","queue":"math","args":[2,3]} >> 5
# ADD 3 complete

worker polling math
working job math {"class":"subtract","queue":"math","args":[2,1]}
job success math {"class":"subtract","queue":"math","args":[2,1]} >> 1
# SUBTRACT 1 complete

worker polling math
scheduler polling
worker polling otherQueue
scheduler working timestamp<PHONE_NUMBER>
worker paused
scheduler enquing job<PHONE_NUMBER> >> {"class":"subtract","queue":"math","args":[200,100]}
# Second job delayed job popped from delayed queue

scheduler polling
worker polling math
working job math {"class":"subtract","queue":"math","args":[200,100]}
job success math {"class":"subtract","queue":"math","args":[200,100]} >> 100
# SUBTRACT 2 complete

worker polling math
worker polling otherQueue
scheduler polling
worker paused
worker polling math
worker polling otherQueue
worker paused
scheduler polling

@evantahler apologies and Thank you, I realised it the next day, I had 2 processes running one with scheduler and one without, and that's why my results were all over the place. It works now as expected and beautiful :smile: .

Ahh! That would do it.
Thanks!

I think I am running into the same issue, it would not process the in and at.
await queue.connect();
  await queue.enqueue('math', 'add', [1, 2]);
  await queue.enqueue('math', 'add', [2, 3]);
  // queue.enqueueIn(3000, 'math', 'subtract', [2, 1]);
  const date = new Date();
  date.setSeconds(date.getSeconds() + 3);
  queue.enqueueAt(date.getTime(), 'math', 'subtract', [200, 100]);

Sometime it will get processed, but it is a lot longer than expected. I am not sure how to check the processes. Could you let me know what should I check? Thanks


Set ROBOT_LIBRARY_SCOPE dynamically

Is there a way to define ROBOT_LIBRARY_SCOPE = 'GLOBAL' when creating TestCase dynamically ?
Currently I have to define ROBOT_LIBRARY_SCOPE in the class of my library, but I'd like to have it defined during the creation of the test case.
For example, I tried this:
suite.resource.imports.library('MyLib.py')
# Add to Library a class property:
suite.resource.imports[-1].__class__.ROBOT_LIBRARY_SCOPE = 'GLOBAL'
setattr(suite.resource.imports[-1].__class__, 'ROBOT_LIBRARY_SCOPE', 'GLOBAL')

testCase = suite.tests.create('MyTest')
# Add to the TestCase a class property:
setattr(testCase.__class__, 'ROBOT_LIBRARY_SCOPE', 'GLOBAL')
testCase.__class__.ROBOT_LIBRARY_SCOPE = 'GLOBAL'

But when running this testCase, it ignores these class properties, and it has no effect on ROBOT_LIBRARY_SCOPE.
Thanks!

This isn't possible. Could you explain your use case?

When dynamically creating Test suite with an external python script, It usually required to import some libraries too, and it is done in that external script.
So it would be useful to set ROBOT_LIBRARY_SCOPE = 'GLOBAL', outside the library class definition, and avoid the need to add scope in every library, that might be imported later.
That's why it would be a nice option to set the library scope, when importing a library dynamically.

Could you please clarify? Also, are you interested to implement this functionality if we agree it would be a good idea?

I think to implement it, we'll need to set for example
lib._libcode.ROBOT_LIBRARY_SCOPE = 'GLOBAL'
inside _import_library of namespace.py.
But it is only possible during runtime, not during suite.resource.imports.library.
How can we import namespace, and use import_library() method, before suite.run() ?

I figure how to implement it, and I can add a new pull request. Which branch to clone, and how do I add my commit (git push) ?

Hi @pekkaklarck, did you see my PR https://github.com/robotframework/robotframework/pull/3189
?

Could you clarify the use case for this functionality? I don't see any reason why you'd like to set the library scope externally. Anything I can think of would be better handled by the existing library listener functionality.

See my previous comment  for the use-case.
I guess it will be useful mostly if it is required to import pre-existing python classes, which where not initially created for robot-framework.
This will prevent duplicating the same file (class) just for adding ROBOT_LIBRARY_SCOPE into it, as you'll be able to import the the file as library, and add the ROBOT_LIBRARY_SCOPE from the caller (outside the library file context).

Sorry, that comment didn't make the use case clear for me. Notice that I commented about that already earlier.
You now comment that the main use case is making it easier to use Python code that hasn't been designed to be a Robot Framework library as a library. Being able to use such code as libraries is sometimes works well, but I still don't think this feature is useful. If you just need to set the scope, you can do this:
from some.python.code import ClassNotDesignedToBeUsedWithRobot

class MyLibrary(ClassNotDesignedToBeUsedWithRobot):
    ROBOT_LIBRARY_SCOPE = 'GLOBAL'

A big benefit of this approach is that you can then add features to the library that make it easier to use with Robot without the need to touch the non-Robot code. I would assume something like that is needed in most cases anyway, so the benefit of not needing to specify ROBOT_LIBRARY_SCOPE are very small.
Also, and very importantly, this feature would only benefit people who use the programmatic API for creating tests.

Looks like easier approach! I will check if it resolves it for me.

Did it work?

My two cents worth - only because I was thinking about this kind of dynamic scenario yesterday. A bit different thing than this PR...
My use-case would be for libraries that maintain some sort of a state or cache something - it would be great to have the possibility reset that state/cache "automatically" with dynamic library scope (as opposed of creating explicit "reset()" KW and calling it when needed - from the test suite or library listener).
I.e. in some cases I want my library state/cache span across suites & tests (= global scope) and in other cases across tests (= suite scope).

Did it work?

Sorry, I wasn't able to test it through, as I moved to a new project now (my python env with robot is not installed). But I don't see any reason your suggestion will not work.
However, I believe that my PR might me useful as an alternative way, if we don't want to create a new class just to inherit other class and add library scope in it, as you suggested:
from some.python.code import ClassNotDesignedToBeUsedWithRobot

class MyLibrary(ClassNotDesignedToBeUsedWithRobot):
    ROBOT_LIBRARY_SCOPE = 'GLOBAL'

I think my PR is added feature, which afaik does not hold disadvantages or risks, but just a new optional usage to set ROBOT_LIBRARY_SCOPE dynamically.

@yahman72 Don't library listeners already provide that functionality?

@manosnoam I'm still not convinced the feature is useful in the first place. It would only help if you dynamically build test suites, not when creating test cases in *.robot files normally, and even when dynamically creating tests explicitly using ROBOT_LIBRARY_SCOPE feels a lot cleaner to me.
Even if I'd consider the enhancement useful, the PR could not be merged in the current state. It doesn't have any documentation so its very unlikely that anyone would ever find this feature it and know how to use it. It doesn't have any tests either so future changes would be very likely to break it.
My decision is to not add this functionality. My earlier comment explains the reasoning pretty well.


Automating adding contributors

Currently the way new contributors are added is by manually editing the JSON file, which is kinda hard.
I was thinking of adding a new way: if you comment on an issue with a username, that user will be auto-added to the contributors.
This is achievable using GitHub actions, I can open a PR. Just wanted to get your opinions on this idea.

for now, the contributors will be added manually. It's not just about the contributors of the repository but the contributors of the Community