Support delimited list parameters

Currently, webargs supports list parameters in query strings using repeated parameters: foo=bar&foo=baz. But it's also a common pattern to encode lists in query strings using delimited values: foo=bar,baz, foo=bar|baz, etc. This is described using the collectionFormat in swagger: https://github.com/swagger-api/swagger-spec/blob/master/versions/2.0.md#fixed-fields-8. It would be helpful to expose control over the formatting of list values to support both repeated and delimited parameters.
Here are a few thoughts about interfaces:

Use a subclass of List, like DelimitedList, that splits and joins on a delimiter on de/serializing.
Add an optional delimiter argument to List that has the same behavior as above.
Add an option to Schema.Meta that controls de/serialization of lists:

class ArgSchema(Schema):
    class Meta:
        list_delimiter = ','

Not sure if I like any of these. What do you think @sloria?

The 1st option seems best. List is not meant to deserialize from strings, so that rules out 2. Option 3 doesn't seem ideal because you wouldn't be able to use the feature with dictionary argmaps.

Agreed with everything you said, but the first option strikes me as a little underpowered. In most use cases, all list parameters for a given resource will be encoded in the same way (all repeated parameters, or all delimited parameters), so I still like a higher-level option--what about an argument passed to parse and use_(kw)args? That said, I still think the lower-level option is independently useful, so I'm down to take a pass at it.
By the way, I don't particularly like delimited query parameters, but they seem to be pretty commonly used, and are even recommended by JSON-API, which is why I'd like to add support.

Good point. I want to avoid adding a custom Schema class in webargs for the time being. Would it be enough if the delimiter option were configurable at the Field class level and as a constructor argument?


[BUG] Demo configuration is still using the admin:admin credential if there is an absent of the initialAdminPassword

What is the bug?
Demo configuration is still using the admin:admin if there is an absent of the initialAdminPassword

Relate: https://github.com/opensearch-project/security/pull/3490
Relate: https://github.com/opensearch-project/opensearch-build/issues/4094
How can one reproduce the bug?

Run the demo configuration script without providing initialAdminPassword.
When the cluster is ready, try the admin:admin credential

What is the expected behavior?/Exit Criteria
If there is an failure for providing the initialAdminPassword during the setup of the demo configuration, the script needs to be fail hard (kill the cluster) and users should not be able to be authenticated with default admin:admin credential.
Do you have any additional context?

Potential Fix: https://github.com/opensearch-project/security/pull/3449

[Triage] Hi @RyanL1997, thank you for filing this issue. Looks good--we should make sure we kill the cluster as you describe.


Find code below.

    [...]

full code


.Net: NCalcPlugins not used by Kernel Syntax Examples

Describe the bug

Remove the dependency or add a sample

All .Net issues prior to 1-Dec-2023 are being closed. Please re-open, if this issue is still relevant to the .Net Semantic Kernel 1.x release. In the future all issues that are inactive for more than 90 days will be labelled as 'stale' and closed 14 days later.


DBL_EPSILON and FLT_MIN are not defined

as stated in title

@ArsenLuca generally,
DBL_EPSILON： 2.2204460492503131e-016
FLT_MIN:             1.175494351e-38F


Redesign of powertoys run

Description of the new feature / enhancement
The interface gets more squared with mica (or acrylic) effect
Scenario when this would be used?
when powertoys run is in use, so better interface
Supporting information
Concept:

i know it kinda sucks, you know this is a concept

/dup #12182


Can't Connect to FTP Server with SSL enabled

I am getting this error,
nil, error: Optional(Error Domain=kCFErrorDomainCFNetwork Code=200 "(null)" UserInfo={kCFFTPStatusCodeKey=534})
Can you please suggest on how to deal with this?

First configure your settings after than you have to create session
========= Confifure ==============
var configuration = SessionConfiguration()
configuration.host = FTPHostName
configuration.username = FTPUserName
configuration.password = FTPUserPass
=========== Create session =============
self.session = Session(configuration: configuration)
========== list of all files ===========
session.list("/") {
(resources, error) -> Void in
print("List directory with result:\n(resources), error: (error)\n\n")
}
It is working in Latest version of swift and xCode as well.
Thanks.

i have the same problem, dont know why

@juanjoserodrigolazaro  @shorabhd  did you find any solution, i have also same issue.


Tracking issue for schema

View https://docs.pgvecto.rs/reference/schema.html to see schema provided by pgvecto.rs.
Helper functions
pgvecto.rs are lack of helper functions, and we need to provide more helper functions.

[ ] function vector_norm: get length of a vector
[ ] function vector_dimensions: get dimensions of a vector
[ ] function vector_normalize: compute a normalized vector
[ ] casts between vector and vecf16: #262
[ ] casts between vecf16 and half precision; PostgreSQL do not support half precision, we may make some decisions here

Other

[ ] check that you write a CREATE FUNCTION export_name SQL using the name _vectors_*_wrapper and the SQL is inconsistent with the signture defined in the code

For contributors
If you want to export a user function to PostgreSQL:

use pgrx::pg_extern and name the function _vectors_*
write CREATE FUNCTION export_name in finalize.sql, you can use the name _vectors_*_wrapper here.

If you want to export a cast, operator or something else to PostgreSQL:

use pgrx::pg_extern and name the function _vectors_*
finish SQL in finalize.sql

Test logical replication between different extension version

Can you elaborate on

casts between vecf16 and half precision; PostgreSQL do not support half precision, we may make some decisions here

Is this an issue with postgres itself?  or that it hasn't been implememted in pgvecto?

Is this an issue with postgres itself?

Yes. PostgreSQL supports floating-type real (IEEE 754 binary 32) and floating type double precision (IEEE 754 binary 64), but there is not such a type named half precision (IEEE 754 binary 16). We probably cannot provide a cast between a vecf16 and an array. Another choice is providing a cast between vef16 and real[], which is "make some decisions here" refered.

Is this an issue with postgres itself?

Yes. PostgreSQL supports floating-type real (IEEE 754 binary 32) and floating type double precision (IEEE 754 binary 64), but there is not such a type named half precision (IEEE 754 binary 16). We probably cannot provide a cast between a vecf16 and an array. Another choice is providing a cast between vef16 and real[], which is "make some decisions here" refered.

Messed over in the discord for some help getting the environment setup.  But isn't this as simple as:
#[pgrx::pg_extern(immutable, parallel_safe, strict)]
fn _vectors_cast_vecf32_to_vecf16(
    vector: Vecf32Input<'_>,
    _typmod: i32,
    _explicit: bool,
) -> Vecf16Output {
    let data = vector
        .data()
        .iter()
        .map(|x| x.to_f32())
        .map(|x| f16::from_f32(x))
        .collect();

    Vecf16::new_in_postgres(data)
}

CREATE CAST (vector AS vecf16)
    WITH FUNCTION _vectors_cast_vecf32_to_vecf16(vector, integer, boolean) AS IMPLICIT;

Is this an issue with postgres itself?

Yes. PostgreSQL supports floating-type real (IEEE 754 binary 32) and floating type double precision (IEEE 754 binary 64), but there is not such a type named half precision (IEEE 754 binary 16). We probably cannot provide a cast between a vecf16 and an array. Another choice is providing a cast between vef16 and real[], which is "make some decisions here" refered.

Messaged over in the discord for some help getting the environment setup. But isn't this as simple as:
#[pgrx::pg_extern(immutable, parallel_safe, strict)]
fn _vectors_cast_vecf32_to_vecf16(
    vector: Vecf32Input<'_>,
    _typmod: i32,
    _explicit: bool,
) -> Vecf16Output {
    let data = vector
        .data()
        .iter()
        .map(|x| x.to_f32())
        .map(|x| f16::from_f32(x))
        .collect();

    Vecf16::new_in_postgres(data)
}

CREATE CAST (vector AS vecf16)
    WITH FUNCTION _vectors_cast_vecf32_to_vecf16(vector, integer, boolean) AS IMPLICIT;

Yes.

casts between vector and vecf16
casts between vecf16 and half precision[]

It's two issues. You can talk only about the first one since you only need the first one.

I think float(2) is the same as fp16?

I think float(2) is the same as fp16?

https://www.postgresql.org/docs/current/datatype-numeric.html#DATATYPE-FLOAT
I don't think so.

Is there more specific definition of absolute-value norm?

Is there more specific definition of absolute-value norm?

https://en.wikipedia.org/wiki/Norm_(mathematics)

Is there more specific definition of absolute-value norm?

https://en.wikipedia.org/wiki/Norm_(mathematics)

I did not grasp the definition. How should we calculate it for a one-dimensional vector?

Is there more specific definition of absolute-value norm?

https://en.wikipedia.org/wiki/Norm_(mathematics)

I did not grasp the definition. How should we calculate it for a one-dimensional vector?

https://baike.baidu.com/item/向量的模/2073854


Common ozzo repo.

Hi!
I think we need to create a common repository for discussion on common framework questions and future requests.

For now let's use this place for questions and discussions. As we have more users, we will build a website for better community support.

Thanks!
I think we need to write a website on go-ozzo like in https://github.com/beego/website
It will be the best example how to use ozzo framework in practice.

Agree. We will need to create some boilerplates to show best practices. When you finish your current Go project, perhaps you can share with me your experience? After I finish mine, I will also write something.


chore: bdd-sbhg-1585155176 to 0.0.1

chore: Promote bdd-sbhg-1585155176 to version 0.0.1

[APPROVALNOTIFIER] This PR is NOT APPROVED
This pull-request has been approved by:
To fully approve this pull request, please assign additional approvers.
We suggest the following additional approvers:
If they are not already assigned, you can assign the PR to them by writing /assign  in a comment when ready.
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment


Decompiler emits invalid bicep code on identifiers with leading integers

