Remove gtk::StatusIcon example

This API is deprecated (and thus removed from the bindings now)
in favour of gio::Notification.

Still makes me sad. :'(
Let's wait for CI for this one!

Yeah, now CI should be green apart from the GTK 3.24 build :)

The error for the 3.14 seems weird...

It means that there's only GLib 2.40 available there but we now need 2.42. The others succeed because they come with a newer version of GLib together with GTK.

Euh... Ok? What do we do then? We can't really keep this situation...

Restarted GTK=3.24, nightly passed

Started build bootstrap for gtk3.14, it will be in https://github.com/EPashkin/gtk-bootstrap/releases if CI passed

Yeah we'll basically need to update the GTK binaries. Which will need another update for the build_travis.sh to point to the new version.
@EPashkin should I do that as part of this PR or do you want to send one?

Started build bootstrap for gtk3.14, it will be in https://github.com/EPashkin/gtk-bootstrap/releases if CI passed

Failed for some reason that is not clear from the log: https://travis-ci.org/EPashkin/gtk-bootstrap/builds/489888040

@EPashkin We have similar failures in glib with the 3.22 build: https://travis-ci.org/gtk-rs/glib/jobs/489916043 . I don't understand where that gets its versions from.

It's funny that it works for 3.24 but not for 3.14.

That should we do in here? 3.14 is supposed to be supported by gtk-rs so testing it is a requirement.

That should we do in here? 3.14 is supposed to be supported by gtk-rs so testing it is a requirement.

I don't know how the CI setup works exactly but it seems you get GTK binaries from @EPashkin's repo somehow? That should contain GLib 2.42 then, which is what I think he did for https://github.com/gtk-rs/examples/pull/226#issuecomment-461292240

Can you fix it @EPashkin please? :)

unrelated, why don't we use docker images of reasonably recent Linux distros for the CI? So that we could simply use the GTK versions that are coming with those distro versions.

If you have an idea to fix it, please go ahead. :)

I don't know how any of this CI stuff works, sorry :) but that's what I saw other projects doing

I never used docker either. I can't really merge until this solution is solved, otherwise it'd mean that we'd have failing CI forever.

@EPashkin was working on it and it just waits for his GTK binaries for 3.14 to be finished.

Seems building gtk3.14 not helps as we have problem on any linking attempt ever before building examples
we need lower version back to travis's 😢

Urg2.

Seems we need go down to gtk3.10
https://packages.ubuntu.com/trusty/libgtk-3-0

@sdroege Can you try use Ubuntu Xenial in travis?
https://docs.travis-ci.com/user/reference/xenial/
https://docs.travis-ci.com/user/reference/overview/

Why don't we use the GTK binaries that you're building for the CI?

But that's also why I mentioned docker. Travis' Linux distro is simply shit and completely outdated, for proper testing you want to have a more meaningful environment set up :)

Travis has gtk3.16 on Xenial, IMHO better use it that my gtk3.14 that build from different versions.
I don't have experience with docker and don't know any dockered CI.

Travis has gtk3.16 on Xenial, IMHO better use it that my gtk3.14 that build from different versions.

But we also want to test the e.g. 3.24 configuration or not?

I don't have experience with docker and don't know any dockered CI.

I know how to use that for GitLab CI but that's about it.

I'll try the Xenial Travis later, but this does not seem like a long-term solution.

@sdroege, @GuillaumeGomez
Please don't start any new build for 30min, rebuilding 3.24 bootstrap

3.24 bootstrap updated

Looks better

Thanks a lot to both of you! I merge then. :)


Tab: renderActiveOnly={false} does not render

Steps
I am trying render two components in two Tab Panes with renderActiveOnly={false}
Expected Result
Show two tabs which contain my two components.
Actual Result
Shows two tabs with proper labels and empty content.
Version
0.74.2
Testcase
https://codepen.io/deilv/pen/qPVKXb
Hint
If I change renderActiveOnly to {true} or in fact anything other than {false}, the panes render, though I guess the renderActiveOnly functionality is disabled.

After going through the documentation again and again, I finally realised that you can only use pane instead of render when renderActiveOnly={false}, but it's not properly documented.

Tab will receive the breaking refactor soon that will standartize API and remove render() fully. This is one of pre v1 that should be done.

This still wasn't very obvious from the docs, despite the "example with renderActiveOnly false" being provided. It's not clear that you can't pass panes the other object structure.
It also doesn't even work properly if you pass it anything but a literal Tab.Pane, but I'll file a different bug for that.

I used like const panes =[{ menuItem: 'Tab 1', pane: <Tab.Pane attached>...}]  (without the arrow fn) and it worked


Download CLI

Hey guys,
Following this issue , and this official doc, Im' wondering what is exactly the Download CLI at the bottom right of the dashboard:

When I uncompress it I have a 13Mo file and I really don't know what to do with it:

As I mentioned in an another thread, my priority is to be able to use the CLI from my laptop to the VPS host that runs a Swarm master (and the nodes behind it.)
Cheers!

Rancher Version:1.1.0-dev1
Docker Version:1.11
OS and where are the hosts located? VPS
Setup Details: two nodes, 2GB each
Environment Type: Swarm
**Steps to Reproduce: **
Results:
Expected:

It just looks like the Mac OS X link downloads the Linux version of the package. My 5 cents!

I've not used the swarm support before, but that link is to the Rancher CLI, the docs for using the CLI can be found here. Basically though, you need to give it execute permissions and run it from a terminal of your choice against the rancher server.
You need to set a API an access key and a secret key, plus a cattle URL. It's in the doc i've linked to above. Apologies if it's not relevant to Swarm, i would think that rancher-compose is agnostic of the scheduling engine used in that environment.

As @Rucknar mentioned, the Download CLI is related to downloading our rancher-compose CLI. I use the "Mac OS X" link all the time and it's working correctly for me in v1.1.0-dev1. You need to open a Terminal screen and switch over to where the rancher-compose binary is. You would be able to run commands
./rancher-compose up

As for using rancher-compose CLI in a swarm environment, the services will be launched in your Swarm environment and it will deploy services on hosts in that environment, but it will not be using the Swarm scheduler.
Please re-open if you have further questions.

OS X is a variant of UNIX.  All executables say kind="Unix executable", you just don't see them for normal apps because they're wrapped in a .app bundle.  This doesn't mean that you downloaded the Linux binary.

Got it @vincent99 !
@deniseschannon Thanks for the info. Will try this and let you know. Cheers!


Redesign: Generic panel

Context

Summary

Relevant Technical Choices

To-do

User-facing changes

Before
After

Testing Instructions

QA
This can be QA-d per-panel.

[x] This is a non-user-facing change and requires no QA

This PR can be tested by following these steps:

UAT

[x] UAT should use the same steps as above.

This PR can be tested by following these steps:

Checklist

[x] This PR addresses an existing issue and I have linked this PR to it in ZenHub
[ ] I have tested this code to the best of my abilities
[ ] I have verified accessibility to the best of my abilities (docs)
[ ] I have verified i18n and l10n (translation, right-to-left layout) to the best of my abilities
[ ] This PR contains automated tests (unit, integration, and/or e2e) to verify the code works as intended (docs)
[ ] I have added documentation where necessary
[x] I have added a matching Type: XYZ label to the PR

Fixes #6211

