Add support for inferring title

Resolves #64.
The title variable in lib/transform.js is now populated according to this
logic:

If the new --notitle option is specified:

title = ''

If a title was explicitly passed with --title:

title is the user-specified title

If a TOC exists (as evidenced by info.hasStart):

title = lines[info.startIdx + 2]
This line is assumed to always be the TOC title

Otherwise:

title is the standard **Table of Contents** title

Tests are in tests/transform-title.js.
Commit Summary

f6c9e91 - Ignore tags files

9508723 - Add clobbertitle option

f1c6ad8 - Use old title if exists. Also support clobbertitle

56bdeaa - Add tests for new title changes

4900295 - Clarify README

2c69483 - Rename --clobbertitle to --notitle (brevity)

@thlorenz Have you had a chance to look at this? If there's something holding you back I'd love to tweak it.

In general this looks good to me, although it seems to be a huge effort which you could simply solve via a script in package.json, i.e. "docme": "docme --title my-title README.md".
I'm willing to have another look after you fixed all the nits I pointed out.
Thanks.

In general this looks good to me, although it seems to be a huge effort which you could simply solve via a script in package.json, i.e. "docme": "docme --title my-title README.md".

I thought about this, but decided that baking it into the project was a better option. While it's possible to add it to a script in the package.json file, not all projects that have READMEs have a place like this where you can collect short helper scripts.
The next option would be to make it a shell alias, but that doesn't appear automatically across all collaborator's environments. You could also create a shell script and put it in the project folder, but I think it's just easier if this is handled once by doctoc itself.
Just my two cents. I think I addressed all your concerns; if something looks amiss let me know.

@thlorenz I think this might have gotten lost in the noise. Have you had a chance to review it?

Yeah, had slipped my radar. Thanks for the reminder.
So LGTM after that one final nit. Please fix then squash all into one commit and I'll merge.
Thanks.

I added the helper function and squashed.

Thanks merged (ce5b416f87624addd5e97abb5f633830d545698b) and published as 0.14.

Added you as collab so you can merge in the future and help triage issues and answer questions.
Regarding features please stick with the PR (from different branch) workflow so we can discuss before merging to master.


How do you "kill" a luv_work_ctx_t handle?

RE: #629
If you create new work via the uv.new_work function and then queue it with the queue_work function, how do you go about "killing" said work?
Some example code to show what I mean
local luv = require("luv")
local work_fn = function()
    local count = 0
    while count > 0 do
        count = count + 1
    end
    return
end
local after_work_fn = function()
    print("Work Complete!")
end
local work = luv.new_work(work_fn, after_work_fn)
work:queue()

As we see in the above code, work_fn will never "exit" and thus run infinitely. I don't see anything in the docs about how to stop "rogue" work processes. Of course, one isn't going to intentionally create code that will run forever, but it is certainly possible that code could end up doing so. For my use case, I am looking more from the angle of "code is running too long and user wants it to stop". I don't see how I would go about doing that.
Am I missing something?

