Mouse event drop into pyglet window

This is a request for a feature, which I think it is not available in pyglet yet.
Are there plans to implement a feature similar to the "glfwSetDropCallback" in glfw or "SDL_DropEvent" in sdl(2)?
I just thought a drag'n'drop event for in dropping a file path to load data without always to reload the program for new data (especially if you quickly want to browse through several files at once) might be very useful. A tedious way would be writing a fully functional file manager, but I want to reserve this as my last resort for now. The normal way (but usually tedious for enduser) might be calling the program via terminal and file path as parameter.

Hi John,
There are no current plans to add drag and drop support, but it would be nice to have. Drag and drop works differently between platforms, so it would take a bit of work to do. Let's Mark this as an enhancement, and leave it open.

Thank you for considering this idea ^^

I second this idea!
As a work around, I have been using pymsgbox prompts to load data. It plays very nicely with pyglet. I copy a file path and paste it into the prompt box.
from pymsgbox import prompt

def open_this(path):
     # do something

@window.event
def on_mouse_press(x, y, button, modifiers):
       path = prompt('Load data from this file path:', "Select File")
       open_this(path)

Hmm, pymsgbox looks like it's build with Tkinter. It has the feeling of it at least, good idea.
But unfortunately, since it is not the only feature I needed, I already went with GLFW (wrapper in python) some time ago and wrote some "ready to go" functions from pyglet from scratch (it was handy to use it in pyglet though). GLFW already has mouse event drop implemented. Furthermore, the shader version is newer, which is what I also needed to be reliable recent.
Still, I am a bit confused that the shader in pyglet seems to only run 1.3 reliable enough.. maybe it will be different with pyglet 2 or something.
Maybe future pyglet could make that mouse drop event work in Gnome too. In Gnome currently, drag'n'drop is not working for most of the apps out there. Funny is that I not noticed it before actually trying to drag anything at work on Gnome, since I'm a faithful user of Xfce.

I added a file drop event for Windows here today if anyone wants to test it, based off 1.5 branch: https://github.com/caffeinepills/pyglet/tree/drop_event
Example:

window = pyglet.window.Window(800, 600, file_drops=True)

@window.event
def on_file_drop(x, y, paths):
    print("FILES DROPPED:", paths)
    print("AT POSITION", x, y)

