Issues regarding the training data and format for glaive_toolcall

Reminder

[X] I have read the README and searched the existing issues.

Reproduction
Will the dataset for glaive_toolcall tool invocation be transformed into a format similar to TOOL_SYSTEM_PROMPT before training, as shown below?
TOOL_SYSTEM_PROMPT = (
"You have access to the following tools:\n{tool_text}"
"Use the following format if using a tool:\n"
"\n" "Action: tool name (one of [{tool_names}]).\n" "Action Input: the input to the tool{format_prompt}.\n" "\n"
)
Is this the format? I didn't see the entry for transformation,
in the training data, it's not in this format either
"conversations": [
{
"from": "human",
"value": "I saw a dress that I liked. It was originally priced at $200 but it's on sale for 20% off. Can you tell me how much it will cost after the discount?"
},
{
"from": "function_call",
"value": "{"name": "calculate_discount", "arguments": {"original_price": 200, "discount_percentage": 20}}"
},
{
"from": "observation",
"value": "{"discounted_price": 160}"
},
{
"from": "gpt",
"value": "The dress will cost you $160 after the 20% discount."
}
],
So, can't comprehend
Expected behavior
any explanations and help
System Info
no
Others
No response

tool_text
Thanks  very much

The training data contains the following:
"from": "function_call",
"value": "{"name": "calculate_discount", "arguments": {"original_price": 200, "discount_percentage": 20}}",
However, the required output is:
"Action: tool name (one of [{tool_names}]).\n"
"Action Input: the input to the tool{format_prompt}.\n"
Is there any transformation done before inputting the training data
or  the generated format is  {"name": "calculate_discount", "arguments": {"original_price": 200, "discount_percentage": 20}} used and parsing the format to function call when generation


Cannot bundle Node. js built-in "node: crypto"

I cannot use workflow for astro to build a pages project for cloudflare

It still worked in 0.1.2, but 0.1.4

Thanks for the report @hckhanh,
we use crypto to generate random strings and recently updated crypto import to make workflow work in Node 18, but it looks like it breaks in other cases.
we will look into replacing crypto with our own random number generator like here.


Feature/real time state

@alextrahey here's the massive PR I think i told you about...

Switched everything over to typescript!


Running Infer with no arguments creates an infer-out directory.

This seems like a weird side effect, particularly if you run infer often to look at potential options.

Just opened https://github.com/facebook/infer/pull/240 to fix this.


