Update azure dependencies

This PR update the Azure-SDK to the latest versions and adapts the code accordingly.
fixes #2

@noniperi, @Doron-Bargo,
Is this PR something you might consider reviewing? Telegraf uses this project and because the dependencies for Azure have not been updated we are currently unable to update further due to azure-monitor-metrics-receiver. As you might imagine this is starting to impact our ability to respond to security updates.
Thanks!

hi @powersj Thanks for raising this issue.
@ShiranAvidov  will look into it.


Add Reason icon

I remade the icon without merging this PR mainly because I prefer staying consistent with the Typescript and Javascript icons, that use the same format, and with the general way other icons were made (sticking most of the time to a 16x16 grid with 20px wide cells). This is probably still missing from CONTRIBUTING.md though.


[NETBEANS-54] Module Review apisupport.wizards

I believe they're done now, review and comments welcome.

Perfect. Thank you for fixing them!


Display shot labels in the HTML so that you don't need to hover mouse over the Shot span

The result looks like this...

WDYT @iachettifederico?

I merged it - we can always remove / make it optional if we find it too noisy.


RTL rendering

From @DRSDavidSoft in #422

Fix RTL issue: Kint isn't supposed to render in the RTL (Right-to-left) mode. If the direction of page (or the parent element) is set to RTL, then Kint wouldn't display properly. I believe it would be better to force direction: ltr into the Kint themes.

@DRSDavidSoft Does d6350e15ade21b3f49e349ed5fbfd51e743fecca fix the RTL issue? While the dump now looks fine on an RTL page I'm not sure how it'll affect RTL text inside dumps

This sure does fix the Kint rendering. You are right about RTL text inside the dumps, but I believe this is expected behavior among devs who work with RTL content; If the content needs alternative direction, you need to apply it outside the dumping utility.
Alternative approach would be to use JS to apply the parent element's direction to it, or provide some manual override function... These don't really make sense for a dumper utility when there is a custom theming function available; I believe it's up to the user to provide their own CSS to deal with RTL text inside Kint. To me, the correct rendering of the Kint's rich renderer is far more important.
I suggest merging this PR as is, and maybe adding a note regarding RTL use in the docs. Please tell me which would suit Kint best, I'll help with that solution.
Also thanks for the quick addition of this to the scss! 😄 👍🏻
Lack of this was truly a pain point when trying to debug RTL apps, I always needed to apply this manually to the stylesheet of the application.

You are right about RTL text inside the dumps, but I believe this is expected behavior among devs who work with RTL content

Alright, then that's what we'll use, thanks for feedback


How do I gift you cash for you efforts?

You extension really helps, and I'd like to support what you have accomplished. Is there a way I can do that?

Only thing I ever set up was https://paypal.me/dolkensp
Please keep in mind though, ptYou is not currently in active development. I'm not sure if it's still working, or if CIG have changed the friends APIs again, and I'm not in a position to fire up the game at the moment to check.
Am half way through a move back to Australia, so lots of packing going on.
<3 for your generosity


Unable to mock RxBool field in GetxController using Mockito "_TypeError (type 'Null' is not a subtype of type 'RxBool')"

i'm facing issue to mock GetXController that contains RxBool field, the mock throw _TypeError (type 'Null' is not a subtype of type 'RxBool') exception
See the code bellow
import 'package:get/get.dart';
import 'package:mockito/mockito.dart';

class TestController extends GetxController {
  RxBool isLoading = false.obs;
}

class MockTestController extends Mock implements TestController {}

void main() {
  group('TestController', () {
    late MockTestController testControllerMock;

    setUp(() {
      testControllerMock = MockTestController();
    });

    test('should show loading indicator', () {
      // Given
      when(testControllerMock.isLoading).thenReturn(true.obs);

      // When
      // ... code to test loading indicator ...

      // Then
      // ... assertion that loading indicator is shown ...
    });
  });
}

When I run my test, the exception is throwed at the line class MockTestController extends Mock implements TestController {}
I've also tried with class MockTestController extends GetxController with Mock implements TestController {} the same error occure
Flutter Version:
3.7.8 • channel stable
Getx Version:
4.6.5
Mockito version
5.4.0

have you tried to use @GenerateMocks([TestController]) instead of class MockTestController extends Mock implements TestController {} ?

i'll try, thanks 👍


[kiali] update to kiali 1.26

This moves the Kiali addon sample to Kiali v1.26.
[ ] Configuration Infrastructure
[ ] Docs
[x] Installation
[ ] Networking
[ ] Performance and Scalability
[ ] Policies and Telemetry
[ ] Security
[ ] Test and Release
[ ] User Experience
[ ] Developer Infrastructure
Pull Request Attributes
Please check any characteristics that apply to this pull request.
[ ] Does not have any changes that may affect Istio users.

@jmazzitelli: The following test failed, say /retest to rerun all failed tests:

Test name
Commit
Details
Rerun command

release-notes_istio
0b81fd8ac7e1bd446fa6f4ca0d0ab2c49f837fd1
link
/test release-notes_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@jmazzitelli: The following tests failed, say /retest to rerun all failed tests:

Test name
Commit
Details
Rerun command

release-notes_istio
0b81fd8ac7e1bd446fa6f4ca0d0ab2c49f837fd1
link
/test release-notes_istio

integ-ipv6-k8s-tests_istio
0b81fd8ac7e1bd446fa6f4ca0d0ab2c49f837fd1
link
/test integ-ipv6-k8s-tests_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@jmazzitelli: The following tests failed, say /retest to rerun all failed tests:

Test name
Commit
Details
Rerun command

release-notes_istio
0b81fd8ac7e1bd446fa6f4ca0d0ab2c49f837fd1
link
/test release-notes_istio

integ-ipv6-k8s-tests_istio
0b81fd8ac7e1bd446fa6f4ca0d0ab2c49f837fd1
link
/test integ-ipv6-k8s-tests_istio

unit-tests_istio
0b81fd8ac7e1bd446fa6f4ca0d0ab2c49f837fd1
link
/test unit-tests_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

In response to a cherrypick label: new pull request created: #28628


List component with the title and subtitle going to the line

Duplicates ❌

[X] I have searched the existing issues

Libraries

[X] Vitamin Web UI Kit
[ ] Vitamin Android UI Kit
[ ] Vitamin iOS UI Kit
[ ] Vitamin Icons
[ ] Vitamin Assets
[ ] Vitamin Core theme (Light mode)
[ ] Vitamin Core theme (Dark mode)
[ ] Vitamin Base colors palette
[ ] Vitamin Extras kit
[ ] Not related to one Figma library

Summary 💡
We would like to be able to put more than one line for the title and subtitle of the "List" component
Dependencies 📦
Search autocomplete results part.
Examples 🌈

Motivation 🔦
We are working on a new version of the autocomplete search and we need to pass the title to the line when the result is too long.
New 🆕

[ ] Validated in a grooming session

Backlog 📋

[ ] Has a good summary
[ ] Has example link(s)

Design in progress 🏗

[ ] Analysis (functional & technical)
[ ] Design refinement
[ ] Dev qualification (properties, breakpoints, tokens etc.)
[ ] Documentation refinement (inside the Figma branch)

Design review 👀

[ ] Figma branch merged
[ ] Documentation review _(and move the documentation into Vitamin Documentation Figma file)

Thank you @AlexNacache ! :)

Done ✅ https://github.com/Decathlon/vitamin-web/commit/daa0f126df79b6a76c4e89bac6ef4afa43b382ad
Thanks @AlexNacache & @Mig-L :)


Invalid RNPermission 'ios.permission.LOCATION_WHEN_IN_USE' should be one of

