SDFGI Is Splotchy On Large Uniform Surfaces

Godot version
Godot 4 nightly build
System information
Windows 10 v20H2, Intel i7 6700, Nvidia GTX1080, 16GB RAM
Issue description
SDFGI displays severe splotching and pockmarking artifacts in low-light environments and especially on large uniform surfaces with little texture or model breakup. Although this splotching seems to always be present, it is mostly present in these circumstances.
Steps to reproduce
In the following examples I have a room with a single thin window letting directional light in as well as skylight. This scenario has been recreated in the attached project file below.
Here, we can observe severe splotching of light and dark tones in a large bare room:

Even on smaller-scale surfaces and those with low detail frequency the splotching can be observed. Although it may look smooth from a distance:

Splotching occurs when the camera moves closer and GI detail is increased in the area:

Minimal reproduction project
I have provided an example file with a couple basic meshes and a capsule to represent the size of a regular player:
SDFGI_Splotchy_Bug.zip
Here are some screenshots of the effects that may be observed:
The leftmost structure is only partially enclosed with plenty of light spilling in. Although the effect is hardly noticeable close to the light, further into the structure where the light has difficulty reaching there are highly visible artifacts:

The rightmost structure is considerably larger with a thinner opening for light to enter. Although there is no detail frequency in the space, the GI lighting artifacts are chaotic:

All shots taken with 8 cascades, Y scale at 50% and Occlusion and Sky Influence active.

You can increase SDFGI's Probe Ray Count and Frames to Converge in the Project Settings to improve this.

Thanks! Will check this out and record the results if they’re significant.
It might be worth making a proposal to be able to restrict SDFGI to a probe domain like GI Probe? I understand if it’s not possible since the systems are inherently different.
Also I haven’t tested lightmaps and SDFGI in unison, but if lightmapping is used in a specific space would it be possible to stop SDFGI from influencing the same area?

It might be worth making a proposal to be able to restrict SDFGI to a probe domain like GI Probe? I understand if it’s not possible since the systems are inherently different.

SDFGI is designed to be used in open world scenes first and foremost, where bounds don't really make sense and aren't really feasible on a technical level.

Ah good to know. Just trying to think of ways to reach the most flexible and good-looking compromise, but it seems like with some extra elbow grease SDFGI is the way to go on the whole.

It might be worth making a proposal to be able to restrict SDFGI to a probe domain like GI Probe?

@WickedInsignia If you need more detail on an area, specifically and indoor area with a small but bright light source (like your test case), you can add a VoxelGIProbe. The VoxelGIProbe can blend over, or outright replace the GI contribution from SDFGI.

If you want to play around the the number of SDFGI frames to converge associated to each setting, you can change this line and recompile the editor: https://github.com/godotengine/godot/blob/9b034c930467606a7696d93020838c4f0c5f01e2/servers/rendering/renderer_rd/renderer_scene_render_rd.cpp#L65
Note that the project settings' text will not change, but the value associated to each setting behind the scenes will be changed successfully.

@Calinou I am merely but an artist haha. I'll have a look into that solution but I'm using Godot as shipped since I don't have the experience to change or recompile the editor code. Optimally, the ability to get a less splotchy result would be an in-editor setting. That may be asking for a lot though!
@clayjohn I hadn't tested GIProbe with SDFGI yet so I will give that a shot. Would using both together significantly reduce performance?

@WickedInsignia It depends on your hardware and the settings you use. But you are combining the cost of both effects so it will be more expensive than using either technique by itself. Thankfully VoxelGi is not very expensive to use at runtime (it requires baking though). You can also run VoxelGI at half resolution to make it even faster at runtime.

Another way to reduce splotches is to increase Bounce Feedback and decrease energy to compensate for the brighter result. This results in a more uniform look with more gradual fadeouts:
Bounce Feedback 0, Energy 1

Bounce Feedback 0.6, Energy 0.5

Nice! Seems to resolve the splotching to at least some level. Ran my own tests briefly, and it seems quite easy to hit the limits of Bounce Feedback becoming unusable, so potential users should be advised. It also took a few seconds for the adjustments to take effect so I made sure to wait until they settled.
Here's Bounce Feedback 0.8 and Energy 0.5. The large structure is quite nice:

However the small structure is unusable and bleeds through the geometry:

Setting it down to Bounce Feedback 0.7 and Energy 0.7 was a happy medium in this case:

It's also worth taking note of how drastic the SDFGI effect with this adjustments was depending on distance. The smaller structure looks vastly different at a distance:

I also attempted to use the VoxelGI, but found at default settings my framerate tanked and there was excess light leakage:

Lastly, I attempted to use LightmapGI at default settings but encountered even worse light leakage and some streaking artifacts. The lightmap options seem to differ considerably from 3.3.2 so I didn't bother taking shots. If you get some time, try this out since you'd probably know how to operate it better than I.
In conclusion none of the 3 GI options gave a satisfyingly smooth result (in my brief tests). VoxelGI was closest, but suffered excess light leakage. The lightmapping in Godot 4 gave vastly different results to Godot 3 in my other tests, but I'm probably not using it correctly and settled on defaults.
I absolutely don't expect the tools to do "all of the work" for the artist and there will always be caveats that need to be acknowledged, which is ultimately the goal of these bug reports.

I also attempted to use the VoxelGI, but found at default settings my framerate tanked and there was excess light leakage:

To improve performance, enable Half Size in the project settings. This affects both SDFGI and VoxelGI, and improves performance significantly at a small quality cost. The quality difference is less noticeable at higher resolutions. I have a pull request enabling that setting by default: https://github.com/godotengine/godot/pull/49738
To reduce leaking, adjust the GIProbe's position/rotation/extents a bit, bake again and experiment with values that make leaking less noticeable. Since the walls are axis-aligned in this demo, I would recommend playing with just the position and extents.

You can also use solid meshes with bake mode set to Static that you hide after baking the VoxelGI.

Awesome!! That’s really helpful, thank you. I’ll make sure to play with all of these a lot further and these tips will help a ton in my own projects.
Also very thankful for you thoroughness, since it presents viable solutions for other artists who come across the same issues.

After spending a half-hour teasing apart gi.cpp, and seeing that everything important is being done in compute shaders, I've found: https://github.com/godotengine/godot/blob/bf9cf7d0346968ca482465ffb1fc2bf94f2ae877/servers/rendering/renderer_rd/shaders/environment/sdfgi_integrate.glsl#L187

Ideally, rays would be fired off in evenly spaced directions, both spatially (i.e. over the ray count) and temporally (across the # of frames to convergence). Unfortunately, this is not the case with the existing implementation.
Even with 1 ray fired off per probe per frame, we should have an even distribution of rays if our convergence were set to a huge number of frames, with rays all evenly distributed. Well, I went ahead and implemented Godot's current ray vector calculation to visualize the distribution of rays across the ray count and number of convergence frames, and I think what I've found will give some insight that could lead to the improvement of Godot's new SDFGI lighting system.
Here's four rays being fired across four frames in Godot's SDFGI (yes, I know four frames isn't an option in the engine, I'm working with powers of two here per personal preference):

..
Off the bat we can see that distribution with these 16 total rays isn't very great, it's very lopsided. This is alleviated by increasing the ray count, of course, which directly impacts performance (along with the total number of probes). Also, Godot randomizes, or at least attempts to randomize, the ray vectors that each individual probe samples along - but in my experiments I've found that it simply rotates the same set of rays at a different orientation (around one axis) for each probe, rather than calculating a unique ray distribution for each. Not only that, but their orientation doesn't vary by much - they all seem to be within a very narrow angle range rather than 0-360.
Here are all of the rays Godot samples the scene with, at 1024 rays per frame, converging over four frames (i.e. 4096 rays total):

..
It would be nice if we could have 1024 rays per frame, per probe, but it's not a realistic number. Performance is greatly improved if we shoot fewer rays and compensate by increasing our number of frames that we converge across instead (albeit with lighting update lag as the caveat) ...but this is where things go sideways with the current implementation. Here we have 4 rays per frame, converging across 1024 frames (i.e. 4096 rays):

..
As you can see, spreading the rays out across multiple frames and averaging the result leaves us with huge swaths of the space around a probe completely missing from what would be an ideal sampling distribution. Of course, nobody is converging over 1024 frames, so lets try to find a happy medium. Here's what 32 rays per frame, converging over 32 frames looks like, from a more horizontal vantage point (i.e. 1024 rays total):

..
When we try to balance our rays/convergence out like this there are still "strata" that are not being included in the sample distribution. Here's 32 rays per frame but converging across 1024 frames (i.e. 32768 rays):

..

..
Godot uses the typical rendering coordinate convention where Y is vertical, which means that these visualizations have Y and Z swapped by comparison. Hence, the ray distributions you're seeing in these images are actually rotated on their side with their top/bottom hemispheres facing along the horizonal Z axis in Godot.
What this exercise demonstrates is that the ray distribution function should at least be inverted, if Godot is to continue using the vogel_hemisphere() function to calculate ray vectors for each probe each frame. Increasing the convergence frames that samples are averaged across should vary their vector the way that increasing the number of rays currently does, and increasing the number of rays should affect their distribution the way that increasing the convergence frames currently does. This would allow users to have lower ray counts in their games and less splotchiness, because increasing the frame convergence would mean having more rays that are better distributed. Frame convergence would be able to do a much better job at evening the lighting out. Right now increasing convergence frames still leaves bands of unsampled strata. Flipping the way history index and ray index are fed into vogel_hemisphere() would be more ideal for Godot's SDFGI. This also might help with issues around how varied lighting appears across cascades.
Another idea is to use some kind of PRNG noise function, instead of vogel_hemisphere(), which has a uniform distribution within a variable domain (ray_count X convergence_frames ???). I'm not an expert on that but it might be able to provide a better ray distribution for light sampling than vogel_hemisphere(). While I think my proposed solution to improving ray distribution will be worthwhile, there's still a bit of clumping in the ray vectors that could be evened out with a better function.
Lastly, ray counts and/or convergence frames could also vary based on cascade, where probes in the lower cascades (closer to the camera) fire more rays per frame and converge over less frames while the higher level cascades fire less rays per frame and converge over a higher number of frames - rather than all probes firing the same number of rays per frame and converge over the same number of frames. This would improve performance by reducing the total number of rays being fired per frame. Lighting closer to the camera could be sharper and update faster while lighting on the farther scenery would not just be lower quality but also update more slowly.
Hope this helps! :)


only 42 coins please