[#96966814] Fix IE9 Inconsistencies.

IE9 doesn't return null for previousSibling when an element does not have a previousSibling, instead it returns undefined. Generally, this cleans up inconsistencies & cases where the anchorNode or it's properties were not defined.
Also, flagged the small issue that when an equation has a character that was or was not a space and that character was deleted, the equation was deleted. The equation should only be deleted when the space (empty character) in front of it is deleted.
Once merged, this will pave the way for Squire being used on IE9 in a reduced form (no ability to create equations or edit them, but the ability to delete equations and modify text).

Please update the submodule on the feature branch 96966814_fix_ie9_editor, after this is merged & unblock https://github.com/StileEducation/web-client/pull/1067 for review. I'm in an exam for most of the day tomorrow. With :heart:'s and :star:'s, my thanks.


Generalize the concept of attributes and metadata

I did some basic tests with docker containers and AWS S3/EC2 instances to make sure everything's working (especially the refreshing). It all seems to work well, and ls is reasonably fast (aside from the simultaneous refresh case). Could use some help in testing docker volumes + the kube plugin, since I'm not familiar with them.


Errors of using types in js files

after the update, errors of using types in js files began to be shown.
in settings coc-settings.json
{
"javascript.validate.enable": false
}
but that doesn't help.

because of this, the experience of working with legacy code written in flowjs was worsened
is it possible to somehow remove errors from js files without turning off the ts server?
there was no problem before the update.

Make sure your filetype is javascript or starts with javascript.

Seems VSCode have this bug as well.


When installing with --no-dev, post-install/update commands will not work

There is an hard dependency of the post update/install commands to faker library.
The problem is that library is only installed on dev mode.
The solution is either remove those commands dependency from faker library, or move the library from "require-dev" to "require".

Thanks for bringing this up @lferro9000. I'll take a look in a little while and check out your PR 👍

@lferro9000 Just fixed this with the above commit by sending it to the develop branch. Will be merged into the main project on the next release. Thanks again!


feat: add link to webcontainers.io

Closes https://github.com/stackblitz/tutorialkit/issues/194
Example of themed link: https://github.com/AriPerkkio/tutorial-vite-plugin/pull/17

Why isn't Cloudflare bot creating the preview here 🤔


Buttons in darkmode are illegible

If a sketch is started whilst in dark mode, the OPC buttons become illegible, since the text color is set to white and so is the button's background. Here's an example

Thank you for reporting. I fixed this issue. Let me know if you still experience it!


Allow the resource to read different mounts

It is possible to create different generic mounts (we use them to separate different customers for example)
This patch doesn't force the use of the secret mount anymore and let the user choose the mount he want to read

@hexedpackets if it's ok for you, I will modify the readme to add the secrets/ before the build/

Thanks for this, I'll update the README.


"target" not working, clicking behavior won't change

As title, I change all the "target" from "_blank" to "_self", but they still open in a new tab and won't open in the original tab.
I am running homer in docker on my Synology NAS ds920+

Hello. Please create an issue on the official homer GitHub  ( https://github.com/bastienwirtz/homer ). This issue is not related to my theme.

Thanks!


No default jsDelivr CDN file set

This package doesn't have a default file set. You can set it via jsdelivr, browser, or main field in package.json
Would you like me to submit a PR for this?

Absolutely, It would be great. Thank you.

pick aframe one as default, yes.
ok the 'main' for me.

fixed with PR https://github.com/jeromeetienne/AR.js/pull/731


take() not exported

Looking at the API Docs I see take() has been documented but it doesn't seem to be exported.
Is this intentional?

Hi, thanks for reporting this.
It looks like take() was documented but has not yet been implemented.  Stay tuned

It was just a case of outdated docs: the function previously known as take() was renamed itermerge()


IJulia won't start in Julia 0.6

I upgraded Julia to master a few days ago, and it seems to no longer be compatible with IJulia.  Here is the Jupyter log.
[W 12:35:35.833 NotebookApp] All authentication is disabled.  Anyone who can connect to this server will be able to run code.
[I 12:35:35.845 NotebookApp] Serving notebooks from local directory: /Users/Nick/projects/groupsync
[I 12:35:35.845 NotebookApp] 0 active kernels
[I 12:35:35.845 NotebookApp] The Jupyter Notebook is running at: http://localhost:8888/
[I 12:35:35.845 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[I 12:35:40.122 NotebookApp] 302 GET / (::1) 1.05ms
[I 12:35:44.131 NotebookApp] Creating new notebook in
[I 12:35:44.915 NotebookApp] Kernel started: eacff704-2f1d-4893-97bb-e5781d9d6b39
[W 12:35:44.933 NotebookApp] 404 GET /nbextensions/widgets/notebook/js/extension.js?v=20170123123535 (::1) 13.63ms referer=http://localhost:8888/notebooks/Untitled5.ipynb?kernel_name=julia-0.6
Starting kernel event loops.
[E 12:35:50.466 NotebookApp] Bad kernel_info reply
    Traceback (most recent call last):
      File "/usr/local/lib/python2.7/site-packages/notebook/services/kernels/handlers.py", line 164, in _handle_kernel_info_reply
        msg = self.session.deserialize(msg)
      File "/usr/local/lib/python2.7/site-packages/jupyter_client/session.py", line 859, in deserialize
        raise ValueError("Invalid Signature: %r" % signature)
    ValueError: Invalid Signature: '476cdf035239ecaa79ae8fce18ab2a4917d7ca8fcec5b6bddec435102c0f4a9f'
[E 12:35:50.506 NotebookApp] Uncaught exception GET /api/kernels/eacff704-2f1d-4893-97bb-e5781d9d6b39/channels?session_id=1B0A0CDD128C4E58BD36B99AE0E85A60 (::1)
    HTTPServerRequest(protocol='http', host='localhost:8888', method='GET', uri='/api/kernels/eacff704-2f1d-4893-97bb-e5781d9d6b39/channels?session_id=1B0A0CDD128C4E58BD36B99AE0E85A60', version='HTTP/1.1', remote_ip='::1', headers={'Origin': 'http://localhost:8888', 'Upgrade': 'websocket', 'Accept-Language': 'en-US,en;q=0.8', 'Accept-Encoding': 'gzip, deflate, sdch, br', 'Sec-Websocket-Version': '13', 'Host': 'localhost:8888', 'Sec-Websocket-Key': 'csTinX3yKC579TFjV4hB7w==', 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.95 Safari/537.36', 'Connection': 'Upgrade', 'Cookie': '_xsrf=2|c278b476|652c3bc99f03b17447897ddc3ac3a32e|1484791836; _ga=GA1.1.1314284765.1484858166', 'Pragma': 'no-cache', 'Cache-Control': 'no-cache', 'Sec-Websocket-Extensions': 'permessage-deflate; client_max_window_bits'})
    Traceback (most recent call last):
      File "/usr/local/lib/python2.7/site-packages/tornado/web.py", line 1425, in _stack_context_handle_exception
        raise_exc_info((type, value, traceback))
      File "/usr/local/lib/python2.7/site-packages/tornado/stack_context.py", line 314, in wrapped
        ret = fn(*args, **kwargs)
      File "/usr/local/lib/python2.7/site-packages/zmq/eventloop/zmqstream.py", line 191, in <lambda>
        self.on_recv(lambda msg: callback(self, msg), copy=copy)
      File "/usr/local/lib/python2.7/site-packages/notebook/services/kernels/handlers.py", line 296, in _on_zmq_reply
        msg = self.session.deserialize(fed_msg_list)
      File "/usr/local/lib/python2.7/site-packages/jupyter_client/session.py", line 859, in deserialize
        raise ValueError("Invalid Signature: %r" % signature)
    ValueError: Invalid Signature: '5bd3e4b881ec529468d5b5699184a412572fc3395e3f64b4e50666106ecf275d'
[E 12:37:40.331 NotebookApp] Uncaught exception GET /api/kernels/eacff704-2f1d-4893-97bb-e5781d9d6b39/channels?session_id=1B0A0CDD128C4E58BD36B99AE0E85A60 (::1)
    HTTPServerRequest(protocol='http', host='localhost:8888', method='GET', uri='/api/kernels/eacff704-2f1d-4893-97bb-e5781d9d6b39/channels?session_id=1B0A0CDD128C4E58BD36B99AE0E85A60', version='HTTP/1.1', remote_ip='::1', headers={'Origin': 'http://localhost:8888', 'Upgrade': 'websocket', 'Accept-Language': 'en-US,en;q=0.8', 'Accept-Encoding': 'gzip, deflate, sdch, br', 'Sec-Websocket-Version': '13', 'Host': 'localhost:8888', 'Sec-Websocket-Key': '+i6qjAyvhivqEQjOkiRp3w==', 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.95 Safari/537.36', 'Connection': 'Upgrade', 'Cookie': '_xsrf=2|c278b476|652c3bc99f03b17447897ddc3ac3a32e|1484791836; _ga=GA1.1.1314284765.1484858166', 'Pragma': 'no-cache', 'Cache-Control': 'no-cache', 'Sec-Websocket-Extensions': 'permessage-deflate; client_max_window_bits'})
    Traceback (most recent call last):
      File "/usr/local/lib/python2.7/site-packages/tornado/web.py", line 1425, in _stack_context_handle_exception
        raise_exc_info((type, value, traceback))
      File "/usr/local/lib/python2.7/site-packages/tornado/stack_context.py", line 314, in wrapped
        ret = fn(*args, **kwargs)
      File "/usr/local/lib/python2.7/site-packages/zmq/eventloop/zmqstream.py", line 191, in <lambda>
        self.on_recv(lambda msg: callback(self, msg), copy=copy)
      File "/usr/local/lib/python2.7/site-packages/notebook/services/kernels/handlers.py", line 296, in _on_zmq_reply
        msg = self.session.deserialize(fed_msg_list)
      File "/usr/local/lib/python2.7/site-packages/jupyter_client/session.py", line 859, in deserialize
        raise ValueError("Invalid Signature: %r" % signature)
    ValueError: Invalid Signature: 'e2cfadcbcc0c8699478a505c7b27e19f70860003b0a2616a5ce7fd18abc08a6c'

@malmaud, since the HMAC signature seems to be at issue, could this have been caused by #447?

So with a little more investigation, I notice that this error does not come up if I change kernel.json to start Julia with --depwarn=no (because Array(Float64, 1) is no longer valid, a ton of depwarns appear).  So it seems this is a problem with displaying a whole bunch of warning messages at once.

Weird, I wonder if it is a race condition of some kind?
In any case, the deprecation warnings should disappear as we get closer to a 0.6 release and packages get updated.

I checked; the error on julia master is the same even before the MbedTLS PR.

I'm a little puzzled - even after checking out the master of ZMQ.jl, thereby eliminating the dep warnings, the error persists. Something with Julia master may be affecting IJulia and/or ZMQ in a subtle way.

IJulia has been working on 0.6 for a while now, so presumably this can be closed.


No mounting solution for the default snap-in potentiometer

The potentiometer that comes with the driver board is a "snap-in" mount, intended to be soldered into a board.  There is no easy way to mount the snap-in potentiometer in the case.  The optional potentiometer is a board-mount with a nut and washer and is appropriate for mounting in the case.
As such, you might want to remove the "Optional" from the optional potentiometer and just make it the default?

Here's an alternate panel-mount knob from DigiKey which should arrive faster than AliExpress (no knob however)
https://www.digikey.com/en/products/detail/tt-electronics-bi/P092N-QC15AR20K/2408863


Make Pretender importable in node

👋 Hey all!
As we're getting Mirage to work in different environments, Pretender not being importable is causing us some headaches.
I know that having Pretender work in node is one thing, and that increases the scope of this project and requires more resources for maintenance, but is having it importable something that we could consider committing to?
If so we can take on the work & add some test coverage. That way Mirage can always "just import" Pretender and then decide at run-time whether to instantiate it.
Here's an older issue for reference: https://github.com/pretenderjs/pretender/issues/192
cc @trek @stefanpenner

@samselikoff sounds good, let's just ensure it is also tested so it does not regress.

sweet, we're going to work on this today

@stefanpenner any chance you could shed light on iife-wrapper? First time I'm seeing this (though I'm new to rollup & configuring builds). Seems like the self/iife there is what's causing the issue.


Increase test coverage of crates/runtime crate.

Runtime Testing Reference:

https://github.com/PureStake/moonbeam/tree/master/runtime/moonbeam/tests

i can work on this! 🛠

hey @jobez are you still willing to tackle this issue ?

yes! is it alright to still work on this now that it is closed or shall i look for another issue?

hey @jobez are you still willing to tackle this issue ?

yes! is it alright to still work on this now that it is closed or shall i look for another issue?

It’s fine. I reopened it

Thank you sir! Will get on it 🖖

Hey abdel, I am still on it.

Hey abdel, I am still on it.

sounds good!

No ETA yet. I am still kinda understanding madara. But, I am on it

Is this still open and relevant?


Question: Would like to know how to create internal only LoadBalancer and change the default elb to nlb

Hey,
I'm deploying clickhouse-operator on EKS and using the Altinity ClickHouseInstallation.

i want to create the clickhouse Loadbalancer Service as "internal" instead of "internet-facing"
i want the Loadbalancer Service to be created as NLB instead of ELB.

cheers

I just found my solution using the serviceTemplate, https://github.com/Altinity/clickhouse-operator/blob/0926d00a22be23499d633ce455bc5473a9620d15/docs/chi-examples/99-clickhouseinstallation-max.yaml#L264
thanks


Upgrade sass to namespaced built-ins

Recent versions of sass introduce namespaced built-ins: sprite templates in this project use the nth function, which now should be requested with a @use "sass:list"; at the beginning of the file, and then referred to with list.nth.

Thanks for writing in! I'm struggling to find the "should be requested" piece in the documentation (found the "no conflict" benefit, but we aren't defining anything new for lists?). Can you link me to that?
One big concern I have is this only seems to be supported by Dart Sass, which breaks support for both LibSass and Ruby Sass.
https://sass-lang.com/documentation/modules/list/

@twolfson The templates are using the nth function, which is in the newer versions of sass part of the "list" built-in module as per https://sass-lang.com/documentation/modules/list/
By requested, I meant that the function won't be just used by itself as before, but there should be the addition of the @use "sass:list"; declaration at the beginning and the call with list.nth namespacing.
I'm not sure how it would be possible to support both syntaxes. Maybe by having a way to select which templates one would like to use with "sass import" or with "sass modules"?

Got it. I somehow read the top of https://sass-lang.com/documentation/values/lists/ and assumed nth was still documented without the list. syntax
Yea, it's been a while since I've maintained this library, and there's a lot of Sass/SCSS templates (3x documented + 3x retina variations).
How about we repurpose the functions key they all share and change its behavior to an enum? (i.e. function: true implies legacy variation, and functions: "module" for this new behavior)

@twolfson The "functions" options could work since "nth" is only used in the mixins and not in the variables, otherwise it would be strange

Hmm, yea -- good point. I was trying to be too clever.
Let's add a useModules: Boolean key and be done with it (default: false for backwards compatibility)
Do you have bandwidth to pick this up? (I'm glad to handle the documentation part, but lack time for the library portion and tests)


[Provides] Dependency Satisfication

This is related to #63 but may be useful on its own.
If we want to bind some dependency to Property or Method of some class, we can describe factory binding.
	DI.Setup()
	  .Bind().To<ServiceProvider>()
	  .Bind<IService>().To(
		   context =>
		   {
			   context.Inject(out ServiceProvider provider);
			   return provider.Service;
		   });

It is suggested to simplify the description of such dependencies.
Add the [Provides] attribute to the class member.
public class ServiceProvider
{
	[Provides]
	public IService Service => new Service();
}

And simplify the compositing description.
	DI.Setup()
	  .Bind().To<ServiceProvider>();

The generator should automatically realize that this instance provides a dependency.
This API involves modifying an existing class.
Therefore, it is suggested to introduce Fluent API.
	DI.Setup()
	  .Provides<ServiceProvider>(provider => provider.Service);

It's a simplification of manually describing factories and the equivalent of the bindings mentioned at the very beginning.
But the suggested API assumes that the property satisfies all the dependencies that the property type can provide.
If it can be implemented.

The suggested API can be used for bindings and class arguments .Arg<ServiceProvider>(“provider”). It can also be used for root arguments .RootArg<ServiceProvider>(“provider”), where the provider parameter will be added to the root if the root requires a dependency provided by the module.

The BindAttribute attribute was added for this task #64:
internal class BindAttribute : Attribute
{
    public BindAttribute(
        Type type = default(Type),
        Lifetime lifetime = Lifetime.Transient,
        params object[] tags) { }
}

It allows you to specify that bindings will be automatically added to the marked members of a class that participate in bindings. I think it has the same functionality as the [ProvidesAttribute] proposed here.
As for the API Provides<ServiceProvider>(provider => provider.Service) is a good idea, we should not forget about lifetime, tags and multiple contracts. Basically you would need to do something like Bind() ... ToMember<T>(instance => instance.Member).
I suggest to add ToMember() similar as To(), I think this way the API will look more coherent as it will allow to add multiple contracts, lifetime and tags.

Examples:

Simplified factory
Bind attribute
Bind attribute with lifetime and tag
Bind attribute for a generic type


Support C# Code Snippets to generate code.

Using code snippets as starting point for code generation can make the code generator much easier to read/maintain. Writing code with the SyntaxTreeFactory can be hard.
So how does should this work?
We have some file (embedded, or disk)
public struct @Name
{
    public @Name(int count) => Count = count;
    public int Count { get; }
}

With some simple generator files. What kind of transform you want to apply should be as free as possible, so let the generator decide for its own. In this example its a simple string replace.
class SimpleCodeSnippet : CSharpCodeSnippet<TransformArguments>
{
    public SimpleCodeSnippet(string text)
        : base(text, "test.cs", null) { }

    protected override string TransformText(TransformArguments arguments)
    {
        return Text.Replace("@Name", arguments.Name);
    }
}
class TransformArguments
{
    public string Name { get; set; }
}

This can be used like this:
SimpleCodeSnippet snippet = GetCodeSnippet(); // embedded resource, disk, whatever.
var syntax = await snippet.ParseAysnc<StructDeclarationSyntax>(new TransformArguments { Name = "TestStruct" });

Hi! It is a very interesting idea, however I don't think it has a place in this project. I' much more likely see this as an actual plugin project.
This project only delivers bare minimum framework to run your generators with.
Of course, if such a plugin would be written, we could feature it as a good starting point.

@AArnott what do you think?

I agree.


Make images legible on a browser with a dark background

This is how the image looks in dark mode, is it good? or do you want to edit it? (I use dark mode always, and thus noticing some texts slightly faint, its okay for me though). Also the background of hash is not white
Originally posted by @sanvenDev in https://github.com/hyperledger-labs/weaver-dlt-interoperability/pull/259#discussion_r877848864

Fixed in #354 .


Bride Info Component

Karadi was assigned this component

Part of the booking sequence, not really a component. Closing.


whole file "use strict" not working anymore

Our code that works fine with TS 1.7
_references.ts contains:
/// <reference path="useStrict.ts"/>
/// <reference path="file1.ts"/>
/// <reference path="file2.ts"/>
...

The useStrict.ts file just contains "use strict"
The other files just use namespaces, no modules.
All these typescript files are compiled into a single large javascript file, we're not using a module system.
Typescript 1.8.5 breaks the generated JS:
Expected JS
"use strict";
var __extends = (this && this.__extends) || function (d, b) {
    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
    function __() { this.constructor = d; }
    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
//... code from file1
//... code from file2

Actual JS
var __extends = (this && this.__extends) || function (d, b) {
    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
    function __() { this.constructor = d; }
    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
"use strict";
//... code from file1
//... code from file2

Since now "use strict" is not the very first statement anymore, it is completely ignored by the JS runtime.

This is not a supported scenario. the fact that it worked as described was caused by a bug in the implementation of emitting __extends helpers. your files are not parsed in strict mode because the first file in the list had a "use strict".
having said that, we should figure out a way to make this scenario work.

Interestingly, pasting the following code in the Typescript playground does result in the "use strict" to be moved above the __extends declaration...
"use strict";

namespace Foo {
	export class Animal {

	}
}

namespace Foo {
	export class Horse extends Animal {

	}
}

Compiling this code placed in a single file with tsc.exe also results in the correct output code.
However, when the --out compiler option is passed, incorrect code is generated.

It seems that passing -module none does work correctly for the example above  (TSC v1.8.1)
In the compiler's emitter.ts source code, indeed the following code is present:
                // Emit helpers from all the files
                if (isBundledEmit && modulekind) {
                    forEach(sourceFiles, emitEmitHelpers);
                }

However it does not work in our large code base, compiled from visual studio. Investigating this further

Turns out this is a bug in the Microsoft.TypeScript.targets, it contains the following line:
    <TypeScriptBuildConfigurations Condition="'$(TypeScriptModuleKind)' != '' and '$(TypeScriptModuleKind)' != 'none'">$(TypeScriptBuildConfigurations) --module $(TypeScriptModuleKind)</TypeScriptBuildConfigurations>

but the default module-kind of TSC is ``ModuleKind.CommonJS```.
So 'none' was never passed to TSC at all!
Just removing the check for none fixes the problem:
    <TypeScriptBuildConfigurations Condition="'$(TypeScriptModuleKind)' != ''">$(TypeScriptBuildConfigurations) --module $(TypeScriptModuleKind)</TypeScriptBuildConfigurations>

@Ziriax thanks for tracking that down! Logged #8062

Declining due to lack of demand.


CUDA is really slow compared to kobold.cpp I compiled from AUR, same backend

All other backends run at speed I expect but CUDA is so slow its like its running on oldest Pentium, maybe wrong compile flags or something?

nvcc --forward-unknown-to-host-compiler -use_fast_math -Wno-deprecated-gpu-targets -arch=all -DGGML_CUDA_DMMV_X=32 -DGGML_CUDA_MMV_Y=1 -DK_QUANTS_PER_ITERATION=2 -DGGML_CUDA_MMQ_Y=64 -I. -I./common -I./include -I./include/CL -I./otherarch -I./otherarch/tools -I./otherarch/sdcpp -I./otherarch/sdcpp/thirdparty -I./include/vulkan -O3 -DNDEBUG -std=c++11 -fPIC -DLOG_DISABLE_LOGS -D_GNU_SOURCE -DGGML_USE_LLAMAFILE -pthread -s -Wno-multichar -Wno-write-strings -Wno-deprecated -Wno-deprecated-declarations -pthread -DGGML_USE_CUDA -DSD_USE_CUBLAS -I/usr/local/cuda/include -I/opt/cuda/include -I/opt/cuda/targets/x86_64-linux/include  -Wno-pedantic -c ggml-cuda/acc.cu -o ggml-cuda/acc.o
these are the flags kobold compiles with


V3.3.0

ezmsg.core v3.3.0

Better extension packaging (with consistent naming for single-file extensions)
Better flow control with asyncio.sleep(0) after every publish.  Note: this halves performance of the perf test, but maintains flow without constant backpressure warnings for systems that publish really fast
New message utilities in ezmsg.util

ezmsg.util.messages.axisarray -- AxisArray fully fleshed out

Includes xarray-like sel and isel functionality for slices along dimensions

Finally removed StampedMessage
ezmsg.util.terminate -- TerminateOnTotal (messages received) and TerminateOnTimeout units introduced
ezmsg.util.messagecodec -- Refactored JSONEncoder and JSONDecoder for ezmsg.util.messagelogger. This codec now properly serializes/deserializes message dataclasses just like pickle, but with a human-readable plaintext message log format!  NB. MessageEncoder and MessageDecoder moved here from ezmsg.util.messagelogger and the json file format has changed ever-so-slightly (and backward compatibly) to support this.
ezmsg.util.messagereplay -- Introduces a MessageReplay unit that can deserialize and publish messages from message files written by MessageLogger.  Also introduces a MessageCollector that just saves all received messages to a list in the STATE; can be accessed after execution completes from a notebook if run in the main process.
ezmsg.util.messagequeue -- HUGE enhancement that allows ezmsg systems to run with "squishiness" and "leakiness" -- allowing your system to accumulate a backlog of messages (that leaks if/when you want) to prevent a slow downstream unit from backing up your whole system.

ez.run

force_single_process keyword argument which tries to run provided components all in one process -- particularly useful for notebook operation
Can now pass multiple components to run, and connect them directly

GraphServer and SHMServer Enhancements

Servers are now run in threads with dedicated event loops as opposed to separate processes.  This dramatically speeds up startup on Windows
Servers will check for $EZMSG_GRAPHSERVER_ADDR and $EZMSG_SHMSERVER_ADDR (strings formatted as hostname:12345) environment variables -- and if defined, ezmsg will force a connection to these addresses.
Reserved ports for GraphServer, SHMServer are 25978 and 25979 respectively.  If the environment variables are not defined, ezmsg will first check these reserved ports on <IP_ADDRESS> and try to connect to servers running there.  the ezmsg start command starts servers on the default ports and is a handy way for multiple systems on the same PC to dynamically interact with each-other
If the environment variables are not defined and there are no servers running on the default ports, ezmsg will force-start new servers on unoccupied ports starting from 10000 (or $EZMSG_SERVER_PORT_START) -- but avoiding default ports for the services.

Command Line Changes

SHMServer and GraphServer can no-longer be "SHUTDOWN" remotely; as such -- removed ezmsg shutdown
ezmsg start now reports forked PID
ezmsg graphviz writes a DOT-formatted graph specification to stdout; can be piped to graphviz to visualize the current running graph.

Fixed bugs

Moved __version__ attribute to ezmsg.version fix pip install
"Single-process-mode" isn't special anymore; main process is always used for execution of one group of units
ezmsg will always start a new threaded eventloop for tasks; because of @ez.main code
Better KeyboardInterrupt handling (especially on Windows)
Unit.Initialize() and creation of State is now called from the task thread (and asyncio synchronization primitives will automatically be associated with the correct event loop
Significantly cleaned up code pertaining to connections to the GraphServer and SHMServer; reduced redundant code between these services significantly as well.
No-longer forcing WindowsSelectorEventLoop on Windows for asyncio.
All leaked ResourceWarnings resolved; all asyncio operations now threadsafe-ly implemented.
Resolved ConnectionResetError and BrokenPipeError on shutdown.
Settings now decorated with @dataclass_transform and type-checking should resolve settings fields appropriately.

This required introducing ezmsg's FIRST non-stdlib dependency; typing_extensions which is required to backport this typing PEP to Python 3.8. typing_extensions has no external deps and is pure-python; unlikely to break in the future.

Settings classes no-longer automatically generate unsafe_hash functions.  This behavior can be reintroduced by creating your own dataclass definition with unsafe_hash=True, frozen=True and inheriting from Settings.
Tasks/Publishers/Subscribers/Threads, etc.. now have attributes that are less likely to collide with user-code
Deprecated ezmsg.testing.terminate

Extensions
ezmsg.sigproc v1.2.0

All signal processing modules rewritten to operate on AxisArrays

All units allow you to specify named axis to operate on (usually time axis)

New spectrum (FFT) unit in ezmsg.sigproc.spectral
Window now allows newaxis accumulation for batching
TimeseriesMessage deleted
TSMessage is now a function that returns a properly formatted AxisArray

ezmsg.websocket v1.1.1

__version__ attribute
Moved units from ezmsg.websocket to ezmsg.websocket.units
Added a pyproject.toml

ezmsg.zmq v1.1.1

__version__ attribute
Moved units from ezmsg.zmq.sender and ezmsg.zmq.poller to ezmsg.zmq.units
Added a pyproject.toml

@griffinmilsap I'm starting to think that ezmsg shutdown should still be included with a confirmation step to make sure the user is doing so intentionally. Additionally, it may be possible to check how many graph connections are still active at that time and notify the user before confirmation prompt.
The alternative is that a user may still maliciously kill a running server with a kill -9 command, so I'm not sure exactly what we are gaining by removing this command entirely.


The new DownloadOptions API is confusing

you can either do the "struct style"
let mut opts =  DownloadOptions::new();
opts.keep_unwritten_bytes = true;
flash(opts)

or the "builder style"
flash(DownloadOptions::new().keep_unwritten_bytes(true));

IMO there should be only one way of doing things. Makes the API easier to understand, makes code easier to read since it all does it the same way.
Also, builders typically allow you to not use chaining, but not this one:
let mut opts =  DownloadOptions::new();
opts.keep_unwritten_bytes(true); // consumes instead of mutating
flash(opts) // opts is moved out

IMO the best style is "struct style": it gives a quite ergonomic API and requires zero boilerplate on the lib side. Builders made sense when Rust didn't have non_exhaustive.

More on the line of "there is two ways of doing the same thing": ::new() and ::default() do the exact same thing. IMO there should be only ::default().

Personally I prefer new over default, tho default would be the proper rustic style; so I am ok with having just default. Tho I see no harm in having new as an alias. Most libs do it afaik :)
As for the public fields vs builder style, yes, I believe, if we choose the builder style, we should not make the fields public. In any case, I wont be in favor of either.
Concerning the consuming setters: This is actually how a proper builder works and so do most libs. So you can chain all the builder methods which is the big adavantage of the pattern :) You'd use it like so:
flash(
    DownloadOptions::new()
        .keep_unwritten_bytes(true)
)

You can now see it's main advantage of using a PORS. Tho, with a PORS implementing default you could do:
flash(
    DownloadOptions {
        keep_unwritten_bytes: true,
        ..Default::default()
    }
)

which basically achieves the same. In the end it boils down to whether the options should be easily mutable or not.
To get back to the original point of this last discourse: If the builder had non-chainable methods (&mut self) it looses its entire purpose and it's not really a builder imo. Of course, Rust is kind of a special case here, because in GCd languages, you get both in one. With Rust, this is unfortunately not possible :)
Anyways, long story short, I do not really any problems with the builder here, but I also feel your opinion. I do not see what non_exhaustive has to do with this tho, as you always have to well-define all fields of a struct, even with non_exhaustive; or what bit of the story do I miss?

Personally I prefer new over default, though default would be the proper rustic style; so I am ok with having just default. Though I see no harm in having new as an alias. Most libs do it afaik :)

No strong opinion on this one, I guess it's fine as long as new documents it returns the same as `default.

Concerning the consuming setters: This is actually how a proper builder works and so do most libs.

Builders usually take &mut self and return &mut Self so you can chain if you want to, but still have the option to not chain. If you're forced to chain, conditionally setting fields becomes super awkward, while it's super easy with a PORS.
let mut opts = DownloadOptions::new();
opts.keep_unwritten_bytes = true;
if nuke_it {
    opts.do_chip_erase = true;
}
flash(opts)

I do not see what non_exhaustive has to do with this

When rust didn't have non_exhaustive, the way to do "options" structs while allowing adding new fields in a backwards-compatible way was to do a builder. This is one of the reasons builders have become popular.
Now that non_exhaustive is a thing, a non_exhaustive PORS with default/new and public fields is more idiomatic IMO. Builders don't have any advantages. Being able to chain setters is a matter of taste, some like it, some don't. It's not intrinsically better.


PyGame

Fine. I'll do it myself.
SteamDB app page links to a few games using this
https://steamdb.info/app/951360/
https://steamdb.info/app/550900/
https://steamdb.info/app/442210/
https://steamdb.info/app/918170/
https://steamdb.info/app/2363270/
https://steamdb.info/app/660340/
https://steamdb.info/app/1364570/
Brief explanation of the change
Find PyGame by it's directories and base file.

Found another one.
https://steamdb.info/sub/93793/

Pull my finger.


Solution: Solve DST Bug

Fix for #321
I don't really like to test via the internal state of a GenServer. Has someone an idea how to test without it?

The migitation of the error is not very nice. If someone comes up with a better idea, I'd love to hear that.

@maennchen thanks for working on that! Even if the solution might not be elegant, it is more important that we can deliver a fix that helps to avoid problems next week. If someone comes up with a better solution, another PR can follow.


CAGRA: reduce argument count in select_and_run() kernel wrappers

A small change that reduces the number of arguments in one of the wrapper layers in the detail namespace of CAGRA. The goal is twofold:

Simplify the overly long signature of selet_and_run (which has many instances)
Give access to all search parameters for future upgrades of the search kernel

This is to simplify the integration (and review) of the persistent kernel (https://github.com/rapidsai/cuvs/pull/215).
No performance or functional changes expected.

Thanks for noticing this, Tamas! I've updated the *-ext.cuh files and filed a bug for these files not being used https://github.com/rapidsai/cuvs/issues/242

/merge


Fix console color and bump LTS baseline

Hi,
This PR fix console color for issue https://github.com/jenkinsci/material-theme-plugin/issues/16 and https://github.com/jenkinsci/material-theme-plugin/issues/18 and bump LTS baseline

[x] Make sure you are opening from a topic/feature/bugfix branch (right side) and not your main branch!
[x] Ensure that the pull request title represents the desired changelog entry
[x] Please describe what you did
[x] Link to relevant issues in GitHub or Jira
[x] Link to relevant pull requests, esp. upstream and downstream changes

Resolved conflicts

Hi!
Any updates ?
Regards,

ping @timbrown5

ping @timbrown5

@timbrown5 could you consider a new release containing this fix?

+1 for a release. Thanks!


Restricted Combine row monitoring

I am not sure if this was intended but the following README.md example for monitoring row-level changes does not work anymore since the access level of these properties got changed to internal in 4b822c0.
let listener = Post.changePublisher(in: db).sink { change in
    print("Post IDs changed: \(change.primaryKeys ?? "all")")
    print(" Columns changed: \(change.columnNames ?? "all")")
}

Thanks! Fixed.


Tidy monorepo

[ ] Move chaincash_* crates to a crates/ directory to keep clear separation from other directories
[ ] Use [workspace.dependencies] in root Cargo.toml to ensure crates use the same version of libraries

closed by #14


Remove radiojavan.com

radiojavan.com can't be accessed from Iranian IP and should be remove from bypass list (e.g. iran.dat).

thanks for the report.


Typed record patterns

Closes #4

@Maskhjarna can't assign you as a reviewer -- is it some privacy settings or it's on my end?


chore(main): release 0.14.2

:robot: I have created a release beep boop
0.14.2 (2024-06-23)
Bug Fixes

bump appVersion through separate PR (#428) (bee3d35)

This PR was generated with Release Please. See documentation.

:robot: Created releases:

0.14.2
:sunflower:


Update AddPushServiceProviderToService method to prevent duplicate se…

Currently, one service is allowed to have multiple psp during ADDPSP.  Notice there is comment mentioned that it's a feature to allow single service has multiple psp in different push service type. Unfortunately, sometimes a user might add a service psp in same push service type,  since there is no warning message for that, under this situation, no one even know there are multiple service<->psp pair in same push service type, and only the very first one returned in getting service will be working in runtime. That will cause trouble in subscribe and push operation.   It results in some issues and hard to discover the root cause.  So introducing this fix to prevent a user to add redundant service<->psp in same push service type.
One method AddPushServiceProviderToService(...) in pushdb.go is updated to fix this issue. And psp in different push service type is still allowed to add under the same service.

link to issue #197

#201 (the newer version of this PR) has been merged with patches
See https://github.com/uniqush/uniqush-push/commits/cfc71ea4b9f90dc0f149a7ad62d4c0cd8ff6ce9f


switch all files to use file scoped namespaces

this will probably cause merge conflicts for the other prs.
could do this later.

Thank you for this too! Saves a whole indentation out.


The package.json "postinstall" task does not find the target file when not using the dev dependencies

I use autonumeric from a node app. Therefore my deps are loaded with npm. I use node 6.5 and inside my package.json autonumeric is referenced. npm install the fails with an error when trying to run the postinstall script.
Please fix as this makes the current version unusable for my project.

One more thing: the package.jsonis here: https://github.com/softwerkskammer/Agora/blob/master/package.json
Old version of autonumeric, of course. :)

Hello @leider , what is the error message exactly?
Do you have a way so we can reproduce it?
Have you tried with autoNumeric 2.0.0? It just has been released!

I tried cloning your repo and ran npm install, but instantly stumbled upon another error :
» npm install
npm WARN engine<EMAIL_ADDRESS>wanted: {"node":">=6"} (current: {"node":"4.7.2","npm":"1.4.21"})
npm WARN optional dep failed, continuing<EMAIL_ADDRESS>
><EMAIL_ADDRESS>install /home/user/dev/Agora/node_modules/phantomjs-prebuilt
> node install.js

module.js:327
    throw err;
    ^

Error: Cannot find module 'is-property'
    at Function.Module._resolveFilename (module.js:325:15)
    at Function.Module._load (module.js:276:25)
    at Module.require (module.js:353:17)
    at require (internal/module.js:12:17)
    at Object.<anonymous> (/home/user/dev/Agora/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object
-property/index.js:1:80)
    at Module._compile (module.js:409:26)
    at Object.Module._extensions..js (module.js:416:10)
    at Module.load (module.js:343:32)
    at Function.Module._load (module.js:300:12)
    at Module.require (module.js:353:17)
    at require (internal/module.js:12:17)
npm WARN This failure might be due to the use of legacy binary "node"
npm WARN For further explanations, please read
/usr/share/doc/nodejs/README.Debian

npm ERR<EMAIL_ADDRESS>install: `node install.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>install script.
npm ERR! This is most likely a problem with the phantomjs-prebuilt package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node install.js
npm ERR! You can get their info via:
npm ERR!     npm owner ls phantomjs-prebuilt
npm ERR! There is likely additional logging output above.

npm ERR! System Linux 4.8.0-2-amd64
npm ERR! command "/usr/bin/nodejs" "/usr/bin/npm" "install"
npm ERR! cwd /home/user/dev/Agora
npm ERR! node -v v4.7.2
npm ERR! npm -v 1.4.21
npm ERR! code ELIFECYCLE
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR!     /home/user/dev/Agora/npm-debug.log
npm ERR! not ok code 0

Yes it's v2 final.
You need to run the stuff on node 6.5 or maybe higher.

Am 26.01.2017 um 01:55 schrieb Alexandre<EMAIL_ADDRESS>I tried cloning your repo and ran npm install, but instantly stumbled upon another error :
» npm install
npm WARN engine<EMAIL_ADDRESS>wanted: {"node":">=6"} (current: {"node":"4.7.2","npm":"1.4.21"})
npm WARN optional dep failed, continuing<EMAIL_ADDRESS>
<EMAIL_ADDRESS>install /home/user/dev/Agora/node_modules/phantomjs-prebuilt
node install.js

module.js:327
throw err;
^
Error: Cannot find module 'is-property'
at Function.Module._resolveFilename (module.js:325:15)
at Function.Module._load (module.js:276:25)
at Module.require (module.js:353:17)
at require (internal/module.js:12:17)
at Object. (/home/user/dev/Agora/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object
-property/index.js:1:80)
at Module._compile (module.js:409:26)
at Object.Module._extensions..js (module.js:416:10)
at Module.load (module.js:343:32)
at Function.Module._load (module.js:300:12)
at Module.require (module.js:353:17)
at require (internal/module.js:12:17)
npm WARN This failure might be due to the use of legacy binary "node"
npm WARN For further explanations, please read
/usr/share/doc/nodejs/README.Debian
npm ERR<EMAIL_ADDRESS>install: node install.js
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>install script.
npm ERR! This is most likely a problem with the phantomjs-prebuilt package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node install.js
npm ERR! You can get their info via:
npm ERR!     npm owner ls phantomjs-prebuilt
npm ERR! There is likely additional logging output above.
npm ERR! System Linux 4.8.0-2-amd64
npm ERR! command "/usr/bin/nodejs" "/usr/bin/npm" "install"
npm ERR! cwd /home/user/dev/Agora
npm ERR! node -v v4.7.2
npm ERR! npm -v 1.4.21
npm ERR! code ELIFECYCLE
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR!     /home/user/dev/Agora/npm-debug.log
npm ERR! not ok code 0
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.

Ok so, without any error message, I modified my Debian testing installation since it does not currently provide a higher node version than 4.7.2., so here is what I did :
git clone https://github.com/softwerkskammer/Agora.git && cd Agora
yarn install # fails with "error<EMAIL_ADDRESS>The engine "node" is incompatible with this module. Expected version ">=6"."

then I ugraded node with :
npm install -g n
n stable
ln -sf /usr/local/n/versions/node/7.4.0/bin/node /usr/bin/node
mv /usr/bin/nodejs /usr/bin/nodejs_original
ln -s /usr/bin/node /usr/bin/nodejs

...and finally nodejs --version return v7.4.0.
Now, when I try to npm install your project, I get this error message :
npm install
module.js:472
    throw err;
    ^

Error: Cannot find module 'npmlog'
    at Function.Module._resolveFilename (module.js:470:15)
    at Function.Module._load (module.js:418:25)
    at Module.require (module.js:498:17)
    at require (internal/module.js:20:19)
    at /usr/share/npm/bin/npm-cli.js:18:11
    at Object.<anonymous> (/usr/share/npm/bin/npm-cli.js:86:3)
    at Module._compile (module.js:571:32)
    at Object.Module._extensions..js (module.js:580:10)
    at Module.load (module.js:488:32)
    at tryModuleLoad (module.js:447:12)

I'ver created a showcase with node versions 4,6,7:
https://travis-ci.org/leider/autonumeric-showcase
It fails with any of these as you may see.

The problem is that you call a script from postinstall. Your script will definitely NOT WORK on people's installations that only "depend" your module. :)
Easy fix: just remove the postinstall section.

btw, codes is there: https://github.com/leider/autonumeric-showcase

Thank you for providing a clear example on how this fails @leider!
Removing the postinstall line would perhaps resolve this specific case, but that would also reverse the fix done in that commit.
This line was added to workaround the fact that yarn (which is what we use instead of npm for a few weeks now) was not calling install.js in the phantomjs-prebuilt package correctly on installation.
We'll have to find a way to make it work in both cases.

1.) Sounds like a (bad) joke:

you insert a postinstall script inside package.json, a file from the npm project
this leads to the fact that it can not be used from npm anymore

2.) What do I as a "client" or "user" of your software care about phantomjs. Maybe I do not even want to have that installed. - I guess you want to run some tests. You could move the call to before test execution.
3.) This sounds like a weird workaround. You are blaming yarn for something wrong. Did you dig deeper in that direction? - I mean, requiring phantom-prebuild should lead to a working prerequisite.  After all this is not a very exotic setup.
4.) Until then, please change the readme to clearly state that requiring v2.0.0 from within npm will not work.

I'll dismiss the last angry comment that miss the point, and rely only on the first exchanges which were cordial and semi-productive ;)
I pushed a fix that prevent the script to fail, even when you do not have the dev dependencies.
Hopefully, karma-phantomjs-launcher and/or yarn will fix that bug and we'll be able to remove this hack!

Hi Alexandre:  Has the change that fixed this been released to as an npm module?  I tried to install today, and I am getting the same errors as the OP.  npm is attempting to pull version 2.0.3.  Is that the correct package?

Hi Alexandre:  just FYI:  I tried updating my machine to the latest version of node/latest npm for my O/S (windows, node: 6.9.4, npm 4.1.2),
I also noticed that the release has been updated to 2.0.4, but it's still erring.

Hi @jsmarsch,
What error message are you seeing exactly?
On my end I tested to create new projects by using yarn and npm like that :
mkdir /tmp/test-an && cd /tmp/test-an
yarn init #name 'test-an', `enter` for all other info
yarn add autonumeric

and
mkdir /tmp/test-an && cd /tmp/test-an
npm init #name 'test-an', `enter` for all other info
npm install autonumeric

and it worked for both.
Did I miss something else?
The last version is currently v2.0.4 (somehow the dist folder got erased before I published 2.0.3, whoops ;)).
Let's fix this once and for all so we can go back hacking v3.0.0 :)

Apparently this fix only worked for Unix-based environments, but not for Windows.
I'll keep this issue closed since @jsmarsch opened a windows-specific one.
Any follow-up regarding this issue (if it concern Windows), should be done in #384.

Hi Alexandre:
I'm on a Windows machine, so I tried your tests 2 ways:  once with the Windows Command interpreter (cmd.exe), and once with gitbash, which is a bash console installed with git for windows.
In both cases, I got the same error.  Here's what I got:
427 error Windows_NT 6.1.7601
428 error argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Users\\jmarsch\\AppData\\Roaming\\npm\\node_modules\\npm\\bin\\npm-cli.js" "install" "autonumeric"
429 error node v6.9.4
430 error npm  v4.1.2
431 error code ELIFECYCLE
432 error<EMAIL_ADDRESS>postinstall: `test -e node_modules/phantomjs-prebuilt/install.js && node node_modules/phantomjs-prebuilt/install.js; true`
432 error Exit status 1
433 error Failed at the<EMAIL_ADDRESS>postinstall script 'test -e node_modules/phantomjs-prebuilt/install.js && node node_modules/phantomjs-prebuilt/install.js; true'.
433 error Make sure you have the latest version of node.js and npm installed.
433 error If you do, this is most likely a problem with the autonumeric package,
433 error not with npm itself.
433 error Tell the author that this fails on your system:
433 error     test -e node_modules/phantomjs-prebuilt/install.js && node node_modules/phantomjs-prebuilt/install.js; true
433 error You can get information on how to open an issue for this project with:
433 error     npm bugs autonumeric
433 error Or if that isn't available, you can get their info via:
433 error     npm owner ls autonumeric
433 error There is likely additional logging output above.
434 verbose exit [ 1, true ]

One additional note on the error info above:  I did run as an admin, and, at least after running the commands, there was no node_modules folder , so either the rmdir command succeeded, or the directory never got created.

Thanks for giving more details about this error @jsmarsch.
Would it be possible to move those comments to the other issue please?

Sure -- sorry!

FYI: this works now. Thanks a lot!
P.S.: I haven't been angry.


service/dap: Add buildFlags error checking and tests in launch requests

I used the flags to modify something within the target program that I could test for, so the program panics and fails the test if the condition is not true. No existing fixture has such logic. This is what the failure looks like on the command line:
$ go build buildflagtest.go
$ ./buildflagtest
panic: global main.Hello not set via build flags

goroutine 1 [running]:
main.main()
	/Users/polina/delve/_fixtures/buildflagtest.go:11 +0xd8

And this is what it would look like from the test:
--- FAIL: TestLaunchRequestWithBuildFlags (3.79s)
panic: interface conversion: dap.Message is *dap.StoppedEvent, not *dap.TerminatedEvent [recovered]
	panic: interface conversion: dap.Message is *dap.StoppedEvent, not *dap.TerminatedEvent

goroutine 7 [running]:
testing.tRunner.func1.1(0x135bf00, 0xc0001e0540)
	/usr/local/go/src/testing/testing.go:941 +0x3d0
testing.tRunner.func1(0xc000128360)
	/usr/local/go/src/testing/testing.go:944 +0x3f9
panic(0x135bf00, 0xc0001e0540)
	/usr/local/go/src/runtime/panic.go:967 +0x166
github.com/go-delve/delve/service/dap/daptest.(*Client).ExpectTerminatedEvent(0xc000210040, 0xc000128360, 0xc0004299f0)
	/Users/polina/delve/service/dap/daptest/client.go:98 +0x8b
github.com/go-delve/delve/service/dap.runDebugSession(0xc000128360, 0xc000210040, 0xc00022fd80)
	/Users/polina/delve/service/dap/server_test.go:341 +0xbf
github.com/go-delve/delve/service/dap.TestLaunchRequestWithBuildFlags.func1(0xc000210040, 0x13ccb58, 0xd, 0xc00002c640, 0x47, 0xc000026390, 0x2e, 0xc0000247a0, 0x1d)
	/Users/polina/delve/service/dap/server_test.go:381 +0xa6
github.com/go-delve/delve/service/dap.runTest(0xc000128360, 0x13ccb58, 0xd, 0xc000050f60)
	/Users/polina/delve/service/dap/server_test.go:71 +0x389
github.com/go-delve/delve/service/dap.TestLaunchRequestWithBuildFlags(0xc000128360)
	/Users/polina/delve/service/dap/server_test.go:380 +0x63
testing.tRunner(0xc000128360, 0x13de820)
	/usr/local/go/src/testing/testing.go:992 +0xdc
created by testing.(*T).Run
	/usr/local/go/src/testing/testing.go:1043 +0x357
FAIL	github.com/go-delve/delve/service/dap	4.547s
FAIL
Error: Tests failed.


Removes "Event" type which causes problems with NativeScript

This verifies it works without this Event type. However using any isn't ideal. Not sure if you want to accept this. I tested in a hello world NS ap and a more complex one.

Thanks for this. I think however that I found a better way. I have released version 5.0.2 which should finally fix the NativeScript issues. Please let me know if it still does not work for you.

Confirmed! This is working.


Logo migration

Problem: logo cannot be kept inside metadata of each object because it's too big. A reasonable fix is to migrate the logo from base64 in firestore to image files in S3. This planned fix includes:

Edit the contest setting page functionality: when a logo is attached, update BOTH firestore base64 logo and also put the object to S3.
Migrate all the existing logo: copy them to S3.
From the S3 handler, fetch logo from S3 itself.

Note that this must not be breaking! Old functionality must continue to work. (to self: be extra careful to prevent unnecessary loss of data)

Migrations done.
PDF generation logic done.
Contest setting updates done.

Pushed to v1.2.1.


Yaml fixer

I am not really satisfied by the result:

drops comments
dump's current formatting is quite not friendly (especially for hashes)

Anyway this is a first draw, I'm open to suggestions :)

@ninsuo Awesome work man. :+1:
I agree, comments and formatting are the issue, must think about possible solutions, if you have ideas feel free to share them.

@ninsuo I think, current impl can handle also transforming Foo\Bar to 'Foo\\Bar' with help of https://github.com/symfony/yaml/blob/master/Escaper.php. Not sure about comments, Yaml parser seems to remove it aggressively. The only way I see is to parse comments manually and add it to the result file. However, I can be blind.

@akovalyov we don't need to escape \ on unquoted/single-quoted strings.

@ninsuo I like last indention changes. :+1:

I believe @akovalyov is correct.
We know we do not edit any keys. Can we check where the comments are relative a key, store them, run Yaml parser and dump and then re-add the comments?

Yep. This may be the solution. Will try it soon :+1:

There's interest about this in the Symfony core and someone asked about this on Twitter yesterday: https://github.com/symfony/symfony/issues/18079. @ninsuo are you still interested in this?
Thanks!

Hello @weaverryan,
I'm quite busy those last days, if somebody from the core want to tackle this, go ahead :+1:
Thank you !
A

Or some other community member ;). Thanks @ninsuo for starting this and for the quick reply - now we know this issue is open for someone else!

@ninsuo So, comments is the issue we need to solve?
@weaverryan What do you think about the formatting? Is it acceptable?

I agree with @ninsuo - this solution won't do it. But the good news is that:

@ninsuo made an awesome test for this PR. If someone were able to get that test to pass with a different method, that would prove it's good.

We don't have to catch all the cases. Symfony will explode if there are any parse errors, so they're easy to find by a user. It's the sheer magnitude that exist in some projects that is a problem. If this fixed 90% of use-cases, that would be just fine.

Cheers!

Just want to add that we can think bigger then this. If we can do it using some third party tool, or e.g. ruby library, I would merge that as well.
We just need yaml parser/dumper that keeps comments.
I would try to avoid using regex magic, but if someone is good with that, why not.
The point is, this is just a tool that gets he job done, it does not necessarily need to be fancy, nor perfect as @weaverryan said.
I will try to look deeper if there is something out there that we can use to easily do this.
Thank you all for the effort. :+1:

You could think about forking the Symfony YAML component. What you would need to do then is to modify it such that comments were not stripped (probably you would have to mark them somehow to be able to dump them properly again). The advantage is that the Symfony parser already knows all the deprecated features and it's easy to handle them, most of them will probably be handled implicitly (I suggest to take the one from the upcoming 3.1 release as there are some more deprecations).


[BUG] New version 68.2.1 breaks python setup.py --version when using pyproject.toml

setuptools version
setuptools==68.2.1
Python version
Python 3.9.13
OS
Mac OS X
Additional environment information
No response
Description
When using pyproject.toml's [project] descriptors's version attribute, the newest version of setup tools breaks with the following exception:
$ python setup.py --version
Traceback (most recent call last):
  File "/workspace/setup.py", line 2, in <module>
    setup(
  File "/Users/jstarker/.pyenv/versions/setup-version-failed/lib/python3.9/site-packages/setuptools/__init__.py", line 103, in setup
    return distutils.core.setup(**attrs)
  File "/Users/jstarker/.pyenv/versions/setup-version-failed/lib/python3.9/site-packages/setuptools/_distutils/core.py", line 172, in setup
    ok = dist.parse_command_line()
  File "/Users/jstarker/.pyenv/versions/setup-version-failed/lib/python3.9/site-packages/setuptools/_distutils/dist.py", line 467, in parse_command_line
    args = parser.getopt(args=self.script_args, object=self)
  File "/Users/jstarker/.pyenv/versions/setup-version-failed/lib/python3.9/site-packages/setuptools/_distutils/fancy_getopt.py", line 274, in getopt
    val = getattr(object, attr, 0) + 1
TypeError: can only concatenate str (not "int") to str

This works with 68.2.0.
Expected behavior
Expected to display the version of the test project
How to Reproduce

Create two files:

# setup.py
from setuptools import setup
setup()

# pyproject.toml
[project]
name = "test"
version = "1.0.0"

Install setuptools==68.2.1
Run python setup.py --version

Output
$ python setup.py --version
Traceback (most recent call last):
  File "/workspace/setup.py", line 2, in <module>
    setup(
  File "/Users/jstarker/.pyenv/versions/setup-version-failed/lib/python3.9/site-packages/setuptools/__init__.py", line 103, in setup
    return distutils.core.setup(**attrs)
  File "/Users/jstarker/.pyenv/versions/setup-version-failed/lib/python3.9/site-packages/setuptools/_distutils/core.py", line 172, in setup
    ok = dist.parse_command_line()
  File "/Users/jstarker/.pyenv/versions/setup-version-failed/lib/python3.9/site-packages/setuptools/_distutils/dist.py", line 467, in parse_command_line
    args = parser.getopt(args=self.script_args, object=self)
  File "/Users/jstarker/.pyenv/versions/setup-version-failed/lib/python3.9/site-packages/setuptools/_distutils/fancy_getopt.py", line 274, in getopt
    val = getattr(object, attr, 0) + 1
TypeError: can only concatenate str (not "int") to str

Hey @abravalheri,
Thanks for the quick response. I can confirm that the version above fixes the issue.
Also thanks for the information regarding the setup.py being deprecated. We are only using it as part of some custom built CI/CD tool. I'll bring this information back to our team to see if we can start looking into other things that would be more purpose built for us instead. Do you know when setup.py would be deprecated or is this just some time in the distance future?

Do you know when setup.py would be deprecated or is this just some time in the distance future?

Running python setup.py as a CLI tool is already deprecated (it actually has been deprecated for a while).
Depending on how your custom CI/CD tool is built/expected to work, you can replace it with things like "reading the pyproject.toml file yourself"[^1].
Regarding when we are going to "remove" the CLI capabilities, that is undefined. What is more likely to happen is that CLI capabilities are going to stay around for a while as long as it is not costly to keep them, but with no promise of full backwards compatibility. If we receive a report that someone stopped working, we might just let it as it is (depending on the trade-off between maintenance cost and "level of breakage on the ecosystem").
In this case, it was easy to fix, so I just did it. But I cannot guarantee that is always going to be the case.
Note that having a setup.py file as a configuration file is not deprecated (and there is no expectation for doing that for the foreseeable future). setup.py is a completely fine configuration file that happens to be written in Python language (e.g. conftest.py for Pytest, noxfile.py for Nox, etc...).
[^1]: This is quick and easy and works if you know that all your packages define the version inside pyproject.toml. If you need something generic that always work for all packages regarding of how they are implemented https://pypa-build.readthedocs.io/en/stable/api.html#build.util.project_wheel_metadata would probably do a better job, however it is slower.


Switch checkstyle suppression to comments

Switch checkstyle rule suppression to use comments, rather than suppression file, purely because the former works well with IDE plugins, (specifically the IDEA CheckStyle plugin), where as the latter does not.
Without this, running the checkstyle plugin generates a lot of noise, which makes it easy to miss actual issues that will stop a build.

this looks ugly as shit, but i like the idea.
you can't just do it at the end of the line?

also, please either squash and merge or fix your commits so we don't end up with merges in our commit history


Doesn't work on the latest Android Studio and gradle.

Hi,
I am using Android Studio v2.0-beta7 and gradle v2.0.0-beta7.
When I try to start recording tests, I get the following error:
Error running TestRecorderTemporary1458444695480: This version of Android Studio is incompatible with the Gradle Plugin used. Try disabling Instant Run (or updating either the IDE or the Gradle plugin to the latest version).
[UPDATE] I was able to get the test runner to work.
However, none of actions, button presses are being recorded.
Can you please help.
Thanks
PS: These are the logs generated:
03-20 09:37:47.461 18540-18540/com.firstcare.demo D/AndriodTestRecorder1458446701623: event=[16842,,view=R.id.btn_messaging_back,action=click,Click at Button with id R.id.btn_messaging_back]
03-20 09:37:57.510 18540-18540/com.firstcare.demo D/AndriodTestRecorder1458446701623: event=[10049,,view=R.id.btn_start_messaging,action=click,Click at Button with id R.id.btn_start_messaging]
03-20 09:37:59.125 18540-18540/com.firstcare.demo D/AndriodTestRecorder1458446701623: event=[1615,,view=R.id.btn_messaging_back,action=click,Click at Button with id R.id.btn_messaging_back]
03-20 09:37:59.164 1195-1557/? D/AudioFlinger: mixer(0xf44c0000) throttle end: throttle time(187)
03-20 09:37:59.658 18540-18540/com.firstcare.demo D/AndriodTestRecorder1458446701623: event=[533,,view=R.id.btn_start_open_chat,action=click,Click at Button with id R.id.btn_start_open_chat]

                                                                                --------- beginning of system
03-20 09:37:59.658 1599-1882/system_process I/ActivityManager: START u0 {cmp=com.firstcare.demo/.sendbird.SendBirdChannelListActivity (has extras)} from uid 10059 on display 0
03-20 09:37:59.762 1195-1557/? D/AudioFlinger: mixer(0xf44c0000) throttle end: throttle time(1)
03-20 09:37:59.776 18540-18581/com.firstcare.demo W/EGL_emulation: eglSurfaceAttrib not implemented
03-20 09:37:59.776 18540-18581/com.firstcare.demo W/OpenGLRenderer: Failed to set EGL_SWAP_BEHAVIOR on surface 0x7fc442fffe40, error=EGL_SUCCESS
03-20 09:37:59.802 1195-1557/? D/AudioFlinger: mixer(0xf44c0000) throttle end: throttle time(11)
03-20 09:37:59.846 18540-18540/com.firstcare.demo D/123: view - android.widget.ImageButton{39a7b08 VFED..C.. ......ID 0,0-131,126 #7f0d0067 app:id/btn_close} listener - com.firstcare.demo.sendbird.SendBirdChannelListActivity$2@a7302a1
03-20 09:37:59.846 18540-18540/com.firstcare.demo D/123: view - android.widget.ImageButton{8e03fb4 VFED..C.. ......ID 949,0-1080,126 #7f0d0069 app:id/btn_settings} listener - com.firstcare.demo.sendbird.SendBirdChannelListActivity$3@41c27dd
03-20 09:37:59.880 1599-1620/system_process I/ActivityManager: Displayed com.firstcare.demo/.sendbird.SendBirdChannelListActivity: +211ms
03-20 09:37:59.943 18540-18581/com.firstcare.demo E/Surface: getSlotFromBufferLocked: unknown buffer: 0x7fc4397ce530
03-20 09:38:01.409 18540-18540/com.firstcare.demo W/ViewRootImpl: Cancelling event due to no window focus: MotionEvent { action=ACTION_CANCEL, actionButton=0, id[0]=0, x[0]=470.39063, y[0]=876.3867, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=2755003, downTime=2753156, deviceId=0, source=0x1002 }
03-20 09:38:01.409 18540-18540/com.firstcare.demo W/ViewRootImpl: Cancelling event due to no window focus: MotionEvent { action=ACTION_CANCEL, actionButton=0, id[0]=0, x[0]=470.39063, y[0]=876.3867, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=2755003, downTime=2753156, deviceId=0, source=0x1002 }
03-20 09:38:01.409 18540-18540/com.firstcare.demo W/ViewRootImpl: Cancelling event due to no window focus: MotionEvent { action=ACTION_CANCEL, actionButton=0, id[0]=0, x[0]=470.39063, y[0]=876.3867, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=2755003, downTime=2753156, deviceId=0, source=0x1002 }
03-20 09:38:01.409 18540-18540/com.firstcare.demo W/ViewRootImpl: Cancelling event due to no window focus: MotionEvent { action=ACTION_CANCEL, actionButton=0, id[0]=0, x[0]=470.39063, y[0]=876.3867, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=2755003, downTime=2753156, deviceId=0, source=0x1002 }
03-20 09:38:01.512 18540-18540/com.firstcare.demo D/AndriodTestRecorder1458446701623: event=[1854,,view=R.id.btn_close,action=click,Click at ImageButton with id R.id.btn_close]
03-20 09:38:01.610 18540-18581/com.firstcare.demo W/EGL_emulation: eglSurfaceAttrib not implemented
03-20 09:38:01.610 18540-18581/com.firstcare.demo W/OpenGLRenderer: Failed to set EGL_SWAP_BEHAVIOR on surface 0x7fc43867c340, error=EGL_SUCCESS
03-20 09:38:01.642 1195-1557/? D/AudioFlinger: mixer(0xf44c0000) throttle end: throttle time(11)
03-20 09:38:01.771 18540-18581/com.firstcare.demo E/Surface: getSlotFromBufferLocked: unknown buffer: 0x7fc4397cefb0
03-20 09:38:01.817 18540-18621/com.firstcare.demo D/AndriodTestRecorder1458446701623: event=[305,,espresso,action=pressback,Press on the back button]

Hi,
I just tested plugin myself with this version and everything was ok. Are you using emulator or it was real hardware device?

@vpedak It was a real device..
Also tried it on an emulator.

I am using ADB to receive data from device to my plugin. This is strange that you can see log from device in Studio (this is also working through ADB), but do not see events for plugin :(
Can you please take a look what ADB version are you using? Also do you have any firewall software? Maybe some ports are disabled in it?

This issue can be closed. It does work on the latest Android Studio.


validation of null rows.

We have a problem with the validation operator for object type without null javascript and a type to point to an empty object. However validation breaks if I have rows with null values.
const isObject = typeof data[i] === 'object'
change to :
   const isObject = typeof data[i] === 'object' && data[i] != null

hey @tharyckgusmao
You're more than welcome to create a PR if you'd like to contribute to the library and fix it yourself 😊


I was trying to open a folder and suddenly files crushed

Explain the bug
Write a clear description of what the bug is.
To reproduce

Go to '....'
Click on '....'
Scroll down to '....'
See the error

Expected behavior
Write a clear description of what you expected.
Logfile
Upload the log file here for us to understand your issue better.

You can access it from Settings->About->Open log location.
or
Copy the debug.log and debug_fulltrust.log from the following directory, and upload the files here.
%localappdata%\Packages\49306atecsolution.FilesUWP_et10x9a9vyk8t\LocalState

Screenshots
Add screenshots to help explain your problem if needed.
System Information

OS Version: [e.g. Windows 10 20H2 19042.804] (Press WIN + PAUSE/BREAK, use the copy button at the bottom)
App version: [e.g. v1.0] (In the app, go to Settings -> About, the version is shown at the top)

Additional comment
Add any other comment about the problem here. Does this problem happen again after restarting the app?

Hello, please add Files version to the description and upload the debug files but this issue should be fixed in latest code.
You can try 2 workarounds that were found for similar issues.
Workaround 1:

Turn Off "Enable individual preferences for individual directories" in Settings > Files and Folders
Set Tiles or GridView layout mode

Workaround 2:

Disable these two settings (turn off caching) under Experimental


Master

Corrected configuration for 'Rouge - Syntax Highlighting' of code

These changes are probably supposed to be committed to your repository, not the original repository (the one you forked from). So, please stop the unnecessary "pull requests" to this repo.


Forum or chat? Passing values down / popping values up?

pegjs is simple and powerful. I love it! I have a few questions that aren't covered in the docs:
I'm parsing this, which works, but the rule seems awkward:
f = x => x * x
If I delegate it to say Operator, there's not way to pass values down. If I create ValuesOperators and or = and =>, it's a bit cleaner, but at the top level I still need to check which one it was. In the JavaScript example, I see use of { type: "Literal", value: ... }. Is that the best way to pass the information back up?
Expression
  = values:Values body:(_ "=>" _ Expression)? assign:(_ "=" _ Expression)? {
      if (body && body.length > 0) {
        return new Function(values, body[3]);
      } else if (assign) {
        return new Assignment(values, assign[3]);
      } else {
        return values;
      }
    }

Thanks!
Mike

In grammars it is essential to understand rules. And you are providing only sub.. this is not clear to me, how it can be clear to machine?
LALR grammars is very hard to write but easier than LR and easier then LL..
PEG grammar is easy to write bud most hard to write efficiently.
Are you sure you are using right toy? If you have nice PEG grammar you should be able to create transpiler or interpret as easily as interpreting your rules.
Do you know boxing/unboxing in virtual machines?
How you can have values on left side of assignment? because you have this: body:(_ "=>" _ Expression)? ended with ?

I've just begun using it for experimenting, so yes, some of the naming is incorrect :) I've written a few simple LL(1) parsers, but it's been a while. I'm just curious what the best way is to handle decisions. I'll simplify for this syntax:
a = b
or
x => x * x
Is it more appropriate to do something like this?
AssignmentOrFunction
= ident:Identifier operator:IdentOperator {
if (operator.type === "Function") {
...
}
IdentOperator
= "=" !">" { return { type: "Assignment"; } }
/  "=>" { ... }
FYI, "values" was a term I used to mean a list of items -- they would be values if used as a tuple, but variables if used to define the function arguments. For example (2 + 3).
Thanks for your time!

@mikeaustin It is on yours :-)
Writting grammars is all about reductions. Top most is statement. It is like sentense, you know, you have LL grammars :-)
It is your responsibility to define grammar in sense (sorry I have trouble with English :-D sometimes)
How you want process AssignmentOrFunction? This is basically same as statement in many languages, but can be R-value too.
On the other side
IdentOperator
    = "=" !">" { return { type: "Assignment"; } }
    / "=>" { ... }

can be better written as
IdentOperator
    = "=>" { ... }
    / "=" { return { type: "Assignment"; } }

May be I'm wrong.. but this looks like you break your sentence in not so important fragment. Without context it is not really important what you evaluate this..
PEGs are really difficult to write because you can easily write unreachable rules or you can write rules which will theft your sentence and evaluate them incorrectly, so if you are beginner, you should have sentences on left and required ASTs on right all the time, ten times more automated tests then grammar rules.
And of course you should play with, write something, again and again.. It is not trivial to write effective expression calculator with PEG, note several levels of precedence.. PEG is better for general parsing.
You don't give me more context in your question so it is very hard to guess what you really want to build but I can guess you should play more with grammars, there is AntLR, great tool for learning, GoldParser (LALR) (my first toy :-) ), some old school parsers that are well tested, most efficient but splitted to tokenizer/parser (older lex and yacc, newer flex and bison), many ports of them..
PEG looks like most simple. It really is. But it will always be most dangerous...

Thank you much! Oh, I did find the Google group for pegjs, but didn't notice it because it was in the development section. If I have other questions, I'll definitely go there instead.
Yes, assignment "x = y" is a statement, but "x => x * x" can be part of an expression, as well as "x == y", etc. "=" is a special case, and so is "=>" in the sense that they are not regular operators. I will practice more, and look more closely at the examples. I do wish there were examples that were larger than the calculator, but smaller than the other examples. Maybe if I make progress it can be an example :)
For my project, I'd like to write a simple language to transpile to JS. Basics are external, lexically scoped methods (no monkey patching, like Dylan or CLOS but without multimethods), keyword arguments, ADTs, maybe even optional static typing. "Simple" just means everything works together, and there is just one way to do something. Making something simple can be hard.
Also, there are libraries like adt and multimethods that could benefit from native syntax. Those actually could be achieved with sweet, but sweet can only extend JS, not make it simpler. TypeScript has options like "--strictNullChecks" and supports inline union types, but again, it extends JS so it leaves all the bad things still there (implicit coercions, "+" for string concatination, scope hoisting, etc.).
Again, thanks for all the help!
Mike

Thank you much! Oh, I did find the Google group for pegjs, but didn't notice it because it was in the development section. If I have other questions, I'll definitely go there instead.
Yes, assignment "x = y" is a statement, but "x => x * x" can be part of an expression, as well as "x == y", etc. "=" is a special case, and so is "=>" in the sense that they are not regular operators. I will practice more, and look more closely at the examples. I do wish there were examples that were larger than the calculator, but smaller than the other examples. Maybe if I make progress it can be an example :)
For my project, I'd like to write a simple language to transpile to JS. Basics are external, lexically scoped methods (no monkey patching, like Dylan or CLOS but without multimethods), keyword arguments, ADTs, maybe even optional static typing. "Simple" just means everything works together, and there is just one way to do something. Making something simple can be hard.
Also, there are libraries like adt and multimethods that could benefit from native syntax. Those actually could be achieved with sweet, but sweet can only extend JS, not make it simpler. TypeScript has options like "--strictNullChecks" and supports inline union types, but again, it extends JS so it leaves all the bad things still there (implicit coercions, "+" for string concatination, scope hoisting, etc.).
Again, thanks for all the help!
Mike

I was under the assumption that no backtracking and being greedy meant you have to work with "wherever you currently are", but that's not the case. Yay!
Greedy just means it if it finds a match it will take it, correct? But if the entire rule doesn't match, it will start again from the beginning in the next match. This makes it much easier than how I was first trying to do it.
x, y = 2 + 3.foo + "foo", 5 * 2
This is fairly easy when assignment can be matched separately from a regular expression, etc.
Statement
  = Assignment
  / Expression

Assignment
  = vars:Variables _ "=" _ expr:Expression

Variables
  = head:Identifier tail:(_ "," _ Identifier)*

...

@mikeaustin PEGs have ordered choice meaning that the first pattern to match in an expression will automatically match. @langpavel's example is a good way of expressing a preference for => over =. You might want to think more about what an expression can be in terms of "one of these things" instead of "grab all this text which could be an expression and figure it out later"
Expression
  = FunctionExpression
  / Assignment
  / Value

To demonstrate I created a test grammar which you can play with. It's a bit noisy but I've tried to keep it pretty simple, ignoring some things like allowing extra whitespace and operators. Note the Expression block where the magic happens. Also, I've used things like SubExpression and ExpressionList as ways of handling the "many of these" situations; that pattern works well for me keeping the list separators and items separate.
In each case I'm trying to keep the grammar simple by having one item for each kind of match. There's some redundancy involved because I could rewrite it such that we have one big match sequence with all the possible combinations but that's hard to follow and reason about and leaves open ambiguity which PEGs can eliminate with ordered choice. Hope it helps.

I'll take a look at the test grammar, thanks! It helps to see a minimal subset of a language since the JavaScript grammar is pretty big.
@dmsnell I learned a lot lately by removing rules and adding a few new ones to the JavaScript grammar, you can see the latest here: impulse.pegjs. I've removed elision syntax [,,], some operators, sequence expressions, etc. and added tuple syntax (1, 2) and range syntax 1..5. Floating point numbers require a decimal on both sides to make literal ranges easier to parse.
I've been working on a lot of the runtime lately, but want to get back to the parser to actually emit JavaScript. I'm between jobs so I have a little time on my hands :) Some ideas for a cleaned up dialect of JavaScript with extension methods, named parameters, traits and mixins, operator overloading and literal tuple and range syntax.
Thanks again!
Mike


Added voice recorder app

Related to issue #525

Hi @DhanushNehru, would you like to take a look at my pull request?

Hi @DhanushNehru, would you like to take a look at my pull request?


Allow to specify artifact full filename

Unfortunately this action does not allow currently to specify exact filename when there are multiple different binaries in the release.
Example - https://github.com/bazel-contrib/target-determinator/releases
It publishes 2 binaries: driver and target-determinator. Currently with the following configuration, it downloads the driver although I want the latter.
        uses<EMAIL_ADDRESS>        with:
          repo: bazel-contrib/target-determinator
          tag: v0.26.0
          extension-matching: disable
          rename-to: target-determinator
          chmod: 0755

use binaries-location for this.


Resubmit Dialback authentication IETF draft

https://datatracker.ietf.org/doc/draft-prodromou-dialback/ is a thing but it expired. It'd be nice if we could push this forward again and get it standardized. (This would probably also be relevant for the ongoing ActivityPub work.)

Do we need it? Aren't there other OAuth 2.0 standards that do the same thing?

Dunno. This was from a while ago, things were different then.
Feel free to close, I'd be fine just dropping this on the floor. I think you said it wasn't worth it at some point anyway.

ActivityPub is the future, not this protocol Evan made up 5 years ago :thumbsup:


adapt transfer e2e params tests to use gov v1 message

Part of https://github.com/cosmos/ibc-go/issues/2010
Pre-requisite:

[x] #3553

Adjust TestSendEnabledParam and TestReceiveEnabledParam to use gov v1 message when the version of the chain supports it (keep using legacy params for versions that don't support gov v1).
Alternatively we could also not test legacy params anymore and test only with gov v1. Open to the opinion of others.

This was already taken care of in #3553!


Issues with booleans without explicit default value

first, thank for this project!
in certain constellations, I am running into problems with boolean values during (html) report generation using the Maven plugin:

using default html report template

@ConfigurationProperties class with a boolean

package de.ciis0.playground.cuddlyoctoeureka;

import lombok.Getter;
import lombok.Setter;
import org.springframework.boot.context.properties.ConfigurationProperties;

@ConfigurationProperties("app")
@Getter
@Setter
public class ConfigPropsBoolWithDataProblem {
    boolean bool;
}

value not set via application.{yml,properties} (or setting via application.yaml instead of .yml)

restriction seems to stem from this place in code: https://github.com/egoettelmann/spring-configuration-extensions/blob/c569506cea91aba12520a683d2864c4919818517/spring-configuration-aggregator-maven-plugin/src/main/java/com/github/egoettelmann/spring/configuration/extensions/aggregator/maven/AggregatorMojo.java#L95-L96

In that case then the aggregation seems to store the default value obtained from Java in metadata JSON as a actual boolean and then report generation fails with the error below.
A workaround is to declare default value in application.yml (not .yaml!) or application.properties, then it's stored as string in metadata and FreeMarker is happy.
I am open to look into providing a fix PR. :)
SEVERE: Error executing FreeMarker template
FreeMarker template error:
Can't convert boolean to string automatically, because the "boolean_format" setting was "true,false", which is the legacy deprecated default, and we treat it as if no format was set. This is the default configuration; you should provide the format explicitly for each place where you print a boolean.

----
Tip: Write something like myBool?string('yes', 'no') to specify boolean formatting in place.
----
Tip: If you want "true"/"false" result as you are generating computer-language output (not for direct human consumption), then use "?c", like ${myBool?c}. (If you always generate computer-language output, then it's might be reasonable to set the "boolean_format" setting to "c" instead.)
----
Tip: If you need the same two values on most places, the programmers can set the "boolean_format" setting to something like "yes,no". However, then it will be easy to unwillingly format booleans like that.
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: ${(property.defaultValue?j_string)!}  [in template "default.ftl" at line 113, column 35]
----

Java stack trace (for programmers):
----
freemarker.core._MiscTemplateException: [... Exception message was already printed; see it above ...]
	[...]
	at com.github.egoettelmann.spring.configuration.extensions.aggregator.maven.components.reporting.writers.HtmlReportWriter.write(HtmlReportWriter.java:60)
	at com.github.egoettelmann.spring.configuration.extensions.aggregator.maven.components.reporting.DefaultReportingService.save(DefaultReportingService.java:74)
	at com.github.egoettelmann.spring.configuration.extensions.aggregator.maven.ReporterMojo.execute(ReporterMojo.java:88)
[...]

Many thanks for your detailed investigations and the suggested fix.
I slightly reworked your PR to prevent creating an additional sample module.
The scenario has been integrated in Sample1.
The suggested fix looks good to me. Even if the setBooleanFormat is recommended by the Freemarker documentation to be left empty, it is quite reasonable to define it for the intended usage of this library .
Regarding your other comments/remarks:

the duplicated Freemarker configuration, I think we can keep it as it is for now. It may make sense to have different configurations for html and pdf at some point.
I added the application.yaml to the list of default files that are looked up. It should now be taken into account without any additional configuration change on your side.
if I got you right regarding the failing tests, the entries in the json files are generated with a different order than the ones expected by the test. Tests should not be impacted by the order of entries of these files. However, I will have a look to ensure that the order is deterministic. On which OS are you working ?

If the changes performed on develop are fine for you, I will release a new version ASAP.
Again, many thanks for your input.

LGTM!
I am thinking about whether "Boolean value without any default value" doc comment could be confusing (because it does have an implicit default value, false).
As the problem was with the type (actual boolean, not String), maybe rather "Boolean value with native default"?

integrated with some modifications in develop.

oops, that close should have been the PR not the issue... ^^

On which OS are you working ?

I am working in Ubuntu WSL.

I changed the Javadoc into: Boolean value without any explicit default value.
The fix is released and is available in version 0.2.1:
https://central.sonatype.com/artifact/com.github.egoettelmann/spring-value-annotation-processor


(Be sure to let me know if you found the problem.)

Hi, guys.
So... I tested the YOLO V3 (SPP and Tiny) conversion and I noticed that the model accuracy is lower after conversion. Currently, this model is 99.9% accurate, and it has only one class. And it's not only missing detection but "ghost detections" as well (strangers object detections).

@adrianosantospb
Thanks for bringing this up.  I do think mAP of my TensorRT yolov3-tiny implementations are very low.  Do let me know if you have any thoughts or suggestions.

TensorRT engine
mAP @IoU=0.5:0.95
mAP @IoU=0.5
FPS on Nano

yolov3-tiny-288 (FP16)
0.077
0.158
35.8

yolov3-tiny-416 (FP16)
0.096
0.202
25.5

@adrianosantospb
Thanks for bringing this up. I do think mAP of my TensorRT yolov3-tiny implementations are very low. Do let me know if you have any thoughts or suggestions.
TensorRT engine	mAP @
IoU=0.5:0.95	mAP @
IoU=0.5	FPS on Nano
yolov3-tiny-288 (FP16)	0.077 0.158	35.8
yolov3-tiny-416 (FP16)	0.096 0.202	25.5

Was there any fix for the low mAP results in v3 tiny?

@adrianosantospb
Can you share more info on the "ghost detections" that you mention? I'm having similar problems with the TensorRT implementation in my repo (https://github.com/isarsoft/yolov4-triton-tensorrt), which is very similar to the @jkjung-avt implementation. The error is VERY difficult to track down so I'm very happy someone else experiences them as well and we have more examples to work with.
Regarding the degraded precision after conversion: to some extent this is expected due to FP16 conversion, but the difference is to big currently in both implementations. Im wondering if the yolo layer plugin is the cause, but I have a different TensorRT repo with a different network which has similar problems (no plugins).
I would like to track down this issue so any info that you can share is very much appreciated. How do you test mAP? How many GPUs do you use? When do the ghost detections occur?

@adrianosantospb
Can you share more info on the "ghost detections" that you mention? I'm having similar problems with the TensorRT implementation in my repo (https://github.com/isarsoft/yolov4-triton-tensorrt), which is very similar to the @jkjung-avt implementation. The error is VERY difficult to track down so I'm very happy someone else experiences them as well and we have more examples to work with.
Regarding the degraded precision after conversion: to some extent this is expected due to FP16 conversion, but the difference is to big currently in both implementations. Im wondering if the yolo layer plugin is the cause, but I have a different TensorRT repo with a different network which has similar problems (no plugins).
I would like to track down this issue so any info that you can share is very much appreciated. How do you test mAP? How many GPUs do you use? When do the ghost detections occur?

Hi, @philipp-schmidt . Sure I can. We can work together to solve it. :)
So... this problem happens when the detection model has low accuracy. I still don't know why, but when we convert the YOLO to TensorRT using the python' approach, we get worse or not enough result. In my case, for example, I have a YOLO model trained with exceptional accuracy. But when I converted to TensorRT, the result was very bad... I'm been testing with the C++ approach and the detection was quite good (of course it isn't as the full model, but the result is enough).  Take a look at this repo (https://github.com/ceccocats/tkDNN). But I'm been noticed that using this repo, I've got a memory leak. So... that is it. I'm still working to solve these problems.

Hi, @philipp-schmidt . Sure I can. We can work together to solve it. :)
So... this problem happens when the detection model has low accuracy. I still don't know why, but when we convert the YOLO to TensorRT using the python' approach, we get worse or not enough result. In my case, for example, I have a YOLO model trained with exceptional accuracy. But when I converted to TensorRT, the result was very bad... I'm been testing with the C++ approach and the detection was quite good (of course it isn't as the full model, but the result is enough).  Take a look at this repo (https://github.com/ceccocats/tkDNN). But I'm been noticed that using this repo, I've got a memory leak. So... that is it. I'm still working to solve these problems.

Would you mind trying another implementation and tell us whether the accuracy is low as well?
https://github.com/isarsoft/yolov4-triton-tensorrt
It should be relatively straigthforward to build the engine. You don't necessarily need to deploy to Triton.

Would you mind trying another implementation and tell us whether the accuracy is low as well?
https://github.com/isarsoft/yolov4-triton-tensorrt
It should be relatively straigthforward to build the engine. You don't necessarily need to deploy to Triton.

Has anyone here used an ONNX converter for Yolo v3 tiny that doesn't reduce the accuracy?

Has anyone here used an ONNX converter for Yolo v3 tiny that doesn't reduce the accuracy?

I'm closing this issue and will continue to track the "trt yolo mAP dropping" problem here: https://github.com/jkjung-avt/tensorrt_demos/issues/315


[WIP] Add a way to opt out of repo code indexing, on a per-repo basis

Add a repository setting to opt out of code indexing. When the indexer iterates over repositories, if it sees a repo with the setting disabled, it will remove that repository from the index, otherwise it continues.
The new setting is on by default, and is exposed in the repository settings page, just above the reindex requests.
Addresses #17824, albeit in a different way.

Screenshots
With REPO_INDEXER_ENABLED=false

With REPO_INDEXER_ENABLED=true

This is currently an admin setting, which is likely not desired, it should be settable by a repository owner, too, I think. I went with the more conservative option (making it admin-only), but I'm more than happy to tweak it and make the option available for all repo owners.

Codecov Report

Merging #20418 (4c9b50e) into main (fee0e4d) will increase coverage by 0.00%.
The diff coverage is 14.51%.

@@           Coverage Diff           @@
##             main   #20418   +/-   ##
=======================================
  Coverage   46.88%   46.88%
=======================================
  Files         976      976
  Lines      135193   135248   +55
=======================================
+ Hits        63384    63413   +29
- Misses      64040    64066   +26
  Partials     7769     7769

Impacted Files
Coverage Δ

cmd/admin.go
0.00% <0.00%> (ø)

models/issues/review.go
52.77% <0.00%> (-1.31%)
:arrow_down:

models/repo/repo.go
62.61% <ø> (ø)

routers/web/org/members.go
0.00% <0.00%> (ø)

routers/web/repo/pull_review.go
0.00% <0.00%> (ø)

routers/web/repo/setting.go
16.61% <0.00%> (-0.31%)
:arrow_down:

services/forms/repo_form.go
40.76% <ø> (ø)

services/pull/review.go
48.24% <7.14%> (-2.58%)
:arrow_down:

modules/indexer/code/indexer.go
32.15% <100.00%> (+0.90%)
:arrow_up:

modules/repository/create.go
43.35% <100.00%> (+0.32%)
:arrow_up:

... and 9 more

I turned the setting into something accessible for all repo owners, rather than limiting it to admins. The only part I'm unsure about is where toggling the option on or off and updating the settings, code.UpdateRepoIndexer() is triggered. That's something another option hidden behind an admin-only flag does too, so perhaps it would make more sense to not call it here, and just have the next indexer run - whenever it happens - take care of updating things. However, that has the downside of the change potentially taking a long time to take effect.

I would say that changing option should trigger repository reindex as it may not happen ever if repository is not changed