Little bit of diving into the libuv docs, I dug up this tidbit
Initializes a work request which will run the given work_cb in a thread from the threadpool. Once work_cb is completed, after_work_cb will be called on the loop thread.

    This request can be cancelled with [uv_cancel()](http://docs.libuv.org/en/v1.x/request.html#c.uv_cancel).

However, when modifying the above code to try and use uv.cancel, I get the following error
Error executing luv callback:
/tmp/test.lua:35: bad argument #1 to 'cancel' (uv_req expected, got userdata)
stack traceback:
        [C]: in function 'cancel'
        /tmp/test.lua:35: in function </tmp/test.lua:34>

Note, updated code
local uv = require("luv")
local work_fn = function()
    local count = 0
    while count > 0 do
        count = count + 1
    end
    return
end
local after_work_fn = function()
    print("Work Complete!")
end
local work = luv.new_work(work_fn, after_work_fn)
work:queue()
local timer = luv.new_timer()
timer:start(100, 0, function()
    luv.cancel(work)
end)

Digging deeper still, the cancel doc actually says
Cancel a pending request. Fails if the request is executing or has finished executing.

    Returns 0 on success, or an error code < 0 on failure.

    Only cancellation of [uv_fs_t](http://docs.libuv.org/en/v1.x/fs.html#c.uv_fs_t), [uv_getaddrinfo_t](http://docs.libuv.org/en/v1.x/dns.html#c.uv_getaddrinfo_t), [uv_getnameinfo_t](http://docs.libuv.org/en/v1.x/dns.html#c.uv_getnameinfo_t), [uv_random_t](http://docs.libuv.org/en/v1.x/misc.html#c.uv_random_t) and [uv_work_t](http://docs.libuv.org/en/v1.x/threadpool.html#c.uv_work_t) requests is currently supported.

    Cancelled requests have their callbacks invoked some time in the future. It’s not safe to free the memory associated with the request until the callback is called.

    Here is how cancellation is reported to the callback:

        A [uv_fs_t](http://docs.libuv.org/en/v1.x/fs.html#c.uv_fs_t) request has its req->result field set to UV_ECANCELED.

        A [uv_work_t](http://docs.libuv.org/en/v1.x/threadpool.html#c.uv_work_t), [uv_getaddrinfo_t](http://docs.libuv.org/en/v1.x/dns.html#c.uv_getaddrinfo_t), [uv_getnameinfo_t](http://docs.libuv.org/en/v1.x/dns.html#c.uv_getnameinfo_t) or [uv_random_t](http://docs.libuv.org/en/v1.x/misc.html#c.uv_random_t) request has its callback invoked with status == UV_ECANCELED.

If I am reading that correctly, does that mean that you can't cancel a work_ctx_t handle?

I'm not too familiar with the uv_work_t bindings, but from your comments it definitely seems like this could be an oversight in our bindings. My initial reaction is:

luv_cancel should test for luv_work_ctx and call something like luv_work_cancel instead (implemented in work.c)
luv_work_cancel should be bound as cancel in the luv_work_ctx metatable (like queue is here)

My C skills are quite dull, but I could see if I can get that implemented. It will likely take me alot longer than someone with more intimate knowledge with the luv codebase though. I do agree with your reaction. I spent a bit of time digging through the source to see if there was a way to convince lua to cancel the luv_work_ctx, but I didn't see too much that I was familiar with.
That said, this is something that will prevent my work going forward so I am willing to put some (hopefully guided) effort into rectifying this, and maybe sharpening my C skills in the process lol.

In looking at it a bit more, I think this might be a more involved change than I was initially thinking it would be. luv_work_ctx_t doesn't store enough information to retrieve any associated uv_work_t, so we won't have anything to pass the uv_cancel. That is, in this example:
local work = luv.new_work(work_fn, after_work_fn)
work:queue()
-- the 'work' userdata doesn't have any reference to the uv_work_t created during 'queue()',
-- so there's no way to implement 'cancel()' which needs a uv_work_t
work:cancel()

I think a complete solution will involve returning a luv_work_t from luv_new_work and likely folding luv_work_ctx_t into it as necessary.

Actually, I think the right solution might be to make queue return something that can be canceled, as one return of new_work can be queued multiple times, so the returns of the queue calls are the things that you'd actually want to be cancelable.
In that case, the fix would be to make luv_queue_work return either a luv_req_t (if possible, this would get cancel support for free) or a luv_work_t (if necessary, would need to add a bit of special handling for this).

I took a bit of a deeper peek under the hood last night after I saw your comments, and while I agree with the latter opinion (of queue returning a cancelable object by default), I am unfortunately a bit over my head on trying to provide any sort of code change to resolve this I fear :(
I can read the code generally fine but I am failing to grasp how the lua pieces of this interact with the c code under the hood (due to my not knowing how lua is implemented within C in general). I am going to step back on this and follow along the chain, but I don't believe I'll have any useful code I can provide here

No worries, I've started attempting an implementation in my fork here: https://github.com/squeek502/luv/tree/cancelable-work

When testing things I realized that the example in the first comment in this thread won't work even if cancel is fixed for uv_work_t. From the threads guide:

Only tasks that are yet to be started can be cancelled. If a task has already started executing, or it has finished executing, uv_cancel() will fail.

Further, uv_cancel can fail even if it's called before the loop is ever run:
local luv = require("luv")
local work_fn = function(...)
  print(...)
end
local after_work_fn = function(...)
  print("after_work_fn", ...)
end
local work = luv.new_work(work_fn, after_work_fn)

local reqs = {}
for i=1,16 do
  table.insert(reqs, work:queue(i))
end

for i, queued in ipairs(reqs) do
  print(i, queued:cancel())
end

luv.run()

Will output:
1	nil	EBUSY: resource busy or locked	EBUSY
2	nil	EBUSY: resource busy or locked	EBUSY
3	nil	EBUSY: resource busy or locked	EBUSY
4	nil	EBUSY: resource busy or locked	EBUSY
5	0
6	0
7	0
8	0
9	0
10	0
11	0
12	0
13	0
14	0
15	0
16	0
after_work_fn
after_work_fn
after_work_fn
after_work_fn
after_work_fn
after_work_fn
after_work_fn
after_work_fn
after_work_fn
after_work_fn
after_work_fn
after_work_fn
1 -- this is work_fn being called for the 1st queued work
after_work_fn
2 -- this is work_fn being called for the 2nd queued work
4 -- this is work_fn being called for the 4th queued work
after_work_fn
after_work_fn
3 -- this is work_fn being called for the 3rd queued work
after_work_fn

So, your use case unfortunately doesn't seem to fit this API.

Well thats no good :( What is the recommended way to handle something like my initial use case (work that needs to be stopped "mid flight")?

Libuv is an event loop, while it's running your code it has no control. cancel was never intended to be able to stop any non-IO request mid execution (Libuv handles all IO itself).

Libuv is an event loop, while it's running your code it has no control

That doesn't make sense. Libuv is an event loop, any subprocess it starts should be terminable (even if it is forcible).
That said it does appear that cancel is not quite what I wanted here
the thread doc states the following
uv_cancel() is useful to cleanup pending tasks if the user requests termination. For example, a music player may queue up multiple directories to be scanned for audio files. If the user terminates the program, it should quit quickly and not wait until all pending requests are run.

So that brings me back to my initial request then.

Libuv is an event loop, any subprocess it starts should be terminable

Libuv is not preemptive, libuv is never in control when user code is running.
The paragraph immediately preceding that documentation notes the limitation:

Only tasks that are yet to be started can be cancelled. If a task has already started executing, or it has finished executing, uv_cancel() will fail.
uv_cancel() is useful to cleanup pending tasks if the user requests termination.

You can cancel work requests that have not yet begun, but once the request has started it must run to completion. Libuv runs work requests by calling the work function, at which point the only way it regains control is when that function returns.

You can cancel work requests that have not yet begun, but once the request has started it must run to completion. Libuv runs work requests by calling the work function, at which point the only way it regains control is when that function returns.

To be clear then, this means there is no way to kill an in flight luv_work_ctx_t? It seems a bit odd to me that a framework that provides an event loop doesn't have some sort of protection against runaway work being done in its loop.
I am not completely set on using the work context for this, it just seemed to be the best fit for what I needed. I believe luv also offers true OS threads though that seemed much more expensive for what I am looking for (my framework I am building cannot make guarantees about the work being done and needs a way to kill (at a user's request) active running work).
I want to be clear, I am not against using an alternative. I am asking what that alternative may be if using luv_work_ctx_t is not the answer. Its clear that cancel wont work. Cool, so what should I look into?

It seems a bit odd to me that a framework that provides an event loop doesn't have some sort of protection against runaway work being done in its loop.

It's not all that uncommon, stopping an in-flight work request requires preempting, which is quite difficult to do (nearly impossible at Libuv's level).
As far as I'm aware Libuv doesn't provide any way to stop, kill, or otherwise halt a spawned thread; much less do the same for an individual work request (which will be running on one of Libuv's threadpool threads).
If you cannot guarantee that the work will ever finish, you'll either need to delegate it to its own thread (at which point the os scheduler will handle it behaving poorly) or instrument it with your own code that will preempt it if it runs for too long or something similar. For the latter, you can use debug.sethook.

Leave it open, we definitely should make our cancel bindings work with uv_work_t.


support for backspace deleting selected text

The new HoloToolkit supports selecting ranges of text (a standard feature of an InputField) and will autoselect all text when opening a keyboard with text already set, but currently will not delete selected text with the backspace key. Fix will delete the selected text and set the cursor to that position.

@pnolen,
Thanks for your contribution.
To ensure that the project team has proper rights to use your work, please complete the Contribution License Agreement at https://cla.microsoft.com.
It will cover your contributions to all Microsoft-managed open source projects.
Thanks,
Microsoft Pull Request Bot

@pnolen, thanks for signing the contribution license agreement. We will now validate the agreement and then the pull request.
Thanks, Microsoft Pull Request Bot


FOUC when using animated views

When your views are animated, you will see a FOUC. The view which is leaving, will be unstyled as the view css will be unloaded before it actually dissapears or animates out.
I currently don't have the time to get a plunkr up or anything, but I did get a solution going (coffeescript). I threw it into a directive though.
"use strict"

define ["angular"], (angular) ->

  headDirective = ["$rootScope", "$compile", '$timeout', '$log', ($rootScope, $compile, $timeout, $log) ->

    restrict: "E"
    link: (scope, elem) ->
      html = "<link rel=\"stylesheet\" ng-repeat=\"(routeCtrl, cssUrl) in routeStyles\" ng-href=\"{{cssUrl}}\" >"

      elem.append $compile(html)(scope)

      scope.routeStyles = {}

      _activeStyleSheets = {}

      _pruneInactiveStyleSheets = ->
        $log.log scope.routeStyles
        angular.forEach scope.routeStyles, (styleSheet) ->
          if !_activeStyleSheets[styleSheet]?
            $log.log "head directive - removed " + styleSheet
            delete scope.routeStyles[styleSheet]

          $log.log "head directive - active stylesheets are now:"
          $log.log scope.routeStyles[styleSheet]

      $rootScope.$on "$routeChangeStart", (e, next, current) ->
        if current and current.$$route and current.$$route.css
          current.$$route.css = [current.$$route.css] unless Array.isArray(current.$$route.css)
          angular.forEach current.$$route.css, (styleSheet) ->
            delete _activeStyleSheets[styleSheet]

        if next and next.$$route and next.$$route.css
          next.$$route.css = [next.$$route.css] unless Array.isArray(next.$$route.css)

          angular.forEach next.$$route.css, (styleSheet) ->
            scope.routeStyles[styleSheet] = styleSheet
            _activeStyleSheets[styleSheet] = styleSheet

          $log.log "head directive - active stylesheets in scope are now:"
          $log.log scope.routeStyles

        $timeout ->
          _pruneInactiveStyleSheets()
        , 1000
  ]

  headDirective

It should be pretty self explanatory, if not please let me know, I can add more explanation tomorrow :).

Have the same issue :/

@Nitad,
Here was my solution to that problem, it seemed that doing everything in one event messed with the rendering timing, so I separated the functions into the two events. That resolved our issues with it, hopefully it'll help yours.
https://github.com/Bill77/angular-route-styles/commit/382b2099940ec2bf42646ff1f01a9f5005e5d52a

@Bill77 Would you be willing to do a PR from your fork to this one with that code fix so everyone can take advantage of it?
PS. Sorry this has taken me so long to get to....

@tennisgent Sure, Zach, happy to help. I believe this might be my first "public" contribution. Hopefully I did it right. :)

Looks great and you did exactly what I was hoping :smile: . I think we can finally close this issue.


bn/asm/*-mont.pl: harmonize with BN_from_montgomery_word.

Montgomery multiplication post-conditions in some of code paths is
formally non-constant time. Cache access pattern is result-neutral,
but a little bit asymmetric, which might produce a signal [on
processor can reorder load and stores at run-time].

BTW! This is unrelated to this merge request, but test_rand hung on qemu-alpha for me. Question is therefore if it's qemu deficiency or would it hang even on hardware? So if anybody has Alpha hardware, it would be nice to hear about it...

The hang appears to be multi-threading deadlock [naturally in multi-threading test in drbgtest]. It still might be qemu-specific problem, but it also might happen that qemu-alpha is slow in an unfortunate way and triggers some subtle timing problem. Which can mean that it can be triggered under some other circumstances. After all, qemu-user simply passes system calls to native kernel...

Did the old code also fail on qemu-alpha, or is this a new failure?  I suppose we could live with new regressions on Alpha, for closing the side-channel on all popular platforms. But maybe it's better to remove the alpha code from this PR?

It's drbgtest that hangs, and alpha-mont.pl is not involved there, at all. It does mean that it hangs even without suggested modification. Yes, I did check. Once again, hang in test_rand is actually unrelated to this request. The fact that it surfaced now is purely because I don't exercise alpha build that often. But I'm a bit reluctant to claim it as [separate] problem with drbg, because it still might be qemu-specific...

As it turns out drbgtest does work with newer qemu-alpha, newer than one I have on my desktop. Formally speaking it's not actually conclusive, because newer qemu might be faster [or slower] than one I have, but it would be appropriate to say that it's much more likely in fact a qemu-specific problem. Once again, "it" is actually unrelated to the code modifications in this request.

Glad to know it's unrelated.  I approve.

It didn't cherry-pick, so there is #6163, while this one is merged and closing...


Issue with Vevo video

Hello, since today the YouTube.GetVideoUriAsync
Get a url but when i browse it with chrome its a blank page and viewing the source return a blank file.
This seems to be happening with Vevo only.
Here is how i use the script: https://github.com/hesa2020/Hesa-Twitch-Bot/blob/master/HESA Twitch Bot/Managers/MusicManager.cs
Hopefully this will be fixed.
Thanks and i enjoy MyToolKit :D

Original issue: http://mytoolkit.codeplex.com/discussions/476808

Same issue with Youtube videos as well.
Thanks. And love this great library.

Will be resolved tomorrow...

Thank you buddy.
Just FYI, I love this toolkit. Amazing work.
On Tue, Nov 17, 2015 at 21:53 PM, Rico Suter<EMAIL_ADDRESS>wrote:
Will be resolved tomorrow...
—
Reply to this email directly or view it on GitHub
https://github.com/MyToolkit/MyToolkit/issues/24#issuecomment-157469253.
--
Sent from MetroMail

Fixed in v2.5.6, please check if it is working for you

Will check tonight and update you. Thanks.

Works like a charm :)

Hi, the issue is back again since this morning. It is not working anymore.

Fixed again in v2.5.7

Thanks. Is 2.5.7 code checked in? I think the code is still 2.5.6.

Its commited: https://github.com/MyToolkit/MyToolkit/commit/7d886a7d7a855954a325bbb4a0303f6a246e8ce0

Thanks. Will check this tonight.
On Wed, Nov 25, 2015 at 11:05 AM, Rico Suter<EMAIL_ADDRESS>wrote:

Its commited: 7d886a7
https://github.com/MyToolkit/MyToolkit/commit/7d886a7d7a855954a325bbb4a0303f6a246e8ce0
—
Reply to this email directly or view it on GitHub
https://github.com/MyToolkit/MyToolkit/issues/24#issuecomment-159529378.

Works fine now. Thanks once again.

Problem again with the Vevo Videos!

YouTube videos also stopped working.


requirePaddingNewlinesBeforeKeywords with very small blocks

I do enjoy padding newlines before returns for large blocks, but for small blocks (say less than or equal to two lines) they are quite cumbersome.
e.g.
try {
  fs.statSync(someFile);
  return true;
}
catch (ex) {
  return false;
}

vs.
try {
  fs.statSync(someFile);

  return true;
}
catch (ex) {
  return false;
}

I am proposing that this rule be made configurable to have a minimum size of a block before throwing an error. Thoughts?

Want to back this issue? Place a bounty on it! We accept bounties via Bountysource.

@mikesherov, @mrjoelkemp thoughts?

Sounds good. I assume this would be in the form of an object with a property called minimumBlockSize: Number. Is this the same as applying true or should we still allow the user to specify keywords? If we're still allowing specific keywords, then @markelog might have a better idea on how the config might possibly adhere to #698

Going to be closing older/inactive issues and labeling with orphaned to track anything we might want to reopen again later (if we want to add it again or something has a PR). Thanks


Inviting users with internationalized emails

Hello,
we currently rely on devise_invitable to invite users to our application.
However, some of these users have internationalized emails from Germany.
For example<EMAIL_ADDRESS>and devise doesn't seem to like this:
Net::SMTPSyntaxError: 501 Syntax error in parameters or arguments is what we receive when trying to invite such a user by calling invite!.
Any way we can make this work for such emails?

DeviseInvitable only add a method to Devise mailer to send invitation email, so probably error is in devise, ActionMailer or smtp.
That error is raised by ActionMailer, because it got smtp error, so it could be a bug in actionmailer or smtp server. Please check if you can send emails with ActionMailer to that address, or if you can send reset password email or confirmation email to that email address.


⚠ Bofrost.at has degraded performance

In 3f2e6a0, Bofrost.at (https://www.bofrost.at) experienced degraded performance:

HTTP code: 200
Response time: 1518 ms

Resolved: Bofrost.at performance has improved in d46f1d4.


Conditional byte-compilation fails to build the package

What's wrong
When I try to use conditional byte-compilation in the :build keyword, the package isn't built at all.
Directions to reproduce
After a successful bootstrap, the following doesn't create a build in straight/build/ under user-emacs-directory:
(use-package package-name
    :straight t
    :build (:no compile))

While what should've happened is that there would be a folder package-name under straight/build which would build the package without byte-compiling it. The repo doesn't even get cloned, as there is nothing in straight/repos/ either.
Removing that particular line for :build keyword builds the package as usual, but with byte-compilation. I want to disable it for a particular package.
Version information

Emacs version:
GNU Emacs 30.0.50
Development version d7071359522f on master branch; build date 2024-03-11.
Copyright (C) 2024 Free Software Foundation, Inc.
GNU Emacs comes with ABSOLUTELY NO WARRANTY.
You may redistribute copies of GNU Emacs
under the terms of the GNU General Public License.
For more information about these matters, see the file named COPYING.

Operating system:
Arch Linux, with kernel <IP_ADDRESS>

How about if  :no  is substituted with :not?

That works, thank you!


Email Checker without sending email

This package can check following things.

Disposable - This package has list which is hosted on gist. Cool thing is that list divided character wise so email mapping can be faster, and also developers don't need to update package for list every time.

MX DNS Records - This package use SMTP verification method by sending HELO message to server.

CURL - Sometimes it is not possible to verify email using MX DNS Record, so using curl we can ping domain and check it is exists or not.

EDITED
Package now contains more than 25k disposable domain list which are hosted on gist

Sorry, not enough stars: https://github.com/chiraggude/awesome-laravel/blob/master/CONTRIBUTING.md


refactor a few things

Summary

See commits
Test plan

Green CI
Does this PR introduce a breaking change?

[ ] Yes
[x] No

Other information
N.A.

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

245 of 252 (97.22%)  changed or added relevant lines in 10 files are covered.
No unchanged relevant lines lost coverage.
Overall first build on refactor/jest-preset at 96.495%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

src/cli/config/init.ts
55
62
88.71%

Totals

Change from base Build<PHONE_NUMBER>:
96.5%

Covered Lines:
4716

Relevant Lines:
4820

💛  - Coveralls


Update p38a figure

[ ] When color scales are used, please define them, noting units or indicating "arbitrary units," and specify whether the scale is linear or log.
[ ] Bar graphs are not acceptable because they obscure important information about the distributions of the underlying data.  Please display individual points within your graphs unless their large number obscures the graph's interpretation.  In that case, box-and-whisker plots are a good alternative.
[ ] Please ensure that every time you have used a graph, you have defined "n's" specifically and listed statistical tests within your figure legend.
[ ] When figures include micrographs, please ensure that scale bars are included and defined within the legend, montages are made obvious, and any digital adjustments (e.g. brightness) have been applied equally across the entire image in a manner that does not obscure characteristics of the original image (e.g. no "blown out" contrast).  Note that all accepted papers are screened for image irregularities, and if this advice is not followed, your paper will be flagged.
[ ] Please ensure that if you include representative images within your figures, a "representative of XXX individual cells"-type statement is made in the legend.
[ ] Please ensure that all figures included in your point-by-point response to the reviewers' comments are present within the final version of the paper, either within the main text or within the Supplemental Information.

Current figure

Figure 2: Cell Painting profiles identify compounds impacting the p38 pathway. Compounds predicted to perturb p38 activity (triangles) and a set of 14 neutral compounds (Cell Painting profile correlations to p38α between -0.2 to 0.2; circles) were tested for their influence on p38 activity at 1 μM using a two-sided t-test on the single cell distributions of a p38 activity reporter 32 (FDR-adjusted -log10 p-values shown). Two potential inhibitors were found (BRD-K38197229  and BRD-A64933752 ); an additional one (BRD-K52394958 ) was identified via an alternative statistical test (Supplementary Figure S8a, h-i). K543 (BRD-K54330070) denotes SB-202190, a known p38 inhibitor found as a match (other known inhibitors such as SB-203580 from Figure 1 were strong matches but excluded from this experiment because they were already known).

No changes needed!

In https://github.com/carpenterlab/2021_Rohban_submitted/blob/master/p38a/2.inspect-single-cell.Rmd
 single_cell %>% inner_join(statistics_agg %>% select(Cmpd, Conc) %>% distinct()) %>% count(P, R, C, Cmpd, Conc) %>% summarise(mean = mean(n), sd = sd(n)) %>% knitr::kable()

mean
sd

4930.956
1305.539


HTML

HTML
User Story
As a bootcamp student
I want the prework notes to be structured on a webpage
so that I can easily find  and read information
Acceptance Criteria
GIVEN a Prework Study Guide website
WHEN I visit the website in my browser
THEN I see four boxes titled HTML, CSS, Git, and JavaScript with associated notes listed

Target down. Prepare the ship for evac.
Chief out.


[Dev] crc console with podman preset fails

Executing crc console for podman preset fails with cryptic message.
$ crc config
- preset                                : podman
$ crc start
[...]
 $ ./crc console --log-level debug
DEBU CodeReady Containers version: 1.34.0+09227706
DEBU OpenShift version: 4.9.5 (not embedded in executable)
DEBU Running 'crc console'
DEBU Checking file: /home/prkumar/.crc/machines/crc/.crc-exist
DEBU Found binary path at /home/prkumar/.crc/bin/crc-driver-libvirt
DEBU Launching plugin server for driver libvirt
DEBU Plugin server listening at address <IP_ADDRESS>:46871
DEBU () Calling .GetVersion
DEBU Using API Version 1
DEBU () Calling .SetConfigRaw
DEBU () Calling .GetMachineName
DEBU (crc) Calling .GetState
DEBU (crc) DBG | time="2021-11-30T17:01:52+05:30" level=debug msg="Getting current state..."
DEBU (crc) DBG | time="2021-11-30T17:01:52+05:30" level=debug msg="Fetching VM..."
DEBU (crc) Calling .GetBundleName
DEBU Making call to close driver server
DEBU (crc) Calling .Close
DEBU Successfully made call to close driver server
DEBU Making call to close connection to plugin binary
DEBU (crc) DBG | time="2021-11-30T17:01:52+05:30" level=debug msg="Closing plugin on server side"
Error loading cluster configuration: read /home/prkumar/.crc/cache/crc_podman_libvirt_3.4.1: is a directory

The initial error is avoided with
diff --git a/pkg/crc/machine/machine.go b/pkg/crc/machine/machine.go
index 729251f4..84fff4ab 100644
--- a/pkg/crc/machine/machine.go
+++ b/pkg/crc/machine/machine.go
@@ -15,6 +15,12 @@ import (
 )

 func getClusterConfig(bundleInfo *bundle.CrcBundleInfo) (*types.ClusterConfig, error) {
+       if !bundleInfo.IsOpenShift() {
+               return &types.ClusterConfig{
+                       ClusterType:   bundleInfo.GetBundleType(),
+               }, nil
+       }
+
        kubeadminPassword, err := cluster.GetKubeadminPassword()
        if err != nil {
                return nil, fmt.Errorf("Error reading kubeadmin password from bundle %v", err)

Then this errors out with
$ ./out/linux-amd64/crc console
Opening the OpenShift Web Console in the default browser...
   xdg-open - opens a file or URL in the user's preferred
   application

Synopsis

   xdg-open { file | URL }

   xdg-open { --help | --manual | --version }

Use 'man xdg-open' or 'xdg-open --manual' for additional info.
Failed to open the OpenShift Web Console, you can access it by opening  in your web browser

which at least is expected, but means we need to do some design work for this command.

The initial error is avoided with [...]

It's actually fixed by https://github.com/code-ready/crc/commit/dafb1ac6fadccdcbd488fe5bd8a488f803fb294c
I had forgotten it was part of an in-progress PR :)

Can we actually define what the expectation is in a design or user story? https://github.com/code-ready/crc/issues/2260

I suggest to move OpenShift functionality to a subcommand or namespace to avoid issues; crc openshift console
the re-use of console for Podman, even when displaying 'does not work on this bundle' is a side-effect, due to different behaviour introduced by the image.
the same would make sense for the crc podman-env to become crc podman env instead.

Good things might happen as a result of this issue, see suggestions above. I'll keep this open for now.


Version 1.9.10 Failing to renew or issue new cert

After a few years of using Win-Simple, it has now started to fail. First it wouldn't renew so I removed and re-created the website and now it won't issue a new cert.  The error...
[INFO] Plugin IISBinding generated target [IISBinding] yyyz.net (SiteId 21) [ @ C:\WebSites\yyyZLtd\wwwroot]
[INFO] Authorize identifier: yyyz.net
[INFO] Authorizing yyyz.net using http-01 validation (SelfHosting)
[INFO] Answer should now be browsable at http://yyyz.net/.well-known/acme-challenge/LeSrNar5ASGN8NikDQQpyqhc05kCT5itxtrAkoKpSKs
[EROR] Authorization result: invalid
[EROR] NullReferenceException: Object reference not set to an instance of an object.
I am running Win Server 2016 Standard on a Cloud hosted service.
Any suggestions or guidance?

To me it happens only when the domain doesn't point to the server's ip address where win-simple is being run.

Having the same problem. In my case the file on the server is not created.


Swashbuckle.AspNetCore Whether can use protobuffer ?

I'm not going to respond to any issues that don't provide a detailed description. I've no idea what you're asking for.


Disable gazebo client by default

Since we have the RVIZ visualization anyway, I disabled the gazebo GUI
by default. This makes SITL run significantly better. Open to discuss
whether we want to merge this or not

I'm 100% for this, the gazebo visualization is missing all the nice annotations you get with RViz, even if it looks a bit prettier.


Error with copy

@inasekin If possible, can you share the figma design that causes this error to happen? So we can see if we can reproduce on our end

@samijaber
I have Downloaded file but figma not importing it.

@Aditya0049 We cannot possibly help you with such a vague bug report.
We need more details: either the URL of the page you're importing or a link to a Figma design that is not being exported correctly

Storemaven.zip

@Aditya0049 Instead of a zip file, we request one of the following:

if your issue happens when importing a website into Figma: please provide the URL of the website that you want to import.
if your issue happens when exporting a Figma design into HTML: please provide the URL of the figma design you are struggling to export to HTML (format should look like https://www.figma.com/file/:id)

https://aditya0049.github.io/StoreMaven-Clone/ ----------website into Figma


Profiler: all operators are collapsed as a single unit in the profiler

For bugs or installation issues, please provide the following information.
The more information you provide, the more likely people will be able to help you.
Environment info
Operating System:
Distributor ID: Ubuntu
Description:    Ubuntu 14.04.5 LTS
Release:        14.04
Codename:       trusty
Compiler:
gcc (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4
Copyright (C) 2013 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Package used (Python/R/Scala/Julia):Python 3.4.3
MXNet version:
Or if installed from source:
MXNet commit hash (git rev-parse HEAD): e4338628641ea8d7db0b6dd249428262aafe98b2
If you are using python package, please provide
Python version and distribution:
If you are using R package, please provide
R sessionInfo():
Problem:
In the json file produced from profiler, all operators are collapsed as a single unit as below, making it impossible for me to break down the computation. Also, the name of the entry seems truncated, as it starts with '[' but not closed with ']'. This did not happen in commit 8861ccc032fa64f4a13b84fb82f6edb4febef2be which I had been using.
        {
            "name": "[Embedding,Concat,Reshape,Slice",
            "cat": "category",
            "ph": "E",
            "ts": 55657562,
            "pid": 0,
            "tid": 447691082
        },

Is this grouping of operators intended? If so, is there a way for me to control the level of grouping?

This is due to the bulk execution in MXNet to reduce gaps between kernel launches. You can set
MXNET_EXEC_BULK_EXEC_TRAIN = 0
MXNET_EXEC_BULK_EXEC_INFERENCE = 0
to disable it and see the time taken by individual op.

@ZihengJiang do you mind checking why the name is/looks like truncated?

@eric-haibin-lin I think it is due to the maximum length of opr_name is 32, https://github.com/dmlc/mxnet/blob/master/src/engine/profiler.h#L22

Hi there,
My profiles are still grouping operators after recompiling mxnet with MXNET_EXEC_BULK_EXEC_TRAIN = 0 and MXNET_EXEC_BULK_EXEC_INFERENCE = 0.
Environment Info
Operating System:
Distributor ID: Ubuntu
Description: Ubuntu 16.04.2 LTS
Compiler:
gcc (Ubuntu 5.4.1-2ubuntu1~16.04) 5.4.1 20160904
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Package used (Python/R/Scala/Julia):Python 3.6
MXNet Version: 3d4d845

Hi @padentomasello , these are environment variables, not config variables for compilation. You don't have to recompile.


Update handling of build variables

The changes allows to have some flags set as env variables by only setting default variable values if they are not set.
E.g. this way it is possible to keep the include and lib flags for webui tls in the environment and it would suffice to just use the WEBUI_USE_TLS switch (changes are reflected in the workflows).
The current way of building should continue to work as is it currently does.

Since workflows have grown lager in the recent days. I would would do minor updates to their structure in their followup. This should improve their speed, maintainability and also make it in general more cost effective in case of using paid runners.


Author analysis GIScience vs. AGILE

See https://github.com/nuest/reproducible-research-at-giscience/blob/master/author_analysis/BibTex_handling.ipynb
Tasks

[x] get notebook to work within the same Binder (uses Dockerfile) @nuest
[x] fix LaTeX artifact for Umlaut and special characters from the LIPIcs bibtex file, e.g. {\"{o}} (probably best handled by changing the bib file manually?) @nuest
[ ] redo retrieval @cgranell

Questions

[x] @foost Can you clarify in the notebook where the file GIScience_Conference_2018.bib originates from? The other .bib files seem to be results of the Scopus search.

@foost Any idea why worboys appears several times in the list?

I ran the search queries on Scopus. The AGILE query appears to retrieve all LNCG books (and individual papers) from 2007 to today. Results from the GIScience query are a bit odd. Two years do not works as expected: 2014 (3 records) and 2004 (1 record).

Thanks for checking Carlos - I think if we miss the full records only for two years (which are quite far apart) that is something we can live with.


Add middleware to a route inside a group

Im trying to add a middleware to a route that is inside a group but I get following error:
Undefined variable: auth
I know... this is silly error($auth is declared in the same scope that the group)
$app->group('/login', function(){
    $this->get('', function (Request $request, Response $response) {
        return $this->view->render($response, 'login.html');
    });

    $this->post('', function (Request $request, Response $response) {
        $body = $request->getParsedBody();
        $userV = new UserLoginValidation($body, $this->db, $this->session);
        $message = new ErrorCodes($userV->loginUser(), getUserLang($this->session, $request));
        return $this->view->render($response, 'login.html', array('flash' => $message->getErrorMessage()));
    })->add($auth);
});

Is $auth set before $app->group('/login', function(){ ?
If answer is true, it's not the same scope, so you must inherit the $auth like:
$app->group('/login', function() use ($auth){

@mathmarques problem solved, thanks :D


MYSelectionHandler parameter can't cast UITableViewCell.

Hi,  Thanks for writing this great Library.
There is that one in trouble, It would help us if you would be compatible in the future.
MYSelectionHandler parameter is MYBaseViewProtocol.
I want to use the view of cell in the handler, but MYBaseViewProtocol can't cast UIView.
Is not possible to change the IF of MYSelectionHandler to MYBaseViewProtocol of class that inherits from UIView?
It is expected the correspondence.
Thank you.

Hi
I'm sorry.
I can get cell in handler.
'''
selectionHandler: { (cellView: MYBaseViewProtocol) in
let cell = cellView as MYTableViewCell
} )
'''
Thank you.

:+1:


Epic: Logging and Playback functionality

Abstract
At a given point in time the user can start to record all the events that happen in the world so he can replay it back later. While is watching the replay the user can forward or backward and at any point during the replay he may want to stop it keeping the world state giving the possibility to the user to apply new inputs.
Types of replay systems
There are two ways of doing a replay system:

storing user event
storing game state

Taking the first approach can make the system maybe a bit more easy to implement because we will only log the user inputs and AI actions, which also make the generated files no to be so heavy, but if in stead we need to control the replay at different speeds, go back or forward, etc saving the game state make it more easier. So taking into account the requirements the best option is storing the game state.
What to store
One of the problem of storing the game state is the amount of memory that could use because at each frame a snapshot of the state of the application is done. So it will be necessary to find a way to reduce the amount of information stored per frame. All the static object will be stored only once, of the dynamic objects will store information only when it change and if is not changing will make reference to the last frame that the object changed.
Per each one of the dynamic objects of the scene we will have to store the next information:

bounding box
direction vector
rotation, scale, position
object identifier
acceleration
timestamp
velocity
steering
other events (weather,  map change, sensors, etc)
AI  (respawn, etc)

Storing file format
There are two ways to store the information:

binary file
text file

Using a binary file makes it easier to save/read the information to/from disk as the information is the same that is in memory. On the other hand it makes it harder to edit it as is not readable for human, so it will be necessary some extra tools to allow users to see/edit the information. The other option is to store it as a text file, which make the information easy to read/edit for human but it will need some transformations to save/access it. As we don't have a clear definition about if the user will like or not to be able to edit the file will take the text file approach, and practical reasons the information it will be stored in a json file.

If you are going to save this much information, you will really want a compact binary format, and might event want to consider using fast compression. It can make a huge performance difference. Human readable is fine for config files and logging but really costs you for high volume data.

Hi @analog-cbarber
You are right about the file size, performance, etc and it would also be easier to deal with the binary than the text file, but we are still waiting to see which option is the best for the researchers, for that reason we choose the text file for now.
Greeting


[BUG] : The OpenAI library does not work in a WebFlux environment because it internally blocks processing

Describe the bug
I am currently implementing a program using Server Sent Events on WebFlux. The program sends the text received from the web client to OpenAI in Stream mode and returns the received text to the web client as a Server Sent Event.
The code sends the string received from the web client to OpenAI in Stream mode and then calls
EmitResult result = userSink.tryEmitNext(content); to return the received string as an SSE.
When I run this program, I encounter the error mentioned below stack trace section.
As mentioned in the error message, the issue is occurring due to the use of the block() operation.
"block()/blockFirst()/blockLast() are blocking, which is not supported
in thread reactor-http-kqueue-5","tryCount":3}

Upon actually examining the stack trace and source code, I found that the following part was at line 757.
https://github.com/Azure/azure-sdk-for-java/blob/f85f067fabbda7b5f165c45f64c3721fcfbb7350/sdk/openai/azure-ai-openai/src/main/java/com/azure/ai/openai/implementation/OpenAIClientImpl.java#L753-L765
And I noticed that the above method 'getChatCompletionsWithResponse' was sync blocking code.
And it should be invoked following method getChatCompletionsWithResponseAsync.
https://github.com/Azure/azure-sdk-for-java/blob/f85f067fabbda7b5f165c45f64c3721fcfbb7350/sdk/openai/azure-ai-openai/src/main/java/com/azure/ai/openai/implementation/OpenAIClientImpl.java#L666-L680
Therefore, I checked the caller of this method. As a result, I found that it was called from the following method in OpenAIClient.java.
https://github.com/Azure/azure-sdk-for-java/blob/f85f067fabbda7b5f165c45f64c3721fcfbb7350/sdk/openai/azure-ai-openai/src/main/java/com/azure/ai/openai/OpenAIClient.java#L403-L416
So if I modify the above method, it should be invoke the getChatCompletionsWithResponseAsync method instead of the following getChatCompletionsWithResponse method.
https://github.com/Azure/azure-sdk-for-java/blob/f85f067fabbda7b5f165c45f64c3721fcfbb7350/sdk/openai/azure-ai-openai/src/main/java/com/azure/ai/openai/OpenAIClient.java#L170-L176
However, there was no such getChatCompletionsWithResponseAsync method in the OpenAIClient.java.
Exception or Stack Trace
2023-06-05T19:20:04.100+09:00 ERROR 9357 --- [r-http-kqueue-5] c.a.c.http.netty.NettyAsyncHttpClient    : block()/blockFirst()/blockLast() are blocking, which is not supported in thread reactor-http-kqueue-5
2023-06-05T19:20:04.907+09:00 ERROR 9357 --- [r-http-kqueue-5] c.a.c.http.netty.NettyAsyncHttpClient    : block()/blockFirst()/blockLast() are blocking, which is not supported in thread reactor-http-kqueue-5
2023-06-05T19:20:06.512+09:00 ERROR 9357 --- [r-http-kqueue-5] c.a.c.http.netty.NettyAsyncHttpClient    : block()/blockFirst()/blockLast() are blocking, which is not supported in thread reactor-http-kqueue-5
2023-06-05T19:20:09.603+09:00 ERROR 9357 --- [r-http-kqueue-5] c.a.c.http.netty.NettyAsyncHttpClient    : block()/blockFirst()/blockLast() are blocking, which is not supported in thread reactor-http-kqueue-5
2023-06-05T19:20:09.603+09:00 ERROR 9357 --- [r-http-kqueue-5] com.azure.core.http.policy.RetryPolicy   : {"az.sdk.message":"Retry attempts have been exhausted.","exception":"block()/blockFirst()/blockLast() are blocking, which is not supported in thread reactor-http-kqueue-5","tryCount":3}
2023-06-05T19:20:09.604+09:00 ERROR 9357 --- [r-http-kqueue-5] com.azure.core.http.policy.RetryPolicy   : block()/blockFirst()/blockLast() are blocking, which is not supported in thread reactor-http-kqueue-5
2023-06-05T19:20:09.604+09:00 ERROR 9357 --- [r-http-kqueue-5] c.a.c.i.http.rest.RestProxyBase          : block()/blockFirst()/blockLast() are blocking, which is not supported in thread reactor-http-kqueue-5
2023-06-05T19:20:09.608+09:00 ERROR 9357 --- [r-http-kqueue-5] a.w.r.e.AbstractErrorWebExceptionHandler : [5679cd03-5]  500 Server Error for HTTP POST "/openai-gpt4-sse-submit?userId=34e16dc1-afd0-4ed5-a101-04b1101d6e2a"

java.lang.IllegalStateException: block()/blockFirst()/blockLast() are blocking, which is not supported in thread reactor-http-kqueue-5
        at reactor.core.publisher.BlockingSingleSubscriber.blockingGet(BlockingSingleSubscriber.java:83) ~[reactor-core-3.5.6.jar:3.5.6]
        Suppressed: java.lang.IllegalStateException: block()/blockFirst()/blockLast() are blocking, which is not supported in thread reactor-http-kqueue-5
                at reactor.core.publisher.BlockingSingleSubscriber.blockingGet(BlockingSingleSubscriber.java:83) ~[reactor-core-3.5.6.jar:3.5.6]
                at reactor.core.publisher.Mono.block(Mono.java:1710) ~[reactor-core-3.5.6.jar:3.5.6]
                at com.azure.core.http.netty.NettyAsyncHttpClient.sendSync(NettyAsyncHttpClient.java:152) ~[azure-core-http-netty-1.13.3.jar:1.13.3]
                at com.azure.core.http.HttpPipelineNextSyncPolicy.processSync(HttpPipelineNextSyncPolicy.java:38) ~[azure-core-1.39.0.jar:1.39.0]
                at com.azure.core.http.policy.HttpLoggingPolicy.processSync(HttpLoggingPolicy.java:142) ~[azure-core-1.39.0.jar:1.39.0]
                at com.azure.core.http.HttpPipelineNextSyncPolicy.processSync(HttpPipelineNextSyncPolicy.java:41) ~[azure-core-1.39.0.jar:1.39.0]
                at com.azure.core.implementation.http.policy.InstrumentationPolicy.processSync(InstrumentationPolicy.java:75) ~[azure-core-1.39.0.jar:1.39.0]
                at com.azure.core.http.HttpPipelineNextSyncPolicy.processSync(HttpPipelineNextSyncPolicy.java:41) ~[azure-core-1.39.0.jar:1.39.0]
                at com.azure.core.http.policy.HttpPipelineSyncPolicy.processSync(HttpPipelineSyncPolicy.java:42) ~[azure-core-1.39.0.jar:1.39.0]
                at com.azure.core.http.policy.AzureKeyCredentialPolicy.processSync(AzureKeyCredentialPolicy.java:67) ~[azure-core-1.39.0.jar:1.39.0]
                at com.azure.core.http.HttpPipelineNextSyncPolicy.processSync(HttpPipelineNextSyncPolicy.java:41) ~[azure-core-1.39.0.jar:1.39.0]
                at com.azure.core.http.policy.CookiePolicy.processSync(CookiePolicy.java:50) ~[azure-core-1.39.0.jar:1.39.0]
                at com.azure.core.http.HttpPipelineNextSyncPolicy.processSync(HttpPipelineNextSyncPolicy.java:41) ~[azure-core-1.39.0.jar:1.39.0]
                at com.azure.core.http.policy.AddDatePolicy.processSync(AddDatePolicy.java:45) ~[azure-core-1.39.0.jar:1.39.0]
                at com.azure.core.http.HttpPipelineNextSyncPolicy.processSync(HttpPipelineNextSyncPolicy.java:41) ~[azure-core-1.39.0.jar:1.39.0]
                at com.azure.core.http.policy.RetryPolicy.attemptSync(RetryPolicy.java:177) ~[azure-core-1.39.0.jar:1.39.0]
                at com.azure.core.http.policy.RetryPolicy.processSync(RetryPolicy.java:127) ~[azure-core-1.39.0.jar:1.39.0]
                at com.azure.core.http.HttpPipelineNextSyncPolicy.processSync(HttpPipelineNextSyncPolicy.java:41) ~[azure-core-1.39.0.jar:1.39.0]
                at com.azure.core.http.policy.AddHeadersFromContextPolicy.processSync(AddHeadersFromContextPolicy.java:60) ~[azure-core-1.39.0.jar:1.39.0]
                at com.azure.core.http.HttpPipelineNextSyncPolicy.processSync(HttpPipelineNextSyncPolicy.java:41) ~[azure-core-1.39.0.jar:1.39.0]
                at com.azure.core.http.policy.HttpPipelineSyncPolicy.processSync(HttpPipelineSyncPolicy.java:42) ~[azure-core-1.39.0.jar:1.39.0]
                at com.azure.core.http.policy.RequestIdPolicy.processSync(RequestIdPolicy.java:69) ~[azure-core-1.39.0.jar:1.39.0]
                at com.azure.core.http.HttpPipelineNextSyncPolicy.processSync(HttpPipelineNextSyncPolicy.java:41) ~[azure-core-1.39.0.jar:1.39.0]
                at com.azure.core.http.policy.HttpPipelineSyncPolicy.processSync(HttpPipelineSyncPolicy.java:42) ~[azure-core-1.39.0.jar:1.39.0]
                at com.azure.core.http.policy.UserAgentPolicy.processSync(UserAgentPolicy.java:153) ~[azure-core-1.39.0.jar:1.39.0]
                at com.azure.core.http.HttpPipelineNextSyncPolicy.processSync(HttpPipelineNextSyncPolicy.java:41) ~[azure-core-1.39.0.jar:1.39.0]
                at com.azure.core.http.HttpPipeline.sendSync(HttpPipeline.java:131) ~[azure-core-1.39.0.jar:1.39.0]
                at com.azure.core.implementation.http.rest.SyncRestProxy.send(SyncRestProxy.java:54) ~[azure-core-1.39.0.jar:1.39.0]
                at com.azure.core.implementation.http.rest.SyncRestProxy.invoke(SyncRestProxy.java:75) ~[azure-core-1.39.0.jar:1.39.0]
                at com.azure.core.implementation.http.rest.RestProxyBase.invoke(RestProxyBase.java:109) ~[azure-core-1.39.0.jar:1.39.0]
                at com.azure.core.http.rest.RestProxy.invoke(RestProxy.java:91) ~[azure-core-1.39.0.jar:1.39.0]
                at jdk.proxy2/jdk.proxy2.$Proxy52.getChatCompletionsSync(Unknown Source) ~[na:na]
                at com.azure.ai.openai.implementation.OpenAIClientImpl.getChatCompletionsWithResponse(OpenAIClientImpl.java:757) ~[azure-ai-openai-1.0.0-beta.1.jar:1.0.0-beta.1]
                at com.azure.ai.openai.OpenAIClient.getChatCompletionsWithResponse(OpenAIClient.java:255) ~[azure-ai-openai-1.0.0-beta.1.jar:1.0.0-beta.1]
                at com.azure.ai.openai.OpenAIClient.getChatCompletionsStream(OpenAIClient.java:409) ~[azure-ai-openai-1.0.0-beta.1.jar:1.0.0-beta.1]
                at com.yoshio3.SSEOpenAIController.invokeStreamTest(SSEOpenAIController.java:106) ~[classes/:na]
                at com.yoshio3.SSEOpenAIController.openaiGpt4Sse(SSEOpenAIController.java:97) ~[classes/:na]

To Reproduce
Please use the attachment sample code.
Code Snippet
I write to add the code snippet as follows.
More detail, please see this reproducible repository.
    @GetMapping(path = "/openai-gpt4-sse-stream", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
    @ResponseBody
    public Flux<String> sseStream(@RequestParam UUID userId) {
        Sinks.Many<String> userSink = getUserSink(userId);
        if (userSink == null) {
            userSink = createUserSink(userId);
        }
        LOGGER.debug("USER ID IS ADDED: {}}", userId);
        return userSink.asFlux().delayElements(Duration.ofMillis(10));
    }

    @PostMapping("/openai-gpt4-sse-submit")
    @ResponseBody
    public void openaiGpt4Sse(@RequestBody String inputText, @RequestParam UUID userId) {
        LOGGER.debug(inputText);

        List<ChatMessage> chatMessages = createMessages(inputText);
        ChatCompletionsOptions options = new ChatCompletionsOptions(chatMessages);
        options.setStream(true);
        client.getChatCompletionsStream("gpt-4", options)
                .forEach(chatCompletions -> {
                    chatCompletions.getChoices().stream()
                            .map(ChatChoice::getDelta)
                            .map(ChatMessageDelta::getContent)
                            .filter(content -> content != null)
                            .forEach(content -> {
                                System.out.println(content);
                                Sinks.Many<String> userSink = getUserSink(userId);
                                EmitResult result = userSink.tryEmitNext(content);
                                showDetailErrorReasonForSSE(result, content, inputText);
                                try {
                                    TimeUnit.MILLISECONDS.sleep(20);
                                } catch (InterruptedException e) {
                                    e.printStackTrace();
                                }
                            });
                });
    }

Expected behavior
If we use the stream version, it will operate as the Non-Blocking.
As a result, it can run on WebFlux too.
Screenshots

Setup (please complete the following information):

OS: [Mac OS Venus 13.4]
IDE: [VS Code for Java]
Library/Libraries: [com.azure.azure-ai-openai:1.0.0-beta.1]
Java version: [Microsoft-7209853 "17.0.6" 2023-01-17 LTS]
App Server/Environment: [N/A]
Frameworks: [Spring Boot 3.1.0]

Additional context
Add any other context about the problem here.
Information Checklist
Kindly make sure that you have added all the following information above and checkoff the required fields otherwise we will treat the issuer as an incomplete report

[x] Bug Description Added
[x] Repro Steps Added
[x] Setup information Added

Thank you @yoshioterada  for reporting this issue.
We will investigate it and get back to you.

@yoshioterada From the exception stacktrace, it seems like the code is using the synchronous client OpenAIClient. To use the async method, please try using the OpenAIAsyncClient.
OpenAIAsyncClient client = new OpenAIClientBuilder()
            .endpoint(endpoint)
            .credential(new AzureKeyCredential(azureOpenaiKey))
            .buildAsyncClient(); // this creates the async client

client.getChatCompletionsStream(...); // this will call the async methods

Stacktrace that shows the usage of sync client.
 at com.azure.ai.openai.implementation.OpenAIClientImpl.getChatCompletionsWithResponse(OpenAIClientImpl.java:757) ~[azure-ai-openai-1.0.0-beta.1.jar:1.0.0-beta.1]
at com.azure.ai.openai.OpenAIClient.getChatCompletionsWithResponse(OpenAIClient.java:255) ~[azure-ai-openai-1.0.0-beta.1.jar:1.0.0-beta.1]
at com.azure.ai.openai.OpenAIClient.getChatCompletionsStream(OpenAIClient.java:409) ~[azure-ai-openai-1.0.0-beta.1.jar:1.0.0-beta.1]


onMessageUpdate()

onMessageUpdate() function not working its showing only session is not the data: MessageUpdated
maybe message type is wrong please check it on Socket/index.ts line 103 callback.get(CALLBACK_KEY.ON_MESSAGE_UPDATED)?.(sessionId, data);

Hi, thank you for report an issue. I will check it soon


Scope options for useMolecule

Adds scope options so that useMolecule can be called with explicit scope (via a prop), instead of only via implicit scope (via context)
useMolecule(UserMolecule, {
    withScope: [UserScope<EMAIL_ADDRESS>})

Instead of
<ScopeProvider scope={UserScope}<EMAIL_ADDRESS>
and
useMolecule(UserMolecule)

I feel like this would help a lot with the layers / NodeChildrenEditor controllers - I had a bit of difficulty figuring out the right layer to use atoms in because of the number of controllers from top to bottom there are. I think it would be a lot cleaner and make more sense if they were more explicitly defined this way,


added new chairs/tech leads

Signed-off-by: Thomas Schuetz<EMAIL_ADDRESS>

LGTM, thank you.


[SR-9] Activate enum import tests on Linux

Previous ID
SR-9

Radar
rdar://problem/20651533

Original Reporter
@jopamer

Type
Bug

Status
Reopened

Resolution

Additional Detail from JIRA

Votes
1

Component/s
Compiler

Labels
Bug

Assignee
King (JIRA)

Priority
Medium

md5: 18e965d66c831b43c6feca10c1b21c92

Issue Description:
Many of the Swift compiler tests in test/ClangModules that exercise enum import are broken on Linux and currently disabled there.

This issue was closed in 2018.


[Feature]: Do not add newline while updating requires

Self-service

[ ] I'd be willing to implement this feature

Input code
const ACM = require("aws-sdk/clients/acm");

const client = new ACM();

Expected Output
Expected output
const { ACM } = require("@aws-sdk/client-acm");

const client = new ACM();

Observed output
const {
  ACM
} = require("@aws-sdk/client-acm");

const client = new ACM();

Additional context
No response

The code which adds client require
https://github.com/awslabs/aws-sdk-js-codemod/blob/11b1012a4e8e7e7125a07fee272e7f088f8a7863/src/transforms/v2-to-v3/utils/addV3ClientRequire.ts#L52-L59
The jscodeshift project uses recast, and it does not have any option for skipping newline for ObjectPattern
https://github.com/benjamn/recast/blob/6c8b2e63cd4ce7660d82af1ab3c236422738df6c/lib/printer.ts#L731

Closing as wontfix.
This issue can be revisited if recast changes default behavior, or provides an option to skip newline

Reopening as this required lot of formatting in public PRs.


Regent: build failure with cmake and llvm

Building Regent using with "--cmake --llvm" flags results in an unusable version of Regent. The resulting Regent fails as follows, for example:
$ ./regent.py examples/circuit.rg
terra: CommandLine Error: Option 'asan-instrument-assembly' registered more than once!
LLVM ERROR: inconsistency in registered CommandLine options

I built Terra separately from Regent from its github master branch using cmake, and am using that for the Regent build. The Terra build passes all its tests. I'm also using the github master branch of Legion. Without the "--llvm" flag, the build is successful in this configuration.

@mpokorny, by default, Terra only includes the few pieces of LLVM it needs, which is not sufficient for Regent.  As a result, the linker brings in another whole copy of LLVM and you get errors like this.  If you build Terra separately from Regent, adding REEXPORT_LLVM_COMPONENTS='irreader mcjit x86' to the Terra build command should do the trick.

I don't believe the CMake build of Terra currently supports REEXPORT_LLVM_COMPONENTS so at the moment you would need to build Terra with Make to get this to work.

Thanks for the hint, @streichler. @elliottslaughter, yes, I had noticed that. I
initially was having trouble with the Make build of Terra, so I tried the CMake
build, and that worked. I have now worked around my Terra Make build issue
(libcurses linking issue) so I ought to be able to use that with Regent.
Unfortunately, the end result for Regent is unchanged. I fell back to letting
Regent build Terra, but I still encounter the same problem. For reference, I'm
using llvm 6.0.1. At the moment, llvm isn't critical for me, so I can continue
to make progress on my application without it.

@streichler @elliottslaughter I've encounter the same issue with Opt that I solved by building Terra with dynamically-linked LLVM. Could Regent be built with dynamic linking as well?

Regent could use a Terra that is dynamically linked, and we could probably get Legion to link the same LLVM. I'm not sure whether Legion itself supports dynamic linking of LLVM at the moment, but it could probably be done with some effort. (Regent itself doesn't link LLVM except through Terra/Legion.)

Commit 000fbd4 should take care of this.  @mpokorny when you have a moment, can you give this another try?

Your commit has fixed this issue for me.
I do have one question, though. If I wanted to build a shared library version of librealm.so for use both from Regent or my own C++ application, would your changes support that? Although I'm a bit unclear on the details, it seems that without Terra (which has the "missing" LLVM libraries), if I built a C++ application that depended on LLVM against librealm.so, it might fail unless the application explicitly linked the missing libraries. My question is purely hypothetical, as I don't have such C++ code at present. It's OK with me for you to close this issue; I can mull over the hypothetical case some other time and open a new issue if it's needed.

The cases you describe should work.  What we're doing in the regent+llvm case is that Realm is not linking in llvm libraries directly.  Instead, it does dynamic symbol lookup at runtime to find the copy of the llvm libraries that some other component has loaded in (either via linking or dynamic loading itself).  As long as that other component has linked in enough of llvm (currently we require the mcjit, irreader, and the appropriate native processor backend (e.g. x86) components), that's good enough for Realm.

I would also point out that Terra can be made to dynamically link LLVM (though you currently have to build Terra yourself to get this).

@mpokorny I am going to go ahead and close this bug, but if you run into any new build issues in this area, please let us know.  Thanks!


docs: document node resolution algorithm

closes https://github.com/esbuild-kit/esm-loader/issues/13

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Upgarded to the new contracts and added command migrate

Signed-off-by: Krasi Georgiev<EMAIL_ADDRESS>

Pull Request Test Coverage Report for Build 578442245

13 of 76 (17.11%)  changed or added relevant lines in 14 files are covered.
2 unchanged lines in 1 file lost coverage.
Overall coverage decreased (-0.07%) to 38.176%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

pkg/rpc/abiCodec.go
1
2
50.0%

pkg/tracker/disputeStatus.go
2
3
66.67%

pkg/tracker/timeOut.go
1
3
33.33%

pkg/rpc/mock.go
0
3
0.0%

pkg/tracker/currentVariables.go
1
4
25.0%

pkg/rpc/contractRPC.go
0
4
0.0%

pkg/ops/transferOps.go
0
6
0.0%

pkg/ops/stakeOps.go
0
9
0.0%

pkg/ops/disputeOps.go
0
16
0.0%

pkg/ops/miningManager.go
0
18
0.0%

Files with Coverage Reduction
New Missed Lines
%

pkg/tracker/retryFetcher.go
2
92.0%

Totals

Change from base Build 569931300:
-0.07%

Covered Lines:
1490

Relevant Lines:
3903

💛  - Coveralls


Use Go Test Timeout to set Knuu Timeout

hello!
It would be great to set the KNUU_TIMEOUT value from go test -timeout, this will help us to specify the timeout value and don't face issues like:
Set the env var:
export KNUU_TIMEOUT=25m

And then:
panic: test timed out after 10m0s
running tests:
        TestFolderCached (10m0s)

cheers! 🚀
### Tasks
- [ ] `KNUU_TIMEOUT` -> from `go test -timeout`
- [ ] if we set `KNUU_TIMEOUT` will override `go test -timeout`
- [ ] `go test -timeout` has priority over `KNUU_TIMEOUT`

So,KNUU_TIMEOUT can only set up from go test -timeout?

did point 2 and 3 contradict each other?

not tested


Self registration confirm account link in a tenant does not confirm account and results in blank page

In wso2is 5.4.0, enabling self registration in a tenant results in a blank page when the confirm account link is clicked in the email, the account is also not confirmed. See below for the page. This works fine for self registration in carbon.super but not in a tenant. This was working fine for us in wso2is 5.3.0.
This is the link in the email:
https://localhost:9443/accountrecoveryendpoint/confirmregistration.do?confirmation=0881dd36-5b05-49ba-b6c3-2b85da404fae&userstoredomain=PRIMARY&username=rob&tenantdomain=tenant1.com&callback=https%3A%2F%2Flocalhost%3A9443%2Fauthenticationendpoint%2Flogin.do%3Fclient_id%3DZGWkkPyp0mKdxAad0n_Kr85hYTca%26commonAuthCallerPath%3D%252Foauth2%252Fauthorize%26forceAuth%3Dfalse%26passiveAuth%3Dfalse%26redirect_uri%3Dhttps%253A%252F%252Flocalhost%252Flogin%26response_type%3Dcode%26scope%3Dopenid%26state%3DxMptF4%26tenantDomain%3Dtenant1.com%26sessionDataKey%3Df4add7f2-2e12-425c-8f16-811aa5da6fc0%26relyingParty%3DZGWkkPyp0mKdxAad0n_Kr85hYTca%26type%3Doidc%26sp%3DApp1%26isSaaSApp%3Dfalse%26authenticators%3DBasicAuthenticator%3ALOCAL

This issue can not be reproduced in the master. Hence resolving the above issue.


Allow user to Clear Form and reupload

The button to clear form might look like this
      <Button
            size="lg"
            color="secondary"
            onClick={() => {
              setTransferContent([]);;
            }}
          >
            Clear Form
      </Button>

But we may also need a more sophisticated file upload that allows us to re-up the same file twice.

Closed by #23


[Analysis Request]:

📝 Description
Describe the dataset and analysis requirements here
📊 Dataset Details
Dataset details here
📈 Analysis Type
hacktoberfest, data visualization
📂 Upload Dataset Files
m,
⏰ Deadline (if applicable)
No response
I agree to and respect the Code of Conduct

[X] I will also follow CONTRIBUTING GUIDELINES

Goodbye, @rajatnai49! Thanks for your contributions and for closing this issue. If you have more questions or encounter other issues, feel free to reach out!


1417 - created cohort variables

Pre-review checklist
I have ensured that:

[ ] Code runs successfully in the development environment.
[ ] New code is tested to prove that it works. If not, justify reasoning.
[ ] New code is documented using type hinting and following the numpydoc docstring format.
[ ] New code follows the project naming standards.

Overview of changes

Post-review checklist
As I merge these changes, I have:

[ ] Updated the related Jira ticket, including approximate time spent (including review).
[ ] Moved the related Jira ticket to Done.

Converted to draft to prevent merging, until unblocked

Implemented on another PR, closing


Any operation is super slow

Type: Bug
Trying to do any operation, to any database, either local, or through a VPN to our Azure databases, is super slow.
It is taking 30 - 60 seconds just to open the database server in the server explorer, or executing any statement.
Opening a connection to a database server also takes 30 seconds to multiple minutes.
Something happened in a recent update to cause this SUPER slow down.
Azure Data Studio version: azuredatastudio-insiders 1.48.0-insider (8a715ed3b1e87153e46651b920367170564eb376, 2024-02-15T12:58:00.069Z)
OS version: Windows_NT x64 10.0.22631
Restricted Mode: No
Preview Features: Enabled
Modes:

System Info

Item
Value

CPUs
Intel(R) Core(TM) i5-8500 CPU @ 3.00GHz (6 x 3000)

GPU Status
2d_canvas: enabledcanvas_oop_rasterization: enabled_ondirect_rendering_display_compositor: disabled_off_okgpu_compositing: enabledmultiple_raster_threads: enabled_onopengl: enabled_onrasterization: enabledraw_draw: disabled_off_okvideo_decode: enabledvideo_encode: enabledvulkan: disabled_offwebgl: enabledwebgl2: enabledwebgpu: enabled

Load (avg)
undefined

Memory (System)
31.78GB (16.34GB free)

Process Argv

Screen Reader
no

VM
0%

Extensions (6)

Extension
Author (truncated)
Version

dacpac
Mic
1.14.0

import
Mic
1.6.0

schema-compare
Mic
1.21.0

ADS-add-columns
sof
0.0.12

vscodeintellicode
Vis
1.2.1

poor-sql-formatter
WSR
0.1.0

Can you please share logs we can investigate when you notice a slowdown?

Here you go.
console.log
20240220T084459.zip

I believe you accidentally closed the issue.. reopening it.
Also the logs don't contain any MSSQL logs, can you recheck you've enabled them as per above instructions and restarted ADS?

Trying again.
20240220T112038.zip
console.log

Thanks! I've gathered the logs, removed from comment above to remove server info.

From the logs, I can notice a delay of 20+ seconds on every connection during login in the SqlClient library, e.g.
24-02-20 11:20:55.9181035 pid:19624 tid:18 sqltools Verbose: 0 : eventTID:12176 TdsParser.Connect | SEC | Connection Object Id 4, Authentication Mode: SqlPassword
24-02-20 11:21:17.0460890 pid:19624 tid:18 sqltools Verbose: 0 : eventTID:12176 <sc.TdsParser.Connect|SEC> Sending prelogin handshake

We will investigate and get back to you.

Yep that's pretty much what happens. Happening lately on connections to my local sql server, and more severely when trying to connect to our Azure Sql database, through our VPN (which is what I did in this test.)
Thanks.

Could you try to resolve server IP address (using nslookup {hostname} and connect to IP address directly? This will help identify if this is related to DNS service.

Stil having MASSIVE slowness when going through an Azure VPN:
When connecting through an Azure VPN connection, to an Azure hosted database, ADS takes forever to connect - if it connects at all. Trying to twist open a database connection in the Connections pane most times takes several minutes (10+?) or never opens up at all.
Using SSMS, I am able to connect right up to the same database, almost instantly.
I tried getting the IP address, but nslookup reports it cannot find the server - even though SSMS, using the same hostname, works just fine.


docker: Error parsing reference: ":8787" is not a valid repository

Using the default example:
docklet_create() %>%
  docklet_rstudio()

I get this every time:
Using default ssh keys: id_rsa
NB: This costs $0.01488 / hour until you droplet_delete() it
Waiting for create ........................
Error: No network interface registered for this droplet
  Try refreshing like: droplet(d$id)

Not ideal, but if I try to refresh:
d <- droplets()
d[[1]]$id %>% docklet_rstudio()

It then runs through the docker process, but ends here:
docker: Error parsing reference: ":8787" is not a valid repository/tag: invalid reference format.
See 'docker run --help'.
Error: ssh failed
ssh -o BatchMode=yes -o StrictHostKeyChecking=no -o UserKnownHostsFile=/var/folders/nk/vwrxh1rj72b2tflmmqnd5kqw0000gq/T//Rtmp4hGAQj/hosts<EMAIL_ADDRESS>'docker run  -d  -p  8787 :8787    -e USER= rstudio  -e PASSWORD= rstudio  -e EMAIL=<EMAIL_ADDRESS> rocker/rstudio  '

Re the ssh failed, I can ssh into the droplet from terminal. Also worth noting that the plumber do_provision() function seems to run without any problems.
 Session Info
R version 3.5.1 (2018-07-02)
Platform: x86_64-apple-darwin15.6.0 (64-bit)
Running under: macOS  10.14

Matrix products: default
BLAS: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/3.5/Resources/lib/libRlapack.dylib

locale:
[1] en_GB.UTF-8/en_GB.UTF-8/en_GB.UTF-8/C/en_GB.UTF-8/en_GB.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods
[7] base

other attached packages:
[1] analogsea_0.6.0

loaded via a namespace (and not attached):
 [1] Rcpp_1.0.0          cellranger_1.1.0
 [3] compiler_3.5.1      later_0.7.5
 [5] base64enc_0.1-3     tools_3.5.1
 [7] aws.s3_0.3.12       digest_0.6.18
 [9] packrat_0.4.9-3     jsonlite_1.5
[11] lattice_0.20-35     rstudioapi_0.8
[13] curl_3.2            yaml_2.2.0
[15] httr_1.3.1          xml2_1.2.0
[17] knitr_1.20          stats4_3.5.1
[19] lmtest_0.9-36       grid_3.5.1
[21] nnet_7.3-12         data.table_1.11.6
[23] R6_2.3.0            flexmix_2.3-14
[25] readxl_1.1.0        Formula_1.2-3
[27] plumber_0.4.6       magrittr_1.5
[29] promises_1.0.1      modeltools_0.2-22
[31] MASS_7.3-50         aws.signature_0.4.4
[33] httpuv_1.4.5        betareg_3.1-1
[35] sandwich_2.5-0      mfx_1.1
[37] stringi_1.2.4       crayon_1.3.4
[39] zoo_1.8-4

sorry about the problems there @dncnbrn
can you install the dev version and try again?
remotes::install_github("sckott/analogsea")

Thanks @sckott - this has solved the problem; it no longer gives the error message, although when it then proceeds to open the droplet on port 8787 I just get 'The site can't be reached' and 'ERR_CONNECTION_REFUSED' on Chrome? (Apologies if this a settings issue I need to fix.)

sounds like there was a problem there. can you give more details of the code used and any error messages

Pretty much as before, but no error messages given:
library(analogsea)
docklet_create(region="lon1")
d <- droplets()
d[[1]]$id %>% docklet_rstudio()

On the last step, I get New server fingerprint: ..., then Using default tag: latest, then latest: Pulling from rocker/rstudio, then it runs through the Docker instructions, ending with Digest: sha256... and finally Status: Downloaded newer image for rocker/rstudio:latest..., before opening up a tab on Chrome with the IP address and then :8787 appended to it, and Chrome just gives back ERR_CONNECTION_REFUSED.
So it seems like everything is working fine but then it doesn't connect to the session.

thanks @dncnbrn for the details. I'll see if I can replicate this problem somehow and get back to you

related #170

That works for me - changing from the default password has solved the problem.

@dncnbrn install remotes::install_github("sckott/analogsea") and try again, should work now.
user and password are now required parameters, and rstudio can't be 'rstudio'


Clearly define purpose of at rest encryption in cloud

[Enter feedback here]
While explaining the importance/purpose of data at rest encryption, the section "The purpose of encryption at rest" talks with examples of hardware and hard drives. However, how at rest is important in a virtualized environment like a cloud is not clearly explained. Except for compliance or data governance, the article does not explain the technical/security benefits of data-at-rest encryption in the cloud.  I assume its practically not possible to take the storage server or hard drive out of Azure data centers and read the data. And what at-rest is offered by Azure with keys in AKV is all at the virtual layer, so please provide concrete examples how data at-rest helps in protecting data in the cloud.

Document Details
⚠ Do not edit this section. It is required for learn.microsoft.com ➟ GitHub issue linking.

ID: cd0472f9-1ed9-0154-3bfd-b25e5da64cd1
Version Independent ID: 846187d4-c24c-279f-e216-80b6507228b3
Content: Azure Data Encryption-at-Rest - Azure Security
Content Source: articles/security/fundamentals/encryption-atrest.md
Service: security
Sub-service: security-fundamentals
GitHub Login: @msmbaldwin
Microsoft Alias: mbaldwin

@subodhpatil
Thanks for your feedback! We will investigate and update as appropriate.

@subodhpatil
Thanks for bringing this to our attention.
I'm going to assign this to the document author so they can take a look at it accordingly

@subodhpatil - Thanks for your dedication to our documentation. Unfortunately, at this time we have been unable to review your issue in a timely manner and we sincerely apologize for the delayed response. We are closing this issue for now, but if you feel that it's still a concern, please respond and let us know within two weeks. #please-close
UUF-Stale-Not Planned


sorting android plugins V2->V1

This PR Apply the changes explained in #75416
It does not change anything but the order on which we are registering the plugins and (at least temporarily) fix issues that are occurring when using V2 Plugins that are alphabetically being registered after any other V1 Plugin on Isolates.
This can potentially avoid many users having bad experiences and losing many hours trying to find the problem.

[x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs.
[x] I read the [Tree Hygiene] wiki page, which explains my responsibilities.
[x] I read and followed the [Flutter Style Guide], including [Features we expect every widget to implement].
[x] I signed the [CLA].
[x] I listed at least one issue that this PR fixes in the description above.
[x] I updated/added relevant documentation (doc comments with ///).
[x] I added new tests to check the change I am making or feature I am adding, or Hixie said the PR is test-exempt.
[x] All existing and new tests are passing.

This needs tests, take a look at https://github.com/flutter/flutter/blob/515ef91ba1f6021403e30ecf535a852e3cbd9a2c/packages/flutter_tools/test/general.shard/plugins_test.dart#L699.  You could validate that the contents of GeneratedPluginRegistrant.java are sorted.

Hi @jmagman Thanks for the tip! Added the test :).

Hey @jonahwilliams we could potentially do that before as it is doing the alphabetical order:
  plugins.sort((Plugin left, Plugin right) => left.name.compareTo(right.name));
  if (androidPlatform) {
    await _writeAndroidPluginRegistrant(project, plugins);
  }

But we are using now the platform map that is done in the _extractPlatformMaps function  the line before inside _writeAndroidPluginRegistrant where we are doing the sort.
Let me know if there is a parameter before that i can use and i will gladly change to sort before.

I don't know that I like this solution TBH, double sorting is going to be confusing. For my read of the issue linked, it sounds like there was a problem with a particular plugin, and that was preventing anything after that plugin from being registered.
If that is the case, would a more reasonable fix be to add a try/catch around each plugin registration? FYI @xster

As I wrote in the issue this is indeed  a workaround to be able to use V2 and V1 plugins in the app without breaking the automatic registration for v2 plugins and be able to use them in a background service.

ack. In that case your change makes sense but I think there is a better location for it, while we still have the typed Plugin objects and not maps. let me take another look real quick

@xster is this due to the R8 issue that you already fixed?

Good call @blasten, thanks for pointing out. It could be. We recently had this issue where some plugins' dependent classes can't classload while registering. This causes that plugin and all subsequent plugins to not register. You might be observing a side effect of it where plugins registered earlier will work and later plugins (especially after a crashing one) don't. Besides that, there shouldn't be any intrinsic differences or ordering requirements between v1 and v2 plugins. Generally, we should find and resolve issues where plugins creation calls fail during registration.
Tangentially, we can also increase the resilience of the system when a plugin does fail. But rather than sorting them, it might be better, in the same part of code, where the GeneratedPluginRegistrant is generated, to wrap each plugin registration call with a try catch, so plugins subsequent to a crashing plugin can still work.

Hi @xster and @blasten,
1 - I Just tested with the master branch and the issue is still  happening, it only changed the error message, but still can't find the plugin because a V1 plugin broke the registration..
I/flutter (31312): FlutterFire Messaging: An error occurred in your background messaging handler:
I/flutter (31312): MissingPluginException(No implementation found for method getDatabasesPath on channel com.tekartik.sqflite)

Flutter 2.1.0-13.0.pre.416 • channel master • https://github.com/flutter/flutter.git
Framework • revision b9638fb837 (8 hours ago) • 2021-04-02 00:39:02 -0400
Engine • revision bed3a4a7a0
Tools • Dart 2.13.0 (build 2.13.0-192.0.dev)

2 - Do You think it is better to add a try catch for each plugin instead of sorting them? I Already tried and it also worked. Which one do you think is the best strategy?

I Tried something like this:

const String _androidPluginRegistryTemplateNewEmbedding = '''
package io.flutter.plugins;

import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import android.util.Log;

import io.flutter.embedding.engine.FlutterEngine;
{{#needsShim}}
import io.flutter.embedding.engine.plugins.shim.ShimPluginRegistry;
{{/needsShim}}

/**
 * Generated file. Do not edit.
 * This file is generated by the Flutter tool based on the
 * plugins that support the Android platform.
 */
@Keep
public final class GeneratedPluginRegistrant {
  private static final String TAG = "GeneratedPluginRegistrant";
  public static void registerWith(@NonNull FlutterEngine flutterEngine) {
{{#needsShim}}
    ShimPluginRegistry shimPluginRegistry = new ShimPluginRegistry(flutterEngine);
{{/needsShim}}
{{#plugins}}
  {{#supportsEmbeddingV2}}
    try{
      flutterEngine.getPlugins().add(new {{package}}.{{class}}());
    } catch(Exception e) {
      Log.i(TAG, "Error registering {{package}}.{{class}}");
    }
  {{/supportsEmbeddingV2}}
  {{^supportsEmbeddingV2}}
    {{#supportsEmbeddingV1}}
     try{
       {{package}}.{{class}}.registerWith(shimPluginRegistry.registrarFor("{{package}}.{{class}}"));
      } catch(Exception e) {
        Log.i(TAG, "Error registering {{package}}.{{class}}");
      }
    {{/supportsEmbeddingV1}}
  {{/supportsEmbeddingV2}}
{{/plugins}}
  }
}
''';

Wrapper try/catch. As a separate note, we should find out why those plugins are broken.

In https://github.com/flutter/flutter/pull/78964#issuecomment-812522788, I would change Log.i for Log.e and I would also log the exception that you caught.  Something along these lines:
 Log.e(TAG, "Error registering plugin `{{name}}`, package `{{package}}.{{class}}`. " +
            "The app might not function as expected unless you remove it from pubspec.yaml. " +
            "Exception:" + Log.getStackTraceString(e));

nit: it might print a bit nicer using the Log.e(tag, message, exception) signature since there's already built-in support for taking an exception

If you do @blasten's suggestion, you'll end up fixing https://github.com/flutter/flutter/issues/78258 :)

Will update this PR with all the suggested changes.

Hey @xster, @blasten  and @jonahwilliams
Updated the template to include the try catch and removed the sort as it is not needed.
Now when the V1 plugin is registering it is showing the error but continue with the app as it should :)
I/FLTFireBGExecutor(26306): Creating background FlutterEngine instance, with args: [--start-paused, --enable-dart-profiling]
E/GeneratedPluginRegistrant(26306): Error registering plugin mdns_plugin, com.mutablelogic.mdns_plugin.MDNSPlugin The app might not function as expected unless you remove it from pubspec.yaml.
E/GeneratedPluginRegistrant(26306): java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object android.app.Activity.getSystemService(java.lang.String)' on a null object reference
E/GeneratedPluginRegistrant(26306): 	at com.mutablelogic.mdns_plugin.MDNSPlugin.<init>(MDNSPlugin.kt:52)
E/GeneratedPluginRegistrant(26306): 	at com.mutablelogic.mdns_plugin.MDNSPlugin$Companion.registerWith(MDNSPlugin.kt:29)
E/GeneratedPluginRegistrant(26306): 	at com.mutablelogic.mdns_plugin.MDNSPlugin.registerWith(Unknown Source:2)
E/GeneratedPluginRegistrant(26306): 	at io.flutter.plugins.GeneratedPluginRegistrant.registerWith(GeneratedPluginRegistrant.java:165)
E/GeneratedPluginRegistrant(26306): 	at java.lang.reflect.Method.invoke(Native Method)
E/GeneratedPluginRegistrant(26306): 	at io.flutter.embedding.engine.plugins.util.GeneratedPluginRegister.registerGeneratedPlugins(GeneratedPluginRegister.java:34)
E/GeneratedPluginRegistrant(26306): 	at io.flutter.embedding.engine.FlutterEngine.<init>(FlutterEngine.java:345)
E/GeneratedPluginRegistrant(26306): 	at io.flutter.embedding.engine.FlutterEngine.<init>(FlutterEngine.java:260)
E/GeneratedPluginRegistrant(26306): 	at io.flutter.embedding.engine.FlutterEngine.<init>(FlutterEngine.java:240)
E/GeneratedPluginRegistrant(26306): 	at io.flutter.embedding.engine.FlutterEngine.<init>(FlutterEngine.java:160)
E/GeneratedPluginRegistrant(26306): 	at io.flutter.plugins.firebase.messaging.FlutterFirebaseMessagingBackgroundExecutor.lambda$null$0$FlutterFirebaseMessagingBackgroundExecutor(FlutterFirebaseMessagingBackgroundExecutor.java:185)
E/GeneratedPluginRegistrant(26306): 	at io.flutter.plugins.firebase.messaging.-$$Lambda$FlutterFirebaseMessagingBackgroundExecutor$Tw1_-iY8wcRJPWf1qeylRYPPEZI.run(Unknown Source:6)
E/GeneratedPluginRegistrant(26306): 	at android.os.Handler.handleCallback(Handler.java:938)
E/GeneratedPluginRegistrant(26306): 	at android.os.Handler.dispatchMessage(Handler.java:99)
E/GeneratedPluginRegistrant(26306): 	at android.os.Looper.loop(Looper.java:246)
E/GeneratedPluginRegistrant(26306): 	at android.app.ActivityThread.main(ActivityThread.java:8456)
E/GeneratedPluginRegistrant(26306): 	at java.lang.reflect.Method.invoke(Native Method)
E/GeneratedPluginRegistrant(26306): 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:596)
E/GeneratedPluginRegistrant(26306): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1130)
.
.
.
D/SocialShare(26306): onAttachedToEngine

First I Thought on creating a function and pass the name, class and package to the function and Log from it do you think its better to concentrate everything in a function or directly in the catch as it is now?

Hey Guys,
Does anyone else have any input?
If not can this be merged so we can use without the need to modify our local flutter copy? ;)

@xster applied the review notes and added the tests to ensure the plugins are wrapped in try catch, please take a look


Make chromedriver download configurable

[ ] Chromedriver version should be configurable
[ ] If downloading, the location should be configurable and use a sensible default (maybe ~/.cache on *nix systems)
[ ] Consider shipping chromedriver binary with the pip package data. It won't be platform independent however so that would probably require shipping different builds for different platforms (not really something I want to do at this point)

https://docs.python.org/3/library/pkgutil.html#pkgutil.get_data is relevant


Topic/authorization

This is a continuation of PR #258 submitted by @frehn. I think its good to go but needs a broader review.
Some possible points of interest:

The action of this as a middleware is troubling because of the type signature of our HttpService, namely Request => Task[Option[Response]]. Namely, if you orElse another route behind a service that has been wrapped by the authentication middleware, you must still authenticate. If we change the signature back to Request => Task[Option[Response]] we can query if the route exists and then attempt authentication, otherwise move on.
By using a LinkedHashMap cleanup operations should be pretty cheap so I wonder if it would be worth it to just do cleanup every time a nonce is created and or queried.

A big thanks to @frehn, he did the vast majority of the work here including the great documentation this PR enjoys.

Thank you for the kind words, @bryce-anderson.
Regarding your first point, consider the question of when a non-authenticated 404 error should be issued. In apache, for example, all subdirectories of a protected directory are protected as well - no authentication, no 404. This seems to be a reasonable use-case to avoid leaking of information about which URIs are defined. In the PR this is mirrored insofar as, as you observe, if service = service1 orElse protectedService orElse service2, where protectedService is obtained by Authentication, then only the URIs defined in service1 will be accessible without authentication. I agree that this behaviour is unintuitive - maybe Authentication should be implemented differently to avoid this composability issue altogether?

If service is composed through prefix mapping, then the unauthenticated URI space can fall through to service2.  This is only an issue when composing services to share a namespace, right?

No, not necessarily: blaze uses the url translation and then orElse's routes together for prefix mapping. Therefor, if your first service is mount(myservice,"/secure"), the security will fall through when using the blaze backend, but would be successful with servlet.

Would it be sensible to have a mountService(service: HttpService, prefix: String, auth: Authentication) in ServerBuilder (moving the implementation of Authentication.apply to that method), and require that implementations of ServerBuilder only forward those requests to the service that match the prefix?

@frehn, that would be one solution if we want to change the way blaze mounts services which is doable. However, I think authorization is a prime example of a middleware so that doesn't feel like the right solution to me: other middleware might end up with a similar problem in the future.
In my mind, I want to know if a service is indeed willing to handle the request before requiring authentication: that way we can know that this service that requires authentication isn't going to handle it, so just move on to the next one. The only way to query it is to run the full route and see if we received a response, which we will then discard should we need to perform authentication. This is not only a waste of resources but would be a security hole for side effecting routes such as a POST request.

I can see a few ways to handle this.

go back to HttpService = Request => Option[Task[Response]]. This allows us to query the service synchronously as to whether its going to handle the request. It still presents a potential security hole in that a route can still use the now constructor for Task, performing all its side effects before we execute the Task.

Define HttpService = Request => Task[Option[Task[Response]]]. We can asynchronously query the service and deffer computing the result if we want. The signature is a complete nightmare: I'd like to not pick this option.

Move the authorization to the route level instead of the service level. I don't like this much either because in my minds eye security is most often a service level concern, but I could be wrong on this.

Make authorization a mounting concern as mentioned. This avoids all the security concerns and works immediately for servlet. Downsides: gives authorization special privilege (maybe thats not bad, security is pretty important) and requires some extra blaze (and future backends) work.

I'm personally most interested in options 1 then 4, but am interested in more people weighing in on this.

Regarding point 1, a variant of that might be to define HttpService = PartialFunction[Request, Task[Response]]; this might lessen the security hole potential by avoiding the construction of the Task[Response] object when checking for definedness via service.isDefinedAt.

We used to be a PartialFunction[Request, Task[Response]].  We were able to clean up a lot of things with the current signature, but it did complicate other use cases.
A similar type to PartialFunction is scalaz.NullResult.  It's very nice in that it doesn't throw, but it lacks the syntactic literal support of PartialFunction.
I'm still a bit puzzled why it doesn't work in blaze.  I might need to put together an example.

@rossabaker, the problem shows itself when using the following pattern:
val wholeService = authenticate(serviceA) orElse serviceB

Even though you may have only wanted to secure serviceA, serviceB is now behind the authentication wall because authentication for serviceA must happen even before its known if it will match the request.
The problem is even more grim if using two different authentication strategies,
val wholeService = authenticate1(serviceA) orElse authenticate2(serviceB)

The authentication headers will collide and you will never actually be able to use serviceB. This is actually where I first ran into the problem: I was trying to use a service composed of both simple and digest authorization for testing.

Okay, I now see the disconnect between my thinking and reality.  I was imagining that URI translation returned None if the prefix didn't match and delegated only if it did.  This is not so.  Drat.

Just my two cents on authentication .... I agree that authentication should be middleware, it just feels right there. However, whenever I've done auth before I usually return an AuthenticatedUser along with the request, maybe not the best practice but it's been useful in the past. Having authentication as middleware would make this impossible unless there was a way to pass arbitrary data between services.  The way I currently construct my http4s services is to have an auth middleware and then fetch the user from the username (for basic auth) in the route if i need it.

The attributes on a request or response can be a way of out-of-band communication, but they do introduce a coupling between the attribute setter and the attribute getter.
It's also possible to play with functions that return tuples or case classes, as long as they're composed into the HttpService signature at the end.  That's a little more explicit, but also harder for a service to ignore what might be optional metadata.

The "optionality" could be expressed by giving two ways to construct authenticated services: the default one, not exposing the authentication metadata, with the same signature as in the current PR (HttpService => HttpService), and a second one with signature Service[(Request, Metadata), Response] => HttpService.
On the other hand, the attributes map in Request seems to be intended to be used to pass such metadata around. If that's true, I'd prefer to use this mechanism and keep the signatures as they are.

To see how this would look like, I implemented @rossabaker's first suggestion: to provide the authenticated user/realm via Request.attributes. Please find it here: https://github.com/frehn/http4s/commit/c68e2f34fc3751e95a8baee09932a9c4876f8024.
Note that this changes the signature of getChallenge to return Task[Request \/ Challenge] instead of Task[Option[Challenge]], which I find quite nice.

@frehn looks great. I think this is a good approach.

I like that, but the left is more conventionally the "bad" side.  Seems like Challenge \/ Request would be the more natural order?

@rossabaker, after the switch from Request \/ Challenge to Challenge \/ Request, do you think this is ready to merge? We will still have the problem of authorization blocking downstream services.

I think it adds functionality over what we have.  I'm inclined to merge, and then we have continued soul searching to do on the order of the monads.

@frehn, do you want to change the order of the \/ and submit another PR?

Sure!


how is segmentation achieved

Hello, thanks for providing the code. Can somebody please explain how exactly the segmentation takes place in eval_video_segmentation.py? And what is mask_neighborhood and local attention as mentioned here https://github.com/facebookresearch/dino/blob/94175993abde84179449d79e22eab7ea28dec14b/eval_video_segmentation.py#L86
Thankyou

Hi @AnukritiSinghh
For video object segmentation on DAVIS we followed precisely the protocol described in this paper: https://arxiv.org/abs/2006.14613
By mask_neighborhood we refer to the fact of restricting the set of source nodes (context) considered for each target node, on the basis of spatial locality. Please read further detail in appendix F of https://arxiv.org/abs/2006.14613
Hope that helps


Run callback function when enter key is pressed

When the enter key is pressed, we should close the editor window and run the success callback function. Currently, nothing happens. This will require modifying the Cursor class's keyPress() method.

I would take this on 👍

Great, thanks! I'll assign this to you. Let me know in case you have any questions!

can i also work on it?

I had a doubt in this, in the callback function how can we close the editor using the enter key ?

Hi, @mohak34 I'm not sure I understand your question. Do you mean while using MJXGUI's API? Currently nothing happens when the enter key is pressed, but after this issue is fixed, the editor will close automatically after the enter key is pressed, and the callback function will be run.

Update: I have completed the functionality and will send PR by Oct 1