This change will set a limit at 42 coins which currently doesn't exist.  It will also stretch the time before reaching 42 coins to about 7 years from now by reducing the block reward slowly, rather than next year at block 990382 which is when 42 coins will be reached if there are no reductions in block award.  This will create a hard fork at block 498330.  A hard fork at some point will be necessary if there is to be a limit at 42 coins.

BUMP A DUMP.. lets fix this.  my pool runs 80-90% of the network and I am for this change..

If you want to discuss drop me a line<EMAIL_ADDRESS> peace --


CustomError: Client authentication failed - on every operation

CustomError: Client authentication failed     at SellingPartner.refreshAccessToken (E:\Web Development Repos\sp-api\node_modules\amazon-sp-api\lib\SellingPartner.js:378:13)     at processTicksAndRejections (internal/process/task_queues.js:93:5)     at async SellingPartner._validateAccessTokenAndRoleCredentials (E:\Web Development Repos\sp-api\node_modules\amazon-sp-api\lib\SellingPartner.js:242:9)     at async SellingPartner.callAPI (E:\Web Development Repos\sp-api\node_modules\amazon-sp-api\lib\SellingPartner.js:453:5)     at async E:\Web Development Repos\sp-api\index.js:12:17 {   code: 'invalid_client',   type: 'error' }
We're receiving this regardless of operation called. I'm guessing this means that there's an issue with one of our environmental variables, but I've double checked everything.
Just to clarify:
SELLING_PARTNER_APP_CLIENT_ID= this is the LWA client id?
SELLING_PARTNER_APP_CLIENT_SECRET= this is the LWA client secret?
AWS_ACCESS_KEY_ID= The access key ID from the IAM user?
AWS_SECRET_ACCESS_KEY= the secret access key from the IAM user?
AWS_SELLING_PARTNER_ROLE= This is the full ARN for the IAM role?

When i add the amzn1.application-oa2-client. to the front of the client_id...
I instead get
CustomError: Access to requested resource is denied.     at SellingPartner.callAPI (E:\Web Development Repos\sp-api\node_modules\amazon-sp-api\lib\SellingPartner.js:503:13)     at processTicksAndRejections (internal/process/task_queues.js:93:5)     at async E:\Web Development Repos\sp-api\index.js:12:17 {   code: 'Unauthorized',   details: '',   type: 'error' }

Hi @cs-pellsoftware,
the first error is definetly an issue with the client id or client secret being incorrect. You are right that you have to use the complete client id, including the "amzn1.application-oa2-client." part.
The second error is a step forward, it means that your configuration seems to be correct. This rather seems like an issue with the operation you are calling. Have you tried the getMarketplaceParticipations operation? That would be the easiest to test:
let res = await sellingPartner.callAPI({
  operation:'getMarketplaceParticipations'
});

Is that call working or do you receive the same error?

Hey @amz-tools  thanks for getting back to me. Good to know that the new error is 1 step further.
Yes, the operation that I'm calling is the getMarketplaceParticipations exactly as you have it written there. I followed the amazon directions step by step so I'm not sure what else it might be...

Another guess: What region are you using? Because this is also the exact error that is returned if using a region that is not registered for the use with the app.

@amz-tools interesting. I'm using "na", but I just tried the others to be sure.
Do you happen to know anything about Assuming Roles? That's the only other lead I have as to what could be happening here.

Hm, if something would be wrong with that you should usually receive a different error like "... is not authorized to perform: sts:AssumeRole ...".
Are you using a self authorized refresh token?

@amz-tools ahh interesting ok. That's good to know.
I believe so - I got the refresh token by doing Edit > Authorize in the developer central page and generating the refresh token. Do you suggest a different method for this?

Nope, thats what I would have suggested. Then I guess I'm running out of ideas for the moment...

@cs-pellsoftware, one more idea: Is your account a vendor account? Then you only have a subset of operations available, please see the last two answers for this closed issue.

@amz-tools No i don't believe it's a vendor account. I tried just about every operation and get that same response for each.
Do you know if not having the App be published could be causing any issues? When I was attempting to work with the API directly, people suggested setting a version=beta parameter. not sure if that's relevant at all

I had the same problem when my application wasn't configured correctly. The problem was in incorrect ARN used to create an application - https://github.com/amzn/selling-partner-api-docs/blob/main/guides/en-US/developer-guide/SellingPartnerApiDeveloperGuide.md#step-6-register-your-application

@cs-pellsoftware I know it works just fine in draft mode, at least if you are using your own self authorized refresh token. I don't think that Amazon has changed that.
Have you tried using the sandbox by setting use_sandox:true inside the constructor config options? Is it working?

I had the same problem when my application wasn't configured correctly. The problem was in incorrect ARN used to create an application - https://github.com/amzn/selling-partner-api-docs/blob/main/guides/en-US/developer-guide/SellingPartnerApiDeveloperGuide.md#step-6-register-your-application

@DeLaGuardo Thanks for your help. Can you explain what you mean here? Are you saying the user ARN wasn't correct?

@amz-tools unfortunately that's not working either.
I guess my next step is just to start from the beginning with a new App and triple check everything.

@amz-tools @DeLaGuardo
Do either of you know if the OAuth Login URI when creating the app can be causing issues? I wasn't sure if I needed to create that, so I did it. Maybe that's throwing off the authentication somehow?

@amz-tools Hey again - we started over because I realized we entered the User ARN instead of the Role ARN in the app settings. We have now created a second App using the Role ARN. We kept the same User and Role, but have new LWA credentials and Refresh token.
We're now receiving this error:
CustomError: Not authorized for requested operation     at SellingPartner.refreshAccessToken (E:\Web Development Repos\sp-api\node_modules\amazon-sp-api\lib\SellingPartner.js:378:13)     at processTicksAndRejections (internal/process/task_queues.js:93:5)     at async SellingPartner._validateAccessTokenAndRoleCredentials (E:\Web Development Repos\sp-api\node_modules\amazon-sp-api\lib\SellingPartner.js:242:9)     at async SellingPartner.callAPI (E:\Web Development Repos\sp-api\node_modules\amazon-sp-api\lib\SellingPartner.js:453:5)     at async E:\Web Development Repos\sp-api\index.js:24:17 {   code: 'unauthorized_client',   type: 'error' }
This is a different error than what we received before. Let me know if you have any ideas

Hi @cs-pellsoftware,
the error happens when the client tries to receive an access_token via https://api.amazon.com/auth/o2/token inside the refreshAccessToken function by using the LWA credentials and the refresh_token. The error unauthorized_client here probably means that the refresh_token isn't valid in combination with the LWA credentials. Are you sure you are using the correct refresh_token for the credentials or maybe still the old one?

Brilliant! It turns out our client did give us the refresh token from a different app. Thank you for all of your help!

Hi @cs-pellsoftware
I have the same problem as yours, requests are denied.
By checking your response, did you change your sellercentral application by using Role ARN ?

Hi @cs-pellsoftware
I have the same problem as yours, requests are denied.
By checking your response, did you change your sellercentral application by using Role ARN ?

Hey there - sorry for the slow reply.
My issue was ultimately using the wrong ARN. Once I switched to Role ARN (instead of user ARN) it worked. Let me know if you're still having issues and I can try to help.

Thanks for your suggestion.
I switched to Role ARN and it works for a while, but suddenly the API response "unauthorized_client"
does anyone have same problem?

Thanks for your suggestion. I switched to Role ARN and it works for a while, but suddenly the API response "unauthorized_client" does anyone have same problem?

@ytcitsupport-jlin you probably missed to update your session-token and the corresponding accessKeyId and secretKey


Renaming VO classes to basic nouns

To be a little more SDK-like and a little less verbose, I've opted to rename these classes to remove their VO postfixing.
Additionally, I've suppressed incorrect warnings from Android Studio about unused methods. These methods are called by runtime-generated code and are thus not actually unused
@Ricalo Feel free to grab me when you're ready to review :+1:
/cc @ShiftyLogic

I'll be happy to take a look at this with you later today, @iambmelt


macos audio display stops when computer sleep for too long

related to #297
although it very rarely crash which makes it not so high priority, the sleep thing can easily be fixed by a retry or something

Have a Great Week Galatians 6.9 KJV And let us not be weary in blessed monday: for in due season we shall reap, if we faint not


#163753158 updated signup passwords not matching error

Signup Page Fix

What this pr entails

After signup redirect
Password confirmation working

Prerequisites

A modern web browser eg. Chrome
Internet

How to test
1. Locally

Clone the repository    $ git clone https://github.com/kburudi/Questioner-UI/

switch to the UI directory folder    $ cd Questioner-UI/UI

open the index.html file in your preferred browser

2. Online

Click on the hosted link below
Questioner-UI

Related PT Board
163753158

Great work @kburudi


myjenkins: Preinstall suggested plugins

Duplicate of https://github.com/gmacario/easy-jenkins/issues/170


How to get the 2D Gaze point on the screenwith mediapipe?

I'm very new to eye tracking and mediapipe. Thanks for this great piece of work.
Could someone tell me how to get the 2D coordinates of the gaze point on the computer screen ? I'm not sure if this is supported OOTB or some other package like FaceAnalyzer must be used alongside.

Hello @akatav
This requirement might include MediaPipe Iris tracking as a part of the solution but not OOTB.
You will need following components to create a gaze point estimation:

The intersection between the normal of the eye R-roll and the screen surface gives the point of gaze. So you need to find the normal from the eye.
Since both the eyes have a certain distance, if the subject focuses on the left, the left eye will have lower eye roll than the right eye; and vice versa. Thus, the normal of the plane of eye R-roll can vary with eye movement and you will need to account for the change in the roll.
Distance between the eyes will need to be captured which can be done via MediaPipe since Iris tracking solution give landmark coordinates of the irises and output of depth(distance from camera)

Usually usage of a binocular camera is required to gauge the eye distance from the camera. However, since the common use case of such a gaze point estimation solution will be in the wild with mobile/desktop screens, you shall need to use monocular camera system. You might want to read research papers with respect to eye tracking with binocular systems and monocular systems. You can start this for tracking with mobile device (not an endorsed recommendation). Further, since you can use MediaPipe, we can eliminate the requirement of binocular systems and the distance from the camera can be estimated with less than 10% error rate.

Thank you @ayushgdev for the really helpful and informative answer.
okay, i will try it out as per the steps you have given. thanks again. if i do get it working, perhaps, i will submit a patch here for your review :)
thanks so much!

Sure @akatav . If you are satisfied with the resolution, can we close the issue?

ok, ayushgdev. I think WebGazer (brown univ) also does a good job using some form of ridge regression. although, another issue i am seeking answer to is whether calibration is always necessary. How to account for head movements and adjust the gaze points accordingly, is one other question I am interested in.

