Enable user to supply a custom sorting function

⚠ Please check that this feature request hasn't been suggested before.

[X] I searched previous Ideas in Discussions didn't find any similar feature requests.
[X] I searched previous Issues didn't find any similar feature requests.

🔖 Feature description
I'd like to be able to sort the tasks using a description.replace function.
The reason for this addition is to achieve certain things that currently it isn't possible.
If you want to use a custom description system for your tasks and filter them using the options provided by the plugin, you might need to create multiple queries instead of get them in a single one.
For example:
I am using this custom icon schema to filter and get the tasks of my vault (the whole query is a bit more complex than this, but I'm trying to simplify):
```tasks
not done
priority is none
description includes 🟥
((description does not include 🛑) AND (description does not include ✋) AND (description does not include 🚫))
description regex matches /\w/
```
```tasks
not done
priority is none
description includes 🟧
((description does not include 🛑) AND (description does not include ✋) AND (description does not include 🚫))
description regex matches /\w/
```
```tasks
not done
priority is none
description includes 🟨
((description does not include 🛑) AND (description does not include ✋) AND (description does not include 🚫))
description regex matches /\w/
```
```tasks
not done
priority is none
description includes 🟩
((description does not include 🛑) AND (description does not include ✋) AND (description does not include 🚫))
description regex matches /\w/
```
```tasks
not done
priority is none
description includes 🟦
((description does not include 🛑) AND (description does not include ✋) AND (description does not include 🚫))
description regex matches /\w/
```
I've discussed about this already on https://github.com/obsidian-tasks-group/obsidian-tasks/discussions/1366#discussioncomment-4578076
✔ Solution
As you can see, I need to do 5 queries to get all the tasks that I want in the order that I want.
It isn't DRY and also it's hard to maintain and improve it.
If I've the option of sort them with a replace function, I could get all of them in a single query, like:
```tasks
not done
priority is none
((description includes 🟥) OR (description includes 🟧) OR (description includes 🟨) OR (description includes🟩) OR (description includes 🟦))
description includes 🟥
((description does not include 🛑) AND (description does not include ✋) AND (description does not include 🚫))
description regex matches /\w/
sort by description.replace('🟥', 1).replace('🟧', 2).replace('🟨', 3).replace('🟩', 4).replace('🟦', 5)
```
I prefer the propose above, but other possibility is:
sort by replace(replace(replace(replace(replace(description, '🟥', 1), '🟧', 2), '🟨', 3), '🟩', 4), '🟦', 5)

❓ Alternatives
N/A
📝 Additional Context
This is commonly accepted by regular SQL, so I think that it would be a great addition to the plugin.
Look: http://sqlfiddle.com/#!9/d27e3c/1
-- CREATE
CREATE TABLE users (
  id INT,
  name VARCHAR(256)
);

-- INSERTS
INSERT INTO users VALUES (1, 'April');
INSERT INTO users VALUES (2, 'Bob');
INSERT INTO users VALUES (3, 'John');
INSERT INTO users VALUES (4, 'Ronald');
INSERT INTO users VALUES (5, 'Zoe');

-- QUERIES
SELECT * FROM users ORDER BY name ASC LIMIT 2;

SELECT * FROM users ORDER BY REPLACE(name, 'Z', 'A') ASC LIMIT 2;

The request is exclusively for the addition of the function  description.replace, but it might be extended for other properties of the tasks and also to other JavaScript functions and properties, like: toLowerCase, toUpperCase, .length.

Thank you very much. I've renamed it to something a bit more general.

Scary!

We now have custom grouping and custom filters, so custom sorting is the logical extension.
sort by function ....
The sort function would need to take two tasks, and return one of the following, to indicate if one comes before the other, or they are the same.

a negative number
zero
a positive

This makes is a bit more complicated than:

custom grouping - takes 1 task and returns a name
custom filtering - takes 1 task and returns true/false

As in:

a bit more complicated to write the Tasks code
a lot more complicated to document how to use it
a lot more complicated for users to write custom sorters

@FabianoLothor Hi, if you're still using Tasks, I have a first implementation of this now.
Also, I used your example above for the docs - thanks!
If you would like to try it out and give feedback, please see:

How do I test a GitHub build of the Tasks plugin?
And here is a build from which you can download the files referred to in the link about

For docs, you can review the markdown files in this set of differences
Here is what the docs would look like for your example:

sort by function task.description.replace('🟥', 1).replace('🟧', 2).replace('🟨', 3).replace('🟩', 4).replace('🟦', 5)

A user has defined custom system for their task descriptions, with coloured squares at the start of task lines as a home-grown alternative priority system.
This allows tasks to be sorted in the order of their coloured squares.

Please note any feedback here - thank you.

@claremacrae that's awesome. Thanks!
I assume that .replace is the default js-replace function, so you could even reduce this amount of replaces:
'foo-bar-baz'.replace(/(foo|bar|baz)/g, match => ({ foo: 3, bar: 1, baz: 2 }[match]))

// Example

sort by function task.description.replace(/(foo|bar|baz)/g, match => ({ foo: 3, bar: 1, baz: 2 }[match]))

// The example above is just to show how you could simplify the replacement and still be able to sort by entire words in a custom manner.

// Now, getting the icons example, it would be something like:

sort by function task.description.replace(/(🟥|🟧|🟨|🟩|🟦)/g, m => ({ '🟥': 1, '🟧': 2, '🟨': 3, '🟩': 4, '🟦': 5 }[m]))

If you want to go beyond, this could be simplified to something like:
sort by custom order 🟥|🟧|🟨|🟩|🟦

// For me seems unnecessary, but you could consider accept escaped pipes with \|

A small caveat that perhaps it worth to be mentioned in the docs:
This kind of sorting assumes that the tasks are always starting with one of the replacements, otherwise you could get conflicts with tasks that are starting with the number 1 for example.
For me it's obvious, but who knows?

Hi @FabianoLothor,
Thanks for the answers - very helpful.

This kind of sorting assumes that the tasks are always starting with one of the replacements, otherwise you could get conflicts with tasks that are starting with the number 1 for example.

Actually I discovered that it's a more serious problem than that... A side-effect of the example I gave was that it doesn't just sort the tasks with the symbol... It sorts all the other tasks in description order - which is not what was intended, and it prevents any later sorts from impacting the results.
So, putting your comments together, I came up with a way to do it that works with the emoji/symbol in any position, and still allows the symbols to be supplied only once:
group by function \
    const priorities = [...'🟥🟧🟨🟩🟦'];  \
    for (let i = 0; i < priorities.length; i++) {  \
        if (task.description.includes(priorities[i])) return i;  \
    }  \
    return 999;

(I've edited the comment above. I was using group by function to visualise the results of the grouping - and forget to convert it back to sort by... before pasting in above.)

And the docs now say:

sort by function \
    const priorities = [...'🟥🟧🟨🟩🟦'];  \
    for (let i = 0; i < priorities.length; i++) {  \
        if (task.description.includes(priorities[i])) return i;  \
    }  \
    return 999;

A user has defined a custom system for their task descriptions, with coloured squares as a home-grown alternative priority system.
This allows tasks to be sorted in the order of their coloured squares.
The function returns 0 if the first square is found in the task description, 1 if the second square is found, and so on.
And it returns 999 if none of the squares are found.
It is important that we use a consistent value for all the tasks not containing any of the squares, to retain their original order, so that any later sort by instructions still work.

Well done!

Well done, despite of improvements that could arise from here, I believe that this ticket can be closed.
Thank you very much Clare!

Thank you. A few PRs later, I'm nearly happy with the implementation, but not quite... And then I have to write the docs.

https://github.com/obsidian-tasks-group/obsidian-tasks/pull/2584
https://github.com/obsidian-tasks-group/obsidian-tasks/pull/2586

The bit I don't like is the need for reverse (or !==) in examples like this:
```tasks
folder includes {{query.file.folder}}

# Put tasks in the same file as the query first.
# Important:
#     It's a bit counter-intuitive:
#     False sort keys sort first, so we reverse the result, to get the desired results.
sort by function reverse task.file.path === query.file.path
```

Will close this when it's released.

This was released in Tasks 6.0.0.


Add a footer and improve UI in the main page of website

I would like to work on this issue,please assign it to me

I want to contribute to this issue, looking forward to get assigned.

@karthiknadar1204 as you are working in some other issues so assigning @KeyurGK


Support type var splats inside Tuple during generic parameter substitution

Fixes #8520.
Consider the example from there:
class Foo(R, *A)
  def initialize(@action : Proc(*A, R))
  end
end

Foo(String, Int32, Bool).new ->(a : Int32, b : Bool) { "foo" }

When Foo(String, Int32, Bool) is instantiated, the compiler requests the type of the @action instance variable; this must be a type, not an AST node. (Generic type splats inside AST nodes are already supported, so the type restriction of #initialize works as intended.) The compiler knows the following type parameter substitutions:

R -> String
A -> Tuple(Int32, Bool)

It then proceeds to perform type parameter substitution on Proc(*A, R). The compiler also "instiantiates" an unbound Crystal::GenericInstanceType from this expression, even if the type arguments are not known in advance. This "type" has the following type vars:

T (from Proc's definition) -> Tuple(*A) (this A is from the outer Foo)
R (from Proc's definition) -> R (from the outer Foo)

The compiler doesn't know how to substitute A -> Tuple(Int32, Bool) into Tuple(*A), as it previously assumes there are no type var splats inside an unbound Tuple(...) expression; this is what this PR implements. As Crystal::TupleInstanceType backs all generic type var splats, including ones in included/inherited types, this PR also makes the following possible:
class C(*T)
  def foo
    T
  end
end

module M(*T)
  def bar
    T
  end
end

class Baz(*T) < C(*T, Int32)
  include M(String, *T)
end

x = Baz(Bool, Char).new
x.foo # Before: Tuple(*T, Int32)
      # After:  Tuple(Bool, Char, Int32)
x.bar # Before: Tuple(String, *T)
      # After:  Tuple(String, Bool, Char)

{% Baz(Bool, Char).ancestors %} # Before: [M(String, *T), C(*T, Int32), Reference, Object]
                                # After:  [M(String, Bool, Char), C(Bool, Char, Int32), Reference, Object]

The "more args" specs are written in such a way that splat expansions in unbound generic expressions always correspond to splat parameters in the generic definitions; see https://github.com/crystal-lang/crystal/issues/3649#issuecomment-757447288 for the rationale behind this.

Just wow.
How are you finding the compiler's code so far? Please be honest, I personally think it's not the best thing in the world :-)

Just wow.
How are you finding the compiler's code so far? Please be honest, I personally think it's not the best thing in the world :-)

My impression so far is that Crystal's compiler being written in bleeding-edge Crystal itself makes it far better than a lot of programming languages by default (for example you wouldn't see a C++20 compiler written in bleeding-edge C++20); the Crystal language is overdue for a formal specification, but the compiler's code itself is good enough. Perhaps all LLVM-backed languages are like that.

My impression so far is that Crystal's compiler being written in bleeding-edge Crystal itself makes it far better than a lot of programming languages by default (for example you wouldn't see a C++20 compiler written in bleeding-edge C++20); the Crystal language is overdue for a formal specification, but the compiler's code itself is good enough. Perhaps all LLVM-backed languages are like that.


Fix dev release, log paths of missing artifacts

This PR fixes the source path for the Canonical RTOS image for dev release and improves the logging in case of missing artifacts.
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

/retest


ocamlPackages.merlin: 4.9 -> 4.10

Changelog:

https://github.com/ocaml/merlin/releases/tag/v4.10-414
https://github.com/ocaml/merlin/releases/tag/v4.10-500

Description of changes

Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[x] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[x] Tested basic functionality of all binary files (usually in ./result/bin/)
23.11 Release Notes (or backporting 23.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 252465 run on x86_64-linux 1

2 packages built:

dot-merlin-reader
ligo


Rpc methods of 2.10.2

@snowypowers integration test for RPCClients fails, I guess it's because coz test net node has not installed plugin RpcSystemAssetTracker.
What do you suggest?

Since this is a readonly endpoint we can point the tests at mainNet. We should notify COZ to upgrade their nodes too.

This is closed for targetting master branch, New PR: https://github.com/CityOfZion/neon-js/pull/446


remove init containers with CNI enabled

Bug description
We want to optimize pod start time with sidecar injection enabled. Seems that the parameter cni.repair.enabled controls whether to inject the istio-validation container or not with CNI enabled.
https://istio.io/latest/docs/setup/additional-setup/cni/#helm-chart-parameters

Enable or disable the CNI Race Condition detection and repair functionality. This injects an istio-validation init container into every injected pod, which checks if Istio CNI correctly initialized the pod’s networking configuration. It also enables a new container in the CNI DaemonSet which monitors for pods and either labels or deletes them, per the values below.

I installed istio with cni.repair.enabled=false but still find the istio-validation init-container for newly created pods.
Is there a way to get rid of the istio-validation container?
kubectl get pods '-o=custom-columns=NAME:.metadata.name,CONTAINERS:.spec.containers[*].name,INITCONTAINERS:.spec.initContainers[*].name' -n coligotest-1
NAME                                      CONTAINERS                               INITCONTAINERS
s1-lxgrs-1-deployment-55bb77c77b-tl2j7    user-container,queue-proxy,istio-proxy   istio-validation

Affected product area (please put an X in all that apply)
[x] Docs
[ ] Installation
[x] Networking
[ ] Performance and Scalability
[ ] Extensions and Telemetry
[ ] Security
[ ] Test and Release
[ ] User Experience
[ ] Developer Infrastructure
Affected features (please put an X in all that apply)
[ ] Multi Cluster
[ ] Virtual Machine
[ ] Multi Control Plane
How was Istio installed?
istioctl manifest install -f istio-minimal.yaml \
--set values.gateways.istio-egressgateway.enabled=false \
--set values.gateways.istio-ingressgateway.sds.enabled=true \
--set values.gateways.istio-ingressgateway.autoscaleMin=3 \
--set values.gateways.istio-ingressgateway.autoscaleMax=3 \
--set values.pilot.autoscaleMin=3 \
--set values.pilot.autoscaleMax=3 \
--set components.cni.enabled=true \
--set values.cni.repair.enabled=false

istioctl version
client version: 1.7.4
control plane version: 1.7.4
data plane version: 1.7.4 (12 proxies)

The istio-validation init container will be injected once you enabled istio cni, you can't disable that currently.

I removed the istio-validation from the istio-sidecar-injector template and everything seems remain working without issue. Could you give more hints for the necessity of istio-validation container? Any related issue/discussion would be apperaciated.

@lanceliuu See the original PR to add the istio-validation init container: https://github.com/istio/istio/pull/20130

I am also confused at first. The validator looks redundant, not sure when the rules can be set wrong

Could you remove the istio-validation initcontainer if CNI enabled ? @linsun @sdake FYI.

It is used to validate whether the rules are set correctly.
https://github.com/istio/istio/issues/14327

I filed a related github issue. In that issue, I asked the question of why are iptable rules being set at all by the proxy. The role of CNI should be to set those IP table rules - proxy itself should not be setting any rules.
https://github.com/istio/istio/issues/28918


(QA-3470) Added contexts to tests

Added contexts to tests for bootstrap mono method

@billclaytor please review


Proposal to allow ModelWrapper and Filter to operate in different coordinate systems

A proposal to help with #59

[ ] Split off transform to its own class
[ ] Introduce transform class as argument to ModelWrapper
[ ] Update the MvRD to have a transform operation which produces a new distribution after applying a transform
[ ] Allow the get_state function of the estimator to detect when the state used by an underlying filter requires a transformation

Jotting down some notes here:

the TransformedModel class has methods like transform_covariance_to_wrapped, which implies that it knows at least what the underlying probability distribution is.

at first, this doesn't seem like quite a problem, as all pdfs have a covariance, but the problem is that it becomes the responsibility of the TransformedModel to know how to update that
to me, this clashes with the modularity idea: the wrappers should similarly be agnostic to the BaseFilter being used, and be able to work with standard KF, extended KF (neither of these implemented), UKF, particle filters, RNN-based filters, etc.

given we are creating this functionality in the TransformedModel, I feel like the TransformedFilter is superfluous: its only "new" functionality is to return the state de-transformed, but that can be done at the OnlineEstimator level, since that has access to the necessary functions, and is the user-facing object.
I see you have a TODO (wardlt): Move this whole module to the ./filters/ package?, which is a sentiment i agree with (though maybe this was a leftover from an older branch?). since the ModelWrapper is the way the BaseFilters expect to interact with models, I liked having it defined in the filters directory

The TransformedModel class has methods like transform_covariance_to_wrapped, which implies that it knows at least what the underlying probability distribution is.
Yea, that is a bit of a problem. I'm eager to see your thoughts on how to make the MVP classes allow transformations.

... given we are creating this functionality in the TransformedModel, I feel like the TransformedFilter is superfluous: its only "new" functionality is to return the state de-transformed, but that can be done at the OnlineEstimator level, since that has access to the necessary functions, and is the user-facing object.
Agreed. The primary user of the TransformedFilter is so that the OnlineEsimator code need not be changed to allow for transformation, but perhaps there's a simple way to do that.

I see you have a TODO (wardlt): Move this whole module to the ./filters/ package?, which is a sentiment i agree with (though maybe this was a leftover from an older branch?)
It's actually something new that came up while I was trying to consolidate the model-wrapper-related stuff to the same module, and also to promote it from a generic "utils" given it's large importance in implementing a filter.

Ok, so I came up with something for the MvRD. Looking forward to sharing it with you in a bit, and getting your feedback. I was doing it in the demonstrate_ignorance.ipynb notebook (which is naturally ignored) to test it out, since i didn't feel like making a full new branch for it, given there's a good chance it would go nowhere. I think once we sync up today, we should just create a asoh_normalization branch to work on whichever solution we come up with. What do you think?

Let's do it :)

Closed in favor of a different branch


Line tool: starting/ending point parameters do not handle coordinates entered in Long Lat order (ArcMap)

The Coordinate Conversion tool was modified to allow users to enter in coordinates in both Lat Long and Long Lat order. All other tools that allow user to type in coordinates should allow the same.
Tool accepts coordinates to be entered in Lat Long...

Tool does not accept coordinates to be entered in Long Lat...

I have a fix for this locally, will make pull request when possible.

Similar to #217, this has been addressed in PR.

Verified

This cannot be finished until the Distance and Direction documentation topics are versioned and released

Added to "Issues Addressed" section in Distance and Direction Release notes. Will assign to @dfoll for review once completed.

Removing "Known Issue" label as this has now been addressed and is listed in the "Issues Addressed" section of our release notes.

Removing E-verified label. This is not on dev and therefore cannot be verified.

This is not ready.  I cannot get the lines to draw using the following workflow:
Environment:
ArcMap 10.6
Add a basemap, and enter the following:
Starting point: 116.948W 34.73N
Ending point: 24.895304E 60.236869N
If I paste in these coordinates.  It does not give an error, it just doesn't work.
If I manually type in the coordinates it gives the following:

FYI @kgonzago @csmoore

@ACueva I'll take a look at this.

@ACueva Issue fixed in this PR


remove overwritten init functions in models

There are many __init__ functions in the data_description class, which @jtyoung84 would like removed in favor of validators and properties.
Most of these could be solved by establishing a label function as a property, except for the default DataDescription, which utilized the label field to construct the name field. @dyf @saskiad @jtyoung84 should advise on what the goal functionality should be for this model.

@dyf @saskiad @jtyoung84 If you all don't mind, could you take a look at the current implementation of DataDescription.__init__ and let me know what you think our ideal functionality should be here?


Don't show recommendation on every window, every reload

From @kieferrm
The exe recommendation is show for every window, every reload, ...  In the example below, I could tolerate that the Python recommendation is shown to be, but that the docker recommendation comes up again and again is hard to swallow. I have given no indication whatsoever that I'm interested in docker or work with docker right now.
We should show the recommendation only occasionally or at most once per VS Code restart but not per window, not per window reload.

Showing exe based recommendations in every window is not new - we did this for WSL (@aeschli FYI).
@aeschli May I know if it works for you, if this changed once per VS Code restart?

I agree that showing it for every window does not make sense. (I was not aware of it)


reason: 'RLMObject subclasses with the same name cannot be included twice in the same target

!!! MANDATORY TO FILL OUT !!!

Goals

Expected Results

Actual Results

Steps to Reproduce

Code Sample

Version of Realm and Tooling

Realm framework version: ?
Realm Object Server version: ?
Xcode version: ?
iOS/OSX version: ?
Dependency manager + version: ?

xcode 11.5
iOS11(任何系统都有问题)
cocoapods 1.9.3
realm 5.0.2

@haokunjiang
Based on the title, is this related?


404 on application.js, unable to find other manifestts.

I've followed the instructions from the gem markdown.
For some reason I'm getting the rails 404 on /webpack/application.js.
I've tried adding other files alongside application.js but all I'm getting is "Can't find entry point 'main' in webpack manifest".  Re-running npm install and restarting Foreman doesn't fix the issue.
Any ideas what I'm doing wrong that would cause this strange behaviour?
Update: I've tried the steps in #58 but no fix.
Update 2: I figured out that I need to add main/main.js to the entry points in webpack.config.js but it's 404ing the same as application.js.

My bad there - we had some host rewriting going on to handle CDNs.   Might be worth mentioning adding extra files to webpack.config.js in the readme.


insert {server_name_indication, Host} tuple into ssl options only if not present

This PR changes fun insert_server_name_indication/2 to insert server_name_indication tuple into ssl options only if it is missing.

@k32 @jesperes  merge this ?


Failed to locate opened application window with appId: C:\Program Files (x86)\Microsoft\xxxxx\xxxxxxxx.exe, and processId: 4352

Winapp driver throwing exception when trying to start the application from session as below.
1)Tried open the app via processId , and could not get the session from windowhandle.
2)In catch toplevelwindow also not working.
Any solution for this issue?
Please suggest.
public class AppLauncherHelpers
{
private readonly string _windowsApplicationDriverUrl;
protected static WindowsDriver _session;
    public AppLauncherHelpers()
    {
        _windowsApplicationDriverUrl = "http://<IP_ADDRESS>:4723";

    }