Bicep identifier naming is stricter than ARM template JSON. If I have a param like this in ARM Templates:
...
  "parameters": {
    "123namePrefix": {
      "type": "string"
    },
...

It will emit this bicep code:
param 123namePrefix string

Which is invalid

Closing as dup of #1360


error after all parts were downloaded

Hi, after all the parts were downloaded, I get the message in the image (I think is aria2 related). After the message the program was stuck so, after about 5 minutes, I digited ctrl-c.
input:

output:

UPDATE: by launching the cmd as admin it worked (: the video was downloaded and merged in an .mp4 file). By the way, I don't know why, the program gives me another error.

with another video it works magnifically! Thanks for the tool


Custom Message Firing Twice On One Call

Describe the bug
When I use a Custom Message and recieve on the host, it triggers once with the stream at the right position to read from, and then triggers again with the stream at the end.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using MLAPI;
using MLAPI.Messaging;
using MLAPI.Serialization;
using System.Text;
using MLAPI.Serialization.Pooled;
using System.IO;

public class player : NetworkedBehaviour {
    void Start() {
        CustomMessagingManager.OnUnnamedMessage += custom_message_test;
    }

    private void custom_message_test(ulong clientId, System.IO.Stream stream) {
        PooledBitReader reader = PooledBitReader.Get(stream);
        StringBuilder builder = reader.ReadString();
        string str = builder.ToString();
        Debug.Log(str);
    }

    void Update() {
    }

    private void OnGUI() {
        GUILayout.BeginArea(new Rect(15.0f, 50.0f, 470.0f, 410.0f));
        if (GUILayout.Button("Test")) {
            MLAPI.Serialization.BitStream bit_stream = new MLAPI.Serialization.BitStream();
            PooledBitWriter writer = PooledBitWriter.Get(bit_stream);
            writer.WriteString("hello");
            CustomMessagingManager.SendUnnamedMessage(this.OwnerClientId, bit_stream);
        }
        GUILayout.EndArea();
    }
}

To Reproduce
Steps to reproduce the behavior:

Use this code and start as a host.
Start a client, connect to the host.
Click "test" on the client
It should read, print "hello" then throw an error because "custom_message_test" fired twice. Second time through it tries to read from a stream that is already at the end.

Expected behavior
I should expect "hello" to print and "custom_message_test" to only trigger once.
Environment (please complete the following information):

OS: Windows 10
Unity Version: 2019.3.3f1
MLAPI Version: v11.11.2

Additional context
My current solution is to check the stream position against the stream length.
        if (stream.Position >= stream.Length) {
            return;
        }

EDIT: Also I just discovered it does not trigger twice on a named custom message.

You are not properly pooling the streams. Only use the pooled versions if you return them to the pool.
Are you sure the Send code is not triggering twice? Add a Debug print where you call SendUnnamedMessage. I think its being called from each instance of the player.

It seems to me that you have two instances of the game so the UI element will be triggered twice.
If this is an actual bug with the MLAPI, please reopen the issue.


Gardening 🌱: Hide Winget's loooong output behind a log group

This'll fold Winget's output, which is needlessly long with its progress bar and all.

Yaml programing!

I took the freedom to rebase this to see the CI going almost all green and merge it. I hope you don't mind ;)


NExif corrupting files when writing Keywords tag

I am using Nexif from c# in a Visual Studio project to add keywords in the string array sTags to a file sFile and store the tagged file as sFile_7.tmp.jpg with the code below
` ///
/// Set sFile Keywords using NExifTool and write to  sFile + _7.tmp.jpg
///
///
///
public async static void SetTagsWithNexif(string sFile, string[] sTags)
{
List UPDATE = new List {
new SetOperation(new NExifTool.Tag("keywords", sTags)) };
        var opts = new ExifToolOptions();
        var et = new ExifTool(opts);

        var result = await et.WriteTagsAsync(sFile, UPDATE, sFile+ "_7.tmp.jpg");
    }`

If I call this function several times, where sFile is a file previously captioned with the code, the output file sometimes contains part of the input image (usually the bottom, but placed at the top on the output image), but with the remainder filled with the same colour, which appears to be one of the colours appearing in the input image.

Hello, sorry for not getting back to you on this issue.  I've been very busy and have not had a lot of time to look at this lib.  I have not been able to replicate this so far, and will also be pushing a small update in the next day or two (I hope). That might be worth testing as it updates some underlying dependencies, but honestly would not expect that to address the issue.
I updated the "FileToFileWriteTest" locally to the following and have run a number of times w/o reproducing the issue:
        await et.WriteTagsAsync("file_to_file_test.jpg", UPDATES, "file_to_file_test2.jpg");
        await et.WriteTagsAsync("file_to_file_test.jpg", UPDATES, "file_to_file_test3.jpg");
        await et.WriteTagsAsync("file_to_file_test3.jpg", UPDATES, "file_to_file_test4.jpg");
        await et.WriteTagsAsync("file_to_file_test4.jpg", UPDATES, "file_to_file_test4.jpg");
        await et.WriteTagsAsync("file_to_file_test4.jpg", UPDATES, "file_to_file_test4.jpg");
        await et.WriteTagsAsync("file_to_file_test4.jpg", UPDATES, "file_to_file_test4.jpg");
        await et.WriteTagsAsync("file_to_file_test4.jpg", UPDATES, "file_to_file_test4.jpg");

I suspect this could be a difference between how windows and linux manages files, in particular around locking, but I don't have an easy way to test on win at the moment.
Were you able to work around this / get it to work?
Sorry for the lack of response,
Mike


Add proper recursive handling for $ref resolution base

What
Implement recursive resolution of $ref base.
Why
Because the existing code doesn't actually do this properly, and is various combinations of missing and not implemented in this area.
Note that this patch does not distinguish between schema and non-schema contexts; it just resolves $ref wherever it may occur within a schema. Limiting this to schema-context only may be added later.
ObjectIterator is not removed, despite now being redundant, as it's a handy class for people who wish to implement their own preprocessor for whatever reason.

@shmax Any chance of a code review?

Have rebased this on #449 - the latest version of php-cs-fixer introduces some dangerous changes, and also causes CI failures on travis. #449 should be merged prior to this PR.

LGTM 💯

Rebased.


Any idea why on WSL2 PAM modules are not loaded on login (for example pam_env)?

I noticed that on WSL2 /etc/environment is not getting parsed even though Linux-PAM seems to be configured correctly. If I execute sudo login the /etc/environment is parsed. So it seems like there is something missing / wrong about how WSL handles the distribution.
Am I missing something obvious? Asking here because it seems like you know how to get Linux-PAM to properly work with WSL2.
Related:

https://github.com/microsoft/WSL/issues/1405
https://github.com/linux-pam/linux-pam/issues/481

Here's a workaround to start WSL in PAM session from Windows Terminal:
~/.bashrc
...

# wsl login shell
if [ -n "$_WSL_PREV_PATH" ]; then
    export PATH="$_WSL_PREV_PATH"
    unset _WSL_PREV_PATH
fi
if [ -n "$_WSL_PREV_PWD" ]; then
    cd "$_WSL_PREV_PWD"
    unset _WSL_PREV_PWD
fi

...

~/.local/bin/wsl-login
#!/bin/bash

export _WSL_PREV_PATH="$PATH"
export _WSL_PREV_PWD="$PWD"
exec sudo -E "$HOME/.local/sbin/wsl-login-helper"

~/.local/sbin/wsl-login-helper
#!/bin/bash

if [ $(id -u) = 0 ]; then
    user="$SUDO_USER"
    unset "${!SUDO_@}"
    exec login -p -f "$user"
fi

/etc/sudoers.d/wsl-login-helper
<username>    ALL=(ALL) NOPASSWD:SETENV: /home/<username>/.local/sbin/wsl-login-helper

command line setting in Windows Terminal
C:\Windows\system32\wsl.exe -d Debian --shell-type login wsl-login


Bump build

Checklist

[ ] Used a fork of the feedstock to propose changes
[ ] Bumped the build number (if the version is unchanged)
[ ] Reset the build number to 0 (if the version changed)
[ ] Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)
[ ] Ensured the license file is being packaged.

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

@conda-forge-admin, please rerender

build github.com/terraform-providers/terraform-provider-azurerm:
cannot load google.golang.org/genproto/googleapis/iam/v1:
rename
<EMAIL_ADDRESS><EMAIL_ADDRESS>Access is denied

So, closing and re-opening seems to have fixed the problem.
It looks like each test run of commit https://github.com/conda-forge/terraform-provider-azurerm-feedstock/pull/48/commits/4464c35c9a6ddde7370afd32ce5d9e2372d11a4e generated a new merge commit:

https://github.com/conda-forge/terraform-provider-azurerm-feedstock/commit/0eedd0929c34e03e9a350f338b6ee218bcf4f180
https://dev.azure.com/conda-forge/feedstock-builds/_build/results?buildId=129499&view=results
https://github.com/conda-forge/terraform-provider-azurerm-feedstock/commit/991abd5c50ce419b28e950be58ea251a49ca6c44
https://dev.azure.com/conda-forge/feedstock-builds/_build/results?buildId=129509&view=results

Where only the last one passed :/


Nicer brace checking

I absolutely agree that this should be linted:
if (thing)
    intentional();
    accident();

but having braces around a single line adds visual clutter that distracts from code readability:
if (thing)
    intentional();

// is better than

if (thing) {
    intentional();
}

@valueof, how do you feel about a laxing option that suppresses warnings about missing {s on single-line ifs, but errors if an if is followed by multiple indented lines?

I'm going to close this, because it would require JSHint to maintain it's indentation checking code, which it will be removing soon. @jugglinmike feel free to reopen if you disagree.


Trouble assembling function returning constant.

Please consider the program below.
In Win64 (Debug), everything works as expected.
However, in Win32 (Debug), at runtime, the call from func3() never returns. Instead, it hangs trying to make() the function in X86Context_translatePrologEpilog, more precisely in the while() loop starting at line 4981 in x86context.cpp.
Since the func1() and func2() are fine, IMHO func3() should be fine, too, since it is kind of a combination of both. Am I missing something?
Thanks in advance.
#include <asmjit/asmjit.h>

using namespace asmjit;

// works perfectly
void func1(X86Compiler& c, JitRuntime& runtime)
{
    c.addFunc(kFuncConvHost, FuncBuilder0<double>());

    X86Mem c0(c.newDoubleConst(kConstScopeLocal, 10.0));
    XmmVar v0(c.newXmmVar(asmjit::kX86VarTypeXmmSd));

    c.movsd(v0, c0);

    // return a constant from a function
    c.ret(v0);

    c.endFunc();

    void* funcPtr = c.make();

    typedef double(*FuncType)();
    FuncType func = asmjit_cast<FuncType>(funcPtr);
    double x = func();
    printf("func1(): %f\n", x);

    runtime.release(funcPtr);
}

// works perfectly
void func2(X86Compiler& c, JitRuntime& runtime)
{
    c.addFunc(kFuncConvHost, FuncBuilder1<double, const double*>());

    X86GpVar p(c, kVarTypeIntPtr);

    X86XmmVar arg(c, kX86VarTypeXmmSd);

    c.setArg(0, p);
    c.movsd(arg, x86::ptr(p));

    // return value passed in
    c.ret(arg);

    c.endFunc();

    void* funcPtr = c.make();

    typedef double(*FuncType)(const double*);
    FuncType func = asmjit_cast<FuncType>(funcPtr);
    double local = 12.3;
    double x = func(&local);
    printf("func2(): %f\n", x);

    runtime.release(funcPtr);
}

// hangs in X86Context_translatePrologEpilog, x86context.cpp, while() starting at line 4981
void func3(X86Compiler& c, JitRuntime& runtime)
{
    c.addFunc(kFuncConvHost, FuncBuilder1<double, const double*>());

    X86GpVar p(c, kVarTypeIntPtr);

    c.setArg(0, p);

    X86Mem c0(c.newDoubleConst(kConstScopeLocal, 10.0));
    XmmVar v0(c.newXmmVar(asmjit::kX86VarTypeXmmSd));

    c.movsd(v0, c0);

    // return a constant from a function, ignoring the argument passed in
    c.ret(v0);

    c.endFunc();

    void* funcPtr = c.make();  // << --- hangs in a function called from here, only in Win32 (Debug)

    typedef double(*FuncType)(const double*);
    FuncType func = asmjit_cast<FuncType>(funcPtr);
    double local = 12.3;
    double x = func(&local);
    printf("func3(): %f\n", x);

    runtime.release(funcPtr);
}

int main()
{
    JitRuntime runtime;
    X86Compiler c(&runtime);

    func1(c, runtime);
    func2(c, runtime);
    func3(c, runtime);
}

The same happens when on the next branch.

The _stackFrameCopyGpIndex has no registers to use for stack alignment, will fix.

Please check it out and reopen if it doesn't work

Thanks a lot, it works perfectly now.


Detect real RPIs on the network

Based on your TODO I saw that maybe this library can help you on detecting MAC addresses on the network :)
http://godoc.org/code.google.com/p/gopacket

I want to avoid to use rawpackets et simila because it requires root privilege.
I thought to use the arp table present on my machine to identify MAC address.
So: Scan my subnet -> read /proc/net/arp -> identify MAC -> if is a raspberry print on screen.
This is the simplest thing that I can do without root privilege but in this way I remove portability. ( /proc/net/arp you know)
Mmh suggestions about it ?

That package should help you on porting your project in a multi platform way without reading special OS paths...that's why I was suggesting it.


[bug] argument requires that __tauri_message__ is borrowed for 'static, with asynchronous #[tauri::command]