@akatav As in the points mentioned in last comment,

The intersection between the normal of the eye R-roll and the screen surface gives the point of gaze. So you need to find the normal from the eye.

Taking normal of iris automatically takes care of the head movements to a large extent. There can be two scenarios:

Only iris are rolling to move the gaze, like reading an article. In such case, the normal will start to shift automatically. Here mediapipe can help to track Iris movements but the app you are developing needs to take care of calculating the normal to it.
Only head is moving but the subject is still looking at the same word in the article(like looking sidewise). In such case, the iris has not moved at all so the normal will still remain the same and thus the gaze point.
Head is moving and eyes move with it, always pointing to the front of the face. In such situation, at the extremes, the subject would not be looking at the screen at all. MediaPipe wont detect any iris and this can be taken care of by checking if there are any landmarks or not.


Folder names conventions for static assets

Some articles are in violation of the convention specified in the contributing guide.

[x] aspnet/publishing/pubIIS should be renamed to aspnet/publishing/iis (assets directory should match name article)
[x] aspnet/mvc/views/forms/ should be renamed to aspnet/mvc/views/working-with-forms
[x] aspnet/hosting/aspnet-core-module/ANCM-502_5.png should move to aspnet/hosting/aspnet-core-module/_static/ANCM-502_5.png
[ ] aspnet/security/data-protection/consumer-apis/purposes-multi-tenancy/ should be renamed to aspnet/security/data-protection/consumer-apis/purpose-strings-multitenancy/
[ ] aspnet/performance/caching/response-caching/ should be renamed to aspnet/performance/caching/response/

@danroth27

This is part of the OPS work

@Shirhatti Are you planning to PR this? If not, then how urgent is it?

Not urgent. The script expects these conventions. Now, it just succeeds with some failures.
You can choose to fix it now, or in the manual pass later.

@shirhatti  please test scripts and close this if fixed

@Rick-Anderson Those 3 changes were good. I found 2 more inconsistencies. I have edited the issue

[ ] aspnet/security/data-protection/consumer-apis/purposes-multi-tenancy/ should be renamed to aspnet/security/data-protection/consumer-apis/purpose-strings-multitenancy/
[ ] aspnet/performance/caching/response-caching/ should be renamed to aspnet/performance/caching/response/

@shirhatti  I know how to look at the task list, no need to copy -:) I fixed those with #1600
So can we close this issue now?

Sorry. I misunderstood what you said.
I haven't had a chance to review. I'll re-run the script later today and let you know :)

I should have closed this issue on Jul 21, 2016 😄


cdk database support debezium properties

support debezium properties which connector doesn't direct declaration

close with #72


iOS: Make links clickable

I investigated this for half an hour or so, and while it is pretty simple to just evaluate the entire payload as Markdown, I don't want to do that, because that would be inconsistent with the Android app. Also, I want links to be highlighted regardless of whether someone adds [..](..) around it or not.
This seems trickier, and I gave up after 30min.
Some links:
https://stackoverflow.com/questions/57744392/how-to-make-hyperlinks-in-swiftui
https://www.hackingwithswift.com/example-code/system/how-to-make-tappable-links-in-nsattributedstring
https://swiftuirecipes.com/blog/hyperlinks-in-swiftui-text
https://www.raywenderlich.com/29501177-attributedstring-tutorial-for-swift-getting-started

Even just making notification text selectable/copiable would be a good start. At least you could then paste into the browser.

Hello, can confirm links are not clickable on my iPhone 12 Pro Max, iOS 14.4.1. Thanks.

I created a PR for this issue: https://github.com/binwiederhier/ntfy-ios/pull/14


Chore finish first part of admin settings

Finishing first part of admin settings at wirecard app.json

Actually, this app is available for Brazil only, enumered strings should be in pt-br, they are @talissonf  ?
For example, merchant may see Recorrente instead of recurrence, even if you have to pass recurrence to E-Com Plus APIs (treat this in your app code).

@matheusgnreis , I was wrong about examples property (array), it's valid for JSON Schema draft 6, so you may use it when you think it's helpful.
Even that, description must be as complete as possible and should also show example value when it's not obvious.
Don't be confused about examples and enum, enum must be used when we have a list of predefined values, and others will not be validated, examples is just a list of possible values, but others may also be used and validated.

@matheusgnreis @leomp12 The use of the examples may be interesting in some cases, when the property value is a string or integer the example is displayed in the input placeholder. But when it is an object or array the example is ignored.

Actually, this app is available for Brazil only, enumered strings should be in pt-br, they are @talissonf ?
For example, merchant may see Recorrente instead of recurrence, even if you have to pass recurrence to E-Com Plus APIs (treat this in your app code).

Currently all the application options are in en because I was developing the features based on the Ecomplus API, including the naming of certain terms.

@talissonf ok, so you can change it please? Just parse the string before handling requests to E-Com Plus APIs...
At the truth, imo the best approach is to implement a dictionary on form renderization (on market), maybe adding custom properties to schema (not JSON Schema defaults), but it would be more laborious, so maybe not now.


Push latest beta to NuGet

Unity version published on NuGet was two years. I think it would be great to push a new version even if as a beta.

I did but I had to pull it back because of all the problems with new build and new certificate.
I will publish new version some time next week.

Pushed latest beta2


Connect your virtual network to services in Azure without a public IP address at the source or destination.

[Enter feedback here]
Customer has stated this sentence is misleading, as the PaaS Service still has a public IP and this document should reflect that the IP can be locked down from public access, since it is not removed.

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

ID: fbfc7ccc-7fd0-9bb7-7d39-e9cfa09736ce
Version Independent ID: c0e7f101-5707-63ff-8193-c74a3e1d9a75
Content: What is Azure Private Link?
Content Source: articles/private-link/private-link-overview.md
Service: private-link
GitHub Login: @malopMSFT
Microsoft Alias: allensu

@JimPriestley Thank you for bringing this to our attention. I am going to have the Network engineering team evaluate this and make an update as appropriate.

@JimPriestley Thanks for the feedback! I have assigned the issue to the content author to evaluate and update as appropriate.

#please-close


Synthesis failed for nodejs-rcloadenv

Hello! Autosynth couldn't regenerate nodejs-rcloadenv. :broken_heart:
Here's the output from running synth.py:
rc/github/synthtool/env/bin/python3 -m synthtool --metadata synth.metadata synth.py --
2021-01-07 00:55:49,899 synthtool [DEBUG] > Executing /home/kbuilder/.cache/synthtool/nodejs-rcloadenv/synth.py.
On branch autosynth-9
nothing to commit, working tree clean
2021-01-07 00:55:50,032 synthtool [DEBUG] > Using precloned repo /home/kbuilder/.cache/synthtool/synthtool
DEBUG:synthtool:Using precloned repo /home/kbuilder/.cache/synthtool/synthtool
.eslintignore
.eslintrc.json
.gitattributes
.github/ISSUE_TEMPLATE/bug_report.md
.github/ISSUE_TEMPLATE/feature_request.md
.github/ISSUE_TEMPLATE/support_request.md
.github/PULL_REQUEST_TEMPLATE.md
.github/release-please.yml
.github/workflows/ci.yaml
.kokoro/.gitattributes
.kokoro/common.cfg
.kokoro/continuous/node10/common.cfg
.kokoro/continuous/node10/docs.cfg
.kokoro/continuous/node10/test.cfg
.kokoro/continuous/node12/common.cfg
.kokoro/continuous/node12/lint.cfg
.kokoro/continuous/node12/samples-test.cfg
.kokoro/continuous/node12/system-test.cfg
.kokoro/continuous/node12/test.cfg
.kokoro/docs.sh
.kokoro/lint.sh
.kokoro/populate-secrets.sh
.kokoro/presubmit/node10/common.cfg
.kokoro/presubmit/node12/common.cfg
.kokoro/presubmit/node12/samples-test.cfg
.kokoro/presubmit/node12/system-test.cfg
.kokoro/presubmit/node12/test.cfg
.kokoro/publish.sh
.kokoro/release/docs-devsite.cfg
.kokoro/release/docs-devsite.sh
.kokoro/release/docs.cfg
.kokoro/release/docs.sh
.kokoro/release/publish.cfg
.kokoro/samples-test.sh
.kokoro/system-test.sh
.kokoro/test.bat
.kokoro/test.sh
.kokoro/trampoline.sh
.kokoro/trampoline_v2.sh
.mocharc.js
.nycrc
.prettierignore
.prettierrc.js
.trampolinerc
CODE_OF_CONDUCT.md
CONTRIBUTING.md
LICENSE
README.md
api-extractor.json
renovate.json
samples/README.md
2021-01-07 00:55:50,170 synthtool [DEBUG] > Installing dependencies...
DEBUG:synthtool:Installing dependencies...
npm WARN deprecated<EMAIL_ADDRESS>NOTICE: ts-simple-ast has been renamed to ts-morph and version reset to 1.0.0. Switch at your leisure...
npm WARN deprecated<EMAIL_ADDRESS>Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)
npm WARN deprecated<EMAIL_ADDRESS>Use cheerio-select instead
npm WARN deprecated<EMAIL_ADDRESS>Chokidar 2 will break on node v14+. Upgrade to chokidar 3 with 15x less dependencies.
npm WARN deprecated<EMAIL_ADDRESS>The package has been renamed to `open`
npm WARN deprecated<EMAIL_ADDRESS>"Please update to latest v2.3 or v2.2"
npm WARN deprecated<EMAIL_ADDRESS>fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.
npm WARN deprecated<EMAIL_ADDRESS>core-js@<3 is no longer maintained and not recommended for usage due to the number of issues. Please, upgrade your dependencies to the actual version of core-js@3.
npm WARN deprecated<EMAIL_ADDRESS>https://github.com/lydell/resolve-url#deprecated
npm WARN deprecated<EMAIL_ADDRESS>Please see https://github.com/lydell/urix#deprecated

><EMAIL_ADDRESS>postinstall /home/kbuilder/.cache/synthtool/nodejs-rcloadenv/node_modules/core-js
> node -e "try{require('./postinstall')}catch(e){}"