Hi I have some error help me please
My Code is :
check(PERMISSIONS.IOS.LOCATION_WHEN_IN_USE)             .then(result => {                 switch (result) {                     case RESULTS.UNAVAILABLE:                         console.log(                             'This feature is not available (on this device / in this context)',                         );                         break;                     case RESULTS.DENIED:                         console.log(                             'The permission has not been requested / is denied but requestable',                         );                         break;                     case RESULTS.GRANTED:                         console.log('The permission is granted');                         break;                     case RESULTS.BLOCKED:                         console.log('The permission is denied and not requestable anymore');                         break;                 }             })             .catch(error => {                 // …             });

@mertbuldur Did you check https://github.com/react-native-community/react-native-permissions/issues/326 ?

@zoontek  Thanks for help , open .xworkspace after rebuild its worked :D


permission denied for keras docker jupyter  notebook

i want to run keras with nvidia-docker, docker image pull successfully but when i try to  open python from jupyter notebook,it giving a issue of  permission denied.

@naveen584 Can you please post the snippet of error message so that we can take a look at it. Thanks!

This is happening to me too:

There's a POST request to /api/contents that is returning a 403 status code.


Empty?

This si a bit empty...
Maybe you could add it to another list (like awesome-pentester🙃) and deleite the repo...

Will be updated soon


[SOLVED] Context menu crashes app when wrapping a navigation trigger

Hey first off thanks for the library!
On "zeego": "^1.7.0" I have noticed an issue where if you try to cancel opening the context menu just before it should open then you get the navigation & the menu opens then app crashes.
I pulled the code from the example and wrapped my ConversationPreview component with no changes. The component is pretty simple, just a Pressable with an expo-router router.push.
This is using "expo": "^49.0.9" in a dev client & "expo-router": "2.0.4".
If you can't replicate let me know and I can try create a repo.
Not a big enough issue to commit time to rn but thought I would let you know
https://github.com/nandorojo/zeego/assets/7002211/d8cd9739-c165-4515-9c46-29741869beaf

ah that’s not good! i’m working through some other issues with the menu but i’ll try to address this if the reason becomes apparent. it’s hard coordinating with native view controllers for these edge cases

Found this on issue that solves the problem
https://github.com/dominicstop/react-native-ios-context-menu/issues/9#issuecomment-1047058781
Maybe for zeego is it just better to have this documented somewhere?
A FAQ or common pitfalls section?
I will leave it up to you whether to close or not (might be worth leaving open if you are open to the docs changes?)

Oh yeah that does make sense. I wonder if we should make it the default behavior or not. Or I also wonder if there is a way to fix this upstream entirely.

Seems like it could be simple enough to check if the child passed to the trigger has onLongPress set and if not override it.
Seems like a reasonably small change that (on first glance) shouldn't have many repercussions in other trigger use-cases.

The issue is, the child of the context menu could be anywhere (as in multiple children down).
So if a nested child is the pressable, it won't get auto-fixed.

@peterferguson this is getting fixed upstream in the context menu v2:
https://github.com/dominicstop/react-native-ios-context-menu/issues/77#issuecomment-1789884706

This seems to still be happening on the latest version of zeego (1.7.2) and react-native-ios-context-menu (2.3.0). Is it possible that zeego needs to set shouldPreventLongPressGestureFromPropagating on the ContextMenuView? It looks like it's a new prop  (I don't know much Swift but it also looks like the default value is getting set to true)

Hmm good to know

@sidorchukandrew you can now pass __unsafeIosProps to Zeego's ContextMenu to test this. It'll forward props down

Just tried this
<ContextMenu.Root __unsafeIosProps={{ shouldPreventLongPressGestureFromPropagating: true }}>

but is still crashing for me on<EMAIL_ADDRESS>&<EMAIL_ADDRESS>

@peterferguson There's a new version of react-native-ios-context-menu out.

There are some fixes underway for v2

What is the fix for this? @nandorojo

I think using gesture handler Pressable


AppConfigurationOptions.Connect Secondary Connection string

I would like to see the capability to provide both primary and secondary connection strings to AzureAppConfigurationOptions.Connect.  This would significantly improve our application's ability to get configuration when rolling primary/secondary keys.

The library should try the connection strings in order until successful.
public AzureAppConfigurationOptions Connect(params[] string connectionStrings);
public AzureAppConfigurationOptions Connect(TokenCredential credential, params Uri[] endpoints);

@HashTagDotNet thanks for the suggestion. Can you please elaborate on how this can make it easier when you rotate keys, for example, you would have to do 5 steps ... (details) and with this, you only need 3 steps ... (details)?

Set multiple connection strings on Connect()
Ideally, I would like to be able to provide 0..N additional connection strings to the Connect() method.  The library would attempt to read from each connection in provided order until one is successful.  Only when all connections are attempted and all have failed will the attempt to connect be considered a failure.
Use Case 1: Rolling Keys
With a single connection string, all the applications need to be upgraded at the same time when the connection string rolls (annually); or every app needs to be pulled from production, the secondary key set, and enabled in production.
With dual connection strings, each connection string's life is offset.  Then when the primary key is due for end-of-life, the secondary will have half of its life.  As applications are pulled due to the normal life cycle they will have their 'primary key' set to the active key, and the 'secondary key' set to the backup key.
Having a secondary key also helps address situations where the primary key was rolled but for some reason the application didn't get refreshed.
Use Case 2: 'Temporary Access
There may be times when temporary access to the configuration (e.g. auditing, contractor, etc.) must be granted.  With multiple connections, its possible to more frequently generate new connection strings and deprecate existing ones without affecting the primary one.
Use-Case 3: Intermittent Internet Connectivity
Our connectivity to the cloud is not reliable via speed or connectivity.
We are setting up a pass-through proxy that we want to configure as a non-primary on-premise connection.  Thus when our application(s) cannot connect directly to Azure they will contact our on-premise solution.
On the event of internal network errors, our fail-over providers read/write to local on-disk encrypted cache.  The secondary connection string would allow the applications  to automatically connect to our centralized on-premise configuration server even when our network cannot connect to Azure.
Work Around
By configuring two different configuration providers using two different connection strings we can accomplish similar capabilities we are looking for.  When one of the keys change, it will fail but the other instance of the provider should still be able to retrieve settings.
While workable, I think being able to set a list of connections is much more elegant and better aligns with parameters exposed in Azure App Configuration.
Reference
Similar capabilities exist with Azure Storage

Thanks for sharing more details, @HashTagDotNet.
RE: Use Case 1: Rolling Keys
I see it could save one step for key rotation

Before
An app is using the primary connection string initially.

Regenerate secondary connection string
Update app to use the secondary connection string
Deploy app
Regenerate the primary connection string (to invalidate the old one)

After
An app is using both primary and secondary connection string initially

Regenerate primary connection string
Update app to use the new primary connection string
Deploy app

A major benefit is any one of the connection strings can be regenerated at any time if it's found to be compromised and the app deployment does not have to happen immediately.
RE: Use Case 2: Temporary Access
This is achievable today as App Configuration already provides two connection strings. As long as you only give the connection string that is not used by the app for temporary access, the app won't be impacted.
RE: Use-Case 3: Intermittent Internet Connectivity
I don't see how a second connection string can connect to your on-premises configuration server when the network cannot connect to Azure.
However, this could potentially enable a better experience of fail-over if the provided connection strings are from different App Configuration stores.

Not exactly the same as what was proposed in this thread, but we are working on the support for geo-replication (#178). It will provide functionality very similar.


I configured a GPU for Milvus, why is it not used?

Hi @luli817: I assume you're following https://milvus.io/docs/install_standalone-helm-gpu.md#Install-Milvus-Standalone-with-GPU-Support.  You would also need to use Milvus' gpu image, which is not mentioned in this doc.
image:
  all:
    repository: milvusdb/milvus
    tag: v2.3.12-gpu

We will update the doc soon. Thank you for your feedback!

好的，谢谢您，我试试，我顺便说一下，你们values里面好像没法指定runtimeclass.我需要手动修改deoloyment

@luli817 thank you again, it's true that runtimeclass is not supported yet. By the way,  would you like to make a patch to support it?

I'll translate the words to english for more users to follow.

Adding a patch to set up runtimeclass is actually quite simple, but I don't have experience in collaborative development on GitHub and am not familiar with the process. I would like to add you on WeChat and ask for your advice. Then I would like to explain why I need to add the runtimeclass parameter, because my CNI is Cilium, but Cilium cannot start in NVIDIA runtime, which means I have to configure two runtimes on this node.

@haorenfsa hi,I have set up the GPU image, but he hasn't used GPC yet.

@LoveEachDay @liliu-z Any idea about this?

Can I have the script you create the GPU index?

@liliu-z  I didn't specifically create a GPU index.

@liliu-z I didn't specifically create a GPU index.

Then you need to do so, Plz check MIlvus' doc

@liliu-z I need to create a GPU index first before Milvus can use the GPU, right?

@luli817 I guess yes. does it work?


Audio mode stop bug

Fixed a bug that was triggered by stopping a mode that had played a sound pool using the sound_player.  The stop() and stop_looping() functions in the SoundPool class did not reference the sounds properly.  Added test for the bug.

Coverage decreased (-0.4%) to 70.168% when pulling e4764c9b8490862f6cf5321be3d37472b80fed06 on audio-mode-stop-bug into c21f49a531dd178d2293383e6c1a911044790dbb on master.


GLES3: Ensure all ShaderData is properly initialized in set_code

Fixes #84418 (at least it should, didn't test yet as this needs an optimized build).
Supersedes #84599.

I refactored the code to be clearer and hopefully prevent such errors in the future, but it's still quite error prone. The config booleans could maybe be moved to an internal struct that would always be zero'ed in set_code, so this can all be done in a single line instead of listing them all one by one.
I noticed that version doesn't get reset when calling set_code; I suppose this is intended.
Some ShaderData implementations initialized most of their booleans before the early return with empty code, while others did them after declaring gen_code. I unified to be like the former which seems to be the least bug prone (doesn't assume that none of these will be accessed when valid = false), but I could refactor the other way around if preferred.

I can't reliably trigger the warning locally with GCC builds, so would be good if @jsjtxietian or @chrisl8 could confirm that it fixes the issue for them.

Will test later today.

@akien-mga  Yes, this appears to fix the issue entirely:
v4.2.beta.custom_build [e38686f85]

v4.2.beta.custom_build [0e0420329]

Yes, this appears to fix the issue entirely:

Same for me.


Introduce more specific transition functions, i.e. they are only called on success or failure

Currently the transition function gets called all the time and the consumer has to decide whether to return anything depending on the state of the action. This boilerplate should be moved into the library.
Currently:
meta: {
  transition: (prevState, nextState, action) => { ... }
}

Next version:
meta: {
  transition: {
    // catch-all handler which gets called for each
    // action state (begin and success/failure)
    onAction: (prevState, nextState, action) => { ... }

    // gets only called for a successful async action
    onSuccess: (prevState, nextState, action) => { ... },

    // gets only called for a failed async action
    onFailure: (prevState, nextState, action) => { ... }
  }
}

Landed with https://github.com/johanneslumpe/redux-history-transitions/commit/5f9eb5c09a5412aeb6205a0d0ac551ce1847a32d


[action] use action/setup-java instead of export JAVA_HOME

This patch changes the way to set java version

:memo: TAOS-CI Version: 1.5.20200925. Thank you for submitting PR #503. Please a submit 1commit/1PR (one commit per one PR) policy to get comments quickly from reviewers. Your PR must pass all verificiation processes of cibot before starting a review process from reviewers. If you are new member to join this project, please read manuals in documentation folder and wiki page. In order to monitor a progress status of your PR in more detail, visit http://ci.nnstreamer.ai/.


Does this work with React Native?

Hi all,
I would like to know if anyone tried to implement this in react native project?
Does it work?
Best Regards,
Ozren

Hi. No thanks module is purely for WebGL builds running in a browser environment.


Fix layer list wobbling

Fix wobbling of the layer list when hovering over layers.
Demo: https://854-67726921-gh.circle-artifacts.com/0/artifacts/build/index.html
Before:

Looks good to me! Sorry for the delay life got a little busy


Add client re-generation in options flow

Related to #89

Delete old HA key from robot
{
    "cmd": {
        "command": "attribute.delete",
        "params": {
            "imei": "35000000000",
            "key": "robot_clientX",
            "startTs": "1000-01-01T00:00:00Z",
            "endTs": "3000-12-31T23:59:59Z"
        }
    }
}


Bug fix for slicing bases_arr

Reference Issues/PRs

Fixes #174
What does this implement/fix? Explain your changes.
Fixed a type error when creating a sequence logo with order == "value". Slicing BASES_ARR did not work here because it was slicing with an ndarray and BASES_ARR is a pure list. For now, I just cast it as an ndarray in each place this happens (4 times).
What testing did you do to verify the changes in this PR?
Create a sequence logo from ISM results. Code successfully ran and generated a logo.

LGTM thank you @rfriedman22 for finding this bug and also providing a fix/workaround for it!


Add timeout option on ReadInput

As a Library User
I want to have the option of setting the length of time ReadInput will wait on input
So I can control how long the program is suspended

closing in favor of #109


unlink php warning when executed in background

When I send a mail from a script that is run on the command line with popen then I get the following errors:
[07-Apr-2009 12:03:23] PHP Warning:  unlink(C:\WINDOWS\TEMP/49db24eb76e13/body) [function.unlink]: Permission denied in C:\wamp\www\group-office\www\classes\mail\swift\lib\classes\Swift\KeyCache\DiskKeyCache.php on line 247
[07-Apr-2009 12:03:23] PHP Warning:  rmdir(C:\WINDOWS\TEMP/49db24eb76e13) [function.rmdir]: Directory not empty in C:\wamp\www\group-office\www\classes\mail\swift\lib\classes\Swift\KeyCache\DiskKeyCache.php on line 264
Original creation date: 2009-04-07T10:21:45Z
Original reporter: Chris Corbyn
Original ticket: http://swiftmailer.lighthouseapp.com/projects/21527/tickets/82

I encountered that issue on a Debian machine.
The workaround fixed it.
Here is the error message : Warning: rmdir(/tmp/4f16a8edb92cb) [function.rmdir]: No such file or directory in /home/matthieu/sellerPhp/vendor/swiftmailer/lib/classes/Swift/KeyCache/DiskKeyCache.php line 253
/tmp "chmod" is 777. And the directory /tmp/4f16a8edb92cb doesn't exist. The method DiskKeyCache::clearAll method seems to be called 4 times for the same $nsKey...


HDDS-4884. Fix and enable TestReconTasks.

What changes were proposed in this pull request?
(Please fill in changes proposed in this fix)
What is the link to the Apache JIRA
(Please create an issue in ASF JIRA before opening a pull request,
and you need to set the title of the pull request which starts with
the corresponding JIRA issue number. (e.g. HDDS-XXXX. Fix a typo in YYY.)
Please replace this section with the link to the Apache JIRA)
How was this patch tested?
(Please explain how this patch was tested. Ex: unit tests, manual tests)
(If this patch involves UI changes, please attach a screen-shot; otherwise, remove this)

+1. Thanks for the work.


UnixListener requires a path rather than a RawFd

There doesn't appear to be a way to go from a UnixStream created with UnixStream::pair() (which doesn't use a Path and only has a RawFd) to a UnixListener. Perhaps we can add a UnixListener::bind_raw() or similar (to here and std?).
Related to https://github.com/tokio-rs/tokio/issues/461

Apologies for the noise, I see it implements FromRawFd which will work.


/docs/reporting-security-issues/ and /security redirects to a [ko] page

This is a Bug Report

Problem:
https://kubernetes.io/docs/reporting-security-issues
and
https://kubernetes.io/security
redirect to a Korean localization page
I think content was moved and _redirects wasn't been updated
Proposed Solution:
Page to Update:
https://kubernetes.io/docs/reporting-security-issues
and
https://kubernetes.io/security

@ClaudiaJKang I think that [ko] prefix in the title is not appropriate for this issue. 😊
/retitle /docs/reporting-security-issues/ and /security redirects to a [ko] page

@reylejano
I examined static/_redirects file, ~but I cannot find which line causes this behavior.~
/docs/reporting-security-issues/     /security/ 301
...

It seems that
the line aliases: [/security/] in content/ko/docs/reference/issues-security/security.md
causes the redirection https://kubernetes.io/security to https://kubernetes.io/ko/docs/reference/issues-security/security/.
/assign

@jihoon-seo yes, I was looking into that as well :)
I'm going to drop the alias in korean translation + add this into aliases, but if you are working on this go for it :)

@rikatz Please look #30684 and give comments/suggestions if you have one! 😊

yes, reviewing here

/language ko
/language en
/triage accepted
/priority important-soon


[PF-1291] Make all scripts use named parameters, v0.1.0

This changes the format of all scripts (MeasurementCollectionScript, DeploymentScript, DisruptiveScript, TestScript, VersionScript, UploadScript) to take parameters as a Map<String, String> instead of a List. This allows users to specify test config parameters as key/value pairs instead of relying on parameter order, which is much easier to maintain for tests with many parameters.
Because this is a breaking change, I've bumped the version up to 0.1.0 (I'm not bumping the major version as we're still on 0.X.X). I'll follow this up with changes to the existing users of the library (WSM + RBS, it looks like TDR still has the original code in their repo instead of using this library).
There aren't any tests for this, but everything worked as expected when I published locally with publishToMavenLocal and used the new library for WSM tests + scripts.

Updated the README example + description to reflect the new format. I also ran IntelliJ's markdown formatter which led to a lot of formatting changes


Investigate perf regression in pulumi-aws v6

With https://github.com/pulumi/pulumi/issues/13654, I bumped the aws-ts-s3-folder threshold from 4500 to 4800 after local investigation.
Now we're getting alerted that aws-js-s3-folder, aws-py-s3-folder, and aws-ts-s3-folder are over their thresholds for this test run. Needs investigation. Was it just a blip or consistent issue?

I've collected some trace data over several runs with a few different variations: pulumi-aws/issues/2799 latency investigation
A few observations:

The latency increase is present in an empty update.
There is a smaller latency increase for both preview-only and update-no-preview commands
The latency increase is tied to the plugin version used and is not affected by the sdk version
The latency delta between versions does not seem to be influenced by how many resources you are creating
Most confounding to me so far is that the traces don't show a significant increase in latency for Check or Diff (or any other provider method), but the parent span(s) for RegisterResource do show the latency.

I think I have a lead on where the slowness may be coming from:
There's a significant change in the spacing in /pulumirpc.ResourceMonitor/RegisterResource(2.32s) on either side of the /pulumirpc.ResourceProvider/CheckConfig trace for v6:

There's no subspan covering this time, but I suspect that it is where we are waiting on the provider plugin to start. Playing around with starting each plugin in my terminal, it does feel like there's a larger delay before printing the port number for v6. The difference is subtle (the traces indicate a difference of ~750ms), but since we restart the plugin multiple times during an update, it's probably enough to account for the ~3s increase in the overall update time.
(We should probably add a tracing span to cover provider start times; if my hunch is correct, that trace could have saved me several hours of experimenting with different profiling runs.)

Further testing found that the v6 aws plugin does take ~500ms longer just to get printing the version string. The flame graphs shows a significant amount of time spent in tfbridge.NewProviderMetadata and tfbridge.MustApplyAutoAliases:

@t0yv0 confirmed that these are new to v6 as v6 is the first version of the aws provider that uses the tfbridge tools for bridging Provider Framework based tf providers. (v5 contained a number of patches to downgrade resources that the upstream had moved to PF back to tf SDKv2)
I think that gives us the answer to our initial question of what is causing the slow-down, but there are a number of different items to follow up on to try to improve the situation:
A large portion of the extra time is spend unmarshalling the large (45MB) bridge-metadata.json file:

[ ] The renames key of the metadata is not required at runtime; stripping this from the embedded meta data should reduce the amount of data we unmarshall by 1/3
[ ] Using a more efficient storage format for bridge-metadata.json could cut most of the overhead of loading this file

We could also:

[ ] Take a lazy approach to loading bridge metadata so that we don't eat the whole cost of loading the file on init. To avoid simply shifting the cost around, we might need a storage format that facilitates random access.

Regardless of the approach we take to reducing init time; we should also:

[ ] Fix tracing so that we get spans from the provider plugin and spans for when the engine is waiting on plugin init.
[ ] Understand why the engine appears to be restarting the plugin between CheckConfig and Configure

It sounds like the source of impact is in our TFPF implementation, which is "expected" in some sense.
@mjeffryes How does a 500ms delay in plugin loading become a 3-second jump on all the charts in the issue description? Are we loading the plugin multiple times.
45 MB sounds like a lot! I think that's comparable to metadata in Azure Native, which is an entirely different thing, but that provider has so much more resources and resource properties... Do we see ways to reduce that? For instance, I see things like RuleGroupRuleStatementAndStatementStatementNotStatementStatementRegexPatternSetReferenceStatementFieldToMatchHeader in it. Does it mean our WafV2 rewrites aren't working for metadata?
What is your recommendation to proceed? Is there a low-hanging fruit, or do we need to park it until the next iteration? Is it still a P1?
Could you pleas open issue for the next steps?

Glad you could take a look here, Wafv2 rewrites not applied is a good catch! I think Matthew's list above is our low hanging fruit (the first two items). Rid of renames and try a faster format or else even just a faster deserializer like drop in https://github.com/json-iterator/go that we use in p/p

Referencing https://github.com/pulumi/pulumi-azure-native/pull/1689 here as some related prior art. @mjeffryes @t0yv0 maybe we can reuse some of those ideas.

@iwahbe
At a low level, this is likely some ordering issue between the schema editing hook and the aliasing machinery. If Wafv2 stuff is showing up in renames that's going to be gone quite easily but if it's also showing up in aliasing data we need to figure out the aliasing interaction with the schema rewriting.

@mjeffryes How does a 500ms delay in plugin loading become a 3-second jump on all the charts in the issue description? Are we loading the plugin multiple times.

Yes, apparently we are. It appears at a minimum, we are loading 4 times in a vanilla pulumi up before CheckConfig and Configure during preview, and then in both those places again for actual update.

What is your recommendation to proceed? Is there a low-hanging fruit, or do we need to park it until the next iteration? Is it still a P1?

I think we can get some savings just by replacing the JSON library and trying to trim the size of the metadata a bit (Tickets filed) so we should probably does that right away. I'm pretty sure that won't get us entirely back to below the target latency, but maybe close enough to decide it's no longer P1?
If we can avoid paying the startup cost 4 times, that would also save a ton, but I don't know if that's an easy win or not.

Is this isolated to AWS or do all providers on the new PF take a similar hit proportional to provider size?
We need to take performance regressions seriously. The goal should not be removing the P1 label but making sure that our users have a great experience.

All providers using PF will take a hit proportional to provider size. AWS is just 1) big enough that the impact is noticeable and 2) used in the benchmark alerts.