@barklund IDK right now where the extra white outline comes from in focused state, however, it feels like we should address this together in the whole editor instead of panel by panel -- we shouldn't have such inconsistencies when releasing anyway.
Perhaps a general issue for fixing the focus considering the keyboard only rule, too (also for inputs, see https://github.com/google/web-stories-wp/pull/6489#discussion_r582764094 as well) would make sense.


fix mistranslation and typo in chapter 5, plus minor fixes

The major fix is about the listing of the small world network features.
It's read as, the mix describes (all of four):

how our neurons connect
how to foster collective creativity
how to solve problems
how JFK avoided nuclear war

but that's probably not what's meant originally, (notably the third didn't make sense.)
So this rephrases to mean, the mix:

describes how our neurons connect
fosters collective creativity
fosters collective problem-solving
helped JFK avoid nuclear war

Please review if this parallelism matches the original sentence.
(I tried to maintain the good nuance of friendly expressions the first ja translator made, that may not be perfect though.)

Awesome! Thank you so much @sulume for all the fixes! :)


About forwarding the ws://{IP}:{PORT} service

Nice job!
My problem is: I am running wide in a docker container, and the host can visit wide properly, but other hosts in the same local network cannot.
The reson is that wide tells its client to connect the ws channel at ws://<IP_ADDRESS>:80, where <IP_ADDRESS> is the container's IP.
This IP is inaccessible except by the host running the container.
Any quick sollution to this problem?
Thanks!

Hi, wenris
You can use the -channel parameter to solve the problem.
https://github.com/b3log/wide#docker

Thanks, but this does not solve my problem. Here is my test enviorment:
Host A has IP addr as <IP_ADDRESS>, and run docker with ./wide -p 80:80

OK, I solve this problem by -channel ws://<IP_ADDRESS>, it is not perfect but it works.


Temp Ally

Some members in my Discord tell me suggest this with devs team
Name: Set Ally
Type: Mechanic
Use for: Make target you choose become your ally
Parts:

Icon Key
Counts as Cast
Key
Duration : [seconds] ( -1 = infinity )

Name: Remove Ally
Type: Mechanic
Use for: Remove your ally
Parts:

Icon Key
Counts as Cast
Key

Name: Is Ally
Type: Condition
Use for: Check if target is your ally or not
Parts:

Key

are you talking about the built in ally/enemy feature that determines if you can attack something or not?

yea like that


Only implement for positive numbers (and remove result)

It was suggested that this really only makes sense for unsigned integers. Is this correct?

Thanks for taking the time to give feedback!


Delay Attribute Route initialization to the first request

Fix for #1989

:shipit: (wondering if this has any affect on apiexplorer being able to get information about attribute routes?)

Nope. ApiExplorer uses the IActionDescriptorCollectionProvider to get it's data (as does attribute routing). IActionDescriptorCollectionProvider has always been lazy, this just takes advantage of that.

:+1: thanks...


[terra-infinite-list] Accessibility Issues With Virtualization and Scroll-based Loading

Bug Report
Accessibility Issues With Virtualization and Scroll-based loading of ListItems
Description
InfiniteList is missing the appropriate aria labels for row indexes and row counts to describe to a user which components they are viewing.
InfiniteList doesn't maintain tabbing and arrow based navigation focus using assistive technology if the next available list item or tab index has been virtualized. This results in elements at the end of the list being unreachable via keyboard.
Expected Behavior
Using AT keys for list item cycling listen for incorrectly defined row indexes.
Using the tab key should be able to cycle through all selectable items and sub items even if they have been virtualized.
Possible Solution
The concept of paging/virtualization doesn't exist with html list, only tables. So rebuilding with the new terra-table may be the only way.
ListItem can only contain read-only content and focus of elements needs to be brute forced.
@ Mentions
@neilpfeiffer

@scottwilmarth we will probably need to discuss this to see what options we have (if any).  If there aren't any, we need to move away from using this component (possibly even deprecating it).

@ryanthemanuel infinite scrolling presents many challenges to people with disabilities, especially those using assistive technologies. Generally speaking, infinite scrolling should be used for discovering new things. It should not be used for scrolling a definitive list the user needs to review or find something in. From an accessibility standpoint, I do not recommend it at all. From a UX perspective, I do not think it has a role in Cerner's enterprise software. I will follow up with UX Foundations for their feedback.

Per @scottwilmarth's comments I'm closing this issue as won't fix.  We will be deprecating terra-infinite-list.  Expect a doc/npm update shortly with explanations and suggestions.


Hyas SEO v2 twitter:image path problem

Discussed in https://github.com/orgs/gethyas/discussions/446

Originally posted by pensivedog December 22, 2023
After upgrading the hyas seo module from v1 to v2, the twitter image path is incorrect. Instead of using, for instance:
localhost:1313/articles/article-title/article-image.jpg for the twitter image, it now uses
localhost:1313/article-image.jpg, placing the file name directly after the site root, without the rest of the file path.
Any idea how to fix this?

What does the content structure looks like? I guess that the article-image.jpg isn't a image resource of the article-title.

No, I tested/confirmed this. I suspect it's got something to do with the context and the dot

Frontmatter referenced image:
images: ["vincent-van-zalinge-9NapHjhwxEg-unsplash.jpg"]

Page bundle:
│
└───doks-1-2
        cover-doks-1-2.png
        index.md
        vincent-van-zalinge-9NapHjhwxEg-unsplash.jpg

Output:
<meta property="og:image" content="http://localhost:1313/vincent-van-zalinge-9NapHjhwxEg-unsplash.jpg" />

Should be:
<meta property="og:image" content="http://localhost:1313/blog/doks-1-2/vincent-van-zalinge-9NapHjhwxEg-unsplash.jpg" >

I still couldn't reproduce it with this repo on both of Linux (WSL2 Ubuntu) and Windows.
Hugo version: v0.121.1

I think there should be something else cause this issue, perhaps running on wrong Hugo version (this changes was introduced since v0.121.0) or others.

[..] this changes was introduced since v0.121.0 [..]

Ah, I missed that — thanks!
I can confirm it does work all right with:
  "otherDependencies": {
    "hugo": "0.121.1"
  },

So we should manually add this to our package.json -- is that the right way to fix this?

That won't work right now. But, it will work with the upcoming Doks (and Hyas) release that will surface the most important dependencies, so you can update Hugo, Images, and SEO for example —  yourself.

Available soon

Looking forward to this!

Tested/verified — solved/works with:
  "otherDependencies": {
    "hugo": "0.123.7"
  },

Closing


When download file, I can't get the filename

util.http_util.go中方法 DownloadUrl通过Content-Disposition获取filename时有问题，还需要考虑inline或attachment前缀。
if strings.HasPrefix(contentDisposition[0], "filename=") {
filename = contentDisposition[0][len("filename="):]
filename = strings.Trim(filename, """)
}
use case:

upload one file, and we get the fileId
download the file with method DownloadUrl by fileId, and can't get filename.

DownloadUrl is not meant to be a generic method as a public API.

fixed by https://github.com/chrislusf/seaweedfs/pull/434


Manual roll Flutter Engine fe7ea6d9c34f to 5e0d9ba35dd5

5e0d9ba35d Roll Skia from 636e136b0da9 to 1beae57ea0dd (3 revisions) (#51007)
63b6117514 [skwasm] Clip pictures if they go beyond the bounds of the window. (#50887)
cd57dc9b4c GLES for scenario_app tests using Impeller (#51000)
ef4c205239 Roll Skia from d5ca52bc7739 to 636e136b0da9 (8 revisions) (#51006)
8b240244ef [Fuchsia] Use shared gn-sdk from chromium (#50855)

FYI @zanderso – the links your putting in the commit description are linking to flutter/flutter not flutter/engine

FYI @zanderso – the links your putting in the commit description are linking to flutter/flutter not flutter/engine

Sorry about that, I'm just copy/pasting the output of git log --oneline and GitHub is trying to be smart...


Crash single-instanced app when drag and drop

Discussed in https://github.com/microsoft/WindowsAppSDK/discussions/3936

Originally posted by Bondarenko1990 November  3, 2023
I remade the application according to this example Making the app single-instanced (Part 3)
Windows App SDK 1.4.231008000
And when I do a drag the grid control I get a crash:

Event Viewer logs:

Hi, can you help me understand what you're dragging?  I built the DrumPad repo and ran the sample, I don't see any UI content that's draggable.  I tried clicking and dragging in the app as well, but it has no effect.

@JesseCol  Yes, there are no UI content that's draggable. I have created DrumPad sample with textblock that's draggable DrumpPad_link

Any news on this issue? My company is facing the same problem, we had to disable a drag and drop feature in our app after making it single instanced. Any plan on when will this be fixed?

The provided sample effectively reprodeces this crash, is there anything more we can do to help fix this problem?

@Juansero29 Yes, we're able to repro the crash internally and are investigating a fix.

The issue appears to be making Main async to support single-instance.  Can you make it synchronous instead?
        static void Main(string[] args)
        {
            WinRT.ComWrappersSupport.InitializeComWrappers();
            Task<bool> isRedirect = DecideRedirection();
            if (!isRedirect.Result)
            ...

It still crashes after making it synchronous as suggested above.
`
Microsoft.UI.Xaml.dll!DirectUI::RaiseDragDropEventAsyncOperation::OnStart() Line 40
at C:__w\1\s\dxaml\xcp\dxaml\lib\RaiseDragDropEventAsyncOperation.cpp(40)
Microsoft.UI.Xaml.dll!Microsoft::WRL::AsyncBase<ABI::Windows::Foundation::IAsyncOperationCompletedHandler,Microsoft::WRL::Details::Nil,1,Microsoft::WRL::AsyncOptions<2,0,&GUID_NULL,0>>::Start() Line 632
at C:__w\1\s\packages\Microsoft.Windows.SDK.cpp.10.0.18362.5\c\Include\10.0.18362.0\winrt\wrl\async.h(632)
[Inline Frame] Microsoft.UI.Xaml.dll!DirectUI::DXamlAsyncBaseImpl<ABI::Windows::Foundation::IAsyncOperationCompletedHandler,ABI::Windows::Foundation::IAsyncOperation,Microsoft::WRL::AsyncOptions<2,0,&GUID_NULL,0>,DirectUI::IDragOperationDeferralTarget,1>::StartOperation() Line 51
at C:__w\1\s\dxaml\xcp\dxaml\lib\DXamlAsyncBase.h(51)
Microsoft.UI.Xaml.dll!DirectUI::DropOperationTarget::RaiseDragDropEventOperationAsync(DirectUI::DragDropMessageType type, ABI::Microsoft::UI::Input::DragDrop::IDragInfo * pDragInfo, ABI::Microsoft::UI::Input::DragDrop::IDragUIOverride * pDragUIOverride, ABI::Windows::Foundation::IAsyncOperation * * ppReturnValue) Line 156
at C:__w\1\s\dxaml\xcp\dxaml\lib\DropOperationTarget.cpp(156)
Microsoft.UI.Xaml.dll!DirectUI::DropOperationTarget::EnterAsync(ABI::Microsoft::UI::Input::DragDrop::IDragInfo * pDragInfo, ABI::Microsoft::UI::Input::DragDrop::IDragUIOverride * pDragUIOverride, ABI::Windows::Foundation::IAsyncOperation * * ppReturnValue) Line 60
at C:__w\1\s\dxaml\xcp\dxaml\lib\DropOperationTarget.cpp(60)
Microsoft.UI.Input.dll!winrt::impl::consume_Microsoft_UI_Input_DragDrop_IDropOperationTarget::EnterAsync(struct winrt::Microsoft::UI::Input::DragDrop::DragInfo const &,struct winrt::Microsoft::UI::Input::DragDrop::DragUIOverride const &)
Microsoft.UI.Input.dll!winrt::impl::produce<struct winrt::Microsoft::UI::Input::DragDrop::implementation::SystemDropOperationTargetAdapter,struct winrt::Windows::ApplicationModel::DataTransfer::DragDrop::Core::ICoreDropOperationTarget>::EnterAsync(void *,void *,void * *)
DataExchange.dll!DropTargetInternal::DragEnter(struct IDragDropArgsPriv *,struct IDragUIOverridePriv * *)
rpcrt4.dll!Invoke()
rpcrt4.dll!Ndr64StubWorker()
rpcrt4.dll!NdrStubCall3()
combase.dll!CStdStubBuffer_Invoke(IRpcStubBuffer * This, tagRPCOLEMESSAGE * prpcmsg, IRpcChannelBuffer * pRpcChannelBuffer) Line 1479
at onecore\com\combase\ndr\ndrole\stub.cxx(1479)
[Inline Frame] combase.dll!InvokeStubWithExceptionPolicyAndTracing::__l6::<lambda_c9f3956a20c9da92a64affc24fdd69ec>::operator()() Line 1153
at onecore\com\combase\dcomrem\channelb.cxx(1153)
combase.dll!ObjectMethodExceptionHandlingAction<<lambda_c9f3956a20c9da92a64affc24fdd69ec>>(InvokeStubWithExceptionPolicyAndTracing::__l6::<lambda_c9f3956a20c9da92a64affc24fdd69ec> action, ObjectMethodExceptionHandlingInfo * pExceptionHandlingInfo, ExceptionHandlingResult * pExceptionHandlingResult, void *) Line 94
at onecore\com\combase\dcomrem\excepn.hxx(94)
[Inline Frame] combase.dll!InvokeStubWithExceptionPolicyAndTracing(IRpcStubBuffer * pMsg, tagRPCOLEMESSAGE *) Line 1151
at onecore\com\combase\dcomrem\channelb.cxx(1151)
combase.dll!DefaultStubInvoke(bool bIsAsyncBeginMethod, IServerCall * pServerCall, IRpcChannelBuffer * pChannel, IRpcStubBuffer * pStub, unsigned long * pdwFault) Line 1220
at onecore\com\combase\dcomrem\channelb.cxx(1220)
combase.dll!SyncServerCall::StubInvoke(IRpcChannelBuffer * pChannel, IRpcStubBuffer * pStub, unsigned long * pdwFault) Line 791
at onecore\com\combase\dcomrem\ServerCall.hpp(791)
[Inline Frame] combase.dll!StubInvoke(tagRPCOLEMESSAGE * pMsg, const _GUID &) Line 1485
at onecore\com\combase\dcomrem\channelb.cxx(1485)
combase.dll!ServerCall::ContextInvoke(tagIPIDEntry * ipidEntry) Line 1421
at onecore\com\combase\dcomrem\ctxchnl.cxx(1421)
combase.dll!ComInvokeWithLockAndIPID(ServerCall * pServerCall, tagIPIDEntry * pIPIDEntry) Line 2154
at onecore\com\combase\dcomrem\channelb.cxx(2154)
[Inline Frame] combase.dll!ThreadInvokeReturnHresult(_RPC_MESSAGE *) Line 6984
at onecore\com\combase\dcomrem\channelb.cxx(6984)
combase.dll!ThreadInvoke(_RPC_MESSAGE * message) Line 7084
at onecore\com\combase\dcomrem\channelb.cxx(7084)
rpcrt4.dll!DispatchToStubInCNoAvrf()
rpcrt4.dll!RPC_INTERFACE::DispatchToStubWorker()
rpcrt4.dll!RPC_INTERFACE::DispatchToStubWithObject()
rpcrt4.dll!LRPC_SCALL::DispatchRequest()
rpcrt4.dll!LRPC_SCALL::HandleRequest(struct _PORT_MESSAGE *,struct _PORT_MESSAGE *,void *,unsigned __int64,class RPCP_ALPC_HANDLE_ATTR *)
rpcrt4.dll!LRPC_SASSOCIATION::HandleRequest()
rpcrt4.dll!LRPC_ADDRESS::HandleRequest()
rpcrt4.dll!LRPC_ADDRESS::ProcessIO(void *)
rpcrt4.dll!LrpcIoComplete()
ntdll.dll!TppAlpcpExecuteCallback()
ntdll.dll!TppWorkerThread()
kernel32.dll!BaseThreadInitThunk()
ntdll.dll!RtlUserThreadStart()
`

All three d&d event handlers are empty in my case:
    void DropHandler(IInspectable const& target, DragEventArgs const& args)
    {
        log_debug("DropHandler");
    }

    void DragEnterHandler(IInspectable const& target, DragEventArgs const& args)
    {
        log_debug("DragEnterHandler");
    }

    void DragOverHandler(IInspectable const& target, DragEventArgs const& args)
    {
        log_debug("DragOverHandler");
    }

And being registered on ListView as follows:
        testview = ListView();
        testview.AllowDrop(true);
        testview.Drop({this, &MainWindow::DropHandler});
        testview.DragEnter({this, &MainWindow::DragEnterHandler});
        testview.DragOver({this, &MainWindow::DragOverHandler});

Thanks @mareksm - is yours the DrumPad repro attached earlier to this issue?  If it's different, could you attach your repro and/or a crash dump here?

@Scottj1s @Bondarenko1990 I did this and drag n drop works without crashing (although an error shows for Main that doesn't prevent building:
<!-- added to .csproj to get rid of an error message -->
<StartupObject>DrumPad.Program</StartupObject>

[STAThread]
static int Main(string[] args)
{
    WinRT.ComWrappersSupport.InitializeComWrappers();
    bool isRedirect = DecideRedirection();
    if (!isRedirect)
    {
        Microsoft.UI.Xaml.Application.Start((p) =>
        {
            var context = new DispatcherQueueSynchronizationContext(
                DispatcherQueue.GetForCurrentThread());
            SynchronizationContext.SetSynchronizationContext(context);
            new App();
        });
    }
    return 0;
}

private static bool DecideRedirection()
{
    bool isRedirect = false;
    AppActivationArguments args = AppInstance.GetCurrent().GetActivatedEventArgs();
    ExtendedActivationKind kind = args.Kind;
    AppInstance keyInstance = AppInstance.FindOrRegisterForKey("randomKey");

    if (keyInstance.IsCurrent)
    {
        keyInstance.Activated += OnActivated;
    }
    else
    {
        isRedirect = true;
        keyInstance.RedirectActivationToAsync(args).GetAwaiter().GetResult();
    }
    return isRedirect;
}

Not that as with all drag n drop operations, this spams non-fatal native exceptions at a very high rate as reported here #8851:
onecoreuap\shell\dataexchange\winrt\lib\droptargetinternal.cpp(306)\DataExchange.dll!00007FF908DF6988: (caller: 00007FF930C3B583) ReturnHr(1) tid(8cdc) 80070490 Element not found.

@Scottj1s @Bondarenko1990 I did this and drag n drop works without crashing (although an error shows for Main that doesn't prevent building:
<!-- added to .csproj to get rid of an error message -->
<StartupObject>DrumPad.Program</StartupObject>

[STAThread]
static int Main(string[] args)
{
    WinRT.ComWrappersSupport.InitializeComWrappers();
    bool isRedirect = DecideRedirection();
    if (!isRedirect)
    {
        Microsoft.UI.Xaml.Application.Start((p) =>
        {
            var context = new DispatcherQueueSynchronizationContext(
                DispatcherQueue.GetForCurrentThread());
            SynchronizationContext.SetSynchronizationContext(context);
            new App();
        });
    }
    return 0;
}

private static bool DecideRedirection()
{
    bool isRedirect = false;
    AppActivationArguments args = AppInstance.GetCurrent().GetActivatedEventArgs();
    ExtendedActivationKind kind = args.Kind;
    AppInstance keyInstance = AppInstance.FindOrRegisterForKey("randomKey");

    if (keyInstance.IsCurrent)
    {
        keyInstance.Activated += OnActivated;
    }
    else
    {
        isRedirect = true;
        keyInstance.RedirectActivationToAsync(args).GetAwaiter().GetResult();
    }
    return isRedirect;
}

Note that as with all drag n drop operations, this spams non-fatal native exceptions at a very high rate as reported here #8851:
onecoreuap\shell\dataexchange\winrt\lib\droptargetinternal.cpp(306)\DataExchange.dll!00007FF908DF6988: (caller: 00007FF930C3B583) ReturnHr(1) tid(8cdc) 80070490 Element not found.
onecoreuap\shell\dataexchange\winrt\lib\droptargetinternal.cpp(306)\DataExchange.dll!00007FF908DF6988: (caller: 00007FF930C3B583) ReturnHr(2) tid(8cdc) 80070490 Element not found.
onecoreuap\shell\dataexchange\winrt\lib\droptargetinternal.cpp(306)\DataExchange.dll!00007FF908DF6988: (caller: 00007FF930C3B583) ReturnHr(3) tid(8cdc) 80070490 Element not found.
onecoreuap\shell\dataexchange\winrt\lib\droptargetinternal.cpp(306)\DataExchange.dll!00007FF908DF6988: (caller: 00007FF930C3B583) ReturnHr(4) tid(8cdc) 80070490 Element not found.
onecoreuap\shell\dataexchange\winrt\lib\droptargetinternal.cpp(306)\DataExchange.dll!00007FF908DF6988: (caller: 00007FF930C3B583) ReturnHr(5) tid(8cdc) 80070490 Element not found.
onecoreuap\shell\dataexchange\winrt\lib\droptargetinternal.cpp(306)\DataExchange.dll!00007FF908DF6988: (caller: 00007FF930C3B583) ReturnHr(6) tid(8cdc) 80070490 Element not found.
onecoreuap\shell\dataexchange\winrt\lib\droptargetinternal.cpp(306)\DataExchange.dll!00007FF908DF6988: (caller: 00007FF930C3B583) ReturnHr(7) tid(8cdc) 80070490 Element not found.
onecoreuap\shell\dataexchange\winrt\lib\droptargetinternal.cpp(306)\DataExchange.dll!00007FF908DF6988: (caller: 00007FF930C3B583) ReturnHr(8) tid(8cdc) 80070490 Element not found.
onecoreuap\shell\dataexchange\winrt\lib\droptargetinternal.cpp(306)\DataExchange.dll!00007FF908DF6988: (caller: 00007FF930C3B583) ReturnHr(9) tid(8cdc) 80070490 Element not found.

@kmgallahan yes, your solution of making Main sync is what I found to work as well.  What error are you seeing for Main?  Btw, you can make it void since it's no longer returning a Task.

@Scottj1s VS reported an error about multiple entry points being defined with a red squigle under Main. Everything built and ran fine though, and the error goes away by adding the line from my last comment to the csproj.

@kmgallahan I suspect you need to add this to your csproj:
    <DefineConstants>DISABLE_XAML_GENERATED_MAIN</DefineConstants>

@Scottj1s I was just running the repo the OP provided which includes this line:
	<defineconstants>DISABLE_XAML_GENERATED_MAIN</defineconstants>

Changing capitalization and cleaning the project didn't matter:

App.g.i.cs shows that a main still gets generated, so I guess VS can't work out what is going on:
namespace DrumPad
{
#if !DISABLE_XAML_GENERATED_MAIN
    /// <summary>
    /// Program class
    /// </summary>
    public static class Program
    {
        [global::System.Runtime.InteropServices.DllImport("Microsoft.ui.xaml.dll")]
        private static extern void XamlCheckProcessRequirements();

        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.UI.Xaml.Markup.Compiler"," <IP_ADDRESS>6")]
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
        [global::System.STAThreadAttribute]
        static void Main(string[] args)
        {
            XamlCheckProcessRequirements();

            global::WinRT.ComWrappersSupport.InitializeComWrappers();
            global::Microsoft.UI.Xaml.Application.Start((p) => {
                var context = new global::Microsoft.UI.Dispatching.DispatcherQueueSynchronizationContext(global::Microsoft.UI.Dispatching.DispatcherQueue.GetForCurrentThread());
                global::System.Threading.SynchronizationContext.SetSynchronizationContext(context);
                new App();
            });
        }
    }
#endif

In my case (C++ app) adding this to WinMain:
winrt::init_apartment(winrt::apartment_type::single_threaded);
fixed D&D crash issue.

Closing this issue as it appears that everyone posting here has found their solution/workaround.


Adding conf to arm bench setup for telemetry device dumper

add conf file for Telemetry Device Dumper to arm bench setup
@valegagge @pattacini


STR-728: Key Derivation Crate

Description
Adds the Key Derivation Library Crate.
TODO

[x] Tests signing a transaction using a Bridge Operator's xpriv
[x] Zeroize/ZeroizeOnDrop

[x] Operator keys
[x] Sequencer key

[x] Sequencer keys
[x] Refactor bridge-client CLI to use the key derivation crate.
[x] Refactor sequencer binaries/libs to use the key derivation crate.
[ ] Refactor datatool to use key-derivation crate.

Type of Change

[ ] Bug fix (non-breaking change which fixes an issue)
[x] New feature/Enhancement (non-breaking change which adds functionality or enhances an existing one)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] Documentation update
[x] Refactor
[x] New or updated tests
[ ] Dependency Update

Notes to Reviewers
The key derivation crate moves the logic of key derivation away from the bridge and sequencer binaries into a separate standalone crate.
This will be equipped with proper tests and error types.
Checklist

[x] I have performed a self-review of my code.
[x] I have commented my code where necessary.
[x] I have updated the documentation if needed.
[x] My changes do not introduce new warnings.
[x] I have added tests that prove my changes are effective or that my feature works.
[x] New and existing tests pass with my changes.

Related Issues
STR-728

good comments!


Decimal places truncation

Dear Zipline Maintainers,
Before I tell you about my issue, let me describe my environment:
Environment

Operating System: Windows 7
Python Version: 3.5.5 Anaconda
Python Bitness: 64
How did you install Zipline: Conda

The same as in issue https://github.com/quantopian/zipline/issues/2195
Description of Issue
I am testing the same strategy on Zipline and another backtesting software and I noticed substantial differences in the computation of the number of contracts. Digging in the code, I discovered that all the prices I ingested via my custom service get truncated to the third decimal place. I suppose this is the code responsible for that:
https://github.com/quantopian/zipline/blob/d760a844683e0593e4a91d0e06af06ff5293e91b/zipline/data/history_loader.py#L350-L363
Is this intentional? It produces substantial differences in the backtest, after a couple hundreds sessions the rounding in the number of contracts introduces a degree of path dependency that makes the same logic behave in completely different ways (granted, the one I'm working on is not a brilliant strategy to begin with, but I need to implement it nevertheless to understand precisely this kind of issues). I believe this should be at least documented and configurable by the end user as high levels of capital may unwillingly introduce significant mistakes.
Thanks for your patience!
Andrea

Agree with veeenu. For FX data, five decimals at least are needed. I have to revise the source code to set DEFAULT_ASSET_PRICE_DECIMALS for may FX csv data.

has anyone solved this issue?  My data is still only using three decimal places despite updating the code above.

Has anyone found a solution to this? I really don't want to multiple my data by 100 or 1000 while creating the bundle and divide back in the back test.

I believe the truncation occurs during ingestion of data bundle, see BcolzDailyBarWriter.to_ctable
`def to_ctable(self, raw_data, invalid_data_behavior):
if isinstance(raw_data, ctable):
# we already have a ctable so do nothing
return raw_data
    winsorise_uint32(raw_data, invalid_data_behavior, 'volume', *OHLC)
    **processed = (raw_data[list(OHLC)] * 1000).astype('uint32')**
    dates = raw_data.index.values.astype('datetime64[s]')
    check_uint32_safe(dates.max().view(np.int64), 'day')
    processed['day'] = dates.astype('uint32')
    processed['volume'] = raw_data.volume.astype('uint32')
    return ctable.fromdataframe(processed)`

and the reader code multiplies with 0.001 see _equities.pyx _read_bcolz_data method.
The issue is _equities.pyx is a Cython code, and it needs to be recompiled.
Can anyone help me on how can I recompile all the Cython code in the project after making changes.
Another option I am thinking is only changing the writer code (multiply prices by 10000)  and divide all multipliers by 10.


[LORA] Use SuperDuperDB, ray and deepspeed to run local/remote multi GPU training

Description
#1647
Related Issues

Checklist

[ ] Is this code covered by new or existing unit tests or integration tests?
[ ] Did you run make unit-testing and make integration-testing successfully?
[ ] Do new classes, functions, methods and parameters all have docstrings?
[ ] Were existing docstrings updated, if necessary?
[ ] Was external documentation updated, if necessary?

Additional Notes or Comments

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Comparison is base (34830a7) 80.33% compared to head (ae1cfb3) 76.15%.
 Consider uploading reports for the commit cb4b747 to get more accurate results

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1719      +/-   ##
==========================================
- Coverage   80.33%   76.15%   -4.19%
==========================================
  Files          95      123      +28
  Lines        6602     8889    +2287
==========================================
+ Hits         5304     6769    +1465
- Misses       1298     2120     +822

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

Integration tests and use cases will be provided in this PR or the next PR

Looks great. Only slight feedback is the doc-string explanations are quite minimal.

Thanks, Added doc-string to explain the main function logic


Client side quiche::Connection is_established() returns true before handshake completes.

For reference https://github.com/MatrixAI/js-quic/issues/9#issuecomment-1519298781.
For context, I have a test in our code that checks if a connection fails if the server fails to authenticate the client. My expectation here is that the server will end up with a TlsFail error and close the connection. The client should see the closing frame with the TLS error BEFORE the handshake has completed and is_established() returns true.
What I am seeing is that the client's is_established() is returning true very early in the handshake procedure.
1	0.000000000	<IP_ADDRESS>	<IP_ADDRESS>	34238	QUIC	1242	Initial, DCID=494077f00d584ca236388136a42f9a6d, SCID=fa93ec24c633d1f91662cb586d0b57c46cca0dec, PKN: 0, CRYPTO
2	0.002128503	<IP_ADDRESS>	<IP_ADDRESS>	34148	QUIC	250	Retry, DCID=fa93ec24c633d1f91662cb586d0b57c46cca0dec, SCID=4adf076468fb432462e51fb1018c79749b21e0dc
3	0.003273495	<IP_ADDRESS>	<IP_ADDRESS>	34238	QUIC	1242	Initial, DCID=4adf076468fb432462e51fb1018c79749b21e0dc, SCID=fa93ec24c633d1f91662cb586d0b57c46cca0dec, PKN: 1, CRYPTO
4	0.006133042	<IP_ADDRESS>	<IP_ADDRESS>	34148	QUIC	1242	Handshake, DCID=fa93ec24c633d1f91662cb586d0b57c46cca0dec, SCID=4adf076468fb432462e51fb1018c79749b21e0dc, PKN: 0, CRYPTO
// Client's `is_established()` returns true here.
5	0.039734489	<IP_ADDRESS>	<IP_ADDRESS>	34238	QUIC	1242	Handshake, DCID=4adf076468fb432462e51fb1018c79749b21e0dc, SCID=fa93ec24c633d1f91662cb586d0b57c46cca0dec, PKN: 0, ACK, CRYPTO
6	0.040731996	<IP_ADDRESS>	<IP_ADDRESS>	34238	QUIC	162	Handshake, DCID=4adf076468fb432462e51fb1018c79749b21e0dc, SCID=fa93ec24c633d1f91662cb586d0b57c46cca0dec, PKN: 1, ACK, CRYPTO
// Server rejects client's TLS cert here
7	0.067375517	<IP_ADDRESS>	<IP_ADDRESS>	34148	QUIC	113	Handshake, DCID=fa93ec24c633d1f91662cb586d0b57c46cca0dec, SCID=4adf076468fb432462e51fb1018c79749b21e0dc, PKN: 1, CC
8	0.071265881	<IP_ADDRESS>	<IP_ADDRESS>	34238	QUIC	162	Handshake, DCID=4adf076468fb432462e51fb1018c79749b21e0dc, SCID=fa93ec24c633d1f91662cb586d0b57c46cca0dec, PKN: 2, ACK, CRYPTO
9	0.071536492	<IP_ADDRESS>	<IP_ADDRESS>	34238	QUIC	115	Handshake, DCID=4adf076468fb432462e51fb1018c79749b21e0dc, SCID=fa93ec24c633d1f91662cb586d0b57c46cca0dec, PKN: 3, ACK, PING

It is my understanding that is_established() should only return true once the handshake has completed. And the handshake only completes once the HANDSHAKE_DONE frame (shown as DONE in the packet logs) has been sent.
For reference, here are the packet logs for a connection that succeeds.
1	0.000000000	<IP_ADDRESS>	<IP_ADDRESS>	36275	QUIC	1242	Initial, DCID=299582cc5ab22a21e56e76591e28b1bd, SCID=c577439e01a0dcb123b5005c790f1959cdc65459, PKN: 0, CRYPTO
2	0.002151087	<IP_ADDRESS>	<IP_ADDRESS>	43749	QUIC	250	Retry, DCID=c577439e01a0dcb123b5005c790f1959cdc65459, SCID=b5e03103516e73f4506ee5565710db8455111925
3	0.003300591	<IP_ADDRESS>	<IP_ADDRESS>	36275	QUIC	1242	Initial, DCID=b5e03103516e73f4506ee5565710db8455111925, SCID=c577439e01a0dcb123b5005c790f1959cdc65459, PKN: 1, CRYPTO
4	0.006159623	<IP_ADDRESS>	<IP_ADDRESS>	43749	QUIC	1242	Handshake, DCID=c577439e01a0dcb123b5005c790f1959cdc65459, SCID=b5e03103516e73f4506ee5565710db8455111925, PKN: 0, CRYPTO
// Client's `is_established()` returns true here.
5	0.043200211	<IP_ADDRESS>	<IP_ADDRESS>	36275	QUIC	1242	Handshake, DCID=b5e03103516e73f4506ee5565710db8455111925, SCID=c577439e01a0dcb123b5005c790f1959cdc65459, PKN: 0, ACK, CRYPTO
6	0.044810146	<IP_ADDRESS>	<IP_ADDRESS>	36275	QUIC	154	Handshake, DCID=b5e03103516e73f4506ee5565710db8455111925, SCID=c577439e01a0dcb123b5005c790f1959cdc65459, PKN: 1, ACK, CRYPTO
// Server's `is_established()` returns true here.
7	0.046969036	<IP_ADDRESS>	<IP_ADDRESS>	43749	QUIC	529	Protected Payload (KP0), DCID=c577439e01a0dcb123b5005c790f1959cdc65459, PKN: 0, DONE, CRYPTO
// Expected Client side establishment?
8	0.050229052	<IP_ADDRESS>	<IP_ADDRESS>	36275	QUIC	86	Protected Payload (KP0), DCID=b5e03103516e73f4506ee5565710db8455111925, PKN: 0, ACK
// Expected Server side establishment?

Here we see that the client is established far before the DONE frame is sent in packet 7.
So is this a bug with quiche?

And the handshake only completes once the HANDSHAKE_DONE frame (shown as DONE in the packet logs) has been sent.

Nope, per RFC9001, Section 4.1.1:

In this document, the TLS handshake is considered complete when the TLS stack has reported that the handshake is complete.

Which is what SSL_in_init() does.
HANDSHAKE_DONE is used for handshake confirmation... they are different things.

Shouldn't it use SSL_is_init_finished instead?

I don't think it would make any difference, since in BoringSSL that just calls SSL_in_init() https://github.com/google/boringssl/blob/master/ssl/ssl_lib.cc#L2787-L2789

Ah, sorry for my misunderstanding, I'm pretty new to this library. If this is intended behaviour then I had a bad assumption about when a connection is considered established.
Digging deeper into my problem. In my code to avoid an TlsFail error after I consider the connection fully established. I need to know on the client side when the connection has fully completed the TLS handshake or if the HANDSHAKE_DONE frame has been received.
Is there a way to know when this stage in the connection has been reached?


Use CIDv1 by default

IPFS desktop currently defaults to using CIDv0 when importing files and adding them to IPFS. This PR changes the default to use CIDv1.
This should solve https://github.com/ipfs/ipfs-desktop/issues/2361 and make sure IPFS Desktop is using the most up-to-date CID standard.

Thanks for this @davidd8 ! I just approved the CI tests to run and will review once passing.

@SgtPooki would it be possible to merge this?


Can you publish this fix on creates.io? I encountered the same issue :smile:

Oops. Sure thing, I was trying to avoid releasing a new version for each small fix. Will update it on crates.io shortly. Happy to know people are actually using the library haha.
Do note I've made big progress on the rewrite and it will release relatively soon (working on documentation currently, then examples, testing, CI pipeline and it will be done). With that said, I'll fix any bugs I can find in v3 in the future.

@AregevDev
You can also patch crates.io in your current project as described here (last paragraph in the linked section): https://doc.rust-lang.org/cargo/reference/overriding-dependencies.html#testing-a-bugfix
This is the standard way of getting a version of a crate that has not been published yet ;)

Yeah I know, I wasn't feeling like fetching from git... 🫣


Support for Wall/Plug-in Dimmers and Switches

It would be useful to be able to assign additional functions triggered by wall switches. For example, I have a dimmer for the lights in the bathroom and a switch for the exhaust fan. I’d like a single press of the off switch of the light to turn on the fan for 5 minutes or shut it off after 5 minutes if it’s running. (I can do that now.) But I’d like to add a long press to leave it on for longer after a shower. I could add a Pico to do this, but I’d rather not add more controls to the bathroom.

Alas, button press events for non-Pico devices aren't exposed by Lutron. This is a common request that isn't available in the LEAP protocol.


Feat: Implement the functions in the FeeUtils library.

Description
Implement the increment_claimable_fee_amount function in the FeeUtils library.
File: src/fee/fee_utils.cairo.
Function signature:
    /// Increment the claimable fee amount for the specified market.
    /// # Arguments
    /// * `data_store` - The `DataStore` contract dispatcher.
    /// * `event_emitter` - The `EventEmitter` contract dispatcher.
    /// * `market` - The market to increment claimable fees for.
    /// * `token` - The fee token.
    /// * `delta` - The amount to increment.
    /// * `fee_type` - The type of the fee.
    fn increment_claimable_fee_amount(
        data_store: IDataStoreSafeDispatcher,
        event_emitter: IEventEmitterSafeDispatcher,
        market: ContractAddress,
        token: ContractAddress,
        delta: u128,
        fee_type: felt252,
    )

Implement the increment_claimable_ui_fee_amount function in the FeeUtils library.
File: src/fee/fee_utils.cairo.
Function signature:
    /// Increment the claimable ui fee amount for the specified market.
    /// # Arguments
    /// * `data_store` - The `DataStore` contract dispatcher.
    /// * `event_emitter` - The `EventEmitter` contract dispatcher.
    /// * `market` - The market to increment claimable fees for.
    /// * `token` - The fee token.
    /// * `delta` - The amount to increment.
    /// * `fee_type` - The type of the fee.
    fn increment_claimable_ui_fee_amount(
        data_store: IDataStoreSafeDispatcher,
        event_emitter: IEventEmitterSafeDispatcher,
        uiFeeReceiver: ContractAddress,
        market: ContractAddress,
        token: ContractAddress,
        delta: u128,
        fee_type: felt252,
    )

Implement the claim_fees function in the FeeUtils library.
File: src/fee/fee_utils.cairo.
Function signature:
    /// Claim fees for the specified market.
    /// # Arguments
    /// * `data_store` - The `DataStore` contract dispatcher.
    /// * `event_emitter` - The `EventEmitter` contract dispatcher.
    /// * `market` - The market to increment claimable fees for.
    /// * `token` - The fee token.
    /// * `receiver` - The receiver of the claimed fees.
    fn claim_fees(
        data_store: IDataStoreSafeDispatcher,
        event_emitter: IEventEmitterSafeDispatcher,
        market: ContractAddress,
        token: ContractAddress,
        receiver: ContractAddress,
    )

Implement the claim_ui_fees function in the FeeUtils library.
File: src/fee/fee_utils.cairo.
Function signature:
    /// Claim ui fees for the specified market.
    /// # Arguments
    /// * `data_store` - The `DataStore` contract dispatcher.
    /// * `event_emitter` - The `EventEmitter` contract dispatcher.
    /// * `ui_fee_receiver` - The ui fees receiver.
    /// * `market` - The market to increment claimable fees for.
    /// * `token` - The fee token.
    /// * `receiver` - The receiver of the claimed fees.
    fn claim_ui_fees(
        data_store: IDataStoreSafeDispatcher,
        event_emitter: IEventEmitterSafeDispatcher,
        ui_fee_receiver: ContractAddress,
        market: ContractAddress,
        token: ContractAddress,
        receiver: ContractAddress,
    ) -> u128

Implement the emit_claimable_fee_amount_updated function in the FeeUtils library.
File: src/fee/fee_utils.cairo.
Function signature:
    /// Emits event about fee amount update
    /// # Arguments
    /// * `event_emitter` - The `EventEmitter` contract dispatcher.
    /// * `market` - The market where the fee amount was updated.
    /// * `token` - The fee token.
    /// * `delta` - The variation in fee amount.
    /// * `next_value` - The new fee amount value.
    /// * `fee_type` - The type of the fee.
    fn emit_claimable_fee_amount_updated(
        event_emitter: IEventEmitterSafeDispatcher,
        market: ContractAddress,
        token: ContractAddress,
        delta: u128,
        next_value: u128,
        fee_type: felt252
    )

Implement the emit_claimable_ui_fee_amount_updated function in the FeeUtils library.
File: src/fee/fee_utils.cairo.
Function signature:
    /// Emits event about ui fee amount update
    /// # Arguments
    /// * `event_emitter` - The `EventEmitter` contract dispatcher.
    /// * `ui_fee_receiver` - The ui fee receiver,
    /// * `market` - The market where the fee amount was updated.
    /// * `token` - The fee token.
    /// * `delta` - The variation in fee amount.
    /// * `next_value` - The new fee amount value.
    /// * `fee_type` - The type of the fee.
    fn emit_claimable_ui_fee_amount_updated(
        event_emitter: IEventEmitterSafeDispatcher,
        ui_fee_receiver: ContractAddress,
        market: ContractAddress,
        token: ContractAddress,
        delta: u128,
        next_value: u128,
        next_pool_value: u128,
        fee_type: felt252
    )

Implement the emit_fees_claimed function in the FeeUtils library.
File: src/fee/fee_utils.cairo.
Function signature:
    /// Emits event about claimed fees
    /// # Arguments
    /// * `event_emitter` - The `EventEmitter` contract dispatcher.
    /// * `market` - The market where the fee amount was updated.
    /// * `receiver` - The receiver of the fees.
    /// * `fee_amount` - The amount of claimed fees.
    fn emit_fees_claimed(
        event_emitter: IEventEmitterSafeDispatcher,
        market: ContractAddress,
        receiver: ContractAddress,
        fee_amount: u128
    )

Implement the emit_fees_claimed function in the FeeUtils library.
File: src/fee/fee_utils.cairo.
Function signature:
    /// Emits event about claimed fees
    /// # Arguments
    /// * `event_emitter` - The `EventEmitter` contract dispatcher.
    /// * `ui_fee_receiver` - The ui fee receiver.
    /// * `market` - The market where the fee amount was updated.
    /// * `receiver` - The receiver of the fees.
    /// * `fee_amount` - The amount of claimed fees.
    /// * `next_pool_value` - The new amount of the pool.
    fn emit_ui_fees_claimed(
        event_emitter: IEventEmitterSafeDispatcher,
        ui_fee_receiver: ContractAddress,
        market: ContractAddress,
        receiver: ContractAddress,
        fee_amount: u128,
        next_pool_value: u128,
)

Acceptance criteria

Function is implemented and well commented.
Associated unit tests (nominal and failure) are implemented and passing.

Resources

incrementClaimableFeeAmount function in GMX repo
incrementClaimableUiFeeAmount function in GMX repo](https://github.com/gmx-io/gmx-synthetics/blob/77a2ff39f1414a105e8589d622bdb09ac3dd97d8/contracts/fee/FeeUtils.sol#L63)
claimFees function in GMX repo](https://github.com/gmx-io/gmx-synthetics/blob/77a2ff39f1414a105e8589d622bdb09ac3dd97d8/contracts/fee/FeeUtils.sol#L104)
claimUiFees function in GMX repo](https://github.com/gmx-io/gmx-synthetics/blob/77a2ff39f1414a105e8589d622bdb09ac3dd97d8/contracts/fee/FeeUtils.sol#L134)
emitClaimableFeeAmountUpdated function in GMX repo](https://github.com/gmx-io/gmx-synthetics/blob/77a2ff39f1414a105e8589d622bdb09ac3dd97d8/contracts/fee/FeeUtils.sol#L174
emitClaimableUiFeeAmountUpdated function in GMX repo](https://github.com/gmx-io/gmx-synthetics/blob/77a2ff39f1414a105e8589d622bdb09ac3dd97d8/contracts/fee/FeeUtils.sol#L203)
emitFeesClaimed function in GMX repo](https://github.com/gmx-io/gmx-synthetics/blob/77a2ff39f1414a105e8589d622bdb09ac3dd97d8/contracts/fee/FeeUtils.sol#L236)
emitUiFeesClaimed function in GMX repo](https://github.com/gmx-io/gmx-synthetics/blob/77a2ff39f1414a105e8589d622bdb09ac3dd97d8/contracts/fee/FeeUtils.sol#L258)

Can I get this one :)

Assigned !


Unifying the sbt launcher with the original sbt launcher

This issue is a meta-issue around the problems caused by the fact that the sbt launcher installed by cs setup is not the same as the original sbt launcher. I’ve noticed that there are already a few issues that seem to be related to this: #1696, #1755, #1867. Maybe some more? See also sbt/sbt#6314, on the sbt side.
What is the best way to fix the root problem? Is it possible to use the same launcher as the original sbt launcher?

This claimed another victim today. from Discord:

Was trying to troubleshooting re: the coursier sbt-launcher. I don't think it's loading .sbtopts
Uff, I went to so much effort to get new developers to use coursier
( on my team )

Is this blocked waiting for something else to happen?

@SethTisue It is not blocked as far as I know. The Scala Center plans to work on this issue, but we have been slowed down by the summer holidays. I expect to report some progress soon.

PR here: https://github.com/coursier/apps/pull/119, but it requires a new release of coursier itself before we can merge it.

Related: #2334

Hey, I'm super glad this was addressed. Kudos 👏


automatically unpacking tuple into function arguments

For the moment a b c > f makes f to be called with a tuple (a, b, c). It'd be better to unpack the tuple as arguments to f, so f(a, b, c) would be called instead of f((a,b,c)).

For the moment nothing is done... this is a misguiding issue. Furthermore, we want tuple unpacking to be the default behavior. Closing it since it is not a real issue.


update delete gcp account access

added: delete gcp account

Closing this for now. Needs further discussion. Might create one API for all vendors.


To display chat date and time for every message in webchat

Hi,
I am using Microsoft BotFramework.  I have integrated the bot with my website but I am having a use case that needs to show every chat message's date and time for old one's.  Could anyone please guide me a solution for it.

Please suggest a solution using Node JS.

I think this line decide whether to show the timestamp. You may want to force it into true all the time.

Dupe of #985. Since there are more traffic on that bug, I will close this one.
The features has been added to our "customizability" project for planning.

In Webchat StyleOptions, add the below attribute.
timestampFormat: 'absolute',
Explanation
'absolute' will render exact time like "August 3, 10:30 AM"
'relative' will render as "1 minute ago"
===========================================================
var styleOptions = {
        bubbleBackground: 'rgba(196, 196, 205, .3)',
        bubbleFromUserBackground: 'rgba(255, 230, 0, .3)',
        botAvatarImage: ChatImagePath + 'icon_round.png',
        botAvatarInitials: 'CB',
        userAvatarImage: ChatImagePath + 'user_icon.png',
        userAvatarInitials: 'YOU',
        hideUploadButton: true,
        timestampFormat: 'absolute', // 'relative'
        sendBoxButtonColorOnFocus: '#999999',
        sendBoxButtonColorOnHover: '#004E9A',
        sendBoxButtonColor: '#999999'
    };
   window.WebChat.renderWebChat(
    {
        directLine: directLine,
        locale: 'en-US',
        // Passing 'styleOptions' when rendering Web Chat
        styleOptions
    },
    document.getElementById('chatbotdiv')
   );


Implementing hooks

I took many shortcuts in preperation for the rewrite we think will
be coming.

Current coverage is 100% (diff: 100%)

Merging #97 into develop will not change coverage

@@           develop    #97   diff @@
=====================================
  Files           63     72     +9
  Lines         1837   1985   +148
  Methods          0      0
  Messages         0      0
  Branches         0      0
=====================================
+ Hits          1837   1985   +148
  Misses           0      0
  Partials         0      0

Powered by Codecov. Last update c29d2c0...51f623f

Actually I already found a problem. It appears it is identifying the scheme as "http" instead of "https" for some reason when using https.
Need to look into why this might be the case

ac39955869131e263aff9d20714c208b0ec4d591
Code review fixes


[admin] merge to live

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

File
Status
Preview URL
Details

office-365-management-api/get-started-with-office-365-management-apis.md
:warning:Warning
View
Details

office-365-management-api/index.md
:warning:Warning
View
Details

office-365-management-api/office-365-management-activity-api-reference.md
:warning:Warning
View
Details

office-365-management-api/office-365-management-activity-api-schema.md
:warning:Warning
View
Details

office-365-management-api/office-365-management-apis-overview.md
:warning:Warning
View
Details

office-365-management-api/office-365-service-communications-api-reference.md
:warning:Warning
View
Details

office-365-management-api/troubleshooting-the-office-365-management-activity-api.md
:warning:Warning
View
Details

office-365-management-api/get-started-with-office-365-management-apis.md

Line 2, Column 1: [Warning: ms-prod-and-service - See documentation] Only one of the following attributes can exist: 'ms.prod', 'ms.service'. Use ms.prod for on-premise products, or ms.service for cloud services.

office-365-management-api/index.md

Line 2, Column 1: [Warning: ms-prod-and-service - See documentation] Only one of the following attributes can exist: 'ms.prod', 'ms.service'. Use ms.prod for on-premise products, or ms.service for cloud services.

office-365-management-api/office-365-management-activity-api-reference.md

Line 2, Column 1: [Warning: ms-prod-and-service - See documentation] Only one of the following attributes can exist: 'ms.prod', 'ms.service'. Use ms.prod for on-premise products, or ms.service for cloud services.

office-365-management-api/office-365-management-activity-api-schema.md

Line 2, Column 1: [Warning: ms-prod-and-service - See documentation] Only one of the following attributes can exist: 'ms.prod', 'ms.service'. Use ms.prod for on-premise products, or ms.service for cloud services.

office-365-management-api/office-365-management-apis-overview.md

Line 2, Column 1: [Warning: ms-prod-and-service - See documentation] Only one of the following attributes can exist: 'ms.prod', 'ms.service'. Use ms.prod for on-premise products, or ms.service for cloud services.

office-365-management-api/office-365-service-communications-api-reference.md

Line 2, Column 1: [Warning: ms-prod-and-service - See documentation] Only one of the following attributes can exist: 'ms.prod', 'ms.service'. Use ms.prod for on-premise products, or ms.service for cloud services.

office-365-management-api/troubleshooting-the-office-365-management-activity-api.md

Line 2, Column 1: [Warning: ms-prod-and-service - See documentation] Only one of the following attributes can exist: 'ms.prod', 'ms.service'. Use ms.prod for on-premise products, or ms.service for cloud services.

For more details, please refer to the build report.
If you see build warnings/errors with permission issues, it might be due to single sign-on (SSO) enabled on Microsoft's GitHub organizations. Please follow instructions here to re-authorize your GitHub account to Docs Build.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
Note: Your PR may contain errors or warnings unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel


Setup GitHub actions tests

Fixes

None. QoL improvement.

Description

Sets up Github Action tests and removes unused tests
Modify certain so that they properly bypass the api_required decorator

Testing

Well, see how this Github Action runs on this pull request! If the tests pass, we're good!

Performance

TBD

Docs

Not applicable.

@josh-chamberlain In order to get these tests working against the test database, I removed the IP whitelisting for the Dev Database -- now anyone can access the Dev database from any IP address. There's unfortunately not an easy way around it that still uses Github Actions -- the IP address of a Github Action is not static, so there'd be no easy way to whitelist it.

@maxachis we'd need to eventually replicate this in production, right?

@josh-chamberlain Depends on what you mean. If you mean whether we should have these tests against the development database also be added to the production repositories, absolutely!
If you men whether we should have the tests occur on the production database, noOOoooOoo. Risks interfering with production application and is redundant because the dev database is meant to mirror the production database. But I'm pretty sure you meant the former.

@maxachis ok, that makes sense. thank you


Error Analysis: Local Explanation - It is not clear which color is each data point

I selected two data points here: one correct and one incorrect. One can generate the graph but it is not clear what is what?

added colors with PR https://github.com/microsoft/responsible-ai-widgets/pull/335


Bug 170 fix the missing services resolved event sending

As I described in the issue itself I'm getting resolved events for services already removed. I think this is because the listeners collection is not cleared but I need you guys to verify and confirm this solution is not breaking anything else.

Sorry, about the formatting. It was done automatically and I thought that it is not bad thing, so I decided to leave it this way. I will revert these right away.
About the solution... It really seems like it is doing the right thing but I was afraid I might be missing some other aspect that might got broken by this fix.
I will remove the formatting and try to explain the fix afterwards .

Ok, I think I was able to revert the formatting. Now there are few util classes used in the test, the test itslef and the fix.
It seems that the javax.jmdns.impl.tasks.resolver.ServiceInfoResolver adds a "listener" to the JmDNSImpl. This listener is actually an instance of the "ServiceInfoImpl". This listener might get "removed" in the "cancel" method, but this won't happen if the ServceInfo is "persistent" which, according to the JavaDoc means that

Returns true if ServiceListener.resolveService will be called whenever new new information is received.

which seems ok until the ServiceInfo is there. I really think this "listener" aka the ServiceInfoImpl has to be removed when the ServiceInfo is removed. I have traced the chain of starting a service resolver and it seems a service resolver will be started if the service is added once again and it makes me feel that this is the right thing to do in this case.
Oh and the issue itself is caused by obsolete "listener" aka ServiceInfoImpl instance that invokes dns.handleServiceResolved in its updateRecord method.

@kaikreuzer, can you please review the changes. The biggest change is in the JmdnsImpl file. The rest are just two helpful test classes and a test method in the JmdnsImplTest.

@ViToni I saw you were the last one that modified the updateRecord method in the JmDNSImpl. Can you please take a look.
To describe the issue in short, since the listeners were never stopped, they are not removed and thus they are constantly notified for service resolved even if those services are removed. You can see my previous comments for further info. The other changes are just unit tests demonstrating the behvaiour.

Hi
@kaikreuzer. What next with this PR? Are you going to merge it? Are you planning next release with it?
@IvanBoychevMarinov thanks for you changes. I tested it in my case and your fix solves my problem.

Hi
@kaikreuzer. What next with this PR? Are you going to merge it? Are you planning next release with it?
@IvanBoychevMarinov thanks for you changes. I tested it in my case and your fix solves my problem.


Backend tests run triggers system firewall dialog on MacOS

After running cd backend & go test -count=1 ./... on MacOS Catalina 10.15 I get 4 dialog windows with following content but different executable names: cmd.test, app.test, rpc.test, api.test:

The problem caused by Rest.makeHTTPServer and Server.Run starting server listening on ":port" (like :8080), effectively meaning any address which triggers the firewall. Changing it to <IP_ADDRESS>:port in tests will fix the problem for me.
I've tried to fix that quickly and dirty but it didn't work: Rest.makeHTTPServer is buried deep within other function calls and it's listening address can't be fixed without exposing it to the user.
I think it might be a good opportunity to add ListenAddress parameter to the program, giving it the ability to run locally for tests and giving tests ability to be limited to localhost.

./backend/_example/memory_store/ has the same problem, and it's impossible to fix easily as well: jrpc library Server.Run supports only port but no listening address.

I've learned that the firewall is not enabled by default in macOS and turning it off fixed my problem. This issue affects developers in special circumstances and whoever will stumble upon it next time should fix it for himself.
Resolving.


Values on Tooltip of Radar Chart is not shown

Values on Tooltip of Radar Chart is not shown on v2.8.0 or v2.8.0-rc.1.
When I use v2.7.3 or older, this bug doesn't happen.
Steps to Reproduce (for bugs)
Please see official samples.
In this page v2.8.0 is being used. This bug can be seen.
https://www.chartjs.org/samples/latest/charts/radar.html

In this page v2.5.0 is being used, so this bug doesn't occur.
https://www.chartjs.org/docs/latest/charts/radar.html

Environment
Google Chrome 73.0.3683.103

This issue still exist, Anybody have any workarounds? I think we should keep this open.

@decodez it's fixed in master but not yet released.

@simonbrunel Any idea on when the next version will be released ? Thank you

You can add the following in the chart options ( verified on chartjs 2.8.0 )
tooltips: {
enabled: true,
callbacks: {
label: function(tooltipItem, data) {
return data.datasets[tooltipItem.datasetIndex].label + ' : ' + data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index];
}
}
}

@dineshyadav83 your solution works for me! Thanks

This is still not working with 2.9.3, and the workaround doesn't even work anymore.


I don't get github sometimes


broken routes.js example

the routes.js example is broken while trying to use a processor.

Stacktrace:
[1] 2019-11-20 16:33:18.925 INFO  [main] ApplicationRuntime - Add listener: org.apache.camel.k.listener.RoutesConfigurer@be64738
[1] 2019-11-20 16:33:18.927 INFO  [main] ApplicationRuntime - Add listener: org.apache.camel.k.listener.RoutesDumper@48e4374
[1] 2019-11-20 16:33:19.023 INFO  [main] RuntimeSupport - Looking up loader for language: js
[1] 2019-11-20 16:33:19.329 INFO  [main] RuntimeSupport - Found loader org.apache.camel.k.loader.js.JavaScriptRoutesLoader@dd0c991 for language js from service definition
[1] 2019-11-20 16:33:20.020 INFO  [main] RoutesConfigurer - Loading routes from: file:/etc/camel/sources/i-source-000/routes.js?language=js
[1] 2019-11-20 16:33:20.021 INFO  [main] ApplicationRuntime - Listener org.apache.camel.k.listener.RoutesConfigurer@be64738 executed in phase ConfigureRoutes
[1] 2019-11-20 16:33:20.115 INFO  [main] MainSupport - Using properties from classpath:application.properties
[1] Exception in thread "main" TypeError: invokeMember on JavaObject[Route(js)[From[timer:js?period=1s] -> [SetBody[org.apache.camel.builder.ExpressionClause@6ae7deac]]] (org.apache.camel.model.RouteDefinition)] failed due to: Multiple applicable overloads found for method name process (candidates: [Method[public org.apache.camel.model.ProcessorDefinition org.apache.camel.model.ProcessorDefinition.process(java.util.function.Supplier)], Method[public org.apache.camel.model.ProcessorDefinition org.apache.camel.model.ProcessorDefinition.process(org.apache.camel.Processor)]], arguments: [DynamicObject<JSFunction>@73017a80 (DynamicObjectBasic)])
[1] 	at <js> :program(Unnamed:28-34:1057-1258)
[1] 	at org.graalvm.polyglot.Context.eval(Context.java:368)
[1] 	at org.apache.camel.k.loader.js.JavaScriptRoutesLoader$1.configure(JavaScriptRoutesLoader.java:59)
[1] 	at org.apache.camel.builder.RouteBuilder.checkInitialized(RouteBuilder.java:457)
[1] 	at org.apache.camel.builder.RouteBuilder.configureRoutes(RouteBuilder.java:424)
[1] 	at org.apache.camel.builder.RouteBuilder.addRoutesToCamelContext(RouteBuilder.java:404)
[1] 	at org.apache.camel.impl.engine.AbstractCamelContext.lambda$addRoutes$0(AbstractCamelContext.java:1113)
[1] 	at org.apache.camel.impl.engine.AbstractCamelContext.doWithDefinedClassLoader(AbstractCamelContext.java:2456)
[1] 	at org.apache.camel.impl.engine.AbstractCamelContext.addRoutes(AbstractCamelContext.java:1113)
[1] 	at org.apache.camel.main.MainSupport.postProcessCamelContext(MainSupport.java:785)
[1] 	at org.apache.camel.main.MainSupport.initCamelContext(MainSupport.java:652)
[1] 	at org.apache.camel.main.Main.doInit(Main.java:108)
[1] 	at org.apache.camel.support.service.ServiceSupport.init(ServiceSupport.java:62)
[1] 	at org.apache.camel.support.service.ServiceSupport.start(ServiceSupport.java:90)
[1] 	at org.apache.camel.main.MainSupport.run(MainSupport.java:197)
[1] 	at org.apache.camel.k.main.ApplicationRuntime.run(ApplicationRuntime.java:70)
[1] 	at org.apache.camel.k.main.Application.main(Application.java:44)
[1] 2019-11-20 16:33:25.425 INFO  [Camel Thread #0 - CamelHangupInterceptor] MainSupport$HangupInterceptor - Received hang up - stopping the main instance.
integration "routes" updated```


Skipping caching of distinct image

If app shows image once per start (e.g. background loading image on start-up), it could be nice to have ability to skip caching this image in memory cache.
Specially it could be handy for time-based cache. LRU cache could also contribute from this as well.

Looks like I have found the way to avoid keeping unnecessary image in cache. It will still caches it with normal call, but after that I can remove it from memory with call like:
MemoryCacheUtils.removeFromCache(backgroundImgUri, ImageLoader.getInstance().getMemoryCache());

How to remove From Cache for all images?

@iman2420 Here is some method in class ImageLoader. I think it is what you wanted.
/**
	 * Returns memory cache
	 *
	 * @throws IllegalStateException if {@link #init(ImageLoaderConfiguration)} method wasn't called before
	 */
	public MemoryCache getMemoryCache() {
		checkConfiguration();
		return configuration.memoryCache;
	}

	/**
	 * Clears memory cache
	 *
	 * @throws IllegalStateException if {@link #init(ImageLoaderConfiguration)} method wasn't called before
	 */
	public void clearMemoryCache() {
		checkConfiguration();
		configuration.memoryCache.clear();
	}

	/**
	 * Returns disk cache
	 *
	 * @throws IllegalStateException if {@link #init(ImageLoaderConfiguration)} method wasn't called before
	 */
	public DiskCache getDiskCache() {
		checkConfiguration();
		return configuration.diskCache;
	}

	/**
	 * Clears disk cache.
	 *
	 * @throws IllegalStateException if {@link #init(ImageLoaderConfiguration)} method wasn't called before
	 */
	public void clearDiskCache() {
		checkConfiguration();
		configuration.diskCache.clear();
	}


hal: Countdown

Closes #25
My implementation in wiegand is working in milliseconds so I create MicroSeconds because I think thats about the resolution we should be at. Im not sure if we could tick slower reliably on the pi?
Also need to make a decision to use bitrate or something else. There doesnt seem to be a lot of movement on standardizing yet but most of the embedded hal stuff wants to live in Hertz land right now.
Im not sure how to put dependencies behind feature flags for void and bitrate

Thanks for the fast PR submission. You bring up some interesting points that I hadn't fully considered yet.
Microseconds seems like an acceptable resolution, but it makes working with seconds a bit inconvenient. Hertz conversion is nice to have, but I'm hesitant to add another dependency just for this single use, especially since the bitrate crate isn't widely adopted. I think ideally rppal should either have its own set of public newtypes (Second, Millisecond, Microsecond, Hertz, Baud, Bps) that can be converted from/into each other as well as Duration, or embedded-hal needs to standardize on a set of types that we can adopt.
Implementing support for those throughout rppal would be useful, but also causes many breaking changes, which I want to hold off on until the current version in development has been released, so I'll add it to the To Do list. I'll also have to do some more research and see how other implementations (and drivers) currently implement and use CountDown. I did find a few implementations that work with hertz as you mentioned (although most seem to be u32 or u64 internally, which limits the timer to <= 1 s).
Given the above-mentioned considerations, I'll wait with merging this for now until I have a better picture of how best to work with time units in rppal. Any additional thoughts/comments/suggestions are definitely welcome and appreciated.
As for your specific implementation, the one thing I'm curious about is the additional 1 µs sleep after the specified duration has elapsed. Was that added to prevent a 100% CPU busy-wait loop, or is it there for a different reason? If the former, shouldn't that be moved to your own code instead so CountDown remains (more) accurate?
Dependencies can be tied to the hal feature by setting optional to true, and adding the crate name to the dependencies for the hal feature flag, the same way nb and embedded-hal are specified.

These are some of the related tickets Ive been watching
https://github.com/rust-embedded/embedded-hal/issues/24
https://github.com/rust-embedded/embedded-hal/issues/59
https://github.com/rust-embedded/embedded-hal/issues/129

I added Second and Millisecond for convenience. Also this guy is in those other threads doing so in an external lib if we want to rely on that instead (though his is u32 to support no_std better I imagine)
https://github.com/TheZoq2/embedded-hal-time

Thanks. I've come across that library as well, and while it's a nice proof of concept, it's not very complete. I wouldn't mind switching to an external crate though once one has matured and is widely used.
Currently I prefer the approach I saw in one of the stm32 device crates, which also implements its own types and adds a number of convenience methods to u32, although I would make a few different choices since we don't have to deal with no_std and the usual microcontroller limitations.
I'm still a bit confused on how driver crates work with different time units used by different implementations, unless start is always called externally, and only wait is used from within the driver, but perhaps I'm missing something obvious. It would've been a lot simpler if they had standardized on using Duration.
It might be a good idea to include your current implementation for now (but without the bitrate dependency, possibly with an additional Hertz newtype and a conversion to microseconds) and potentially rework it in a future update, just so users have something to experiment with, and additional feedback can be gathered.

Hrm..Im not sure if I dont rely on a third party hertz implementation in my driver, what a good way to pass it in would be
https://github.com/jacobrosenthal/rust-bitbang-wiegand/blob/timeout/src/lib.rs#L61

That's what I'm confused about as well. The third-party hertz you're using isn't part of the embedded-hal spec, and there are no guidelines on what the time unit represents. Requiring From<Hertz<u64>> or any other conversion in your driver would make it incompatible with other embedded-hal implementations. But if you left that out, your driver wouldn't know what to pass to start. Even if you settled on just using u32, what the value represents (microseconds? nanoseconds?) is currently up to the implementation.
As far as I can tell there are 3 options. The driver could be passed a timer that has already been pre-configured, similar to how a GPIO pin is configured for input before it is passed to a driver that needs an InputPin. But then you would only be able to call wait. Or your driver accepts the required timeout value from the user as an additional parameter of the same generic type so the user can specify the correct value depending on the device crate they're working with. Or the driver requires the user to pass it a function it can call to convert its internal timeout value into the appropriate format. All of those options sound rather cumbersome to me.
I've been searching for drivers that use CountDown, but most seem to only call wait. I did find one that calls start with its own public Hertz newtype, but I'm not sure if an end-user would be able to convert between that and the type their chosen device crate uses.

I'm going to merge this and then make a few tweaks so I'll have something to experiment with, but we can continue the Time type discussion here to keep all of the comments in one place.

I've changed the Time type to Duration. That eliminates the need for most of the newtypes thanks to the various from_ constructors, except for Hertz. Duration is already used internally, so it removes an additional conversion. And there is a no_std version, so it seems like a good candidate for standardization.

I think I read somewhere the reason embedded hal folks dont like duration even though its in core is its u64 and thats costly seeing as how everything embedded is u32
https://doc.rust-lang.org/src/core/time.rs.html#134
in fairness I think I was using u64 in my hertz code? I cant remember and I pushed over it and am using duration for now and its working nicely...


android code adapted for NS v3.0

This fixes #5 for android

Ignore the .js and it's good to go

removed it. with a git force push to my branch.


Reintroduce PathToTarkovAPI again

Since PTT v5.2.0-rc.5, the PTT api is disabled by default (because broken)
Try to figure out what field can be dynamic and what field can be dynamic, maybe split the config in 2 and change how it's done ? (the question is: breaking change or not ?)

For Fika support, the fact that the ptt config can be dynamically edited means that one user session correspond to one uniq ptt config, so a major rework of PTT will be needed here.

It should work fine now. I just need to rewrite the documentation now


why only 54days for 100-days-of-ML-code

is it processing?

maybe the author does not need 100 days for ML learning


Enhancement: change ModelResolver to use "nullable": true for "non"-required properties based on default property inclusion of object mapper

As part of my SpringBoot application that uses the springdoc-openapi library (using swagger-core under the hood) to generate OpenAPI specs, I would like automatically generate .nullable(true) for "non"-required properties.
This because by (Jackson) ObjectMapper is configured with:
                .setSerializationInclusion(JsonInclude.Include.ALWAYS)

This causes Jackson includes null property values when it serializes JSON as opposed to omitted them.
But this means that every "non"-required property in de OpenAPI spec should also have "nullable": true.
However, the ModelResolver currently only adds a "nullable": true (based on what I digested from reading its source-code) in case nullable = true was specified to an @Schema(..) annotation.
But since I already use @NotNull annotations, I do not also want to also use @Schema(..) annotations.
What if we would change the ModelResolver to automatically adds nullable = true for "non"-required properties based on the "default property inclusion" in object mapper?
So that in case of JsonInclude.Include.ALWAYS the ModelResolver automatically adds nullable = true for "non"-required properties.
The "default property inclusion" could easily be determined using the (overloaded) getDefaultPropertyInclusion method of the SerializationConfig config (that can be retrieved calling .getSerializationConfig() on the object mapper.
References:

https://github.com/springdoc/springdoc-openapi/issues/1275

Going a step further, under its default configuration Jackson will deserialize nulls from a request JSON the same way it would a missing property.  So for any request arguments, all optional properties should be nullable.  Or at least, it would be nice to be able to opt into it.

Technically shouldn't a property be marked as nullable (null is a valid type) specifically if:

Property is NOT required AND the type is a non-primitive type (and Jackson JsonInclude.Include.ALWAYS is on)

I think there should be distinction between primitive vs non-primitive types here.


Does it support streaming requests?

Thank you for providing the project. How can we call for streaming requests?

The current version does not currently support streaming requests but I'll look into adding support for that in a future release.


[stable/airflow] Changed eq to and

Signed-off-by: RJ Arsenault<EMAIL_ADDRESS>
Is this a new chart: no

NOTE: We're experiencing a high volume of PRs to this repo and reviews will be delayed. Please host your own chart repository and submit your repository to the Helm Hub instead of this repo to make them discoverable to the community. Here is how to submit new chart repositories to the Helm Hub.

What this PR does / why we need it:
This PR will allow for more flexibility for deploying and cloning dags from git
Which issue this PR fixes
(optional, in fixes #<issue number>(, fixes #<issue_number>, ...) format, will close that issue when PR gets merged)

fixes #

Special notes for your reviewer:
Checklist
[Place an '[x]' (no spaces) in all applicable fields. Please remove unrelated fields.]

[x] DCO signed
[x] Chart Version bumped
[x] Variables are documented in the README.md
[x] Title of the PR starts with chart name (e.g. [stable/mychartname])

/assign @gsemet

/lgtm

@gsemet  @rjarsenault1101 this PR makes no sense, in what situation is this not redundant? For us to be running git-sync.sh, .Values.dags.git.gitSync.enabled must already be true.


Brownfield VPC merge into TGW

Is your feature request related to a problem? Please describe.
The challenge is around integrating existing environments into a new LZA environment.
Describe the feature you'd like
For a brownfield deployment - where I have a "legacy" AWS account with VPC that needs to be merged into an LZA managed organization, I would like to integrate the "legacy" VPC into the TGW that is deployed as part of the LZA.

Have you shared the Network account and TGW with that OU/Account so that you can select the TGW as target for routes you need? The only issue with doing this is that when updating the TGW RouteTable for your legacy VPC, you may get unexpected results when removing/updating that TGW RT.


Some exceptions ignore 'error' event listener

Summary
Current request version fires some exceptions synchronously, not letting users to handle them with an 'error' event listener.
Those exceptions could still be handled with a callback.
But since using callback causes request to buffer incoming data, it may not be an option.
Simplest Example to Reproduce
request('invalid_uri')
  .on('error', () => console.log('error'))
  .on('complete', () => console.log('complete'))

Expected Behavior
Since 'error' handler was attached to request object synchronously, it's expected to catch all exceptions, including "Invalid URI" exception.
Current Behavior
Right now 'error' event with "Invalid URI" exception is fired synchronously inside a request(...) call before any 'error' handler could be attached.
As a result, this exception is thrown into an event loop.
Possible Solution
One possible solution is to wrap all synchronous .emit('error', ...) calls with process.nextTick.
It should deffer 'error' events firing enough to let users register their error handlers.
Context
I've encountered this issue while downloading huge files from a remote server using request.
Since those files are very large, their content is piped into an appropriate consumer immediately.
In other circumstances I could've used callback to handle all exceptions. But registering a callback causes request to buffer an entire response, which is absolutely unacceptable in my case.
Your Environment

software
version

request
2.83.0

node
8.4.0

npm
5.5.1

Operating System
Ubuntu 16.04.1 LTS (kernel 4.4.0-101-generic)

Looks like those exceptions could be caught in node with a try ... catch statement.
Unfortunately, it's not solving my problem, because I initially encountered it in nwjs environment.
I'm closing this issue since current behavior (synchronous exceptions thrown, async exceptions handled with emitter) looks correct for node.js environment.

Looks like request have nothing to do with my issue. It was caused by the combination of webpack and request-promise.
For some reason, request-promise modified original request object instead of cloning it.


CLI Flag --bind

Motivation
Issue 75
Changes

Adds --bind flag field in options in main package.
Function StartServer (and few other internal functions) made method(s) to a newly introduced type Server.

Summary

Introduction of new flag --bind for binding-host-address to be read from CLI flag also (earlier: env and default only). The precedence order now is:
flag --bind=<host> > env HD_BIND=<host> > default value localhost
StartServer and other internal functions are made methods to type Server in order to limit the number of arguments passed. This way, the code is cleaner.

Related Issues
Closes https://github.com/komodorio/helm-dashboard/issues/75
Message for Maintainers
Given the current setup of function calls in most packages (observed specifically on main, pkg/dashboard and pkg/dashboard/subproc packages with this change), the mocking for unit tests is hardly possible. Hence, the current change was tested manually. Also, the code coverage is low.
Please confirm if issues and PRs will be accepted to revamp code to certain level. Roughly put, this would require the following things:

Introduce types in every package and make methods of most functions, if not all.
Functionally break/organize methods for testability.
Introduce more interfaces for mocking.

Very nice, thanks.

To your questions @Bhargav-InfraCloud,
I share the opinion that current code structure, quality and test coverage are all quite bad. For example, I'm really dissatisfied with current package/module structure.

Introduce types in every package and make methods of most functions, if not all.
I'm not sure I support the idea of introducing classes/methods for the sake of classes/methods. What's the benefit? I can appreciate the nice class architecture, if it makes sense.

Introduce more interfaces for mocking.
With regard to unit tests, I'd rather mock just the actual functions that call subprocesses, maybe just runCommand(), than all the functions of DataLayer. The problem is that DataLayer changes a lot, it will be a pain to maintain the interface that duplicates DataLayer complexity. In fact, the need to mock only comes to that runCommand() that invokes actual CLI tools.

Functionally break/organize methods for testability.
I'd look at specific examples of what is meant here.

On all of the above - I'd proceed with a separate PR on each of the items, 'cause it's very hard to review the changes that are very massive. In general, I like this direction of better internal architecture and encourage you to continue this conversation in further issues and PRs.


how to wait until a copy is complete

when a file is copied into the watched location, the event fires immediately. I need to wait until the file is completely copied before calling another function from within the event firing. How might i do this? Is it possible?

Just an update if it helps anyone else that encounter this issue. I the following code allows one to wait for a file copy to complete so that other operations may be performed on it afterwards:
`w := watcher.New()
w.FilterOps(watcher.Create, watcher.Remove, watcher.Write)

go func() {
	for {
		timer := time.NewTimer(5 * time.Second)

		select {
		case event := <-w.Event:
			if event.Op == watcher.Remove {
				fmt.Println("Delete was fired")
			} else if (event.Op == watcher.Write || event.Op == watcher.Create) && event.IsDir() == false {
				fmt.Println(event)
				copying = true
			}
		case err := <-w.Error:
			log.Fatalln(err)
		case <-w.Closed:
			return
		case <-timer.C:
			if copying {
				fmt.Println("Done with Copy")
				copying = false
			}
		}
		timer.Stop()
	}
}()`

Just an update if it helps anyone else that encounter this issue. I the following code allows one to wait for a file copy to complete so that other operations may be performed on it afterwards:
`w := watcher.New()
w.FilterOps(watcher.Create, watcher.Remove, watcher.Write)
go func() {
for {
timer := time.NewTimer(5 * time.Second)
	select {
	case event := <-w.Event:
		if event.Op == watcher.Remove {
			fmt.Println("Delete was fired")
		} else if (event.Op == watcher.Write || event.Op == watcher.Create) && event.IsDir() == false {
			fmt.Println(event)
			copying = true
		}
	case err := <-w.Error:
		log.Fatalln(err)
	case <-w.Closed:
		return
	case <-timer.C:
		if copying {
			fmt.Println("Done with Copy")
			copying = false
		}
	}
	timer.Stop()
}

}()`

One other option is writing to another directory on the same hard drive volume outside of the watcher, and then call os.Rename() to move it to where it should go. Renames should be atomic and fast, regardless of the size of the file.


Feat/add num gate types

Adds a function that determines the number of gates of each type in a circuit. This pull request also adds functions that compute the total number of gates in a circuit and the circuit depth.
Fixes #40

@npoirie1  I also see that there are merge conflicts with the main branch
If all the comments are addressed, it will be good to merge.

@plerouxanyon, all the comments have been addressed and the merge conflicts have been resolved.


Brcastel lint

Ready for review?

@mpiecuch-nuage We are ready for another review prior to merge.


Creating a GUI with mouse input

Is there any way to create a GUI that implements a mouse input?
I can use system.drawing and the UI in order to draw out the GUI, but I don't know how to capture mouse input, and display the mouse on screen.
Any help appreciated.
Thanks :)

Like that http://i.imgur.com/t9EkUJ1.png (Working...)
u can can disabled control action using
Function.Call(Hash.DISABLE_CONTROL_ACTION, 0, control...);
and to get mouse position use
Function.Call(Hash.GET_CONTROL_NORMAL, 0, Controls.CursorX or Controls.CursorY);
with this you can do several things


DatePicker Close() not working

Describe the bug
Calling the Close method on a DatePicker does not close the popup.
To Reproduce
Go go the demo page with custom fotter: https://blazor.radzen.com/datepicker#custom-footer
change code to this:
<div class="rz-p-12 rz-text-align-center">
    <RadzenLabel Text="Select Date" Component="DatePickerFooterTemplate" Style="margin-right: 8px; vertical-align: middle;" />
    <RadzenDatePicker @ref="_datePickerRef" @bind-Value=@value Name="DatePickerFooterTemplate">
        <FooterTemplate>
            <RadzenButton Click=@OnTodayClick Text="Today" class="my-3 w-100" />
        </FooterTemplate>
    </RadzenDatePicker>
</div>

code {
    private RadzenDatePicker<DateTime?> _datePickerRef;
    DateTime? value = DateTime.Now;

    private void OnTodayClick()
    {
        value = DateTime.Today;
        _datePickerRef!.Close();
    }
}

Click Today button
Expected behavior
The date of today is selected and the Popup is closed.
But the popup is not closed.

some more details about this,
when  PopupRenderMode = OnDemand the close method does work, when  PopupRenderMode =Initial does not work.


Mass Edit: adding tag to older watches causes server error

Describe the bug
Selecting multiple items and adding them to a tag fails with a server error
Version
0.45.3
To Reproduce
Steps to reproduce the behavior:

Select multiple items
Click on 'Tag' in the mass edit button bar
Enter a name for the Tag, existing or new
See error

Expected behavior
The selected items get added to the tag
Screenshots
none
Desktop (please complete the following information):

OS: Windows 10
Browser: Chrome
Version: 117

Smartphone (please complete the following information):
Not tested
Additional context
Log from the container:
 >>> Adding new tag - 'private'
 ERROR:changedetectionio:Exception on /form/checkbox-operations [POST]
 Traceback (most recent call last):
   File "/usr/local/flask/app.py", line 2073, in wsgi_app
     response = self.full_dispatch_request()
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   File "/usr/local/flask/app.py", line 1519, in full_dispatch_request
     rv = self.handle_user_exception(e)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   File "/usr/local/flask_restful/__init__.py", line 298, in error_router
     return original_handler(e)
            ^^^^^^^^^^^^^^^^^^^
   File "/usr/local/flask/app.py", line 1517, in full_dispatch_request
     rv = self.dispatch_request()
          ^^^^^^^^^^^^^^^^^^^^^^^
   File "/usr/local/flask/app.py", line 1503, in dispatch_request
     return self.ensure_sync(self.view_functions[rule.endpoint])(**req.view_args)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   File "/app/changedetectionio/__init__.py", line 210, in decorated_view
     return func(*args, **kwargs)
            ^^^^^^^^^^^^^^^^^^^^^
   File "/app/changedetectionio/__init__.py", line 1374, in form_watch_list_checkbox_operations
     datastore.data['watching'][uuid]['tags'].append(tag_uuid)
     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 AttributeError: 'str' object has no attribute 'append'

If you add a tag manually to the items it works, and afterwards, also via mass edit. So this issue only happens to items which never had a tag assigned

I can confirm it happened to the previous version(0.45.1), too.

@Constantin1489 @meilon can you confirm for me - make a NEW watch just now, then try to 'group tag' that one, does it happen?
the model for 'watch' is indeed a list.. so it shouldnt be string, but before we added the 'group tag' functionality it was a string (str)
let me know, thanks for the quality report

@dgtlmoon yes, a non-tagged one is enough to cause the problem

@Constantin1489 @meilon can you confirm for me - make a NEW watch just now, then try to 'group tag' that one, does it happen?
the model for 'watch' is indeed a list.. so it shouldnt be string, but before we added the 'group tag' functionality it was a string (str)
let me know, thanks for the quality report

It doesn't happen for new watches (at least created with the current 0.45.3), only for old ones

so something weird with the update script then :(
any chance you can attach your backup zip?

No, sorry, but I can tell you that the url-list-with-tags.txt has no [] for those items where the issue occurs, and in the url-watches.json the tag and tags childs both are empty strings, while those which had [] in the with-tags file also are empty lists in the json for the tags attribute and empty string for the tag attribute.
Is that what you were looking for?

In your url-watches.json what does your schema_version say?
        "application": {
....
            "schema_version": 13,
...

?

It does say version 13

No, sorry, but I can tell you that the url-list-with-tags.txt has no [] for those items where the issue occurs, and in the url-watches.json the tag and tags childs both are empty strings, while those which had [] in the with-tags file also are empty lists in the json for the tags attribute and empty string for the tag attribute.
The version_tag attribute shows the current version.
Is that what you were looking for?
EDIT: I had a little dive in the update code and the -before-x.json files. The before-12 seems to be correct (only tag, always there, either empty "" or the name of the tag), then with before-13 there are items with the empty string tags, but also some with an empty list for tags. So my guess is that for some limited time new watches were created with the wrong empty string tags

In url-watches.json I manually changed "tags": "", to "tags": [], and it works as expected now.

strange.. maybe you skipped the update somehow or restored from backup or hmmm

    'tag': '', # Old system of text name for a tag, to be removed
    'tags': [], # list of UUIDs to App.Tags

tags was never a string. so hmm i have no idea

i am having the same exact issue

If there aren't to many watches, I would just add a tag one by one in the UI, mass delete and add works after that.