Thank you for using core-js ( https://github.com/zloirock/core-js ) for polyfilling JavaScript standard library!

The project needs your help! Please consider supporting of core-js on Open Collective or Patreon:
> https://opencollective.com/core-js
> https://www.patreon.com/zloirock

Also, the author of core-js ( https://github.com/zloirock ) is looking for a good job -)

><EMAIL_ADDRESS>postinstall /home/kbuilder/.cache/synthtool/nodejs-rcloadenv/node_modules/@compodoc/compodoc
> opencollective-postinstall || exit 0

Thank you for using @compodoc/compodoc!
If you rely on this package, please consider supporting our open collective:
> https://opencollective.com/compodoc/donate

><EMAIL_ADDRESS>prepare /home/kbuilder/.cache/synthtool/nodejs-rcloadenv
> npm run compile

><EMAIL_ADDRESS>precompile /home/kbuilder/.cache/synthtool/nodejs-rcloadenv
> gts clean

/home/kbuilder/.cache/synthtool/nodejs-rcloadenv/node_modules/meow/index.js:61
		throw new Error(`Flag keys may not contain '-': ${invalidFlags.join(', ')}`);
		^

Error: Flag keys may not contain '-': dry-run
    at validateOptions (/home/kbuilder/.cache/synthtool/nodejs-rcloadenv/node_modules/meow/index.js:61:9)
    at meow (/home/kbuilder/.cache/synthtool/nodejs-rcloadenv/node_modules/meow/index.js:136:2)
    at Object.<anonymous> (/home/kbuilder/.cache/synthtool/nodejs-rcloadenv/node_modules/gts/build/src/cli.js:30:13)
    at Module._compile (internal/modules/cjs/loader.js:1063:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
    at Module.load (internal/modules/cjs/loader.js:928:32)
    at Function.Module._load (internal/modules/cjs/loader.js:769:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12)
    at internal/main/run_main_module.js:17:47
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR<EMAIL_ADDRESS>precompile: `gts clean`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>precompile script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR!  Exit status 1
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>prepare script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/kbuilder/.npm/_logs/2021-01-07T08_56_11_941Z-debug.log
2021-01-07 00:56:11,974 synthtool [ERROR] > Failed executing npm install:

None
ERROR:synthtool:Failed executing npm install:

None
Traceback (most recent call last):
  File "/home/kbuilder/.pyenv/versions/3.6.9/lib/python3.6/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/home/kbuilder/.pyenv/versions/3.6.9/lib/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/tmpfs/src/github/synthtool/synthtool/__main__.py", line 102, in <module>
    main()
  File "/tmpfs/src/github/synthtool/env/lib/python3.6/site-packages/click/core.py", line 829, in __call__
    return self.main(*args, **kwargs)
  File "/tmpfs/src/github/synthtool/env/lib/python3.6/site-packages/click/core.py", line 782, in main
    rv = self.invoke(ctx)
  File "/tmpfs/src/github/synthtool/env/lib/python3.6/site-packages/click/core.py", line 1066, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/tmpfs/src/github/synthtool/env/lib/python3.6/site-packages/click/core.py", line 610, in invoke
    return callback(*args, **kwargs)
  File "/tmpfs/src/github/synthtool/synthtool/__main__.py", line 94, in main
    spec.loader.exec_module(synth_module)  # type: ignore
  File "<frozen importlib._bootstrap_external>", line 678, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "/home/kbuilder/.cache/synthtool/nodejs-rcloadenv/synth.py", line 25, in <module>
    node.install()
  File "/tmpfs/src/github/synthtool/synthtool/languages/node.py", line 167, in install
    shell.run(["npm", "install"], hide_output=hide_output)
  File "/tmpfs/src/github/synthtool/synthtool/shell.py", line 39, in run
    raise exc
  File "/tmpfs/src/github/synthtool/synthtool/shell.py", line 33, in run
    encoding="utf-8",
  File "/home/kbuilder/.pyenv/versions/3.6.9/lib/python3.6/subprocess.py", line 438, in run
    output=stdout, stderr=stderr)
subprocess.CalledProcessError: Command '['npm', 'install']' returned non-zero exit status 1.
2021-01-07 00:56:12,024 autosynth [ERROR] > Synthesis failed
2021-01-07 00:56:12,024 autosynth [DEBUG] > Running: git reset --hard HEAD
HEAD is now at 719fef4 docs: add instructions for authenticating for system tests (#222)
2021-01-07 00:56:12,033 autosynth [DEBUG] > Running: git checkout autosynth
Switched to branch 'autosynth'
2021-01-07 00:56:12,038 autosynth [DEBUG] > Running: git clean -fdx
Removing __pycache__/
Removing node_modules/
Traceback (most recent call last):
  File "/home/kbuilder/.pyenv/versions/3.6.9/lib/python3.6/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/home/kbuilder/.pyenv/versions/3.6.9/lib/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/tmpfs/src/github/synthtool/autosynth/synth.py", line 354, in <module>
    main()
  File "/tmpfs/src/github/synthtool/autosynth/synth.py", line 189, in main
    return _inner_main(temp_dir)
  File "/tmpfs/src/github/synthtool/autosynth/synth.py", line 334, in _inner_main
    commit_count = synthesize_loop(x, multiple_prs, change_pusher, synthesizer)
  File "/tmpfs/src/github/synthtool/autosynth/synth.py", line 65, in synthesize_loop
    has_changes = toolbox.synthesize_version_in_new_branch(synthesizer, youngest)
  File "/tmpfs/src/github/synthtool/autosynth/synth_toolbox.py", line 259, in synthesize_version_in_new_branch
    synthesizer.synthesize(synth_log_path, self.environ)
  File "/tmpfs/src/github/synthtool/autosynth/synthesizer.py", line 120, in synthesize
    synth_proc.check_returncode()  # Raise an exception.
  File "/home/kbuilder/.pyenv/versions/3.6.9/lib/python3.6/subprocess.py", line 389, in check_returncode
    self.stderr)
subprocess.CalledProcessError: Command '['/tmpfs/src/github/synthtool/env/bin/python3', '-m', 'synthtool', '--metadata', 'synth.metadata', 'synth.py', '--']' returned non-zero exit status 1.

Google internal developers can see the full log here.

Autosynth passed, closing! :green_heart:

Autosynth passed, closing! :green_heart:


UI should be more explicit with errors - Chronograf

When an error is reported during query execution it is part of the result and its message is listed in a separate table.
It would be nice if Chronograf could be more explicit when such errors happen.
Graph view:

Raw data view:

I think this is no longer an issue


groupby apply drops cell and spacegroup

Installing rs from pypi with the following:
conda create -n rs python=3.10
pip install --upgrade pip
pip install reciprocalspaceship

I have rs=0.10.3 and pandas=1.4.4.
import numpy as np
import reciprocalspaceship as rs

cell = [34., 45., 98., 90., 90., 90.]
spacegroup = 19
dmin = 4.
repeats = 1

h,k,l = rs.utils.generate_reciprocal_asu(cell, spacegroup, dmin, anomalous=True).T

ds = None
for i in range(repeats):
    _ds = rs.DataSet({
        "H" : h,
        "K" : k,
        "L" : l,
        "I" : np.random.random(len(h)),
        "SIGI" : np.random.random(len(h)),
    }, cell=cell, spacegroup=spacegroup, merged=True).infer_mtz_dtypes()
    _ds['repeat'] = i
    if ds is not None:
        ds = rs.concat((ds, _ds))
    else:
        ds = _ds

ds = ds.set_index(['H', 'K', 'L'])

print(f"Before: {ds.spacegroup} ; {ds.cell}")

# This line will drop the spacegroup & cell
ds = ds.groupby('repeat', as_index=False).apply(lambda x: x)

print(f"After: {ds.spacegroup} ; {ds.cell}")

Output:
$ python test.py
Before: <gemmi.SpaceGroup("P 21 21 21")> ; <gemmi.UnitCell(34, 45, 98, 90, 90, 90)>
After: None ; None

This feels like an issue with groupby-apply in pandas -- it's possible that the _metadata fields aren't being propagated to the result. This works as expected with the built in methods (groupby().mean(), etc). This will take a bit to create a pandas minimal example to confirm that it happens there (and not because of something in rs).

makes sense. i did not try very hard to minimize this example. just wanted to document it before i forgot.


Browser Interactivity API should escape CSS IDs when building selectors

Describe the bug
The issue is here: https://github.com/vitest-dev/vitest/blob/a48be6ffc427aacccf19ed4c69d007fd0c7c8010/packages/browser/src/client/tester/context.ts#L47 — the raw ID is inserted into the CSS selector string as-is, but that may not always produce valid CSS, and causes an error during the test.
You can reproduce this issue just by defining a <button id=":foo"> and trying to use userEvent.click() on it.
Almost any string can be a valid HTML ID (see here), but that does not mean it can be used unescaped in a CSS selector. It is possible to escape characters outside the regular range by following these instructions. One could write a small function, e.g., sanitizeHtmlIdForCss(htmlId: string): string, and just call that on el.id before passing it into the string interpolation in the line of code I linked to above.
If this seems worth addressing I can submit this PR myself, just let me know. Thanks!
Reproduction
This is hard/impossible to reproduce in Stackblitz because it only applies in the browser, and I don't think Stackblitz can run those. But if you have a local project that runs tests in the browser, try creating an element with an ID of :foo, and call any userEvent method on it.
System Info
System:
    OS: macOS 14.5
    CPU: (10) arm64 Apple M1 Max
    Memory: 653.55 MB / 64.00 GB
    Shell: 3.7.0 - /opt/homebrew/bin/fish
  Binaries:
    Node: 21.7.1 - /opt/homebrew/bin/node
    Yarn: 1.22.19 - /opt/homebrew/bin/yarn
    npm: 10.5.0 - /opt/homebrew/bin/npm
  Browsers:
    Chrome: 126.0.6478.183
    Safari: 17.5
    Safari Technology Preview: 18.0
  npmPackages:
    @vitejs/plugin-react: ^4.2.1 => 4.2.1
    @vitest/browser: ^2.0.4 => 2.0.4
    vite: ^5.3.4 => 5.3.4
    vitest: ^2.0.4 => 2.0.4

Used Package Manager
npm
Validations

[X] Follow our Code of Conduct
[X] Read the Contributing Guidelines.
[X] Read the docs.
[X] Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.
[X] Check that this is a concrete bug. For Q&A open a GitHub Discussion or join our Discord Chat Server.
[X] The provided reproduction is a minimal reproducible example of the bug.

As a side note, ids generated by React's useId() hook are wrapped with colons, like :r1:, so the current behavior can be problematic in React projects.

I ran into this same problem with Cypress couple of months ago - exactly with useId() React hook. Maybe similar solution could work here: https://github.com/cypress-io/cypress/issues/27922#issuecomment-1886495055

I have also been running into issues with case-sensitivity in IDs (yes, CSS is generally case-insensitive, but this does not apply when it is referring to identifiers and class names in HTML). This issue can be replicated simply by making an HTML ID that uses uppercase letters. I am going to take some time this evening to make a PR. Does this project have regression tests that I could easily add to, to demonstrate the problem and fix?


Version bump to 2.8.4

Overview

This is a normal version bump to SCIM version 2.8.4

This is a patch release primarily to provide clear instructions when provisioning users with an invalid domain.
Find the changelog here
Changes

Version bump to SCIM version 2.8.4
No changes to the chart itself.

Checklist

[X] review the guide to contributing


Replace ;; with ; removing empty statements

A few instances had crept into the code
Not sure if this qualifies as a bug and therefore merging to 3.0 and 1.1.1.
Fixes #17525

For master only. I don't see this as a "bug" fix. The code works.

Maybe you want to fix this as well?
https://github.com/openssl/openssl/blob/144316d276adf5b8172316f7bc20b372b8e31ac8/engines/e_dasync.c#L211-L212

Fixed that and more.
Review required again.

Merged, thanks for the reviews.


Implementing Pagination for Large Sub-Attributes of SCIM Resources

Is your suggestion related to an experience ? Please describe.
The current SCIM specification does not address the challenges associated with managing large sub-attributes within SCIM resources. We are currently encountering performance issues when dealing with resources that have large lists of associated entities, such as:

Roles API: Handling roles with a large number of associated users
Groups API: Managing groups with a large number of members.
Users API: Retrieving users associated with multiple groups or roles.

Although the SCIM Working Group (WG) has acknowledged this issue, and a draft solution (expired) has been proposed, it has not yet been adopted as a standard. Therefore, we propose to develop our own solution to implement sub-attribute pagination based on our specific requirements.
Describe the improvement
We propose implementing sub-attribute pagination within our SCIM APIs. By doing so, we aim to improve API performance and scalability, particularly when dealing with large lists of sub-attributes.
Additional context

If the SCIM specification is updated later and conflicts with our implementation, changing the API afterward would be problematic. Therefore, we need to be cautious and design this solution to minimize the need for future adjustments.

The following issues were also observed in the UI.

When assigning users to a role, only a limited number of users can be assigned.

Can not search users from the name

The behavior is the same when assigning groups to a role.


add autoSave property

The autoSave property will persist every CodeMirror change to the
underlying text area by repeatedly calling codemirror.save().
This fixes an issue where a user will submit the form and expect the
current codemirror text to submit as the textarea value but due to some
quirk or unclear behavior, the textarea value is not set by the time an
onSubmit handler is triggered.

Good catch @defunctzombie, thanks!

This prop is listed in the docs, but it's no longer in the library since these changes were made to lib and were subsequently overwritten.


Allow wieldable guns to cycle in hand

About the PR

Applies https://github.com/space-wizards/space-station-14/pull/27307 to https://github.com/space-wizards/space-station-14/pull/26970
Why / Balance

At the moment, interacting in-hand while a gun wields it proceeds to unwield the gun rather than cycle it. Gun interactions can become click interactive and unintuitive, especially with pump action shotguns.
Technical details

Applies the new variable to the wieldable gun parent rather than to multiple guns, attempts to address the concern of applying variables en masse.
Changelog

:cl:

fix: Fixed guns to cycle in-hand after wielding.

Hey WarMechanic, thanks a bunch for your original PR. Im currently cleaning up gun yaml right now and im actually moving the stuff from base_wieldable.yml into a base_gun.yml with a bunch of other inheritable qualites. You want me to add this change in there?

Not saying you should close this. This will definitely take less review before merging and its sounds like a good change. If it gets merged before my thing Ill make the changes that I need to.

Hey WarMechanic, thanks a bunch for your original PR. Im currently cleaning up gun yaml right now and im actually moving the stuff from base_wieldable.yml into a base_gun.yml with a bunch of other inheritable qualites. You want me to add this change in there?

This sounds great, I'm pretty sure metalgearsloth had some concerns about value inheritance so that would probably clean up everything nicely.

Do I understand correctly that this makes the only way to unwield the gun right click? This would be a significant QOL downgrade for reloading, since now to get a free hand to grab your new magazine, instead of just pressing Z and C you have to toggle off harm mode, bring the mouse down to the gun and right-click then find Unwield. This is significantly slower and more distracting, requiring the player to divert both their mouse and their gaze from the action. In the middle of a firefight.
I don't think this feature should go through like this without addressing the issue it causes. I have seen it mention that switching hands while Wielding could unwield, that may be a good solution?

I have been informed you can switch to the second hand and press Drop to unwield. Also I coded the QOL thing I mentioned

Do I understand correctly that this makes the only way to unwield the gun right click? This would be a significant QOL downgrade for reloading, since now to get a free hand to grab your new magazine, instead of just pressing Z and X you have to toggle off harm mode, bring the mouse down to the hand windows to right-click the gun and find Unwield. This is significantly slower and more distracting, requiring the player to divert both their mouse and their gaze away from the action. In the middle of a firefight.
I don't think this feature should go through like this without addressing the issue it causes. I have seen it mentioned that switching hands while Wielding could unwield, that may be a good solution?

The current state of unwielding is terrible QoL for shotguns that need you to manually cycle after every shot. Where the natural course would be to interact in-hand to cycle the shot as you used to, you need to alt-click the gun to cycle it which takes much more effort. This PR addresses that, and allows you to Wield, Cycle, Eject and Unwield (through dropping offhand) purely through keybinds.

I have been informed you can switch to the second hand and press Drop to unwield. But by then I coded the QOL thing I mentioned, anyway

I think this could use a bit more discussion, because I believe that the off-hand wield could be used in the future for underbarrel weapons like the M-90 GL.

if that forum suggestion of wielding being a passive thing when you have a free hand was implemented, pressing z would always cycle and there would be no unwield so nothing to conflict with

the off-hand wield could be used in the future for underbarrel weapons like the M-90 GL.

I think this would essentially create tech debt, because it would cement a solution where only two-handed weapons can use this alternate fire, and it only supports exactly one alternate fire per weapon. So the moment anyone would want to go further than that, they would need to create a new, more accomodating solution anyway

the off-hand wield could be used in the future for underbarrel weapons like the M-90 GL.

I think this would essentially create tech debt, because it would cement a solution where only two-handed weapons can have such alternate fire, and it only supports exactly one alternate fire per weapon. So the moment anyone would want to go further than that, they would need to create a new, more accomodating solution anyway

we already have a form of alt fire, but it's for battery weapons


Switch to Azure Pipelines

Motivation
Consolidate CI providers. To be clear, Azure Pipelines was chosen for this monorepo (and a few other  projects) over Travis, AppVeyor, Circle, and Gitlab.
What does this PR do?
Implements 2 pipelines:

Changes: This triggers on every pull request that does not modify the base package and will always spin up a Linux (Ubuntu 16.04) and Windows (Windows Server 2019) VM. Any modified integrations will be tested on the main platform(s) they support.
All: This triggers on every commit to master or any pull request that modifies the base package and will test every integration in its own runner.

Some integrations require additional set up such as the installation of system dependencies. As we only want these extra steps to occur when necessary, there is a set-up-integrations.yml template ran for every job that will detect what needs to be done and execute the appropriate scripts in .azure-pipelines/scripts/<integration>. As integrations may need different set up on different platforms, all scripts live under a directory named after the platform. All scripts in the directory will be executed in lexicographical order.
AZP reference entrypoint: https://aka.ms/tfbuild
Future

I'll set up Codecov in a separate PR (it doesn't work OOTB)
After the release freeze is over next week I'll merge this, enable the pipelines, and remove the current CI
Get more runners
Enable for integrations-extras and some other repos
Implement caching when it's out of beta and there are Python examples
We can optimize the Changes (pull request) pipeline by having a single job (probably self-hosted so it starts instantly) that spins up a runner for each changed integration instead of running each sequentially in one (or two) runners

Additional Notes
Pinging @martinwoodward @willsmythe @johnterickson @brcrista @jeremyepling @chrispat @infin8x since I noticed you helped a few other OSS projects switch (CPython, Rust, etc.). I tried to write idiomatic AZP configuration and made heavy use of templating (kudos btw, it's really powerful). Please let me know if this looks alright to you 😃
I also had a few questions that I couldn't quite find in the docs, maybe you know:

Can you restart individual failed jobs instead of the whole build?
Can you set the priority of pipelines? Say we have 50 runners and we make a commit to master that queues up a job/runner for all 120+ integrations and then a pull request is opened. Is there a way to ensure any newly available runners are allocated to the pull request before the master pipeline?
Are there plans to add options for different Microsoft-hosted machine capabilities on a per-job basis? We are particularly interested in higher memory and access to GPUs.
Do OSS projects that pay for more runners/parallel jobs keep the initial 10 e.g. to get 11 must one pay for 1 or 11?

Very cool. Will take a look and let you know if I have any specific feedback, but looking fantastic so far.  the templating stuff is definitely the way to go when you are tying to keep things maintainable.
While I'm v happy to see you using Pipelines, wanted to make sure you'd seen the latest GitHub Actions announcement?  You should recognize a lot of the patterns and YAM syntax from your work with Pipelines so far and find it easy to adopt if it was interesting.  If you signed up for the Beta than @ethomson would be a great person for you to work with on the GitHub actions end if that is interesting.
Trying to answer some of the questions to be best of my knowledge below:

I don't know of a way - perhaps the other folks might?
I don't think so. Machines are controlled at the pool level but with the hosted pool you tend to only have one level of access. What we do with large builds on self-hosted infrastructure is change the pool that they are in based on how much resource we want to give to them.
At the moment, the only way to do this is to self-host an image which has the memory or GPU that you need.  Understood the reasons for this ask though, it's something we've definitely heard and makes sense but it's not yet on the immediate short term back-log
Yes, the 10 free are yours regardless of if you get more. We might be able to help add some here above the 10 you get free but why don't you take a look at GitHub Actions first and then see if this is something that you still want to do?

Can you restart individual failed jobs instead of the whole build?

When you set up, did you install Azure Pipelines from the GitHub Marketplace?  Then on the "Checks" tab in this PR, you will see each job that ran and can rerun failed ones.
You can check by going to Azure Pipelines and clicking "Edit" for your pipeline.  If you are not using the Azure Pipelines GitHub app, it will pop up a banner with a one-click that will switch you over.

@martinwoodward
Thanks for answering my questions! I'm glad this looks alright to you.
As for GitHub Actions, I did this work right before the announcement so it wasn't an option at the time. Though from what I've seen it looks amazing! I think we'll continue with Azure Pipelines for now until it's a bit more fleshed out and the concurrent job limit is raised. Honestly, it's quite comforting GitHub Actions is (roughly) built atop Azure Pipelines, so we know it won't go away anytime soon 😄
Also, we would definitely appreciate any additional runners that could be spared. That is extremely generous, thank you very much!!!
@brcrista
Thanks! We did indeed set up the app but I can't find a way to do as you said on non-PR/master jobs like: https://dev.azure.com/ofekmeister/integrations-core/_build/results?buildId=249&view=logs&j=d74967ea-228d-5634-fe5f-5bd874cd0575

Oh, outside of PRs, I don't think that feature is implemented.

We're switching today, thanks very much everyone!

Ah - thanks ofek.  Let me dig into that.

Getting your open source job limit increased to 35.  Should be increased soon.

@martinwoodward Thank you very much for fixing that! So going forward, will more purchases be automatically applied to our public projects or would we have to submit a ticket each time?
We plan to buy more either tonight or tomorrow morning since, as anticipated, our queue is still quite large:

Do you want to drop me a mail with more details? -<EMAIL_ADDRESS>


docker container error and api not accessible

HI,
I tried it running on latest docker on Mac. Got the following error when it starts up..looks like something to do with https? Also tried accessing the api with http://vmip:4002/ob/profile , it didn't work even the same port is mapped with the docker host. Any idea?
18:45:52.178 [fetch] [ERROR] Failed to fetch from https://ticker.openbazaar.org/api Get https://ticker.openbazaar.org/api: dial tcp: lookup ticker.openbazaar.org on <IP_ADDRESS>:53: read udp <IP_ADDRESS>:40874-><IP_ADDRESS>:53: i/o timeout
18:45:52.211 [getPointersFromGatewayRoutine] [ERROR] Error retrieving offline message from gateway: Get https://gateway.ob1.io/ipfs/providers/Qmcpq7AULSSFHb1uqoNQBkWGx33rPqDWT535RkLfGsg1Tq: dial tcp: lookup gateway.ob1.io on <IP_ADDRESS>:53: read udp <IP_ADDRESS>:42707-><IP_ADDRESS>:53: i/o timeout
18:45:52.213 [func4] [INFO] Starting bitcoin wallet
18:46:12.249 [fetch] [ERROR] Failed to fetch from https://bitpay.com/api/rates Get https://bitpay.com/api/rates: dial tcp: lookup bitpay.com on <IP_ADDRESS>:53: read udp <IP_ADDRESS>:45444-><IP_ADDRESS>:53: i/o timeout
18:46:30.657 [Publish] [INFO] Published zdj7WWTT8dF6vgNf775hU3YuJ86J3cER7Wpmrr8GqLU8JM4cM to IPNS
18:46:32.264 [fetch] [ERROR] Failed to fetch from https://blockchain.info/ticker Get https://blockchain.info/ticker: dial tcp: lookup blockchain.info on <IP_ADDRESS>:53: read udp <IP_ADDRESS>:52598-><IP_ADDRESS>:53: i/o timeout
18:46:52.321 [fetch] [ERROR] Failed to fetch from https://api.bitcoincharts.com/v1/weighted_prices.json Get https://api.bitcoincharts.com/v1/weighted_prices.json: dial tcp: lookup api.bitcoincharts.com on <IP_ADDRESS>:53: read udp <IP_ADDRESS>:50904-><IP_ADDRESS>:53: i/o timeout
18:46:52.322 [fetchCurrentRates] [ERROR] Failed to fetch bitcoin exchange rates

Hi @kiahmed. My pull request was just accepted into the master branch that fixed issue #763. That latest update might help you with accessing the API.
I also had a hard time getting the Docker container to work. I ended up creating my own this morning. You can find it here:
https://github.com/RPiOVN/docker-connextcms-p2pvps/blob/3dcf2487ee94473de76a576e02acc643760ee3e2/openBazaar/Dockerfile

thanks @christroutner ..will give it a try and let you know

Also, don't forget to set the "Addresses": {"Gateway": "/ip4/<IP_ADDRESS>/tcp/4002"} in the config file of your Dockerized server. I forgot to do that and have been wresting with my Docker container for the last few hours.

right..but I got into a chicken/egg problem here. As OB doesn't generate the data dir (where the config lives) , that leaves me to edit the file until the container starts. Then without restarting the container the OB server gateway ip doesn't take effect which gets rid of the existing config. I wonder how you dealt with that?
I am new into Docker, if I can stop the container getting rid of the data dir when it stops (but not deleted) or other solution might be passing the config file parameter during startup (doubt OB allows it as of now) from a different location or evn variable or something?

You need to tell docker to place the volume in a dir you can access better with -v /full/path/to/desired/dir:/var/lib/openbazaar
Then you can run the container, stop it, modify the file and start it back up.
Also, if you want to change the username/password you can do docker run -it -v /full/path/to/desired/dir:/var/lib/openbazaar openbazaar/server /opt/openbazaard setapicreds -d /var/lib/openbazaar

no i knew about the volume, but I was using one of your scripts to run the image and dint notice it had -rm switch . so its all good now. Thanks for your help. I am closing it.


[SPARK-39482][DOCS] Add build and test documentation on IPv6

What changes were proposed in this pull request?
This PR aims to add a documentation about building and testing on IPv6 environment.
Why are the changes needed?
Without building and testing, we cannot move forward.
This will help us achieve our goal to support IPv6-only environment.
Does this PR introduce any user-facing change?
No. This is a doc-only.
How was this patch tested?
Manually review.

Merged to master.

Thank you, @HyukjinKwon !


fix formatting

https://github.com/ROCmSoftwarePlatform/AMDMIGraphX/actions/runs/5401359191 Fixing failure on develop branch

I wonder how this got through.

I wonder how this got through.

Github CI was broken. Format check was failing in latest merge but because of space issue it didn't show up.
I've fixed CI  space issue now, so it should be fine.


treewide: remove lib.mdDoc usage

Gets rid of the warning that lib.mdDoc is not necessary anymore with current NixOS unstable.

@samueldr is anything missing to get this PR merged or were we just waiting until the pinned Nixpkgs version was updated?

Thank you @RossComputerGuy.
Sorry, I just haven't had the time to do most things here.


Fix DNS resolvers to reset the backoff in a better place.

No functional changes here; just a small code cleanup.

Known issues: grpc/grpc-node#168


Subscriptions via Server-Sent Events

It would be amazing to support Subscriptions also via Server-Sent Events.
Here an example in JS: https://github.com/CodeCommission/subscriptions-transport-sse

Would the new Subscribe function satisfy this? https://pkg.go.dev/github.com/dosco/super-graph@v0.14.33/core?tab=doc#SuperGraph.Subscribe

Can we close this? Does the API linked in the previous comment satisfy SSE?

@dosco, will you please give me some more time to explore this topic?
Thank you.


Reverse 35 is missing or not working?

get reverse 35
Traceback (most recent call last):
File "/usr/local/bin/revshell-generator", line 8, in
sys.exit(main())
File "/usr/local/lib/python3.8/dist-packages/reverseshellgenerator/generator.py", line 640, in main
generator.cmdloop()
File "/usr/lib/python3.8/cmd.py", line 138, in cmdloop
stop = self.onecmd(line)
File "/usr/lib/python3.8/cmd.py", line 217, in onecmd
return func(arg)
File "/usr/local/lib/python3.8/dist-packages/reverseshellgenerator/generator.py", line 540, in do_get
template = self.get_command_by_index(item, index)
File "/usr/local/lib/python3.8/dist-packages/reverseshellgenerator/generator.py", line 562, in get_command_by_index
return get_item_from_list(reverse_shell_commands, 'command', index)
File "/usr/local/lib/python3.8/dist-packages/reverseshellgenerator/generator.py", line 556, in get_item_from_list
return command[attribute]
KeyError: 'command'

Okay so the reverse shell is missing, it appears that you cant just edit the generator.py file and add the reverse shell manually. Make the changes based on the format of the other reverse shells above.

@eduarthysenaj
Fixed in master. Thanks a lot for reporting!


[wip] fix issue with stale content being served indefinitely

The proxy_cache_use_stale updating option is supposed to allow nginx to serve stale content while fetching new content in the background, but in practice this isn't working. Disabling this flag will cause Nginx to refetch immediately if cache content is expired.

this didn't work well because it fails the first request if a client is offline. see https://github.com/mirainc/funes/pull/10 for fix.


Fixed broken service bus links

Some of the links on the page were broken due to improper paren pairing.  Now the links work when clicked and there is no longer a weird trailing ".aspx)" in the doc.

Hi @nberdy, I'm your friendly neighborhood Azure Pull Request Bot (You can call me AZPRBOT). Thanks for your contribution!

It looks like you're working at Microsoft (nberdy). If you're full-time, we DON'T require a contribution license agreement.

If you are a vendor, or work for Microsoft Open Technologies, DO please sign the electronic contribution license agreement. It will take 2 minutes and there's no faxing! https://cla.azure.com.

TTYL, AZPRBOT;

@nberdy Thank you very much for your contribution!  I've sent this change to the author for approval.

Good catches, OK to merge,


Context must include src package metadata

Packaging steps will need to know things like:

Name
Version
Copyright
...

Closing after having merged #22.


[Bug] Core throws HeartbeatTimeoutNotSet when activity heartbeats and no heartbeat timeout is configured

Describe the bug
As described in title, record_activity_heartbeat throws when there's no heartbeat timeout configured.
https://github.com/temporalio/sdk-core/blob/1ba045005b915495de9052d0ab6c3f2a474828f0/src/lib.rs#L404
It would be better to ignore or simply warn in this case since the activity sending heartbeats is decoupled from the workflow that sets its ActivityOptions.
To Reproduce
Schedule an activity without a heartbeat timeout.

For posterity: @bergundy As we discussed it makes sense to solve this by re-routing the error on the lang side. Let me know if we need to do anything else here otherwise you can close/move this.

Agreed, I'll come up with a design for propagating these errors back into the activity.


Version used

Hello
Can you please which version of tensorflow and keras you have used to run this code on
Thanks and great work !

Hi,
Unfortunately, I didn't document the version. But, given the fact that I wrote this in late 2017, I think tensorflow 1.4.0 should work! It's pure tensorflow. You don't need keras to run this.

Great thanks. I was trying on tensorflow v2 and it seems to work on v1.
Another followup question, according to the paper, the code should run on less number of images.. So after you take as input the whole mnist dataset, can you point out where you choose a low subset of images to train the GAN architecture on? or do you train it on the whole mnist data? (Again I really appreciate this I know how difficult it is to go back to old codes and provide explanations)

Should run on less number of labeled images not less images. labeled_rate controls the percentage of labeled images per batch. get_labled_mask(...) provides a mask to filter images of each batch (which image should have label and which shouldn't).

Great thank you for the help!


Events, powershell and RDP don't work through Azure Application Proxy

When registering Windows Admin center inside Azure you get an app registration, from here you can jump to the enterprise application and setup the Azure Application Proxy to the connector group you want.
This works like a charm and also very fast, yet the support for Events, RDP and Powershell is not there.
This has to do with the fact that WebSockets are not supported and stil in preview (since 2018?).
What is the current status of this and will it ever get supported?

GitHub issues for this repo are for reporting problems with Windows Server documentation.  Please post to a community forum or open a support request. #please-close

I understand that, yet the documentation doesn't state anything on this except "Known Issue". I thought this is something that should be added so we know what to expect.


ERC-4626 Challenge

I propose to create a challenge about the ERC-4626 standard. The goal would be for those who embark on the challenge to understand how the standard works. For example, differences between assets and shares, deposits, withdraws, borrow and redeem. And why this standard is so necessary.

Hey, thanks for opening an issue! I agree that understanding the ERC4626 standard is a fundamental thing. I believe we were trying to incorporate it into DeFi Challenge 2 (ERC 4626 Adaptors and Sommelier). You can see that the challenge is a WIP right now but it has parts that elude to understanding the ERC4626 standard.
Do you feel that it would be better to have an isolated challenge all about the ERC4626 standard that walks through the typical implementation code for said standard and its interface?


Autosave recording/screenshot to clipboard

Is there a possibility to save everything to clipboard instead of opening editor?
Following flow:

Select area
Start
Stop

After clicking stop the recording is automatically saved in clipboard as a gif.

It's not properly possible to save a gif to the clipboard.
You can set the path of the gif and some apps may be able to load the gif automatically when you paste it, but different from storing an image to the clipboard.
About the other aspect of your feature request, that's on my plans for the next year. :)

hello, I used screentogif for a while, I liked this application, it seems to me that the function described in this issue is very lacking, because I rarely want to save a file to disk. I hope you have time this year to implement this feature. thanks in advance

I have the same need.

@NickeManarin I think png can handle animation as well, could that be posted to the clipboard?

Would love to have this ability as well


FuelEfficientPilots updated with dependency statement for ModuleManager

{
"spec_version": "v1.4",
"depends":
[
{
"name": "ModuleManager"
}
],
"$kref": "#/ckan/spacedock/1466",
"identifier": "FuelEfficientPilots",
"license": "CC-BY-NC-SA-4.0"
}

My apologies as I am learning this and will learn to use pull requests in the future.
I would like to submit the above as FuelEfficientPilots.netkan.  It was brought to my attention by linuxgurugamer that I was missing the "depends" for MM.  Thank you.

Will use pull request


Running postgrest in production mode

According to this doc I have made changes in my nginx conf file. Now I want to run my postgrest app, and I can do that by running ./postgrest postgres://postgres@localhost/catarse_development -a anonymous --jwt-secret gZH75aKtMN3Yj0iPS4hcgUuTwjAzZr9C -s 1 -p 3004 . When the ssh session is closed, the server will also stop itself. How to keep the postgrest server running in production?

There is a note here about keeping the server from stopping, let me know if it helps - http://postgrest.com/en/v0.4/admin.html#running-the-server

Also the way you're passing command line arguments looks like you're using version 0.3.x, have you looked into v0.4 yet? It has a lot of improvements.

@begriffs yes I am using v0.3.x :) . For now, I will not be able to use the latest release until I test everything out so I will be sticking with the old release.
Is the doc same for the v0.3.x as well? I have made changes to my nginx conf file and will that be valid for the old release?
And about running postgrest in production mode. After I ssh into my server do I run this ./postgrest postgres://postgres@localhost/catarse_development -a anonymous --jwt-secret gZH75aKtMN3Yj0iPS4hcgUuTwjAzZr9C -s 1 -p 3004 </dev/null >/var/log/postgrest.log 2>&1 & and it will run in the background?

@begriffs I have used some arcane password for my database like $%$&*09 (example pass) and after I run ./postgrest postgres://postgres@localhost/catarse_development -a anonymous --jwt-secret gZH75aKtMN3Yj0iPS4hcgUuTwjAzZr9C -s 1 -p 3004  I get *09@localhost/jvn_production: No such file or directory

You'll probably want to single-quote the connection string to prevent the shell from interpreting the weird characters. Like ./postgrest 'postgres://...etcetc' -a anonymous ...etc.
One benefit of the 0.4 version is that these strings are in a config file and do not need to be quoted, but quoting will work fine for you.

@begriffs I am lost. In the dev env, I was able to run like this ./postgrest postgres://postgres@localhost/catarse_development -a anonymous --jwt-secret gZH75aKtMN3Yj0iPS4hcgUuTwjAzZr9C -s 1 -p 3004
now in the prod env , if I run it like this ./postgrest postgres://postgres@localhost/catarse_prod -a anonymous --jwt-secret gZH75aKtMN3Yj0iPS4hcgUuTwjAzZr9C -s 1 -p 3004 I get
Listening on port 3004
postgrest: {"details":"fe_sendauth: no password supplied\n","message":"Can't connect to the database"}

so I again tried running this code
 ./postgrest "postgres://postgres:$u$h@&Tb123456789.0&@localhost/catarse_prod" -a anonymous --jwt-secret gZH75aKtMN3Yj0iPS4hcgUuTwjAzZr9C -s 1 -p 3004

in prod env and got
 postgrest: {"details":"could not translate host name \"&Tb123456789.0&@localhost\" to address: Name or service not known\n","message":"Can't connect to the database"} .

@begriffs  I downloaded the latest release and ran it but my application breaks when using the latest release so I will be using the old release

The special characters in the password are confusing postgresql. For instance the @ usually goes between password and hostname, and you have two of them. The solution is to percent encode the password as suggested in http://stackoverflow.com/a/23361849
(Also the unix shell thinks $ is the beginning of a variable name because you are using double quotes rather than single quotes around the string.)

@begriffs Thanks a ton mate.

No problem. Also if you'd rather you could use the keyword/value style connection string rather than the a connection URI style - https://www.postgresql.org/docs/9.6/static/libpq-connect.html#LIBPQ-CONNSTRING
./ postgrest 'host=localhost port=5432 dbname=mydb' ...
Either style works, it's up to you.

thanks man, you are very helpful

@begriffs now my postgrest is running, however, it is not accepting any connections. I ran my postgrest like this
./postgrest 'postgres://test:%24u%24h%40%26Tb129.0@localhost:5432/test_production' -a anonymous --jwt-secret gZH75aKtMN3Yj0iPS4hcgUuTwjAzZr9C -s 1 -p 3004
I ran netstat -na and found this
Proto Recv-Q  Send-Q     Local Address           Foreign Address         State
tcp        0           0              <IP_ADDRESS>:3004                     <IP_ADDRESS>:*                   LISTEN

I had previously made changes to my nginx conf file by looking in this doc.
can u also tell me how I can run postgrest in the background?


IHandlerSelector service parameter as System.RuntimeType prevents selection

Hello,
I Have a container with around 40 different services, all working fine. As many of those dependencies are resolved via DependsOn and the chain can get tricky, I am writing unit tests to ensure that some of my top dependencies are resolving lower-level dependencies all fine.
For example, I have an interface IMyWrapper implemented by class MyWrapper that depends on a service IService, implemented by either ServiceOne, ServiceTwo or ServiceThree (all of them named), depending on other configuration. Said dependency is resolving fine on my production code. However, on my tests, I want the wrapper to resolve a mock Class ServiceOneMock instead of ServiceOne, in order for me to assert that everything went alright from a call to ServiceOneMock, instead of dealing with a real service.
I did some reading and found this solution with IHandlerSelector:
public class MockWrapperHandlerSelector : IHandlerSelector
    {
        public bool HasOpinionAbout(string key, Type service)
        {
            return service.GetInterfaces().Contains(typeof(IService));
        }

        public IHandler SelectHandler(string key, Type service, IHandler[] handlers)
        {
            // Try to get mock
            var mockHandler = handlers.FirstOrDefault(handler => handler.ComponentModel.Name.EndsWith("Mock"));

            // Return mock or default
            return mockHandler ?? handlers.First();
        }
    }

I have configured my container to use the handler, and I can debug through it, seeing the "intercepted" dependencies. The problem is: for many of my dependencies, I have no key (and AFAIK I am positive they should have, as names are being used to resolve the dependencies on production code), and even stranger, many  of the service types appearing in the HasOpinionAbout method have no type at all, so sadly I can not use the handler to return my mock, and dependencies are resolved as usual.
I would appreciate some help, as I haven't found any other case like mine online, and I'm not sure I am missing something, or whether this is a bug.
Thanks in advance!

@DazEdword could you please put together a small runnable code sample showing the behaviour you are seeing. Just paste the code in a comment, rather than attaching files.

@jonorossi
Happy to provide an example below. It is important to mention that this example behaves as intended, and the type in the Selector appears as ICalculator, which allows for us to return the mock. Now I wonder why the types in my production code are appearing as System.RuntimeType instead.
using Castle.MicroKernel;
using Castle.MicroKernel.Registration;
using Castle.Windsor;
using NSubstitute;
using NUnit.Framework;
using System;
using System.Linq;

namespace AopUnitTests
{
    [TestFixture]
    public class HandleSelectorTests
    {
        [Test]
        public void DemoTests()
        {
            using (var container = new WindsorContainer())
            {
                // Arrange
                // Mock creation and registration, it returns a weird result for an addition
                var calculatorMock = Substitute.For<ICalculator>();
                calculatorMock.Add(0, 0).Returns(1000);
                container.Register(Component.For<ICalculator>().Instance(calculatorMock).Named("CalculatorMock"));

                // Real Calculator registration
                container.Register(Component.For<ICalculator>().ImplementedBy<Calculator>().Named("Calculator"));
                var handlerSelector = new MockServiceHandlerSelector();
                container.Kernel.AddHandlerSelector(handlerSelector);

                var actual = container.Resolve<ICalculator>();

                Assert.AreEqual(1000, actual.Add(0, 0));
            }
        }
    }

    public class MockServiceHandlerSelector : IHandlerSelector
    {
        public bool HasOpinionAbout(string key, Type service)
        {
            return service.Name == "ICalculator";
        }

        public IHandler SelectHandler(string key, Type service, IHandler[] handlers)
        {
            // Try to get mock
            var mockHandler = handlers.FirstOrDefault(handler => handler.ComponentModel.Name.EndsWith("Mock"));

            // Return mock or default
            return mockHandler ?? handlers.First();
        }
    }

    public interface ICalculator
    {
        decimal Add(decimal x, decimal y);
    }

    public class Calculator : ICalculator
    {
        public decimal Add(decimal x, decimal y)
        {
            var result = x + y;
            Console.WriteLine(result);
            return result;
        }
    }
}

@DazEdword
Thanks for a working demo.
Have you tried IContributeComponentModelConstruction?
It would mean changing your code to the proposal below:

using Castle.MicroKernel;
using Castle.MicroKernel.Registration;
using Castle.Windsor;
using NSubstitute;
using NUnit.Framework;
using System;
using System.Linq;

namespace AopUnitTests
{
	[TestFixture]
	public class HandleSelectorTests
	{
		[Test]
		public void DemoTests()
		{
			using (var container = new WindsorContainer())
			{
				// Real Calculator registration
				container.Kernel.ComponentModelBuilder.AddContributor(new IContributeToCalculatorFakeConstruction());
				container.Register(Component.For<ICalculator>().ImplementedBy<Calculator>().Named("Calculator"));

				var actual = container.Resolve<ICalculator>();

				Assert.AreEqual(1000, actual.Add(0, 0));
			}
		}
	}

	public class IContributeToCalculatorFakeConstruction : IContributeComponentModelConstruction
	{
		public void ProcessModel(IKernel kernel, ComponentModel model)
		{
			if (model.Services.Contains(typeof(ICalculator)))
			{
				model.Implementation = typeof(CalculatorFake);
			}
		}
	}

	public interface ICalculator
	{
		decimal Add(decimal x, decimal y);
	}

	// Need this one for prod
	public class Calculator : ICalculator
	{
		public decimal Add(decimal x, decimal y)
		{
			var result = x + y;
			Console.WriteLine(result);
			return result;
		}
	}

	// Need this one for test, I would definitely call it a fake with this approach
	public class CalculatorFake : ICalculator
	{
		public decimal Add(decimal x, decimal y)
		{
			return 1000m;
		}
	}
}

The advantages are that you side step all the acrobatics you are doing with naming. The down side is that is does not use mocks from NSubstitute.

@fir3pho3nixx
That proposal would work very well for me as I just want the CalculatorFake to return its predefined value, but sadly the Component Activator doesn't seem to be very happy about the type change:
Castle.MicroKernel.ComponentActivator.ComponentActivatorException: 'ComponentActivator: could not instantiate AopUnitTests.CalculatorFake'

Inner exception: TargetException: Object does not match target type.

It's worth noting that at least I'm getting some consistency on my test/production code, as both environments throw the same error. Thanks for the support :).

@fir3pho3nixx
Literally copied and pasted your code above and ran onto the same issue :(. I am using VS 2017, Castle.Windsor 4.1.0 with Castle.Core 4.2.0, running tests with NUnit 3.10.1 and NUnit3TestAdapter 3.10.0. Will let you know if I manage to find out what's wrong with my setup, thanks again.

@DazEdword
Could you elaborate on how you did this?
Did you use a pre-existing solution or did you create a new solution?
Could you also tell me the version of Visual Studio you have? (I have VS Community 15.8.1)
Are you using a machine that is your own(with admin privs) or is this a work laptop(with weird things on it)?

Something else that might be helpful is posting up a solution on GitHub so I can try and run it locally. This might help us get to the bottom of what is going on.

@fir3pho3nixx Writing from phone, let's see if I can do this.

Used preexisting solution.
Tried at both company's computer (with admin access) and home computer, both Win 10.
Used VS Pro 15.7.6 and VS Community 15.8.
Solution and reproducible test case are available here: https://github.com/DazEdword/aop-interception-logging/blob/master/AopUnitTests/DemoTest.cs

Many thanks for your efforts.

@DazEdword almost a month late but I found the problem. You were so close! :)
If you have ICalculator and that would normally rely on Calculator in a production scenario and you wanted to substitute the implementation of Calculator with CalculatorFake, then it is not good enough that both merely implement ICalculator.
The reason for this is because the constructor of Calculator takes a dependency on ILogger. The fake calculator did not. The only way to make this work is by making CalculatorFake inherit from Calculator and to make sure the constructors for both exactly match. What Windsor was doing was trying to instantiate CalculatorFake by passing it a reference to ILogger and at that point the framework kick in and threw an exception, which makes sense as that constructor did not exist.
Please see my PR I raised against your original project here: https://github.com/DazEdword/aop-interception-logging/pull/1
:)