Describe the bug
When compiling async functions following the stable tauri documentation located on the Tauri website, compilation of the rust portion of the app fails citing a rust lifetime/borrowing error (see Stack Trace section for full error).
Reproduction

Create a new Tauri project, with any frontend, using the stable tauri and stable cargo/rustc.
In main.rs place this code:

#[tauri::command]
async fn http_request(to: &str) -> String {
    return format!("HELLO!")
}

fn main() {
    tauri::Builder::default()
        .invoke_handler(tauri::generate_handler![http_request])
        .run(tauri::generate_context!())
        .expect("error while running tauri application");
}

The program will fail to compile when running cargo tauri dev, citing:

error[E0597]: __tauri_message__ does not live long enough
  --> src\main.rs:1:1
   |
29 | #[tauri::command]
   | ^^^^^^^^^^^^^^^^-
   | |               |
   | |               __tauri_message__ dropped here while still borrowed
   | borrowed value does not live long enough
   | argument requires that __tauri_message__ is borrowed for 'static
   |
  ::: src\main.rs:8:25
   |
9  |         .invoke_handler(tauri::generate_handler![http_request])
   |                         -------------------------------------------------- in this macro invocation
   |
   = note: this error originates in the macro __cmd__http_request which comes from the expansion of the macro tauri::generate_handler`(in Nightly builds, run with -Z macro-backtrace for more info)

Expected behavior
As stated in the offical, stable Tauri documentation located here, the async functions should compile correctly out-of-the-box without any lifetime errors.
Platform and versions
Environment
  › OS: Windows 10.0.19044 X64
  › Webview2: 112.0.1722.48
  › MSVC:
  › Node.js: 16.17.0
  › npm: 8.15.0
  › pnpm: Not installed!
  › yarn: Not installed!
  › rustup: 1.25.1
  › rustc: 1.65.0
  › cargo: 1.65.0
  › Rust toolchain: stable-x86_64-pc-windows-msvc

Packages
  › @tauri-apps/cli [NPM]: 1.2.0 (outdated, latest: 1.2.3)
  › @tauri-apps/api [NPM]: 1.2.0
  › tauri [RUST]: 1.2.4,
  › tauri-build [RUST]: 1.2.1,
  › tao [RUST]: 0.15.8,
  › wry [RUST]: 0.23.4,

App
  › build-type: bundle
  › CSP: unset
  › distDir: ../dist
  › devPath: http://localhost:5173/
  › framework: React

App directory structure
  ├─ dist
  ├─ node_modules
  ├─ public
  ├─ src
  └─ src-tauri

Stack trace
error[E0597]: __tauri_message__ does not live long enough
  --> src\main.rs:1:1
   |
29 | #[tauri::command]
   | ^^^^^^^^^^^^^^^^-
   | |               |
   | |               __tauri_message__ dropped here while still borrowed
   | borrowed value does not live long enough
   | argument requires that __tauri_message__ is borrowed for 'static
   |
  ::: src\main.rs:8:25
   |
9  |         .invoke_handler(tauri::generate_handler![http_request])
   |                         -------------------------------------------------- in this macro invocation
   |
   = note: this error originates in the macro __cmd__http_request which comes from the expansion of the macro tauri::generate_handler`(in Nightly builds, run with -Z macro-backtrace for more info)

Additional context
Thank you for your time in reviewing this issue.
Note I have tried to produce a minimum working example, that's why the function http_request doesn't actually make a HTTP request.
Also note that in the information section, I ran cargo tauri info, but it also dumped information about my NPM Tauri CLI installation, which is outdated as I no longer use it (in favour of the Cargo Tauri CLI, which was used to reproduce this bug).
Additionally, the information section states I don't have Visual Studio installed. This is untrue (a bug in itself, perhaps a subject for another issue I may make). I don't have a Visual Studio installed that contains the graphical editor, I have Visual Studio Build Tools 2022.

Okay, this is super weird but what happens is that you are not allowed to use values that have a type which starts with a & sign (meaning it is borrowed). I just tried changing it to a String from an &str and this fixes the issue. I'm going update my issue with this new information. 😄

Added pull request at the docs for now, to note how borrowed values are disallowed: https://github.com/tauri-apps/tauri-docs/pull/1214
Still to be done
I'm not an expert in rust, so am quite unsure about how to do both of these, maybe someone can help? Thank you

[ ] Fix it so borrowed values are allowed in constructors of async #[tauri:commands] (not sure where to start, a pointer might be helpful)
[ ] If that's not possible, maybe include a better error message that explains how borrowed values aren't allowed. (again, unsure)

Thank you!

Thanks! Just read up on #2533 and appears issue also effects types without the obvious & symbol, and can be fixed by using a Result. Seems fair enough, so I'm going to tick off Task 1.
It would be soooooo good if #6124 could be merged, would have really saved a lot of time! 😄
Thanks for your time in investigating this.

Docs PR is located at https://github.com/tauri-apps/tauri-docs/pull/1214

I'm not sure what the GitHub customs are, do I leave this issue open until https://github.com/tauri-apps/tauri/pull/6124 gets merged or do I close it now? This PR resolves the issue.

I'll link this issue in the PR so that it gets closed automatically when merged :)


forget to disconect socket ?

recently, I met a problem about kafka connections, the phenomenon is that the TCP connections number on Kafka server was more than 20,000, and I reviewed my Producer and Consumer code, also the pyKafka code, I found a potential connection leak problem.
Here's my test code and result:

build one  KafkaClient with two connections
 if __name__ == '__main__':
        client = KafkaClient(hosts)
         raw_input()

 ➜  ~  netstat | grep 9092
 tcp        0      0 10.8.192.*:51778       10.8.255.*:9092       ESTABLISHED
 tcp        0      0 10.8.192.*:51777       10.8.255.*:9092       ESTABLISHED

build three  KafkaClient with six connections
 if __name__ == '__main__':
     for i in xrange(3):
         client = KafkaClient(hosts)
     raw_input()

 ➜  ~  netstat | grep 9092
 tcp        0      0 10.8.192.*:58035       **********************:9092 ESTABLISHED
 tcp        0      0 10.8.192.*:58037       **********************:9092 ESTABLISHED
 tcp        0      0 10.8.192.*:58039       **********************:9092 ESTABLISHED
 tcp        0      0 10.8.192.*:58036       **********************:9092 ESTABLISHED
 tcp        0      0 10.8.192.*:58034       **********************:9092 ESTABLISHED
 tcp        0      0 10.8.192.*:58038       **********************:9092 ESTABLISHED

forgot disconnect after _get_metadata(where I write TODO)  ?
def _get_metadata(self):
        """Get fresh cluster metadata from a broker."""
        # Works either on existing brokers or seed_hosts list
        brokers = [b for b in self.brokers.values() if b.connected]
        if brokers:
            for broker in brokers:
                response = broker.request_metadata()
                if response is not None:
                    return response
        else:  # try seed hosts
            brokers = self._seed_hosts.split(',')
            for broker_str in brokers:
                try:
                    h, p = broker_str.split(':')
                    broker = Broker(-1, h, p, self._handler,
                                    self._socket_timeout_ms,
                                    self._offsets_channel_socket_timeout_ms,
                                    buffer_size=1024 * 1024)
                    response = broker.request_metadata()
                    # TODO: **broker.disconnect** ?
                    if response is not None:
                        return response

                except:
                    log.exception('Unable to connect to broker %s',
                                  broker_str)
        # Couldn't connect anywhere. Raise an error.
        raise Exception('Unable to connect to a broker to fetch metadata.')

sorry about my English and how can we release client correctly.

Thanks for reporting this.
I can confirm that the number of connections keeps growing with every instantiation of a KafkaClient. In addition, threading.active_count() grows too, and I strongly suspect that this is related to the discussion in #256 - given that the broker init calls Broker.connect, and the consumer init triggers Broker.connect_offsets_channel and those two methods are very similar internally.

@GhostZCH I'd be grateful if you could check out #258

@yungchin seems not work. It looks like cluster not released when client released and connecting not close when broker released.

Ouch - you're right, thanks. I'd been borrowing @emmett9001's test script from #255, after jumping to conclusions that these two things are related - but it turns out #258 so far only resolves the multiple SimpleConsumer scenario, but not the multiple KafkaClient one. There may be some more finalisers not running elsewhere. Will do some more digging!

@yungchin
cluster: self._topics[name] = Topic(self, meta)
topic: self._cluster = cluster
should :
self._cluster = weakref.proxy(cluster)
cluster could release, but RequestHandler still not release

@GhostZCH thanks, I was just playing with the exact same line :)
It works somewhat, if I also pass a shorter socket_timeout_ms into KafkaClient, but there seem to be some lockups when you do that and then instantiate multiple instances of KafkaClient. Still trying to get what that's about.
Also: I wouldn't particularly like this solution, because it would mean that if a user didn't keep a handle to the client directly, it would die:
prod = pykafka.KafkaClient("localhost:9092", socket_timeout_ms=1000).topics["hello"].get_producer()
[...]
ReferenceError: weakly-referenced object no longer exists

@yungchin Oh, I just want to show the reason why cluster not realse.
Also I find 'atexit.register(self.stop)' will case RequestHandler not released by gc util the program shut down. I try remove that line, handler will released, but may not a good solution.
Thank you for your attention

Thanks @GhostZCH - I do agree that's the reason. I think eventually the solution may have to be the other way around, so that Cluster will no longer hold strong refs to Topic (my first idea would be that TopicDict would only hold topic names as keys, and would hand out but not hold on to real Topic instances).
As for atexit, that should be dealt with by #258.
The weird thing is, if I apply a self._cluster = weakref.proxy(cluster) patch on top of #258, I still have issues: when I do a del client I find that client.cluster really gets finalised, but typically one Broker instance is left behind (I run with a three-broker test cluster, and see only two finalisers run). So that's what still keeps that RequestHandler alive even after removing atexit.

def main():
for i in xrange(10):
client = KafkaClient(hosts)
time.sleep(1)
if name == 'main':
main()
gc.collect()
raw_input('>>>')

Ah thanks very much, that was really helpful! I hadn't thought of enlisting the gc module. Plugging in gc.set_debug(gc.DEBUG_LEAK) before gc.collect() revealed the problem.
It turns out there's another reference cycle: between Topic and Partition. And given that Partition also holds references to Broker (via _isr, _leader, and _replicas), that's what kept that Broker alive.

Ok, so to summarise, the issue here is that currently, a gc'd KafkaClient leaves its cluster, brokers, and connections behind. There are three separate issues underlying this issue:

the use of atexit in RequestHandler, which prevented these ever getting gc'd - this is addressed by #258 which should be ready for review
a reference cycle between Topic and Partition - this one, I would think, is trivially resolved by sticking self._topic = weakref.proxy(topic) in Partition.__init__. This is ok because there isn't a clear use case where somebody wants to hold a Partition directly while discarding the Topic
a reference cycle between Cluster and Topic. This one is more tricky, because people may expect to be able to hold on to the Topic only. A rough proposal for keeping that working is outlined above: Cluster should instantiate Topic instances on-the-fly when requested, rather than holding a dict of them

I can confirm that applying #258 and breaking both reference cycles is sufficient to stop leaking objects for the scenario where we only instantiate and then immediately del a KafkaClient.
@kbourgoin does this sound like a worthwhile way forward?

With respect to 2: I'm not sure we can safely assume that there are no cases where someone wants to hold references to one or more Partition instances without having the Topic as well.