    public WindowsDriver<WindowsElement> GetAppSessionAfterLaunch()
    {
        try
        {

            int processId= StartWinAppDriver();
            if (processId!=0 &&_session == null)
            {
                TearDown();

                DesiredCapabilities appCapabilities = new DesiredCapabilities();
                appCapabilities.SetCapability("app", @"C:\Program Files (x86)\Microsoft\xxxxxxx\xxxxxx.exe");

                appCapabilities.SetCapability("appWorkingDir", @"C:\Program Files (x86)\Microsoft\xxxxxxx.exe");
                _session = new WindowsDriver<WindowsElement>(new Uri("http://<IP_ADDRESS>:4723"), appCapabilities,TimeSpan.FromHours(1));

                //Process process = Process.GetProcessesByName("xxxxxx.exe");
                //_session = (WindowsDriver<WindowsElement>)process.

            }
            return _session;
        }
        catch(Exception Ex)
        {
            if (Ex.Message.Contains("Failed to locate opened application window with appId: xxxxxxxxx.exe"))
            {
                Thread.Sleep(10000);
                DesiredCapabilities desktopCapabilities = new DesiredCapabilities();
                desktopCapabilities.SetCapability("app", "Root");
                _session = new WindowsDriver<WindowsElement>(new Uri(_windowsApplicationDriverUrl), desktopCapabilities);
                Assert.IsNotNull(_session);

                WindowsElement XXXShellWindow = _session.FindElementByName("xxxxx.exe");
                string XXXShellTopLevelWindowHandle = (int.Parse(XXXShellWindow.GetAttribute("NativeWindowHandle"))).ToString("x");

                DesiredCapabilities appCapabilities = new DesiredCapabilities();
                appCapabilities.SetCapability("appToplevelWindow", XXXShellTopLevelWindowHandle);
                _session = new WindowsDriver<WindowsElement>(new Uri(_windowsApplicationDriverUrl), appCapabilities, TimeSpan.FromSeconds(20));
                return _session;
            }
            else
            {
                Assert.Fail("Unexpected error occured: {0}", Ex.Message);
                return null;
            }
        }

    }