Add  variable to module

how to add variable?
i use v8 before and then i want to change to rust from c++.
i look for all doc and find way to add function by module.add or module.add_str, but i can't find how to add variable.
dyon support this?

Dyon does not have global variables, but instead uses current objects.
fn main() {
~ a := 2
foo()
}
fn foo() ~ a: f64 {
// a is available in this scope
}

thanks  for your reply,  i felt frustrated  because i wan't to manipulate rust variable from Dyon.
like v8
  v8::Local<v8::ObjectTemplate> hkey = v8::ObjectTemplate::New(isolate);
    hkey->SetLazyDataProperty(V8_NEW_STRING(isolate, HKEY_CLASSES_ROOT), [](v8::Local<v8::Name> /*property*/,
        const v8::PropertyCallbackInfo<v8::Value> & info) {
            info.GetReturnValue().Set(v8::External::New(info.GetIsolate(), HKEY_CLASSES_ROOT));
        });


pub serve unexpected error

This issue was originally filed by<EMAIL_ADDRESS>
What steps will reproduce the problem?

pub serve

What is the expected output? What do you see instead?
pub serve to serve my test directory, instead there is an unexpected error.  Trace is attached.
What version of the product are you using?
pub 1.10.0
On what operating system?
OS X 10.10.2
What browser (if applicable)?
N/A
Please provide any additional information below.