@emmett9001 thanks, ok, in that case we need a more elaborate solution. I suspect the same thing as with 3) should be doable: instantiate a Partition on-the-fly from Topic.partitions.__getitem__. Although, that would make iterating over them a costly mess....
(So, I was actually going by the hunch that because both Producer and SimpleConsumer require a Topic to be inited with, you'd always need the Topic anyway?)

Issues 1) (=> #258) and 3) (=> #262) have been dealt with now. I've been delaying on 2) - hoping we might still conclude that that's ok with a simple weakref.... (I'm just going to offer up an appeal to ignorance here: I cannot think of any use case where one would want to hold references to Partition only :))

@GhostZCH @emmett9001 just as a quick way to demonstrate that 1+2+3 together close this leak, I've pushed a branch https://github.com/Parsely/pykafka/tree/fix/joint-fixes-for-257 which combines #258 and #262 plus a simple weakref-patch to address issue 2). So with that, you should be able to create a new KafkaClient, del it, and see no thread leaks or lingering connections.
(Note however that as per #255, as soon as you do more than instantiate and then del a KafkaClient, a bunch of other refcycles in SimpleConsumer and Producer come into play.)

Merged #258 - I'm going to keep making my way through these.

Merged #262. Nice work @yungchin, and thanks for going so deep!

Parts 1, 2, and 3 are all in master now.

@GhostZCH Are you creating thousands of KafkaClients? If so, why? A KafkaClient is meant to be used to connect to a Kafka cluster and can be used to interact with any number of topics on that cluster. Are you connecting to many different clusters?

@emmett9001 when sent message to kafka failed, we try to create a new one. after running for days, thousands sockets were created


Redirect Issues in cli calls

Problem description
Some CLI commands fail with redirection issues associated with the route http://localhost:80/api/v1/ui. It appears as the intended route is http://localhost:80/api/v1, but is redirected http://localhost:80/api/v1/ui.
Steps to reproduce the issue
Using the nlp-cli version:
$ nlp-cli --version
nlp-cli, version 4.3.1

After starting the date-annotator-example running a number of the CLI command produces similar errors to the following:

nlp-cli tool get-tool --annotator_host http://localhost:80/api/v1
Traceback (most recent call last):
  File "/Users/jake.vancampenprovidence.org/miniconda3/envs/nlpsandbox/bin/nlp-cli", line 8, in <module>
    sys.exit(main())
  File "/Users/jake.vancampenprovidence.org/miniconda3/envs/nlpsandbox/lib/python3.9/site-packages/nlpsandboxclient/cli/__main__.py", line 19, in main
    cli()
  File "/Users/jake.vancampenprovidence.org/miniconda3/envs/nlpsandbox/lib/python3.9/site-packages/click/core.py", line 1130, in __call__
    return self.main(*args, **kwargs)
  File "/Users/jake.vancampenprovidence.org/miniconda3/envs/nlpsandbox/lib/python3.9/site-packages/click/core.py", line 1055, in main
    rv = self.invoke(ctx)
  File "/Users/jake.vancampenprovidence.org/miniconda3/envs/nlpsandbox/lib/python3.9/site-packages/click/core.py", line 1657, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/Users/jake.vancampenprovidence.org/miniconda3/envs/nlpsandbox/lib/python3.9/site-packages/click/core.py", line 1657, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/Users/jake.vancampenprovidence.org/miniconda3/envs/nlpsandbox/lib/python3.9/site-packages/click/core.py", line 1404, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/Users/jake.vancampenprovidence.org/miniconda3/envs/nlpsandbox/lib/python3.9/site-packages/click/core.py", line 760, in invoke
    return __callback(*args, **kwargs)
  File "/Users/jake.vancampenprovidence.org/miniconda3/envs/nlpsandbox/lib/python3.9/site-packages/nlpsandboxclient/cli/tool.py", line 51, in get_tool
    tool = client.get_tool(host=annotator_host)
  File "/Users/jake.vancampenprovidence.org/miniconda3/envs/nlpsandbox/lib/python3.9/site-packages/nlpsandboxclient/client.py", line 533, in get_tool
    configuration = utils.get_api_configuration(host=host)
  File "/Users/jake.vancampenprovidence.org/miniconda3/envs/nlpsandbox/lib/python3.9/site-packages/nlpsandboxclient/utils.py", line 108, in get_api_configuration
    check_url(url=os.path.join(host, "ui"))
  File "/Users/jake.vancampenprovidence.org/miniconda3/envs/nlpsandbox/lib/python3.9/site-packages/nlpsandboxclient/utils.py", line 66, in check_url
    raise ValueError(f"{url} not implemented")
ValueError: http://localhost:80/api/v1/ui not implemented

Expected behavior

no error

Extra information

Thanks for reporting this ticket. Does the redirection issue occur with the data node and/or NLP tools?

I can't reproduce this issue. I used the image docker.synapse.org/syn22277123/date-annotator-example:1.2.0 pulled from Synapse. The date annotator was started locally by cloning its repo and running docker compose up.
[ec2-user@ip-10-41-30-136 date-annotator-example]$ nlp-cli --version
nlp-cli, version 4.3.1
[ec2-user@ip-10-41-30-136 date-annotator-example]$ nlp-cli tool get-tool --annotator_host http://localhost:80/api/v1
{'name': 'date-annotator-example', 'version': '1.2.0', 'license': 'apache-2.0', 'repository': 'github:nlpsandbox/date-annotator-example', 'description': 'Example implementation of the NLP Sandbox Date Annotator API', 'author': 'NLP Sandbox Team', 'author_email'<EMAIL_ADDRESS>'url': 'https://github.com/nlpsandbox/date-annotator-example', 'type': 'nlpsandbox:date-annotator', 'api_version': '1.2.0'}

@jakevc Could you please give it another try? At the level of the code, both the date annotator and the person name annotator, for example, redirect by default to the path /api/v1/tool.

https://github.com/nlpsandbox/date-annotator-example/blob/85453dc2f6414b6c781c2ac2ea47b76b5ba64a4f/server/openapi_server/__main__.py#L13-L14
https://github.com/nlpsandbox/person-name-annotator-example/blob/c07a3ab251a0f3e019e3c73f76829eefa545537d/server/openapi_server/__main__.py#L13-L14

Yeah so I tried getting a fresh clone of the date annotator and the same thing happens. I have the data node and the workflow orchestrator running, and then I run
git clone https://github.com/nlpsandbox/date-annotator-example.git
cd date-annotator-example
docker-compose up -d

That is successful and I have all the containers running on the same machine:
$ docker container ls
CONTAINER ID   IMAGE                                                         COMMAND                  CREATED         STATUS         PORTS                  NAMES
0a535e2d9c34   nginx:1.19.6-alpine                                           "/docker-entrypoint.…"   2 minutes ago   Up 2 minutes   <IP_ADDRESS>:80->80/tcp     nginx
caaf7b4addc1   docker.synapse.org/syn22277123/date-annotator-example:1.2.0   "/docker-entrypoint.…"   2 minutes ago   Up 2 minutes                          date-annotator
214ef8cb26a9   sagebionetworks/synapse-workflow-orchestrator:1.3             "/usr/local/bin/mvn-…"   3 minutes ago   Up 3 minutes                          workflow_orchestrator-workflow-orchestrator-1
377834a45f19   nginx:1.19.6-alpine                                           "/docker-entrypoint.…"   13 days ago     Up 8 days      <IP_ADDRESS>:8080->80/tcp   data-node-nginx
457dcdbd9edc   nlpsandbox/data-node:1.2.1                                    "/docker-entrypoint.…"   13 days ago     Up 8 days                             data-node
5b5d0cc9a735   sagebionetworks/mongo:4.4.4                                   "docker-entrypoint.s…"   13 days ago     Up 8 days                             data-node-db

$ nlp-cli --version
nlp-cli, version 4.3.1

Okay check, then try and get-tool:
nlp-cli tool get-tool --annotator_host http://localhost:80/api/v1
Traceback (most recent call last):
  File "/Users/jake.vancampenprovidence.org/miniconda3/envs/nlpsandbox/bin/nlp-cli", line 8, in <module>
    sys.exit(main())
  File "/Users/jake.vancampenprovidence.org/miniconda3/envs/nlpsandbox/lib/python3.9/site-packages/nlpsandboxclient/cli/__main__.py", line 19, in main
    cli()
  File "/Users/jake.vancampenprovidence.org/miniconda3/envs/nlpsandbox/lib/python3.9/site-packages/click/core.py", line 1130, in __call__
    return self.main(*args, **kwargs)
  File "/Users/jake.vancampenprovidence.org/miniconda3/envs/nlpsandbox/lib/python3.9/site-packages/click/core.py", line 1055, in main
    rv = self.invoke(ctx)
  File "/Users/jake.vancampenprovidence.org/miniconda3/envs/nlpsandbox/lib/python3.9/site-packages/click/core.py", line 1657, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/Users/jake.vancampenprovidence.org/miniconda3/envs/nlpsandbox/lib/python3.9/site-packages/click/core.py", line 1657, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/Users/jake.vancampenprovidence.org/miniconda3/envs/nlpsandbox/lib/python3.9/site-packages/click/core.py", line 1404, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/Users/jake.vancampenprovidence.org/miniconda3/envs/nlpsandbox/lib/python3.9/site-packages/click/core.py", line 760, in invoke
    return __callback(*args, **kwargs)
  File "/Users/jake.vancampenprovidence.org/miniconda3/envs/nlpsandbox/lib/python3.9/site-packages/nlpsandboxclient/cli/tool.py", line 51, in get_tool
    tool = client.get_tool(host=annotator_host)
  File "/Users/jake.vancampenprovidence.org/miniconda3/envs/nlpsandbox/lib/python3.9/site-packages/nlpsandboxclient/client.py", line 533, in get_tool
    configuration = utils.get_api_configuration(host=host)
  File "/Users/jake.vancampenprovidence.org/miniconda3/envs/nlpsandbox/lib/python3.9/site-packages/nlpsandboxclient/utils.py", line 108, in get_api_configuration
    check_url(url=os.path.join(host, "ui"))
  File "/Users/jake.vancampenprovidence.org/miniconda3/envs/nlpsandbox/lib/python3.9/site-packages/nlpsandboxclient/utils.py", line 66, in check_url
    raise ValueError(f"{url} not implemented")
ValueError: http://localhost:80/api/v1/ui not implemented


Develop marketing outreach plan

The 2016 Marketing Template and a copy of the Marketing Outreach are in the marketing folder.  @suzanneccnc can you take a look and see what you think?


Custom NodeRendererDefault with different heights

Hi,
Thanks so much for this great library and for helping out!
I would like to customize the nodes so that they each have an open/ closed state. The idea is to have a button on each node which when clicked "opens" the actual node and adds below the title more inputs for editing the node (e.g. notes, dates, priority). This will make the height of the node different than the rest of the node in the tree. When clicking on the button again, the node will be closed and will display only the title and the button (back to the same height as the rest).
You can see an example of opening / closing here: http://kinto.github.io/formbuilder/#/builder  (just add a field first).
My initial approach would be to customize the NodeRendererDefault.
My questions:

Is this the right approach
Can different nodes have different height?

Thanks!

The row height can be changed on a per-row basis using a function set to the rowHeight prop.
NodeRendererDefault would be a good choice for the level of customization you’re talking about. Although you might experiment with setting custom row contents to a title property returned in generateNodeProps. I think the Storybook example about modifying node values does something like that.

Thanks for the quick response. Indeed, I am getting there by using the rowHeight. Works nice.
Is there also a way to change the width of the node on the opened node?

That would be a css thing.


Update broad + verily underlays.

Updated the underlay config files for the broad (cms_synpuf, aou_synthetic) and verily (cms_synpuf, sdd) environments, after running the indexing jobs successfully there. The verily sdd underlay is new -- it's a copy of the VUMC one. Now that we have a Verily SA with permissions on the VUMC sd_static dataset, we can index it in Verily's env and deploy it to our dev instance.
Pending are 2 more underlay config file updates: verily (aou_synthetic), vumc (sdd). I will put those in a follow-on PR.

This PR adds verily/sdd. We already have a vumc/sdd. Could we choose one and delete the other?

Unfortunately, I think we need both for now. The verily/sdd underlay is the one we'll deploy in the Verily dev instance -- the index dataset lives in verily-tanagra-dev GCP project. The vumc/sdd underlay is the one VUMC will deploy in their dev instance -- the index dataset lives in victr-tanagra-test GCP project. In the future, we should consider making the underlay config files more modular, so that we can e.g. have just one set of the data mapping files (entity/, entitygroup/, sql/, ui/ sub-dirs) that are referenced from multiple top-level underlay files, possibly pointing to different BQ datasets.


Dev devc 888 update java templates for composite keys

Adresses/Fixes #https://github.com/devonfw-forge/composited-keys-poc
Updated the java server templates to allow composite primary keys in the entity.
@devonfw/cobigen

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.isandesh seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.

check the travis build

It seems that for JDK11 the only JUnit tests that are failing are from project templates_devon4j.
I think @jan-vcapgemini already worked on that. Can you get aligned with him? I don't think it is a problem of your current templates changes.

It seems that for JDK11 the only JUnit tests that are failing are from project templates_devon4j.
I think @jan-vcapgemini already worked on that. Can you get aligned with him? I don't think it is a problem of your current templates changes.

Sure, will check with @jan-vcapgemini .

Great, thanks for the changes! You just need to sign our CLA above

Thank you. I have signed the CLA yesterday, somehow it doesn't reflect.

@isandesh1986, please check that your email address in your commit messages is registered in github as well in your profile.

@isandesh1986, please check that your email address in your commit messages is registered in github as well in your profile.

Sure,will check.

@isandesh1986, could you please create a PR for devon4j containing the two classes of Entity infrastructure (ComposedKey) and link this PR here? @vapadwal, could help you on that.

@isandesh1986, could you please create a PR for devon4j containing the two classes of Entity infrastructure (ComposedKey) and link this PR here? @vapadwal, could help you on that.

In case we would follow my suggestion we do not need to adopt devon4j and get more flexibility.
Am I missing something? Should we have a short call to discuss this as time is running out for the release?

I think, what needs to be explicitly mentioned here @hohwille, that your comments are follow ups of the general viewpoint, that ApplicationComposedKeyPersistenceEntity and ApplicationComposedKeyEntity is not needed at all as the generic abstract implementation ApplicationPersistenceEntity and ApplicationEntity already provides everything needed.
As we already have a lot of user being confused about different increments, which are alternatives to each other (testdata builder vs testdata build persistable; crud vs crud cto; etc), I doupt, that we could provide any usability behind introducing this new increment.
So @hohwille and mine proposal would be to provide proper documentation, which should be linked in ApplicationPersistenceEntity javadoc (to the devonfw.com/docs/*), where we specify what you need to do to introduce composite keys, i.e. make ApplicationPersistenceEntity generic to set the ID type in each of the entities.
Given that, we could adapt the templates, to get to know what the ID is in each of the templates by making use of java reflection within the templates. Then we can set the ID type (whethr Long or some composite key) as the parameter of the super type.


[NEB-13]feat: align message.text to github format

[ ] Ready for review
[ ] Linked to Jira ticket

What does this PR do?
When using the sarif output on github, we're failing to parse the message.text field. as we use message.text <-> message.markdown the opposite way github is using it.
We would like to align those two options. as the sarif  indicates that the argument property is used by both text and markdown it won't change any logic if we use one or the other.
Where should the reviewer start?
How should this be manually tested?
Any background context you want to provide?
Screenshots
Additional questions

Seems like we have the same logic spread out between multiple codebases - probably worth considering extracting them and reusing?

Seems like we have the same logic spread out between multiple codebases - probably worth considering extracting them and reusing?

Unfortunatly we have it in both place for sake of moving into the new-api server. i think once we will fully migrate. we will remove this logic from code client

:tada: This PR is included in version 3.9.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


GraphClientFactory for PHP

The GraphClientFactory will give SDK users the option to create and define their own HTTP client configuration and pass it to Graph() to be used for requests.
Consider support for arbitrary HttpClients so that customer can bring their own clients to use in our GraphClient.
Reference:
https://github.com/microsoftgraph/msgraph-sdk-design/blob/master/GraphClientFactory.md
Related to:
microsoftgraph/msgraph-sdk-php#328 , microsoftgraph/msgraph-sdk-php#339 , microsoftgraph/msgraph-sdk-php#283 , microsoftgraph/msgraph-sdk-php#232
Task breakdown:

[x] Design doc written and reviewed
[x] Implement HttpClientFactory
[x] Make changes to GraphRequest classes to remove HTTP client concerns
[x] Update tests
[x] Document breaking changes in an upgrade guide

AB#8906

Added to v2-preview release


Bug: The context menu does not show any text

@anon5r Bug: The context menu does not show any text

Originally posted by @burritosoftware in https://github.com/anon5r/KsGameLauncher/issues/20#issuecomment-1025081626

@burritosoftware
I have fixed this issue. it will be contained next release. now you can try beta version here
Please let me know if you have any problems.


Do we need cache/adapter-common to be required?

No, you are correct. It is not needed. Can you send a PR?

Yes :)


mmdet/datasets/custom.py error？？？？

Img_info there can be no [' width '] and [' height '],what???

Please use the issue template to facilitate our investigation

Closed due to no reply for more than 15 days.


add no_list to concepts index pages with content

This is a Feature Request
Some _index pages in the concepts section contain content in addition to a description.
The section index displays after the content body.
What would you like to be added
Set the parameter in the page front matter, no_list, to true.
If set, this parameter toggles off the in page section index.
Why is this needed
The section index seems lost on the page and is distracting.
When an _index page has content (more than 100 chars), do not display the section index.
Comments
For information about this parameter, see these related files:
website/themes/docsy/userguide/content/en/docs/Adding content/content.md
website/themes/docsy/layouts/partials/section-index.html

/assign

/close


mod: bump miekg/dns to next version

The dns has https://deps.dev/go/github.com%2Fmiekg%2Fdns/v1.1.25 has
GO-2020-0012 https://storage.googleapis.com/go-vulndb/golang.org/x/crypto.json
Updated the dependency with the fix.
Pull Request Checklist

[x] All changes are Go version 1.15 compliant
[x] Your PR passes all CI checks. If a check cannot be passed for a justifiable reason, that reason must be stated in the commit message and PR description.
[ ] If this is your first time contributing, we recommend you read the Code Contribution Guidelines

[ ] The code being submitted is commented according to Code Documentation and Commenting
[ ] Commits have a logical structure according to Ideal Git Commit Structure

[ ] For new code: Code is accompanied by tests which exercise both the positive and negative (error paths) conditions (if applicable)
[ ] For bug fixes: If possible, code is accompanied by new tests which trigger the bug being fixed to prevent regressions
[ ] Any new logging statements use an appropriate subsystem and logging level
[ ] For code and documentation: lines are wrapped at 80 characters (the tab character should be counted as 8 characters, not 4, as some IDEs do per default)
[x] A description of your changes should be added to running the release notes for the milestone your change will land in.

@Roasbeef @guggero FYI...


(RayTrainWorker pid=947, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:947:3124 [3] NCCL INFO Connected NVLS tree [repeated 15x across cluster]
(RayTrainWorker pid=947, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:947:3124 [3] NCCL INFO threadThresholds 8/8/64 | 128/8/64 | 512 | 512 [repeated 15x across cluster]
(RayTrainWorker pid=947, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:947:3124 [3] NCCL INFO 16 coll channels, 0 collnet channels, 16 nvls channels, 16 p2p channels, 2 p2p channels per peer [repeated 15x across cluster]
(RayTrainWorker pid=947, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:947:3124 [3] NCCL INFO comm 0x7ee1f93fb0f0 rank 11 nranks 16 cudaDev 3 nvmlDev 3 busId 86000 commId 0xb28cabf3135b26f2 - Init COMPLETE [repeated 15x across cluster]
(RayTrainWorker pid=950, ip=<IP_ADDRESS>) ini-worker-ray-
(RayTrainWorker pid=950, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:950:3034 [0] NCCL INFO Channel 15/0 : 0[0] -> 8[0] [send] via NET/Socket/0 [repeated 16x across cluster]
(RayTrainWorker pid=950, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:950:3833 [0] NCCL INFO Channel 15/0 : 9[1] -> 0[0] [receive] via NET/Socket/0 [repeated 31x across cluster]
(RayTrainWorker pid=944, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:944:3818 [0] NCCL INFO
(RayTrainWorker pid=946, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:946:3816 [2] NCCL INFO Channel 0
(RayTrainWorker pid=947, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5
(RayTrainWorker pid=948, ip=<IP_ADDRESS>) ini-worker-ray-maleksk-bern
(RayTrainWorker pid=945, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:945:3824 [1] NCCL INF
(RayTrainWorker pid=950, ip=<IP_ADDRESS>) ini-worker-ra
(RayTrainWorker pid=952, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:952:3837 [2]
(RayTrainWorker pid=953, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:953:3835 [3]
(RayTrainWorker pid=956, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:
(RayTrainWorker pid=955, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:
(RayTrainWorker pid=954, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:
(RayTrainWorker pid=951, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:95
(RayTrainWorker pid=957, ip=<IP_ADDRESS>) ini-worker-ray-maleksk-berni
(RayTrainWorker pid=950, ip=<IP_ADDRESS>) Parameter Offload: Total persistent parameters: 266240 in 65 params
(RayTrainWorker pid=957, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:957:3839 [7] NCCL INFO Using non-device net plugin version 0 [repeated 15x across cluster]
(RayTrainWorker pid=957, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:957:3839 [7] NCCL INFO Using network Socket [repeated 15x across cluster]
(RayTrainWorker pid=957, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:957:3839 [7] NCCL INFO bootstrapSplit: comm 0x7fb90bbb1f60 parent 0x7fb909403e40 rank 7 nranks 16 color<PHONE_NUMBER> key 7 prev 6 next 8 - DONE [repeated 15x across cluster]
(RayTrainWorker pid=957, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:957:3839 [7] NCCL INFO comm 0x7fb90bbb1f60 rank 7 nranks 16 cudaDev 7 nvmlDev 7 busId ca000 commId 0xb2d16673d0abaf0a - Init START [repeated 15x across cluster]
(RayTrainWorker pid=957, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:957:3839 [7] NCCL INFO NCCL_TOPO_FILE set by environment to /opt/amazon/efa/share/aws-ofi-nccl/xml/p5.48xl-topo.xml [repeated 15x across cluster]
(RayTrainWorker pid=957, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:957:3839 [7] NCCL INFO Setting affinity for GPU 7 to ffffffff,ffff0000,00000000,ffffffff,ffff0000,00000000 [repeated 15x across cluster]
(RayTrainWorker pid=957, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:957:3839 [7] NCCL INFO NVLS multicast support is available on dev 7 [repeated 15x across cluster]
(RayTrainWorker pid=957, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:957:3839 [7] NCCL INFO comm 0x7fb90bbb1f60 rank 7 nRanks 16 nNodes 2 localRanks 8 localRank 7 MNNVL 0 [repeated 15x across cluster]
(RayTrainWorker pid=957, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:957:3839 [7] NCCL INFO NVLS Head  0:  0  8 [repeated 7x across cluster]
(RayTrainWorker pid=957, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:957:3839 [7] NCCL INFO Trees [0] -1/-1/-1->7->6 [1] -1/-1/-1->7->6 [2] -1/-1/-1->7->6 [3] -1/-1/-1->7->6 [4] -1/-1/-1->7->6 [5] -1/-1/-1->7->6 [6] -1/-1/-1->7->6 [7] -1/-1/-1->7->6 [8] -1/-1/-1->7->6 [9] -1/-1/-1->7->6 [10] -1/-1/-1->7->6 [11] -1/-1/-1->7->6 [12] -1/-1/-1->7->6 [13] -1/-1/-1->7->6 [14] -1/-1/-1->7->6 [15] -1/-1/-1->7->6 [repeated 15x across cluster]
(RayTrainWorker pid=957, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:957:3839 [7] NCCL INFO P2P Chunksize set to 524288 [repeated 15x across cluster]
(RayTrainWorker pid=957, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:957:3839 [7] NCCL INFO Channel 15/0 : 7[7] -> 6[6] via P2P/CUMEM [repeated 320x across cluster]
(RayTrainWorker pid=957, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:957:3839 [7] NCCL INFO Connected all rings [repeated 16x across cluster]
(RayTrainWorker pid=957, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:957:3839 [7] NCCL INFO Connected all trees [repeated 2x across cluster]
(RayTrainWorker pid=957, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:957:3839 [7] NCCL INFO NVLS comm 0x7fb90bbb1f60 headRank -1 nHeads 1 buffSize 8388608 memSize 2097152 nvlsPerRankSize 335544320 nvlsTotalSize 335544320 [repeated 2x across cluster]
(RayTrainWorker pid=957, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:957:3839 [7] NCCL INFO Connected NVLS tree [repeated 2x across cluster]
(RayTrainWorker pid=957, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:957:3839 [7] NCCL INFO threadThresholds 8/8/64 | 128/8/64 | 512 | 512 [repeated 2x across cluster]
(RayTrainWorker pid=957, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:957:3839 [7] NCCL INFO 16 coll channels, 0 collnet channels, 16 nvls channels, 16 p2p channels, 2 p2p channels per peer [repeated 2x across cluster]
(RayTrainWorker pid=951, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:951:3842 [1] NCCL INFO Channel 15/0 : 1[1] -> 8[0] [send] via NET/Socket/0 [repeated 41x across cluster]
(RayTrainWorker pid=950, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:950:3833 [0] NCCL INFO Channel 15/0 : 8[0] -> 0[0] [receive] via NET/Socket/0 [repeated 26x across cluster]
(RayTrainWorker pid=950, ip=<IP_ADDRESS>) ini-worker-ray-maleksk-bern [repeated 2x across cluster]
(RayTrainWorker pid=950, ip=<IP_ADDRESS>)
(RayTrainWorker pid=950, ip=<IP_ADDRESS>)   | Name  | Type             | Params | Params per Device | Mode
(RayTrainWorker pid=950, ip=<IP_ADDRESS>) -----------------------------------------------------------------------
(RayTrainWorker pid=950, ip=<IP_ADDRESS>) 0 | model | LlamaForCausalLM | 6.7 B  | 421 M             | train
(RayTrainWorker pid=950, ip=<IP_ADDRESS>) -----------------------------------------------------------------------
(RayTrainWorker pid=950, ip=<IP_ADDRESS>) 6.7 B     Trainable params
(RayTrainWorker pid=950, ip=<IP_ADDRESS>) 0         Non-trainable params
(RayTrainWorker pid=950, ip=<IP_ADDRESS>) 6.7 B     Total params
(RayTrainWorker pid=950, ip=<IP_ADDRESS>) 26,953.794Total estimated model params size (MB)
(RayTrainWorker pid=949, ip=<IP_ADDRESS>) Loading extension module cpu_adam... [repeated 15x across cluster]
(RayTrainWorker pid=947, ip=<IP_ADDRESS>) [rank11]:[W Utils.hpp:135] Warning: Environment variable NCCL_ASYNC_ERROR_HANDLING is deprecated; use TORCH_NCCL_ASYNC_ERROR_HANDLING instead (function getCvarInt) [repeated 15x across cluster]
(RayTrainWorker pid=950, ip=<IP_ADDRESS>)
Training: |          | 0/? [00:00<?, ?it/s]
Training:   0%|          | 0/24 [00:00<?, ?it/s]
Epoch 0:   0%|          | 0/24 [00:00<?, ?it/s]
(RayTrainWorker pid=950, ip=<IP_ADDRESS>) /opt/miniconda/lib/python3.10/site-packages/pytorch_lightning/trainer/connectors/data_connector.py:424: The 'train_dataloader' does not have many workers which may be a bottleneck. Consider increasing the value of the `num_workers` argument` to `num_workers=23` in the `DataLoader` to improve performance.
(RayTrainWorker pid=950, ip=<IP_ADDRESS>) /opt/miniconda/lib/python3.10/site-packages/pytorch_lightning/loops/fit_loop.py:298: The number of training batches (24) is smaller than the logging interval Trainer(log_every_n_steps=50). Set a lower value for log_every_n_steps if you want to see logs for the training epoch.
(RayTrainWorker pid=950, ip=<IP_ADDRESS>)
Epoch 0:   4%|▍         | 1/24 [00:44<16:53,  0.02it/s]
Epoch 0:   4%|▍         | 1/24 [00:44<16:53,  0.02it/s, v_num=0_1, train_loss_step=2.310]
(RayTrainWorker pid=950, ip=<IP_ADDRESS>)
Epoch 0:   8%|▊         | 2/24 [01:14<13:38,  0.03it/s, v_num=0_1, train_loss_step=2.310]
Epoch 0:   8%|▊         | 2/24 [01:14<13:38,  0.03it/s, v_num=0_1, train_loss_step=2.290]
(RayTrainWorker pid=950, ip=<IP_ADDRESS>)
Epoch 0:  12%|█▎        | 3/24 [01:44<12:13,  0.03it/s, v_num=0_1, train_loss_step=2.290]
Epoch 0:  12%|█▎        | 3/24 [01:44<12:13,  0.03it/s, v_num=0_1, train_loss_step=2.290]
(RayTrainWorker pid=950, ip=<IP_ADDRESS>)
Epoch 0:  17%|█▋        | 4/24 [02:15<11:17,  0.03it/s, v_num=0_1, train_loss_step=2.290]
Epoch 0:  17%|█▋        | 4/24 [02:15<11:17,  0.03it/s, v_num=0_1, train_loss_step=2.330]
(RayTrainWorker pid=950, ip=<IP_ADDRESS>)
Epoch 0:  21%|██        | 5/24 [02:45<10:29,  0.03it/s, v_num=0_1, train_loss_step=2.330]
Epoch 0:  21%|██        | 5/24 [02:45<10:29,  0.03it/s, v_num=0_1, train_loss_step=2.350]
(RayTrainWorker pid=950, ip=<IP_ADDRESS>)
Epoch 0:  25%|██▌       | 6/24 [03:16<09:49,  0.03it/s, v_num=0_1, train_loss_step=2.350]
Epoch 0:  25%|██▌       | 6/24 [03:16<09:49,  0.03it/s, v_num=0_1, train_loss_step=2.360]
(RayTrainWorker pid=950, ip=<IP_ADDRESS>)
Epoch 0:  29%|██▉       | 7/24 [03:46<09:10,  0.03it/s, v_num=0_1, train_loss_step=2.360]
Epoch 0:  29%|██▉       | 7/24 [03:46<09:10,  0.03it/s, v_num=0_1, train_loss_step=2.270]
(RayTrainWorker pid=950, ip=<IP_ADDRESS>)
Epoch 0:  33%|███▎      | 8/24 [04:17<08:34,  0.03it/s, v_num=0_1, train_loss_step=2.270]
Epoch 0:  33%|███▎      | 8/24 [04:17<08:34,  0.03it/s, v_num=0_1, train_loss_step=2.460]
(RayTrainWorker pid=950, ip=<IP_ADDRESS>)
Epoch 0:  38%|███▊      | 9/24 [04:47<07:59,  0.03it/s, v_num=0_1, train_loss_step=2.460]
Epoch 0:  38%|███▊      | 9/24 [04:47<07:59,  0.03it/s, v_num=0_1, train_loss_step=2.630]
(RayTrainWorker pid=950, ip=<IP_ADDRESS>)
Epoch 0:  42%|████▏     | 10/24 [05:17<07:24,  0.03it/s, v_num=0_1, train_loss_step=2.630]
Epoch 0:  42%|████▏     | 10/24 [05:17<07:24,  0.03it/s, v_num=0_1, train_loss_step=2.350]
(RayTrainWorker pid=950, ip=<IP_ADDRESS>)
Epoch 0:  46%|████▌     | 11/24 [05:48<06:51,  0.03it/s, v_num=0_1, train_loss_step=2.350]
Epoch 0:  46%|████▌     | 11/24 [05:48<06:51,  0.03it/s, v_num=0_1, train_loss_step=2.230]
(RayTrainWorker pid=950, ip=<IP_ADDRESS>)
Epoch 0:  50%|█████     | 12/24 [06:18<06:18,  0.03it/s, v_num=0_1, train_loss_step=2.230]
Epoch 0:  50%|█████     | 12/24 [06:18<06:18,  0.03it/s, v_num=0_1, train_loss_step=2.280]
(RayTrainWorker pid=950, ip=<IP_ADDRESS>)
Epoch 0:  54%|█████▍    | 13/24 [06:49<05:46,  0.03it/s, v_num=0_1, train_loss_step=2.280]
Epoch 0:  54%|█████▍    | 13/24 [06:49<05:46,  0.03it/s, v_num=0_1, train_loss_step=2.200]
(RayTrainWorker pid=950, ip=<IP_ADDRESS>)
Epoch 0:  58%|█████▊    | 14/24 [07:19<05:13,  0.03it/s, v_num=0_1, train_loss_step=2.200]
Epoch 0:  58%|█████▊    | 14/24 [07:19<05:13,  0.03it/s, v_num=0_1, train_loss_step=2.420]
(RayTrainWorker pid=950, ip=<IP_ADDRESS>)
Epoch 0:  62%|██████▎   | 15/24 [07:49<04:41,  0.03it/s, v_num=0_1, train_loss_step=2.420]
Epoch 0:  62%|██████▎   | 15/24 [07:49<04:41,  0.03it/s, v_num=0_1, train_loss_step=2.380]
(RayTrainWorker pid=950, ip=<IP_ADDRESS>)
Epoch 0:  67%|██████▋   | 16/24 [08:20<04:10,  0.03it/s, v_num=0_1, train_loss_step=2.380]
Epoch 0:  67%|██████▋   | 16/24 [08:20<04:10,  0.03it/s, v_num=0_1, train_loss_step=2.240]
(RayTrainWorker pid=950, ip=<IP_ADDRESS>)
Epoch 0:  71%|███████   | 17/24 [08:50<03:38,  0.03it/s, v_num=0_1, train_loss_step=2.240]
Epoch 0:  71%|███████   | 17/24 [08:50<03:38,  0.03it/s, v_num=0_1, train_loss_step=2.210]
(RayTrainWorker pid=950, ip=<IP_ADDRESS>)
Epoch 0:  75%|███████▌  | 18/24 [09:20<03:06,  0.03it/s, v_num=0_1, train_loss_step=2.210]
Epoch 0:  75%|███████▌  | 18/24 [09:20<03:06,  0.03it/s, v_num=0_1, train_loss_step=2.520]
(RayTrainWorker pid=950, ip=<IP_ADDRESS>)
Epoch 0:  79%|███████▉  | 19/24 [09:51<02:35,  0.03it/s, v_num=0_1, train_loss_step=2.520]
Epoch 0:  79%|███████▉  | 19/24 [09:51<02:35,  0.03it/s, v_num=0_1, train_loss_step=2.410]
(RayTrainWorker pid=950, ip=<IP_ADDRESS>)
Epoch 0:  83%|████████▎ | 20/24 [10:21<02:04,  0.03it/s, v_num=0_1, train_loss_step=2.410]
Epoch 0:  83%|████████▎ | 20/24 [10:21<02:04,  0.03it/s, v_num=0_1, train_loss_step=2.570]
(RayTrainWorker pid=950, ip=<IP_ADDRESS>)
Epoch 0:  88%|████████▊ | 21/24 [10:51<01:33,  0.03it/s, v_num=0_1, train_loss_step=2.570]
Epoch 0:  88%|████████▊ | 21/24 [10:51<01:33,  0.03it/s, v_num=0_1, train_loss_step=2.320]
(RayTrainWorker pid=950, ip=<IP_ADDRESS>)
Epoch 0:  92%|█████████▏| 22/24 [11:21<01:01,  0.03it/s, v_num=0_1, train_loss_step=2.320]
Epoch 0:  92%|█████████▏| 22/24 [11:21<01:01,  0.03it/s, v_num=0_1, train_loss_step=2.400]
(RayTrainWorker pid=950, ip=<IP_ADDRESS>)
Epoch 0:  96%|█████████▌| 23/24 [11:52<00:30,  0.03it/s, v_num=0_1, train_loss_step=2.400]
Epoch 0:  96%|█████████▌| 23/24 [11:52<00:30,  0.03it/s, v_num=0_1, train_loss_step=2.410]
(RayTrainWorker pid=950, ip=<IP_ADDRESS>)
Epoch 0: 100%|██████████| 24/24 [12:22<00:00,  0.03it/s, v_num=0_1, train_loss_step=2.410]
Epoch 0: 100%|██████████| 24/24 [12:22<00:00,  0.03it/s, v_num=0_1, train_loss_step=2.290]
(RayTrainWorker pid=950, ip=<IP_ADDRESS>) /opt/miniconda/lib/python3.10/site-packages/pytorch_lightning/trainer/connectors/logger_connector/result.py:439: It is recommended to use `self.log('train_loss', ..., sync_dist=True)` when logging on epoch level in distributed setting to accumulate the metric across devices.
(RayTrainWorker pid=950, ip=<IP_ADDRESS>) Syncing files from /tmp/ray_results/demo_llama2_20240723-154138/lightning to s3://ray-training-output-ue1/demo_llama2_20240723-154138/lightning
(RayTrainWorker pid=944, ip=<IP_ADDRESS>)
(RayTrainWorker pid=944, ip=<IP_ADDRESS>) The user-provided path /tmp/ray_results/demo_llama2_20240723-154138/lightning does not exist.
(RayTrainWorker pid=950, ip=<IP_ADDRESS>)
(RayTrainWorker pid=950, ip=<IP_ADDRESS>)
(RayTrainWorker pid=944, ip=<IP_ADDRESS>) Time Taken to Sync:  0.581810712814331
(RayTrainWorker pid=944, ip=<IP_ADDRESS>)
(RayTrainWorker pid=950, ip=<IP_ADDRESS>) /opt/miniconda/lib/python3.10/site-packages/pytorch_lightning/strategies/deepspeed.py:634: When saving the DeepSpeed Stage 3 checkpoint, each worker will save a shard of the checkpoint within a directory. If a single file is required after training, see https://lightning.ai/docs/pytorch/stable/advanced/model_parallel.html#deepspeed-zero-stage-3-single-file for instructions.
(RayTrainWorker pid=950, ip=<IP_ADDRESS>) Checkpoint successfully created at: Checkpoint(filesystem=py::fsspec+s3, path=ray-training-output-ue1/demo_llama2_20240723-154138/TorchTrainer_0e52d_00000_0_2024-07-23_15-41-41/checkpoint_000000)
(RayTrainWorker pid=944, ip=<IP_ADDRESS>) The user-provided path /tmp/ray_results/demo_llama2_20240723-154138/lightning does not exist. [repeated 3x across cluster]
(RayTrainWorker pid=957, ip=<IP_ADDRESS>) Checkpoint successfully created at: Checkpoint(filesystem=py::fsspec+s3, path=ray-training-output-ue1/demo_llama2_20240723-154138/TorchTrainer_0e52d_00000_0_2024-07-23_15-41-41/checkpoint_000000) [repeated 4x across cluster]
(RayTrainWorker pid=948, ip=<IP_ADDRESS>) Checkpoint successfully created at: Checkpoint(filesystem=py::fsspec+s3, path=ray-training-output-ue1/demo_llama2_20240723-154138/TorchTrainer_0e52d_00000_0_2024-07-23_15-41-41/checkpoint_000000) [repeated 10x across cluster]

Training finished iteration 1 at 2024-07-23 16:17:50. Total running time: 36min 9s
╭─────────────────────────────────────────╮
│ Training result                         │
├─────────────────────────────────────────┤
│ checkpoint_dir_name   checkpoint_000000 │
│ time_this_iter_s              1142.8118 │
│ time_total_s                  1142.8118 │
│ training_iteration                    1 │
│ epoch                                 0 │
│ step                                 24 │
│ train_loss                       2.3574 │
│ train_loss_epoch                 2.3574 │
│ train_loss_step                 2.29294 │
╰─────────────────────────────────────────╯
Training saved a checkpoint for iteration 1 at: (py::fsspec+s3)ray-training-output-ue1/demo_llama2_20240723-154138/TorchTrainer_0e52d_00000_0_2024-07-23_15-41-41/checkpoint_000000
2024-07-23 16:17:51,007	WARNING experiment_state.py:206 -- Experiment state snapshotting has been triggered multiple times in the last 5.0 seconds and may become a bottleneck. A snapshot is forced if `CheckpointConfig(num_to_keep)` is set, and a trial has checkpointed >= `num_to_keep` times since the last snapshot.
You may want to consider increasing the `CheckpointConfig(num_to_keep)` or decreasing the frequency of saving checkpoints.
You can suppress this warning by setting the environment variable TUNE_WARN_EXCESSIVE_EXPERIMENT_CHECKPOINT_SYNC_THRESHOLD_S to a smaller value than the current threshold (5.0). Set it to 0 to completely suppress this warning.
(RayTrainWorker pid=950, ip=<IP_ADDRESS>) Syncing files from /tmp/ray_results/demo_llama2_20240723-154138/lightning to s3://ray-training-output-ue1/demo_llama2_20240723-154138/lightning [repeated 2x across cluster]
(RayTrainWorker pid=950, ip=<IP_ADDRESS>) Time Taken to Sync:  0.5941030979156494
(RayTrainWorker pid=950, ip=<IP_ADDRESS>)
(RayTrainWorker pid=950, ip=<IP_ADDRESS>) The user-provided path /tmp/ray_results/demo_llama2_20240723-154138/lightning does not exist.
(RayTrainWorker pid=949, ip=<IP_ADDRESS>) Checkpoint successfully created at: Checkpoint(filesystem=py::fsspec+s3, path=ray-training-output-ue1/demo_llama2_20240723-154138/TorchTrainer_0e52d_00000_0_2024-07-23_15-41-41/checkpoint_000000)
(RayTrainWorker pid=944, ip=<IP_ADDRESS>)
(RayTrainWorker pid=950, ip=<IP_ADDRESS>) Time Taken to Sync:  0.5892753601074219
(RayTrainWorker pid=950, ip=<IP_ADDRESS>)
Epoch 0: 100%|██████████| 24/24 [15:53<00:00,  0.03it/s, v_num=0_1, train_loss_step=2.290, train_loss_epoch=2.360]
Epoch 0: 100%|██████████| 24/24 [15:53<00:00,  0.03it/s, v_num=0_1, train_loss_step=2.290, train_loss_epoch=2.360]
(RayTrainWorker pid=950, ip=<IP_ADDRESS>)
(RayTrainWorker pid=950, ip=<IP_ADDRESS>) /opt/miniconda/lib/python3.10/site-packages/pytorch_lightning/callbacks/model_checkpoint.py:382: `ModelCheckpoint(monitor='val_loss')` could not find the monitored key in the returned metrics: ['train_loss', 'train_loss_step', 'train_loss_epoch', 'epoch', 'step']. HINT: Did you call `log('val_loss', value)` in the `LightningModule`?
(RayTrainWorker pid=950, ip=<IP_ADDRESS>) `Trainer.fit` stopped: `max_epochs=1` reached.
(RayTrainWorker pid=944, ip=<IP_ADDRESS>)

Training completed after 1 iterations at 2024-07-23 16:17:58. Total running time: 36min 16s
(RayTrainWorker pid=950, ip=<IP_ADDRESS>) y-worker-p5:950:3833 [0] NCCL INFO Channel 09/0 : 0[0] -> 8[0] [send] via NET/Socket/0
(RayTrainWorker pid=950, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:950:3833 [0] NCCL INFO Channel 10/0 : 0[0] -> 8[0] [send] via NET/Socket/0
(RayTrainWorker pid=950, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:950:3833 [0] NCCL INFO Channel 11/0 : 0[0] -> 8[0] [send] via NET/Socket/0
(RayTrainWorker pid=950, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:950:3833 [0] NCCL INFO Channel 12/0 : 0[0] -> 8[0] [send] via NET/Socket/0
(RayTrainWorker pid=950, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:950:3833 [0] NCCL INFO Channel 13/0 : 0[0] -> 8[0] [send] via NET/Socket/0
(RayTrainWorker pid=950, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:950:3833 [0] NCCL INFO Channel 14/0 : 0[0] -> 8[0] [send] via NET/Socket/0
(RayTrainWorker pid=950, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:950:3833 [0] NCCL INFO Channel 15/0 : 0[0] -> 8[0] [send] via NET/Socket/0
(RayTrainWorker pid=950, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:950:3833 [0] NCCL INFO Connected all trees
(RayTrainWorker pid=950, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:950:3833 [0] NCCL INFO NVLS comm 0x7f2529911320 headRank 0 nHeads 1 buffSize 8388608 memSize 2097152 nvlsPerRankSize 335544320 nvlsTotalSize 335544320
(RayTrainWorker pid=950, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:950:3833 [0] NCCL INFO Connected NVLS tree
(RayTrainWorker pid=950, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:950:3833 [0] NCCL INFO threadThresholds 8/8/64 | 128/8/64 | 512 | 512
(RayTrainWorker pid=950, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:950:3833 [0] NCCL INFO 16 coll channels, 0 collnet channels, 16 nvls channels, 16 p2p channels, 2 p2p channels per peer
(RayTrainWorker pid=950, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:950:3833 [0] NCCL INFO comm 0x7f2529911320 rank 0 nranks 16 cudaDev 0 nvmlDev 0 busId 53000 commId 0xb2d16673d0abaf0a - Init COMPLETE
(RayTrainWorker pid=951, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:951:3842 [1] NCCL INFO Channel 05/0 : 1[1] -> 2[2] via P2P/CUMEM
(RayTrainWorker pid=951, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:951:3842 [1] NCCL INFO Channel 06/0 : 1[1] -> 2[2] via P2P/CUMEM
(RayTrainWorker pid=951, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:951:3842 [1] NCCL INFO Channel 07/0 : 1[1] -> 2[2] via P2P/CUMEM
(RayTrainWorker pid=951, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:951:3842 [1] NCCL INFO Channel 08/0 : 1[1] -> 2[2] via P2P/CUMEM
(RayTrainWorker pid=951, ip=<IP_ADDRESS>2) ini-worker-ray-worker-p5:951:3842 [1] NCCL INFO Channel 09/0 : 1[1] -> 2[2] via P2P/CUMEM
(RayTrainWorker pid=951, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:951:3842 [1] NCCL INFO Channel 10/0 : 1[1] -> 2[2] via P2P/CUMEM
(RayTrainWorker pid=951, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:951:3842 [1] NCCL INFO Channel 11/0 : 1[1] -> 2[2] via P2P/CUMEM
(RayTrainWorker pid=951, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:951:3842 [1] NCCL INFO Channel 12/0 : 1[1] -> 2[2] via P2P/CUMEM
(RayTrainWorker pid=951, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:951:3842 [1] NCCL INFO Channel 13/0 : 1[1] -> 2[2] via P2P/CUMEM
(RayTrainWorker pid=951, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:951:3842 [1] NCCL INFO Channel 14/0 : 1[1] -> 2[2] via P2P/CUMEM
(RayTrainWorker pid=951, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:951:3842 [1] NCCL INFO Channel 15/0 : 1[1] -> 2[2] via P2P/CUMEM
(RayTrainWorker pid=951, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:951:3842 [1] NCCL INFO Channel 00/0 : 1[1] -> 0[0] via P2P/CUMEM
(RayTrainWorker pid=951, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:951:3842 [1] NCCL INFO Channel 01/0 : 1[1] -> 0[0] via P2P/CUMEM
(RayTrainWorker pid=951, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:951:3842 [1] NCCL INFO Channel 02/0 : 1[1] -> 0[0] via P2P/CUMEM
(RayTrainWorker pid=951, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:951:3842 [1] NCCL INFO Channel 03/0 : 1[1] -> 0[0] via P2P/CUMEM
(RayTrainWorker pid=951, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:951:3842 [1] NCCL INFO Channel 04/0 : 1[1] -> 0[0] via P2P/CUMEM
(RayTrainWorker pid=951, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:951:3842 [1] NCCL INFO Channel 05/0 : 1[1] -> 0[0] via P2P/CUMEM
(RayTrainWorker pid=951, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:951:3842 [1] NCCL INFO Channel 06/0 : 1[1] -> 0[0] via P2P/CUMEM
(RayTrainWorker pid=951, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:951:3842 [1] NCCL INFO Channel 07/0 : 1[1] -> 0[0] via P2P/CUMEM
(RayTrainWorker pid=951, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:951:3842 [1] NCCL INFO Channel 08/0 : 1[1] -> 0[0] via P2P/CUMEM
(RayTrainWorker pid=951, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:951:3842 [1] NCCL INFO Channel 09/0 : 1[1] -> 0[0] via P2P/CUMEM
(RayTrainWorker pid=951, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:951:3842 [1] NCCL INFO Channel 10/0 : 1[1] -> 0[0] via P2P/CUMEM
(RayTrainWorker pid=951, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:951:3842 [1] NCCL INFO Channel 11/0 : 1[1] -> 0[0] via P2P/CUMEM
(RayTrainWorker pid=951, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:951:3842 [1] NCCL INFO Channel 12/0 : 1[1] -> 0[0] via P2P/CUMEM
(RayTrainWorker pid=951, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:951:3842 [1] NCCL INFO Channel 13/0 : 1[1] -> 0[0] via P2P/CUMEM
(RayTrainWorker pid=951, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:951:3842 [1] NCCL INFO Channel 14/0 : 1[1] -> 0[0] via P2P/CUMEM
(RayTrainWorker pid=951, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:951:3842 [1] NCCL INFO Channel 15/0 : 1[1] -> 0[0] via P2P/CUMEM
(RayTrainWorker pid=945, ip=<IP_ADDRESS>) O Channel 05/0 : 9[1] -> 10[2] via P2P/CUMEM
(RayTrainWorker pid=944, ip=<IP_ADDRESS>) Channel 10/0 : 0[0] -> 8[0] [receive] via NET/Socket/0
(RayTrainWorker pid=944, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:944:3818 [0] NCCL INFO Channel 11/0 : 0[0] -> 8[0] [receive] via NET/Socket/0
(RayTrainWorker pid=944, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:944:3818 [0] NCCL INFO Channel 12/0 : 0[0] -> 8[0] [receive] via NET/Socket/0
(RayTrainWorker pid=944, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:944:3818 [0] NCCL INFO Channel 13/0 : 0[0] -> 8[0] [receive] via NET/Socket/0
(RayTrainWorker pid=944, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:944:3818 [0] NCCL INFO Channel 14/0 : 0[0] -> 8[0] [receive] via NET/Socket/0
(RayTrainWorker pid=944, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:944:3818 [0] NCCL INFO Channel 15/0 : 0[0] -> 8[0] [receive] via NET/Socket/0
(RayTrainWorker pid=946, ip=<IP_ADDRESS>) 6/0 : 10[2] -> 11[3] via P2P/CUMEM
2024-07-23 16:17:59,007	INFO tune.py:1009 -- Wrote the latest version of all result files and experiment state to 'ray-training-output-ue1/demo_llama2_20240723-154138' in 0.6700s.

(RayTrainWorker pid=944, ip=<IP_ADDRESS>) Syncing files from /tmp/ray_results/demo_llama2_20240723-154138/lightning to s3://ray-training-output-ue1/demo_llama2_20240723-154138/lightning
(RayTrainWorker pid=944, ip=<IP_ADDRESS>) Time Taken to Sync:  0.5883631706237793
(RayTrainWorker pid=944, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:944:3818 [0] NCCL INFO Channel 15/0 : 8[0] -> 0[0] [send] via NET/Socket/0 [repeated 16x across cluster]
(RayTrainWorker pid=955, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:955:3838 [4] NCCL INFO Connected all trees [repeated 12x across cluster]
(RayTrainWorker pid=955, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:955:3838 [4] NCCL INFO NVLS comm 0x7f45efbb3850 headRank -1 nHeads 1 buffSize 8388608 memSize 2097152 nvlsPerRankSize 335544320 nvlsTotalSize 335544320 [repeated 12x across cluster]
(RayTrainWorker pid=955, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:955:3838 [4] NCCL INFO Connected NVLS tree [repeated 12x across cluster]
(RayTrainWorker pid=955, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:955:3838 [4] NCCL INFO threadThresholds 8/8/64 | 128/8/64 | 512 | 512 [repeated 12x across cluster]
(RayTrainWorker pid=955, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:955:3838 [4] NCCL INFO 16 coll channels, 0 collnet channels, 16 nvls channels, 16 p2p channels, 2 p2p channels per peer [repeated 12x across cluster]
(RayTrainWorker pid=955, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:955:3838 [4] NCCL INFO comm 0x7f45efbb3850 rank 4 nranks 16 cudaDev 4 nvmlDev 4 busId 97000 commId 0xb2d16673d0abaf0a - Init COMPLETE [repeated 14x across cluster]
(RayTrainWorker pid=955, ip=<IP_ADDRESS>) ini-worker-ray-worker-p5:955:3838 [4] NCCL INFO Channel 15/0 : 4[4] -> 5[5] via P2P/CUMEM [repeated 115x across cluster]
(RayTrainWorker pid=944, ip=<IP_ADDRESS>) The user-provided path /tmp/ray_results/demo_llama2_20240723-154138/lightning does not exist. [repeated 3x across cluster]

Hi @awsankur,
Thanks for the links, I believed that docker I created were similar, I will try again and will update you soon

In the full log above, I see
�[36m(RayTrainWorker pid=950, ip=<IP_ADDRESS>)�[0m ini-worker-ray-worker-p5:950:3034 [0] nccl_net_ofi_rdma_init:5966 NCCL WARN NET/OFI Wrong number of NICs for device 1. Expected 4 but got 3

Which means that not all 32 EFA devices are available to the plugin. It would be helpful to know how the containers are being launched, and specifically whether they are being launched with all 32 EFA devices.

To check if all 32 EFA devices are being used, describe the node and you should see in the Allocatable section
vpc.amazonaws.com/efa:32.

Yes that is correct. We are assigning 30 EFA devices, when we assign all 32 devices, the pod fails loose internet connection. We are launching container using KubeRay. Here is the resources request by pods:
resources:
            limits: &id002
              cpu: 190
              memory: 1900Gi
              vpc.amazonaws.com/efa: 30
              hugepages-2Mi: 5120Mi
              nvidia.com/gpu: 8
            requests: *id002

Do we need to make all 32 devices available to the pod?

@kamal-rahimi Yes, the only supported configuration of the aws-ofi-nccl plugin on P5 is using all 32 EFAs.
Not sure why you lose Internet connection when using all 32 devices; that's not expected.

Thank you for the quick response. It is working now

The problem is resolved. Thank you


running flake8 on notebooks during CI + formatting

Describe your changes
context: https://github.com/ploomber/contributing/issues/22
this PR runs flake8 on notebook files (ipynb, md) in the CI process and it formats existing notebooks
Issue ticket number and link
Checklist before requesting a review

[x] I have performed a self-review of my code
[x] I have added thorough tests (when necessary).
[x] I have added the right documentation in the docstring and changelog (when needed)

:books: Documentation preview :books:: https://ploomber-engine--43.org.readthedocs.build/en/43/

lgtm.
Should we add nqba to setup.py also so developers can also run it before pushing?

good point. i updated the issue so we don't forget https://github.com/ploomber/contributing/issues/22


Development

Coverage decreased (-0.2%) to 99.301% when pulling dee48f9c416b0b9ebbbbd9d6b1ebf9dcd46edb9b on development into 896023c54be3f4fcd5f2a97b450c3066c7859ebc on master.


Fix drag and drop for columns

Fixes https://github.com/microsoft/azuredatastudio/issues/18004
The root issue is that STS is for some reason setting the schema of a node to the schema of its parent if it doesn't have a schema itself :
https://github.com/microsoft/sqltoolsservice/blob/main/src/Microsoft.SqlTools.ServiceLayer/ObjectExplorer/SmoModel/SmoTreeNode.cs#L86
So for columns (which don't belong directly to a schema themselves) we were seeing that it had a schema in the metadata and adding that.
Doing the check here isn't my favorite option - but I'm worried that if I change the behavior in STS that it'll break other things so probably best to leave it alone for now unless we find other places that are broken by this.

All sounds good, thanks for the additional context!

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
4 unchanged lines in 1 file lost coverage.
Overall coverage decreased (-0.01%) to 48.3%

Files with Coverage Reduction
New Missed Lines
%

extensions/notebook/src/common/ports.ts
4
74.14%

Totals

Change from base Build<PHONE_NUMBER>:
-0.01%

Covered Lines:
14788

Relevant Lines:
29074

💛  - Coveralls


Refactor GuavaVertexCache for safe dirty reference handling

#893 was closed with a workaround.  The underlying issue still remains, although a fairly pathological configuration seems to be necessary to trigger it.

To recap #893, the point of this issue is to ensure that dirty vertices are not "lost" from the vertex cache by getting evicted before a thread with a reference to said vertex has had a chance to write to it.

Is there any documentation or description of the "pathological configuration" that triggers a dirty vertex to be evicted prior to being written by a thread ?  Any recommendations on how to fix this ?


 We are also not enforcing formatting for the template blocks of single-file vue components, which I have seen be a barrier to many developers.
Description
I would recommend we add add some additional automated styling configuration to the repositiory.  Many JavaScript developers now use prettier to auto-format code on file save or as part of CI. We could develop a prettier configuration for the project that would match our existing enforced styling but also enforce additional rules. This is particularly useful in single file .vue components, where developer opinion on how to format props can vary greatly.
The project as it stands uses some conventions, but they aren't programmatically enforced.

[x] I would be interested in implementing this feature.

@zackkrida Is this issue allowed for work?

Sure @abhisheknaiidu! I would suggest adding a prettier config file in the root of the project or a prettier key in the package.json.
Thank you!

@zackkrida I made those changes


Improve this by using regex

Resource: api/api-agi/src/main/java/org/astivetoolkit/agi/AgiRequest.java
Location: line 227

I'm dropping this because the line that the issue is pointing to does not exist anymore.