    private int StartWinAppDriver()
    {
        int? id;
        string WinAppDriverExePath = ConfigurationManager.AppSettings["WinAppDriverPath"];
        Process process = Process.Start(WinAppDriverExePath);
        Thread.Sleep(5000);
        id = process.Id;
        return id ?? 0;
    }
    public static void TearDown()
    {
        // Close the application and delete the session
        if (_session != null)
        {
            _session.Quit();
            _session = null;
        }
    }
}

Any specific reason doing this way?

Hi @sparida1,
Can you confirm if the application launches anyway (regardless of the error)? This could be a bug on WinAppDriver's end.
If you're using a public Microsoft app, can you tell us which one it is?
Thanks


primary website attempts to install software

Your domain may have been hijacked.

Hi @randomprey thanks for raising the issue. The domain has expired, that's why. I have removed all redirections and restore the original github-pages url in the latest commit c59ad47535ccdd1d15ac79f2f8201129ed52dbc7


Update opentelemetry-exporter-jaeger, ... to 1.24.0

Updates

io.opentelemetry:opentelemetry-exporter-jaeger
io.opentelemetry:opentelemetry-exporter-otlp
io.opentelemetry:opentelemetry-sdk

from 1.16.0 to 1.24.0.
GitHub Release Notes - Version Diff
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

Adjust future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "io.opentelemetry" } ]

Or, add this to slow down future updates of this dependency:
dependencyOverrides = [{
  pullRequests = { frequency = "30 days" },
  dependency = { groupId = "io.opentelemetry" }
}]

labels: library-update, early-semver-minor, semver-spec-minor, commit-count:1

Superseded by #276.


new slot type: struct or dict slot type for complex slots (Contribution)

Some entities or in general extracted information from utterances might require structure, think of a time range as a simple case, but any heriarchical structure as the general case.
Such an entity might be represented by a JSON object or similarly a python dictionary. For example:
"time": {"value": {"from": ...., "to": ....}}
If we want to preserve such a structure as slots we would need a new type of slot.
In addition the domain could define what fields of an entity like that should be kept, featurized and used.
I am happy to submit a PR to extend the current slot types and domain logic around it if anyone else is interested in this extension.

i think this is a very custom use case, so we'll stick to the existing method of creating your own custom slot type :)


[Bug]:  markdown reader

Bug Description
If the beginning of the document does not match the header, some text information will be lost.
`
def markdown_to_tups(self, markdown_text: str) -> List[Tuple[Optional[str], str]]:
"""Convert a markdown file to a dictionary.
    The keys are the headers and the values are the text under each header.

    """
    markdown_tups: List[Tuple[Optional[str], str]] = []
    lines = markdown_text.split("\n")

    current_header = None
    current_text = ""

    for line in lines:
        header_match = re.match(r"^#+\s", line)
        if header_match:
            if current_header is not None:
                if current_text == "" or None:
                    continue
                markdown_tups.append((current_header, current_text))

            current_header = line
            current_text = ""
        else:
            current_text += line + "\n"
    markdown_tups.append((current_header, current_text))

`
Version
0.6.28
Steps to Reproduce
docs = reader.load_data(file="./data/VGC.md")
Relevant Logs/Tracbacks
No response

@logan-markewich
llama_hub/file/markdown/base.py (not working version) is out of sync with llama_index/readers/file/markdown_reader.py (working version)
The following code loads from the hub. Shall I go ahead and fix it?
from llama_index import download_loader

# Load the markdown reader from the hub
MarkdownReader = download_loader("MarkdownReader")
markdownreader = MarkdownReader()

@rjarun8  would be amazing if you can help update the two version to be consistent!


Add handling for salute, closer and signature

All should be blocks, with salute left-aligned and the other two right-aligned.

Done in rev 9327.


nan loss in MuLaN training

@lucidrains
While training MuLaN on a dataset of around 5.2k samples, the loss goes to nan after some 15-16k steps.
My batch size is 4, and the text part of the data samples are tokenized using:
from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("bert-base-cased")
text_in_numbers = tokenizer.encode(text)

Does it has something to do with the zero division? or square-root of 0 in the loss function?

it could be a number things, but definitely overtrained
also, for contrastive learning, a batch size of 4 is too small. even 64 is too small
yeah, this can only realistically be done over at open clip

how do your loss curves look before it diverged?

@lucidrains Thisi is how the loss looks like:

After some 20k steps, it becomes inf, and after a few more steps it becomes nan. The plot looks very strange to me.
Regarding the batch size, i tried to increase but i get memory error like this.
Also, i am only feeding 5.5 seconds of audio (at 16kHz) i.e., 88k samples to the model. If i increase this, i get the same memory error.

@ukemamaster (1) that's very abnormal haha (2) yeah, you need a lot of memory (3) i have an issue at open clip and an active PR that i'm working on, feel free to subscribe!

@lucidrains This is the PR you ar atalking about, right?
If it gets aaccepted, then what? Will we still need to train mulan? or we will get a pretrained one, ready to use?

@ukemamaster yes, that's the one. it will have to be trained and then served as a pretrained model. i'll write a wrapper to use it within this repository, similar to here. you should get involved; there's many researchers and startups interested in this

@lucidrains I am also waiting for a pre-trained model, for immediate use. Please make it available asap. Thank you.

@ukemamaster yes, that's the one. it will have to be trained and then served as a pretrained model. i'll write a wrapper for use within this repository, similar to here. you should get involved; there's many researchers and startups interested in this @ukemamaster 是的，就是这个。它将必须被训练，然后被用作预训练的模型。我将编写一个在这个存储库中使用的包装器，类似于这里。你应该参与进来有很多研究人员和创业公司对此感兴趣

@lucidrains Thank you for sharing and looking forward to your progress

to add on to this, using a batch size of 512, similar loss curve -> nan loss behavior,


Handle encoding of text responses/files

Responses can have a "charset" parameter in their Content-Type header, which controls how the bytest of the response should be decoded.
Freezing an application removes headers, so this info is lost. The Content-Type header is generated by the server of static pages from the file extension.
What should freezeyt do when it encounters a "charset" parameter?

I can't find a good use case for non-UTF-8 apps these days, so to avoid freezeyt doing the wrong thing, we could just make it fail.