Attachment:
pub_serve_trace.txt (31.44 KB)

This issue has been moved to dart-lang/pub#24.


Moved most communication to GRPC (except for async ones)

Can we make the protocol more flexible? For example, TrainingConfig should be able to flexibly support other user-defined params, as we did for TestResponse. Thanks!

Hello Qinye, I met two bugs:

Please change executor_ip to executorId here.
Failed to read serialized data here. Please try to set a small eval_interval for interactive debugging.

Thanks a lot! :)


Using a library against the terms of its license

Karpenter currently has a dependancy on bouk/monkey in /pkg/controllers/node/suite_test.go, which has the following license
Copyright Bouke van der Bijl
I do not give anyone permissions to use this tool for any purpose. Don't use it.
I’m not interested in changing this license. Please don’t ask.

Wow nice catch! https://github.com/awslabs/karpenter/pull/609. We need to add some automation here.

https://github.com/awslabs/karpenter/pull/609

https://github.com/awslabs/karpenter/pull/611


[JOSS] Interface with DLC

I have some questions about how deepof interfaces with the outputs of DLC that I do not believe are addressed in the documentation or software paper:

What versions of DLC is DeepOF compatible with/tested with? If the answer is all, it would be great to see that stated explicitly.
What is the recommendation for usage of DLC-native post processing routines (e.g. simple smoothing, multi-animal based techniques) vs. deepof? Should a user apply both, or default to the choice of one?
What portions of the code specifically will not function if a user does not have the pre-specified set of labels expected for deepof?

