Convert to TypeScript

There’s plenty of advantages with moving to TypeScript. After moving the Scout API client implementation to a separate project, it’ll be high time to convert this project. This work will also likely encompass adding unit tests.

Slight change of plans. I’ve been moving files over to TypeScript one-by-one, but trying to maintain the implementation with as few changes as possible. Once this is done, I’ll start refactoring and adding new features.

Completed with 19a892dddeb94d8b32bacc15162d1f7fa334b75a


Add input outputs to flow graph

Alright here it is. This PR adds support for input and output pins 🥳. Now before you get excited lets talk about some limitations of this feature although these limitations can be lifted.

FEATURES

Input output pins
Supports per pin tooltip
Supports any UObject/AActor (including custom ones too)
Supports Float
Supports Bool
Supports Byte
Supports Int
Supports Int64
Supports FGameplayTagContainer
Supports FGameplayTag
Supports FVector
Supports FRotator
Supports FTransform
Supports FString
Supports FText
Supports FName
Easy to set input or output

LIMITATIONS:

Only one input/output is supported.
Containers are not supported (Arrays, Set, Maps etc)

UPCOMING (If this gets accepted)

Saving variables for later use (local and global)
Calling graph event with input from Blueprint (wildcard pin)

Sure, there would a chance to accept it.
What prevents it now

Needs to overcome limitations, especially only single pin supported
Moving property-specific code out of the Flow Node class, is possible. I mean part of code parsing specific types and handling value write/read.
Need to compare with other methods like what Epic did in State Tree (UE5), but it might be less advanced than what we need for Flow Graph :)

Yeah the single pin is kinda limiting but atleast the base is there so it can be worked on :)
Do you plan to merge this in its current state? Probably a separate branch or something so the community can use it for now? Or do you want to keep it open only?
Can you expand on the second part of your reply? Move out of Flow now as in a separate class, struct etc?

Well. practically this PR serves as a feature branch already? Any changes submitted to ryanjon2040:input_output should be automagically reflected here, right? :)
So unless it's in some way inconvenient for you, I would keep working on it here.
We could merge it even to the main branch, but after the 1.2 release - I'm planning a quick release to include all other PRs, remaining editor QoL features. It shouldn't take too long.
I was thinking about encapsulating operations on properties in a separate helper class, like engine's PropertyPathHelpers :)

Ya any updates on my branch should reflect here. I'll work on the multi inputs once I can allocate some time. In the mean time if you plan to merge this in current state let me know 🙂

As for the separate helper class, would it be necessary since the encapsulating operations are only called on this class. If required I can move it to FlowHelpers class which I already created with this PR.

Might do, especially if we would name the class FlowPropertyHelpers or something like that. Or maybe moved to FlowPin entirely?
I just suspect that's gonna be a lot more property-supporting code while having support for multiple properties, containers, structs... ;)

I've renamed FlowHelpers to FlowPropertyHelpers and put property operations under SetPropertyValue function. Commit 5b44d48cef0f057d2f3c810be667c0bf68ec8189

Maybe we should think about integrating UE5's FInstancedStruct instead of handling engine struct types directly. It costs an additionnal heap allocation, but it would allow to have any user-defined structs as input/output.

Maybe we should think about integrating UE5's FInstancedStruct instead of handling engine struct types directly. It costs an additionnal heap allocation, but it would allow to have any user-defined structs as input/output.

Indeed! I'm thinking to research it, once I'll get a read of the standard graph QoL. A lot of work before even adding the next layer of data.
It's interesting especially given that Epic keeps improving. StateTree implementation got upgraded with an even newer FInstancePropertyBag, reducing boilerplate.
https://github.com/EpicGames/UnrealEngine/commit/af7394cf2731ae519b75d29aaffc63f7868aaa3f
It would obviously mean that variable support in this form would come in 5.1+ versions of the plugin. That wouldn't actually cause any delay, as I don't plan to implement it quickly. I experienced how much work it requires even if this is just in-house code. Open source is more challenging.

Hi, @ryanjon2040 finally decided not to pull this one in.

There are simply far too many limitations that haven't been addressed. I'm unable to finish this up, can't make it my responsibility at this point.
UE5 FInstancedStruct and StructUtils in general. 5.1 develops further and State Tree already comes with an implementation sample.

Obviously, the community can still use your work, and pulled that in on their own. I do hope some people will find it useful, or they already did.


Tumblr.js Link posts API not the same as website

I'd like to be able to post link posts on a blog exactly the same way as if you were to go on the regular user interface and choose a "link" post and paste in a URL. It automatically grabs the image, sizes it, sets the title and a body/caption.
How do I go about doing this with the tumblr.js api wrapper?

This is a feature of the rich text editor used on the web. It fetches open graph data and autofills the post's meta. I don't believe this is something we want to support in the API as it is a client implementation.

There is no manual way to achieve it such as being able to update the post's meta?

This isn't possible via the API right now, unfortunately. Adding support isn't on the roadmap yet, but maybe someday.

Will re-open this issue when the API supports it!


Support installing the CRD from k8s manifests instead of from the operator

Instead of creating the CRDs from the code, I think it would make sense to create it from k8s manifests while installing the operator itself. This could be done for the helm chart or for all installs.
This would allow:

using the crd-install helm hook in helm charts
getting rid of a rule in Role definitions when using rbac required to install a CRD:

- apiGroups:
  - apiextensions.k8s.io
  resources:
  - customresourcedefinitions
  verbs: ["*"]

Implementation:

support a command line flag to toggle crd install from the operator
in the helm chart, disable crd installs from the operator
in the helm chart, remove the rule for CRDs CRUD

Agree we could creating the CRD make it part of the deployment-rbac.yaml example and remove some policy from the operator role.


support pairwise interactions

Does this library currently support finding pairwise interactions, or visualizing pairwise interactions?

Hi @moyidang,
Yes, ExplainableBoostingMachine supports finding and visualizing pairwise interaction terms.
You can include interactions by using the "interactions" parameter when you initialize the ExplainableBoostingClassifier/Regressor:
ebm = ExplainableBoostingClassifier(interactions=5, random_state=42)

and then you can call
ebm.fit(X_train, y_train)

like usual.
If you pass "interactions" an integer n (ex: interactions=5), we will run FAST and automatically detect the "top-n" pairs, and include them in the training process. Alternatively, you can pass in a list of list of integers (ex: interactions=[[2,3],[4,5]]) which will force the algorithm to learn pairs on features 2/3 and features 4/5.
Using explain_global() and show() will render pairwise interactions as heatmaps in the Jupyter notebook experience.
There's more discussion of this here: https://github.com/microsoft/interpret/issues/2


compat env to unix and windows; add build-run script

I believe this is fixed in an other pull, could you check if current master fits your needs now @dcalsky ?

Yeah, the problem is fixed.


Adds dropdown menu to nav

Fixes #1861 and Fixes #3260 (both are the same HTML/PHP so I killed two birds with one stone). If this is an issue ill update it.
CSS added to neue in https://github.com/DoSomething/neue/pull/443

After I fix the logic error this is good to go (neue was released)

@deadlybutter It may make sense to keep the conditional on the theme setting now for now. Once we've released to staging and get the green light from Team Product, remove the conditional in a separate PR.

Yeah thats what I was gonna do for now, have a diff. PR for removing it when its time

@aaronschachter all good :zap:

As long as tested with both on/off and looks good, ship


Don't strip out leading zeroes from HTML color codes

When passing &bgcolor=000000 I discovered that graphite-api was throwing in setColor.
ValueError: Must specify an RGB 3-tuple, an html color string, or a known color alias!

This was because all leading zeroes were being stripped out when converting it from a color string to an integer.  Maybe the validation should only be done for color-related parameters though?

Thanks! Let's start with this version and see how it goes :)


Revert "[Android] Shared mode implementation"

Reverts crosswalk-project/crosswalk#2780
Broke several core internal tests and core tests on Android:

https://build.crosswalk-project.org/builders/Crosswalk Tests (Android x86)/builds/1348/steps/xwalk_core_internal_test/logs/stdio
https://build.crosswalk-project.org/builders/Crosswalk Tests (Android x86)/builds/1348/steps/xwalk_core_test/logs/stdio

@darktears @lincsoon @halton

LGTM


Add docker transport to push image before final failure

Signed-off-by: TomSweeneyRedHat<EMAIL_ADDRESS>Add the transport "docker://" to the destination image if it fails and there's no transport specified.  Then retry the lookup and finally fail if still not found.  Also renamed the variable DefaultRegistry to DefaultTransport and replaced a few "docker://" in the code with the variable.

@TomSweeneyRedHat We have a default transport in runtime.go (RuntimeConfig.ImageDefaultTransport) right now that can be set by the user, but it's not hooked into anything right now - can you either use that instead, or use that to set the value for DefaultTransport in runtime_img.go?

@mheon I'd forgotten about the RuntimeConfig.ImageDefaultTransport .  Will see what I can do with it, thanks!

@mheon, thought I saw a comment about HasTransport being global.  I can't find the comment, but have changed that in the code.  You're probably right, I don't think it will be needed outside of the libpod.

LGTM

Test failures aren't lining up, going to close and reopen to force a test.

@TomSweeneyRedHat gofmt errors.

This PR hates me, looks like I've run into Travis environment issues.

/test all

OK, going to close and reopen to retest.  Picked up a 503 on an unrelated test.

Finally, all happy green buttons!

@rh-atomic-bot r+

@rh-atomic-bot retry

I think the CI PR that merged last night means this is no longer passing - @TomSweeneyRedHat can you rebase and repush to retrigger CI and see what's going on?

@mheon will do and arg, this is a real problem child PR!

For some reason Red Hat testing didn't like the if/else in hasTransports, have changed it to just a straight return.  It passed prior, perhaps new testing in place for the builds?

@rhatdan my problem child PR is finally green, can we merge this?

@rh-atomic-bot r+

@rh-atomic-bot retry


Design System > Elements > Enhancements in Input

Design System > Elements > Enhancements in Input
Docs	1] Input development different than design
Default	2] info icon sho/hide feature missing

@hemalatagaikwad  Please close https://github.com/Wai-Technologies/raaghu-react/pull/808 this pr as it has some branch issue. And consider https://github.com/Wai-Technologies/raaghu-react/pull/873 this pr for the Input enhancement.

Required message alignment issue check all stories.

Input type is not working.

Fixed on staging

State & Style is missing.
Icon is not display.

Input Default default state - Disabled is not display as per wireframe.
Style - bottom outline is not display as per wireframe.
Input type is not display as per wireframe.