fail if an app returns a non-utf-8 charset
fail if an app returns a text/* Content-Type without a charset

If someone complains, we can ask them for their use case and figure out what freezeyt should do.


Downloads packaged zipkin jars instead of buiding them

This also moves to JRE 8, which is safe, particularly as we aren't building code anymore.

:+1:  :see_no_evil:

Was it a conscious decision to use the fat jars instead of the tars? Not sure about the trade-off, just something to consider maybe. (Also, if we decide to go with tars, let's make sure to download and unpack in the same build step)

We aren't building tars any more. There was no user of them, so yes it was
conscious!

Great, thanks for explaining!
On Aug 22, 2015 2:34 PM, "Adrian Cole"<EMAIL_ADDRESS>wrote:

We aren't building tars any more. There was no user of them, so yes it was
conscious!
—
Reply to this email directly or view it on GitHub
https://github.com/openzipkin/docker-zipkin/pull/25#issuecomment-133688931
.


Config dir, log file and lock file command line options

Adds command line options for config dir, log file and lock file.
Keeps full backwards compatibility,
the default is to use the hardcoded CONFIG_DIR, LOG_FILE and LOCK_FILE.
Additionally took the opportunity to rewrite the command line option parsing using getopt.

Thanks for the patch. Unfortunately I'm not sure making these configurable at runtime is a good idea. Is there a particular problem you are trying to solve? See also #7, and #41.

I don't want to keep keyd configuration in /etc/keyd.
I also don't run it as root. It's not really mandatory to run this as root, on most distros if the user is in the "input" group you can do everything just fine.

The best way to achieve this is to symlink your config directory to /etc. This makes it clear that the config applies to the entire system. Even if you have access to /dev/input and /dev/event/* you can't run concurrent instances of the program anyway.

I truly do not understand the downside to being able to override the default configuration location.

Being able to modify the config directory at runtime gives the user with the false impression that multiple instances of the daemon can be run. Keeping it hard coded to /etc makes it clear that keyd is a system wide daemon like sshd or systemd.
If you really want to change the default config directory for some unorthodox system you can do so at compile time.
Additionally your patch allows changing the path of the lock file which would allow multiple instances to be run at once.
Finally, running as root is also mostly a non issue unless you have a weird threat model. If a malicious process has access to your input devices your system is effectively compromised anyway.

My particular use case is that I run keyd via a systemd service for my user, not root.
This is convenient for a few reasons. For example:

I have several distros and sometimes need to try something else and it always works.
When my girlfriend is using the computer and logs into her account she doesn't get my keyboard config.

I have several distros and sometimes need to try something else and it always works.

Can you clarify what you mean by this? If you are suggesting that some distros dont have /etc (I'm not aware of any) you can just modify the config path at compile time when you install the daemon.

When my girlfriend is using the computer and logs into her account she doesn't get my keyboard config.

This is a legitimate issue. However running as a user process spawned by systemd doesn't change the fact that multiple users can simultaneously be logged into the same machine (and consequently multiple keyd processes may be active).
Unfortunately there isn't a good way to solve this. Properly accommodating multi-user setups would require keyd to get into the business of seat/session management. At the moment it is really intended for single user setups.
Alternatively you could use the approach taken by most other operating systems and create a dedicated layout that can be toggled with a specific key combination.

This is rather unfortunate. I thought this would be an uncontroversial option.
Are you not willing have configurable file paths at all?

I am open to considering configurable paths if a good case can be made, however at the moment it is unclear what problem they solve. The lack of multi user support is a real issue that has been discussed elsewhere, but isn't one that is easily remedied by changing the config directory.
My concern is that these options will potentially cause more confusion and imply that the program can be used in ways that it cannot.

I understand your concerns, specially about the lock file.
Would you be willing to consider then something a bit more constrained?
When running as root everything would be the same with the default paths.
When running as a non-root user:

Looking for theconfig dir in $XDG_CONFIG_HOME/keyd (or $HOME/.config/keyd if XDG_CONFIG_HOME is undefined), /etc/keyd. In this order.
Creating the lock file in $XDG_STATE_HOME/keyd.lock (or $HOME/.local/state/keyd.lock if XDG_STATE_HOME is undefined)

Regarding the log file. I suggest simplifying here and simply dropping the -d daemonize option and always logging to stdout/stderr. This is almost always what you would want when running keyd via systemd.
If choosing the keep this option, I suggest something similar to the above.

Looking for theconfig dir in $XDG_CONFIG_HOME/keyd (or $HOME/.config/keyd if XDG_CONFIG_HOME is undefined), /etc/keyd. In this order.
Creating the lock file in $XDG_STATE_HOME/keyd.lock (or $HOME/.local/state/keyd.lock if XDG_STATE_HOME is undefined)

The problem with this approach is that it still allows multiple instances of keyd to be launched simultaneously.
Consider what happens when two users try and launch an instance at the same time. Only one instance can manage the input device at a given time and there is no way for the two processes to negotiate which one should take precedence.
This only works if one user is running the process at a given time and is courteous enough to clean up for the next user which logs in (which would require detecting session changes in the event that the original user does not log out).
At this point it is better to drop the pretense of multi-user support altogether and just have the interested user manage the system process.

Regarding the log file. I suggest simplifying here and simply dropping the -d daemonize option and always logging to stdout/stderr. This is almost always what you would want when running keyd via systemd.

Agreed, but the flag is still useful for systems which haven't jumped on the systemd bandwagon (there are still a few).

Still regarding the lock file.
Do we really need this? Can't you detect that some other instance (or even some other program) is already grabbing the device when you attempt to grab it in keyd?

Can't you detect that some other instance (or even some other program) is already grabbing the device when you attempt to grab it in keyd?

The grabs will silently fail rather than causing keyd to terminate. Having a dedicated lockfile is a better failure mode since it allows keyd to keep running in the event that some input devices are not grabbable (which can happen for a variety of reasons).
In any event, even if we failed eagerly multi user setups would still present the same problems.

I have a use case. I want to manage my user environment, including keyd and its config, via my dotfiles repo. NixOS doesn't know about my user config, and I don't want it to, so making a symlink from etc is not desirable. I would very much like to use keyd, but have been blocked for just over a year now by the lack of a config location cmdline option. @rvaiya could you possibly reconsider? It feels like quite a hard line. Thanks.

@edrex Can you elaborate on your use case? I've been meaning to revisit the issue by adding proper multi user support, which is why I've left this open.
I'm still opposed to making config directory configurable at runtime for the reasons outlined above, but am open to persuasion. The daemon will require root (or at least access to /dev/input) no matter what you do, so it is unclear what problem this solves (and why you can't just create a symlink)

I realize after some thought there are two main classes of use case for an input remapper:

as a "soft firmware" for globally modifying the event stream for input devices
in order to runtime monkeypatch "contextual" (ie shell and application specific) bindings

Both use cases are a kind of hack, but the first is more elegant and an appropriate use of root access, since the kernel is above the input hardware.
As for the second class.. using root access for them is inherently janky: why not change the bindings directly in the shell/application (even if you have to patch/recompile it)?
Even if contextual input rewriting is needed, this can better be done by the shell running on the tty, without needing root. Most wayland compositors provide a binding system (hyprland even supports global passthrough binds). There are also wlroots' virtual-pointer and virtual-keyboard for synthesizing events.
Lastly, maybe libinput could be used to create a bolt-on in-process input rewriting library with a user-facing config interface that shells can use?
Anyway, I think my answer is: maybe I should replace my custom keyboard hwdb rules with keyd, but I should look to higher level solutions for my contextual mappings.

And yes, I can add a symlink to etc for the first class. Just doing so for the second seems wrong to me (but that's not keyd's fault, I realize)

in order to runtime monkeypatch "contextual" (ie shell and application specific) bindings

[...]
using root access for them is inherently janky: why not change the bindings directly in the shell/application (even if you have to patch/recompile it)?

I generally agree with this, but the two are not mutually exclusive. Many applications don't provide a mechanism to rebind [all] keys which is why keyd-application-mapper is useful. It's also worth noting that users don't actually need root access to achieve this, they just need access to the keyd socket (though this should probably be treated as defacto root access given the opportunity for abuse). In any event, it's not really relevant to this issue.

Most wayland compositors provide a binding system (hyprland even supports global passthrough binds).
There are also wlroots' virtual-pointer and virtual-keyboard for synthesizing events

Yes, but there is no way (as far as I know) to add a global key hook. I doubt such a thing would ever be implemented since it appears to be contrary to one of wayland's design goals (which is one of the reasons keyd uses evdev).

Lastly, maybe libinput could be used to create a bolt-on in-process input rewriting library with a user-facing config interface that shells can use?

My understanding is that this is out of scope for libinput. It would also limit keyd's utility (libinput is not used everywhere). keyd was designed to handle multiple input sources and sinks, so it should be fairly easy to inegrate with any input system which provides the right hooks (e.g libinput). I already have experimental macos and windows ports sitting in a private repo.

Anyway, I think my answer is: maybe I should replace my custom keyboard hwdb
rules with keyd, but I should look to higher level solutions for my contextual
mappings.

+1. If in-application remapping facilities allow you to do what you want, and you don't mind spreading your bindings out across multiple configs, it might be worth avoiding keyd-application mapper altogether. I do this for terminal applications, since the alternative is to rely on ugly title setting hacks (and modal editors like vim need in-app context anyway).

Yes, but there is no way (as far as I know) to add a global key hook

It's true that there's no portable hook wayland clients can use to register a binding. I think such a protocol for this would be golden. I like the way @reificator put it in two HN responses to the question "Why would you ever let a non-focused application subscribe to any key combinations?":

It's a massive security issue that any installed software can listen to any input activity or view/affect other windows, and that does need to be reigned in. But to claim that there's no legitimate utility to global hotkeys is absurd. We need robust permissions, not a completely crippled experience.

Just let my application tell the window manager:

What key events I care about. (I.E. what the keybind should be named in the settings UI)
What script or message to pass back to me when that event is activated.
What the default keycombo should be, if any.

As mentioned above, Hyprland does support global binding via its pass dispatcher which globally passes events for a binding to a specified client. Bindings can be changed over IPC, satisfying the need for a hook. This is what I am planning to use for dispatching global bindings, instead of something running as root like keyd.

I doubt such a thing would ever be implemented since it appears to be contrary to one of wayland's design goals (which is one of the reasons keyd uses evdev).

What is the design goal you mean? I don't get a lot of the polarized positions people take around wayland, being a pragmatist at heart.

My understanding is that this is out of scope for libinput.

Makes sense. https://wayland.freedesktop.org/libinput/doc/latest/faqs.html#can-i-write-a-program-to-make-libinput-do-foo
.I was more thinking an indirection layer using libinput that makes it easy for processes already using libinput to implement an in-process event dispatch registry, possibly with a standard IPC interface (socket probably, or dbus, or wayland protocol, as a user I don't care). Does this make sense?

It would also limit keyd's utility (libinput is not used everywhere).

Absolutely. I guess I don't care as much about extreme portability, as long as it works across wayland compositors.

keyd was designed to handle multiple input sources and sinks, so it should be fairly easy to inegrate with any input system which provides the right hooks (e.g libinput). I already have experimental macos and windows ports sitting in a private repo.

What would a keyd libinput backend look like? Would it be an in-process library or what?

This is pretty off-topic for the keyd issue tracker, esp this PR. One more link and I'm done: [RFC] Add action binder protocol (!56) · Merge requests · wayland / wayland-protocols · GitLab


4.4 branch

4.4 Notebook; I ran by Stephen!

I've rebased this due to a tiny conflict with the readme and will go ahead and merge if the render looks all fine.
Thank you @aalvar23 for all this superb work!


Some YAMLs only work with JavaScript

Perhaps this issue has been raised before but here it goes.
Example: https://github.com/unitedstates/contact-congress/blob/master/members/P000593.yaml
Problematic URL in Form submission process: https://forms.house.gov/htbin/formproc_za/perlmutter/webforms/issue_subscribe_parm.txt&form=/perlmutter/webforms/issue_subscribe_verify.html

<script language="javascript">
//document.all.Submit.click();
document.forms[0].Submit.click();
</script>

As one can see, there is a final step at the end of this form submission process where JavaScript is submitting a form. If one uses a headless browser like Selenium then the JavaScript will execute and the form will submit. Otherwise, this is the last page that the steps defined by the YAML will reach (and thus not submitting the form).
It would be helpful to identify and fix the YAMLs where this issue occurs.

What exactly is the fix? A find command before success?

I'll submit a pull request soon with my fix for this example. All the YAMLs experiencing this problem have not been identified and so they may vary in how to fix. In the example from this issue, there needs to be additional steps for finding an clicking on the submit button since the javascript may not fire. So we can add to the end of the steps:
- find:
  - selector: "#sbutton"
- click_on:
  - selector: "#sbutton input[type='submit'][value='Submit']"

Which should fix the the issue in this example.
Additionally, the success page's body indeed does contain "Thank you for contacting me through my website" but it also contains the following in the head:
<META HTTP-EQUIV="refresh" CONTENT="10;url=http://perlmutter.house.gov">

Some drivers by default will honor this meta tag and treat the refresh as the final destination of the URL (ultimately causing failures because the final body text, in this case, is the homepage of the Rep.). This can be solved in a number of ways, but one is to set a "matches" attribute instead of "contains" in the success portion of the YAML with a regex for either the initial page or the page after refresh since either may be considered a success. Alternatively, we can ignore this issue and let the developer compensate by altering options of their driver (probably best for now).

cool, I'll be on the lookout for finds. And with refreshes, as you've said, I've made it work either by matching the first page or the one after refresh.


Fix a few typos in context docs

Thanks a lot @RobinTTY!
Due to policy, we do need the CLA signed even for very small changes like this. If you can sign it that's great, or I could just fix these if you don't want to.

Already did ;)

/gcbrun

Looking good here: https://pr1051-7a1c914---lit-dev-5ftespv5na-uc.a.run.app/docs/data/context/ :)


Bug and Suggestion

Whenever the code finishes it displays the list of squads and their member count but it exits out of CMD milliseconds after it displays the info.  Also, I would suggest adding each player's name and stats ID with the count. I only saw the finished product for ~ 1 second so these suggestions might already be implemented.

It sounds like you are executing it through the wrong process for this type of python program. Use an IDE that will execute the code and then pause, or run it directly from the terminal. As it looks like you are using Windows, when you are browsing the folder with the saved file in file explorer, you can click on the file path and replace the path with "cmd" and hit Enter. This will open command prompt inside that directory. From there, type "python xxxxx" and hit Enter to execute the python file (replace with your file name).
I can do some tweaks to an updated version of the code elsewhere that currently calls on discord.py for ease of access to multiple members. It generates two csv files that contain information like you suggest, each one for different purposes. These files would mean you can execute the code through the means you are currently as well. It should also be a tad faster as it's been optimised, however very little on speeds can be done when relying on page loading times with web scraping.

Purely from a QOL standpoint, storing it in a pandas dataframe (instead of a dictionary) makes it both easier to run analytics as well as natively export to csv (df.to_csv) or other formats (JSON, HTML, etc.). Feel free to take a look at how I did it in my colab-based version of this.


Sensors

hi, how can i get data from sensors like gyroscope, magnetic and others, ndk-sys? or is there a better solution?

At the moment, I solved the problem by getting sensor data through the android webview, but I would like to do without it


How to call the validator on a button click ?

I wish to call the validator on a button click and highlight the error, is that possible with this widget ?
I have seen the autoValidateMode mode, but is there a manual way to trigger the validate method and show the error ?

Yes you can, use AutovalidateMode.disabled and validate your form in demand by calling formKey.validate()
Where formKey is GlobalKey to be assigned to your Form .
don't forget to implement validator for your DropdownSearch
Take a look here .
Please don't hesitate to like the repo and the lib if it's helpful for you.


Intra-page hash links to sections are incompatible with Docusaurus 3.4

What package is the bug related to?
typedoc-plugin-markdown
Describe the issue
The plugin generates links to sections in the same document using hash fragments assuming that corresponding IDs are generated by markdown renderer. But there's no way to configure the format of those IDs.
In particular, when the generated markdown is integrated into a docusaurus site, the generated IDs do not match in case a section title contains spaces: docusaurus replaces spaces with -, while the plugin removes the spaces completely.
Docusaurus does not have any means to configure this as well
Example
Generated title and link for a type definition with multiple generic type parameters are as follows:
### MyType\<C, D\>

[`MyType`](README.md#mytypecd)

But docusaurus renders the following (class is ommited):

MyType<C, D><a class="hash-link" aria-label="Direct link to MyType<C, D>" title="Direct link to MyType<C, D>" href="/my-lib#mytypec-d">

TypeDoc configuration
module.exports = {
  name: 'Libraries',
  $schema: 'https://typedoc.org/schema.json',
  // Otherwise the docs will be generated for library types,
  // if those are extended.
  excludeExternals: true,
  // This output directory is also defined in
  // turbo.json: "//#typedoc".outputs[]
  // for caching purposes.
  out: 'docusaurus/docs/Libraries',
  // We do not want to include any top-level readme
  // for the Libraries section.
  readme: 'none',
  // entryDocument: '.no-readme',
  // docusaurus generates TOC for us
  hidePageHeader: true,
  hideBreadcrumbs: true,
  // Each package has its own subsection.
  entryPointStrategy: 'packages',
  plugin: [
    // Generates markdown rather than HTML
    // for docusaurus to consume.
    'typedoc-plugin-markdown',
  ],
  // Custom configurations to restore the flat structure
  outputFileStrategy: 'modules',
  excludeScopesInPaths: true,
  membersWithOwnFile: [],
  mergeReadme: true,
  parametersFormat: 'table',
};

Expected behavior
Expect to either out-of-the-box compatibility with docusaurus or means to configure hash-fragment links structure.

@allista thanks will review this. In the meantime setting "useHTMLAnchors" to "true" should provide a workaround. (This should write anchors to page in expected format).

Thanks, this helps.
But messes scrolling into view a bit: with an anchor added just above a title, the title itself is always not visible -- scrolled just one "line" too much.

Should be fixed properly in<EMAIL_ADDRESS>

@tgreyuk still incorrect, should be **-t-s


Make ghc-8.6.4 the recommended GHC

The thing is, we don't have FreeBSD tarballs yet, so what to do?

https://gitlab.haskell.org/ghc/ghc/issues/16134

@gwils

I don't have a good answer. It might be worth breaking FreeBSD in the meantime? Ideally we'd get the FreeBSD CI up and running. I don't have the skills for that or time to acquire them right now.


Exclude MLIR bindings from clang-tidy checks

Those bindings requires extra dependencies (like Python, pybind11) and clang-tidy fails to analyze the source files if they are not configured properly.

@joker-eph Could you please take a look.

@googlebot I signed it!

thank you @vinograd47


Add a podspec

Currently pod lib lint passes but pod spec lint would fail because the tag doesn't exist yet.

[x] Lint podspec on CI

Fixes #10.

👍

@jakecraige I could use a re-review now that I've added a bunch of changes for testing CocoaPods on CI.

Cool cool 👍


[Feature Request] Backwards 2.5 module compatibility with 3.0 runtimes.

I have not tested iOS yet, but on Android I can run the TNS Core modules 2.5 with the Android 3.0 Platform modules fine.  (See: https://github.com/NativeScript/android-runtime/issues/740) -- I would like to see if we can do the same thing with iOS and bring up the visibility to the team of trying to retain backwards compatibility for at least the short term future.
I realize that breaking changes might be needed and if they are any that are done; can we please link to the pull request in this issue, so I can track what changes I need to do in a custom branch of the 2.5 core modules at least for several months after 3.0 is released...
I have a real valid reason for this request and @ivanbuhov if you can contact me off-list<EMAIL_ADDRESS>-- I can share a private url which would make it immensely understandable the real critical need for this feature.

@NathanaelA The iOS Runtime (in its current state in master branch) is absolutely compatible with<EMAIL_ADDRESS>Additionally, we have no any planned effort for breaking this compatibility. My prediction is that in the final iOS Runtime v3.0 there won't be any breaking changes but of course I can't commit on this. Although v3.0 is a major version we are still conservative when it comes to breaking changes. Every breaking change introduction needs to be backed by valid arguments. However, if something down the road requires a breaking change to be introduced in the iOS Runtime, be sure that it will be announced publicly.

Here is a list of all {N} v3.0 breaking changes -> https://github.com/NativeScript/NativeScript/blob/master/Modules30Changes.md.

Thanks @ivanbuhov - For anyone reading this later; the tns-core-modules list above are most the major changes between 2.5 and 3.x; there are other changes that are not listed.


in the warm up example, can you elaborate on the backprop ?

In the backprop for the warm up example, to obtain the grad_w2, why is h_relu.T is required. when the derivative of dY_pred/dW2 = h_relu and DLoss/DY_pred = 2(y_pred - y), from chain rule, we obtain Dloss/Dw2 as h_relu * 2(y_pred - y) not h_relu.T * 2 (y_pred - y).
Can you explain why it is h_relu.T ???

I have written up a derivation here: http://cs231n.stanford.edu/handouts/linear-backprop.pdf


In touch screen mode, Unable to copy text

In touch screen mode, when selecting text and long pressing to pop up the "Copy Paste" option, the selection will be lost, resulting in the inability to copy text in touch mode

@qfmee please fill the issue template. We need to know your environment and steps to reproduce. If possible, please test again using latest nightly.

Please try the latest master builds. This issue should have been solved. Also, if this problem is still present, recreate issue with full template, as device, build and OS information is really important here

Please try the latest master builds. This issue should have been solved. Also, if this problem is still present, recreate issue with full template, as device, build and OS information is really important here

Avalonia: 11.0.5
Operation mode: Multi touch screen
Windows 11 and Ubuntu  also have this bug

@qfmee 11.0.5 is not nightly / master build. Check: https://github.com/AvaloniaUI/Avalonia/wiki/Using-nightly-build-feed


Bear emoji

There is a Bear Face emoji 🐻 already, which actually originated from a plush-toy Teddy Bear emoji, but it doesn’t work well in contrast to the Ox or Bull emoji 🐂 to signify falling 📉 and raising 📈 stock markets 💹, respectively. The [Water] Buffalo 🐃, Cow/Cattle 🐄 and Cow Face 🐮 emojis don’t offer a real improvement on that, neither would the proposed Polar Bear emoji #107. If a full-body Bear emoji was added, it should be drawn with a lowered head and the Bull with a raised head.
Proposals

Teddy Bear: L2/17-273 (source)

The candidate emojis for Unicode 11 include a Teddy Bear emoji as U+1F9F8.
http://www.unicode.org/L2/L2017/17284-emoji-recs.pdf


Make stream get return a stream directly

In the current version (2.x), the StreamQuery#get is implemented to return a Promise<Stream>. This is a little awkward, and an anti pattern as it mixes two way for coding asynchronously
The proposal is to have the promise handled in the library so that stream query returns only a quad stream, unwrapped from the promise.

Also, the status returned from the endpoint is lost; what would be a good signature for this?

@cristianvasquez I think this is only relevant for non-2xx status codes, or do you see other use cases? The status code could be attached to the error object like it's done by the http-errors package. Then it's possible to handle all errors with the error event of the stream. HTTP errors will have the status property.

implemented in #58


Waste & porta potty cost

Right now the Assessment pages show the Porta Potty & Waste cost:

But the project pages do not.
The project pages should have this feature, right? Just wanted to make sure that it wasn't changed to somewhere else, and I forgot about it.

Hi Andy - Yes, the Assessment and Project Pages should match the contents. WE originally thought that we could add those as Work Items to the project to help not make things quite so complicated for you. But, since you already have them, I think it is good to break them out like you have to be sure their planning is not messed up.

If these are left separate from Work Items, their costs still need to be added to the Project Cost totals in Assessment and Project.

Hi Andy - Let's make this easy (I hope). Remove the Costs for Porta Potty and Waste / Dump Trailer items on the checklist. The Check boxes should be checked to go to Project Approval. The costs for these will be accounted for as Work Items with materials details for number of rental days and daily or total costs as needed for the project.

I have included the costs into project as well as their own separate costs like the site assessment. Otherwise, you wouldn't be able to find these costs for the cost summary & paf pages. It's also included into cost summary and the paf page if they're checked as required.

OK Andy. How you have it is how Shawn wants it. :-)


implement flow version detection

not sure why you guys implemented React version detection without doing the same for Flow

Looks good, but let’s add tests (just like react detection has)

yup, done


Make 'Ask Me' example prefix optional

Adds a skill setting to disable the 'Ask Me' prefix in the homescreen examples display; default behavior is unchanged.

OSM test failing because PR comes from a forked repository

Partially addresses #4


New laravel 7 feature Date Serialization error with not UTC timezone

Laravel Version: 7.11.0
PHP Version: 7.3.7
Database Driver & Version: MySQL 5.7.30

Description:
Laravel configurated with a different timezone from UTC returns an object with an attribute cast as date in bad format.
Steps To Reproduce:
Config the laravel app with a timezone different from UTC.
/config/app.php -> 'timezone' => 'Europe/Madrid',
Create a model with an attribute cast as date that is stored in database as date format (not datetime or timestamp).
Return the model attributes in json.
In my case with a date stored in database as "2020-05-18" laravel returns the object as JSON with attribute value "2020-05-17T22:00:00.000000Z".
To solve it I override the function asDate in class 'HasAttributes' in my model with this:
protected function asDate($value)
{
return $this->asDateTime(Carbon::createFromFormat('Y-m-d', $value, 'UTC')->startOfDay());
}

https://laravel.com/docs/7.x/upgrade#date-serialization


RFR: Support globs and regexp query for metrics discovery

Very much a WIP, but the idea is to support glob patterns and regexp query with elastic search, in order to provide a rich query interface. Glob patterns are required because graphite's render api supports it and when people will use blueflood as its backend, it will be helpful to support globs. But elasticsearch does not support globs, so I am using a glob to regexp converter, and making regexp queries to ES.

Some general questions about the ES cluster:

What changes have to happen to the ES cluster itself to support this?
What about older metrics that aren't tokenized this way? do we have to rebuild all the indices?

Also, do you have any idea how these changes effect performance?

What changes have to happen to the ES cluster itself to support this?

We need to load the mappings into ES cluster via the API. When I tested it under staging, I was able to make the changes by just hitting the API, but there might be other way as well.

What about older metrics that aren't tokenized this way? do we have to rebuild all the indices?

Good question. I believe we will have to rebuild the indexes, I will take a look into it before deploying and update the PR over here.

do you have any idea how these changes effect performance?

While running my tests in staging, I was not seeing any considerable difference in performance,but I will test again before deploying this to prod. I would expect a slight change in performance since we will be creating indexes for more tokens than before, but again, I have been unable to see this yet.

Coverage increased (+0.47%) to 51.91% when pulling 49f2328493b1895dd5b9e8beac97c368422586ca on chinmay-gupte:chinmay/add_glob_support_in_blueflood_query into acc39a6045440c03128b1c9684c071a229302cba on rackerlabs:master.

Coverage increased (+0.47%) to 51.91% when pulling 96756b9acf050558f764f6a8eadcef17858d2f48 on chinmay-gupte:chinmay/add_glob_support_in_blueflood_query into acc39a6045440c03128b1c9684c071a229302cba on rackerlabs:master.

Coverage decreased (-0.49%) to 51.89% when pulling 662f6f58324839f540100b26987c6c57f6730137 on chinmay-gupte:chinmay/add_glob_support_in_blueflood_query into 5f3158b2dc0259bec984e2a15ff41b20e784c64d on rackerlabs:master.

Closing this in favor of https://github.com/rackerlabs/blueflood/pull/475


Bypass iptables for port 15021

Otherwise the health check is captured which leads to weird behaviors

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

Test name
Commit
Details
Rerun command

gencheck_istio
131dd6c1fecd1f1f89cfbccbab754261be7b8f85
link
/test gencheck_istio

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

/cherrypick release-1.6

@howardjohn: new pull request created: #23467

In response to this:

/cherrypick release-1.6

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


Members greenlighting

Got some code for us? Awesome 🎊!
Please include a description of your change & check your PR against this list, thanks!

[ ] There's a clear use-case for this code change
[ ] Commit message has a short title & references relevant issues
[ ] The build will pass (run npm test)

More info can be found by clicking the "guidelines for contributing" link above.

@rishabhgrg Not sure if this is well over the top with the number of flags we have

@allouis Looks good overall! 👍 Just curious why its affecting the DB/schema specs and hash, is it because its not initialized so tests don't even consider the tables? 🤔

@rishabhgrg The schema tests run on the hash of the schema.js file, and the test was out of date since we last changed the schema


sandbox - deprecate process.pid

process.pid is only being used in 1 place so far, I have checked. the process explorer must be using something else to figure out PIDs. It can probably not use process.pid because it works on all processes that are running in VSCode.


Update windows-iot-enterprise.md

Docs Build status updates of commit d47fd58:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

windows-iotcore/windows-iot-enterprise.md
:white_check_mark:Succeeded

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


Multiple Provisioners

Version
Karpenter: v0.9.1
Kubernetes: any version
Expected Behavior
From the docs FAQ page we have the following statement:
"By default, pods will use the rules defined by a provisioner named default. This is analogous to the default scheduler. To select an alternative provisioner, use the node selector karpenter.sh/provisioner-name: alternative-provisioner. You must either define a default provisioner or explicitly specify karpenter.sh/provisioner-name node selector"
This one was valid until v0.9.1, I had 4 provisioners (default - small spots only, spots large, on-demand, on-demand large), and only the default provisioner one was karpenter's option unless I pass the node selector for a different provisioner.
Actual Behavior
Since v0.9.1 (https://github.com/aws/karpenter/pull/1673) this logic is not valid anymore. I get instances from all of my provisioners and I don't pass the specific node selector. In addition, spots are not preferred as they were before (I get a lot of on-demand instances although spot capacity available)
If it's a new scheduling logic and not a bug please update the docs and help us understand how to achieve the same thing I had before.
Steps to Reproduce the Problem
create multiple provisioners.

Sorry, that appears to be an error in the docs.  I'm not sure if Karpenter has ever had that behavior.  If multiple provisioners match, it used to pick the first one sorted alphabetically.
From the best practices guide, we recommend mutually exclusive provisioners.
Karpenter currently schedules across provisioners so there isn't an ordering guaranteed if multiple provisioners can potentially schedule a pod.  To make your provisioners mutually exclusive, you could add a different taint to your three "non-default" provisioners and instead of adding a label selector, add a toleration to your workloads.

Thanks for the explanation. Closing this one.


Footer: Added total people in address book

Added an entry in the footer showing the total people stored in the address book

Coverage increased (+0.03%) to 91.546% when pulling 31fa6e2173314cccf99d448c730e2812c6e0b1e8 on zacharytang:footer_number_persons into 14f3f27f693b913c36d6ff1b0af6e5aba93d58f5 on CS2103AUG2017-W09-B1:master.

Coverage increased (+0.03%) to 91.546% when pulling b140d01e29d3f844208d94843945688da9c0b5e4 on zacharytang:footer_number_persons into e07b78f8d363d964f6dd8f75d07ab6d06a09b9ab on CS2103AUG2017-W09-B1:master.


Todo: Add a timeout on regular tasks

https://discord.com/channels/150662382874525696/780516096335282206/1259262816066605096

Basic framework is in place locally but the actual cancelling is proving extremely difficult due to considerations like https://stackoverflow.com/a/44545953


for doesn't initialize the i variable

Executing the following program
ask {
  for(let i = 3; i < 0; i = i-1) {
    return true
  }
  return false
}

results in an error:
Error: Unknown identifier 'i'!
Expected: program run successfully and returns true

Seems solved with https://github.com/xFAANG/askql/pull/212/


New automation functions for Projects

Summary
As part of improving automation in your projects we will be adding in new functions to allow you to automate more of your projects workflow.
For example, this would include:

[x] Archiving an item
[ ] Triggering an Action workflow run

New automations auto-archive and auto-add are now available to everyone.
Stay tuned for additional automations such as `close an item when moved to done' which are planned for the future.


🐛BUG: Storefront and dashboard both broken

I ran all the steps as explained in the readme (I did this before in previous versions with no problem).
But now, after running docker-compose up the landing page in port 8000 shows the links to the apps, but Storefront and Dashboard are both broken.
In the terminal I see several errors like:
storefront_1  | ERROR in useCheckoutStepState.ts
storefront_1  |<EMAIL_ADDRESS>storefront_1  | [tsl] ERROR in useCheckoutStepState.ts(16,5)
storefront_1  |       TS1005: ':' expected.
storefront_1  |<EMAIL_ADDRESS>13:9-42
storefront_1  |<EMAIL_ADDRESS>storefront_1  |<EMAIL_ADDRESS>storefront_1  |<EMAIL_ADDRESS>storefront_1  |  @ ./src/index.tsx
storefront_1  |  @ multi (webpack)-dev-server/client?http://<IP_ADDRESS>:3000 (webpack)/hot/only-dev-server.js ./src/index.tsx

and
storefront_1  | TS2305: Module '"../../../../node_modules/@types/react-router-dom"' has no exported member 'useLocation'.
storefront_1  | ERROR in /app/src/@sdk/network/index.ts(338,9):
storefront_1  | TS2322: Type '{ checkoutInput: { billingAddress: { city: string; companyName: string; country: string; countryArea: string; firstName: string; lastName: string; phone: string; postalCode: string; streetAddress1: string; streetAddress2: string; }; email: string; lines: { ...; }[]; shippingAddress: { ...; }; }; }' is not assignable to type 'CreateCheckoutVariables'.
storefront_1  |   Types of property 'checkoutInput' are incompatible.
storefront_1  |     Type '{ billingAddress: { city: string; companyName: string; country: string; countryArea: string; firstName: string; lastName: string; phone: string; postalCode: string; streetAddress1: string; streetAddress2: string; }; email: string; lines: { ...; }[]; shippingAddress: { ...; }; }' is not assignable to type 'CheckoutCreateInput'.

and in the terminal (browser) I see several errors like: (for storefront)
useCheckoutStepFromPath.ts:27 Uncaught Error: Module parse failed: Unexpected token (7:54)
You may need an appropriate loader to handle this file type.
| exports.useCheckoutStepState = (items, checkout, payment) => {
|     const isShippingRequiredForProducts = items &&
>         items.some(({ variant }) => variant.product ? .productType.isShippingRequired
|             :
|         );
react_devtools_backend.js:6<EMAIL_ADDRESS>Module not found: Error: Can't resolve '@stripe/react-stripe-js' in '/app/src/@next/components/organisms/StripeCreditCardForm'
react_devtools_backend.js:6 CartSummary.tsx
<EMAIL_ADDRESS>[tsl] ERROR in CartSummary.tsx(76,13)
      TS1005: ':' expected.
r @ react_devtools_backend.js:6
errors @ client:168
onmessage @ socket.js:41
EventTarget.dispatchEvent @ sockjs.js:170
(anonymous) @ sockjs.js:887
SockJS._transportMessage @ sockjs.js:885
EventEmitter.emit @ sockjs.js:86
WebSocketTransport.ws.onmessage @ sockjs.js:2961
react_devtools_backend.js:6 CheckoutAddress.tsx
<EMAIL_ADDRESS>[tsl] ERROR in CheckoutAddress.tsx(36,39)
      TS1109: Expression expected.

and in the terminal (for backend) I see these errors:
index.tsx:1 Uncaught Error: Module build failed (from ./node_modules/babel-loader/lib/index.js):
Error: Cannot find module '@babel/plugin-proposal-optional-chaining' from '/app'
    at Function.module.exports [as sync] (:9000/app/node_modules/resolve/lib/sync.js:74)
    at resolveStandardizedName (:9000/app/node_modules/@babel/core/lib/config/files/plugins.js:101)
    at resolvePlugin (:9000/app/node_modules/@babel/core/lib/config/files/plugins.js:54)
    at loadPlugin (:9000/app/node_modules/@babel/core/lib/config/files/plugins.js:62)
    at createDescriptor (:9000/app/node_modules/@babel/core/lib/config/config-descriptors.js:154)
    at items.map (:9000/app/node_modules/@babel/core/lib/config/config-descriptors.js:109)
    at Array.map (<anonymous>)
    at createDescriptors (:9000/app/node_modules/@babel/core/lib/config/config-descriptors.js:109)
    at createPluginDescriptors (:9000/app/node_modules/@babel/core/lib/config/config-descriptors.js:105)
    at plugins (:9000/app/node_modules/@babel/core/lib/config/config-descriptors.js:40)
    at eval (index.tsx:1)
    at Object../src/index.tsx (dashboard.js?8fc242e5fa5506fef701:1188)
    at __webpack_require__ (dashboard.js?8fc242e5fa5506fef701:727)
    at fn (dashboard.js?8fc242e5fa5506fef701:101)
    at Object.0 (dashboard.js?8fc242e5fa5506fef701:1201)
    at __webpack_require__ (dashboard.js?8fc242e5fa5506fef701:727)
    at dashboard.js?8fc242e5fa5506fef701:794
    at dashboard.js?8fc242e5fa5506fef701:797
eval @ index.tsx:1
./src/index.tsx @ dashboard.js?8fc242e5fa5506fef701:1188
__webpack_require__ @ dashboard.js?8fc242e5fa5506fef701:727
fn @ dashboard.js?8fc242e5fa5506fef701:101
0 @ dashboard.js?8fc242e5fa5506fef701:1201
__webpack_require__ @ dashboard.js?8fc242e5fa5506fef701:727
(anonymous) @ dashboard.js?8fc242e5fa5506fef701:794
(anonymous) @ dashboard.js?8fc242e5fa5506fef701:797
client?8a49:48 [WDS] Hot Module Replacement enabled.
client?8a49:52 [WDS] Live Reloading enabled.
client?8a49:150 [WDS] Errors while compiling. Reload prevented.
errors @ client?8a49:150
eval @ socket.js?e29c:47
sock.onmessage @ SockJSClient.js?0a33:63
EventTarget.dispatchEvent @ sockjs.js?9be2:170
eval @ sockjs.js?9be2:888
SockJS._transportMessage @ sockjs.js?9be2:886
EventEmitter.emit @ sockjs.js?9be2:86
WebSocketTransport.ws.onmessage @ sockjs.js?9be2:2962
client?8a49:159 ./src/index.tsx
Module build failed (from ./node_modules/babel-loader/lib/index.js):
Error: Cannot find module '@babel/plugin-proposal-optional-chaining' from '/app'
    at Function.module.exports [as sync] (/app/node_modules/resolve/lib/sync.js:74:15)
    at resolveStandardizedName (/app/node_modules/@babel/core/lib/config/files/plugins.js:101:31)
    at resolvePlugin (/app/node_modules/@babel/core/lib/config/files/plugins.js:54:10)
    at loadPlugin (/app/node_modules/@babel/core/lib/config/files/plugins.js:62:20)
    at createDescriptor (/app/node_modules/@babel/core/lib/config/config-descriptors.js:154:9)
    at items.map (/app/node_modules/@babel/core/lib/config/config-descriptors.js:109:50)
    at Array.map (<anonymous>)
    at createDescriptors (/app/node_modules/@babel/core/lib/config/config-descriptors.js:109:29)
    at createPluginDescriptors (/app/node_modules/@babel/core/lib/config/config-descriptors.js:105:10)
    at plugins (/app/node_modules/@babel/core/lib/config/config-descriptors.js:40:19)
errors @ client?8a49:159
eval @ socket.js?e29c:47
sock.onmessage @ SockJSClient.js?0a33:63
EventTarget.dispatchEvent @ sockjs.js?9be2:170
eval @ sockjs.js?9be2:888
SockJS._transportMessage @ sockjs.js?9be2:886
EventEmitter.emit @ sockjs.js?9be2:86
WebSocketTransport.ws.onmessage @ sockjs.js?9be2:2962
favicon.ico:1 GET http://localhost:9000/favicon.ico 404 (Not Found)

Hey @kilinkis, most likely this is a local problem with Docker that failed to update/rebuild containers. We added instructions in the README how to rebuild the containers and fix such issues: https://github.com/mirumee/saleor-platform#how-to-solve-issues-with-lack-of-available-space-or-build-errors-after-update
Let me know if this helps.

ah! nice catch @maarcingebala! thanks, that did the trick :)
for other people with the same issue, I think when this failed I had less than 10gb free in my disk.


Glacier UploadArchive returns Missing Parameter (API Version)

Aws::Glacier::Model::UploadArchiveRequest req;
req.SetVaultName(my_vaultname);
req.SetArchiveDescription(my_description);
req.SetChecksum(treehash);

req.SetBody(Aws::MakeShared<Aws::FStream>(NULL, path, std::ios::in));

auto outcome = my_glacier_client->UploadArchive(req);

I get a HTTP 400 response that decodes as MissingParameterValueException (Required parameter missing: API version). Looking through the trace I can't see any reference to x-amz-glacier-version being sent.
Am I doing something wrong?

You are not doing anything wrong, we need to add some customizations to the glacier client.

Fixed in latest push.


Phis should be more universal

As pointed out by @amarekano here, Fuzzilli currently is unable to generate code like this:
for (let v2 in v0) {
    ...;
    v2 = 42;
    ...;
}

Or like this:
function v3(v4, v5) {
    ...;
    v4 = "foobar";
    ...;
}

The reason is that our current Phi variables (those that can be reassigned) have to be created through the Phi operation, so variables produced by any other operation can never be reassigned.
One possible solution might be to change the meaning of the Phi operation: instead of creating a new variable, it reassigns any existing variable - essentially what the Copy instruction currently does, but now any variable would be allowed. The Copy operation would then be removed. Then, e.g. the first example can be written in FuzzIL as follows
BeginForInLoop v0 -> v2
    ...
    v3 <- LoadInt 42
    Phi v2, v3
    ...
EndForInLoop

This would still make it explicit when a variable is reassigned and so e.g. the AbstractInterpreter should be able to support this with minimal changes. On the other hand, additional work has to be done during lifting, in particular, the lifter would need to know what variables end up as input to a Phi node and declare them as let rather than const. However, determining those variables should be trivial and can probably already be done in the ProgramBuilder.
As an added bonus, this change would probably get rid of some special handling, e.g. here and it would remove the need to manually create Phi nodes in various CodeGenerators, e.g. here. All in all, this should make variable reassignments a more "natural" thing in Fuzzilli.

I made a quick attempt at implementing this, and it seems to not be a huge amount of work! :)
Probably some documentation should be updated etc, but it already seems to work: https://github.com/googleprojectzero/fuzzilli/pull/122

Probably, with this we can now also stop doing this https://github.com/googleprojectzero/fuzzilli/blob/8a7f4f36476e9ccd8f32589d203756c863acb0a5/Sources/Fuzzilli/FuzzIL/Operations.swift#L459 and just translate these as ++ and -- since we've effectively given up on SSA form anyway now :)

Closed by https://github.com/googleprojectzero/fuzzilli/pull/122


Feature request: Leverage new DynamoDB Failed Conditional Writes behavior

Description of your changes

Related issues, RFCs

Issue number:
Checklist

[ ] My changes meet the tenets criteria
[ ] I have performed a self-review of my own code
[ ] I have commented my code where necessary, particularly in areas that should be flagged with a TODO, or hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[ ] My changes generate no new warnings
[ ] I have added tests that prove my change is effective and works
[ ] The PR title follows the conventional commit semantics

Breaking change checklist
Is it a breaking change?: NO

[ ] I have documented the migration process
[ ] I have added, implemented necessary warnings (if it can live side by side)

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.
Disclaimer: We value your time and bandwidth. As such, any pull requests created on non-triaged issues might not be successful.

Hey @tolutheo ,
thank you for submitting your first PR to the project 🙏. Before we dive deeper into review, make sure to follow our contributor guide to link the issue and also describe your changes.
In the meantime, I will take a look at the code so we can start the review.
Thanks a lot!

I've put the PR back into draft mode because the new implementation breaks the integration tests.
I'll be working on verifying whether this is because the tests were too rigid or if indeed the implementation needs tweaking.

I have refactored slightly the implementation and reverted most of the changes made in the unit tests.
The current implementation follows this logic:
When the DynamoDBPersistenceLayer tries to save a new idempotency record to the table it does so using a conditional write. If the condition fails because of an already existing record an IdempotencyItemAlreadyExistsError error is thrown.
Starting from this PR the write operation leverages a new-ish feature that allows the DynamoDB to return the item that caused the condition to fail. When an item is returned as part of the conditional write error, the DynamoDBPersistenceLayer includes the item as part of the IdempotencyItemAlreadyExistsError thrown.
Upper in the call stack, in the IdempotencyHandler, when the IdempotencyItemAlreadyExistsError error is handled, if an item reference is present it's used directly instead of doing an additional read to retrieve it. If instead the item is not included in the error, the flow continues as it was before this PR with the IdempotencyHandler trying to read the existing item from DynamoDB.
The change had to be made this way because the new feature is available only in newer AWS SDK versions (v3.363.0 or newer). This means that customers using older versions or any of the versions included in the Lambda managed runtimes (including the newer Node.js 20 one) won't be able to leverage this feature since older versions of the SDK don't include the item in the conditional write error.

The integration tests are now passing as well: https://github.com/aws-powertools/powertools-lambda-typescript/actions/runs/7264829881/job/19793782219


review issue labels (tags)

I labeled (tagged) all issues and discussions so now you can search eg like this:

There's also https://github.com/Sveino/Inst4CIM-KG/labels, a nice dashboard.
Please review tags.

Add some more?
Maybe we don't need the standard ones (have 0 in the dashboard above)
Change some colors

Let's keep new issues tagged! We should periodically check is:open is:issue no:label and add tags where missing.
Since there are many issues, we need to worry about prioritization.
After the discussion: when you want me to start working on something: assign it to me and tag it approved
If you like, add a section Working With Labels in the root README

Some ideas

AP (ApplicationProfile) - issues related to the profile description
serialisation - issues on serialisation - we may want to have json-ld as well
vocabulary - to cover RDFS stuff
constraints - to cover shacl stuff, but we can also have shacl instead
specification- when we need to also change some standard or specification rather than the e.g. serialisation bug in a RDFS export

@griddigit-ci answering your bullets in order, :

there already is profile: "Pertains to profiles, packages"
serialization: there is turtle, jsonld, rdfxml
there already is ontology: "Pertains to ontology representation, reasoning"
there already is shacl
added spec: "Need to also change some standard or specification"

I added on top (end of description) some more guidance about labels, do you agree?


Adapt changes inc release 1.13

The docs for this PR live here. All of your documentation changes will be reflected on that endpoint.


[ready to review] local feature detection rebased

ToDo:

[x] Numerical tests for orientaton, affine_shape and fully integrated pipeline
[x] Make sure thas integrated pipeline works with batch

Breaking changes: CornerHarris now has not normalization and nms inside

@ducha-aiki one more thing, please add here or in a next PR the new methods to docs


[Typescript] Add missing direction to theme

ThemeOptions was missing direction . I also reordered the props so that it matches Theme.

@pelotom Is this better?

Perfect 👌🏼


python311Packages.aiolifx: 1.0.2 -> 1.0.3, python312Packages.aiolifx-themes: 0.4.17 -> 0.4.18

Description of changes

Things done

Built on platform(s)

[ ] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
24.11 Release Notes (or backporting 23.11 and 24.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[ ] Fits CONTRIBUTING.md.

Add a :+1: reaction to pull requests you find important.

Result of nixpkgs-review pr 320103 run on x86_64-linux 1

17 packages built:

home-assistant-component-tests.lifx
python311Packages.aiolifx
python311Packages.aiolifx-connection
python311Packages.aiolifx-connection.dist
python311Packages.aiolifx-effects
python311Packages.aiolifx-effects.dist
python311Packages.aiolifx-themes
python311Packages.aiolifx-themes.dist
python311Packages.aiolifx.dist
python312Packages.aiolifx
python312Packages.aiolifx-connection
python312Packages.aiolifx-connection.dist
python312Packages.aiolifx-effects
python312Packages.aiolifx-effects.dist
python312Packages.aiolifx-themes
python312Packages.aiolifx-themes.dist
python312Packages.aiolifx.dist


Issue with

I'm using custom express server where I import
const next = require('next')
and have my custom routes.
However for those handled by
server.get('*', (req, res) => {
    return handle(req, res)
  })

<style jsx> doesn't seem to be added properly when rendered by server.
With the example/basic-css running next produces
<style id="__jsx-style-845480676">.hello[data-jsx="845480676"] {font: 15px Helvetica, Arial, sans-serif;color:#FF0000;}.hello[data-jsx="845480676"]:hover {background: #ccc;}</style>
while running with custom server, this is not injected.

Can you Provide an example repository?

@timneutkens after upgrading to the latest version.
It works fine now!!! thanks a lot!

@stephentan great :shipit: 🚀


Are Labels Required in Self-Supervised Pretraining?

Edit I found a closed issue https://github.com/facebookresearch/vissl/issues/452 regarding similar problems, the clusterfit run error did not occur again. However, I still have some doubts about the data folder so I edited the title.
Questions
1.I originally thought that I don't need labelled data to do pretraining tasks. However, in this page of the vissl documentation, (https://vissl.readthedocs.io/en/v0.1.5/getting_started.html#running-simclr-pre-training-on-1-gpu), the ImageNet-1K dataset is assumed to look like this
train/
    <n0......>/
        <im-1-name>.JPEG
        ...
        <im-N-name>.JPEG
        ...
    <n1......>/
        <im-1-name>.JPEG
        ...
        <im-M-name>.JPEG
        ...
    ...
val/
    <n0......>/
        <im-1-name>.JPEG
        ...
        <im-N-name>.JPEG
        ...
    <n1......>/
        <im-1-name>.JPEG
        ...
        <im-M-name>.JPEG
        ...
    ...

The tutorial works fine when I use the imagenet1k dataset. The problem is that the data I plan to use has a large portion of unlabelled images.  I understand that I don't need to incorporate the labels in pretraining commands, but I still need the labels (which I won't have access to) to put every image in the correct folder (class). Is their a way to avert this?
I tried to pretrain simclr with a data folder which looks like this
{Wall_Data}
train/
    pretrain/
        <im-1-name>.JPEG
        ...
        <im-N-name>.JPEG
        ...
        <im-1-name>.JPEG
        ...
        <im-M-name>.JPEG
        ...
    ...
val/
    <n0......>/
        <im-1-name>.JPEG
        ...
        <im-N-name>.JPEG
        ...
    <n1......>/
        <im-1-name>.JPEG
        ...
        <im-M-name>.JPEG

I put all the unlabelled data in the "pretrain" folder. The training works, however I am not sure how arranging the data in this format affects the result.
Also the checkpoint.torch file is always broken when I pretrain with simclr, but I can still somehow obtain the model_phaseXX.torch for each epoch. <-Is this problematic?

The test set comes from the val folder, the validation set comes from the train folder.<- Is this correct?

I extracted features using Clusterfit following the instructions in this closed issue https://github.com/facebookresearch/vissl/issues/452, the resulting output are numpy files. Am I done training clusterfit or further steps are required? Since I don't really understand how to make use of these files.

Hi @Cthollyz,
First of all, thank you for using the repository and thank you even more for raising the issue !
Let me address each of your points one by one.
## For point 1
Indeed, the disk_folder follows the format of Pytorch and requires a sub-folder structure. It is clearly not optimal when doing pre-training on unlabelled data. The trick you mentioned of having a "pretrain" folder as only "class" should work fine, and should not affect the results in any way as far as my understanding goes (since the labels are not used).
You can also use alternative formats such as "disk_filelist" which requires to have a ".npy" file holding a list of image paths, and if you have labels, a ".npy" file holding the corresponding labels (in integer or string format).
Here is one example:
    "inaturalist2018_filelist": {
        "train": ["/inaturalist/train_images.npy", "/inaturalist/train_labels.npy"],
        "val": ["/inaturalist/val_images.npy", "/inaturalist/val_labels.npy"]
    },

You can omit the "*_labels.npy" if you do not have such labels.
For point 2
The content of the "dataset_catalog.json" is what matters in defining what split ("train" or "val") is taken from which directory. If the file contains this:
    "my_dataset": {
        "train": ["/path/to/my/dataset/train", "<lbl_path>"],
        "val": ["/path/to/my/dataset/test", "<lbl_path>"]
    },

Then the "val" split will be in fact the "test" folder, and the "train" split the "train" folder. By changing the dataset catalog (or adding multiple entries for multiple splits), you can have different mappings for the same dataset files.
For point 3
The ClusterFit step will produce ".npy" files that are compatible with the "disk_filelist" format that I mentioned for point 1. What ClusterFit does is basically create a new dataset associating images to labels, labels that are derived from the clusters of features.
Then you can use these files to do supervised training on this new dataset. To do so, create a new entry in the "dataset_catalog.json" like so:
    "cluster_filelist": {
        "train": ["/out_of_cluster_fit/train_images.npy", "/out_of_cluster_fit/train_labels.npy"],
        "val": ["/out_of_cluster_fit/val_images.npy", "/out_of_cluster_fit/val_labels.npy"]
    },

You can then run a pre-training on the dataset named "cluster_filelist".
I hope this helps ! If not, don't hesitate to ask :)

I am sorry for my late response. Thank you for your informative response, helped a lot in my understanding of VISSL.


Forward refs in enum initializers

Fixes #3963

:+1:

marking as a breaking change as this change enforces the rule for non-const enums as well.
enum E {
    value1 = value2,   // this is now an error
    value2 = 0.
}


feature - integrate ta.cash

Hi team,
I find a very interesting tool for sending/requesting tip named https://ta.cash/
which is built by AlphaWallet team.
As a tip sender/receiver, he could connect to twitter, and send tip to a twitter user.
So he doesn't need to know the receiver's address.
Ta.cash is live on Polygon, try it ;)

this is not the direction we are going.