Thank you.

https://github.com/openjournals/joss-reviews/issues/5394

Dear @cellistigs,
thank you for your questions! Replying in order:

We tested DeepOF with single and multi-animal projects on DeepLabCut 2.X (up until the most recent version when writing this comment, 2.3.4). I added a statement in the README and the documentation landing page to clarify this :)

All experiments presented relegate preprocessing to DeepOF, ignoring DLC post-processing routines. I don't see a problem with applying both, however, but it has not been tested. Shall we clarify this in the documentation?

It depends. In the supervised pipeline, if key labels for certain behaviors are missing, those annotations will be skipped. In the unsupervised pipeline, graph representations (described in the corresponding tutorial) will not be available, and the user will need to rely on matrix representations alone.

Hope this helps!
Best,
Lucas

Hi Lucas- thanks for your reply, that's great. I would suggest clarifying point 2 in the documentation. Likewise, I think that point 3 would be good to have stated somewhere (I was not able to figure this out from looking at the documentation or software paper).


Outline is not showing

The outline is not working when I focus on a .res file.

it does work when I use a .re
Without this, it is hard to navigate long files.
Edit
Another benefit of the Outline is that you can search symbols with Cmd-shift-o
in this screenshot shows the spotlight to search symbols, although in Rescript files is currently not working.