pyglet.app.run()```

Unfortunately, I don't have any Mac or Linux computers, so I can't really test to add support there. However, I'm positive both OS's support it, so it shouldn't be too tough if someone wants to add it sometime.

Also just added Linux support, I realized I could setup a VM of Ubuntu to test things. Seems to work ok for me on a VM. Test it out, let me know of any issues.

Linux works too :+1:

Whaaat. You guys are the best! Can't wait for this to be merged!

Cool, in any case a nice addition to the pyglet library!

Just wanted to mention before closing, that this feature is in latest pyglet releases, thanks to the hard work by @caffeinepills!
OSX support has not yet been added due to lack of development hardware, but hopefully we can get some support for adding that in the near future as well.


fatal error:: configuration file not found at /root/instapy-config.json

After lots of trial and error, I have finally made it to the very last step...but now I can't get passed this error message:
user123@computer123:/usr/share/wordlists$ sudo instagram-py -u username123 -pl rockyou.txt.gz
Instagram-Py 2.0.7 , Slick Instagram brute force command line tool.
Copyright (C) 2018 The Future Shell , Antony Jr.
[+] Started @ 2018-11-22 07:45:28.707465
fatal error:: configuration file not found at /root/instapy-config.json

python instagram-py -dc
AnalJesus

just move  instagram-config.json file  to  /root ..
cp instagram-config.json  /root/


Add Tooltip Container

What kind of change does this PR introduce?:
Add a div in body holding the tooltips to clean up the body
Did you add tests for your changes?:
No
Summary:
Add a div into the body element which contains the tooltips to clean up the DOM
Does this PR introduce a breaking change?:
No
Other:

Hi,
thank you for your contribution, but unfortunately it will be irrelevant in the next few days.
A new version is going to be pushed that dynamically add/remove the tooltips.
For that reason, there will be no need for a container.
The codebase is finished, I am porting/editing the documentation and will push all that this week.


Add support for force push and force-with-lease

This PR introduces support for force pushing with and without lease.
Force pushing is disabled by default, and if enabled, it will use force-with-lease unless set otherwise. This is to deter people that aren't aware of the consequences that the action might have. There is also a confirmation dialog which can be configured to never show if the user wants. Separate command variants with force are added to differentiate them from regular pushing, but those will not show if the option is not set to allow it.
Made this PR before realising the work made in #53170 but I think this provides enough additional value to be considered over that one.
Please be aware that English is not my primary language, so even if I made my best effort to avoid typos, I might have missed some.
This fixes #53045

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.:x: nesukun sign nowYou have signed the CLA already but the status is still pending? Let us recheck it.

@joaomoreno Please let me know if you need anything from me or I can help in any way to push this forward.

@nesukun All good so far

Resolved conflicts :)

Great job! Thanks! :beers:

Using Code 1.28.0 (431ef9da3cf88a7e164f9d33bf62695e07c6c2a9) I'm unable to see this new pushForce from the "More actions..." context menu.

@qkdreyer unfortunately, the command is only available through the command palette as it was considered a 'dangerous' or 'advanced' operation. I'll create an additional PR to get the option added there and let the maintainers decide wether or not it should appear there.

@nesukun Nice PR! I just saw this in the release notes.
I wanted to point out that there might be a couple ways to avoid making a mistake for the GUI users.

Use force-with-lease since it's almost always a better choice then plain force. Probably don't even need a GUI option for plain force.
Avoid showing force-with-lease for the default/master branch and only show this GUI option for non-default branches. These branches are less likely to be shared among multiple people when compared to the default branch and thus, will be less dangerous to force push.
Avoid force-with-lease in the GUI if the branch has not diverged

@nesukun Since it's a dangerous/advanced operation, we could let a user decide to display it in the "scm/title" menus with another option disabled by default.

Why not use the same option to control whether the actions appear in the menu?


Patch upgrade Golang from 1.16.4 to 1.16.15

There are a large number of CVEs against prometheus-adapter, and most of them are related to running behind on patches of Golang. This will solve many of them.
Signed-off-by: Greg Burton<EMAIL_ADDRESS>

/assign @dgrisonnet

Hi @gburton1, do you specifically need this version of Golang or would you be also fine with 1.18.5? I am considering doing a complete dependency update before cutting the new release that would contain that change.

Any supported Golang major line is fine because they should all offer the same security patches. 1.18.5 works fine!

Reverted the VERSION bump. If you want to handle the jump to 1.18.5 in another PR yourself, since it might involve other changes, I can close this one. But if you expect that to take some time, I would appreciate this trivial patch bump + a new release to get us past a ton of CVEs!

Sure let me do that right now

@dgrisonnet ping me when you have an alternative PR/release. Once we have a new release published with the Golang upgrade, I'll go shop it around to the maintainers of the Prometheus Adapter Helm chart to get a new release there also. This is my path to closing many CVEs in our system against the prom adapter!


automatically create chips for email inputs

Fixes #241
Describe the changes you have made in this PR --

[x] Added chips
[x] Emails get added to chips after pressing space
[x] Single email that has not yet been added to a chip by pressing space still works and an email gets sent.
[x] Combination of chips and a last email that has not yet been added to a chip works.

Screenshots of the changes (If any) -
https://user-images.githubusercontent.com/55531939/201372810-468c79fd-8d3f-4149-8b2c-4a5f38bed91b.mp4

Thank you for your contributions @danger-ahead! We are using MVVM architecture + provider for state management. Please implement the changes in that fashion instead of setState.

Thank you for your contributions @danger-ahead! We are using MVVM architecture + provider for state management. Please implement the changes in that fashion instead of setState.

I have little experience in using architecture. Can you please guide me on the changes required?
For now, I haven't changed the internal working or function calls, I have just updated how data is processed after being inputted by the user.

Also I have called the setstate inside another statefulbuilder, to avoid unnecessary rerenders of the whole screen.


[Bug report] vuepress build deleting sources

Description
Tried to build project, and saw all main folder was been wiped and builded in main folder with cleaning up from sources Markdown files and other. Tried on two computers with different structures.
Reproduction
Create fresh new vuepress project and try to build it some times.
Used Package Manager
npm
System Info
> vuepress info

  System:
    OS: Windows 10 10.0.19044
    CPU: (8) x64 Intel(R) Core(TM) i7-10510U CPU @ 1.80GHz
    Memory: 7.83 GB / 15.84 GB
  Binaries:
    Node: 18.16.1 - C:\Program Files\nodejs\node.EXE
    Yarn: 1.22.10 - ~\AppData\Roaming\npm\yarn.CMD
    npm: 8.12.2 - C:\Program Files\nodejs\npm.CMD
  Utilities:
    Git: 2.31.1.
   XD


document symbol and workspace symbol support

textDocument/documentSymbol: https://microsoft.github.io/language-server-protocol/specifications/specification-3-15/#textDocument_documentSymbol
workspace/symbol: https://microsoft.github.io/language-server-protocol/specifications/specification-3-15/#workspace_symbol
Previous implementation: https://github.com/vlang/vls/pull/43

@nedpals Please see this PR: https://github.com/vlang/vls/pull/146


SampleBuilder causes segmentation fault

Your environment.

Version: v4.0.0-beta.14 and later
Updating pion/webrtc v4.0.0-beta.13 to v4.0.0-beta.16 causes segmentation fault in an unit test of my product code

What did you do?
Passing specific data to SampleBuilder and Flush.
Previously, v4.0.0-beta.13 passed the test.

No behavior change after updating SampleBuilder to v4.0.0-beta.14 and later.
What happened?
v4.0.0-beta.14 and later causes segmentation fault.
=== RUN   TestSampleBuilder_Flush2
--- FAIL: TestSampleBuilder_Flush2 (0.00s)
panic: runtime error: invalid memory address or nil pointer dereference [recovered]
	panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x18 pc=0x530600]

goroutine 64 [running]:
testing.tRunner.func1.2({0x5ba6c0, 0x786f20})
	/usr/local/go/src/testing/testing.go:1631 +0x24a
testing.tRunner.func1()
	/usr/local/go/src/testing/testing.go:1634 +0x377
panic({0x5ba6c0?, 0x786f20?})
	/usr/local/go/src/runtime/panic.go:770 +0x132
github.com/pion/interceptor/pkg/jitterbuffer.(*PriorityQueue).Find(...)
	/home/at-wat/go/pkg/mod/github.com/pion/interceptor@v0.1.27/pkg/jitterbuffer/priority_queue.go:54
github.com/pion/interceptor/pkg/jitterbuffer.(*JitterBuffer).PeekAtSequence(0xc001f18000?, 0x9b9c?)
	/home/at-wat/go/pkg/mod/github.com/pion/interceptor@v0.1.27/pkg/jitterbuffer/jitter_buffer.go:221 +0xa0
github.com/pion/webrtc/v4/pkg/media/samplebuilder.(*SampleBuilder).buildSample(0xc001f18000, 0x1)
	/home/at-wat/go/src/github.com/pion/webrtc/pkg/media/samplebuilder/samplebuilder.go:225 +0x15d
github.com/pion/webrtc/v4/pkg/media/samplebuilder.(*SampleBuilder).purgeBuffers(0xc001f18000, 0x1)
	/home/at-wat/go/src/github.com/pion/webrtc/pkg/media/samplebuilder/samplebuilder.go:163 +0xfc
github.com/pion/webrtc/v4/pkg/media/samplebuilder.(*SampleBuilder).Flush(...)
	/home/at-wat/go/src/github.com/pion/webrtc/pkg/media/samplebuilder/samplebuilder.go:200
github.com/pion/webrtc/v4/pkg/media/samplebuilder.TestSampleBuilder_Flush2(0xc0000f6340?)
	/home/at-wat/go/src/github.com/pion/webrtc/pkg/media/samplebuilder/samplebuilder_test.go:603 +0x1ce
testing.tRunner(0xc0000f6340, 0x618530)
	/usr/local/go/src/testing/testing.go:1689 +0xfb
created by testing.(*T).Run in goroutine 1
	/usr/local/go/src/testing/testing.go:1742 +0x390
FAIL	github.com/pion/webrtc/v4/pkg/media/samplebuilder	0.193s
FAIL

References

https://github.com/pion/webrtc/pull/2679 seems be related

@thatsnotright @Sean-Der FYI

@thatsnotright you have any available for this one? I can grab tonight otherwise

@at-wat fixed! I tagged new versions of webrtc + interceptor, thanks for testing :)

I confirmed the test in my product code works now!


wp plugin path [<plugin-name>]

wp plugin path [<plugin-name>] [--directory] would print the path to the plugins directory or to the main file (or directory) of a specific plugin.

Of course, you would have to call cd - to switch back and be able to use the wp command again.

Nevermind, it wouldn't work, since cd would be called in a child process and not the process of the bash session.
More info: http://linux.derkeiler.com/Newsgroups/alt.os.linux/2008-02/msg00270.html
We could do wp plugin path instead.

So, to change the directory, you can do cd $(wp plugin path hello --directory).


Merge v1.0 code into master branch

This commit will merge the code written for version 1.0 into the master branch. I'll take the master branch to be the branch that stores the full version history of the project so far, and so this will occupy the first place as an initial release! 🙌

Apologies for the failed checks — I was about to run them when I remembered that these projects relied on Firebase, and therefore I needed a .plist file from Firebase. In this repository, such file is stripped.


Add Feedback component to RelatedPage Video modal

Per discussion this week, one way we can measure success with videos is to add the Feedback component in the modal:

Right now it's tricky to pass the user object to the feedback module inside the modal based on how we are currently fetching the user object. I think we should consider tackling https://github.com/mapbox/dr-ui/issues/215 before we move forward with this.


17 connect existing nodes

Closes #17
Description of changes

see commit messages

Additional context

Label collision avoidance isn't great but that's not a huge deal right now. Created #31 to address


Revert "Copy for promoting translations repo on language switcher page."

Reverts fetlife/translations#16

@reneklacan mind checking this with me? The diff here is not what I wanted it to be. The bad commit was this one: https://github.com/fetlife/translations/commit/6bd06866fad6940ed8114db359d374dae4a359ca
It was part of this PR, but it doesn't show up on the revert diff.


Progress bar#208

This PR adds a progress message to let the user know that their feed is being queued, downloading, parsing, and processing.
Closes #208

Does this include an upload indicator (in percentage)?

@skinkie yes, it does include a percentage indicator (where appropriate). It will also tell you which step you are currently on of the process. These will be available after our next merge to production.


UI - Magnetometer details

As a Drone Tester
I want to input Magnetometer specific details for my drone
So that the simulator can add Magnetometer specific details

Requirements

NoiseSigma
ScaleFactor
NoiseBias,
UpdateLatency
UpdateFrequency
StartupDelay

Default Value
"NoiseSigma": 0.005,
"ScaleFactor": 1,
"NoiseBias": 0,
"UpdateLatency": 0,
"UpdateFrequency": 50,
"StartupDelay": 0

//


Local Storage not working for Server Channel

Local storage does not seem to be working for failed sends
        var channel = new ServerTelemetryChannel();
        channel.EndpointAddress = @"https://www.endpointdoesnotexists.com";
        channel.StorageFolder = @"D:\FileTest";
        channel.Initialize(TelemetryConfiguration.Active);
        TelemetryConfiguration.Active.TelemetryChannel = channel;

I have used PerfView and I see errors like ThreadID="18,900" FormattedMessage="[msg=Log verbose];[msg=Peek failed while getting files from storage. Exception: System.IO.DirectoryNotFoundException: Could not find a part of the path 'C:\Users\Andy\AppData\Local\Microsoft\ApplicationInsights\vstelAIF-312cbd79-9dbb-4c48-a7da-3cc2a931cb70'.
This is not even the instrumentation key I am using.

That looks like a Visual Studio log and not one of yours.
From: andymacourek<EMAIL_ADDRESS>Sent: Tuesday, December 6, 2016 10:23 AM
To: Microsoft/ApplicationInsights-dotnet<EMAIL_ADDRESS>Subject: [Microsoft/ApplicationInsights-dotnet] Local Storage not working for Server Channel (#390)
Local storage does not seem to be working for failed sends
    var channel = new ServerTelemetryChannel();

    channel.EndpointAddress = @"https://www.endpointdoesnotexists.com";

    channel.StorageFolder = @"D:\FileTest";

    channel.Initialize(TelemetryConfiguration.Active);

    TelemetryConfiguration.Active.TelemetryChannel = channel;

I have used PerfView and I see errors like ThreadID="18,900" FormattedMessage="[msg=Log verbose];[msg=Peek failed while getting files from storage. Exception: System.IO.DirectoryNotFoundException: Could not find a part of the path 'C:\Users\Andy\AppData\Local\Microsoft\ApplicationInsights\vstelAIF-312cbd79-9dbb-4c48-a7da-3cc2a931cb70'.
This is not even the instrumentation key I am using.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHubhttps://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FMicrosoft%2FApplicationInsights-dotnet%2Fissues%2F390&data=02|01|daduffy%40microsoft.com|2667720cf4f94cf5ccb708d41e04f0d3|72f988bf86f141af91ab2d7cd011db47|1|0|636166453967990802&sdata=3i04wkKl8A%2FG3cc15Jj%2FRKOvilVyfvvqRKPm5HMDp8w%3D&reserved=0, or mute the threadhttps://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FARDzwT-P1m2YZuMkm-pBaFim1kHOzVVlks5rFagPgaJpZM4LFuvD&data=02|01|daduffy%40microsoft.com|2667720cf4f94cf5ccb708d41e04f0d3|72f988bf86f141af91ab2d7cd011db47|1|0|636166453967990802&sdata=7rFosc6KmBymYXjKAjS1BBkB85ok5Gi1hBy%2FWMdIHvE%3D&reserved=0.

I used PerfView to see why the files were not getting written.  This is in the Event List under Microsoft-ApplicationInsights-Core/LogVerbose.  The error traces to Microsoft.ApplicationInsights.Channel.Storage.GetFiles
Also, I am using 2.1 from NuGet.

Were you able to solve this? I have the same problem.

Closing old issues. Please re-open if needed.


Fixed scipy version to <=1.2.1

Fixed scipy version to <= 1.2.1 until autograd HIPS/autograd#490 is released. After that we could fix autograd to >= whatever version they release with that specific PR and return scipy to >=1.0.
In scipy >= 1.3.0 some functions that autograd uses are moved to a different namespace. Due to this change lifelines currently will not work when installed trough a package manager like pypi.

Thanks for PRing this!
The current changes won't change the setup on TravisCI - we'll also need to change the scipy in base-requirements.txt

Yup, pip can have min max bounds. I've added those and also modified the base-requirements.txt.


Feature Request: Support for time zones different from server time

If your local computer time is different from server time, you don't get correct time for vendor spawns. Providing a method to set your local time offset could resolve this.

It should already work like that, what browser/OS are you using that doesn't?

It doesn't seem to be working for at least one person that I know in the Philippines who plays on Avesta East At, for example, around 8:45pm EDT on his system the Lost Merchants showed something like 9m21s until spawn when in reality the merchants in question were  of course up. I'll ask them to post here with more details but I know he has tried both Edge and Chrome.

Uh, if it's off by minutes rather than hours, then that's probably a problem with the clock on the PC in question not time zones. The browser just uses the system clock to determine spawn times. It already knows how to account for offsets even if your time zone doesn't match the server.
I'd have them check if the windows clock looks correct compared to something like https://time.is/


Go back functionality doesn't work for circular dependencies

I have 2 microfrontends (A and B) which have possibility to navigate to the second one (A->B, B->A).
Steps to reproduce:

open A => result: LuigiClient.linkManager().hasBack()==false which is correct
navigate from A to B => result: B is opened correctly (LuigiClient.linkManager().hasBack()==true and I can navigate back to B)
navigate from B to A => result: A is opened with proper parameters (from B) but LuigiClient.linkManager().hasBack()==false so I cann't navigate back to B

Reopened after further investigation, since cross origin goBack is not possible currently.
We will enhance our logic to allow cross origin back scenarios.


[SPARK-46882][SS][TEST] Replace unnecessary AtomicInteger with int

What changes were proposed in this pull request?
This PR propose to replace unnecessary AtomicInteger with int.
Why are the changes needed?
The variable value of GetMaxCounter always guarded by itself. So we can replace the unnecessary AtomicInteger with int.
Does this PR introduce any user-facing change?
'No'.
How was this patch tested?
GA.
Was this patch authored or co-authored using generative AI tooling?
'No'.

cc @mridulm

cc @dongjoon-hyun  @HeartSaVioR

@srowen I agree with @mridulm .
Let's change the jira from Major to Minor.

cc @srowen @dongjoon-hyun Although this change is just related to test suite, the cost of AtomicInteger is also higher than int.

Thank you, @beliefer and all.

@dongjoon-hyun @srowen @mridulm Thank you!


Doesn't handle quotes and arguments with spaces well

v3.24 using Python 3.5.3, on Ubuntu 17.04, GNU bash 4.4.7(1)-release.
Using an alias, but with no alias is indifferent:
$ theheck "catt 'My File'"
cat My File [enter/↑/↓/ctrl+c]

$ theheck "catt My\ File"
cat My File [enter/↑/↓/ctrl+c]

$ theheck "ehco -e '\n'"
echo -e \n [enter/↑/↓/ctrl+c]

$ theheck "ehco -n $'\n'"
echo -n $\n [enter/↑/↓/ctrl+c]

The debug output is here: https://pastebin.com/GjXPpQbs

For what it's worth, we had previously tried using a more robust bash parser, but we stopped after discovering potential licensing issues. See here for details: https://github.com/nvbn/thefuck/issues/589

Ugh, that's really sad, but thanks for pointing that out. BTW, by looking at #589, I noticed my examples were unquoted, so I fixed them.

This is also impactful when the change results in different output from the command, so it doesn't trigger a rule that it should trigger. I have a rule that looks for a particular error message, and command "/some path with spaces/" produces the error message and triggers the rule but command /some path with spaces/ does not.


feat(api): allow insecure mode for jwks

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

GitHub release
v0.13.0
v0.13.0

Your semantic-release bot :package::rocket:


Set up Chromatic to host stories and run UI tests

Storybook provides a free service for screenshot diffing called Chromatic. We should integrate Chromatic into our CI process using Github Actions following the Getting Started guide and Github Actions configuration. Publish to Chromatic and run UI tests when code is merged into develop.
Chromatic can run on PR's between branches of the same repo but not securely across forks. Solutions are devs can set up their own chromatic projects, or we could allow people to push to feature branches on the cfb repo.

Are you talking about this: https://storybook.js.org/docs/react/workflows/visual-testing and thereby adding Chromatic? Or are you talking about something else?

Yeah that's what I'm talking about.

Admin steps needed to set up Chromatic on Cfb repo:

Leads or someone with access to codeforboston org needs to sign up for Chromatic and authorize the chromatic app on github https://www.chromatic.com/docs/access#linked-projects
Add project token to github action secret
Make sure UI review and tests are enabled in Chromatic settings

closing issue. this is handled by #199


[MXNET-566] Fix flaky test_operator_gpu.test_sparse_dot

Description
As title, plus a fix for erroneous handling of some edge case
Checklist
Essentials

[x] Changes are complete (i.e. I finished coding on this PR)
[x] All changes have test coverage:
Unit tests are added for small changes to verify correctness (e.g. adding a new operator)
Nightly tests are added for complicated/long-running ones (e.g. changing distributed kvstore)
Build tests will be added for build configuration changes (e.g. adding a new build option with NCCL)
[x] Code is well-documented:
For user-facing API changes, API doc string has been updated.
For new C++ functions in header files, their functionalities and arguments are documented.
For new examples, README.md is added to explain the what the example does, the source of the dataset, expected performance on test set and reference to the original paper if applicable
Check the API doc at http://mxnet-ci-doc.s3-accelerate.dualstack.amazonaws.com/PR-$PR_ID/$BUILD_ID/index.html
[x] To the my best knowledge, examples are either not affected by this change, or have been fixed to be compatible with this change

Changes

[x] Fix flakiness in test_sparse_dot
[x] Fix erroneous handling of empty csr case

Comments
The tests are failing consistently by a small margin, bumping up rtol to get rid of the flakiness.
#10920 #11367

@eric-haibin-lin

@eric-haibin-lin should be good for merge


Update readme.md RC1

What does the pull request do?

What is the current behavior?

What is the updated/expected behavior with this PR?

How was the solution implemented (if it's not obvious)?

Checklist

[ ] Added unit tests (if possible)?
[ ] Added XML documentation to any related classes?
[ ] Consider submitting a PR to https://github.com/AvaloniaUI/Documentation with user documentation

Breaking changes

Obsoletions / Deprecations

Fixed issues

These links are useful, but I think they would be better in the Learning section, given the current flow of the readme.

My Two Cents:
The Porting Guide seems like a good idea to include. However, I don't think a discussion "details" link like should included. If anything a new section should be added for "Current Version" that includes:

A link to the https://avaloniaui.net/Blog -- and perhaps the specific RC announcement if absolutely necessary
The links to the porting guides (there are two so far)

https://github.com/AvaloniaUI/Avalonia/wiki/Avalonia-11-Porting-Guide
https://github.com/AvaloniaUI/Avalonia/wiki/Porting-to-Control-Themes

## Version 11

For latest announcements see the [Avalonia blog](https://avaloniaui.net/Blog).

 * Converting from previous versions
   * **[📖 Porting Guide](https://github.com/AvaloniaUI/Avalonia/wiki/Avalonia-11-Porting-Guide)**
   * **[📖 Porting to Control Themes](https://github.com/AvaloniaUI/Avalonia/wiki/Porting-to-Control-Themes)**

A learning section would be fine too. Just throwing these links at the top seems out of place.

These links are useful, but I think they would be better in the Learning section, given the current flow of the readme.
I'm also not keen to replace the header image. While we're excited for v11, I don't think we need to tweak the existing hero section.

ok. close the PR

You can test this PR using the following package version. 11.0.999-cibuild0036181-beta. (feed url: https://pkgs.dev.azure.com/AvaloniaUI/AvaloniaUI/_packaging/avalonia-all/nuget/v3/index.json) [PRBUILDID]


run with node from terminal?

just wondering how hard it would be to run this from the shell, thx!

Hey, I'm afraid that's likely to be outside the scope of this project. You're probably looking for something like the remove-duplicate-lines NPM package.


Refactor and remove wireless-tools dependency for channel detection

Consider using iw or some other method to determine channel for a particular wireless interface.
https://github.com/WLAN-Pi/wlanpi-profiler/blob/272d1fffca9f1864fa6d0e1d2adbd8152be3faa2/profiler/interface.py#L203-L212

Addressed in 8dc0b03cc7ed080dbcf12e74e5cd22e4cef29c13


How to: Feed Output of final dense layer to LSTM using the examples=placeholders as time series data?

I try to do feature matching on html-document-nodes, and use features of these document nodes (tagname, text, class, length,..) as placeholder (struct). Currently, the network consists of some fasttext and lstm layers, and the final layer is a dense layer, and all nodes are processed independently of each other. The network lacks a time series like connection of the nodes in a document (the classification of a node may depend on the classification of the previous node).
Do I understand right, that something like that would be possible in dl4j?
https://deeplearning4j.konduit.ai/deeplearning4j/reference/recurrent-layers#inference-predictions-one-step-at-a-time
So, before each document the recurrrent state could be cleared?
How would I do that with dagli?
Btw, I recognized a strong performance (accuracy) drop, when using fasttext with multi-label classification, instead of multiple fasttext instances with single-boolean classification.

It's easy enough to pass the previous node's classification back into the model as an input feature; this will generally be less efficient than an RNN-based decoder-like apparatus (as your link points out) but the difference in inference cost may not matter to you unless you're processing a very large number of documents.  If you are, DL4J does support "sequence to sequence" models and it's of course possible to create a new Dagli transformer to wrap such a model with some effort, but Dagli does not itself provide a layer-based API for RNN-based decoders.
Incidentally, dependencies among the labels are not essential, and indeed often counterproductive, in problems where you care about getting as many labels correct as possible rather than as many sequences correct as possible.  E.g. a correct sequence matters a lot for, say, translation (producing readable, cohesive text), but not for, say, labeling HTML nodes if you only care about how many HTML nodes you label correctly.  Consequently, you may be better off predicting node labels one-at-time (while still using features from adjacent nodes as a contextual window) rather than trying to model dependencies amongst the labels.
With respect to FastText, the default behavior is multinomial prediction (predicted probabilities sum to 1) rather than multilabel (each label predicted with probability \in [0, 1]); there is a setting to adjust inference to instead be multilabel, but it is a bit of a hack.  If the labels are correlated (as they typically are), I'd expect (with the right choice of hyperparameters) a multinomial/multilabel FastText model to outperform a set of boolean FastText models for a given number of model parameters and examples.

Thanks for your detailled answer. I now already tried adding some features of previous node to the current one. But it is difficult, which information from how many adjacent data I need to take. Also the nice "struct"-placerholder idea gets a bit polluted by this.
About the fasttext problem,
a) first try with the same parameters with only difference: multilabel=true (5 Labels) for the second one
Evaluation for Boolean Single Label
Highest accuracy = 0.9126995046780407
Decision threshold = 0.2756439447402954
True Positives = 1556.0, False Positives = 1229.0
False Negatives = 1309.0, True Negatives = 24978.0
Precision = 0.5587073608617594 @ Recall = 0.5431064572425829, F1 = 0.5507964601769911
Accuracy = 0.9126995046780407 (accuracy for baseline that predicts the mode label = 0.9014515685195377)

Highest F1-score = 0.5824330671676843
Decision threshold = 0.11171691864728928
True Positives = 1860.0, False Positives = 1662.0
False Negatives = 1005.0, True Negatives = 24545.0
Precision = 0.5281090289608177 @ Recall = 0.6492146596858639, F1 = 0.5824330671676843
Accuracy = 0.9082622454595487 (accuracy for baseline that predicts the mode label = 0.9014515685195377)

ROC AUC = 0.8280554713709946, Average Precision = 0.292946242465893

Evaluation for Multilabel (First Label)
Highest accuracy = 0.9014515685195377
Decision threshold = Infinity
True Positives = 0.0, False Positives = 0.0
False Negatives = 2865.0, True Negatives = 26207.0
Precision = 1.0 @ Recall = 0.0, F1 = 0.0
Accuracy = 0.9014515685195377 (accuracy for baseline that predicts the mode label = 0.9014515685195377)

Highest F1-score = NaN
Decision threshold = 0.9999876022338867
True Positives = 0.0, False Positives = 3.0
False Negatives = 2865.0, True Negatives = 26204.0
Precision = 0.0 @ Recall = 0.0, F1 = NaN
Accuracy = 0.901348376444689 (accuracy for baseline that predicts the mode label = 0.9014515685195377)

ROC AUC = 0.8280554713709946, Average Precision = 0.292946242465893

b) I now increase embedding size by factor 5 for the multilabel case:
Highest accuracy = 0.9014515685195377
Decision threshold = Infinity
True Positives = 0.0, False Positives = 0.0
False Negatives = 2865.0, True Negatives = 26207.0
Precision = 1.0 @ Recall = 0.0, F1 = 0.0
Accuracy = 0.9014515685195377 (accuracy for baseline that predicts the mode label = 0.9014515685195377)

Highest F1-score = NaN
Decision threshold = 0.9999999403953552
True Positives = 0.0, False Positives = 1.0
False Negatives = 2865.0, True Negatives = 26206.0
Precision = 0.0 @ Recall = 0.0, F1 = NaN
Accuracy = 0.9014171711612549 (accuracy for baseline that predicts the mode label = 0.9014515685195377)

ROC AUC = 0.823402823713033, Average Precision = 0.290056676641253

Perhaps I made a mistake, so I post my code here for this testcase. Perhaps the order of the labels somehow gets lost on the way? Label is an enum with 5 Labels, and p.asLabels() produces HashSet:
FastTextClassification<Label> fastTextClassificationText = new FastTextClassification<Label>()
		.withLabelsInput(p.asLabels())
		.withMultilabel(true)
		.withTokensInput(new PreProcessorText().withInput(p.asText()))
		.withEmbeddingLength(40)
		.withLossType(FastTextLoss.SOFTMAX)
		.withMaxWordNgramLength(3)
		.withEpochCount(50);
DAG1x1<Node, DiscreteDistribution<Label>> dag = DAG.withPlaceholder(p).withOutput(fastTextClassificationText);

MyIterable trainData = new MyIterable(offset, limit);
MyIterable testData = new MyIterable(0, offset);

DAG1x1.Prepared<Node, DiscreteDistribution<Label>> res = dag.prepare(trainData);

DAG1x1.Prepared.Result<DiscreteDistribution<Label>> predictedLabels = res.applyAll(testData);

Label[] labels = Label.values();

for (int i = 0; i < labels.length; i++) {
	final int labelIndex = i;
	System.out.println("----------- Evaluation " + labels[i] + " --------------");
	BinaryEvaluationResult eval = BinaryEvaluation.evaluate(Iterables.map(testData, x -> x._labels.contains(labels[labelIndex])), predictedLabels.lazyMap(x -> x.get(labels[labelIndex])));
	System.out.println(eval.getSummary() + "\n");
}

One way to approach would be to use collections or lists in the Struct to capture sets or sequences of contextual features; they can then be processed using list-wise transformations.
WRT your FastText code, I don't see any obvious issues, but it's very suspicious that the highest accuracy is achieved by adopting an infinite threshold (and classifying everything as negative).  This could be because the learned model is just very, very bad, but I'd suggest poking around a bit: checking values in the debugger, perhaps evaluating on the training data to see if the accuracy is any higher (it should be), etc.  I'd also check at least a few of the predicted multilabel distributions to make sure it's not doing something weird like setting all the probabilities the same or setting them to Inf or something else that might indicate a bug either in the data or (less likely) in Dagli's FastText implementation.

How would you use list-wise transformations, for example for some feature like "font-size"? Would you suggest something like max-pooling?
For the fasttext I now tried with 3 times more training-examples and 1000 epochs. I get better results for multilabel (F1 score = 0.33), but still much worse than boolean-approach. I also experimented with different embedding sizes, SOFTMAX/NEGATIVE SAMPLING (I get better results with lower embedding sizes and NEGATIVE SAMPLING).
Do you have examples, where you get better results for multilabel in comparison with boolean?

I meant list-wise transformations to process the features in the DAG.  Within the neural network, one option would be to model the context as a sequence--e.g. use bidirectional LSTM layers encode the sequence of nodes up to the current one in the forward and backward directions.  Alternatively, for a fixed-size context window, you don't need a (sequence) encoder, and you can just feed the features of the X nodes before and after your current node as you would any other features.  So, for example, one of your features could be "font-size of the node preceding the current node", and another could be "font-size of the node three nodes after the current node", etc.
WRT FastText, it's odd that you're getting better results with negative sampling; lower embedding sizes might make sense if you have limited data.  There may be a bug somewhere, but it's not something I can really diagnose on my end.  It's also true that FastText is trained as a multinomial model, so multilabel inference is something of a hack; if your boolean models are outperforming multilabel, you could just stick with those--you're not losing anything in principle, assuming you have sufficient training data (the benefit of training a multinomial/multilabel FastText model over binary is primarily that the model can leverage commonalities among the labels, which becomes moot when data is abundant).
Unfortunately, I don't think I've ever directly compared multiple boolean FastText models with a multilabel model; my teams' use cases for FastText have been for multinomial problems.

WRT FastText I now gained some training speedup by pre-learning and serializing a list of DAGs with the fasttext-layers only. So I can experiment in the later chain more easily.
WRT node context: after hard thinking how to do that with dagli, I came up with something like this:
@Struct
class Node {
  Node prev, next;
  Node[] context(){
    // ..collect static list of 5 previous and 5 next nodes
  }
..
}

And then using it like this:
DenseLayerInput<NNSplitVectorSequenceLayer>.Aggregated aggregated = new NNSplitVectorSequenceLayer().withInput().concatenating();

for (int i = 0; i < 10; i++) {
	ArrayElement<Node> node = new ArrayElement<Node>().withIndex(i).withInput(p.asContext());
	aggregated = aggregated.fromNumbers(new TextLength().withInput(node));
        ..
}

NNSplitVectorSequenceLayer split = aggregated.done().withSplitSize(10);
NNLSTMLayer lstmLayer = new NNLSTMLayer()
	.withInput(split)
	.withBidirectionality(Bidirectionality.FORWARD_ONLY);

NNMaxPoolingLayer poolingLayer = new NNMaxPoolingLayer().withInput(lstmLayer);
..

But if I use NNLastVectorInSequenceLayer an exception is throws, that dl4j does not support multiple inputs for that layers. So I tried NNMaxPoolingLayer, but here another exception is thrown:
java.io.FileNotFoundException: nd4j-op-def.pbtxt cannot be opened because it does not exist
	at org.nd4j.common.io.ClassPathResource.getInputStream(ClassPathResource.java:248)
	at org.nd4j.common.io.ClassPathResource.getInputStream(ClassPathResource.java:235)
	at org.nd4j.ir.OpDescriptorHolder.nd4jOpList(OpDescriptorHolder.java:86)
	at org.nd4j.ir.OpDescriptorHolder.<clinit>(OpDescriptorHolder.java:47)
	at org.nd4j.linalg.api.ops.DynamicCustomOp.propertiesForFunction(DynamicCustomOp.java:1069)
	at org.nd4j.autodiff.samediff.serde.FlatBuffersMapper.asFlatNode(FlatBuffersMapper.java:863)
	at org.nd4j.autodiff.samediff.serde.FlatBuffersMapper.cloneViaSerialize(FlatBuffersMapper.java:988)
	at org.nd4j.autodiff.samediff.SameDiff.invokeGraphOn(SameDiff.java:526)
	at org.nd4j.autodiff.samediff.SameDiff$1.define(SameDiff.java:4200)
	at org.nd4j.autodiff.samediff.SameDiff.defineFunction(SameDiff.java:3993)
	at org.nd4j.autodiff.samediff.SameDiff.defineFunction(SameDiff.java:3978)
	at org.nd4j.autodiff.samediff.SameDiff.createGradFunction(SameDiff.java:4189)
	at org.deeplearning4j.nn.layers.samediff.SameDiffGraphVertex.doBackward(SameDiffGraphVertex.java:166)
	at org.deeplearning4j.nn.graph.ComputationGraph.calcBackpropGradients(ComputationGraph.java:2772)
	at org.deeplearning4j.nn.graph.ComputationGraph.computeGradientAndScore(ComputationGraph.java:1381)
	at org.deeplearning4j.nn.graph.ComputationGraph.computeGradientAndScore(ComputationGraph.java:1341)
	at org.deeplearning4j.optimize.solvers.BaseOptimizer.gradientAndScore(BaseOptimizer.java:174)
	at org.deeplearning4j.optimize.solvers.StochasticGradientDescent.optimize(StochasticGradientDescent.java:61)
	at org.deeplearning4j.optimize.Solver.optimize(Solver.java:52)
	at org.deeplearning4j.nn.graph.ComputationGraph.fitHelper(ComputationGraph.java:1165)
	at org.deeplearning4j.nn.graph.ComputationGraph.fit(ComputationGraph.java:1115)
	at org.deeplearning4j.nn.graph.ComputationGraph.fit(ComputationGraph.java:1082)
	at com.linkedin.dagli.dl4j.NeuralNetwork$Preparer.finish(NeuralNetwork.java:254)
	at com.linkedin.dagli.dl4j.NeuralNetwork$Preparer.finish(NeuralNetwork.java:50)
	at com.linkedin.dagli.nn.AbstractNeuralNetwork$Preparer.finishUnsafe(AbstractNeuralNetwork.java:1232)
	at com.linkedin.dagli.dag.MultithreadedDAGExecutor$PreparationFinishTask.onRun(MultithreadedDAGExecutor.java:792)
	at com.linkedin.dagli.dag.MultithreadedDAGExecutor$Task.run(MultithreadedDAGExecutor.java:368)
	at com.linkedin.dagli.dag.MultithreadedDAGExecutor$Scheduler.lambda$schedule$4(MultithreadedDAGExecutor.java:329)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at java.base/java.lang.Thread.run(Thread.java:829)
Exception in thread "main" java.lang.RuntimeException: MultithreadedDAGExecutor terminated execution because it encountered an unexpected exception in a worker thread: java.lang.RuntimeException: Error during neural network backpropagation calculation
	at com.linkedin.dagli.dag.MultithreadedDAGExecutor.executeUnsafe(MultithreadedDAGExecutor.java:1546)
	at com.linkedin.dagli.dag.MultithreadedDAGExecutor.prepareUnsafeImpl(MultithreadedDAGExecutor.java:1497)
	at com.linkedin.dagli.dag.LocalDAGExecutor.prepareUnsafeImpl(LocalDAGExecutor.java:71)
	at com.linkedin.dagli.dag.AbstractDAGExecutor.prepareUnsafe(AbstractDAGExecutor.java:99)
	at com.linkedin.dagli.dag.DAG1x1.prepare(DAG1x1.java:253)
	at de.cyberbeat.wasgeht.ExtractorLoader.startLearnDL4J(ExtractorLoader.java:890)
	at de.cyberbeat.wasgeht.ExtractorLoader.main(ExtractorLoader.java:1636)
Caused by: java.lang.RuntimeException: Error during neural network backpropagation calculation
	at org.deeplearning4j.nn.graph.ComputationGraph.calcBackpropGradients(ComputationGraph.java:2860)
	at org.deeplearning4j.nn.graph.ComputationGraph.computeGradientAndScore(ComputationGraph.java:1381)
	at org.deeplearning4j.nn.graph.ComputationGraph.computeGradientAndScore(ComputationGraph.java:1341)
	at org.deeplearning4j.optimize.solvers.BaseOptimizer.gradientAndScore(BaseOptimizer.java:174)
	at org.deeplearning4j.optimize.solvers.StochasticGradientDescent.optimize(StochasticGradientDescent.java:61)
	at org.deeplearning4j.optimize.Solver.optimize(Solver.java:52)
	at org.deeplearning4j.nn.graph.ComputationGraph.fitHelper(ComputationGraph.java:1165)
	at org.deeplearning4j.nn.graph.ComputationGraph.fit(ComputationGraph.java:1115)
	at org.deeplearning4j.nn.graph.ComputationGraph.fit(ComputationGraph.java:1082)
	at com.linkedin.dagli.dl4j.NeuralNetwork$Preparer.finish(NeuralNetwork.java:254)
	at com.linkedin.dagli.dl4j.NeuralNetwork$Preparer.finish(NeuralNetwork.java:50)
	at com.linkedin.dagli.nn.AbstractNeuralNetwork$Preparer.finishUnsafe(AbstractNeuralNetwork.java:1232)
	at com.linkedin.dagli.dag.MultithreadedDAGExecutor$PreparationFinishTask.onRun(MultithreadedDAGExecutor.java:792)
	at com.linkedin.dagli.dag.MultithreadedDAGExecutor$Task.run(MultithreadedDAGExecutor.java:368)
	at com.linkedin.dagli.dag.MultithreadedDAGExecutor$Scheduler.lambda$schedule$4(MultithreadedDAGExecutor.java:329)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: java.lang.ExceptionInInitializerError
	at org.nd4j.linalg.api.ops.DynamicCustomOp.propertiesForFunction(DynamicCustomOp.java:1069)
	at org.nd4j.autodiff.samediff.serde.FlatBuffersMapper.asFlatNode(FlatBuffersMapper.java:863)
	at org.nd4j.autodiff.samediff.serde.FlatBuffersMapper.cloneViaSerialize(FlatBuffersMapper.java:988)
	at org.nd4j.autodiff.samediff.SameDiff.invokeGraphOn(SameDiff.java:526)
	at org.nd4j.autodiff.samediff.SameDiff$1.define(SameDiff.java:4200)
	at org.nd4j.autodiff.samediff.SameDiff.defineFunction(SameDiff.java:3993)
	at org.nd4j.autodiff.samediff.SameDiff.defineFunction(SameDiff.java:3978)
	at org.nd4j.autodiff.samediff.SameDiff.createGradFunction(SameDiff.java:4189)
	at org.deeplearning4j.nn.layers.samediff.SameDiffGraphVertex.doBackward(SameDiffGraphVertex.java:166)
	at org.deeplearning4j.nn.graph.ComputationGraph.calcBackpropGradients(ComputationGraph.java:2772)
	... 17 more
Caused by: java.lang.NullPointerException
	at org.nd4j.ir.OpDescriptorHolder.<clinit>(OpDescriptorHolder.java:53)
	... 27 more

I succeeded in running the training without exception by adding the required file "nd4j-op-def.pbtxt" to the classpath (is this a dl4j bug?).
But when trying to deserialize and do evaluation:
Exception in thread "main" java.lang.RuntimeException: Error deserializing JSON ComputationGraphConfiguration. Saved model JSON is not a valid ComputationGraphConfiguration
	at org.deeplearning4j.util.ModelSerializer.restoreComputationGraphHelper(ModelSerializer.java:560)
	at org.deeplearning4j.util.ModelSerializer.restoreComputationGraph(ModelSerializer.java:462)
	at org.deeplearning4j.util.ModelSerializer.restoreComputationGraph(ModelSerializer.java:592)
	at com.linkedin.dagli.dl4j.SerializableComputationGraph.readObject(SerializableComputationGraph.java:44)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at java.base/java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1175)
	at java.base/java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2325)
	at java.base/java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2196)
	at java.base/java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1679)
	at java.base/java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2464)
	at java.base/java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2358)
	at java.base/java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2196)
	at java.base/java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1679)
	at java.base/java.io.ObjectInputStream.readObject(ObjectInputStream.java:493)
	at java.base/java.io.ObjectInputStream.readObject(ObjectInputStream.java:451)
	at java.base/java.util.ArrayList.readObject(ArrayList.java:929)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at java.base/java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1175)
	at java.base/java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2325)
	at java.base/java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2196)
	at java.base/java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1679)
	at java.base/java.io.ObjectInputStream.readObject(ObjectInputStream.java:493)
	at java.base/java.io.ObjectInputStream.readObject(ObjectInputStream.java:451)
	at java.base/java.util.HashMap.readObject(HashMap.java:1460)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at java.base/java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1175)
	at java.base/java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2325)
	at java.base/java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2196)
	at java.base/java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1679)
	at java.base/java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2464)
	at java.base/java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2358)
	at java.base/java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2196)
	at java.base/java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1679)
	at java.base/java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2464)
	at java.base/java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2358)
	at java.base/java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2196)
	at java.base/java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1679)
	at java.base/java.io.ObjectInputStream.readObject(ObjectInputStream.java:493)
	at java.base/java.io.ObjectInputStream.readObject(ObjectInputStream.java:451)
	at de.cyberbeat.wasgeht.ExtractorLoader.loadDag(ExtractorLoader.java:374)
	at de.cyberbeat.wasgeht.ExtractorLoader.eval(ExtractorLoader.java:901)
	at de.cyberbeat.wasgeht.ExtractorLoader.main(ExtractorLoader.java:1647)
Caused by: java.lang.RuntimeException: org.nd4j.shade.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `com.linkedin.dagli.dl4j.ReshapeMasklessVertex` (no Creators, like default constructor, exist): cannot deserialize from Object value (no delegate- or property-based Creator)
 at [Source: (String)"{
  "backpropType" : "Standard",
  "cacheMode" : "NONE",
  "dataType" : "FLOAT",
  "defaultConfiguration" : {
    "cacheMode" : "NONE",
    "dataType" : "FLOAT",
    "epochCount" : 0,
    "iterationCount" : 0,
    "layer" : null,
    "maxNumLineSearchIterations" : 5,
    "miniBatch" : true,
    "minimize" : true,
    "optimizationAlgo" : "STOCHASTIC_GRADIENT_DESCENT",
    "seed" : 1,
    "stepFunction" : null,
    "variables" : [ "NNLSTMLayer-0_W", "NNLSTMLayer-0_RW", "NNLSTMLayer-0_b", "NNDense"[truncated 13430 chars]; line: 49, column: 7] (through reference chain: org.deeplearning4j.nn.conf.ComputationGraphConfiguration["vertices"]->java.util.LinkedHashMap["NNSplitVectorSequenceLayer-0"])
	at org.deeplearning4j.nn.conf.ComputationGraphConfiguration.fromJson(ComputationGraphConfiguration.java:196)
	at org.deeplearning4j.util.ModelSerializer.restoreComputationGraphHelper(ModelSerializer.java:547)
	... 50 more
Caused by: org.nd4j.shade.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `com.linkedin.dagli.dl4j.ReshapeMasklessVertex` (no Creators, like default constructor, exist): cannot deserialize from Object value (no delegate- or property-based Creator)
 at [Source: (String)"{
  "backpropType" : "Standard",
  "cacheMode" : "NONE",
  "dataType" : "FLOAT",
  "defaultConfiguration" : {
    "cacheMode" : "NONE",
    "dataType" : "FLOAT",
    "epochCount" : 0,
    "iterationCount" : 0,
    "layer" : null,
    "maxNumLineSearchIterations" : 5,
    "miniBatch" : true,
    "minimize" : true,
    "optimizationAlgo" : "STOCHASTIC_GRADIENT_DESCENT",
    "seed" : 1,
    "stepFunction" : null,
    "variables" : [ "NNLSTMLayer-0_W", "NNLSTMLayer-0_RW", "NNLSTMLayer-0_b", "NNDense"[truncated 13430 chars]; line: 49, column: 7] (through reference chain: org.deeplearning4j.nn.conf.ComputationGraphConfiguration["vertices"]->java.util.LinkedHashMap["NNSplitVectorSequenceLayer-0"])
	at org.nd4j.shade.jackson.databind.exc.InvalidDefinitionException.from(InvalidDefinitionException.java:67)
	at org.nd4j.shade.jackson.databind.DeserializationContext.reportBadDefinition(DeserializationContext.java:1764)
	at org.nd4j.shade.jackson.databind.DatabindContext.reportBadDefinition(DatabindContext.java:400)
	at org.nd4j.shade.jackson.databind.DeserializationContext.handleMissingInstantiator(DeserializationContext.java:1209)
	at org.nd4j.shade.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:1415)
	at org.nd4j.shade.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:362)
	at org.nd4j.shade.jackson.databind.deser.BeanDeserializer._deserializeOther(BeanDeserializer.java:230)
	at org.nd4j.shade.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:197)
	at org.nd4j.shade.jackson.databind.jsontype.impl.AsPropertyTypeDeserializer._deserializeTypedForId(AsPropertyTypeDeserializer.java:137)
	at org.nd4j.shade.jackson.databind.jsontype.impl.AsPropertyTypeDeserializer.deserializeTypedFromObject(AsPropertyTypeDeserializer.java:107)
	at org.nd4j.shade.jackson.databind.deser.AbstractDeserializer.deserializeWithType(AbstractDeserializer.java:263)
	at org.nd4j.shade.jackson.databind.deser.std.MapDeserializer._readAndBindStringKeyMap(MapDeserializer.java:611)
	at org.nd4j.shade.jackson.databind.deser.std.MapDeserializer.deserialize(MapDeserializer.java:437)
	at org.nd4j.shade.jackson.databind.deser.std.MapDeserializer.deserialize(MapDeserializer.java:32)
	at org.nd4j.shade.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:129)
	at org.nd4j.shade.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:324)
	at org.nd4j.shade.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:187)
	at org.deeplearning4j.nn.conf.serde.ComputationGraphConfigurationDeserializer.deserialize(ComputationGraphConfigurationDeserializer.java:61)
	at org.deeplearning4j.nn.conf.serde.ComputationGraphConfigurationDeserializer.deserialize(ComputationGraphConfigurationDeserializer.java:51)
	at org.nd4j.shade.jackson.databind.deser.DefaultDeserializationContext.readRootValue(DefaultDeserializationContext.java:322)
	at org.nd4j.shade.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4593)
	at org.nd4j.shade.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3548)
	at org.nd4j.shade.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3516)
	at org.deeplearning4j.nn.conf.ComputationGraphConfiguration.fromJson(ComputationGraphConfiguration.java:167)
	... 51 more

WRT NNLastVectorInSequence, this may be a masking issue due to NNSplitVectorSequenceLayer not preserving the masking (the Javadoc for NNSplitVectorSequenceLayer mentions an exception as a possible result), although it's not entirely clear to me from your code excerpt whether this should be an issue (it looks like the sequences are fixed-size).  However, you don't need NNSplitVectorSequenceLayer--you can provide your input vectors to NNLSTMLayer directly with, e.g. the withInputFromVectorSequence(...) method.
Stepping back for a second, with a small, fixed-size window of radius 5 as you have here, I'd suggest considering passing the context into the network as a (flat) vector of features rather than a sequence of vectors (i.e. feeding them into a perceptron layer).  Also, doing a pass across the entire window with the LSTM is not ideal because it gives a chance for the recurrent NN to "forget" the middle of the range closest to your node of interest; if you really wanted to go the LSTM route you'd actually want to have two LSTM layers separately covering the "before" nodes and the "after" nodes.
The java.io.FileNotFoundException may be a DL4J layer, although it may be ultimately caused by the issue deserializing Dagli DL4J vertices (per the next item).
The deserialization error is a bug in Dagli's DL4J vertex implementation.  It looks like we failed to include default constructors to permit for Java deserialization; I'm not sure why our unit tests didn't catch this (we'll have to follow up on that separately) but it's an easy fix.  We'll try to push an update by the end of the day.

I have a simple test here, did I do something wrong?
@Struct("Test")
abstract class TestStruct {
	double _number = 0;
	boolean _label;
}

List<Test> examples = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9).stream().map(x -> new Test().withNumber(x)).collect(Collectors.toList());

Test.Placeholder p = new Test.Placeholder();

DenseLayerInput<NNSplitVectorSequenceLayer>.Aggregated aggregated = new NNSplitVectorSequenceLayer().withInput().concatenating();

aggregated = aggregated.fromNumbers(p.asNumber());
aggregated = aggregated.fromNumbers(p.asNumber());
aggregated = aggregated.fromNumbers(p.asNumber());
aggregated = aggregated.fromNumbers(p.asNumber());

NNSplitVectorSequenceLayer split = aggregated.done().withSplitSize(2);

VariadicList<Double> v = new VariadicList<Double>().withInputs(p.asNumber());
NNLSTMLayer lstmLayer = new NNLSTMLayer()
.withInput(split)
.withBidirectionality(Bidirectionality.FORWARD_ONLY);

NNLastVectorInSequenceLayer poolingLayer = new NNLastVectorInSequenceLayer().withInput(lstmLayer);

NNDenseLayer denseLayers = new NNDenseLayer()
.withInput()
.concatenating()
.fromLayers(poolingLayer)
.done();

NNClassification<Boolean> labelClassification = new NNClassification<Boolean>()
.withFeaturesInput(denseLayers)
.withBinaryLabelInput(p.asLabel());

NeuralNetwork neuralNetwork = new NeuralNetwork()
.withLossLayers(labelClassification)
.withMaxEpochs(5);

DAG1x1<Test, DiscreteDistribution<Boolean>> dag = DAG.withPlaceholder(p).withOutput(neuralNetwork.asLayerOutput(labelClassification));
DAG1x1.Prepared<Test, DiscreteDistribution<Boolean>> prepared = dag.prepare(examples);

DAG1x1.Prepared.Result<DiscreteDistribution<Boolean>> result = prepared.applyAll(examples);

with Exception:
Exception in thread "main" java.lang.IllegalStateException: Topographical sort found a different number of layers than expected; either the neural network is malformed or there is a bug in Dagli
	at com.linkedin.dagli.nn.AbstractNeuralNetwork.topographicSort(AbstractNeuralNetwork.java:914)
	at com.linkedin.dagli.nn.AbstractNeuralNetwork.setLossLayers(AbstractNeuralNetwork.java:737)
	at com.linkedin.dagli.nn.AbstractNeuralNetwork.lambda$withLossLayers$22(AbstractNeuralNetwork.java:825)
	at com.linkedin.dagli.util.cloneable.AbstractCloneable.clone(AbstractCloneable.java:49)
	at com.linkedin.dagli.nn.AbstractNeuralNetwork.withLossLayers(AbstractNeuralNetwork.java:825)
...

I find this class "AbstractFeatureVectorInput" so useful, it would be great if all layers could use it some way, so I do not need to search for (or invent) the suitable transformers.

Another test I don't understand:
List<Test> examples = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9).stream().map(x -> new Test().withNumber(x)).collect(Collectors.toList());

Test.Placeholder p = new Test.Placeholder();

List<DenseVectorFromNumbers> list = new ArrayList<>();
for (int i = 0; i < 10; i++) {
DenseVectorFromNumbers vec = new DenseVectorFromNumbers().withInputs(new Constant<Double>(0.0), new Constant<Double>(1.0));
list.add(vec);
}

VariadicList<DenseVector> v = new VariadicList<DenseVector>(list);

NNLSTMLayer lstmLayer = new NNLSTMLayer()
.withInputFromVectorSequence(v)
.withBidirectionality(Bidirectionality.FORWARD_ONLY);

NNLastVectorInSequenceLayer poolingLayer = new NNLastVectorInSequenceLayer().withInput(lstmLayer);

NNDenseLayer denseLayers = new NNDenseLayer()
.withInput()
.concatenating()
.fromLayers(poolingLayer)
.done();

NNClassification<Boolean> labelClassification = new NNClassification<Boolean>()
.withFeaturesInput(denseLayers)
.withBinaryLabelInput(p.asLabel());

NeuralNetwork neuralNetwork = new NeuralNetwork()
.withLossLayers(labelClassification)
.withMaxEpochs(5);

results in
Exception in thread "main" java.lang.RuntimeException: MultithreadedDAGExecutor terminated execution because it encountered an unexpected exception in a worker thread: org.deeplearning4j.exception.DL4JInvalidInputException: Received input with size(1) = 10 (input array shape = [9, 10, 2]); input.size(1) must match layer nIn size (nIn = 2)
	at com.linkedin.dagli.dag.MultithreadedDAGExecutor.executeUnsafe(MultithreadedDAGExecutor.java:1546)
	at com.linkedin.dagli.dag.MultithreadedDAGExecutor.prepareUnsafeImpl(MultithreadedDAGExecutor.java:1497)
	at com.linkedin.dagli.dag.LocalDAGExecutor.prepareUnsafeImpl(LocalDAGExecutor.java:71)
	at com.linkedin.dagli.dag.AbstractDAGExecutor.prepareUnsafe(AbstractDAGExecutor.java:99)
	at com.linkedin.dagli.dag.DAG1x1.prepare(DAG1x1.java:253)
...
Caused by: org.deeplearning4j.exception.DL4JInvalidInputException: Received input with size(1) = 10 (input array shape = [9, 10, 2]); input.size(1) must match layer nIn size (nIn = 2)
	at org.deeplearning4j.nn.layers.recurrent.LSTMHelpers.activateHelper(LSTMHelpers.java:171)
	at org.deeplearning4j.nn.layers.recurrent.LSTM.activateHelper(LSTM.java:145)
	at org.deeplearning4j.nn.layers.recurrent.LSTM.activate(LSTM.java:115)
	at org.deeplearning4j.nn.graph.vertex.impl.LayerVertex.doForward(LayerVertex.java:110)
	at org.deeplearning4j.nn.graph.ComputationGraph.ffToLayerActivationsInWS(ComputationGraph.java:2135)
	at org.deeplearning4j.nn.graph.ComputationGraph.computeGradientAndScore(ComputationGraph.java:1372)
	at org.deeplearning4j.nn.graph.ComputationGraph.computeGradientAndScore(ComputationGraph.java:1341)
	at org.deeplearning4j.optimize.solvers.BaseOptimizer.gradientAndScore(BaseOptimizer.java:174)
	at org.deeplearning4j.optimize.solvers.StochasticGradientDescent.optimize(StochasticGradientDescent.java:61)
	at org.deeplearning4j.optimize.Solver.optimize(Solver.java:52)
	at org.deeplearning4j.nn.graph.ComputationGraph.fitHelper(ComputationGraph.java:1165)
	at org.deeplearning4j.nn.graph.ComputationGraph.fit(ComputationGraph.java:1115)
	at org.deeplearning4j.nn.graph.ComputationGraph.fit(ComputationGraph.java:1082)
	at com.linkedin.dagli.dl4j.NeuralNetwork$Preparer.finish(NeuralNetwork.java:254)
	at com.linkedin.dagli.dl4j.NeuralNetwork$Preparer.finish(NeuralNetwork.java:50)
	at com.linkedin.dagli.nn.AbstractNeuralNetwork$Preparer.finishUnsafe(AbstractNeuralNetwork.java:1232)
	at com.linkedin.dagli.dag.MultithreadedDAGExecutor$PreparationFinishTask.onRun(MultithreadedDAGExecutor.java:792)
	at com.linkedin.dagli.dag.MultithreadedDAGExecutor$Task.run(MultithreadedDAGExecutor.java:368)
	at com.linkedin.dagli.dag.MultithreadedDAGExecutor$Scheduler.lambda$schedule$4(MultithreadedDAGExecutor.java:329)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at java.base/java.lang.Thread.run(Thread.java:829)

The shape for LSTM seems to be wrong? Timestep should be at position 3 but is in position 2 from dagli?

I tried to patch NetworkBuilderLayerVisitor like this:
`
@Override
public Void visit(NNLSTMLayer visited) {
// the number of units is not always the same as the output width:
long[] outputShape = _dynamicConfigs.get(visited).getOutputShape();
_graphBuilder.addVertex(_layerNames.get(visited)+"-Reshaped", new ReshapeMasklessVertex(
new long[]{-1, outputShape[1], outputShape[0]}), getParentNames(visited));
int outputWidth = Math.toIntExact(outputShape[1]);
int units = (visited.getBidirectionality() == Bidirectionality.CONCATENATED) ? outputWidth / 2 : outputWidth;
LSTM layer = new LSTM.Builder().activation(visited.getActivation().accept(ACTIVATION_CONVERTER))
    .gateActivationFunction(visited.getRecurrentActivation().accept(ACTIVATION_CONVERTER))
    .units(units)
    .nIn(_dynamicConfigs.get(visited.internalAPI().getInputLayer()).getOutputShape()[1])
    .dropOut(dropoutValue(visited.getDropoutProbability()))
    .build();

_graphBuilder.addLayer(_layerNames.get(visited),
    visited.getBidirectionality() == Bidirectionality.FORWARD_ONLY ? layer
        : new Bidirectional(getBidirectionalityMode(visited.getBidirectionality()), layer),
        _layerNames.get(visited)+"-Reshaped");

return null;

}
`
This seems to work (training and inference in same run). But after serializing and deserializing, I get some dl4j exceptions.

I fixed deserializing of daglis ReshapeMasklessVertex by marking _newShape as JsonProperty
 @JsonProperty("newShape")
  private final long[] _newShape;

May this be a bug to be fixed?

WRT ReshapeMasklessVertex, this should be fixed in the most recent (late August) Dagli JAR with the addition of a private constructor for the Java deserializer to use.  Were you still seeing serialization errors using this most recent version?
WRT your aggregated.fromNumbers(...) example, thank you for providing this.  I was able to (eventually) determine that the exception you were seeing was indeed a bug; in short, you're creating a corner case where multiple layers of the NN are identical (in the Java equals(...) sense) which was not originally anticipated.  I have a solution in mind, but it will need to be tested before we ship it.  In the meantime, your example will work if you write:
NNSplitVectorSequenceLayer split = new NNSplitVectorSequenceLayer().withSplitSize(2).withInput().fromNumbers(p.asNumber(), p.asNumber(), p.asNumber(), p.asNumber());
(Instead of using the aggregate concatenation builder).
WRT your LSTM example with the shape/dimension exception, it does appear to be an issue with timestep and vector size being switched; I'll have to investigate further (thank you also for the suggested code patch).

About serializing: I used beta8. I think the problem is, that private fields may not be serialized by default?
About aggregation: thanks for your investigation. I would like to add some other types than numbers, so the concatenating builder is really usefull. As I already wrote, this is really a great dagli-tool to handle data at a high level.
Here you can read more:
https://blog.konduit.ai/2020/05/14/deeplearning4j-1-0-0-beta7-released/
The section about "NWC", default always was "NCW".
If I understand right, dagli submits wrong shape (NWC)? So perhaps that may be the reason, that your shakespear char-lstm examples don't deliver good results? As many other dl4j-layers also handle time series data as NCW, I would try to use NCW shape.

Serializing: standard Java serialization does serialize private fields.  I'm unable to replicate any issue, but I'm also testing atop several bug-fix commits not in beta8--I can't see how they could be related, but it's not impossible.  I suggest trying again once we ship beta9 in the next day or so (which will also include the fixes mentioned below.)
Aggregation: this is now fixed in a recent commit.  I still strongly recommend using the fromNumbers(...) alternative syntax I suggested, since it's more concise and will work with NNLastVectorInSequenceLayer.  Incidentally, we strongly recommend not using NNSplitVectorSequenceLayer if you can avoid it--instead, just feed the LSTM layer a list of vectors as an input.  NNSplitVectorSequenceLayer has a non-obvious mapping from elements in the original vector to the elements in the vector sequences because it's implemented with a reshape operation.
LSTM: the underlying issue was that inputted vector sequences did indeed have erroneously swapped timestep and element index dimensions.    This has been fixed in the most recent commit.  The Shakespeare char-LSTM example actually has decent results (given that it's a hard problem)--it's not affected by this bug because it has a different architecture (using a sequence embedding table).
NNLastVectorInSequenceLayer: unfortunately, the way the DL4J implementation works is that it pulls masking information from one of the inputs to the NN.  Having multiple input layer ancestors makes it impossible (without additional information) to identify the right input to use (or none may be right).  The good news is that situations where you would really need multiple NN inputs feeding into a NNLastVectorInSequenceLayer are very rare.  E.g. if you don't use a NNSplitVectorSequenceLayer with an in-NN concatenation of multiple vectors, this won't affect you (instead, as mentioned above, just create the sequence of vectors outside the NN and feed in that vector sequence as an input.)


write unit test for NotifyVolunteerForEventSignup

@tonysurma please label with "jump-in". Part of Issue #620

@tonysurma Working on this

okay after you accept my invite we will assign to you

I thought that I did.  Stop by.

@tonysurma not done. Shifted gears. Still open

@mgmccarthy @tonysurma I don't see this class anymore. Is it same as NotifyVolunteerForTaskSignup
@binaryjanitor are you still working on this?

Looking through history and code, it looks like this is now part of NotifyVolunteerForVolunteerTaskSignupHandler and NotifyVolunteerForVolunteerTaskUnenrollHandler.
Both of those have unit tests, so closing.
Let's open a new issue if some of the code moved into a different class.


Don't Merge! PR real time test for webhook case

Docs Build status updates of commit a32672e:
:clock10: Full build: the average full build time is 5 min(s) 9 sec(s), this is based on the last 30 build(s) for this repository.

Docs Build status updates of commit a32672e:
:warning: Validation status: warnings

File
Status
Preview URL
Details

docs-ref-conceptual/testing.md
:warning:Warning
View (azure-cli-latest) View (azure-cli-2017-03-09-profile) View (azure-cli-2018-03-01-hybrid)
Details

docs-ref-conceptual/testing.md

[Warning] Missing attribute: either ms.prod or ms.service is required. Use ms.prod for on-premise products, or ms.service for cloud services.
[Warning] Missing attribute: title.
[Warning] Missing attribute: either ms.prod or ms.service is required. Use ms.prod for on-premise products, or ms.service for cloud services.
[Warning] Missing attribute: title.
[Warning] Missing attribute: either ms.prod or ms.service is required. Use ms.prod for on-premise products, or ms.service for cloud services.
[Warning] Missing attribute: title.

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.


Spray and Shapeless incompatible versions

I saw you have been using the shapeless 2.2.0-RC4 and unfortunately this is incompatible with the latest shapeless library that spray are using.
To be clear, I'm saying this is a bug, incompatible versions can occur any time.
There is already a opened issue for this:
https://github.com/spray/spray/issues/1051
The question is... do you have any version where you do use a shapeless library 2.1 or any compatible with spray, according to this link:
http://spray.io/project-info/current-versions/#shapeless-versions
Apparently the old 1.5.0 version does not use shapeless, at least I couldn't find any reference to it.
Using the 1.9.3 or the 1.8.12 causes an incompatible version error and some part of the spray code stop compiling.

Hi @thiagoandrade6,
We will try and upgrade to the new shapeless shortly. In theory, it shouldn't be a huge problem on our end to bump shapeless versions but things may well go wrong rather easily.
This will be done some time this week and you can expect to see it on Bintray shortly. This issue will be updated once the incompatibility issue is resolved.
Regards.

Thank you @alexflav23 and indeed, using the Spray shapeless version, worked fine.

Hi, I am facing the same issue, not working even if i excluded shapeless as suggested above, is there any alternative for this?

https://github.com/outworkers/phantom/wiki/Integrating-phantom-in-your-project#using-phantom-with-the-spray-framework

Thanks @alexflav23


Gmail shows email is unencrypted

Describe the bug
I use custom let's encrypt certificates, and email sending/receiving is working ok, but: Gmail shows the email is "not encrypted by the domain", while being sent by docker-mailserver with SMTP server by 587 port with STARTTLS enabled.
To Reproduce
Steps to reproduce the behavior: install docker-mailserver, setup everything, send email to Gmail account via Thunderbird (SMTP server is automatically configured to 587 port and STARTTLS enabled).
Expected behavior
To be secured (STARTTLS, 587 port)
Screenshots
 symbol is shown near the email sender in Gmail Mail interface
Docker environment (please complete the following information):

Output of docker info

Client:
 Debug Mode: false

Server:
 Containers: 6
  Running: 6
  Paused: 0
  Stopped: 0
 Images: 61
 Server Version: 19.03.8
 Storage Driver: overlay2
  Backing Filesystem: <unknown>
  Supports d_type: true
  Native Overlay Diff: true
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: inactive
 Runtimes: runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version:
 runc version:
 init version:
 Security Options:
  apparmor
  seccomp
   Profile: default
 Kernel Version: 5.4.0-33-generic
 Operating System: Ubuntu 20.04 LTS
 OSType: linux
 Architecture: x86_64
 CPUs: 1
 Total Memory: 478MiB
 Name: intensive-similaun
 ID: 7ZWG:EDHX:EY3B:KIAL:O3JG:CWUM:JNRW:CYGA:Z7MH:ZILK:BQXS:JNPY
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 Registry: https://index.docker.io/v1/
 Labels:
 Experimental: false
 Insecure Registries:
  <IP_ADDRESS>/8
 Live Restore Enabled: false

WARNING: No swap limit support

Output of docker-compose version

docker-compose version 1.25.0, build unknown
docker-py version: 4.1.0
CPython version: 3.8.2
OpenSSL version: OpenSSL 1.1.1f  31 Mar 2020

Additional context
Email being sent from one account of docker-mailserver to another shows below code in "Received" field:
Received: from mail.******** (docker-mailserver_mda_1.docker-mailserver_default [<IP_ADDRESS>])
	by mail.******** (Postfix) with ESMTP id D557C200E72
	for <user@********>; Tue,  2 Jun 2020 20:08:35 +0000 (UTC)

And email sent from gmail account:
Received: from mail-yb1-f169.google.com (mail-yb1-f169.google.com [<IP_ADDRESS>])
	by mail.******** (Postfix) with ESMTPS id 871F5200C2A

I'm wondering why I never saw this.
SMTPd -> SMTP Encryption is now activated. You should have a gray lock icon when you have updated to the latest image version.
Please note that this has nothing to do with Thunderbird settings, because the server to server communication wasn't secured - this is what the icon shows.
https://support.google.com/mail/answer/6330403?hl=en

@jeboehm Thanks very much! I will try as soon as possible and feedback.
Thank you for the really nice and complete mail server with a beautiful, laconic and easy web interfaces :)

@jeboehm Hey! Sorry for long time, got to it only now.
Just tried to update the image - stopped and removed all the docker-container_* containers, git pulled the master, ran bin/production.sh pull and  bin/production.sh up -d and again able to send e-mail, but still red "unsecured" lock in Gmail.
Perhaps the image has to be updated another way? All the database with admin/user email accounts was not removed, may be the image is still old?

Managed to test it finally - everything works ok 👍
Updated the docker image like this:
# stopping all the mail containers
sudo docker container stop docker-mailserver_filter_1
sudo docker container stop docker-mailserver_web_1
sudo docker container stop docker-mailserver_mda_1
sudo docker container stop docker-mailserver_mta_1
sudo docker container stop docker-mailserver_db_1
sudo docker container stop docker-mailserver_virus_1

# removing all the mail containers
sudo docker container rm docker-mailserver_filter_1
sudo docker container rm docker-mailserver_web_1
sudo docker container rm docker-mailserver_mda_1
sudo docker container rm docker-mailserver_mta_1
sudo docker container rm docker-mailserver_db_1
sudo docker container rm docker-mailserver_virus_1

# updating the mta image:
sudo docker pull jeboehm/mailserver-mta:latest

# rebuilding all
sudo bin/production.sh pull
sudo bin/production.sh up -d

Yeah, nice!


expose email subject for share sheet

@rt2zz This was requested on the core library and I had forgotten we already do expose it. This makes the interface a bit more consistent

👍 looks great will include in a minor version release early next week.

thanks! though now we have a messageHeader prop which is android only that appears as headers on some share patforms (fo eg. Slack) but also as email's subject.. + an iOS only emailSubject prop which is only used as email's subject.. maybe we can unify this a little? only expose messageHeader and use that as emailSubject on iOS for now.. ?


Homepage: Use a link helper instead of the text color utility

Fixes https://github.com/twbs/bootstrap/pull/30389#issuecomment-601569264

Can you check if we do this in other places too?

Can you check if we do this in other places too?

I've adjusted these too in the meantime.


RM - Messaging Cadence (4h)

Issue
The program is designed so that HCW's will receive three messages a week - Monday (Day 1), Wednesday (Day 2), and Thursday (Day 3).
In the spreadsheet (Tab= DEVELOPMENT MASTER). You will see which week of the program the message should be sent, and what day it should be sent on.
There are a few exceptions:

Introduction Messages: The first four will be sent Week 1, Day 1. The second four will be sent Week 1, Day 2.  This is the only time four messages will be sent in a day. There is some programmatic reason they are broken up this way.
Daily Messages: located at the bottom of the spread sheet are actually going to be in-app pop ups and have their own unique cadence depending on the month of the program the user is in.

To Do:

Schedule messages appropriately

@jeanette-pelizzon

The program is designed so that HCW's will receive three messages a week - Monday (Day 1), Wednesday (Day 2), and Thursday (Day 3).

Since we decided that program start date is the date when kick off survey is completed, this definition does not hold.
Please redefine, taking into account that program can start on any day of the week.

@anvmn let's do 1 message every 2 days per our conversation on 1/23

@jeanette-pelizzon

@anvmn let's do 1 message every 2 days per our conversation on 1/23

Checked this option, but if we do that, the 'end of period' messages get really off.
If I make periods 2d, 2d, 3d, 2d, 2d, 3d ... End of first month message is on day 30, and second month message is on day 56. Should we try to adjust it more?

If I make periods 2d, 2d, 3d, 2d, 2d, 3d ... End of first month message is on day 30, and second month message is on day 56.

This sounds like it should work. I want to keep it simple so if it follows a similar cadence and some of the "end of month" messages are off I think it's okay. It's more like they are done with a certain period of the program.  Honestly, what ever you think will be the best here, I trust!
// @anvmn


[Flight][Go] Support for metadata requests

Hi 👋
Are there any plans to support metadata requests with the golang flight client❓

Which metadata requests aren't currently supported? for record batch handling, both the reader and writer support handling the AppMetadata field of the message. Which request do you need that isn't yet supported?

I was trying to find these
CommandGetCatalogs: list catalogs in a database.
CommandGetCrossReference: list foreign key columns that reference a particular other table.
CommandGetDbSchemas: list schemas in a catalog.
CommandGetExportedKeys: list foreign keys referencing a table.
CommandGetImportedKeys: list foreign keys of a table.
CommandGetPrimaryKeys: list primary keys of a table.
CommandGetSqlInfo: get information about the database itself and its supported SQL dialect.
CommandGetTables: list tables in a catalog/schema.
CommandGetTableTypes: list table types supported (e.g. table, view, system table).

after read the blog post
but couldn't find anything under go path in the repo. I'll look into the AppMetadata.
Thanks for your reply @zeroshade

@stoffeastrom Those are for FlightSQL, which is built on top of Flight RPC. FlightSQL is brand new to the Java and C++ implementations, and isn't implemented in Go yet.

@stoffeastrom There are plans to support FlightSQL in Go eventually, but there are a few requirements that need to get implemented first such as Union arrays and such since those are used in FlightSQL for a variety of responses etc. I don't have any timeline i can give you for that unfortunately.


add image dynamic from url

I am trying to add photo dynamically from the database but i keep receiving this error
"mime_content_type($user->basicInfo->image): failed to open stream: No such file or directory",
however when i dump this $user->basicInfo->image I get the image url and the url is working fine

Did you fix this?


Add support for HipChat

I use HipChat at work so this would be great.
API reference.
https://www.hipchat.com/docs/apiv2

Feel free to add a feature request on https://feedback.botframework.com/.

hey, that link takes you to https://docs.botframework.com/en-us/support/, which says create an issue for this on github

Yup, the support link says to post issues here.

It seems they dropped their UserVoice feedback channel after closing of this issue.
I believe they don't monitor closed issues, so the best way to request that is creating of a new issue.


Implement an option to not start the config_monitor thread

I normally have a lot of terminals open and don't really care if they can reload the latest configuration or not.
It seems that I'm not alone on this, hence this PR.
CC: #670

Great work on this useful feature! However I find the naming of --stop-config-monitor is a bit confusing because the monitor won't be started. Also it doesn't really align with existing naming conventions. I think that something like --no-config-monitor, --disable-config-monitor, --no-config-watch or --no-config-refresh would fit better here.

Aye aye. I think any of your suggestions is good. I'm very bad at naming things.

I'm using it right now and it works well.

@jwilm Any comment? I updated the option to --no-config-monitor according to @siiptuo 's comment. What else do I need to do to get this pull request merged?

Maybe adding the (commented) option to the default alacritty.yaml with an explanation ?

Any comment? I updated the option to --no-config-monitor according to @siiptuo 's comment. What else do I need to do to get this pull request merged?

Just haven't had time to look through PRs recently; sorry!

Maybe adding the (commented) option to the default alacritty.yaml with an explanation ?

There is no new config file option. It is command line only.

Just haven't had time to look through PRs recently; sorry!

No worries. Take your time.

I would like if this could be a config option in addition to the command line switch.

People asked for a config file option and I finally had the time today to investigate.
Now, suppose you start a few processes with config threads, then you change the config file to disallow config monitor threads. What do you expect the existing threads to do?
There are two options:

Allow the existing threads to continue running;
Make them exit.

The first option is easy, the second requires a bit of refactoring, so before I go away and write code, I would need to have some opinions first.

My opinion is that this doesn't really matter much, the second option sounds cleaner, but if it happens that it requires much effort, it is totally fine to require a restart (just like DPI setting does).
I'm curious about another thing, since you will introduce config parameter to disable config monitor, is there a demand for CLI parameter to enable it? 😃 So that users can disable config monitor by default, but when they are about to pick a new color scheme, they would start $ alacritty --watch-config=yes on that particular day.

@liuw for this option in config, we should require a restart of Alacritty. Starting/stopping the monitor mid-process doesn't seem worth the additional complexity.

@maximbaz I'm a fan of being able to enable the monitor from command line as well.

OK I update the code according to the comments I received. Please review.

Note that behavior on master is slightly different than what this PR had:

Config reloading still defaults to enabled to match the original behavior (add a flag to your config file if you want it off by default)

Passing a command line argument now uses flags. Here's the relevant help:
--live-config-reload       Enable automatic config reloading
--no-live-config-reload    Disable automatic config reloading

For reasoning on the second change, please see the commit message of 59c1dbf

Thanks for the work on this feature @liuw!


Debug.log file in the repo

Howdy!
Debug.log file found it's way into the repository. Let's add it to .gitignore and remove it from the repo.
I'd love to take over this one.
Today I speak about Open Source at meet.js Kraków meetup to encourage peeps to engage.
I'd like to show them live how to contribute using this ticket as an example.

Heya!
Yes, you are right let’s remove it from the repo.
Good luck with your talk!
mån 17 sep. 2018 kl. 17:20 skrev Maciej<EMAIL_ADDRESS>
Howdy!
Debug.log file found it's way into the repository. Let's add it to
.gitignore and remove it from the repo.
I'd love to take over this one.
Today I speak about Open Source at meet.js Kraków meetup to encourage
peeps to engage.
I'd like to show them live how to contribute using this ticket as an
example.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/fisshy/react-scroll/issues/350, or mute the thread
https://github.com/notifications/unsubscribe-auth/AC4kAwwsz2wmKlPbwR0gxJewVp33xcufks5ub73NgaJpZM4WsJFS
.

--
JOACHIM KARLSSON
FULL STACK DEVELOPER
+46 736525254
www.causam.se
http://www.causam.se


MacOS support

I would like to see SwiftSlash gain support for use on the MacOS platform.
The biggest hurdle in implementing this is the lack of support of the epoll functions with the Darwin kernel.

version 3.0: added second dependency Cfork that allows SwiftSlash to call fork on MacOS and Linux.

macOS is now fully supported and will be tagged for release shortly with SwiftSlash 3.1


Link remote comment to source url

Fixes #84 (intent to link to source of comment)
Proposed changes:

Link comment to remote source.
The normal comment link features behind the Comment datetime

Other information:

[ ] Have you written new tests for your changes, if applicable?

Testing instructions:

Go to Comment section on post page, remote comments will link to their source url (behind date time)
Go to Comment moderation page, approved remote comments will link to their source url (behind date time)

Thanks so much @mediaformat this was bugging me too!


Benchmark makeover

This merge re-vamps the CLI argument configuration of the benchmark.py script using the vastly superior and more pythonic click package. :snake: The primary intention here is that the four execution modes are now also available as plain old Python functions, as well as CLI commands, so that we may use almost the same interface from cmd as from an IPython notebook. The secondary motivation is that this is just soooo much cleaner than manual argument hackery.
Please note that this should bring no real functionality changes.

Can we reuse some of this stuff for the arguments parsing in examples/seismic/{acoustic,tti} ?

:+1: We definitely should, but in another PR, I think.

That being said, click has one caveat in that it needs input tuples to be of a defined size, since multi-options and multi-value options become ambiguous due to it's improved parsing. We, however, rely on the shape/dimension tuple size to infer the problem dimension in some tests, ie. 2D or 3D. I haven't found a clean way around this yet (believe me I tried... :frowning: ).

OK, I pushed a small set of fixes and docstring improvements, inclduing the separation of the CLI wrappers from the argument methods. Should be good to go now, subject to travis, of course. More fixes and tweaks might be required, but I'll leave these for another PR.

still looking good

Hey ho, lets' go...


Automated profiling with "airspeed velocity" (asv)

I think this was already merged into master, effectively. I'm going to close it, but please reopen if I'm mistaken.


Question: How can we use Settings icon in our app

I looked at the NavigationView xaml, but couldn't find a Settings icon reference there. How can we use commonly used animated icons in our apps too?

Settings icons are usually Gear symbols
Like :
 FontIcon fi = new FontIcon()             {                 FontFamily = new FontFamily("Segoe UI Emoji"),                 Glyph = "\U00002699",                            FontSize = 50             };

The settings item for the NavigationView is created in code behind. The icon is being set using the following C++ code:
auto const settingsItem = m_settingsItem.get();
auto const settingsIcon = winrt::AnimatedIcon();
settingsIcon.Source(winrt::AnimatedSettingsVisualSource());
auto const settingsFallbackIcon = winrt::SymbolIconSource();
settingsFallbackIcon.Symbol(winrt::Symbol::Setting);
settingsIcon.FallbackIconSource(settingsFallbackIcon);
settingsItem.Icon(settingsIcon);

The AnimatedSettingsIconVisualSource is shipped as part of WinUI 2 so you can also use it in your app.

I also found that we can do it in pure XAML too, there is a button style [PaneToggleButtonStyle] for inspiration (https://github.com/microsoft/microsoft-ui-xaml/blob/d3fef08fdf2b3e86386928097216fdfbedfda02c/dev/NavigationView/NavigationView_rs1_themeresources.xaml#L317)


Webcam_face_tracking doesn't detect face when it is run locally in firefox browser on laptop.

I am using 63.0.1 firefox browser on windows 10.
This works https://justadudewhohacks.github.io/face-api.js/webcam_face_tracking on both chrome & firefox.
but when it is run locally by npm start. It is opening the camera, but not detecting face in firefox. It works fine in chrome. And no logs too.

any way to resolve this?

I have the same question and wonder how to resolve it.

It seems like the program stops at this line       const result = withFaceLandmarks         ? await faceDetectionTask.withFaceLandmarks()         : await faceDetectionTask

yes

any workaround to solve this? like making delay.

@vbh25, did you find a solution to that problem?

calling videoEl.play() in videoEl.onloadedmetadata function .

Check in the fixed examples, closing here.


Add support for Django 2.0

It would imo also be a good idea to mention somewhere that 2.0 isn't supported yet.


Stateful Behavior cannot be reset

According to: http://wiremock.org/docs/stateful-behaviour/ we should be able to reset state if stateful is used.
However when requesting:
http://localhost:4502/stubs/__admin/scenarios/reset  I get No stub defined for this request
http://localhost:4502/__admin/scenarios/reset  I get 404 Resource at '/__admin/scenarios/reset' not found: No resource found
Stateful scenario like this seems to work except reset of course:
{
  "mappings": [
    {
      "scenarioName": "Authentication",
      "requiredScenarioState": "Started",
      "request": {
        "method": "POST",
        "url": "/sso/authenticate"
      },
      "response": {
        "status": 200,
        "headers": {
          "Content-Type": "application/json"
        },
        "bodyFileName": "myProj/authenticate.json"
      }
    },
    {
      "scenarioName": "Authentication",
      "requiredScenarioState": "Started",
      "newScenarioState": "All Accounts Closed",
      "request": {
        "method": "GET",
        "url": "/sso/authenticate/allAccountsClosed"
      },
      "response": {
        "status": 200,
        "headers": {
          "Content-Type": "application/json"
        },
        "bodyFileName": "myProj/authenticate.json"
      }
    },
    {
      "scenarioName": "Authentication",
      "requiredScenarioState": "All Accounts Closed",
      "request": {
        "method": "POST",
        "url": "/sso/authenticate"
      },
      "response": {
        "status": 200,
        "headers": {
          "Content-Type": "application/json"
        },
        "bodyFileName": "myProj/authenticate-allAccountsClosed.json"
      }
    }
  ]
}

Admin is not supported right now, also considered in #33

Admin console is now supported with most functionality.


'There isn not input fields to generate' when less than 3 fields in the fieldsFile

Hi, I am using the CLI generator fieldsFile method.
When I have less than 3 fields in the file, the artisan command give me
'There isn not input fields to generate.'
Hereby I attach my fieldsFile content.
[
    {
        "name": "id",
        "dbType": "increments",
        "htmlType": "",
        "validations": "",
        "searchable": false,
        "fillable": false,
        "primary": true,
        "inForm": false,
        "inIndex": false
    },
    {
        "name": "origin",
        "dbType": "string",
        "htmlType": "text",
        "validations": "required:unique",
        "searchable": true,
        "fillable": true,
        "primary": false,
        "inForm": true,
        "inIndex": false
    },
    {
        "name": "sequence",
        "dbType": "integer:unsigned",
        "htmlType": "select",
        "searchable": false,
        "fillable": true,
        "primary": false,
        "inForm": true,
        "inIndex": false
    }
]

+1

+1

+1
In my case, I needed at least 4 fields (first being the id PK).
Maybe this happens because it counts the minimum to be: (id PK + 2 timestamp fields = 3) + 1 regular field = 4

+1

I believe if you are using a json file you need to include the ID and timestamp fields in the json. Therefore the bare minimum would be 4 including the 3 default fields.

+1

+1

+1

I will plan to check and fix this week.

Same as #528.


Acceptance criteria:

[ ] Data should be automatically synchronized when an internet connection is established
[ ] Data persist, even when the app is closed
[ ] Option for photos to be uploaded only with an active WiFi connection

Not mentioned in 'Lastenheft'

Funktion(en) nice to have, aber weder im Lastenheft genannt noch easy umsetzbar. Daher closed as not planned.