Input type is not display as per wireframe.


Fix - editable-empty is always red, even when dissabled

@thim81, could you explain what exactly bug is fixed.

I think what he is trying to do is that when the input is disabled with the edit-disabled attribute, it should not be red when there is no value using the default stylesheet.
I think that's more of a personal preference and should be overridden in your own stylesheet instead of updating it here.


Process data in redis cache using python

Hi All,
As relevant material for my problem not available, posting the question here.
Here is my requirement. In Redis cache, I have a set of parquet files and want to create a combined file in csv format using Python  and store it in  Redis cache. Please suggest me suitable approaches for my problem.
Thanks for sparing you time in reading my problem.
Thanks & Regards,
Siva Kumar

@sivakumar05 To assist you better on your query could you provide us with the link to the document you are referring to ?
In case your query in not related to document content, open a new forum thread either Microsoft Q&A or StackOverflow as it could be better place to get help on your scenario where the community members could provide their expert guidance to you based on their experience.

https://docs.microsoft.com/en-us/azure/azure-cache-for-redis/cache-python-get-started
Other than this link, I didn't find any references related to processing redis cache data using python. If required, I will post my query in Microsoft Q&A or StackOverflow.
Thank you Saurabh!


Checks if the gocache folder is in the go install directory.

This method of solving the problem when upgrading on linux assumes that the gocache is not important and it deletes the folder if it exists.
Plus this moves some of the error checks onto one line to be more consistent if that's OK.

Merged as a workaround for https://github.com/golang/go/issues/29906, thanks.

Ah I see. It looks like this will be fixed in the next release so I guess it can be removed then.


Bug/even 70

Restored hover functionality.

This pull request is now managed with CodeReviewHub. Refresh.


Is There A Limit Character for requestNdefWrite ?

Hi,
I'm trying to insert a long character maybe 300 character to NFC Card.
But my apps always shows error "Incorrect ndef format".
Before the apps listening for NFC, it shows error "Incorrect ndef format".
And I think the error came from this code:
NfcManager.requestNdefWrite(bytes)     .then(() => console.log('write completed'))     .catch(err => console.warn(err))
When I adjust the character to 100 character long it works successfully, but when I made it to 300 character it goes error. Can someone help me with this?
Thank you,
Vincent

Hi, can you share how you build your ndef message bytes? let's see if the logic is correct.

Hi,
I've searched for the character limitation and I found that the character limit for requestNdefWrite is 253 character. If goes above that for example 254 character it will goes "Incorrect ndef format" error.
This is the function genSPBString() I use to generate my NFC string.

genSPBString = () => {
var newSPB = [
this.state.idKartu,
this.state.idSpb,
this.state.nomorSPB,
this.state.truck_code,
parseInt(this.state.jumlah_tandan,10),
parseFloat(this.state.jumlah_brondolan,10),
parseInt(this.state.jumlah_OPH,10),
this.state.tujuan,
this.state.supir,
parseFloat(this.state.estimasi_tonase,10),
this.state.tanggal,
this.state.stateCurrentClock,
this.state.employeeCode,
"testing123123",
"testing123123",
"testing123123",
"testing123123",
"testing123123",
"testing123123",
"testing123123",
"testing123123",
"testing123123",
"testing123123",
"testing12"
]
console.log(newSPB)
return newSPB.join()
}

The console.log(newSPB) will get this result. In my case this string limited to 253 character.

S001,2120280309491934M,001,B8899UAF,0,0,0,INTP2,SC/INIT1/0106/66,0,03/10/2018,09:49:19,SC/INIT1/0107/35,testing123123,testing123123,testing123123,testing123123,testing123123,testing123123,testing123123,testing123123,testing123123,testing123123,testing12345

Then I pass the newSPB variable to urlToWrite state.