WRT giving our customers a good experience: I don't know how the existing targets were decided on, but the existing 4.8s threshold for an empty update is already high enough that it's well past the threshold for breaking flow (https://www.nngroup.com/articles/response-times-3-important-limits/).
If we can easily get back down from 7.5s to 5s we absolutely should, but I think we can be pragmatic about how much effort we're willing to spend for each gain.
It would probably make a nice impact on user perception if we could get an empty update down under 1s; but a real performance push would benefit from wider scope than the context of this one regression.

I agree we have a ways to go before things are truly great here.
Rule number one when you're in a hole is stop digging. Either we can care about and respond to the tests and the thresholds we have set, or we should turn them off.

If this helps, the process of setting thresholds involved taking a time-smoothed averages and adding 2 stddev to them.

Yes https://github.com/pulumi/pulumi/issues/13987 Matthew did just that. I can confirm it's a regression from 2x to 4x somewhere per comment on 13987. Presumably loading the plugin 2x is done to have it once for preview and once for up.

Adding another alternative to https://github.com/pulumi/pulumi-aws/issues/2799#issuecomment-1722028503 -- can we move this parsing to compile-time instead of runtime? This would be most helpful if most of our time is spent in the initial load.
Very roughly:

Expose an entry point into tfbridge that takes an already-parsed MetadataInfo instead of []byte.
Add a //go:generate step that reads bridge-metadata.json and outputs a .go file containing a MetadataInfo (AFAICT this is just a map[string]json.RawMessage, so this should be simple).
Provide the generated metadata to the new entry point.

https://github.com/pulumi/pulumi-aws/pull/2819 some more numbers

@t0yv0 Shipped a change to use jsoniter for the metadata which is a meaningful improvement (https://github.com/pulumi/pulumi-terraform-bridge/pull/1385). I did some more digging today and the largest source of the remaining latency in AWS provider init is now MustApplyAutoAliases; a lot of the time spent there comes from the fact that it builds and serializes new alias metadata at the same time as it applies the old ones, but this new metadata construction is only needed when doing tfgen, it's all wasted effort when running an update with a published provider. There doesn't look to be a trivial way to separate the two pieces, but I can work with @iwahbe to try to come up with a way to disentangle.

Thank you for the investigation and shipping the initial fix. I removed P1 as we discussed, but let's make sure we have follow-up issues assigned to M95 to continue tackling this.

Closing this as our investigation is complete; planning to schedule work on more of the follow up tickets in M95

We are not done here until the perf benchmarks are passing again. I've renamed the issue to reflect that and am adding back the P1 label.

Next steps:

https://github.com/pulumi/pulumi/issues/13987
https://github.com/pulumi/pulumi-terraform-bridge/issues/1410
https://github.com/pulumi/pulumi/issues/13986
https://github.com/pulumi/pulumi-terraform-bridge/issues/1376

We temporarily adjusted the alerting baselines until this issue has been resolved.
'pulumi-update-empty', 'aws-py-s3-folder', 4800 => 5300
'pulumi-update-empty', 'aws-js-s3-folder', 4500 => 5000
'pulumi-update-empty', 'aws-ts-s3-folder', 4800 => 5300

Part of addressing this issue is reverting these back to the previous values.

@mjeffryes @t0yv0 I spent some time hacking on a prototype for https://github.com/pulumi/pulumi-aws/issues/2799#issuecomment-1726668077 and wanted to share some findings.
First, to recap, I was curious to see if there's any benefit to moving some of our runtime deserialization down to the build/compile step. The schema and metadata we're embedding into the binary don't change, so (in theory) we should be able to build the result of our computation directly into the binary instead of re-computing it at runtime.
To set the baseline, benchmarking Provider() (with isTfGen true/false) on master gave me:
BenchmarkProviderGen-10    	       5	 228882600 ns/op	423606320 B/op	 2848954 allocs/op
BenchmarkProviderNoGen-10    	       5	 203570350 ns/op	347397752 B/op	 2308434 allocs/op

My first experiment was to slightly simplify but not eliminate the serialization altogether. In particular I noticed we only have 3 top-level keys. Instead of embedding the entire bridge-metadata.json struct we can generate a hack.go file which pulls out those fields, while still keeping the raw JSON around.
var Data := tfbridge.Data{
    M: map[string]json.RawMessage{
        "auto-aliasing": json.RawMessage([]byte("{...}")), // taken from bridge-metadata.json
        "mux": json.RawMessage([]byte("{...}")),
        "renamed": json.RawMessage([]byte("{...}")),
    },
}

Initializing the provider with this eliminates the initial deserialization of the ~40MB blob, while subsequent operations still need to deserialize their smaller respective blobs. This is a relatively small/non-invasive change and cuts new provider time in ~half:
BenchmarkProviderGen-10    	       9	 113264319 ns/op	303111697 B/op	 1918905 allocs/op
BenchmarkProviderNoGen-10    	      10	 102601083 ns/op	277265940 B/op	 1615543 allocs/op

The next question was whether we could eliminate the deserialization altogether. The structs involved are large enough that we bump into https://github.com/golang/go/issues/33437 but after some wrestling with the compiler it is possible to embed everything natively. (That is, deserialize all of the metadata, run MustApplyAutoAliases, and persist the result in code.)
The result is >200k lines of Go (~50MB) which takes several minutes to compile. Fortunately we can use build tags in a way that lets us continue to toggle between the embed approach and this one (otherwise it would be a nightmare to develop against!). This came in at about ~1/4 of the baseline:
BenchmarkProviderGen-10    	      20	  51311821 ns/op	156296561 B/op	  883827 allocs/op
BenchmarkProviderNoGen-10    	      20	  52889356 ns/op	156296712 B/op	  883832 allocs/op

From here the bottleneck then becomes NewUpstreamProvider, which seems good? I'm not sure if we could do a similar trick with that one.
I have literally zero context on providers beyond the hacking I've done here, but I can push these branches if they would be useful!

@blampe Those are some pretty nice results! It's a bit strange that you get the roughly the same for Gen vs NoGen in all runs. I suspect it might lying and always running in one mode or the other. But I think we'd definitely be interested in seeing your branch and trying to lock in those wins.

It's a bit strange that you get the roughly the same for Gen vs NoGen in all runs. I suspect it might lying and always running in one mode or the other.

For sure, I could have also (very likely) borked something while I was hacking!
I've pushed branches here and here.
The "baseline codegen" commit is the first improvement (skipping the initial deserialization), and HEAD is the second (much crazier) codegen everything approach.
Run go run cmd/codegen/main.go to generate the hack.go file. To build the full codegen approach you'll need to add a build tag go build -tags hack ./... -- that one took upwards of 10 minutes for me locally.

With https://github.com/pulumi/pulumi-terraform-bridge/pull/1524 we are now roughly back in line with the v5 performance Metabase

By all means, let's do that so we can close.
I wasn't aware we've improved here so I was doing some work on this in the iteration.

https://github.com/pulumi/pulumi-aws/pull/3070
https://github.com/pulumi/pulumi-terraform-bridge/pull/1544
https://github.com/pulumi/pulumi-aws/issues/3071

The changes in 1544 are a little invasive and I'm still verifying if they're safe.
BenchmarkRuntimeProvider is down to 50-60ms.
The runtime metadata is much smaller.
du -sh provider/cmd/pulumi-resource-aws/runtime-bridge-metadata.json                                                                                ~/code/pulumi-aws
 88K    provider/cmd/pulumi-resource-aws/runtime-bridge-metadata.json

AutoAliasing is not a major contributor in the profile anymore.

Lowered the thresholds that we raised while investigating this issue:
'pulumi-update-empty', 'aws-py-s3-folder', 5800 -> 4800
'pulumi-update-empty', 'aws-js-s3-folder', 5800 -> 4800
'pulumi-update-empty', 'aws-ts-s3-folder', 5800 -> 4800


Add make check

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.

Ok make check is failing, maybe maintainers of this feedstock can take over this? I do not have the skills to fix this.

Looks like it is failing as we don't build FLAC or provide support for it in FFMPEG. It's a little annoying that they don't detect that we don't have this support and skip this test. Not really sure what we can do here ATM.


Terminal vim flickers in tmux on VimEnter if colorscheme doesn't set Normal color group

Simple to test, try the default colorscheme - when entering vim there is a very short flicker (some syntax clearing maybe?).
Now add the following line to vimrc:
hi Normal       ctermbg=16       ctermfg=15  <or some else matching terminal background>

Vim no longer flickers when launching. The flicker still happens outside of tmux (even with t_ti, t_te being unset). Less for example doesn't flicker.

I can't reproduce on master.
I checked with:
vim --clean ~/.vim/vimrc

In xterm and gnome-terminal.  Outside and inside tmux:
tmux -Lx -f/dev/null
vim --clean ~/.vim/vimrc

I can't see any flicker when Vim starts; nor afterward when scrolling the file.
Maybe something in your config triggers the issue.  Try to reproduce without config.
Read this faq entry to find a minimal working example.

closing then.


[Bug] Bookkeeper rackaware placement policy not applying on bookies

Search before asking

[ ] I searched in the issues and found nothing similar.
A bit similar: https://github.com/apache/pulsar/issues/3716

Version
Pulsar version: 3.0.0
Minimal reproduce step
We are trying to mitigate the following warning message from bookkeeper and attempted to set the RackAware policy on the bookies, but we couldn't make it to work.
New ensemble: [<IP_ADDRESS>:3181, <IP_ADDRESS>:3181, <IP_ADDRESS>:3181] is not adhering to Placement Policy. quarantinedBookies: []
Setup running in AWS:
3 Bookkeeper instance on each availability zone (us-east-1a, us-east-1b, us-east-1c)
3 Zookeeper (us-east-1a, us-east-1b, us-east-1c)
2 Broker (us-east-1a, us-east-1b)
2 Proxy (us-east-1b, us-east-1c)
Bookies:
[root@ip-172-16-1-57 pulsar]# bin/pulsar-admin bookies list-bookies
{
  "bookies" : [ {
    "bookieId" : "<IP_ADDRESS>:3181"
  }, {
    "bookieId" : "<IP_ADDRESS>:3181"
  }, {
    "bookieId" : "<IP_ADDRESS>:3181"
  } ]
}

Set up racks placement with the following command:
$PULSAR_HOME/bin/pulsar-admin bookies set-bookie-rack --bookie <IP_ADDRESS>:3181 --group test --hostname <IP_ADDRESS>:3181 --rack /us-east-1a
$PULSAR_HOME/bin/pulsar-admin bookies set-bookie-rack --bookie <IP_ADDRESS>:3181 --group test --hostname <IP_ADDRESS>:3181 --rack /us-east-1b
$PULSAR_HOME/bin/pulsar-admin bookies set-bookie-rack --bookie <IP_ADDRESS>:3181 --group test --hostname <IP_ADDRESS>:3181 --rack /us-east-1c

Get the rack placement for the bookies:
[root@ip-172-16-1-57 pulsar]# bin/pulsar-admin bookies racks-placement
test
 {
     <IP_ADDRESS>:3181=BookieInfoImpl(rack=/us-east-1a, hostname=<IP_ADDRESS>:3181),
     <IP_ADDRESS>:3181=BookieInfoImpl(rack=/us-east-1b, hostname=<IP_ADDRESS>:3181),
     <IP_ADDRESS>:3181=BookieInfoImpl(rack=/us-east-1c, hostname=<IP_ADDRESS>:3181)
}

What did you expect to see?
Something in the logs that tells the policy applied on the bookies.
What did you see instead?
Nothing new, only the this warning again, like 50 times:
New ensemble: [<IP_ADDRESS>:3181, <IP_ADDRESS>:3181, <IP_ADDRESS>:3181] is not adhering to Placement Policy. quarantinedBookies: []
Anything else?
Configs:
broker_conf.txt
bookkeeper_conf.txt
Are you willing to submit a PR?

[ ] I'm willing to submit a PR!

Try to set bookkeeperClientRegionawarePolicyEnabled=true in the broker.conf

@zymap Could you also help take a look?

New ensemble: [<IP_ADDRESS>:3181, <IP_ADDRESS>:3181, <IP_ADDRESS>:3181] is not adhering to Placement Policy. quarantinedBookies: []

Where did you see these logs? You have config the rack info correctly.

Try to set bookkeeperClientRegionawarePolicyEnabled=true in the broker.conf

No need for this.

In your config. The ensemble size is 2. But the log shows that the new ensemble is [<IP_ADDRESS>:3181, <IP_ADDRESS>:3181, <IP_ADDRESS>:3181], which size is 3. The log does not match your config.
managedLedgerDefaultEnsembleSize=2
managedLedgerDefaultWriteQuorum=2
managedLedgerDefaultAckQuorum=2

Tried to update managedLedgerDefaultEnsembleSize to 3, but brokers crashed.
Should I update both property to 3 or just managedLedgerDefaultEnsembleSize?

Tried to update managedLedgerDefaultEnsembleSize to 3, but brokers crashed.

Could you paste the crash logs?
The logs show that the ensemble size already is 3, why does your config is 2:2:2.   It's so strange. Could you confirm the context you supply is right?
New ensemble: [<IP_ADDRESS>:3181, <IP_ADDRESS>:3181, <IP_ADDRESS>:3181] is not adhering to Placement Policy

Tried to update managedLedgerDefaultEnsembleSize to 3, but brokers crashed.

Could you paste the crash logs?
The logs show that the ensemble size already is 3, why does your config is 2:2:2. It's so strange. Could you confirm the context you supply is right?
New ensemble: [<IP_ADDRESS>:3181, <IP_ADDRESS>:3181, <IP_ADDRESS>:3181] is not adhering to Placement Policy

Set these all to 3, now the brokers doesn't crash, but still getting the ...is not adhering to Placement Policy message.
What do you mean under context?
managedLedgerDefaultEnsembleSize=3
managedLedgerDefaultWriteQuorum=3
managedLedgerDefaultAckQuorum=3

Could you upload the pulsar broker logs?

The log content is too short, I can't find the problems.
According to your context.
[root@ip-172-16-1-57 pulsar]# bin/pulsar-admin bookies racks-placement
test
 {
     <IP_ADDRESS>:3181=BookieInfoImpl(rack=/us-east-1a, hostname=<IP_ADDRESS>:3181),
     <IP_ADDRESS>:3181=BookieInfoImpl(rack=/us-east-1b, hostname=<IP_ADDRESS>:3181),
     <IP_ADDRESS>:3181=BookieInfoImpl(rack=/us-east-1c, hostname=<IP_ADDRESS>:3181)
}

It looks like you config the rack info correctly.
I'm not sure your problem is related with https://github.com/apache/pulsar/pull/18672, could you upgrade the broker version.

Everything is on v3.0.0, is this issue present in that version too? As I see your linked problem is only fixed in 2.9.x versions.

The v3.0.0 already has the fix, maybe there are another problems about it.
Could you upload the full logs, the file pulsar_logs.csv is incomplete.

extract-2023-08-08T09_10_06.971Z.csv
These are the logs from the last 1 hour, restart the brokers at 10:50:54.113

What's the column named service, all the warning logs's service are pulsar-bookkeeper.
If I'm not mistaken, this log should be printed by AutoRecovery in BookKeeper. In AutoRecovery, the default DNSToSwitchMapping is DefaultResolver, which cannot detect the rack info set in the Pulsar side. If you want BookKeeper to also be aware of the rack info, you need to configure reppDnsResolverClass=org.apache.pulsar.zookeeper.ZkBookieRackAffinityMapping.
Please note that org.apache.pulsar.zookeeper.ZkBookieRackAffinityMapping is defined in Pulsar's code, and you need to start BookKeeper in the Pulsar side.

These logs were extracted from DataDog, the services column shows which pulsar service logged out the message (manager, broker, proxy, bookkeeper, zookeeper)
The reppDnsResolverClass was already set to org.apache.pulsar.zookeeper.ZkBookieRackAffinityMapping, so this is not the problem.


New version: VSCodium.VSCodium version <IP_ADDRESS>22

Pull request has been created with WinGet Releaser v2 :rocket:
Microsoft Reviewers: codeflow:open?pullrequest=https://github.com/microsoft/winget-pkgs/pull/116373&drop=dogfoodAlpha

/azp run


Fix #639: line number error reporting in INSERT/DELETE DATA updates

This PR addresses GitHub issue: #639 .
Briefly describe the changes proposed in this PR:

InsertData and DeleteData have lineNumberOffset getter/setter
update data block parser overrides getLineNumber to process reported offset.
added unit tests.

Running hudson on PR: https://hudson.eclipse.org/rdf4j/job/rdf4j-verify-pr/43/

Hudson succeeded

I'll merge this in shortly given there's no feedback on it.

I'm testing some stuff with irc/slack integration. This is mostly just a message to check what things look like. Apologies for the noise.


bundler downloads gem dependencies rather than Bazel downloader

Ideally the ruleset should use rctx.download[_and_extract] to fetch dependency gems so that:

they are cached in the bazel repository cache
configuration of the Bazel downloader can be used, i.e. to ensure they are fetched from a corporate proxy
bazel shows more information about the fetching phase than just "running bundler"
we can apply patches to third-party gems in a similar way as other bazel fetches may be patched

I agree it would be ideal, though I wonder how hard is it going to implement this. There are few questions for me at the moment:

Do we have example how to download from Git repositories? It's a common practice to have the following in gemfile lock:

GIT
  remote: git@github.com:p0deje/watirsome.git
  revision: f893d526333af7adcd8dd4e2f0f59d1204345664
  specs:
    watirsome (0.3.0)
      watir (>= 6.0)

Is there any way to propagate GitHub credentials to Bazel downloader? It's essential to install gems from private Git repositories.
Once downloaded, we can try to lay everything on disk similar to bundle fetch and then let bundle install to install it from this cache-like structure. I haven't played with it yet.

On alternative I planned

So let's not forget the main goal of bundler: it's to resolve the versions of the gems assuming lock file does not exist.
In Ruby we generally git checking Gemfile + Gemfile.lock for apps (rails apps, cli apps etc).
However, for gems we never git commit the Gemfile.lock because we want the gem to be pulled into a 3rd party app with its own versions.

Bundler has the following common tasks:

Bundle install
Bundle update [gem1,...]
Bundle update --bundler
Bundle cache
bundle config
bundle check

However, for gems we never git commit the Gemfile.lock because we want the gem to be pulled into a 3rd party app with its own versions.

This used to be the case, but currently Bundler recommends checking in Gemfile.lock for gems as well - https://bundler.io/guides/faq.html#using-gemfiles-inside-gems:

Q: Should I commit my Gemfile.lock when writing a gem?
A: Yes, you should commit it. The presence of a Gemfile.lock in a gem’s repository ensures that a fresh checkout of the repository uses the exact same set of dependencies every time. We believe this makes repositories more friendly towards new and existing contributors. Ideally, anyone should be able to clone the repo, run bundle install, and have passing tests. If you don’t check in your Gemfile.lock, new contributors can get different versions of your dependencies, and run into failing tests that they don’t know how to fix.

Yup, another way to explain it: Bundler should still be used to read the user description on dependencies and run its resolver sand constraint solver, then the user must check in the result. We just need to parse it in starlark and try to download exactly the same files bundler would.

However, for gems we never git commit the Gemfile.lock because we want the gem to be pulled into a 3rd party app with its own versions.
This used to be the case, but currently Bundler recommends checking in Gemfile.lock for gems as well - https://bundler.io/guides/faq.html#using-gemfiles-inside-gems:

Wow! Learn something new every day!
I had no idea.
So, in that case — it is my understanding that Bazel does not write anything into the sources folder. So if I have a Ruby project with a Gemfile, and we run a workspace rule bundle_install — is it even possible to copy/place the generated Gemfile.lock file next to the Gemfile so that it can be checked in?
┌──────────────────────────────┐
│     Konstantin Gredeskoul    │
├──────────────────────────────┤
│  Principal Software Engineer │
│       HealthSherpa Inc.      │
│      +1<PHONE_NUMBER>       │
│             blog https://kig.re/             │
└──────────────────────────────┘

I suppose we need to re-implement https://github.com/rubygems/bundler/blob/master/lib/bundler/lockfile_parser.rb in Starlark first, then iterate over all the gems and download then.

Getting a ruby interpreter in the repository rule context is very difficult and doing work in repository rules is a bad practice since the result isn't cached. We can write a parser in starlark, we've already had to do YAML (for pnpm) and TOML (for python pdm).

copy/place the generated Gemfile.lock file

We should require that the user has already done this using the typical developer tooling before invoking bazel for the first time. Is there a bundler command to lock the dependencies without actually installing them?

We can write a parser in starlark, we've already had to do YAML (for pnpm) and TOML (for python pdm).

Oh, that sounds like fun :D Can you share some links here to see how it was done?

Is there a bundler command to lock the dependencies without actually installing them?

Yes, there is bundle lock.

We can write a parser in starlark, we've already had to do YAML (for pnpm) and TOML (for python pdm).

I suppose it's in https://github.com/aspect-build/rules_js/blob/fdb95cffe366e2e3b62de41b2921c906621ec4aa/js/private/yaml.bzl, can't find TOML parser though.

So let's not forget what bundler does as it's perhaps primary task. I believe most other features are extraneous.
The syntax that the Gemfile supports allows defining gems together with an optional version specification notation:
gem 'rails', '7.1.0'
gem 'rack',  '>=1.0'
gem 'puma',  '~>6'
gem 'puma-daemon'

Version specifiers are defined by the rubygems.
When you run bundle lock or install the first thing that bundler has to do is to traverse the version trees and their dependencies as defined on rubygems.org, and then find the combinations of the gem versions that satisfy the Gemfile specifications.
This is far from a trivial problem, and the algorithm itself went through multiple iterations. The latest update completely revamped it.
In other words, I think that if you can skip reimplementing any of this in Starlark, you absolutely should skip it.
So, I think it might be fare to say that if a hazel project has a Gemfile, but lacks the lock file, maybe some shell rule executes bundle lock to generate the lock file.
Alternatively, I don't think it would be the end of the world to require the lock file to be in the ruby project before Bazel can be used to build it.
Thoughts?

Bazel ruby projects required the lock file to be in the ruby project before Bazel can be used to build it

Yes, this is how it works in other languages. You must run the resolver from the package manager in order to create the lockfile that our repository rule begins from.

I think that makes everything a lot easier.
An Idea about Bundler
What if there was a ruby-Bazel integration gem (written in ruby) that could do the following:

Drive bundler in Bazel friendly way: generate the lock file and dump the gem sources into vendor/bundle

Be able to quickly Bazelify a ruby project by creating BUILD.Bazel in the current folder (it can automate a lot of build targets by inspecting common files such as Procfile, spec folder, rake tasks, and files under bin/.

By vendoring gems with the project and providing Gemfile.lock we can make bundle a build rule instead of a workspace rule.
A Question about shared cache
My next question is about how does a giant ruby monorepo benefit from the ruby projects build by Bazel.
With compiled languages I get the point of a shared cache a 100%. But what are we sharing in a distributed cache for a large team of ruby developers? Especially if the lock files are already resolved and gems are vendored? Do we just get the benefit of faster build times because of a small number of gems with native extensions?

I was just reading the blog post on Tinder Engineering about migrating their iOS app to Bazel. They mentioned the same exact issue we are dealing with Bundler. Here is what they said:

@kigster This is interesting, can you share the link? If there is already a ruleset that implemented a parser for Podfile.lock, we can re-use and adapt it for Gemfile.lock.

The link is above, just click on "Tinder Engineering" and it will take you to the blog. I don't know where their source are.

The link is above, just click on "Tinder Engineering" and it will take you to the blog. I don't know where their source are.

Thank you, my bad!

Yesterday I met the engineers who own the Ruby rules at Stripe, and confirmed the design @p0deje and I have discussed is pretty much what they do. @sushain97 can help answer questions about the details.

@p0deje here's my simplistic toml parser for a Python package manager
https://github.com/aspect-build/rules_py/compare/main...pdm#diff-12a61de0f4ed1a9986e13381453751bdbe46fb754a094a6e3adf2d7fb0b6eb2e
like I said in our chat, in practice you're only obligated to parse the small subset of the language that the tool actually produces and that Bazel needs to consume, so it's not difficult to have pretty comprehensive test cases.

👋 I'm happy to share code if it would help. I'd just need to redact anything sensitive. We have a tools/ruby/gemfile_parser.bzl and a tools/ruby/fake_git.sh that solve some of the issues mentioned above.

@sushain97 That would be amazing, I'm still trying to figure out a proper way to tell bundle install from downloaded gems, if you have a working solution, I'd love to take a look at it too 🙇

All of this is wonderful news.
I would like to get your feedback on the idea of bazel-rb ruby gem and whether that's useful, needed, or totally unnecessary.
The main has case is this: let's say we have an existing Rails App that is being pulled into a mono repo using the new/now-standard  rules.
These repos typically have a Procfile at the root that's used by Foreman gem to start multiple processes at once.
There may or may not be a Makefile, and there is always at Rakefile that loads definitions of tasks people run via a rake command.
I am curious on what is the process of "Bazelifying" such a repo looks like, which of the commands/rake tasks do we want to be able to invoke via Bazel, and what is the biggest selling point of migrating a standalone Rails app into a mono repo?
I remembered seeing that some languages had a "bridge" library that auto generated BUILD files across various folders, making the process of migrating the repo much much easier.
Is this a valid supported pattern? Are there examples? Would it make sense to develop such a gem
in parallel with the rules themselves?

bundler accepts a CLI argument that points to a Gemfile if it's not called that or if it's in a different folder.

The environment variable BUNDLE_GEMFILE can also be used instead of the bundler CLI argument --gemfile=GEMFILE. Would that be easier to support?

I don't know if it's easier but the point is that some repos, in particular gems, might have several Gemfiles aimed at different parts of the source tree.
So we can't just assume that it's always called Gemfile and Gemfile.lock.
A repo with alternative files will have some macro (a makefile target, a shell script),that invokes commands by overriding the default Gemfile name either via the environment variable or via the flag to bundle. If we are going to convert some of those commands to Bazel we will have to preserve that and be able to parse the lock files named whatever.
In other words it might be a good idea to create a Bazel Struct or some other representation of both the Gemfile and Gemfile.lock that can be parametrized with a file name. Then any further  bundle commands would have to depend on that target.

Sorry for the late reply. First, some answers:

My main question has always been this: what is the process of "Bazelifying" such a repo? I.e. which of the commands/rake tasks/tests do we want to be able to invoke via Bazel?

We're generally trying to avoid introducing Rake into any tasks executed by Bazel. Rake has its own dependency graph, unlike e.g. scripts in package.json. Having a dependency graph in Rake and in Bazel means that you will end up with monolithic targets that aren't well parallelizable.
We have a ruby_genrule and a ruby_binary as join points between Bazel and Ruby scripts.

Is it only driven by the desire to consolidate the code into a monorepo or are there additional advantages for ruby developers too?

A non-exhaustive listing of our reasons:

Avoid implementing bespoke caching solutions
Remote execution & caching
Interoperability with other languages
Unified toolset across stacks

But does it also help Ruby projects? Will Ruby developers working on the repo see Bazel integration as a boost to their productivity or hindrance?

For Ruby, we generally don't expose Bazel to our developers yet. An exception is for defining deployable container images.

I remembered seeing that some languages had a "bridge" CLI tooling that auto generated BUILD files by scanning the project, across many folders, making the process of migrating the repo much much easier.

Our approach is in many ways informed by having very bespoke tooling around basically all our application Ruby so I don't have a super useful perspective here.
Our BUILD.bazel files have a ruby_package() macro within them. It doesn't really take any arguments. The dependencies between Ruby packages (which is a concept that Stripe has added) are defined in a bespoke __package.rb. A step that runs prior to Bazel creates external repositories which define the dependencies between ruby_package()s in terms of SCCs (since they're not cycle free).

In other words it might be a good idea to create a Bazel Struct or some other representation of both the Gemfile and Gemfile.lock that can be parametrized with a file name. Then any further bundle commands would have to depend on that target.

Yes, we have a number of Gemfiles. Each is declared as an independent external repository with a bundle_repository() call.

I've excerpted some of the code that we use here and uploaded it to https://github.com/sushain97/rules_ruby. The repository is private because the code itself is of varying quality and usefulness. I'm happy to discuss specifics in Slack. I've scrubbed the repository of anything sensitive but in case I missed anything, I'd request that we leave it private. The contents are licensed under MIT so relevant bits can be copied as appropriate.

Here is a quick update on the progress I have so far. You can refer to https://github.com/bazel-contrib/rules_ruby/tree/bundle-fetch-attempt-304 to see WIP code and there are even some builds on CI passing (https://github.com/bazel-contrib/rules_ruby/actions/runs/7175240646), but there are multiple issues I'm running into.
First of all, thanks to @sushain97 I managed to have gemfle_lock_parser.bzl which reads Gemfile.lock and downloads all the gems using Bazel. These gems are later installed using toolchains gem command. However, Gemfile.lock cannot be used as the only source of truth without extra information such as the platform it's being used on. For example, the following is an excerpt from Gemfile.lock:
    jar-dependencies (0.4.1)
    psych (<IP_ADDRESS>)
      stringio
    psych (<IP_ADDRESS>-java)
      jar-dependencies (>= 0.1.7)
    stringio (3.0.9)

When resolving this part, we should install psych-<IP_ADDRESS> + stringio-3.0.9 on MRI, and psych-<IP_ADDRESS>-java + jar-dependencies-0.4.1 on JRuby. We cannot attempt to install it all on all platforms - they are not compatible and fail.
Moving on, some gems are restrictable in Gemfile, not Gemfiel.lock:
# Gemfile
gem 'debug', '>= 1.0.0', platforms: %i[mri mswin64]

# Gemfile.lock
debug (1.6.3)

Bundle will not attempt to install debug-1.6.3 on JRuby, yet we cannot possibly know that by just reading Gemfile.lock.
I'm going to try using bundle install over downloaded gems rather than per-gem gem install. This would be slower in RBE because it's going to use a single target, but at least it should resolve platforms/dependencies correctly.
Another approach I'm thinking about is to generate Gemfile.Bazel.lock with all the missing information (platforms, checksums, etc) that should be committed to the source code repository. This would be somewhat similar to what rules_jvm_external and rules_rust do.

Most Ruby developers would prefer that
bundle install

Be used to install gems because of potential future changes to bundler will require constant rewrite of the Bazel parsing rules.
Also, I thought Gemfile.lock does have a platform section?

Also, I thought Gemfile.lock does have a platform section?

It does, but it only informs about the platforms of the whole Gemfile, not a specific relationship between a gem and its platforms.

But I want to commend you for doing excellent work on pushing these rules forward and I wish I had more time to help.

@sushain97 could you please elaborate on __package.rb file?
Are you referring to [packwerk](https://github.com/Shopify/packwerk) or something else?

@sushain97 could you please elaborate on __package.rb file?

Completely internal system. I don't think there's anything published externally about it but it's effectively a way for a set of Ruby files to package itself and export/import specific constants within that package's namespace.

Personally I like where this is going with packwerk.

As always, there are (partial) answers in other interpreted languages. @jvolkman has been working in python where we have the same problem: interpreting packages to be installed from the lockfile is platform- and interpreter-dependent.
Some thoughts:

how commonly do users have these constraints in the gemfile.lock? If it's quite rare, we could punt on that feature, or regress to "bundler does the downloads" when detecting these in the lockfile. My guess is it's common enough to reject this idea
would it help if Bazel were to "over-download", fetching all gems that might be needed and then a later process "installs" only a subset of them
how hard is it to port the logic from bundler that parses these, and have enough information available to the repository rule?
Sadly having the install depend on the interpreter means that a repo with multiple interpreter versions probably needs a complete parallel gem install for each one, I think it's unavoidable and same situation as python though

There is another option.
I happen to know the maintainer of Bundler. If we can propose a change to the lock file that would retain all the information needed on each platform; perhaps running bundle on jRuby could augment the file in way that adds information to the previously resolved dependencies when run via the MRI ruby's bundle.
Maybe other languages already resolved this?

how commonly do users have these constraints in the gemfile.lock?

They are not too common on enterprise rails apps, but more common within libraries eg gems themselves.
Also, as we discussed earlier versions of ruby gems advocated against including the lock file with the gem. Now they do. So more gems will have both now.

would it help if Bazel were to "over-download", fetching all gems that might be needed and then a later process "installs" only a subset of them

Personally I don't think it's a good idea. The algorithm  for computing the versions that satisfy all constraints in the Gemfile is not ruby specific and is well documented. It might in fact be already within Basel. All you need to know is the list of available versions and platforms for each mentioned gem.

how hard is it to port the logic from bundler that parses these, and have enough information available to the repository rule?

I can't answer that,  but here is a blog post detailing the last time bundlers algorithm has changed to speed up resolution by an order of magnitude.

Sadly having the install depend on the interpreter means that a repo with multiple interpreter versions probably needs a complete parallel gem install for each one, I think it's unavoidable and same situation as python though

I think that's right.

I had the wrong link for the resolver algorithm, but it's now been updated to this:
https://bundler.io/blog/2023/01/31/bundler-v2-4.html

how commonly do users have these constraints in the gemfile.lock? If it's quite rare, we could punt on that feature, or regress to "bundler does the downloads" when detecting these in the lockfile. My guess is it's common enough to reject this idea

It's not so common, but we already have this in our example because debug is the only debugger supporting remote debugging, which makes it ideal for bazel test --run_under. Sadly, this gem only works on MRI:
https://github.com/bazel-contrib/rules_ruby/blob/a6ab8c2a13ef7f8785c490bfc13991e8c8446872/examples/gem/Gemfile#L6

would it help if Bazel were to "over-download", fetching all gems that might be needed and then a later process "installs" only a subset of them

My implementation is already doing that, however we need to know which gems to install on which platforms. This information is only present in Gemfile.

how hard is it to port the logic from bundler that parses these, and have enough information available to the repository rule?

To reiterate, the platform information is not present in Gemfile.lock, only in Gemfile which cannot be parsed without an interpreter since it's a Ruby code. People write full-blown Ruby code there.

Sadly having the install depend on the interpreter means that a repo with multiple interpreter versions probably needs a complete parallel gem install for each one, I think it's unavoidable and same situation as python though

Yes, but the problem here is that a rule needs to make requests to rubygems.org to fetch information, which means that this action can only run with requires-network execution requirement. This won't work on RBE as far as I know.
Not to mention that running gem install as a separate action for each gem is much faster and more cache-efficient.

I happen to know the maintainer of Bundler. If we can propose a change to the lock file that would retain all the information needed on each platform; perhaps running bundle on jRuby could augment the file in way that adds information to the previously resolved dependencies when run via the MRI ruby's bundle.

That would be fantastic if Gemfile.lock had:

platform to install for every gem
checksum of every gem

So given we have this Gemfile.lock:
    jar-dependencies (0.4.1)
    psych (<IP_ADDRESS>)
      stringio
    psych (<IP_ADDRESS>-java)
      jar-dependencies (>= 0.1.7)
    stringio (3.0.9)

In a perfect world we would have the following:
    jar-dependencies (0.4.1) (jruby) (b2df2f1ecbff15334ce20ea7fdd5b8d8161faab67761ff72c7647d728e40d387)
    psych (<IP_ADDRESS>) (ruby, windows) (...checksum...)
      stringio
    psych (<IP_ADDRESS>-java) (jruby) (...checksum...)
      jar-dependencies (>= 0.1.7)
    stringio (3.0.9) (ruby, windows) (...checksum...)

Is this a public thread? Can anyone see it?
I just reached out to @tenderlove and @indirect to weigh in.

:wave: I've been following this issue, apologies for not jumping in earlier.
I agree with the sense being expressed here that we should probably just rely on bundler for resolving dependencies (i.e., writing the Gemfile.lock), and then figure out how to download those dependencies. The command to do this is bundle lock.
With respect to checksums, bundler 2.5.0.dev (which will be in the upcoming Ruby 3.3 release) does write checksums to the lock file, in a new section named CHECKSUMS. It looks like this:
CHECKSUMS
  ast (2.4.2) sha256=1e280232e6a33754cde542bc5ef85520b74db2aac73ec14acef453784447cc12
  docile (1.4.0) sha256=5f1734bde23721245c20c3d723e76c104208e1aa01277a69901ce770f0ebb8d3
  json (2.7.1) sha256=187ea312fb58420ff0c40f40af1862651d4295c8675267c6a1c353f1a0ac3265
  language_server-protocol (<IP_ADDRESS>) sha256=3d5c58c02f44a20d972957a9febe386d7e7468ab3900ce6bd2b563dd910c6b3f
  mini_portile2 (2.8.5) sha256=7a37db8ae758086c3c3ac3a59c036704d331e965d5e106635e4a42d6e66089ce
  minitest (5.20.0) sha256=a3faf26a757ced073aaae0bd10481340f53e221a4f50d8a6033591555374752e
  minitest-parallel_fork (2.0.0) sha256=9d5889fc32bdef78ff92051a81ba82317ec0bee07a8594e0dec14c38d3710a7d
  nokogiri (1.16.0.dev)
  parallel (1.23.0) sha256=27154713ad6ef32fa3dcb7788a721d6c07bca77e72443b4c6080a14145288c49
  parser (<IP_ADDRESS>) sha256=edbe6751f85599c8152173ccadbd708f444b7214de2a1d4969441a68e06ac964
  psych (<IP_ADDRESS>) sha256=44b0d1823629ac815f1f470af642dc7261489d67feb622a3f5573aa9f5cc5f72
  racc (1.7.3) sha256=b785ab8a30ec43bce073c51dbbe791fd27000f68d1c996c95da98bf685316905
  rainbow (3.1.1) sha256=039491aa3a89f42efa1d6dec2fc4e62ede96eb6acd95e52f1ad581182b79bc6a
  rake (13.1.0) sha256=be6a3e1aa7f66e6c65fa57555234eb75ce4cf4ada077658449207205474199c6
  rake-compiler (1.2.5) sha256=ab9b03a6db5fce88fb8dcff23c0cae3bccd7166f036c7fc8b2199f53ee38b2ac

HTH

With respect to checksums, bundler 2.5.0.dev (which will be in the upcoming Ruby 3.3 release) does write checksums to the lock file, in a new section named CHECKSUMS. It looks like this:

Thank you for this info! It seems the time is right to ask Bundler maintainers for what Bazel needs.

I finally reached a point where CI passes - it's been a trial-and-error to make it green given the variety of interpreter/OS combinations. What proved to work fine on MRI in Linux/macOS caused problems on Windows, likewise making JRuby/TruffleRuby work took a lot of effort. Here is a general overview of the current implementation

There is a new rb_bundle_fetch repository rule.
The rule would parse Gemfile.lock and download all the gems as *.gem files to vendor/cache directory in the repository.
The rule would also install bundler of the version specified in Gemfile.lock to a separate directory in the repository.
The rule would generate shims for gem executables (e.g. @bundle//bin:rake) that would automatically run the next step.
There is a new rb_bundle_install rule (not a repository one) that is defined by rb_bundle_fetch automatically.
The rule would run bundle install --local (installed in step 3) with cached gems (downloaded in step 2). Adding --local ensures there are no RubyGems.org calls made by the bundler (requires Bundler 2.2.19+). Bundler is expected to install to a separate directory can other targets can depend on.

The implementation has several limitations at the moment:

[ ] bzlmod doesn't work (I'm working to fix it).
[ ] Gem dependencies are not installed automatically on Windows (I'm working to fix it).
[ ] Gemfile.lock parser supports only RubyGems remotes (I'm working to fix it).
[ ] Gemfile.lock parser doesn't work with Git repositories (@sushain97 has a fix in his repo, I'm yet to try and make it work for all OS-es). I propose we add it later because the changeset is already massive.
[ ] Gemfile.lock parser doesn't read checksums. I propose we add it later.

https://github.com/bazel-contrib/rules_ruby/pull/48 is ready for initial review and I would appreciate if anyone takes a look.


Tweaks to documentation for v2.0 release

A quick rundown of some problems I noticed checking through the current whatsnew  + it's links ...

[ ] the "Dask processing options" notes at the bottom of the "Real and Lazy Data" userguide section are out-of date -- possibly can be removed altogether
[ ] likewise, where in the initial whatsnew para talks about Dask schedulers, that is probably now obsolete.
a few items in the whatsnew "Deprecation removals" section really belong elsewhere :

[ ] "iris.fileformats.pp_rules has been renamed ..."  --> in "Incompatible Changes" ?
[ ] "When saving a cube or list of cubes in NetCDF format ..."  --> in "Incompatible Changes" ?
[ ] "If the packing argument to iris.save is a dictionary ..."  -->  enhancement or bugfix ?

[ ] we are still missing a whatsnew entry regarding changes to BMDI setting in saved PP data -- see this comment for some suggested text

where ... the initial whatsnew para talks about Dask schedulers

Having just read this section I think I'd prefer it if that paragraph was left in place. The statements remain true and accurate, and changing dask processing options will still affect how Iris works, it's just Iris no longer affects dask processing options at all. The paragraph might be improved by including a link to the dask docs on processing options though (this could be lifted directly from the section in the user guide that we probably no longer need).

Completed in #2900 and #2903.


Add texture_2d_update_ partial method

Add texture_2d_update_partial method for RenderingServer.
Compressed textures are not supported, they are usually not present in use cases for this function.
The gles3 backend does not have a corresponding implementation (texture_set_data_partial() is called inside but it has been not implemented).
edit: Now gles3 backend is available, removed texture_set_data_partial() which was not implemented.
Bugsquad edit: This closes https://github.com/godotengine/godot/issues/65762.

Needs a rebase to pass CI

Not sure what is the status of this PR, but I can confirm that the feature works correctly (even if implementation isn't perfect apparently?).

Why close?

Why close?

Because of some operational mistakes, I have resubmitted a pr.#80164


More feature for ossfs

LGTM.
Is the test_ossfs.py taken from somewhere?

The architecture and test cases are referred and adapted from s3fs.

LGTM.
Is the test_ossfs.py taken from somewhere?

The architecture and test cases are referred and adapted from s3fs.

Leave a note and reference in copyright header please.
If the test file is taken from s3fs, please keep its original copyright header, and add an entry to Acknowledgements (in readme), license, as well as notice.txt.


Recipe App Kanban Board Project

This is the link to the project: https://github.com/users/fullstop125/projects/4
This project will be done by 2 collaborators @Profsain and @fullstop125

Hi @fullstop125  and @Profsain  ,
Your project is complete!  There is nothing else to say other than... it's time to merge it :shipit:
Congratulations! 🎉

Highlights
✔ Descriptive PR
Optional suggestions
Every comment with the [OPTIONAL] prefix won't stop the approval of this PR. However, I strongly recommend you to take them into account as they can make your code better. Some of them were simply missed by the previous reviewer and addressing them will really improve your application.
Cheers and Happy coding!👏👏👏
Feel free to leave any questions or comments in the PR thread if something is not 100% clear.
Please, remember to tag me in your question so I can receive the notification.
m05e5

As described in the Code reviews limits policy  you have a limited number of reviews per project (check the exact number in your Dashboard). If you think that the code review was not fair, you can request a second opinion using this form.


Matches multiple schemas when only one must validate.

Do you read the FAQ?

[x] Yes.

Describe the bug
I want to switch between different profile, and VS Code gives me:

Matches multiple schemas when only one must validate.

To Reproduce
Here is my sftp.json
{
    "name": "Server",
    "profiles": {
        "server1": {
            "host": "<IP_ADDRESS>",
            "protocol": "sftp",
            "port": 22,
            "username": "root",
            "remotePath": "/path/to/file",
            "uploadOnSave": false
        },
        "server2": {
            "host": "<IP_ADDRESS>",
            "protocol": "sftp",
            "port": 22,
            "username": "root",
            "remotePath": "/path/to/file",
            "uploadOnSave": false
        }
    },
    "defaultProfile": "server1"
}

Expected behavior
No VS Code warning
Desktop:

OS: Mac
VSCode Version : 1.35.1
Extension Version:  1.12.7

I have the same problem with sftp 1.12.8 and vscode 1.38.1 (Windows).
How can I setup profiles to connect to two different servers?

Just ignore it.

I fixed it by specifying the schema, in my case the sftp one:
{
  "$schema": "https://raw.githubusercontent.com/liximomo/vscode-sftp/master/schema/sftp.schema.json",

}


Docker image build fails due to missing directories

Description
Dockerfile explicitly copies dirs dist and storybook-static into the image but these directories do not exist.
To Reproduce
Steps to reproduce the behavior:

Clone repo: git clone https://github.com/vuesion/vuesion (current tip is 3877aaa)
Build image: docker build --tag vuesion .

Expected behavior
Build succeeds.
Error Log
docker build --tag vuesion .
Sending build context to Docker daemon  11.75MB
Step 1/12 : FROM node:10-alpine
10-alpine: Pulling from library/node
cbdbe7a5bc2a: Pull complete
2b94f5c25d22: Pull complete
aadffac7f58b: Pull complete
4a934b75286f: Pull complete
Digest: sha256:4fbb0d66d68fef894effdb1676e8833365748432060eeeabd1be17b55bb6ea23
Status: Downloaded newer image for node:10-alpine
 ---> 57006130ce4b
Step 2/12 : ENV NODE_ENV=production
 ---> Running in 97004f7011e1
Removing intermediate container 97004f7011e1
 ---> b8d19d4e6e52
Step 3/12 : ENV PORT=3000
 ---> Running in 7d10979865db
Removing intermediate container 7d10979865db
 ---> 060d27d43535
Step 4/12 : RUN mkdir /logs
 ---> Running in 3a73fdb2ab91
Removing intermediate container 3a73fdb2ab91
 ---> c5e6995520b1
Step 5/12 : COPY ./package* ./
 ---> 49c78b447f20
Step 6/12 : COPY ./dist ./dist
COPY failed: stat /var/lib/docker/tmp/docker-builder520679416/dist: no such file or directory

Desktop (please complete the following information):

OS: MacOS X Catalina 10.15.7
Docker:

❯ docker version
Client: Docker Engine - Community
 Cloud integration  0.1.18
 Version:           19.03.13
 API version:       1.40
 Go version:        go1.13.15
 Git commit:        4484c46d9d
 Built:             Wed Sep 16 16:58:31 2020
 OS/Arch:           darwin/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          19.03.12
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.13.10
  Git commit:       48a66213fe
  Built:            Mon Jun 22 15:49:35 2020
  OS/Arch:          linux/amd64
  Experimental:     false

Additional Info
Running npm install creates the /dist dir but  /storybook-static is still missing. The docker build gets further along but fails at step 9:
 ---> 0d8f869667f2
Step 9/12 : COPY ./storybook-static ./storybook-static
COPY failed: stat /var/lib/docker/tmp/docker-builder745152828/storybook-static: no such file or directory

hey @bartmanus.
As documented in line 2 of the file: https://github.com/vuesion/vuesion/blob/master/Dockerfile#L2 the build happens in the CI and the docker image uses the directories from the CI environment. The Dockerfile is used to deploy vuesion to heroku. It's up to you how you want to handle deployment and your build pipeline.

in your case you would need to run npm run ci befor building the dockerfile

Hey, thanks for the patient explanation. I did manage to figure the process out from the Circleci configuration and built a multi-stage Dockerfile.
Would you be interested in a PR which would refactor the CirceCI config and also make the Dockerfile buildable standalone?

I don't know. I think CI/CD is very different for each project. E.g. I like to build only once and then re-use the build in the Dockerfile. Other people don't event use docker or circle-ci. But I think you can create the PR and we can discuss it in the PR. The PR should be based on the next branch, please be aware that the next branch looks completely different from the master branch since version 4 will be a complete re-write.

Thanks. I'll close this issue since it is irrelevant.


xinitrc not working

I'm using the AUR (ly-git) version and, for some reason, when i try to login with the xinitrc option (since ratpoison is not supported by ly) it quickly reloads and prompts me back to the display manager even if I typed my password correctly. Before you ask, I have added the line "exec retpoison" to my xinitrc

You need to make .xinitrc executable and preferably add a shebang https://github.com/nullgemm/ly/issues/181#issuecomment-596244546.

You need to make .xinitrc executable and preferably add a shebang #181 (comment).

made xinitrc executable and its working fine. Thanks!


New version: Nvidia.CUDA version 12.5

Checklist for Pull Requests

[x] Have you signed the Contributor License Agreement?
[ ] Is there a linked Issue?

Manifests

[x] Have you checked that there aren't other open pull requests for the same manifest update/change?
[x] This PR only modifies one (1) manifest
[x] Have you validated your manifest locally with winget validate --manifest <path>?
[ ] Have you tested your manifest locally with winget install --manifest <path>?
[x] Does your manifest conform to the 1.6 schema?

Note: <path> is the name of the directory containing the manifest you're submitting.

Microsoft Reviewers: Open in CodeFlow

Automatic Validation ended with:

Installation failed with exit code -1978335226
2024-05-24 00:35:33.464 [CLI ] ShellExecute installer failed:<PHONE_NUMBER>

Automated error analysis suggests<PHONE_NUMBER> may mean File not found.
Automated error analysis suggests -1978335226 may mean Install successful but system restart may be required.
(Automated response - build 881.)

The installer works fine in my VM. 🤔

Hi @SpecterShell,
This manifest removes Apps and Features entries that are present in previous PR versions. These entries should be added to this version, to maintain version matching, and prevent the 'upgrade always available' situation with this package.
(Automated response - build 882.)


 It then \includes ch1.tex and ch2.tex. Which then \input their sections.
Expected behavior
projectwide \cite autocompletion.
Actual behavior
All packages get recognized in the scopes of the sec.tex files, everything works, except \cite does not autocomplete. \cite does autocomplete when I am in main.tex.
It seems that because the chapters *.tex files have the same name as their respective folders, TeXiFy does not correctly recognize that it is a file. When I change the names to differ from the folder names, the problem vanishes and \cite does work.

Thanks for reporting!
For completeness, let me repeat here my comment from gitter so we don't forget to fix this as well:

[ ] The autocomplete (and gutter icon, and inspection etc.) of the \include command still shows files with extension, e.g. it will show included.tex. This is I think incorrect because the LaTeX is not valid (\include{included.tex} will not work)


Smoke test for Docfx v3

Docs Build status updates of commit 66468e8:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

microsoft-edge/SmokeTest.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


Allow users to override the output directory

Overview
Allows users to override the text output directory using DITTO_TEXT_DIR env variable
Context
often with typescript/etc, modules cannot resolve paths at the repo root or outside of the src or equivalent directory

Hi @acao, thanks so much for opening this!
The change looks good to me ✨ I'll merge and include this in our next release.


request.is_ajax() method is removed since Django 4.0.

Python Version
3.12
Django Version
5.0
Package Version
1.15.0
Description
Since Django 4.0 and later versions, the is_ajax() method has been removed.

The deprecation occurred in Django 3.1: https://docs.djangoproject.com/en/3.1/releases/3.1/#id2 . 3.1 is thus the version that django-upgrade would target, as it rewrites code on the version where the thing was deprecated.
The linked docs include the replacement, which a possible django-upgrade fixer could use.
That said, I am leaning against adding this fixer for a couple of reasons. First, Django 3.1 (and even 4.0) is several versions ago by now, so there will be fewer projects needing the upgrade. Second, I don’t think this function was ever that popular, it’s somewhat niche to switch content based upon the header from jQuery. And third, even where used, I doubt many projects would have more than a couple of usages to fix.
Thus I’m going to close this issue for now.


CFFL

CFFL

Linter check found the following problems:
The following problems have been found:
ERROR: /tmp/abs_9d4b7ap2uz/clone/recipe/meta.yaml:15: pip_install_args: pip install should be run with --no-deps.
ERROR: /tmp/abs_9d4b7ap2uz/clone/recipe/meta.yaml:21: missing_wheel: For pypi packages, wheel should be present in the host section
ERROR: /tmp/abs_9d4b7ap2uz/clone/recipe/meta.yaml:27: missing_pip_check: For pypi packages, pip check should be present in the test commands
ERROR: /tmp/abs_9d4b7ap2uz/clone/recipe/meta.yaml:39: missing_documentation: The recipe is missing a doc_url or doc_source_url
Errors were found


Documentation on PDF example

How would I go about doing something like the PDF example? Is there any documentation around this?

Hello Mike,
This is William with the Form.io support team. Thank you for reaching out!
When you create a form in the form.io portal, you have the option of creating a web form or PDF form. If you choose pdf form you can upload a pdf and turn it into a form. In addition, if you need a pdf version of a form, you can use the download endpoint to get a PDF generated version of the form submission.
Here is the link to our PDF Help Docs: https://help.form.io/userguide/pdf/
Please let me know if you have any further questions or concerns.
Thanks,
William Gay
Form.io Developer Support

@wag110894 but how can we use PDF form in one Angular App without using form.io portal?

LIke this https://formio.github.io/angular-demo/#/forms/pdf.
This works by just making your pdf display mode "pdf" and our renderer will just render it correctly.

@travist this link (https://formio.github.io/angular-demo/#/forms/pdf) uses form.io portal:
https://files.form.io/pdf/58b78b87f5609a0070f3f456/file/849bb08d-a880-5bb9-bbe6-7d7aac115123.html?id=e72lo9v

without using form.io portal to store pdf I can't find any working example.
In that angular demo on Form Manager (Form Builder) we can select 'Pdf' as Form Type:

Toolbox changes to:

but nothing else works. We can't upload or select a pdf file and src is:

if we drag and drop a component does nothing. It's always a blank area:

Do you have any working example of PDF Form (with builder and with render) without using form.io portal?
We would like to use PDF Form on-premise. Is this possible?

You can deploy our PDF Server into your own environment (with a license) and this will support your own domain names. We do not have an Open Source version of our PDF solution, so this is currently the only way to get this working in your own environment.

Hi,
I am using Forms.io and I am interested in getting a paid account but I have few questions regarding pdf download,
I have a requirement of downloading filled form as pdf and saving it on azure, can we achieve this from formbuilder in forms.io interface without writing a piece of code for it.
Please help me with the same.
Thanks,
Seema Sharma

The only thing that we do not provide is the auto-upload to azure, but we should cover the generation of the PDF with the following API endpoint https://apidocs.form.io/#634ac0f8-0584-4edb-889f-79ee25404cc1

Hello @barwalgayatri,
Thanks for reaching out. Our PDF functionality is only available on our Commerical Application. Please contact<EMAIL_ADDRESS>if you are interested in getting our PDF functionality.

Hi FormIO team,
I am using FormIO library's minified version to embed the FormBuilder into my application.
The ask is to generate and save a PDF version of the Form at the time of submit.
From the documentation it seems like we can use the PDF basic server for free and I need to get a license for PDF server plus.
Can you please confirm which API method can be used to generate the FORM pdf at the time of submission?
Thanks
Prateek Jeet Singh


Split kestrel.md into multiple pages

Internal Review
This is an attempt to see what it would look like to split Kestrel's docs into multiple pages so it doesn't feel so overwhelming to read and edit. This is inspired by the IIS documentation which is split up similarly. This only tries to update the aspnetcore-5.0 moniker.
I did my best to fix up the internal deep links referencing the aspnetcore5.0 version of kestrel.md. I also added  above the links to the new subpages to help with external deep links that may already be referencing aspnetcore-5.0.
Thoughts?

The build report is now clean!

The build report is now clean!

I like it. I think the overview page needs to summarize some of the other pages.
It should have Configuring options and Configuring endpoints sections that show a basic example, and then link to the other pages with more information.

I like it. I think the overview page needs to summarize some of the other pages.
It should have Configuring options and Configuring endpoints sections that show a basic example, and then link to the other pages with more information.


Use relevant URL function to find hostname

Don't be clever, just use the URL.Hostname function.
Related to #379

Is this still in flight ?
small enough, I am happy to merge

/lgmt. As soon as Gus can rebase, it's safe to be merged

I tried to rebase it using the GUI but didn't resolve the conflict. Waiting for @anguslees to resolve the conflict.

(rebased)


RFC-4638: Executor

Add executor in opendal to allow running tasks concurrently in background.
+ let exec = Executor::new();
  let w = op
      .writer_with(path)
      .chunk(8 * 1024 * 1024) // 8 MiB per chunk
      .concurrent(16) // 16 concurrent tasks
+     .executor(exec) // Use specified executor
      .await?;

Thanks for proposing the RFC. This is very useful to our use case.
I have two questions:

When the task fails during execution, will the opendal retry layer (if specified) take effect?
When the task takes too long, will the opendal timeout layer (if specified)  take effect?

When the task fails during execution, will the opendal retry layer (if specified) take effect?

Yes. Failed task will be re-created and re-executed.

When the task takes too long, will the opendal timeout layer (if specified)  take effect?

Sadly, timeout layer can't control the task managed by executor. The possible workaround is users wrap the future with their own timeout.

Sadly, timeout layer can't control the task managed by executor. One possible workaround is users wrap the future with their own timeout. I'm still working on better solutions.

Aha, I got an idea of how to fix it. TimeoutLayer will inject the timeout directly into the OpWrite. So the answer is YES. All layers will work.

cc @tisonkun, would you like to take a review of this RFC?

@Xuanwo OK. I'll review this today.

LGTM.


returned httponly flag

CI2 no longer accepts new features or non-critical bugfixes, only security patches.
https://github.com/bcit-ci/CodeIgniter/blob/2.2-stable/README.md