Can you provide a preview of how the Reason outline looked like? Should be fairly simple to add that back.

@ryyppy
here is a simple reason file with only one react component

Right.
Just making some notes on the implementation details:

This is based on the DocumentSymbolProvider on the client side
Probably requires the Document Symbols Request capability
Not sure if there's any wiring logic needed on the client side, or if it works out of the box when registering the right capabilities
Regarding the data, the editor-support binary can deliver all the json data of a given module (i think when the line / col range is omitted). Just a matter of mapping over the data and send it to the client

I think editor-support binary's dump command doesn't give toplevel of a given module.
When range is omitted it returns all hover information (type hints), maybe we need another command.
sth like rescript-editor-support toplevel Foo.res.
I'm not sure though, I may be wrong.

Done here: https://github.com/rescript-lang/rescript-vscode/pull/149

Sorry, reopening this due to #200. But we'll get it done well soon.

@chenglou I'm wondering how is this going?

@vasco3 Will be available on next release

Closing in favor of https://github.com/rescript-lang/rescript-vscode/issues/176, which adds a bit more detail/context.


Upstream contribution to opentype.js?

I am curious why this was not contributed upstream to become a standard part of opentype.js? :)

See my comment in https://github.com/nodebox/opentype.js/issues/340

Thank you Bob for the thorough answer :D


Update Dataset

Can you please update the population data to the latest census. Most of the information on the website is in PDF format.

@hassam7 Could you provide links to the data files please so it is a quick start point for whoever wants to contribute for this issue?

The data for 2017-18 is available on this http://www.pbscensus.gov.pk
eg: http://www.pbscensus.gov.pk/sites/default/files/bwpsr/kp/ABBOTTABAD_BLOCKWISE.pdf
http://www.pbscensus.gov.pk/sites/default/files/bwpsr/kp/ABBOTTABAD_SUMMARY.pdf


Source variables from .ddev/.env.* in custom scripts

Is there an existing issue for this?

[x] I have searched the existing issues

Is your feature request related to a problem?
See

https://github.com/ddev/ddev/pull/6687#discussion_r1834983173
#6701

Describe your solution
We should have a generalized solution for each place:

custom scripts
add-on actions
provider pulls

Describe alternatives
No response
Additional context
No response

Please add a little more detail, including specific examples, of what you envision, thanks.