this.setState({
urlToWrite: encryptedSpb
}

And then I call the requestNdefWrite() function.
In there future the generated NFC string from genSPBString() will also encrypted using AES Encryption using this library https://github.com/rocwangv/react-native-aes-kit#readme. This is the result for the encryption.

fn7ii0WGCX9pZ530V3tK1snoiUSoIg2KdGLSc7MqNbLuuC6QU2j7hsmCbNm1mrUNtVxPxswNsE7C
vdj094DLNbfbBSLpFXhlMiC+ZJ8i9QZ6L9nkwF3TWgz+HFOxt1YmKryjJRykAVdWMbCd4GFrxNj7
q8yGzHPSqrCZwXK6LqBmTxCDNr6jB0Vtqz1l/googf84egHtNTnGuRytTnendPjEJWNvTwG4TzoQ
jwciZU1FB1JC1jCb6ghdu6Or9Y58r4fC+9Ac6jHlw+Z+62kdcCDddCzy5OhmTiokDnvJyxBh6PVX
WMyj97wRS69NEz8xoZpNoaeeJRsXkbO6MBBbbg==

Note:
I think my logic to generate the NDEF message are already correct, because like I said when I make the string to 100 character long, it successfully write to the NFC card with the encryption string. When I read the card I do the decryption first then read the variables, it goes success without error before I make the genSPBString() character long to 300++.

Hi, thanks for responding, however what I need to know is how you construct your Ndef Message bytes from the url string, so I can see whether you build the Ndef Message payload correctly.
More specifically, how you get from your urlToWrite to final bytes? (also, some old example I provided might not able to encode correct Ndef Message payload...)

Hi,
Hmm I think to convert urlToWrite into bytes I'm using the same like this library. Here's the function.

const RtdType = {
URL: 0,
TEXT: 1
};

    _NfcRequestNdefWrite = () => {

        function NfcStrToBytes(str) {
            let result = [];
            for (let i = 0; i < str.length; i++) {
                result.push(str.charCodeAt(i));
            }
            return result;
        }

        function NfcBuildUrlPayload(valueToWrite) {
            const urlBytes = NfcStrToBytes(valueToWrite);
            // in this example, we always use `http://`
            const headerBytes = [0xD1, 0x01, (urlBytes.length + 1), 0x55, 0x03];
            return [...headerBytes, ...urlBytes];
        }

        function NfcBuildTextPayload(valueToWrite) {
            const textBytes = NfcStrToBytes(valueToWrite);
            // in this example. we always use `en`
            const headerBytes = [0xD1, 0x01, (textBytes.length + 3), 0x54, 0x02, 0x65, 0x6e];
            return [...headerBytes, ...textBytes];
        }

        let {isWriting, urlToWrite, rtdType} = this.state;
        if (isWriting) {
            return;
        }

        let bytes;

        if (rtdType === RtdType.URL) {
            bytes = NfcBuildUrlPayload(urlToWrite);
        } else if (rtdType === RtdType.TEXT) {
            bytes = NfcBuildTextPayload(urlToWrite);
        }

        console.log("BYTES = " + bytes)

        this.setState({isWriting: true});
        NfcManager.requestNdefWrite(bytes)
            .then(() => this.setState({suksesWrite: true}))
            .catch(err => {
                this.setState({
                    suksesWrite: false
                })
                console.warn(err)
                this._hideModal()
                this._NfcStopDetection()
                alert(err)
                // toastError("Proses NFC gagal, silahkan coba lagi!")
            })
            .then(() => this.setState({isWriting: false}))
    }

I'm sorry if I give the wrong answer. Is this what you need to know? I really appreciate your reply, thank you so far.

Cool, that's indeed what I'm looking for. Looks like you're using old code snippet to encode NDEF payload, which might cause issue like this.
Please update to the latest version, and try following code:
import NfcManager, {Ndef} from 'react-native-nfc-manager';

function buildUrlPayload(valueToWrite) {
    return Ndef.encodeMessage([
        Ndef.uriRecord(valueToWrite),
    ]);
}

Thanks!

Great it works! The encryption and decryption text also works perfectly.
Thank you so much!


discuss: move to TOML instead of YAML

...maybe - which looks best?
https://gist.github.com/hswolff/86d92f44e385b302716f

Not implementing alternatives to YAML at the moment as there doesn't seem to be any desire or need for it. If people express interest in alternative formats then this can be revisited and implemented as a minor version bump.


gnomeExtensons: no desktop icons

Describe the bug
No GNOME Shell Extension can enable desktop icons.
Steps To Reproduce

Install gnomeExtensons.desktop-icons-neo and  gnomeExtensons.desktop-icons-ng-ding.
Try to enable desktop icons.

Expected behavior
Should be able to enable desktop icons in GNOME Shell, one way or another.
Additional context
About the time of NixOS 20.03, i was still able to have desktop icons using some old version of Desktop Icons extension.
Notify maintainers
@piegamesde

Metadata
$ nix-shell -p nix-info --run "nix-info -m"
 - system: `"x86_64-linux"`
 - host os: `Linux 5.10.90, NixOS, 21.11 (Porcupine)`
 - multi-user?: `yes`
 - sandbox: `yes`
 - version: `nix-env (Nix) 2.3.16`
 - channels(alexey): `""`
 - channels(root): `"nixos-21.11.335130.386234e2a61"`
 - nixpkgs: `/nix/var/nix/profiles/per-user/root/channels/nixos`

This probably requires patching all paths referencing other libraries or binaries. Which of those extensions shall I have a look at first?

@piegamesde , maybe the one that is easier to fix? I did not have an opportunity to test desktop-icons-neo, so i cannot decide between the two.
Thanks!

@piegamesde

This probably requires patching all paths referencing other libraries or binaries. Which of those extensions shall I have a look at first?

Haven't had the opportunity to check out any of them so I also cannot decide. Any one of them would be fine for me, so I guess
start with the one that is easier to fix (if there is a difference).
If I can be of any help let me know.

WIP: I have the following override
  (patchExtension "desktopicons-neo@darkdemon" (old: {
    patches = [
      (substituteAll {
        src = ./extensionOverridesPatches/desktopicons-neo_at_darkdemon.patch;
        inherit bash;
        inherit gjs;
        inherit (gnome) nautilus;
        inherit util-linux;
      })
    ];
  }))

and the following patch:
From 0a0ed1f2fe8fca4f57054aa2748e123fc33f0cf0 Mon Sep 17 00:00:00 2001
From: piegames<EMAIL_ADDRESS>Date: Thu, 3 Mar 2022 22:31:24 +0100
Subject: [PATCH] wip2

---
 createThumbnail.js  | 2 +-
 desktopManager.js   | 2 +-
 desktopicons-neo.js | 2 +-
 extension.js        | 2 +-
 4 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/createThumbnail.js b/createThumbnail.js
index 41d7bb7..174f539 100755
--- a/createThumbnail.js
+++ b/createThumbnail.js
@@ -1,4 +1,4 @@
-#!/usr/bin/gjs
+#!@gjs@/bin/gjs

 /* LICENSE INFORMATION
  *
diff --git a/desktopManager.js b/desktopManager.js
index 7b1e648..7f63fd5 100644
--- a/desktopManager.js
+++ b/desktopManager.js
@@ -153,7 +153,7 @@ var DesktopManager = class {

         // Check if Nautilus is available
         try {
-            DesktopIconsUtil.trySpawn(null, ["nautilus", "--version"]);
+            DesktopIconsUtil.trySpawn(null, ["@nautilus@/bin/nautilus", "--version"]);
         } catch(e) {
             this._errorWindow = new ShowErrorPopup.ShowErrorPopup(_("Nautilus File Manager not found"),
                                                                   _("The Nautilus File Manager is mandatory to work with Desktop Icons: Neo."),
@@ -1429,7 +1429,7 @@ var DesktopManager = class {
         pathList = pathList.join("");
         uriList = uriList.join("");
         let deskTop = `'` + DesktopIconsUtil.getDesktopDir().get_uri() + `'`;
-        let execline = `/bin/bash -c "`;
+        let execline = `@bash@/bin/bash -c "`;
         execline += `NAUTILUS_SCRIPT_SELECTED_FILE_PATHS=${pathList} `;
         execline += `NAUTILUS_SCRIPT_SELECTED_URIS=${uriList} `;
         execline += `NAUTILUS_SCRIPT_CURRENT_URI=${deskTop} `;
diff --git a/desktopicons-neo.js b/desktopicons-neo.js
index b826db5..58ef182 100755
--- a/desktopicons-neo.js
+++ b/desktopicons-neo.js
@@ -1,4 +1,4 @@
-#!/usr/bin/env gjs
+#!@gjs@/bin/gjs

 /* LICENSE INFORMATION
  *
diff --git a/extension.js b/extension.js
index cc8f296..a102808 100644
--- a/extension.js
+++ b/extension.js
@@ -226,7 +226,7 @@ function doKillAllOldDesktopProcesses() {
         }
         let path = 'gjs ' + GLib.build_filenamev([ExtensionUtils.getCurrentExtension().path, 'desktopicons-neo.js']);
         if (contents.startsWith(path)) {
-            let proc = new Gio.Subprocess({argv: ['/bin/kill', filename]});
+            let proc = new Gio.Subprocess({argv: ['@util-linux@/bin/kill', filename]});
             proc.init(null);
             proc.wait(null);
         }
--
2.33.1

But I somehow can't get it to find nautilus. It will always end with a null exception while trying to access nautilus stuff (can't copy the stack trace out of the testing VM, sorry).

still not solved :\

Made a PR for gtk4-desktop-icons-ng-ding, a similar technique can be used on the other desktop icon extensions. Would like if someone could test that everything's working.


Fix recipe and materials

The recipe field is supposed to indicate how to build the project overall, not just what generated the provenance.
For config-as-code, I would expect the following:

recipe.type is some URI representing "Azure DevOps Pipeline YAML"
materials[recipe.definedInMaterial] is a git repo containing the YAML config
recipe.entryPoint is the path to the YAML file

Example
"recipe": {
  "type": "https://dev.azure.com/Attestations/YamlRecipe@v1",
  "definedInMaterial": 0,
  "entryPoint": "azure-pipelines.yml"
},
"materials": [
  {
    "uri": "git+https://github.com/HariSekhon/DevOps-Bash-tools",
    "digest": {
      "sha1": "5b250c0a12ae03da737d31d7a85a637db8509f96"
    }
  }
]

For non-config-as-code, we'll need to figure out how to represent the uri and digest of the configuration. Note that we have the exact same problem for Google Cloud Build. @msuozzo @loosebazooka FYI.

Thanks for the clarification, will get this done tonight.

Hmm, gonna have to think on this a bit. You are right, they have the concept of "classic" pipelines in ADO (GUI based) and that means no azure-pipelines.yml...

Hi @MarkLodato,
This is going to be very difficult in Azure DevOps (ADO) since there are two types of Azure Pipelines, the "classic" GUI based, and "yaml" config-as-code based. Unfortunately, the agent executing the pipeline doesn't know which type of pipeline is being used to build the project. As a result, we may not be able to reliably determine recipe.type, materials, and recipe.entryPoint. What's worse, when using "yaml" pipelines, ADO stores the "azure-pipelines.yml" file in the source code repo; however, there is nothing that says a given build job has to USE that file. You can have an "azure-pipelines.yml" file in your repo but still use a "classic" pipeline to build your project.
So enough complaining, possible solutions include:
recipe.type - We could use the value that I used in buildInvocationId (take a look at the example). The buildInvocationId is made up of three values:

teamFoundationCollectionUri -> https://dev.azure.com/gattjoe
teamProject -> OCSPChecker
buildId -> immutable, incremented build number for the project

materials - will always be 0 for ADO since we can't read the build steps
recipe.entryPoint - is currently set to Build.DefinitionName, which is the name of the build pipeline that initiated the build. This is probably the best ADO can currently do (as far as I know).
As far as materials, I gave the URI for the repo (which doesn't have to be in ADO) and I gave the commit hash that is being built.
Let me know your thoughts.

Hi @gattjoe, sorry for the long delay. I was on leave.
We have the same issue with Google Cloud Build (GCB), where we can't tell whether the build steps come from YAML or from the GUI. (@msuozzo @TomHennen FYI.) For now, I think it's OK to say that we can't detect it, then add it later if we figure out a way (say by the API). I'll take a look. Thanks for the research!
I'll do a little more research then send you a pull request for the fields!

There is a similar issue with self-hosted runners, which applies to both Azure Pipelines and GitHub Actions. Each individual job within a workflow can use its own runner, so there is no workflow-wide property that says "all steps were run on hosted runners."


Remove camel-k-runtime extension

As per discussion on the dev mailing list recently:
<EMAIL_ADDRESS>/CC @squakez

You can also remove jolokia.version from pom.xml and camel-k-runtime-shutdown/pom.xml from  tooling/test-list/pom.xml.

Thanks @claudio4j. Latest commit removes the leftovers you mentioned.


Small text edits and added examples

[doc/introduction.rst]: Fixed title and small change in the "problem statement" text
[doc/gsmote_with_remote_sensing_data.rst]: Added generalistic remote sensing example
[doc/gsmote_and_smote.rst]: Added gsmote and smote example
[doc/gsmote.rst]: Small text edit in "sample generation" section
[doc/examples.rst]: Added examples' index

Great work!


Release/3.6.1

Maintenance release

@nim65s is this release solving the issue with the cppadcg cmake module?

nope, that's the current devel only.


[Discussion] CASE on top of IF in alert definitions?

Having a diverse environment with different SLAs towards customers, we need to duplicate quite a lot of alert rules to account for different severities, escalation paths, or even ignoring some things.
If we had a CASE stanza which allowed us to define the matching rules and then, in a second step, decide what labels to attach, finished by a catchall for anything we didn't match, would save quite a bit of effort.
I do think that there should be a mandatory catchall to make sure people don't fully handle alarms by mistake.

I think you've filed this in the wrong repository. Also that sounds like it can be handled with configuration management.

You are (partially) correct; moving to https://github.com/prometheus/prometheus/issues/3025


Add a trimjumplist() for script

This is for https://github.com/vim/vim/issues/3935 and especially for cscope users like https://vi.stackexchange.com/questions/18344/how-to-change-jumplist-behavior, with this function I can use it like:
function! TrimJumpListAndCscopeFind(action, word)
    if has('jumplist')
        if exists('*trimjumplist')
            let jl = getjumplist()
            call trimjumplist(len(jl[0]) - str2nr(jl[1]))
        endif
    endif
    call CscopeFind(a:action, a:word)
endfunction

nnoremap  <leader>fg :call TrimJumpListAndCscopeFind('g', expand('<cword>'))<CR>

vim now adopted jumpoption=stack which does the same job, closing.


Make a separate icons package, and separate each icons

Currently, the Icon component houses all the other Icons too, making it a pretty big component. Separate each icons into separate components. And since this will pollute the package a lot, let's create this into a separate package

@angle943 - can you create a blank repo for Icons - was hoping to assist in some migrating common ui components: Thanks

@denistsoi do you know how to make nested packages? IE sorta like @material-ui, where i can import stuff from @material-ui/icons, @material-ui/abc, etc etc


Undefined Function Error when trying to add new model with Phoenix 1.1.6

I have a fresh install of the Phoenix framework. I then followed the installation instructions for ExAdmin. The initial Dashboard page loads perfectly under /admin. However, when adding a new model using
"mix admin.gen.resource Account" I get the following error when trying to run the server:
== Compilation error on file web/admin/account.ex ==
** (UndefinedFunctionError) undefined function DashboardPhoenix.ExAdmin.account/0 (module DashboardPhoenix.ExAdmin is not available)
DashboardPhoenix.ExAdmin.account()
(stdlib) erl_eval.erl:669: :erl_eval.do_apply/6
(stdlib) erl_eval.erl:877: :erl_eval.expr_list/6
(stdlib) erl_eval.erl:404: :erl_eval.expr/5
(elixir) lib/kernel/parallel_compiler.ex:100 : anonymous fn/4 in Kernel.ParallelCompiler.spawn_compilers/8
The config file looks like this:
config :ex_admin,
repo: DashboardPhoenix.Repo,
module: DashboardPhoenix,
modules: [
DashboardPhoenix.ExAdmin.Dashboard,
DashboardPhoenix.ExAdmin.Account,
]

I am using IEx 1.2.6, Mix 1.2.6 and Phoenix  1.1.6
Have I missed something or is this a problem with using a newer Phoenix version or something like that?
I tried checking this by copying your mix.exs file from the demo version, but I eventually came to the same error.
Thanks

@HStormfelt. Can you post your DashboardPhoenix.ExAdmin.Account module please. Thanks

On Jun 16, 2016, at 6:56 AM, HStromfelt<EMAIL_ADDRESS>wrote:
I have a fresh install of the Phoenix framework. I then followed the installation instructions for ExAdmin. The initial Dashboard page loads perfectly under /admin. However, when adding a new model using
"mix admin.gen.resource Account" I get the following error when trying to run the server:
== Compilation error on file web/admin/account.ex ==
** (UndefinedFunctionError) undefined function DashboardPhoenix.ExAdmin.account/0 (module DashboardPhoenix.ExAdmin is not available)
DashboardPhoenix.ExAdmin.account()
(stdlib) erl_eval.erl:669: :erl_eval.do_apply/6
(stdlib) erl_eval.erl:877: :erl_eval.expr_list/6
(stdlib) erl_eval.erl:404: :erl_eval.expr/5
(elixir) lib/kernel/parallel_compiler.ex💯 anonymous fn/4 in Kernel.ParallelCompiler.spawn_compilers/8
The config file looks like this:
config :ex_admin,
repo: DashboardPhoenix.Repo,
module: DashboardPhoenix,
modules: [
DashboardPhoenix.ExAdmin.Dashboard,
DashboardPhoenix.ExAdmin.Account,
]
I am using IEx 1.2.6, Mix 1.2.6 and Phoenix 1.1.6
Have I missed something or is this a problem with using a newer Phoenix version or something like that?
I tried checking this by copying your mix.exs file from the demo version, but I eventually came to the same error.
Thanks
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub https://github.com/smpallen99/ex_admin/issues/143, or mute the thread https://github.com/notifications/unsubscribe/AA2YpazR9uc0S9p9nafMTo3rIh-4igaGks5qMSvggaJpZM4I3Q8l.

Sure:
defmodule DashboardPhoenix.ExAdmin.Account do
use ExAdmin.Register
register_resource DashboardPhoenix.Account do
end
end
On a previous attempt I copied over the body from the dashboard.ex file, but at the moment I have left it untouched.

One more question. What version of ExAdmin?
Sent from my iPhone

On Jun 16, 2016, at 7:15 AM, HStromfelt<EMAIL_ADDRESS>wrote:
Sure:
defmodule DashboardPhoenix.ExAdmin.Account do
use ExAdmin.Register
register_resource DashboardPhoenix.Account do
end
end
On a previous attempt I copied over the body from the dashboard.ex file, but at the moment I have left it untouched.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or mute the thread.

Sure, I am using 0.7.6. I included it with {:ex_admin, "~> 0.7"}
Thanks for the help

Doing a quick test. Just a minute

On Jun 16, 2016, at 7:34 AM, HStromfelt<EMAIL_ADDRESS>wrote:
Sure, I am using 0.7.6. I included it with {:ex_admin, "~> 0.7"}
Thanks for the help
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub https://github.com/smpallen99/ex_admin/issues/143#issuecomment-226460196, or mute the thread https://github.com/notifications/unsubscribe/AA2YpUyrVsgjegm0jr-sT3T4wmjxZbbsks5qMTTJgaJpZM4I3Q8l.

There does appear to be an issue. I got a different error thought. Looking into it now.

@HStromfelt Sorry, my mistake. I generated a resource for the incorrect model. Test project working fine on versions you mention above. So, must be a problem with your project. Can you show me your whole project either on github, or send me a tar file at smpallen99 at yahoo dot com

Sorry for my delayed reply, back now!
Thanks checking it out. I'm using the Cloud 9 IDE and have followed this tutorial to get the set up done<EMAIL_ADDRESS>so perhaps the problem originates somewhere in there!
I've put the project up on my github now (https://github.com/HStromfelt/Koaloo_elixir). Cheers for taking a look

@HStromfelt I don't see where you have programmed your model. If you run the following it should work:
mix phoenix.gen.model Account accounts name
mix ecto.setup

Then it should work. Let me know...
In the mean time, I'll open an issue to improve the error message for this scenario.
Steve

@smpallen99 That is great thank you, I should have realised. It did the trick. I am quite new to Elixir and Phoenix so I totally overlooked it. Thanks!

Glad you got it working.


[BUG] Can't override data for sequential agents

Describe the bug
When using the API to override parameters in sequential agents or LLM nodes, the ability to specify multiple values for a config parameter by specifying the node ids does not seem to work correctly.
Example:
This overrideConfig works correctly:
 overrideConfig: {
      sessionId:  '<some session id>',
      systemMessagePrompt: 'you are cat, you can only response with meows',
      qdrantCollection: {
        qdrant_2: 'vectorCollectionName'
      }
    }

BUT this one causes an error: (Error: predictionsServices.buildChatflow - Error buildAgentGraph - message.content.map is not a function)
 overrideConfig: {
      sessionId: '<some session id>',
      systemMessagePrompt: {
          seqAgent_0: 'you are cat, you can only response with meows'
     },
      qdrantCollection: {
        qdrant_2: 'vectorCollectionName'
      }
}

To Reproduce
Steps to reproduce the behavior:

Create a flow using sequential agents or LLM nodes
Try providing override config values by specifying node id

Expected behavior
The flow should accept the override values and return the prediction result

Do you have a example flow?
I tried testing and it works as expected:
1.) Has an agentflow with 2 agents:

2.) Test via Postman (override system prompt for agent_2):

3.) Verify on langsmith:

I am facing the same issue here, overriding state variables doesn't work


Remove "gummy\W\bears?" from watchlist

Pattern generated many false positives lately: https://metasmoke.erwaysoftware.com/search?utf8=✓&body=gummy&commit=Search
Blacklisted more precise pattern "cbd\W?gummy\W?bears?" instead: https://github.com/Charcoal-SE/SmokeDetector/commit/962ad6d

Coverage remained the same at 65.71% when pulling cc93d376acbff6098a6e4e569d5411cb8aa9d832 on ByteCommander:patch-3 into 962ad6d1cf9d9886cf9b89c4ee2229af63460c38 on Charcoal-SE:master.

!!/approve


Navbar redesign

Removing this PR, adding a new one with all the UI fixes as this branch is corrupted (linting errors)


Spatial Conform needs Sub-pixel options, not just bilinear but nearest neighbor, catmull-rom, Mitchell, lanczos, and MetalFX

Apple Feedback Assistant ID: MISSING!
Is your feature request related to a problem? Please describe.
I'd like to be able to zoom into a video but use Nearest Neighbor rather than bi-linear.  I want the pixels to be blocky for a specific purpose.
Describe the solution you'd like
Within the Spacial Conform Box for a video, There should be a "Sub-Pixel" option with:
Nearest Neighbor, Bi-linear, Catmull-Rom, Catmull-Rom Filmic, Mitchell, Lanczos, and MetalFX
Describe alternatives you've considered
a "zoom" plugin but it will only work with pixels already on the screen. difficult to work with
Additional context
Using MetalFX as an option to use Machine Learning to upscale with produce the very best results
Lanczos should expand the border by 1 pixel (and repeat the border pixel[s]?) so its typical artifacts do not show up around the edges.

This would be SO hot.


Publish argocd-operator as an EKS add-ons

Is your feature request related to a problem? Please describe.
Today when bootstrapping a kubernetes cluster it's quite hard to properly orchestrate the cluster deployment and required system addons for monitoring, security, argocd, etc.
As for AWS EKS, there are what is called EKS Add-on
 which are built for that purpose. AWS EKS let independent software to provide their add-on through the marketplace. See https://docs.aws.amazon.com/eks/latest/userguide/eks-add-ons.html#workloads-add-ons-available-vendors for the actual list.
There is actually an issue in the AWS containers roadmap to tackle similar issue, but sounds like there are no willing to move forward on this. Probably because they don't want to maintain it by themselves but are willing the community to step up for that. Just guessing here.
Describe the solution you'd like
The solution is only for EKS workload, but most of the work will be reusable for all Kubernetes platforms. Actually, the idea will be to create a helm chart for the argocd-operator with a proper json schema. The last part is to distribute that through AWS Marketplce.
AWS Marketplace is already used to distribute other open source software like Debian, Centos, etc.
Describe alternatives you've considered
Today alternative is to leverage on a complex orchestration system we built in our CI and CD systems.
Additional context

https://github.com/aws/containers-roadmap/issues/1176
https://aws.amazon.com/about-aws/whats-new/2024/01/aws-marketplace-self-service-flows-sellers-third-party-eks-add-ons/
https://docs.aws.amazon.com/marketplace/latest/userguide/container-product-getting-started.html

Hi @barryib , I see a lot of upvotes 👍 on the EKS request. Looks like lot of users are interested in it. I haven't really went thought EKS add-ons docs but looks like it is something similar to OperatorHub or Openshift Marketplace. I'll need to spend some time understanding it better. Do you have any documentation links on how to add new add-ons or any example opensource projects particularly  in operator domain that are available through EKS add-ons. I am trying to understand the maintenance overhead involved in supporting it.

Hey @svghadi I think you can start with https://docs.aws.amazon.com/marketplace/latest/userguide/container-product-getting-started.html and also give some feedbacks to the EKS requests. Worth also contacting AWS to move forward. I think if come from argocd maintainers, it'll help to drive this topic forward.
@mikestef9 What do do you think ?


Pixel shader debugger returns correct result but the actual return is wrong

Description
I'm working on a renderer in d3d11, in which I try to render a number of textures on a single triangle by having the pixel shader calculate which sprite in a texture array it needs to load the value from. For testing purposes, every tile on the screen has a sprite ID of 1, which indexes into the second texture of the array.
In debugging, I correctly get that value, and the texture lookup returns the expected color for the pixel. If I discard on the case of SpriteID == 0, the pixel continues and does not discard.
The texture viewer, however, shows the sprite in slot 0 of the texture array. If I discard as above, the pixel's history indicates that it was discarded. The history and the debugger tell very different stories, and I have no idea what is happening in the shader to cause the issue I'm experiencing.
Steps to reproduce

Load up the capture provided to<EMAIL_ADDRESS>with this post's title in the subject.
Check the texture viewer. You will see a test sprite repeated in tiles across the screen. These are the wrong sprite. The expected sprite is slice 1 of 2d texture array 51, not slice 0.
Right click any pixel, and check the pixel's history. Note that light blue pixels show a discard. Other pixels have a color that differs from the brown color expected for that pixel.
Click to debug the pixel, and walk through the debugger. SpriteID is always 1. It will never be discarded when alpha is 0. Note that the return value includes a very different color than the color of the pixel you tried to debug; it will always be a brown of some kind. This is the expected value.

Environment

RenderDoc version: 1.27
Operating System: Windows 10
Graphics API: D3D11

I'm on an Nvidia GTX 1080 with the latest driver.

I don't know what the problem is at all, but while trying to fix my program, I noticed that the behavior revolves around the .z component of SV_POSITION. When using the component directly it works fine, but when casting it to an int or comparing it to another value and subsequently using the results of that to determine a variable used by the Texture2D.Load() function, that function seems to return 0.
This is the case even if you use it in an if() statement where you know that the statement never runs because of a discard; if the if statement also contains a change to one of the .Load() variables, the return is 0.
I've fixed my program's behavior by removing the cast to int that I'd originally put in there, but I'm leaving the issue open in case the bug here is still worth looking into. It might be the case that renderdoc is simulating the correct behavior, but some kind of bug in d3d11 or the driver or something is causing unexpected behavior in this situation.
Whatever the case, let me know if you need anything else from me.

After even more research, this is almost certainly related to #763. In my case, I use instanced draw calls over the same set of pixels, so if I try to debug a pixel it will only ever show one of them. I'll be closing this as a duplicate of that issue.


Creating/updating of instances currently not working

Due to a problem with the Cloudflare API, the provisioning process of VyHub instances currently does not work.
As soon as Cloudflare resolves the issue, all pending instances will be started automatically.


Lazy Loading Config

moved config.yaml to base directory, added config.py which uses a lazy-loading scheme for config parsing and replaced all appropriate occurrences of Starfish. with Starfish.config..
Issue #104

I've piggy-backed a couple other changes onto this with regards to the installation. I've rewritten setup.py to be less dense and a little more intelligent. You no longer have to install numpy or cython before installing this package using a cool build_ext trick. It is also completely installable from pip either as a cloned repo or straight from github (#95 ). I've also updated the README to reflect these changes. This should be ready to go, but feel free to poke around.

This is some great functionality to the config files, thanks! Also the cython install fix sounds like it will really help smooth things out for people. Once I make the develop branch let's merge this there.

Added a unit test under tests/test_config.py and found some more bugs. Yay test driven development! I've fixed the bugs and confirmed the tests pass. It works in isolation, like
$ pytest tests/test_config.py


nose to pytest, move all tests to 'tests' folder

Solution to #887

472 passed, 2 skipped, 24 warnings

I kept them from NeuroM v1. I will deal with them in cleaning PRs like this one #888

Codecov Report

Merging #892 (839ea37) into master (ba62cd5) will not change coverage.
The diff coverage is n/a.

@@            Coverage Diff            @@
##            master      #892   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files           35        37    +2
  Lines         2057      2061    +4
=========================================
+ Hits          2057      2061    +4

thank you!


Filter outside

Did you want to merge this or just create the PR as kind of a bookmark/reminder ?

I wanted to comment something and to have something to discuss about, but then understood the questionable part. But we cannot delete PRs or issues I think ...


[8.x] Define multiple foreign model IDs in table Blueprint at once

The PR exposes a convenience method of defining multiple foreign ID columns for related models.
Backwards compatability
Since it sits on top of the existing $table->foreignIdFor(...) method and does not modify the existing behaviour of that method, it does not present any breaking changes or backwards incompatability.
Benefit to users
Currently, users are able to define foreign Ids tied to models using the existing 'foreignIdFor(Model::class)' method. This new method enables users to more succinctly define tables that relate to multiple foreign models. All resulting ForeignIdColumnDefinitions remain accessible for additional individual configuration or handling. Furthermore, since the method returns a Collection, the use of HigherOrderCollectionProxy methods, or 'each' Collection callbacks can also be used to apply settings to the entire collection.
Unit tests
Tests accompany this PR. See the additional tests in tests/Database/DatabaseSchemaBlueprintTest.php. Since the tests are named with a similar base, they can all be ran with the following command:
php .\vendor\bin\phpunit --filter='testGenerateMultipleRelationshipColumns'
Example usages
Typically from within a migration:
Conventional column names will be used (user_id, project_id, state_id):
Schema::table('uploads', function (Blueprint $table) {
    $table->foreignIdsFor([
        User::class,
        Project::class,
        State::class
    ]);
});

Conventional column names will be used (user_id, project_id, state_id), all columns made nullable.
Schema::table('uploads', function (Blueprint $table) {
    $table->foreignIdsFor([
        User::class,
        Project::class,
        State::class
    ])->each->nullable();
});

// Or without the use of HigherOrderCollectionProxy
Schema::table('uploads', function (Blueprint $table) {
    $table->foreignIdsFor([
        User::class,
        Project::class,
        State::class
    ])->each( fn($def) => $def->nullable() );
});

Note - to express the same schema with the existing API, the following code is necessary - 215 chars vs 160 chars with the proposed change.
Schema::table('uploads', function (Blueprint $table) {
    $table->foreignIdFor(User::class)->nullable();
    $table->foreignIdFor(Project::class)->nullable();
    $table->foreignIdFor(State::class)->nullable();
});

To provide a specific column name, or handle the ForeignIdColumnDefinition, the $table may configured in the following way. Assuming no other conventions are changed in model class definitions, the resulting columns created will be: 'post_id', 'uploader_id', 'project_id', and 'status_id;'
Schema::table('uploads', function (Blueprint $table) {
    $table->foreignIdsFor([
        Post::class,
        User::class => 'uploader_id',
        Project::class => fn(ForeignIdColumnDefinition $definition) => $definition->nullable(),
        State::class => ['status_id', fn(ForeignIdColumnDefinition $definition) => $definition->after('id')]
    ]);
});

Thanks for your pull request to Laravel!
Unfortunately, I'm going to delay merging this code for now. To preserve our ability to adequately maintain the framework, we need to be very careful regarding the amount of code we include.
If possible, please consider releasing your code as a package so that the community can still take advantage of your contributions!
If you feel absolutely certain that this code corrects a bug in the framework, please "@" mention me in a follow-up comment with further explanation so that GitHub will send me a notification of your response.

Thanks for considering my little PR. No problem - I appreciate the need to be conservative about additions. I enjoyed learning the process of putting together a contribution :-).


added new test cases for remotesaveprovider

Please add a coverage report

As i raised the new PR for the same because there are lots of changes happen before merge this branch


Peer-socket API (WIP)

TODOS

Internal

track how many active tabs there are and leave all lobbies after a site is inactive
reliably get the swarm topic of every connection
rewrite to use only one swarm and multiplex
connection deduplication
cleanup on close

API changes

getSocket() method
Change to {readable, writeable} impl

Questions

what error conditions should bubble to the API?
do we need a socket channel API?
should we use a loopback (self) socket?

Target API
PeerSocketSwarm
// constructors
var swarm = await PeerSocket.joinSwarm(opts)
// opts:
// - `id` string. Specify the ID of an open swarm to join.

// properties
swarm.type // 'origin', 'open'
swarm.id // string, only set if type == 'open'
swarm.closed // boolean

// methods
var socket = swarm.getLoopback()
var socket = swarm.getSocket(id)
var sockets = swarm.getSockets()
await swarm.close()

// events
swarm.addEventListener('connection', evt => {}) // evt.socket is a PeerSocket
swarm.addEventListener('close', evt => {})

PeerSocketInfo
// properties
peer.id
peer.host
peer.port

PeerSocket
// properties
socket.loopback // boolean
socket.info // PeerSocketInfo
socket.swarm // PeerSocketSwarm
socket.readable // ReadableStream
socket.writeable // WriteableStream

// methods
socket.getSessionData()
socket.setSessionData(data) // only valid if loopback == true
await socket.write(msg)
await socket.close()

// events
socket.addEventListener('message', evt => {}) // contains evt.message
socket.addEventListener('session-data', evt => {}) // contains evt.sessionData
socket.addEventListener('close', evt => {})

// static methods
PeerSocket.setDebugIdentity(n)

Example usage
var swarm
setup()

async function setup () {
  swarm = await PeerSocket.joinSwarm({id: 'pauls-chat-room'})
  setInterval(() => broadcast('Hello!'), 5e3)
  swarm.addEventListener('connection', listen)
}

async function listen ({socket}) {
  for await (let msg of socket.readable) {
    if (msg.type === 'text')
      console.log(socket.info.id, 'says', msg.text)
  }
}

function broadcast (text) {
  for (let s of swarm.getSockets()) {
    s.write({type: 'text', text})
  }
}

Notes about Readable streams
The socket.readable attribute is a ReadableStream. With async iteration, that will enable the following usage:
for await (let msg of socket.readable) {
  // will get hit every time a new message arrives
}

Because the socket has the {readable, writeable} attributes it fits the shape of a TransformStream and can therefore be used in pipeThrough().
var myRPC = createRPCInterface(...)
myRPC.readable.pipeThrough(socket).pipeTo(myRPC.writeable)

How multiple tabs & apps work
If an app has multiple tabs open, it will share access to the swarm and its sockets. The app needs to be aware of that and avoid duplicating behaviors. (It should coordinate with its other tabs.)
If multiple apps are in the same swarm (where an app is an origin, eg foo.com vs bar.com) then each app will have its own presence in the swarm and create its own sockets. That means a single device can have multiple presences in a swarm, one for each origin they have active in the swarm. (This decision was made because it'd be insane to force apps to coordinate with each other around shared socket ownership.)
Using  setDebugIdentity for testing
When testing an app, it's helpful to run multiple identities in separate tabs as a way to simulate multiple peers. This can be done with PeerSocket.setDebugIdentity(), which takes in a number:
if (DEBUG) {
  PeerSocket.setDebugIdentity(1)
}
var swarm = PeerSocket.joinSwarm()
// ...

This will cause the tab to join the swarm as a separate identity than the other tabs, with its own set of sockets and events. The identity used is the number, and any number of identities can be used. If multiple tabs use the same debug identity number, they will share the identity.
setDebugIdentity must be called before any other PeerSocket method.
Relationship with Hyperswarm
PeerSocket uses Hyperswarm. It automatically prefixes the "topic" identifers, thus the constructions are:
blake2b(`peersocket-open-${id}`) // for open lobbies
blake2b(`peersocket-origin-${siteOrigin}`) // for site lobbies

Open vs Origin swarm
An open swarm can be joined by any origin that knows the swarm name. It is automatically used when id is set.
An origin swarm can only be joined by pages that share an origin. This constraint is enforced by the browser, meaning a program outside of the browser could join the origin swarm. The origin swarm is used when no id is given for the swarm.
Future plans
In the future, this API will be expanded to support:

Connection management (only open connections with candidates after app 👌s it, and a way to close connections)
Authenticated connections
Lobbies that are "owned" by specific users, enabling a kind of client/server relationship

Over time it'll diverge more. Using separate sockets lets us construct the PeerSocket connections specifically to the apps needs, eg with authentication.

That's awesome. Especially if this is opening up the potential for other browsers to adopt a simiar API in the future.
One could potentially run IPFS over this. 😂
This could even be used to experiment with new hyperdb features without waiting for Beaker to get first class integration.
I think this will need to get additional error and open events as well as a close() method so that it can be more in tune with the APIs in RTCDataChannel and WebSocket. Another thing that's missing is the protocol field, but I'm not sure how realistic that would be without adding more overhead to the wire protocol.

Also, I think that closed should be replaced by a readyState variable to make it more in tune.
Also since we're dreaming here, it'd be amazing if it was async iterable. 😁

I agree about the readyState though ironically, despite having the same values, both APIs have different encodings. WebSocket uses numbers and RTCDataChannel uses strings.

For the first iteration, there's not going to be any connection management (no close(), no chance to decide whether to open new connections).

This looks amazing. 😍

@RangerMauve Thanks! Still making lots of updates as we build and learn the requirements but I'm feeling good about it

At a high level there are a couple possibilities I imagine for securing p2p channels.
Option 1: Provide crypto functions that encapsulate identity (Crypto Identity API)
Instead of integrating security into PeerSockets provide a more granular API for using the ed25519 Identity keys.
Eg.
const archive = await DatArchive.selectArchive({ authorizePrivateKey: true })

const encryptedText = await archive.publicKey.encrypt('super secret text')

const decryptedText = await archive.privateKey.decrypt(encryptedText)

const signature = await archive.privateKey.sign('super secret text')

Pros:

Web devs have total flexibility in how they use the crypto functions to secure their data and can experiment with new security ideas.
Higher level connection security libraries can proliferate and evolve more quickly when they are not part of the Beaker API.
There is prior art: my GraphQLThings lib provides triple diffie hellman over Beaker's experimental datPeers API . I wouldn't expect it to be too much work to port this to a new PeerSockets + Crypto Identity API.

Cons:

Less beginner friendly. Especially at first when there aren't many libraries and those libraries aren't mature.
The crypto functions would need to be safeguarded against timing attacks if they are not constant time
Gives web devs more opportunities to make mistakes in their PeerSocket security implementations

Option 2:
Integrate security into PeerSockets directly.
Eg.
const archive = await DatArchive.selectArchive()

const swarm = await PeerSocket.joinSwarm({
  myIdentity: archive
  peerIdentityPublicKey: await archive.readFile('peerIdentity.pub')
  algorithm: 'triple-diffie-hellman-aes-256`
})

Pros:

Initially beginner friendly because everything the web dev needs to secure their connection is in the Beaker docs.

Cons:

Web APIs should not break backwards  compatibility so the first version of the API should be well thought out for many use cases including more complicated options.
Swarms of more then 2 users in communication may require complicated security which I expect will take time and expertise to develop. Developing a general purpose PeerSocket security mechanism might slow the release of Beaker@next and remove dev energies from other priorities.

Note So Option 2 is pretty much a Strawman here. When I started writing I thought there would be more reasons to support it but I haven't come up with them. If you can think of more reasons then let me know. Also there could be an Option 3 which would be a combined approach where we release both a secure PeerSocket API and a Identity Cryto API but I expect that the Secure PeerSocket API in that example  would become a legacy maintenance headache with little benefit after community beaker crypto libraries are popularized.

With regards to PeerSocket security, I think we were going to get transport level security within hyperswarm in the form of the noise protocol.

I'm still catching up on this thread but is this feature perhaps a way to use hypercore feeds in Beaker? I recently became interested in that approach for storing sensor data efficiently (@dwblair). For the chat use case, perhaps as a way to store message history.

It could, but there's also the Feed API that would be nice to have. I don't have the link offhand.

We'll be adding the Hypercore API soon, so there shouldn't be any need to get PeerSockets involved.

I think PeerSockets is still going to be important for stuff like the multiplayer demo I did at the dat event at DTN. :P

Yeah I just meant, we wont need PeerSockets as a means to get access to Hypercores


[ADAP-759] [CT-2925] can't turn back to 1.5 from 1.6 without issues

Is this a new bug in dbt-core?

[X] I believe this is a new bug in dbt-core
[X] I have searched the existing issues, and I could not find an existing issue for this bug

Current Behavior
i was trying to use the materialized views in 1.6 but it didn't work as expected on red shift so i downgraded to 1.5 ...but it tells me there is an os error regarding the connections when i try to dbt debug although the profiles.yml file was already working before ....
note .... i tried to install 1.5 ion a clean python environemtn but the issue still prisists .... so apparently somthing in my project changed when i used dbt 1.6 ... so i'm not sure what that is .... but i need some support
Expected Behavior
when i downgrade to dbt 1.5  my project should be working as it was before i guess
Steps To Reproduce
i upgraded to 1.6 ...
i then tried to pip install -U dbt-redshift==1.5
and then i tried:   dbt parse
then i issued  : dbt debug
and then i got the following error
' 18:14:56    cluster_id: None
18:14:56    iam_profile: None
18:14:56    sslmode: None
18:14:56  Registered adapter: redshift=1.5.0
18:14:56    Connection test: [ERROR]
18:14:56  1 check failed:
18:14:56  dbt was unable to connect to the specified database.
The database returned the following error:

Database Error
('communication error', OSError('Int or String expected'))
'

Relevant log output
18:14:56    cluster_id: None
18:14:56    iam_profile: None
18:14:56    sslmode: None
18:14:56  Registered adapter: redshift=1.5.0
18:14:56    Connection test: [ERROR]

18:14:56  1 check failed:
18:14:56  dbt was unable to connect to the specified database.
The database returned the following error:

  >Database Error
  ('communication error', OSError('Int or String expected'))

Environment
- OS:pop-OS
- Python:3.10
- dbt:1.6

Which database adapter are you using with dbt?
redshift
Additional Context

@dbeatty10 I'm also having this issue. I've tried installing 1.5.1/3/5/8 and am now on 1.6.0 but I can't seem to resolve the issue:
$ dbt compile
22:53:41  Running with dbt=1.6.0
22:53:42  Registered adapter: redshift=1.6.0
22:53:42  Unable to do partial parsing because of a version mismatch
22:53:42  Found 97 models, 1 operation, 2 tests, 11 sources, 0 exposures, 0 metrics, 400 macros, 0 groups, 0 semantic models
22:53:42
22:53:42  Encountered an error:
Database Error
  ('communication error', gaierror(8, 'nodename nor servname provided, or not known'))


Add summary telemetry when summaries are not catching up

As we are making a lot of adjustments in summarizing flow, it would be great to learn how often summarization process does not catch up, i.e., signal to summarize comes sooner than previous summary is complete.
I'd start with making it an error event here, where we switch this.tryWhileSummarizing from false to true:
    /** Heuristics summarize attempt. */
    private trySummarize(
        summarizeReason: SummarizeReason,
        cancellationToken = this.cancellationToken): void
    {
        if (this.summarizingLock !== undefined) {
            // lockedSummaryAction() will retry heuristic-based summary at the end of current attempt
            // if it's still needed
            this.tryWhileSummarizing = true;
            return;
        }

@vladsud FYI this new error event triggered a Sev2 incident due to the number of errors raised. I changed the event to telemetry instead of error.
Incident-305649615 Details - IcM (microsofticm.com)


Contact page is overlapped by footer

I used routers to link the pages but the contact page is getting overlapped by the footer.

Hi @akshitjain2004  can you assign this to me?

Hey @leetebbs,  Yes


How to run backups on a schedule?

I couldn't find anything on this in the docs, or searching this repo. So, how are you supposed to schedule backups?
Normally I'd just use a cron job. But restic requires a password for every command. There is no password flag I could find. Does every job have to be interactive?
I could write an expect script, but I'd rather use something built into restic.
Output of restic version
restic 0.1.0 (v0.1.0-548-g795e3d5)
compiled at 2016-05-14 07:41:18 with go1.6.1

According to this, you can use the environment variable RESTIC_PASSWORD to specify the password.

As @pvgoran already said, you can use the environment variable RESTIC_PASSWORD. This is documented in the manual here
http://restic.readthedocs.io/en/latest/Manual/#initialize-a-repository
There is also issue #278, which is about reading the password from a file.
I'm going to close this issue as there is nothing we need to do right now. If you disagree, please leave a comment.

Ouch, and I thought I had read that section through....
Maybe give that paragraph it's own heading or subheading? The first four paragraphs in that section cover everything about initializing a repository. Automating backups doesn't really fit under that.
Thanks @pvgoran for the fast answer, btw. :smile:

Just a quick follow-up question on this. If a backup doesn't finish by the time cron executes restic again, what will happen?

In this case, restic will start a second (parallel) backup, which uses data already uploaded by the first (still running) backup. I guess that both backups will finish almost at the same time. There will be some data duplication, which is cleaned up when the prune command is run.
This is an interesting case I haven't thought about yet. Do you think we need code to check whether the same backup is already running on the same host, and exit in this case?

@fd0 Possibly, yes. For the same backup only. Or, a clean way to script automated backups: some instructions will do, maybe "restic backup" then "restic unlock" then "restic prune" for example. But not having to worry about those extra commands would be nice.

restic backup followed by restic forget and restic prune is the usual workflow, and that cleans it up. I'll add another issue anyway, so we can track this idea.

Cool, thank you! For now I'll use that flow.

Another option here that could help is a timeout parameter.  If you know your cron job schedules a backup every X hours, you could pass a --timeout to restic so it will end before the next one starts.  It would also be handy for other things too.  (this may already exist, I'm new to restic)
Detecting that restic is already running sounds tricky and I'm not how that would be done accurately and cleanly from within restic itself.  Especially since you could have different restic backups running at the same time which shouldn't count.
Maybe a start up script that is similar to many of the other linux start up scripts that takes the PID of restic when it starts and saves it to a tmp file then deletes it when restic ends.  Each time the script is run it would check for the file.  You'd need a different tmp file for each unique scheduled backup.

Unfortunately, any means of detecting a running restic instance would fail on ALL backends (SFTP, REST, S3...) except the local one.

@zcalusic we could use the information stored in the lock files to do that: https://github.com/restic/restic/blob/master/src/restic/lock.go#L27-L33, maybe add the list of files to backup or the exact command line arguments or something similar.

I still don't see how would restic on machine A, finding a lock on backup server machine B, distinguish between a) currently running restic session on machine C and b) stale lock left after the restic on machine C crashed?
Or are we starting talking about RPC mechanisms here? Or even better, distributed lock managers? 😄

I'm talking about #711: detecting when a second backup with the same directories on the same machine is started. That should be possible.
@bwmarrin I don't understand what you're suggesting:

If you know your cron job schedules a backup every X hours, you could pass a --timeout to restic so it will end before the next one starts.
 I don't think that it's possible to somehow time a backup that it at most takes whatever duration is given in a hypothetical --timeout parameter. How could that be?

@fd0 I'm saying if the backup doesn't finish within the --timeout value, it is terminated.  I realize this means it would be an incomplete or unfinished backup.  However, since restic's incremental design it's not a big deal really.  The next time the backup is called it will start off where it left off.
This means if you have a cron job scheduled to run hourly, and you pass a --timeout 50m parameter to restic.  It will abort/terminate the backup if it takes more than 50 minutes.  In that case, 10 minutes later the cron job will start it off again and it would resume where it left off.   This would prevent multiple instances of the same backup from running concurrently.

Thanks for the explanation. I think that this is not a good idea. What happens if the backup location is slow without you noticing it (somebody in your network forgot a bittorrent client, which maxes out you upstream bandwidth), so the backup doesn't finish, is aborted, restarts again, is aborted again and so on. Then you never end up with a full working backup.
Or consider a directory tree for which data is added constantly. A single run of restic will finish eventually (it is designed that way), but restarting restic may never finish when too much new data is added each time.
Besides, you can easily implement this behavior by using the standard utility timeout (from coreutils), by running timeout 40m restic backup [...]. So I don't think adding this option to restic is a good idea.

I realize I'm late to the party but couldn't there be a lock file that makes the second instance wait for the first to finish before it starts?

@Karl-Gustav , may be you can achieve that with a bit of scripting. https://stackoverflow.com/a/1985512/244009

That was a bit more advanced than my locks:-) I just use if file {wait 5sec and check again}

I may be a bit late to the discussion but I created some systemd units you can find here.
These are my restic config files, they may be useful for someone.

Hi there, I'm reading on how to use restic to schedule my backups. For now my idea is to use anacron to schedule for example a 2 days per week backup to Backblaze. The point is, if my backup is scheduled with anacron e.g. Tuesday and Friday at 12PM and my laptop is turned off Tuesday and don't start it again until Friday at say 11:59AM, what will happen? AFAIK (and if I'm not wrong) anacron should start the missed job of Tuesday; and a minute later (while first restic instance is running), will run the second backup, producing 2 concurrent backups for the same directory?
Or is it any kind of /tmp lockfile to prevent the second instance from running?
How should I manage it to correctly schedule my backup? Thx :)

@gerardbosch Hi! This question is a better fit for the forum, please consider that next time :)
One way to handle it is to write a script that does the running of restic for you, and as part of doing that creates a runfile (e.g. /var/run/restic.pid containing the PID of the restic process`), which it can then check to determine whether or not restic is already working.
It will not harm in any way if you were to run two concurrent backups, but it's of course rather pointless if they cover more or less the same files and point in time.
Whether anacron tries to catch up on missed backup runs I don't know, it should say in its documentation I suppose. If you are on macOS and use launchd for scheduling, you have the option to do so or not, it's up to you.

@gerardbosch

If you have a systemd system, it's quite nice to be able to use the default tools, no need to install  cron daemon. You get great control over the status of failed jobs, and you can see when a job will be executed the next time for example. See the arch wiki for a short intro. Just play around with it yourself is the most fun way to learn I would say though.

Yes, I run several systemd timers for my local user. Check my dotfiles for the timers and corresponding services I currently use. The key is to use --user to control the user's timers instead of system timers:

$ systemctl --user list-timers

It seems like they are in /var/spool usually. If the can be moved to ~/ I do't know.  https://askubuntu.com/questions/216692/where-is-the-user-crontab-stored

As it hasn't been mentioned here yet, Backupninja is a great way to handle scheduling.  Restic support is being added in a merge request; it just hasn't been committed yet.  All of the basic functionality should be there though.

@colans Backupninja is awesome, can't wait to be able to use it with restic! Thank you for this work.

Can we reopen this as a documentation task?  I think we should add a "Scheduling" section to the manual to increase clarity around this topic.  We can say something like:

Scheduling is outside the scope of Restic.  However, there are external tools that can be used for this purpose.

Backupninja along with the Restic support branch
Automatic restic backups using systemd services and timers
Restic backup configs

Thoughts?

Another suggestions to re-open.  If restic doesn't support backup scheduling/monitoring, the docs can explain this and link to something that does, since that's the primary way backup tools are used.

@SigmaX how to schedule depends entirely on what OS and software you have at your disposal. I think suggestions like that are outside of the documentation for restic concern, but it could indeed be a helpful article in someone's blog or even in the forum's Recipes section. It could also be a candidate for the Examples section in the restic doc website at https://restic.readthedocs.io/en/latest/080_examples.html , but it would have to be written in such a way that it requires a minimum of maintenance, since we don't want to maintain a set of detailed instructions for how to schedule this on several different platforms (as it's a pretty complex topic). All that said, there's already several articles and examples about this (e.g. with cron and systemd) on the net, if one does search for it. I'm not entirely sure there's a need to have that in the docs website.

I'm not entirely sure there's a need to have that in the docs website.

I can see how it would be a matter of opinion, especially since restic is cross-platform.  For me, it was surprising. Having a backup tool without prominent docs on how to schedule it sounds seems to me like selling a car with no wheels.  I spent quite a while searching the docs, assuming I was missing something.  I would never launch a backup manually, but that's all the docs describe.
At the very least, a docs section could save users time: by indicating they need to search someplace else to setup routine backups with restic.

Having a backup tool without prominent docs on how to schedule it sounds seems to me like selling a car with no wheels

Not really. What we "sell" you is a program that you tell what to back up, and it backs it up. How often you want to do that is a separate concern :) But I digress.
I'd expect most users if not finding a certain topic in the docs to simply DDG/Google for it, and then find the answers within a minute or two. But that doesn't mean we shouldn't add a pointer of some sort to the documentation, even if we don't detail specifics on how to set up various scheduling software.

What we "sell" you is a program that you tell what to back up, and it backs it up. How often you want to do that is a separate concern :)

And it's perfectly legitimate to say "this is a DIY kit---go find your own wheels!"

I'd expect most users if not finding a certain topic in the docs to simply DDG/Google for it, and then find the answers within a minute or two.

Actually, Googling around for "restic backup schedule" brought me here first match :smile:

#2122 is related as it provides some sample systemd timers and other discussion regarding scheduling.
I think the "least maintenance" approach here seems to make sense...maybe include hints about logging output and preventing multiple runs at the same time?

maybe include hints about logging output and preventing multiple runs at the same time?

I like that idea. I'll make a draft later this week, most likely for a little "pointer" section to place under the backing up section in the documentation.

@rawtaz Could this issue be reopened until we get the doc updates done?  Keeping it closed makes it look like we're finished here, when we're not.  Thanks!

Indeed! I got swamped again, will be until beginning of october. Feel free to make a draft if you want to, otherwise it's still on my radar. Sorry about the delay.

Here is a blog post I ended up writing about how I used restic for scheduled backups with a systemd timer.
Wrong genre of writing for docs, of course, but feel free to copy-paste anything useful.

@I opened a PR, see link above. Is that good enough? Anyone reading that should DDG/Google the mentioned keywords and be able to find a plethora of examples on how to schedule restic.


Should send DELETE IMAGE request if new content is not saved

Sir Trevos uploads images automatically, even when the content is not saved.

Closing because of inactivity, reopen if needed.


WIP: drop metrics in favour of workqueue metrics

Fixes #N/A
Description
How was this change tested?
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

Pull Request Test Coverage Report for Build<PHONE_NUMBER>2
Details

1 of 34 (2.94%)  changed or added relevant lines in 3 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage decreased (-0.2%) to 77.891%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

pkg/controllers/disruption/orchestration/queue.go
0
12
0.0%

pkg/controllers/disruption/orchestration/metricsProvider.go
0
21
0.0%

Totals

Change from base Build<PHONE_NUMBER>2:
-0.2%

Covered Lines:
8829

Relevant Lines:
11335

💛  - Coveralls


relax rendering intent check

Closes #1973.
Because there appear to be images with faulty rendering intent in their ICC profiles in the wild, we relax the check for valid rendering intent to a warning if we are able to deduce a plausible value for the rendering for the last byte of the rendering intent of the ICC profiles, i.e. the byte at offset 67, even if the other bytes (at offsets 64, 65 and 66) are non-zero. In that case we print a warning.

The fact that the profile that prompted this happens to contain rendering intent = [0x01 0x00 0x00 0x00] is a bit suspicious and gives the impression that the mistake was that the integer was encoded as little-endian instead of big-endian, suggesting that we should guess 1, not 0. How about trying both endiannesses instead?

TIFF/Exif allow both endiannesses. I don't know the ICC specification, I guess it doesn't allow that? But I agree that this could be an endianness mistake.

Reading the ICC spec, it becomes clear that it doesn't allow little-endianness.
So how to proceed here in case the byte at offset 64 is non-zero? I see two options when actually assuming that there was an endianness mistake during encoding,

... and correct it and print a warning (this would mean rendering intent = 1 in the case of bug #1973)
... print no warning
... fail

I think 1. is the best option and will prepare a fix in that direction.

Agreed that 1) is the best option.


Enable GoogleDrive support in LibreOffice

Project description
LibreOffice has support for accessing Google Drive (since 5.2 or 5.3). But, one must setup a Google API key (see http://www.chromium.org/developers/how-tos/api-keys) and add them as parameters to the configure through --with-gdrive-client-{id,secret}= options.
For reference, here's how that is solved on Arch: https://git.archlinux.org/svntogit/packages.git/tree/trunk/PKGBUILD?h=packages/libreoffice-fresh and Gentoo: https://gitweb.gentoo.org/repo/gentoo.git/tree/app-office/libreoffice/libreoffice-<IP_ADDRESS>-r1.ebuild
Metadata

homepage URL: https://www.libreoffice.org/
source URL: https://donate.libreoffice.org/home/dl/src/6.3.3/all/libreoffice-<IP_ADDRESS>.tar.xz?idx=1
license: MPLv2.0 (secondary license GPL, LGPLv3+ or Apache License 2.0)[9]
platforms: all

cc @7c6f434c

As Google accounts I create are banned pretty quickly (without ever being used for sending anything), I do not see any reasons not to merge a PR tested by someone actually using the Google services (nothing changes for users not entering the credentials, right?), but won't experiment myself.

Ok, I'll make a PR as soon as I make the API keys and test everything (which will, probably, take some time, since compiling libreoffice is not a fast task :) )


[bug] Syntax errors when reading JSON

Hi,
I recently installed this via nvim-treesitter (thanks for your work on this by the way), and it seems to be identifying syntax errors incorrectly when using JSON.
For example (red is a syntax error)

I think one of the issues might be a conflict with how the tree-sitter-json is injected.
% tree-sitter highlight examples/front_page/json_body.hurl
Error in query file "injections.scm"

Caused by:
    Query error at 1:3. Invalid node type input

I wrote a quick test to see what was happening
==================
POST with JSON input
==================
POST https://example.org/api/dogs
{
    "id": 0,
    "name": "Frieda",
    "picture": "images/scottish-terrier.jpeg",
    "age": 3,
    "breed": "Scottish Terrier",
    "location": "Lisco, Alabama"
}

---

(hurl_file
	(entry
	)
)

and I noticed that this treesitter implementation seems to try and reimplement JSON.
...
          (body
            (bytes
              (json_value
                (json_object
                  (json_key_value
                    (json_key_string
                      (json_string_content
                        (json_string_text))
                      (json_string_content
                        (json_string_text)))
...

Wouldn't it be easier and more consistent to just detect that the input is json and then let the injected treesitter handle json, and other treesitters.
I also noticed that when I use multiline strings there are a some unexpected results that prevent the injection from working as expected..
==================
POST with graphql input
==================

POST https://swapi-graphql.netlify.app/.netlify/functions/index
\`\`\`graphql
query Query {
  allFilms {
    films {
      title
      director
      releaseDate
      speciesConnection {
        species {
          name
          classification
          homeworld {
            name
          }
        }
      }
    }
  }
}
\`\`\`

^ Reads as a multiline string instead of graphql
==================
POST with messy muliline string input
==================

POST https://example.org/api/dogs
\`\`\`
{"test": "this is the JSON"}
^ This is a multiline string but it has json in it.
\`\`\`

^ Interprets this as badly formed JSON, where I would expect it to be interpreted as a string.
I'd be willing to look into it, and make some pull requests if you'd like. If I do would you be willing to ditch the JSON parts and just rely on injections?

@ethancarlsson Hey, sorry for the delay in getting back to you on this, not sure how i missed your comment. So the issue is that you have to be able to give a range for the injection to take over. So we have to detect when there is a json body. The hurl syntax is a little bit tricky for treesitter because a lot of the sections can be different things based on what comes before it and how it's formatted. For example, you can do a json body by simply opening and closing a json object or array right below the POST line, or you can do an xml body by simply creating an opening and closing xml element. so to detect the beginning and end of a json body we have to have at least enough ability to parse json to know if the starting brace gets closed and then allow the json injection to take over on that area.
All that being said I'm going to guess the issue here actually has something to do with the variable injection part of the treesitter query. My guess is that it's seeing the opening brace within the multiline string, trying to parse a variable injection, failing, thereby causing the multiline string parse to fail. Then treesitter tries to recover from the error and ends up deciding the ``` line was actually the bad line and the next line is in fact a json body. I'll try to take a look over that part of the query here tomorrow and see if my theory is correct/if I can come up with a solution

These issues should be resolved in v1.4.1. If there's any edge cases I missed lets just open a new issue


Resource "/foo/%2F" is translated by HttpClientHelper to "/foo//", which becomes "/foo", a different resource

[WireMock 2.0.6-beta]
HttpClientHelper::prepareRequest takes a perfectly value url http://localhost:8800/api/exchanges/%2F out of a GetRequest and calls URLDecoder::decode on it, producing http://localhost:8800/api/exchanges// and uses it to build a java.net.URI, which it eventually uses to make the HTTP Get call. (line 172, HttpClientHelper.java)  This is not the same thing, and the server tends to treat it as http://localhost:8800/api/exchanges/ (one slash) and return the wrong thing.
Why does it url-decode the input url anyway?  Or it may be that java.net.URI is doing the wrong thing (I've had a hard time getting that class to behave transparently before).  In any event, how can I pass http://localhost:8800/api/exchanges/%2F to the REST service?
(In case you're wondering why this is necessary, the RabbitMQ administration REST service for getting back a list of exchanges for a single vhost takes a URL of the form /exchanges/<vhost>, but the default vhost on RabbitMQ is named "/" (that is, a single slash) and their documentation thus specifies request for that vhost must use %2F - see the second paragraph of the documentation, here.)

Stack Overflow helped me, see this answer.  The problem is in URI's 7-argument constructor.  The 1-argument URI constructor that simply takes a string works fine.
Unfortunately, HttpClientHelper::prepareRequest is a private static method and it instantiates one of org.apache.http.client.methods.{HttpGet, HttpPost, HttpPut, etc.) directly, setting this URI on it, and that HttpRequestBasething is consumed by the callerHttpClientHelper::request`, so there's no way I can "patch" this at runtime by subclassing.
(Actually, I'm not really even sure why HttpClientHelper::prepareRequest pulls the original url (which is a String apart and puts it back together again with the 7-arg constructor, unless its a way of validating that the string is a valid url.  Or maybe it has to do with the processing of the query part of the url.)
At any rate, the case of %2F doesn't work because (apparently) of the 7-arg constructor.

And here's some test code:
package com.bakins_bits;

import static org.assertj.core.api.Assertions.assertThat;

import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;

import org.testng.annotations.Test;

public class TestSingleSlashURIPaths
{
    @Test(enabled = true)
    public void does_URI_or_URL_mangle_single_slash_paths_example_4()
        throws MalformedURLException, UnsupportedEncodingException, URISyntaxException {
        // ARRANGE
        String sut = "http://localhost:8800/api/exchanges/%2F";

        // ACT
        URI uri = new URI(sut);
        String result = uri.toURL().toString();

        // ASSERT
        assertThat(uri.getPath()).isEqualTo("/api/exchanges//"); // <== this seems wrong!
        assertThat(uri.toString()).isEqualTo("http://localhost:8800/api/exchanges/%2F");
        assertThat(uri.toASCIIString()).isEqualTo("http://localhost:8800/api/exchanges/%2F");
    }

    @Test(enabled = true)
    public void does_URI_or_URL_mangle_single_slash_paths_example_5()
        throws MalformedURLException, UnsupportedEncodingException, URISyntaxException {
        // ARRANGE & ACT
        URI uri = new URI("http", null, "localhost", 8800, "/api/exchanges/%2F", null, null);
        String result = uri.toURL().toString();

        // ASSERT
        assertThat(uri.getPath()).isEqualTo("/api/exchanges/%2F"); // <== this is right!
        assertThat(uri.toString()).isEqualTo("http://localhost:8800/api/exchanges/%252F"); // <== now this is wrong!!
        assertThat(uri.toASCIIString()).isEqualTo("http://localhost:8800/api/exchanges/%252F");
    }
}

Hello, this should be resolved or addressed in Unirest 2. Please see the upgrade guide for important changes.


Make adapt intent requirement "confirm-query" optionally

Besides eliminating artifacts like this one (there is only a confirm-query.voc), some languages don't necessarily use a "does/will", rather a flexion of the verb. (german: regnet es morgen? = wird es morgen regnen?
(that said, maybe it rains tomorrow? is more common than i think it is)
We should make it optionally to bump the matching, but don't require them to form the question that way. Don't think there is much of an overlap in terms of intent matching (.. yet).

i think .intent files might be a better approach in these cases, as that captures the language specific nuances
adapt is not very flexible when the same rule needs to apply to all languages


Prep for M1 announcement

Remaining work to "launch" M1:

[ ] Finish "API buffing work (#336 and implementing PRs)
[ ] API docs cleanup pass
[ ] Check Python3 support in deps one last time (#96, particularly protobuf)
[ ] Solicit an LGTM from @GoogleCloudPlatform/cloud-datastore
[ ] Find out if there are other teams we should get an LGTM for...

/cc @jgeewax Only the first (@GoogleCloudPlatform/gcloud) shows up, I assume @tseaver is hesitating to @ mention by using back-ticks because we're unsure which team to cc.

/cc @GoogleCloudPlatform/cloud-datastore

There is really no context for this anymore.
@jgeewax Please re-open if we have a "plan" of an announcement at any point.


[3.9] Filebrowser server 500 error

Hi~
I use hue 3.9. and test filebrowser folder permission

I have create two user with a1, a2
a1 create a file in /user/a1 folder
and a1 change /user/a1 folder permission to rwxrwxrwx and select  Recursive
to check the file a1 created in a1 home folder is changed to rwxrwxrwx
then a1 change /user/a1 folder permission to rwxr-x--- again, and do not select Recursive
use a2 user to login. and go to a1 home folder to modify the file that a1 created

click save, the hue page will display server 500, like

from runcpserver.log, it can see

so, the page should display like the following image rather than display server 500 error
( the image is from I delete a file that I have no permission to do the operation.)

thanks.

Fixed in 4.2


ci: Need to fix or switch away from Travis CI

Example of current breakage:
https://travis-ci.com/RobotLocomotion/drake-external-examples
Jamie is saying that he may switch away to GitHub Actions or Azure Pipelines, possibly replacing Circle CI as well.

In the meantime, can we switch off the broken build so that PRs do not have false-positive build failures?

As far as I can tell it is off now. Does not seem to be running on merge, at least.


Pretrained models

🚀 Feature
The pretrained models are currently stored in separate, external repositories.  It would be nice to have releases with the tutorials and upload these models to the release.
Motivation
This point was brought up in https://github.com/PyTorchLightning/lightning-tutorials/pull/78#discussion_r699088444
Additional context
All pretrained models for the UvA DL course are stored here: https://github.com/phlippe/saved_models

@Borda I think this is certainly useful. Are there plans to tackle this?

@Borda I think this is certainly useful. Are there plans to tackle this?

yeas, this or next week :]


Add support for filesystem-based SBOM

Summary
Add support for filesystem-based SBOM, in addition to the existing metadata-label-based BOM.
Closes #339
Checklist

[x] I have viewed, signed, and submitted the Contributor License Agreement.
[x] I have linked issue(s) that this PR should close using keywords or the Github UI (See docs)
[x] I have added an integration test, if necessary.
[x] I have reviewed the styleguide for guidance on my code quality.
[x] I'm happy with the commit history on this PR (I have rebased/squashed as needed).

@sophiewigmore I had to rebase so your review is stale, sorry! I addressed the one outstanding issue you had (rogue unaddressed TODOs) so hopefully it's quick to approve!