Response streaming

Hi @wojtekmach,
Is streaming support something you'd consider as part of the API for Req?  e.g. something like this:

url = "https://api.twitter.com/2/tweets/sample/stream"

inspect_stream = fn item -> IO.inspect item end

Req.get_stream!(url, inspect_stream, headers: headers)

I noticed you had an empty issue here but wasn't sure it was the same thing.

Yes, both request and response streaming is something I'm definitely interested in. I'm not sure about the user-facing API though. What you have is an interesting idea how this could be done. But then the other big problem is how to actually implement it. :) Could all response steps receive a chunk or the step need to somehow opt-in to supporting streaming? Do we have separate streaming steps? Stuff like that.

As a client, I would expect to receive an elixir %Stream{} from a get_stream! call.
That would allow us to pipe to Stream functions to manipulate the stream.
Here is something I worked a long time ago as a proof of concept.

Yeah, I think that'd be the ideal API. Unfortunately I don't think it's currently possible to achieve with Finch.stream.

As a client, I would expect to receive an elixir %Stream{} from a get_stream! call. That would allow us to pipe to Stream functions to manipulate the stream. Here is something I worked on a long time ago as a proof of concept.

I think this would be ideal too!
I went the lazy approach in my PoC by passing a function to consume the streamed response (I guess mimicking stream(req, name, acc, fun, opts \\ []) from the underpinning library) as I had initially thought it wouldn't be possible to return the stream, but like your PoC @alexandremcosta!
More to ponder 🤔

Yeah, I think that'd be the ideal API. Unfortunately I don't think it's currently possible to achieve with Finch.stream.

I think it's possible if the function passed to Finch.stream sends the received chunks back to the process that called Finch.stream, and just returns an empty list as acc.
That way we can have a receive block inside the Stream.resource/3 next_fun to stream the results, like I did on the example. The start_fun would basically call Finch.stream passing self() to the scope of the fun argument. And after_fun doesn't need to do anything...maybe just handle errors.

Yeah, I think that'd be the ideal API. Unfortunately I don't think it's currently possible to achieve with Finch.stream.

as I had initially thought it wouldn't be possible to return the stream, but like your PoC @alexandremcosta!

Here is another PoC. I haven't tried to compile or test, but it outlines the overall idea: to have another process to call Finch.stream and send each chunk to current process
  def stream!(req, name, opts \\ []) do
    ref = make_ref()

    resource =
      Stream.resource(
        fn -> ref end,
        &receive_stream/1,
        &raise_unless_successful!/1
      )

    start_stream_task(ref, req, name, opts)
    resource
  end

  def start_stream_task(ref, req, name, opts) do
    me = self()
    acc = {nil, []}

    fun = fn
      {:status, value}, {_, headers} ->
        {value, headers}

      {:headers, value}, {status, headers} ->
        {status, headers ++ value}

      {:data, value}, {status, headers} ->
        send(me, {value, ref})
        {status, headers}
    end

    Task.start_link(fn ->
      response = Finch.stream(req, name, acc, fun, opts)
      send(me, {:done, {ref, response}})
    end)
  end

  defp receive_stream(ref) do
    receive do
      {data, ^ref} -> {data, ref}
      {:done, {^ref, response}} -> {:halt, response}
    end
  end

  defp raise_unless_successful!({status, headers}) do
    if status != 200 do
      raise "Failed with status #{status} and headers #{inspect(headers)}"
    end
  end

The problem is: when you create the Stream resource, the caller process will start receiving all the chunks. If body is bigger than memory, the message queue will grow unbounded.

So with Finch, we need a way to call Finch.stream from the first execution of next_fun.

Another downside is that we only stream the body, the caller can't access the status or headers. So maybe this should be called get_body_stream! instead of just get_stream!.

If the caller doesn't process the whole stream, this code will leave messages on the caller mailbox.
To prevent this problem, after_fun should manually:

shutdown the task
call flush/0

The problem with this is that data is copied between processes, which is inefficient. If we had a way to not copy, that would be more performant.

Yes, exactly. Forgetting about Finch for a second, I believe we could have a stream of chunks where each chunk was generated by calling Mint.HTTP.recv. If that's viable, either Finch would have an option to return such Stream or it would expose to us a way to build it ourselves, expose the underlying Mint.Conn. cc @sneako

I was wondering if Req supported streaming, and here comes this discussion :smile: thanks!

To prevent this problem, after_fun should manually shutdown the task (and maybe flush known messages?)

This is one part I'm concerned about indeed. It shows up (although with HTTPoison) in this article by @alvises (code at https://github.com/poeticoding/httpstream_articles) which features :hackney.stop_async(resp.id).
As a user (of Req or other clients) I would be concerned about leaks when using streaming.
Really curious to see where this will go ultimately.

Maybe this will be helpful, I have a piece of code I use to stream large CSV files (gigabytes) from external HTTP endpoint, this is the client I wrote that wraps Finch. There is some cleanup needed and it is operating on lines of data, as it deals with CSV files, so this is pretty specific to my use case, but it allows you to stream_url/1 that produces Elixir Stream that can be consumed just like a stream from a file.
The other thing it does is allowing to peek at the first line, that's probably not helpful in this context but was for me. Can be cleaned up.
This could serve either as an inspiration if this is the right approach to the problem, for someone to port it here, or I could even work on this some time over next couple weeks if you like the solution.
https://github.com/wojtekmach/req/issues/82

To add more "prior art" to the discussion, I've also implemented a wrapper on top of Finch to stream response, but in this case without Stream.resource, that we are using to compute checksums of remote HTTP resources:

https://github.com/etalab/transport-site/blob/master/apps/shared/lib/http_stream_v2.ex
https://github.com/etalab/transport-site/blob/master/apps/shared/test/http_stream_v2_test.exs

Thanks @hubertlepicki. I believe something somewhat similar was mentioned earlier and the concern is extra messaging will make it not as efficient as possible.
Maybe we simply cannot generate such stream in an efficient way and what we're left with is callback-based API. Though req maybe can add some niceties, at the very least consume the status and the headers and wrap them in a response struct:
fun = fn data, response ->
  IO.inspect data
  response
end

response = Req.get!(url: "https://httpbin.org/stream/10", stream: fun)
response.body #=> "" (because we're not accumulating it in fun)

another reason to have a response struct with status and headers is that is enough for some steps like follow_redirects and retry and I'd really like to be able to somehow still use them. Obviously it won't work on steps that operate on the response body like decompress_body and decode_body and I'm honestly not sure what to do about them. Perhaps a response step can also receive and return:
fn request, {chunk, response} ->
  {request, {chunk, response}}
end

but now every response step needs to handle this which I'm not sure about.

My concern is data copying on message passing. Maybe it is not a big deal and if someone needs absolutely best performance they would drop down to Finch or Mint anyway.

This is a good point. I'm again slightly out of my depths, but I assumed the binaries are not copied between processes, but a reference is passed, so as long as we're sending an actual binary (and not struct) from one process to another, and the binary is larger than 64 bytes, we're not actually duplicating the binary, as it sits on a dedicated binary heap. We probably don't want to concatenate the binaries for no reason, or wrap them in structs etc.
I wonder if someone smarter than me in terms of knowing ins and outs of BEAM could confirm - anyone you know of we can ask?
https://stackoverflow.com/questions/47595304/big-binary-data-share-between-processes

Here's another idea, instead of returning a stream as response body and possibly having a contract for chunk-aware response steps, let's do something simpler.
We consume the :status and the :headers chunks and build a response with these and body set to "" and run the response steps. This way we'd still have things like follow redirects, retries, etc. Once we get :data chunks we run them against the given stream function.
Here's an example:
Mix.install([
  {:req, github: "wojtekmach/req", branch: "wm-stream"}
])

fun = fn chunk, acc ->
  IO.inspect(Jason.decode!(chunk)["id"], label: :chunk)
  acc
end

Req.get!("https://httpbin.org/redirect-to?url=/stream/3", stream: fun).body
#=> ""

# Outputs:
# 12:06:24.459 [debug] follow_redirects: redirecting to /stream/3
# chunk: 0
# chunk: 1
# chunk: 2

Here is another similar example where we append chunks to the response body: https://github.com/wojtekmach/req/compare/main..wm-stream#diff-dc476e4c9226d38862002c18df4835a1d51d98448df84548cd4e144fae0ec2e9
Thoughts?

It's possible to turn the response into a Enumerable usable with Stream with that option, right?

I think that would be possible outside of Req using process messaging described in comments above.

the binary is larger than 64 bytes, we're not actually duplicating the binary, as it sits on a dedicated binary heap
(Erlang guide](https://www.erlang.org/doc/efficiency_guide/binaryhandling.html#refc-binaries) about this.

@wojtekmach I like the simplicity, but it doesn't add much to what Finch already does. If the caller needs the full body, why he is streaming? He can just call Req.get/1.

If the caller needs the full body, why he is streaming? He can just call Req.get/1.

Not sure I understand your point. Can you elaborate? Did you mean that what i said about using the stream function to append chunks to response body is a bad example? If so, agreed! I just wanted to highlight the approach offers some, even if limited, way of keeping track of data.

I think I am going to go with the approach outlined above. I’d love to see a Req plugin that keeps response body a stream, see how the implementation ends up looking. I think the plug-in would need to replace most response steps with stream aware variants.

I think that would be possible outside of Req using process messaging described in comments above.

OK, well first of all any kind of streaming is better than nothing 🙂
For my use cases, I would prefer being able to do something like this:
Req.stream!("https://httpbin.org/redirect-to?url=/stream/3", type: get)
|> parse_json_object()
|> store_json_object_in_db()

which is simpler than having a different process, and it's possible to turn this approach into the separate-process approach, but the other way around is difficult. Spear has this and is also based on Mint: https://github.com/NFIBrokerage/spear/#usage. Afaik it doesn't have an additional process to accomplish this. But I'm not sure if Finch can do it as well.

Hi all! I wanted to bump this conversation now that there's a plugin mechanism for issuing requests with Finch.stream/5.
I wanted to make sure I'm on the same page as everyone who has contributed to the discussion so far:

Using the new :finch_request option, it's possible for a plugin to expose the response body as a stream. This requires process messaging however, which isn't optimal.
Exposing the body as a stream without process messaging would require some additional API in Finch that allows us to "manually receive". FWIW, @sneako has indicated that he's open to proposals.
There's an open question of how/whether to apply response steps to streaming responses. One option that @wojtekmach mentioned is that the streaming plugin could/should just reimplement certain steps. There are also other steps that only really make sense in a streaming context, like parsing server-sent events.

Curious to hear if anyone's thoughts on this have crystalized in the last months!

I've only done about 20 minutes of research, but it looks to me like trailing headers are pretty uncommon. Spitballing a bit here:
# With stream: true, assume no trailing headers. If they're encountered
# at the end of the request, perhaps log a warning. I think this is the
# default behavior that most people will use and that prob works for 99%
# of use cases.
Enum.each(Req.get!(url, stream: true).body, fn data ->
  IO.inspect(data)
end)

# With stream: :raw, contains both :data and :trailing_headers.
# IMO it's worth disambiguating since all :headers at the start of
# the response will be consumed by Req in the Response struct.
Enum.each(Req.get!(url, stream: :raw).body, fn
  {:data, data} ->
    IO.inspect(data)

  {:trailing_headers, headers} ->
    IO.inspect(headers)
end)

# Alternative to stream: :raw is to use the existing :raw option
Enum.each(Req.get!(url, stream: true, raw: true).body, fn
  {:data, data} ->
    IO.inspect(data)

  {:trailing_headers, headers} ->
    IO.inspect(headers)
end)

# If you're consuming well-formatted ndjson, you can easily do this:
Req.get!(url, stream: true).body
|> Stream.map(&Jason.decode/1)
|> Enum.each(&IO.inspect/1)

In the future, after some stream-handling patterns arise, Req could potentially introduce a :decode_stream step and option that defaults to false, but that, when true, can automatically decode various formats based on headers.

# If you're consuming well-formatted ndjson, you can easily do this:
Req.get!(url, stream: true).body
|> Stream.map(&Jason.decode/1)
|> Enum.each(&IO.inspect/1)

right, I think this is the code people expect to be able to write.
I think the :stream and :raw combination is interesting but if we don't do anything in decompress_body and decode_body we might as well say that setting :stream implies setting raw: true and I think that'd be pretty reasonable. I need to read up on them more but yeah if trailing headers are very uncommon, maybe we add a trailing_headers: :log (default) | :ignore | fun(header, value).

c) work on the stream. Which is probably doable for decompress_body but I don't think it is for decode_body in all cases.

Definitely agreed on this point.
I'd suggest that initial streaming support should include some handling for trailing headers and some handling for decompression, and leave the rest up to plugins/custom request steps.

I’ve been playing with possible APIs a bit and I have an unrelated question… do folks have an alternative httpbin that they like to use? I’ve been getting a lot of 500’s and timeouts using httpbin.org.
Part of me is wondering whether it makes sense to just spin up a req-httpbin on Fly free tier. That could also be used for docs within Req.

Yeah I've been increasingly running the following to test things locally:
docker run -p 8000:80 kennethreitz/httpbin

and I plan to change integration tests to hit that.

Closing in favour of #220.

As far as I understand, streaming with back-pressure + using Stream is still not officially supported at the moment.
I attempted to implement a blocking stream based on Stream.resource/3, loosely related to @alexandremcosta's suggestion above.

The stream's next_fun requests a new chunk lazily by sending a message to a linked process that runs Req, it then instantly awaits a reply
The request :into accumulator waits for owner to request a new chunk before sending it
If the stream ends prematurely (e.g. Stream.take(stream, n)), the linked process is unlinked and killed, effectively ending the HTTP stream
Sending chunks to owner involves copying, but I guess there is no way around this

How bad of an idea is this? 😬 I don't see a chance for this to deadlock, but maybe you folks know better?
def stream(req) do
  owner = self()

  Stream.resource(
    fn ->
      spawn_link(fn ->
        req
        |> Req.request(
          into: fn {:data, data}, {req, resp} ->
            receive do
              :cont ->
                send(owner, {:data, data})
            end

            {:cont, {req, resp}}
          end
        )

        send(owner, :done)
      end)
    end,
    fn pid ->
      send(pid, :cont)

      receive do
        {:data, data} -> {[data], pid}
        :done -> {:halt, pid}
      end
    end,
    fn pid ->
      Process.unlink(pid)
      Process.exit(pid, :kill)
    end
  )
end

# usage
Req.new(url: "https://httpbin.org/stream/40") |> stream() |> Stream.take(4) |> Enum.each(&IO.inspect/1)

@dlindenkreuz thanks for looking into this. Not sure how this differs on what we have in Req already though. The stream showed in my last comment is similarly blocking on receive calls. In any case, both solutions lack back pressure from the tcp socket, as in, the stream asks the socket for more data. Right now the socket is a firehose and sends messages to the process with no back pressure. Changing this requires changing Finch.

NB: this likely only applies to HTTP1, which is the context I need to work with at the moment.
The current implementation of into: :self uses Finch.async_request, which uses Finch.HTTP1.Pool.send_async_response. This function only sends a message to the owner and does not block its caller (which is the Finch.HTTP1.Conn.receive_response recursion).
Now, if I pass a blocking function to Req's into: fn instead, this will also block the receive_response recursion, which calls Mint.HTTP.recv as part of the recursion. I think this is what makes the difference.
I understand that Mint is set to passive mode and would therefore also block on the socket level until more bytes are actively fetched with recv?

Right, Finch is doing the blocking Mint.HTTP.recv but I believe it doesn't matter because it is doing it as fast as possible, without any back pressure. In other words, we have Mint.HTTP.recv and then immediately send, which is async, to the calling process.
The stream that I'm talking about, resp = Req.request!(..., into: :self) ; Enum.each(resp.body, ...), appears to be blocking because we have the blocking receive in the Enumerable implementation: https://github.com/wojtekmach/req/blob/v0.5.1/lib/req/response_async.ex#L54.

Sorry to bother you again! Just to confirm we are on the same page, this is what I think currently happens with into: :self:

Req.request(..., into: :self) → Finch.HTTP1.Pool.async_request → start_link fn -> Finch.HTTP1.Pool.request end
In the child process, Finch.HTTP1.Pool.request processes data from Mint, handles them with send_async_response/2 (sends messages to owner process & immediately returns), then recurses into processing more data from Mint, etc.
In the meanwhile, the owner process inbox receives messages
receive blocking happens in owner, not in child process, so it does not affect Mint

Is this correct?
Now, I think this call is the only opportunity to block Mint.HTTP.recv and thus apply back-pressure.
Here, with into: :self, fun sends a message to the owner and immediately returns. However, with into: fun, the user-specified function is called to handle {:data, _}. In this user-specified function, we can do heavy processing and/or receive and thus block the recursion, which delays Mint.HTTP.recv.
I added a cheap IO.puts("receive") inside Mint.HTTP.recv and Stream.map(fn x -> Process.sleep(1000); x end) to my code snippet above to confirm that the delay actually propagates all the way upstream to Mint.
A single Mint.HTTP.recv can contain multiple chunks, but a large enough response like https://httpbin.org/stream/100 will actually cause further recv calls after the previous chunks have been slooowly consumed. So I guess this works!?
Or I am still misunderstanding something? 🤔

We're on the same page. I take it back what I said, your code snippet is quite different because you're using into: fun which has back-pressure. Sorry about that! I don't plan to support something like this in Req at the moment. Ideally this is implemented in Finch however it is not straightforward.


basic sender and receiver problem

I AM USING WAYNE HOLDER ADAPTERBOARD FOR DWM 1000 WITH ARDUINO PRO MINI USING ARUINO IDE 1.6.8
I AM NOT ABLE TO FIGURE OUT HOW TO USE THE BASIC SENDER AND RECEIVER CODE,IT GETS UPLOADED BUT WHILE RUNNING IT
DW1000-arduino-sender-test
DW1000 initialized ...
Committed configuration ...

This is questionable report. Closed.


Re-Commit PR, Solutions in C++

Description
Some solution files were not present in the merge, adding them now
Fixes # (issue)
Type of change
Please delete options that are not relevant.

[x] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)

Test Configuration: (If any)

Firmware version:
Hardware:
Toolchain:
SDK:

Checklist:

[x] My code follows the style guidelines of this project
[x] I have made corresponding changes to the documentation
[x] I have added tests that prove my fix is effective or that my feature works
[x] Any dependent changes have been merged and published in downstream modules

@LemonDrop847 👍


Backfill serving shepherd for v0.25 release

Victor isn't full-time anymore https://github.com/knative/release/pull/3

/close
https://github.com/knative/release/pull/7


Kerberos

This seems stable enough to be merged into the master. Any objections? @stijnvanhoey?  @Jo-Loos? @florisvdh?

Maybe we should get inbo-sql07-prd.inbo.be out of the documentation online? @Jo-Loos

Several comments made at 2066a8cf were not handled yet.
Further, the 'untested' paragraph on odbc.ini may need updates and cleaning to get the tutorial more or less finished.
I leave that to @stijnvanhoey to make decisions.


[5.6] Look through defer bodies in actor isolation checking

Fixes rdar://88200899
5.6 version of https://github.com/apple/swift/pull/41067. Note that this PR is based on top of #41055 because they touch a small amount of related code and would otherwise conflict. If for some reason #41055 did not land, it would be trivial to rebase this to work without it.
Explanation: The isolation checker wasn't treating defer bodies as having the same isolation as the enclosing function, meaning that you couldn't e.g. access actor properties from a defer in an actor or call @MainActor functions in a defer in a @MainActor function.
Scope: New code paths are guarded by checks for defer blocks.  Emits strictly fewer diagnostics.
Risk: Low
Testing: Existing regression tests, new test specific to defer
Reviewers: @DougGregor, @kavon

Please test with pull request:
apple/llvm-project#3858
@swift-ci Please test macOS

Please test with pull request:
apple/llvm-project#3858
@swift-ci Please test

Build failed
Swift Test Linux Platform
Git Sha - 6f2677451312dad45ce633cef884c85b5e0cf025

Build failed
Swift Test OS X Platform
Git Sha - 6f2677451312dad45ce633cef884c85b5e0cf025

@swift-ci Please test

Build failed
Swift Test OS X Platform
Git Sha - 62a58ede6f278392c0a82bdd05617209b8c0ad1d

@swift-ci Please test

This still seems to be an issue in Swift 5.6: https://forums.swift.org/t/a-bug-cant-defer-actor-isolated-variable-access/50796


updated message for PR 611

[ ] Closes #xxxx (Replace xxxx with the Github issue number)
[ ] Tests added: Please use assert_type() to assert the type of any return value

use the exact string I gave you. The "is deprecated" part is wrong

Done

still fails.  Please copy this exact message, letter for letter, space for  space, EXACTLY:  "Logical ops (and, or, xor) between Pandas objects and"  You have "Logical Ops(and, or, xor) between Pandas objects and"  Note difference in capitalization and spacing.


chore: provide warnings about newer...

What does this PR do?
chore: provide warnings about newer versions; also fix typo in parfuemerie-douglas package URL
Signed-off-by: Nick Boldt<EMAIL_ADDRESS>Screenshot/screencast of this PR
N/A
What issues does this PR fix or reference?
N/A (or see commit message above for issue number)
How to test this PR?
N/A
PR Checklist
As the author of this Pull Request I made sure that:

[x] Code produced is complete
[ ] Code builds without errors
[ ] Tests are covering the bugfix
[ ] Relevant user documentation updated
[ ] Relevant contributing documentation updated

Reviewers
Reviewers, please comment how you tested the PR when approving it.

/cherry-pick release-1.3

see also https://github.com/redhat-developer/red-hat-developers-documentation-rhdh/pull/657


feat: add combined styles and inbuilt syntax highlighting themes in the REPL

Description

What is the purpose of this pull request?

This pull request:

adds the ability to combine styles and colors. styles like bold brightBlue, italic magenta are now supported.
adds the following inbuilt themes: 'stdlib-ansi-basic', 'stdlib-ansi-dark', 'stdlib-ansi-light', 'stdlib-ansi-strong', 'minimalist', 'monokai', 'solarized'.

Related Issues

Does this pull request have any related issues?

This pull request:

is a follow up to #2291

Questions

Any questions for reviewers of this pull request?

One of the challenges is finding out how accessible these themes are across different terminal emulators. How these ANSI colors are rendered depends on the terminal application. In my system, all of the terminal applications render all ANSI colors according to accessibility standards. So it was difficult for me to judge which color is suitable for dark/light backgrounds. If most modern emulators do this then this might be a win for us.
It would be great if you could try out the themes on your terminals and suggest changes that make the themes more accessible.
Other

Any other information relevant to this pull request? This may include screenshots, references, and/or implementation notes.

No.
Checklist

Please ensure the following tasks are completed before submitting this pull request.

[x] Read, understood, and followed the contributing guidelines.

@stdlib-js/reviewers

@Snehil-Shah How did you access accessibility compliance?

@kgryte I should have clarified, just visually looking at, if it's clearly visible or not. If there's a way to assess accessibility, let me know..

I suppose one comment regarding the styles is that, for themes such as solarized and monokai, in IDEs, this also sets the application background. For example, in SublimeText, if you set monokai, the IDE background is not fully black. For solarized, there is a similar background adjustment. Here, it's just the tokens.

just visually looking at, if it's clearly visible or not. If there's a way to assess accessibility, let me know.

Yes, one should use color contrast checkers, such as https://webaim.org/resources/contrastchecker/.

@kgryte Yes, but tmk there isn't a way to do that in terminal environments, so I just tried to match the token colors through visual judgement for monokai and solarized themes..

Ideally, themes have full AAA compliance, but this may not always be possible, especially if a theme has many colors. In which case, some colors having AA compliance is okay.

Yes, one should use color contrast checkers, such as https://webaim.org/resources/contrastchecker/.

@kgryte As mentioned in the OP, that's the problem, generic ANSI color names don't have a fixed hex code attached AFAIK, so it depends on the terminal emulator on how they are rendering these colors. On my terminals, the current themes look fine.. but not sure if that's true for other emulators.

Re: background. Yeah, you are correct. Seems no real portable way to do this (e.g., https://unix.stackexchange.com/questions/474502/how-to-set-the-background-color-of-the-linux-console-screen). Up to a user to cycle through themes to determine which looks "best".
On that note, maybe we should add commands for easily cycling through themes: prevTheme() and nextTheme().

After playing around with it locally, seems like we need to figure out the terminal color story more broadly in order to craft accessible themes. The limited ANSI color palette doesn't provide enough range. Apart from some of our stdlib-* themes, the other themes could benefit from more colors.

The sample content would not enough have to be commands which run. Instead, could be something along the lines of
In [1]: themeSample()
// This is comment...
var x = 1;
if ( x > 0 ) {
    console.log( 'foo' );
}
function bar() {
   var o = { 'beep': 'boop' }
}
// ...

where the return value is a template which gets filled in with ANSI escape codes. Meaning, instead of actually executing code, the return value is syntax highlighted, as would be the case if entered as commands.

My suggestion for prevTheme and nextTheme would be for it to set the theme. It would combine (1) finding the next/previous theme and (2) executing settings( 'theme', '<next/prev theme name>' ).

themeSample: should we find something like this worthwhile, I would not combine with the settings command. I'd make it a separate command, as you don't always want to see sample rendered output.

Are you suggesting hex color codes?

Something to that effect. E.g., https://github.com/chalk/chalk/tree/main, https://github.com/termstandard/colors, https://github.com/chalk/supports-color. If a terminal supports additional colors, we should take advantage of this for better theming. This was discussed previously in a prior PR. Ref: https://github.com/stdlib-js/stdlib/pull/2254#discussion_r1610842438

Also, keyboard shortcuts are only a partial solution and will not be guaranteed to be enabled by a user. A command is a lower primitive. A shortcut would ultimately call the command.

@kgryte hex colors would require terminal color detection, so we can downsample the provided hex colors to 16 ANSI colors if the terminal doesn't support 256 colors. I think we can reserve this to a future PR after we move colors to a standalone package and have a package for terminal color detection. What do you think?
Regarding the commands, should I include them in this PR itself?

Yes, I think all the above for future discussion and PRs. If you wouldn't mind creating issues for those tasks, that would be great!


Fix env var name typo, missing S

Oops.
RAILS_MAX_THREAD in puma.rb RAILS_MAX_THREADS in env var. 😂

@veganstraightedge I'm wondering what were the defaults? Also, would it help to enable yjit with a specified number of threads? #3039


RAR: Prefer the .dll extension first when resolving assemblies.

RAR: Reorders the AllowedReferenceAssemblyFileExtensions to place .dll first and .winmd second. Statistically the vast majority of references are to .dll files.
We avoid a large amount of File.Exists checks if we try the .dll first.
Even on a small simple build (30 projects) the difference is noticeable:
.winmd first:
.binlog size: 14,685 KB
"Considered .winmd" messages: 2217
"Considered but it didn't exist": 6151
.dll first:
.binlog size: 14,221 KB
"Considered .winmd" messages: 700
"Considered but it didn't exist": 4634
Reduction in the number of log entries will also indirectly translate in a slight reduction of build times, slight reduction of file system access operations (File.Exists checks). It also declutters the logs.

Fixes https://github.com/microsoft/msbuild/issues/5018

Note: for most builds, just setting this to .dll would be enough. Numbers for just the .dll:
.winmd first:
.binlog size: 14,685 KB
"Considered .winmd" messages: 2217
"Considered but it didn't exist": 6151
.dll first:
.binlog size: 14,221 KB
"Considered .winmd" messages: 700
"Considered but it didn't exist": 4634
Just the .dll:
.binlog size: 13,943 KB
"Considered .winmd" messages: 0
"Considered but it didn't exist": 3234
This is almost halving File.Exists checks during RAR and reducing the log size by 2%. Of course we can't do that in common targets, but this is something to recommend to folks tuning their builds.

Should exe also go before winmd?

I’d argue that people reference .exes just as rarely as .winmd so there’s no discernible difference there.

I wonder if the ordering actually represents some app model loading semantics that nobody knows about anymore, and thus breaking it if changing the order. But, there's only one way to find out :D

We're just changing RAR, what could go wrong?

There's no detail about how critical the reordering is relative to the other work in that changeset.

Sounds like there would be benefit in releasing it and reverting if it breaks something: without a proper comment saying why the order is important, future people will spend time thinking why they can't reorder, or duplicating this very PR. With a concrete failure at hand, at least we can properly document it and spare the future some pain :)

😔
I would be much more comfortable doing something like that if we had a nice way of releasing it to only a small number of customers, so that if it turns out to be a bigger problem than anticipated, fewer people will be mad.

It will break things.

Cool, then we can replace the PR changes with a comment explaining why order matters.

@cdmihai What fun would that be?

Added some reasons it's not easy in https://github.com/microsoft/msbuild/issues/5018#issuecomment-590441271


Consistent Turning

Make the turns consistent!

We want his head to be the pivot point

then use user input to determine the turning degree!!!!!!!!!!!!************

Next step: switch case for each angle

Pushed angles now modifiable can turn in both directions


Update ion_platform_config.h

Fixes #230 by not misusing #ifdef
Issue #, if available: #230
Description of changes:
#ifdef __STDC_VERSION__ >= 201112L might work for some compilers but shouldn't by spec, whereas what C specifications I could find (C99, C0X, and the new C standard) all agree in 6.10.1 that:

After all replacements due to macro expansion and the defined unary operator have been performed, all remaining identifiers are replaced with the pp-number 0, and then each preprocessing token is converted into a token.

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

So one of the Travis builds (GCC-4.9) is failing with errors like this:
In file included from /home/travis/build/amzn/ion-c/ionc/include/ionc/ion.h:29:0,

                 from /home/travis/build/amzn/ion-c/ionc/ion_internal.h:33,

                 from /home/travis/build/amzn/ion-c/ionc/decQuadHelpers.c:17:

/home/travis/build/amzn/ion-c/ionc/include/ionc/ion_int.h:131:1: error: ‘__thread’ before ‘extern’

 THREAD_LOCAL_STORAGE ION_INT_GLOBAL BOOL            g_ion_int_globals_initialized; // NOTE: this is initialized to 0 according to C standard.

I believe that the fix #228 is correct based on:
https://gcc.gnu.org/onlinedocs/gcc-4.9.0/gcc/Thread-Local.html#Thread-Local
https://gcc.gnu.org/onlinedocs/gcc/Thread-Local.html

This removes about 2000 lines of compiler warnings, compare these two builds starting from ~ line 475
old: https://travis-ci.com/github/amzn/ion-c/jobs/491885577
new: https://travis-ci.com/github/amzn/ion-c/jobs/492126856


Create m365bsapi.md

We are launch our M365 Backup Storage APIs to beta. Wanted to create a static page for the launch.

Ready for review.


Reflectivity overrides transparency

Setting both the reflective and transparency attributes of an object to non-zero values causes the object to be rendered without any transparency characteristics. When dealing with a transparent object, set reflectivity to zero.

Problem resulted from an incorrect implementation of recursion limiting for the color_at() function. The reflection component of an object color would be computed, but if the recursion limit was reached while doing so, the transparency component of color would not be calculated. Code now passes the recursion level directly to the four involved functions rather than relying on a global variable. Some speed penalty.


cannot update invalidHandler after initialization

If you update the invalidHandler after initialization, the original event handler will always fire.  This is because of the way that invalidHandler is set up.
This is in jquery.validate:
			if ( this.settings.invalidHandler ) {
				$(this.currentForm).bind("invalid-form.validate", this.settings.invalidHandler);
			}

The way around this is to update the event handler:
            $form.off('invalid-form.validate')
                .on('invalid-form.validate', newInvalidHandler);

I'm sorry for the lack of activity on this issue. Instead of leaving it open any longer, I decided to close old issues without trying to address them, to longer give the false impression that it will get addressed eventually.
To the reporter (or anyone else interested in this issue): If you're affected by the same issue, consider opening a new issue, with a testpage that shows the issue. Even better, try to fix the issue yourself, and improve the project by sending a pull request. This may seem daunting at first, but you'll likely learn some useful skills that you can apply elsewhere as well. And you can help keep this project alive. We've documented how to do these things, too. A patch is worth a thousand issues!


RPi: to use spidev1.0 or other GPIOs

Hi, I want to use the pins 38, 40 in the RPi GPIO(BOARD) for SPI  MOSI and SCLK respectively. (http://pi.gadgetoid.com/pinout/pin40_gpio21)
I m using the /dev/spidev0.0 for other devices.
Or is it possible to use may be two of the GPIO to use the LPD8806 based strip?

Would you mind moving this to the BiblioPixel support forum? We try to keep the github Issues list to actual bugs. I'm looking into the answer for this and will respond on the forum. Thanks!
http://forum.maniacallabs.com/forumdisplay.php?fid=8

Moved to: http://forum.maniacallabs.com/showthread.php?tid=51


Add endpoint to unsubscribe a user on AK

Coverage decreased (-1.6%) to 75.298% when pulling 4f2a61666494d9d43b572775b2dfed1db81ad52c on unsubscribe-user into cce5f493bf6a66304aa488941e6c2796499a7239 on master.


Fix the Markdown files

Fix the Markdown files - README.md and RELEASING.md. Something has changed in GitHub that is not showing the headings (formatted with #) correctly, and displaying literals.

Updated the #heading1 ##heading2 to
heading1
=======

and

heading2
---------

Heading are now rendered correctly when viewing the MD files.


ZSH: COMMAND NOT FOUND: DOTNET

Problem encountered on https://dotnet.microsoft.com/learn/dotnet/hello-world-tutorial/install
Operating System: macos Monterey
Provide details about the problem you're experiencing. Include your operating system version, exact error message, code sample, and anything else that is relevant.
I ran into an issue when completing the installation of .net sdk core, the issue is when I run the command $ dotnet on my macOS Monterey terminal, what I am supposed to get after executing that command I get zsh: command not found: dotnet. I have completed the installation of .net but still have the same issue

Hi @aphilethethinker, have you opened a new terminal to try? There may be path environment variables that get updated.

There seems to be a few other similar issues here on Github and has popped up recently...
https://github.com/dotnet/core/issues/6953

Duplicate of https://github.com/dotnet/sdk/issues/22910


added OpenProject Button

Cc: @clintonstimpson

This is a good start.  A few comments:

This should be enabled only for generators where it makes sense.  For Ninja and Makefile generators there is no IDE to open the project.

Whatever API is added to cmGlobalGenerator to indicate whether the generator supports this could also have a similar method for asking the generator to give us the path to the project file.  That way we don't have to glob for *.sln.

Will this work with Xcode on Mac OS?

The button will be disabled, when no project file will be found
cmGlobalGenerator is only available, if you are configuring your project. If you only select it you can't get any information
I have added Xcode

cmGlobalGenerator is only available, if you are configuring your project. If you only select it you can't get any information

Ah, you need to support the use case that we've just selected an already-generated project and want to open it without re-configuring.  That makes sense.

This does not compile for me.
CMake/Source/QtDialog/CMakeSetupDialog.cxx:516:10: error: no viable conversion from 'bool' to 'QString'
return false;
^~~~~

The opening of an Xcode project doesn't work.
It will if I have this code:
void CMakeSetupDialog::doOpenProject()
{
QString proj = this->getProjectFilename();
QString open_url = QString("file://%1").arg(proj);
QDesktopServices::openURL(open_url);
}
Can you verify that with Visual Studio?  I imagine it will work.
After that fix, I believe this patch can be merged.

sorry, it doesn't.
does this work with Xcode?
void CMakeSetupDialog::doOpenProject()
{
QDesktopServices::openUrl( QUrl::fromLocalFile( this->getProjectFilename() ) );
}

Yes, using QUrl::fromLocalFile() does work with Xcode.

Also, we need a better author name than "ex<EMAIL_ADDRESS> I assume we need a first and last name.
I took your 3 commits, included the QUrl fix, and squashed the commits.
When I tried to submit them, I got an error:
$ git push stage HEAD
...
remote: ----------------------------------------------------------------------
remote: commit b3eeb020 has author name "ex" with no space.  Run
remote:   git config --global user.name 'Your Name'
remote:   git config --global user.email<EMAIL_ADDRESS>remote: before creating commits.
remote: ----------------------------------------------------------------------
remote: error: hook declined to update refs/heads/open-proj
Without a full name, I assume a Suggested-by: field will work.

Applied as commit 1ca2d5d1db5117058e884bcfb226e17e090f29d0.  Thanks1

A problem with this was reported on the CMake mailing list here.

I would suggest to have only one compiler per folder.
Anything else doesn't make sense to me.


Use inplace formatter output

When formatting command is defined with symbol inplace, it doesn't work.
I'm using casey/just (v1.5.0).
It doesn't support formatting of stdin, but it supports in-place formatting with command just --unstable --fmt --justfile /tmp/justfile. So I've added a list to to apheleia-formatters custom variable:
(add-to-list 'apheleia-formatters
             '(just . ("just" "--unstable" "--fmt" "--justfile" inplace))
             "APPEND:non-nil")

Minimal justfile before formatting (there is one space before echo):
rule:
 echo test

Expected formatting result (there are four spaces before echo):
rule:
    echo test

Without this pull request there are no visible changes after C-u M-x apheleia-format-buffer RET just RET. When this pull request is applied, formatting proceed as expected.

Thanks!


[AutoPR cosmos-db/resource-manager] Cosmos DB - POST operation for retrieving read only keys

Created to sync https://github.com/Azure/azure-rest-api-specs/pull/3233

This PR has been merged into https://github.com/Azure/azure-sdk-for-go/pull/2071


Get Pluto Building

Remove the temp fix for importing qa data
Look for the right filename for lock file to set version env vars
fix a bug in qa app - somehow a few months ago while mypy-ing qa, I renamed a function to one that does not exist. 🤷
get a longer term solution to the pg_dumps for the pluto qa stuff. Currently the process during a build is

pull in qa outputs from last build (sql dumps. And by "last build" I mean the published pluto which has version = bash variable VERSION_PREV which is set by a step in the pluto build github action)
import them
append to them (and replace data if there's already data for the current "version" somehow
pg_dump/csv export them, include them in export
Main issue is the pg dumps include the schema, and using the pg_dump cli there's no way to avoid this. Currently added some text processing of the sql file, might make sense to just have this logic rely on csvs instead of sql dumps to really keep things "data only"

Also going to clean up #405

Also ran into an issue where importing qaqc_outliers.sql from last published build had the actual build schema in the pg_dump. Interestingly the other files all had public schema, and they use the exact same machinery around building the tables, dumping them, importing, etc. Going to see if issue stays with this new build or if there was something specifically funky with the last pluto build that caused this

Why the hell did I do this?

Simplified this, dropped the work I was doing around versioning and recipes to get this mergable.

Yeah I'll address that note. Re baking versions in, I was going to fix that in this draft but wanted to get this merged so pluto works on main, hoping to wrap that and other versioning tweaks up this week

Hmm. Currently in pluto, the VERSION_PREV env var comes from the recipe (via lock file), not vice-versa

Going to merge as-is for now and address that in my follow-up


Allow for time varying mortality and fertility

OG-Core should allow mortality and fertility rates to vary by time period.  This will allow, for example, incorporating UN population projections into country-specific calibrations.
The steps to implementing this include:

[ ] make rho (mortality rates) a 2D array (TxS, where T is model time period and S is model age)

The "number_dims": 2 for this parameter in default_parameters.json (NOTE: will also need to do the same with surv_rate, which is just 1-rho)
Update parameters.py to extrapolate if a user enters a 1xS vector (analogous to what is done to Deal with parameters that vary across J and over time)
Update all modules that use rho (this includes SS.py, household.py, aggregates.py, TPI.py and others

NOTE: fert_rates only shows up in the country-specific demographics.py modules - no changes to the substantive code of OG-Core for this.  BUT, the plotting functions, e.g., in parameter_plots.py, need to be updates to handle the new object dimensions for rho and fert_rates (and perhaps add and argument for what period (or range of time periods) one would like to plot these.
cc @prrathi

List of places to update the mortality rate parameter, rho,  in OG-Core:

[ ] household.FOC_savings, line 406: I think this remain the same
[ ] household.FOC_savings, line 456: this equation can probably stay the same
[ ] household.FOC_savings, line 463: this line can probably stay the same
[ ] aggregates.get_BQ, line 193:  if method=SS and preTP=False, then p.rho should become p.rho[-1, :] to pull just the SS mortality rates, if method=SS and preTP=True, then p.rho should become p.rho[0, :]**
[ ] aggregates.get_BQ, lines 203 and 208: p.rho will be TxS so one will just need to make sure this array is reshaped appropriately for the array products that are computed here, which since it is multiplied by pop, which is TxS, may require no change
[ ] parameter_plots.plot_mort_rates, this function will need to have an argument for the year of mortality rates to plot.  Probably best to make this a keyword argument and allow for list of years so one can easily plot how mortality rates are evolving over time.  E.g., the function definition would become plot_mort_rates(p, years=[DEFAULT_START_YEAR], include_title=False, path=None):

There are some other places to change in TPI.py, SS.py, and parameters.py, I will add these to this Issue at a later point.
cc @harisjoshi

After the above changes, we may want to add something to parameters.py that reshape constant mortality rates (i.e., a vector of length S) into a TxS arrays.

Professor DeBacker,
I hope you’re doing good. Not a high priority email but just wanted to let you know that I made the changes to p.rho parameter. I’m not sure if I published it correctly to the mortrates branch but it does seem like it has been updated on github.
Best,
Hari
From: Jason DeBacker @.>
Date: Monday, June 19, 2023 at 8:36 PM
To: PSLmodels/OG-Core @.>
Cc: Joshi, Hari @.>, Mention @.>
Subject: Re: [PSLmodels/OG-Core] Allow for time varying mortality and fertility (Issue #859)
List of places to update the mortality rate parameter, rho, in OG-Core:

household.FOC_savings, line 406: I think this remain the same
household.FOC_savings, line 456: this equation can probably stay the same
household.FOC_savings, line 463: this line can probably stay the same
aggregates.get_BQ, line 193: if method=SS and preTP=False, then p.rho should become p.rho[-1, :] to pull just the SS mortality rates, if method=SS and preTP=True, then p.rho should become p.rho[0, :]**
aggregates.get_BQ, lines 203 and 208: p.rho will be TxS so one will just need to make sure this array is reshaped appropriately for the array products that are computed here, which since it is multiplied by pop, which is TxS, may require no change
parameter_plots.plot_mort_rates, this function will need to have an argument for the year of mortality rates to plot. Probably best to make this a keyword argument and allow for list of years so one can easily plot how mortality rates are evolving over time. E.g., the function definition would become plot_mort_rates(p, years=[DEFAULT_START_YEAR], include_title=False, path=None):

There are some other places to change in TPI.py, SS.py, and parameters.py, I will add these to this Issue at a later point.
cc @harisjoshihttps://github.com/harisjoshi
—
Reply to this email directly, view it on GitHubhttps://github.com/PSLmodels/OG-Core/issues/859#issuecomment-1597912377, or unsubscribehttps://github.com/notifications/unsubscribe-auth/BASS6D6PNWDBAHUTIF35DR3XMDWB7ANCNFSM6AAAAAAVWZAEMQ.
You are receiving this because you were mentioned.Message ID: @.***>

@harisjoshi I don't see your latest changes pushed to the harisjoshi:mortrates branch.  Can you double check that you committed and pushed these?

@jdebacker I just committed and pushed the latest changes to the mortrates branch, they should be available to see. Apologies for the confusion.

@harisjoshi Your latest changes look great!  I think the next step is to update parameters.py.  I will follow up with details about that.

Resolved with PR #871


[Avatar] Fix alt align

Hi!
Sometimes src resource could be broken and image does not show. It's pretty good to have fallback to some initials in this case.
<Avatar src="/404.image.jpg" alt="KV" />

I can make it with alt attribute. But it has alignment problem:

This PR fixes it. So it looks like this:

I have approved the Argos-CI diff:

@mctep Thank you!


Unable to find editorconfig executable.  Styles will not be applied.

How to solve it?waiting online ,thanks

How about read some documentation first? https://github.com/xiaohanyu/oh-my-emacs/blob/master/core/ome-basic.org#editorconfig

The problem will be solved after you  install the editorconfig. see instruction on http://editorconfig.org/.


Archived Collectives should not appear in search results

This Collective is archived but still turning up in search results: https://opencollective.com/symfony-diversity-speaker-mentoring
I assume that means others are too. They should not be appearing in search.

Our search index is managed on Algolia. The script used to populate the index is https://github.com/opencollective/opencollective-api/blob/master/cron/daily/populate_search_index.js

A $100 bounty was attached to this issue. Anyone submitting a Pull Request will be rewarded with $100 when the Pull Request is reviewed, accepted and merged. More info

Hi @znarf
Had time to kick in

Thank you @EugeneHlushko ! It's merged.
To claim the bounty, you can:
a) submit an invoice to https://opencollective.com/engineering
b) or ask for an Open Collective gift card of the same value (to donate to other collectives)

Hi, Thanks man! Very overwhelmed to finish the other one :(


remove remaining legacy children menu items

What does this PR do and why?
Provide a description of what this PR does. Link to any relevant GitHub issues, Notion tasks or Discord discussions.
Screenshots or screen recordings
If applicable, provide screenshots or screen recordings to demonstrate the changes.
Acceptance checklist

[ ] I have evaluated the Approval Guidelines for this PR.
[ ] I have tested this PR in all supported browsers.
[ ] I have tested this PR in dark mode and light mode (if applicable).

Current dependencies on/for this PR:

main

PR #2233

PR #2234

PR #2235   👈

This comment was auto-generated by Graphite.

Graphite Merge Job
Current status: ⏳ Queued to merge
This pull request is currently queued to be merged as part of a stack.
This comment was auto-generated by Graphite.

Job Reference: QYaAht6eMvR7hTnqghel


firebase development database is not working firebase credentials

we have prod/dev database for the app now.
When we use dev firebase credentials (googleSerivce.json/GoogleService-Info.plist), authentication (login/register) is not working now.

Was it ever working? When did it stop working?

Was it ever working? When did it stop working?

I am not sure.
Btw, @TreeMama and I got an issue when we help to run the iOS project for another person.
So made this ticket.

Build error or runtime error? What's the error message? Building what Xcode Target? Device or Simulator?

No, everything is ok.
Build iOS project successfully.
But when he wants to register a new account or login in there, it doesn't work (in that case, we used development mode credentials ).
So When we change it to the prod version, it works.


Subresources saving without NOTIFICATION_EDITOR_PRE_SAVE firing

Tested versions
v4.3.stable.official [77dcf97d8] (also was occurring on 4.2 stable)
System information
Godot v4.3.stable - Windows 10.0.19045 - Vulkan (Mobile) - dedicated AMD Radeon RX 6600 (Advanced Micro Devices, Inc.; 31.0.12027.9001) - AMD Ryzen 5 3600 6-Core Processor (12 Threads)
Issue description
A node which modifies a sub-resource of a resource, for purposes of a tool script, fails to run NOTIFICATION_PRE_SAVE on the node before saving changes to the subresource, when saving a DIFFERENT scene in the editor.
Either the NOTIFICATION_PRE_SAVE/NOTIFICATION_POST_SAVE should fire for the node, or the changes to the subresource should not be saved (since no node using that resource or subresource is being saved?)
The actual issue here is that I have a shader which adjusts a texture size based on a tilemap; the size differs from scene to scene, but saving any of the scenes that uses this, appropriately resizes the texture to 1024x1024 in the PRE_SAVE notification - but when saving literally any other scene, I end up with some random other values in my git changes that I need to avoid accidentally committing. (The entire point of the PRE_SAVE here was to prevent any git changes to that...)
Steps to reproduce
Have a tool script node that uses NOTIFICATION_EDITOR_PRE_SAVE, making a modification to a sub-resource of a resource of the node; and then modifies it again in NOTIFICATION_EDITOR_POST_SAVE or somewhere else (point being, the value while the editor is open, is different from the value on disk, as the value is always changed immediately before saving to disk).
With that scene open, save a different scene. NOTIFICATION_EDITOR_PRE_SAVE does not fire, but any changes to the sub-resource ARE saved, thus saving the value that is intended to never be saved.
Minimal reproduction project (MRP)
mrp_presave.zip
With both presave_example.tscn and random_other_scene.tscn open in the editor, note the behavior when saving.

With presave_example.tscn as the active scene, saving does as expected; the PRE_ and POST_ save events fire, and dummy.tres reads width = 50 on the NoiseTexture2D as intended.
With random_other_scene.tscn as the active scene, saving does NOT fire the PRE_ and POST_ save events for presave_example.tscn, but the changes to dummy.tres (which is only used by presave_example.tscn, and is not at all used by random_other_scene.tscn, are saved anyway, thus saving width = 200 to the NoiseTexture2D in dummy.tres.
Additionally, note that if presave_example.tscn is not open at all, saving random_other_scene.tscn does NOT cause this behavior. It appears to me as though it is saving the resources used by all open scenes, instead of only the scene(s) being saved.

I am having trouble even getting the editor to run the hooks at all. I copied the code, created a fresh scene in my project, and pasted it into a script, removing the functions. The notification never hits the node on save, whether I am focused on the scene or not.

This is irritating, as I have sprites randomly jiggling, and I want them to always save with rotation 0.0 to not mess with git
The editor also crashes when I turn on "Save on Focus Lost" and change focus, not sure if it's related.

I downloaded the save, and somehow the notifications worked: although, with the issues described by OP.
I am using Godot 4.2.2 nix package with x86_64 Linux 6.6.52 NixOS, 24.05 (Uakari), 24.05.5366.fbca5e745367, 11th Gen Intel® Core™ i3-1115G4 @ 3.00GHz and integrated graphics :cry:
I am also using rust gdext
This is my project:
https://github.com/donottellmetonottellyou/Kindergarten-Word-Finder

I think I may have run into the same issue. In my case, I'm resetting some values in a custom node before the scene is saved. In the scene that is selected in the editor the notifications work correctly, but the editor also saves other open scenes even when pressing Ctrl-S (Save Scene), and the save notifications don't trigger on those other open scenes.
This might be actually two issues:

Action "Save Scene" saves all scenes, making "Save All Scenes" redundant. Or am I missing something?
Pre/post save notifications aren't sent to nodes in scenes other than the current selected scene in the editor.


Applying via Mobile with Dropbox or Box or Google Drive or iDrive

Current behavior
Currently with the Career Portal, iPhone users can not apply using Mobile. It actually tells iPhone users to email a link to themselves in order to complete the online application from a desktop. Is there a plan to integrate Dropbox or Box or Google Drive or iDrive or other in order for mobile applicants to apply using their resume.
Expected behavior
When a mobile iPhone user applies it should give them the option to attach/upload their resume.
Steps to replicate behavior

From an iPhone go to the career portal and attempt to apply to a job and you will see that there is no option to apply.

Hey, @larryhemley—
This behavior is explained at length here.
tl;dr: iOS Safari has a security setting that makes our client-side LinkedIn integration not work and a solution to this problem requires a significant change in architecture.
I'm going to close this issue, but feel free to comment questions.

Update From LinkedIn
We've received an update from the LinkedIn development team that they are aware of the iOS Safari issue and are planning to develop a new version of their Apply With LinkedIn API. We will continue to provide updates as we receive them as well as provide information regarding how that will influence our roadmap.


Edge labels getting overlapped

Describe the Bug
We have used this library in our application for connecting two edges. Theres's an issue that we have noticed that the edge labels are getting overlapped one over the other as we have lot of nodes connecting each other.
Minimal Example
https://codesandbox.io/s/edge-overlapping-32omg0?file=/src/Flow.js
Steps to Reproduce the Bug or Issue
Go to the code sandbox, we can see the edge labels getting overlapped on each other.
Expected behavior
As a user, we would like the edges not getting overlapped and should be drawn in such a way that both the labels should be displayed properly.
Is there any way we can achieve this by providing or customising the props, that also would be much helpful for us.
Screenshots or Videos

Platform

OS: macOS, Windows, Linux
Browser: Chrome, Safari, Firefox

Additional context
No response

Hey @NithishG ! This isn't an issue that's exclusive to react-flow-smart-edge, this would happen with any edge by default. As proof, I've edited your example to use React Flow's StepEdge instead and was also able to reproduce overlapping labels:
https://codesandbox.io/s/edge-overlapping-counter-example-lbfiq2?file=/src/Flow.js

The built-in smart edges by default will render labels as text roughly in the middle of the drawn line. If you want more control over when, where and how they are rendered, you'll need to use the getSmartEdge custom hook and build your own edge component. There's the smart edge with button example from this repo, and the Edge Label Renderer example from React Flow that should help you get started.

This issue is related to this feature request: https://github.com/tisoap/react-flow-smart-edge/issues/25


Delay in Arrow, Rectangle and Text to be removed

Describe the bug
Delay in Arrow, Rectangle and Text field should be removed.
@satu0king can tell better on the other elements that don't require this.
Screenshots

@nitin10s can I work on it? @satu0king please let me know which elements do not require these labels.


JSON字符串和文件合法性校验

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

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

Codecov Report

Merging #2563 into master will decrease coverage by 0.03%.
The diff coverage is n/a.

@@             Coverage Diff              @@
##             master    #2563      +/-   ##
============================================
- Coverage     81.55%   81.51%   -0.04%
+ Complexity     7045     7042       -3
============================================
  Files           143      143
  Lines         26225    26225
  Branches       6274     6274
============================================
- Hits          21388    21378      -10
- Misses         3038     3045       +7
- Partials       1799     1802       +3

Impacted Files
Coverage Δ
Complexity Δ

...com/alibaba/fastjson/serializer/SerialContext.java
72.91% <0%> (-4.17%)
19% <0%> (ø)

...ava/com/alibaba/fastjson/serializer/DateCodec.java
88.23% <0%> (-3.27%)
37% <0%> (-1%)

...com/alibaba/fastjson/parser/JSONReaderScanner.java
72.61% <0%> (-1.28%)
44% <0%> (-1%)

...ava/com/alibaba/fastjson/parser/JSONLexerBase.java
71.25% <0%> (-0.04%)
807% <0%> (-1%)

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update be41b36...c6a21fa. Read the comment docs.


Composer create project doesn't work

composer create-project nenad/yii2-basic-template basic
Installing nenad/yii2-basic-template (2.3.0)
  - Installing nenad/yii2-basic-template (2.3.0)
    Loading from cache

Created project in projektni
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - yiisoft/yii2 2.0.8 requires bower-asset/jquery 2.2.*@stable | 2.1.*@stable | 1.11.*@stable -> no matching package found.
    - yiisoft/yii2 2.0.7 requires bower-asset/jquery 2.2.*@stable | 2.1.*@stable | 1.11.*@stable -> no matching package found.
    - yiisoft/yii2 2.0.6 requires bower-asset/jquery 2.1.*@stable | 1.11.*@stable -> no matching package found.
    - yiisoft/yii2 2.0.5 requires bower-asset/jquery 2.1.*@stable | 1.11.*@stable -> no matching package found.
    - yiisoft/yii2 2.0.4 requires bower-asset/jquery 2.1.*@stable | 1.11.*@stable -> no matching package found.
    - yiisoft/yii2 2.0.3 requires bower-asset/jquery 2.1.*@stable | 1.11.*@stable -> no matching package found.
    - yiisoft/yii2 2.0.2 requires bower-asset/jquery 2.1.*@stable | 1.11.*@stable -> no matching package found.
    - yiisoft/yii2 2.0.1 requires bower-asset/jquery 2.1.*@stable | 1.11.*@stable -> no matching package found.
    - yiisoft/yii2 2.0.0 requires bower-asset/jquery 2.1.*@stable | 1.11.*@stable -> no matching package found.
    - Installation request for yiisoft/yii2 * -> satisfiable by yiisoft/yii2[2.0.0, 2.0.1, 2.0.2, 2.0.3, 2.0.4, 2.0.5, 2.0.6, 2.0.7, 2.0.8].

Potential causes:
 - A typo in the package name
 - The package is not available in a stable-enough version according to your minimum-stability setting
   see <https://getcomposer.org/doc/04-schema.md#minimum-stability> for more details.

Read <https://getcomposer.org/doc/articles/troubleshooting.md> for further common problems.

composer global require "fxp/composer-asset-plugin:^1.0"
fixes the problem, sorry.


Ddw 1014 trigger appropriate query based on input analysis

This PR implements the search UX as good as currently possible:

Query length > 15 = either block or transaction ID: Fetch both and check the results + redirect to the corresponding search result page.

Query is integer: The epoch vs. block number problem was solved in the same way but not perfectly: if you enter a number where an epoch AND block exists it currently prefers the epoch although we need to ask the user in the end.

Storybook failure, indicating the components are not cleanly isolated from the app logic


Bug: Non Translatable Medias are not displayed on reload, but saved in the database.

I have the following setup: My Twill instance supports both German (de) and English (en), with German being the default language.
When I create the following non-translatable media field:
@formField('medias', [
  'name' => 'myImage',
  'label' => 'My Image',
  'required' => true,
  'translated' => false,
])

I am able to add an image and save it. It will also be saved in the database, but under the locale en.
If I reload the page the image is not displayed any more. It seems that the mediaKey variable inside the MediaField.vue is prioritizing the locale en, instead of the default locale: de.

I can take a closer look into the problem in the next couple of days and potentially open a PR regarding this issue.

One potential fix would be to save the images under the current default language (in my case de). This would, however, cause a problem, when changing the default language.
A better fix would be to deprecate using a locale all together, or defining a placeholder locale, that doesn't/couldn't exist.

Duplicate of #483.

Same issue here.
I bypass it by using : 'translated' => false, in the @formField

Another bug related to the translated medias is that the Notes and FieldNotes don't appear when the media formField is set on 'translated' => true.

@ConstantMath the bypass sadly doesn't work if the model, it is being saved to, is non translatable by default.

Thanks for reporting this bug. I will close it as it's a duplicate of #483.


After using SDWebImage library application rejected from app store

Hi all
I am using SDWebImage library (4.4.0) in Xamarin tvOS project and it is working fine and when I  uploaded my application on App Store then App Store rejected my application and gives the error ITMS-90496: Invalid Executable - The executable 'XYZ.tvOS.app/XYZ.tvOS' does not contain bitcode .
Please look into it. What is the main issue in this library? Why I am not able to deploy my application on the App Store after using this library in Xamarin tvOS.

@rishabh14augshukla We are working on an update to SDWebImage 5.0.2 which should contain the relavant bitcode #589

@newky2k Please let me know when you are going to launch SDWebImage 5.0.2 library. or meanwhile do you have any solution for me.

@rishabh14augshukla  i'm working on it ATM but there are some big differences to the previous version  so the build needs some tweaking.

@newky2k Can you please tell me when you are going to launch a new library version (5.0.2 or etc).
Currently, in Xamarin the latest version of the library is 4.4

@rishabh14augshukla  The new 5.x version of SDWebImage is substantially different, so I've gone back and checked the .a files included in the current tvos dll and both of them include bitcode.
It turns out that SDWebImage include tvOS support and bitcode in October 2015

@newky2k When I use SDWebImage library in Xamarin tvOS then it is working fine. There is no issue of the working but when I uploaded my build on app store then it gives me an error message "ITMS-90496: Invalid Executable - The executable 'XYZ.tvOS.app/XYZ.tvOS' does not contain bitcode ."
If I remove this library then app store is accepting my build.
Please tell me if I am doing wrong anything.

@rishabh14augshukla  ok let me try and replicate it and go from there.  What options are you using to publish and sign the archive?  are you doing it from Visual Studio on the mac?

@newky2k I am using Xamarin tvOS and using the Visual Studio(2017) on the mac. To create .ipa file, I am using the archive option. With the help of archive, I am creating a .ipa file.
That .ipa file I am uploading on the app store using Application Loader.
Please let me know if you need anything from the end. Please provide a solution.

@newky2k  Also I notice one thing when I do not use this library then .ipa size is around 450 MB and after using this library size is also reducing like 25 - 30 MB.
If possible then we can connect also for more details.

@newky2k Please reply on it.

@rishabh14augshukla I'm looking into this for you still, its odd that it becomes smaller after you add it, which seems to suggest that something is being removed

@newky2k Did you get a chance to look at it? Please help me out.

@newky2k Please reply on it.

@rishabh14augshukla  Sorry but i have been unable to find the cause of this issue.

@newky2k  If you want then Can we connect ?

@rishabh14augshukla I'll continue the thread on #593 as it seems to be a duplicate of this. Best!


"Collection was modified" exception

Getting this exception when disposing a stream that was retrieved from the recyclable memory stream manager, in the context of about 100 parallel threads
Version: 2.1.1
Stack trace:
System.InvalidOperationException: Collection was modified; enumeration operation may not execute.
  at System.Collections.Generic.List`1.Enumerator.MoveNextRare()
  at Microsoft.IO.RecyclableMemoryStreamManager.ReturnBlocks(ICollection`1 blocks, Guid id, String tag) in /_/src/RecyclableMemoryStreamManager.cs:568
  at Microsoft.IO.RecyclableMemoryStream.Dispose(Boolean disposing) in /_/src/RecyclableMemoryStream.cs:357

You likely have two threads trying to dispose of the same stream simultaneously. That is not something supported by the library. Per-Stream APIs are inherently not thread-safe.
Can you verify this by logging each stream's Id property before you dispose it?

@benmwatson The code using the stream is async; is that not allowed?
i.e.
async Task<T> InsertSomethingAsync(T item)
{
            using var ms = MyStreamManager.GetStream();
            using (var sw = new Utf8JsonWriter(ms))
                JsonSerializer.Serialize(sw, item, JsonExtensions.JsonOptions);

            ms.Position = 0;

            using var response = await Container.UpsertItemStreamAsync(ms,
                new (partitionKey),
                DefaultRequestOptions);

            response.EnsureSuccessStatusCode();

            return item;
}

I don't know what's happening in Container.UpsertItemStreamAsync, so it's hard to say if this is valid. You can certainly use RMS in async code--you just can't manipulate the stream from multiple threads simultaneously.
The stack above is missing who is calling Dispose. The code example also doesn't explicitly dispose of the stream. It might be implicitly disposed by Ut8JsonWriter--you'd have to look and see if disposing that writer disposes the underlying stream. That's a common pattern. But if it were disposed by Utf8JsonWriter, then you wouldn't be able to set the Position or otherwise access it after disposal. So that's probably fine.
But from the stack it looks like that while it's disposing the stream, some other thread came along and changed the size of the stream.
You should be able to debug this using the ETW events to log the various operations and see which ones are unexpected.

@benmwatson Utf8JsonWriter doesn't dispose, and "using var stream" syntax will dispose when it goes out of scope. UpsertItemAsync is using Microsoft Cosmos SDK.
https://github.com/Azure/azure-cosmos-dotnet-v3/blob/56aa5338d44ffd19ce61b264b24dd16d46df6477/Microsoft.Azure.Cosmos/src/Resource/Container/ContainerInlineCore.cs#L210
You say the stream API is inherently not threadsafe, so perhaps the blame is with azure-cosmos-dotnet-v3.
I've worked around the issue by completely removing this library and providing the method with a 'new MemoryStream()'.

Sorry, I completely ignored the using var ms line--that could definitely be the problem. Could you try explicitly expanding the scope of ms's using statement like this:
using var ms = MyStreamManager.GetStream();
            using (var sw = new Utf8JsonWriter(ms))
{
                JsonSerializer.Serialize(sw, item, JsonExtensions.JsonOptions);

            ms.Position = 0;

            using var response = await Container.UpsertItemStreamAsync(ms,
                new (partitionKey),
                DefaultRequestOptions);

            response.EnsureSuccessStatusCode();

            return item;
}

@onionhammer Were you able to figure out how the simultaneous access was occurring?

@benmwatson Nope. The cosmos team basically said

The Cosmos DB SDK is thread safe and does operations concurrently. It does not matter if AllowBulkExection is enabled or disabled. Having it enabled just causes this scenario to appear more frequently. The memory stream pool library needs to be thread safe or it will result in these type of exception. From my understanding RecyclableMemoryStream is not thread safe.

Ok, I don't know what to say. It's just fundamentally not allowed to manipulate the stream in more than one thread at a time. It's pretty baked into the design of this library. I suspect it works for regular MemoryStream because Dispose doesn't really do anything.

Closing because this does not appear to be an issues with RMS per se, but only in how it is used.


⚠ Thumbnails API Endpoint has degraded performance

In f805c50, Thumbnails API Endpoint (https://thumbnails.roblox.com/v1/assets?assetIds=82738847&format=Png&isCircular=false&size=30x30) experienced degraded performance:

HTTP code: 200
Response time: 5155 ms

Resolved: Thumbnails API Endpoint performance has improved in d86c5a2 after 9 minutes.


AppImage Version 2.6.1 does not start

AppImage version 2.6.1 will not start at all. I'm using Fedora Silverblue 40.
I had to revert back to the AppImage version 2.4 and it works fine.

I'm experiencing a similar issue. With scrcpy version 2.5, everything works perfectly on both my Nova 3 Color (running Android 10) and my Xiaomi 9 (also on Android 10). However, after updating to scrcpy version 2.6, only the Xiaomi device continues to work properly, while the Nova 3 is no longer functional with the new version.

Does it work if you install manually (not the AppImage version)?

I’m experiencing the issue with the official Arch Linux package from the extra/scrcpy repository, which is built directly from your source.

What is the full output in the console?

Full console output for version 2.6-1
$ scrcpy -V debug --select-usb
scrcpy 2.6.1 <https://github.com/Genymobile/scrcpy>
INFO: ADB device found:
INFO:     -->   (usb)  82A7D4A8                        device  Nova3Color
INFO:         (tcpip)  <IP_ADDRESS>:5555               device  Nova3Color
DEBUG: Device serial: 82A7D4A8
DEBUG: Using server: /usr/share/scrcpy/scrcpy-server
/usr/share/scrcpy/scrcpy-server: 1 file pushed, 0 skipped. 224.9 MB/s (71112 bytes in 0.000s)
[server] INFO: Device: [ONYX] ONYX Nova3Color (Android 10)
[server] DEBUG: Could not get system context: null
[server] WARN: Audio disabled: it is not supported before Android 11
[server] DEBUG: Audio encoder stopped
DEBUG: Server connected
DEBUG: Starting controller thread
DEBUG: Starting receiver thread
DEBUG: Using icon: /usr/share/icons/hicolor/256x256/apps/scrcpy.png
[server] DEBUG: Using video encoder: 'OMX.qcom.video.encoder.avc'
[server] DEBUG: Display: using SurfaceControl API
INFO: Renderer: opengl
INFO: OpenGL version: 4.3 (Compatibility Profile) Mesa 24.2.1-arch1.1
INFO: Trilinear filtering enabled
DEBUG: Demuxer 'video': starting thread
DEBUG: Demuxer 'audio': starting thread
WARN: Demuxer 'audio': stream explicitly disabled by the device
INFO: Texture: 1400x1872

It stalls at this point, and the scrcpy window doesn't load.

Full console output for version 2.5```
$ scrcpy -V debug --select-usb
scrcpy 2.5 https://github.com/Genymobile/scrcpy
INFO: ADB device found:
INFO:     -->   (usb)  82A7D4A8                        device  Nova3Color
DEBUG: Device serial: 82A7D4A8
DEBUG: Using server: /usr/share/scrcpy/scrcpy-server
/usr/share/scrcpy/scrcpy-server: 1 file pushed, 0 skipped. 166.8 MB/s (69624 bytes in 0.000s)
[server] INFO: Device: [ONYX] ONYX Nova3Color (Android 10)
[server] WARN: Audio disabled: it is not supported before Android 11
[server] DEBUG: Audio encoder stopped
DEBUG: Server connected
DEBUG: Starting controller thread
DEBUG: Starting receiver thread
DEBUG: Using icon: /usr/share/icons/hicolor/256x256/apps/scrcpy.png
[server] DEBUG: Using video encoder: 'OMX.qcom.video.encoder.avc'
INFO: Renderer: opengl
INFO: OpenGL version: 4.3 (Compatibility Profile) Mesa 24.2.1-arch1.1
INFO: Trilinear filtering enabled
DEBUG: Demuxer 'video': starting thread
DEBUG: Demuxer 'audio': starting thread
WARN: Demuxer 'audio': stream explicitly disabled by the device
INFO: Texture: 1400x1872
[server] DEBUG: Display: using SurfaceControl API

https://github.com/Genymobile/scrcpy/issues/5182#issuecomment-2295389574

I wish to report that the AppImage based on scrcpy v2.7 still does not work with my Samsung Galaxy S24.


Major makeover and implementation as a module

Wanted to adjust some things and went a bit overboard with it...
Anyhow, a significant makeover:

Render both text and html from templates
Prepare the code itself to be used as a library
Simple preparation for using stuff within a Docker container
Example usage of the library

@joostverdoorn

Epic! LGTM :+1:


relativeTime styleable output

How do you configure momentjs to output something that would look like this:

I thought maybe changing the l18 file to something like:
relativeTime : {
      future : "in <sometag>%s</sometag>",
      past : "<sometag>%s</sometag> ago",
      s : "a few seconds",
      m : "a minute",
      mm : "<sometag>%d</sometag> minutes",
      h : "an hour",
      hh : "<sometag>%d</sometag> hours",
      d : "a day",
      dd : "<sometag>%d</sometag> days",
      M : "a month",
      MM : "<sometag>%d</sometag> months",
      y : "a year",
      yy : "<sometag>%d</sometag> years"
  }

But that is not the way as they get html notation encoded..

Closing since this is years old at this point. If you need anything fell free to let us know!


No way to list subsequent organizers

I see that you can get info on the main organizer, but what about other members that are organizers? Can that be included into the API?

hi @model3volution,
Try the group profile list API, with the role=leads parameter.


docs: Typos in GSoC 2021 Contribution Guide

While exploring the dffml GSoC guide, I encountered some minor typos in the content. I can fix all of them.
Can any mentor/collaborator assign me this issue so that I can make the PR for the same?

Hey @kaustubhgupta  !
I am not a mentor but I guess I can answer your question.
Please see Guidelines here .
As a rule we don't ask if we can do something, we state our intention to try to do it, then follow those guidelines.

Oh, okay. I am working on this issue.


error_chain + tokio_proto?

Hey, I was wondering if it is possible to use error_chain with tokio_proto... It looks like std::io::Error is hard-coded in a lot of places.
For example, I was working through the tutorial, and I had this code (with the compile error mentioned at the bottom of that gist).
The problem is that even though my Error type is From<std::io::Error>, ServerProto requires std::io::Error itself, so their is a type mismatch. Interestingly, the streaming ServerProto does appear to have a From<std::io::Error> bound...

Bump, I think I'm hitting the same problem in ClientProto.

I never ended up finding a solution... and then I got busy and forgot...


[DOC] Add missing session kind in documentation

What changes were proposed in this pull request?
Add missing session kind in documentation.
How was this patch tested?
no need to test

LGTM, failure due to jacoco flakiness, merging to master.


[Feat]: Implement the three.js Shirt model In customiser page

Is your feature request related to a problem? Please describe.
Implement the Three.js Model
Describe the solution you'd like

Describe alternatives you've considered
No response
Additional context
No response
Code of Conduct

[X] I agree to follow this project's Code of Conduct

@amanjaiman1  assigned me under gssoc


Chatbot stream return if off by one job/command

I was about to start developing something on my own (not a generic solution like yours) when I discovered this great project..love it! slackcat is also really cool!
I have one small issue though: The job’s/command’s output is off by one (running on EC2 Debian with docker-compose and the actions from the example:
hacfi: @devbot: echo stuff for me
hacfi: @devbot: count 5
devbotBOT: `[e5838702]Job initiated by hacfi`
devbotBOT: `[e5838702]stuff for me`
hacfi: @devbot: echo ping
devbotBOT: `[a8638796]Job initiated by hacfi`
devbotBOT: `[a8638796]{1..10} 5`
hacfi: @devbot: echo pong
devbotBOT: `[75cb72cc]Job initiated by hacfi`
devbotBOT: `[75cb72cc]ping`

When I check the web ui the logs match the command’s output. Also works fine if I create a job there.
Is this a known issue? How can I help to fix it?
Btw: http://multivac.vektor.nyc/config.html has a small typo at actions -> echo: chatbot_strem => chatbot_stream

Glad you like it :)
I haven't come across this issue myself; does the issue persist after restarting mulitvac? I'll try to replicate it today.
Thanks for the heads up on the typo, fixed!

@bcicen Yep, I could try running it on my macbook with ngrok. If you can’t reproduce it I can give you access to the host if you have time for that. Is there anything else I could try? Seems to be like a race condition or so..the log output looked fine.

@hacfi I was able to reproduce the behavior. After a bit of digging, it turns out this was due to a race condition caused by running the incoming message loop in the same thread pool as the workers streaming the output back to Slack. Oddly, this hadn't been an issue when using earlier Python3 versions.
I've pushed a fix since; would you mind pulling the latest images and confirming the output is in sync?

@bcicen Thank you so much..works like a charm!! Would have taken me ages to figure this out!


Fix text direction nullability

See https://github.com/flutter/flutter/pull/111493#discussion_r970021924

test-exempt: api change with no logic change


Add an option to process the queue immediately after adding jobs.

We make a non-blocking GET request to admin-post.php to trigger the queue processing in the background. WIP as I need to replace this GET request with a POST and a nonce check.
Closes #794.

Implemented the proper security checks.


Websocket

How to use websocket method?
attachWebsocket?
How to link canvas in websocket?

attachWebsocket will call 'onopen' function. HTML5 supports websocket. You could check out this https://www.w3.org/TR/2011/WD-websockets-20110929/
websocket can not link canvas.In this porject, video tag is related to MediaSource.


Gracefully handle 127 exit code (not found) from rbenv / pyenv shims

As discussed in #246 (here), when shims from rbenv or pyenv (or possibly other *env managers) are in your path, neomake will see and call all checkers, but some might fail with exit code 127.
Say I'm using python and have pep8 in environment A and pylint in environment B. Then there will be a shim for each in ~/.pyenv/shims, but if I run pep8 while B is active, the command will exit with code 127 (command not found).
With the shims location in your path, Neomake "sees" both pep8 and pylint and will try to run both, but one will always "fail" with 127.
Thus, it would be nice if Neomake caught the 127 exit code and ignored / suppressed it.

Agreed.  I think we should ignore all makers in the future that have returned 127 once - instead of e.g. calling them all with --version or --help to check for this.
Probably also with explicitly enabled makers (let g:neomake_python_enabled_makers) then?
We'll log a warning and then it is not being considered later again.

Well, fish -n also exits with 127 in case of errors.. :/
(just tested https://github.com/neomake/neomake/pull/429)

Btw: Vim-async uses 122 in case it cannot start/find a program, which Neovim reports directly.


(do not merge- WIP) fix: migration from docker to containerd - ubuntu

What this PR does / why we need it:
Which issue(s) this PR fixes:
Fixes # 60835
Special notes for your reviewer:
Follow up fix to try to sorted out the bad side effect to broken the migration from docker to containerd
Steps to reproduce
Does this PR introduce a user-facing change?
NONE
Does this PR require documentation?
NONE

It was a test and we can close thie one now


Slow speed

PS C:\> uvd https://www.youtube.com/watch?v=2ika8sgp1X8
[uvd] youtube
[info] video id: 2ika8sgp1X8
[info] title: Gob Is Steve Holt's....Dad?
[info] stream: 2ika8sgp1X8-137.mp4
[info] itag: 137
[info] size: 63.627 MiB
[info] quality: 1080p
[info] mime: video/mp4
[info] codec: avc1.640028
> size: 63.627 MiB speed: 687.5 KiB/s eta: 1 minute and 23 seconds

with other tools, I get ten times the speed:
PS C:\> youtube -a https://www.youtube.com/watch?v=2ika8sgp1X8
POST https://www.youtube.com/youtubei/v1/player
Status: OK
GET https://rr4---sn-q4fl6nz7.googlevideo.com/videoplayback?expire=1649389347&ei=w1pPYtDbNeWpir4PwMW_YA&ip=<IP_ADDRESS>&id=o-AM0QGsozQXAUOOD9xkXVzpMnencU8vrlhUPUs1Lo-oay&itag=247&source=youtube&requiressl=yes&mh=zY&mm=31%2C29&mn=sn-q4fl6nz7%2Csn-q4flrnlz&ms=au%2Crdu&mv=m&mvi=4&pl=16&initcwndbps=3027500&vprv=1&mime=video%2Fwebm&gir=yes&clen=20467779&dur=189.689&lmt=1649361646170726&mt=1649367421&fvip=4&keepalive=yes&fexp=24001373%2C24007246&c=ANDROID&txp=6310224&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&sig=AOq0QJ8wRgIhALuri0lQqmYnUvW1Q9oGJ_orDAveSNubvvt7wV00Sb99AiEAnY6FNN3_QELxR3XoRS3tJ08MXrLcPAXG5p3rUXL_wqU%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRQIhALPLXtt_dfGZilshOaah-AnrQAvlFbO6aI4wMi71nj-BAiA0Sps23lLS0znLLLBTwycLoIosGBmg_qE6ANNaAjQUJw%3D%3D
48.9%   10.000 MB       7.804 MB/s
97.7%   20.000 MB       7.746 MB/s

Yeah I noticed that and was looking into it yesterday. Even though the n-transforms are correct, Youtube allocates bandwidth based on the size (quality) of the resource. 4k > 1080p > audio. So in a sense those speeds are normal as that is what you would be getting if you were watching the video through Youtube. That being said, as you pointed out higher speeds are achievable. I noticed that yt-dlp seems to get around this by making partial content requests but for the entire resource. I don't know if this is a loophole or what but it seems to bypass these inherent limits and I will probably implement it soon. Thanks.


fix(postgres): use quoted schema+table name when dropping constraints

I noticed that when I was updating a column with an Enum type using an entity with a schema defined, the migration generated attempted to drop the existing constraint but failed due to a quoting issue. The migration was generated with a line like:
alter table "my_schema.test" drop constraint if exists "test_column_check";

instead of
alter table "my_schema"."test" drop constraint if exists "test_column_check";

I've added a test that I believe exercises the functionality.

Codecov Report
Base: 99.77% // Head: 99.68% // Decreases project coverage by -0.09% :warning:

Coverage data is based on head (1ae2e6c) compared to base (c101d51).
Patch coverage: 100.00% of modified lines in pull request are covered.

:mega: This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more
Additional details and impacted files
@@            Coverage Diff             @@
##           master    #4079      +/-   ##
==========================================
- Coverage   99.77%   99.68%   -0.09%
==========================================
  Files         214      214
  Lines       13754    13801      +47
  Branches     3221     3237      +16
==========================================
+ Hits        13723    13758      +35
- Misses         29       40      +11
- Partials        2        3       +1

Impacted Files
Coverage Δ

packages/core/src/unit-of-work/UnitOfWork.ts
100.00% <ø> (ø)

packages/core/src/entity/EntityFactory.ts
100.00% <100.00%> (ø)

packages/core/src/entity/EntityHelper.ts
100.00% <100.00%> (ø)

packages/core/src/entity/Reference.ts
97.59% <100.00%> (-1.15%)
:arrow_down:

packages/postgresql/src/PostgreSqlSchemaHelper.ts
100.00% <100.00%> (ø)

packages/core/src/types/Type.ts
93.10% <0.00%> (-6.90%)
:arrow_down:

packages/core/src/metadata/MetadataDiscovery.ts
98.96% <0.00%> (-1.04%)
:arrow_down:

packages/mongodb/src/MongoDriver.ts
99.33% <0.00%> (-0.67%)
:arrow_down:

packages/core/src/utils/Utils.ts
99.57% <0.00%> (-0.21%)
:arrow_down:

... and 12 more

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.

How can such change decrease the code coverage, weird...


Changed title to use user assigned title

Changed the static title to use the handlebars title assigned by the user

Thanks for pointing that out. It will be in next release a couple of days from now

You PR is v3.1.0, which I have just released on NPM. Thanks again for taking the time to create the PR


Improve readability and simplify the -k flag

So after learning, -k flag combined with --columns= are the two most useful tools in my arsenal.
The problem is that with --columns= I can do like:
columns=id,name,description,summary,time_zone,html_url
but with the -k flag, I need to do like:
-k description -k summary -k time_zone -k html_url
This means my final command looks like:
pd schedule:list -k description -k summary -k time_zone -k html_url --columns=id,name,description,summary,time_zone,html_url

Can we please have the same functionality so I can just write:
pd schedule:list -k description,summary,time_zone,html_url --columns=id,name,description,summary,time_zone,html_url
or even better just:
pd schedule:list -k description, summary, time_zone, html_url
or just:
pd schedule:list --columns=id,name,description,summary,time_zone,html_url
and still get the output:
ID      Name                                    description                                               summary                                 time_zone       html_url
 ─────── ─────────────────────────────────────── ───────────────────────────────────────────────────────── ─────────────────────────────────────── ─────────────── ─────────────────────────────────────────────────
 P47R7L5 1st Line 7-17                                                                                1st Line 7-17                           Europe/Helsinki https://company.pagerduty.com/schedules/P47R7L5
 P64JBZZ 24-5                                                                                24-5                                    Europe/Warsaw   https://company.pagerduty.com/schedules/P64JBZZ
 PDFD16Z Amazon Connect Test                     Temporary schedule for testing Amazon Connect             Amazon Connect Test                     Europe/Warsaw   https://company.pagerduty.com/schedules/PDFD16Z
 PT8KV6J AWS Support                             Default AWS Support Schedule.                             AWS Support                             Europe/Warsaw   https://company.pagerduty.com/schedules/PT8KV6J

Hi @825i, this is something I have struggled with -- the reason why is partly dumb implementation details, because -k is a flag that I implemented and it has some more sophisticated functionality than --columns, which is a flag provided by the framework -- specifically, -k can take JSON paths, and lso you can add columns to the table using -k, then filter rows using --filter, then show only the columns you want to see with --columns -- for example you could include time zone, filter for only America/New_York, and then show only the name:
pd schedule list -k time_zone --filter time_zone=America/New_York --columns name
I am thinking about whether there is a way to further parse the -k flag to get closer to what you're describing. In the meantime though, it might help you to know that you can in fact separate multiple -k flags using spaces -- it doesn't feel intuitive, because --columns uses , while -k uses space, but it does work. For example:
pd schedule list -k time_zone html_url 'escalation_policies[*].summary' --columns id,name,time_zone
Hope this helps, let me know what you think...

Hi @825i, I finally managed to make the change you were asking for as part of a big refactor for 0.1.7, it's available as an RC now if you want to try it, pd update rc to use the RC, pd update stable good go back to 0.1.6. Let me know what you observe.


Missing test case

Missing test cases for reporting queries.

Added test case.

Test case for regulatory reporting queries.


Flaky test: WebHookAction_NoBody_IsBadRequest

This test fails occasionally with the following error:
Microsoft.AspNetCore.Routing.Matchers.AmbiguousMatchException : The request matched multiple endpoints. Matches:
DynamicsCRMCoreReceiver.Controllers.DynamicsCRMController.DynamicsCRMForIt (DynamicsCRMCoreReceiver)
DynamicsCRMCoreReceiver.Controllers.DynamicsCRMController.DynamicsCRM (DynamicsCRMCoreReceiver)
   at Microsoft.AspNetCore.Routing.EndpointConstraints.EndpointConstraintEndpointSelector.SelectAsync(HttpContext httpContext, IEndpointFeature feature, CandidateSet candidates)
   at Microsoft.AspNetCore.Routing.Matchers.DfaMatcher.MatchAsync(HttpContext httpContext, IEndpointFeature feature)
   at Microsoft.AspNetCore.Routing.GlobalRoutingMiddleware.Invoke(HttpContext httpContext)
   at Microsoft.AspNetCore.TestHost.HttpContextBuilder.<>c__DisplayClass10_0.<<SendAsync>b__0>d.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at Microsoft.AspNetCore.TestHost.ClientHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   at Microsoft.AspNetCore.Mvc.Testing.Handlers.CookieContainerHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   at Microsoft.AspNetCore.Mvc.Testing.Handlers.RedirectHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   at System.Net.Http.HttpClient.FinishSendAsyncBuffered(Task`1 sendTask, HttpRequestMessage request, CancellationTokenSource cts, Boolean disposeCts)
   at Microsoft.AspNetCore.WebHooks.FunctionalTest.DynamicsCRMCoreReceiverTest.WebHookAction_NoBody_IsBadRequest() in /_/test/Microsoft.AspNetCore.WebHooks.FunctionalTest/DynamicsCRMCoreReceiverTest.cs:line 108
--- End of stack trace from previous location where exception was thrown ---

WebHookAction_NoBody_IsBadRequest failed again.

WebHookAction_NoCode_IsBadRequest failed again.

WebHookAction_WithBody_Succeeds failed again.

WebHookAction_WithBody_Succeeds failed again.

@dougbu - Please use this workflow to address this flaky test issue, including checking applicable checkboxes and filling in the applicable "TODO" entries:

Is this test failure caused by product code flakiness? (Either this product, or another product this test depends on.)

[ ] File a bug against the product (TODO: Link to other bug)
Is it possible to change the test to avoid the flakiness?

Yes? Go to the "Change the test!" section.
No?

[ ] Disable the test (TODO: Link to PR/commit)
[ ] Wait for other bug to be resolved
[ ] Wait for us to get build that has the fix
[ ] Re-enable our test (TODO: Link to PR/commit)
[ ] Close this bug

Is it that the test itself is flaky? This includes external transient problems (e.g. remote server problems, file system race condition, etc.)

Is there is a way to change our test to avoid this flakiness?

Yes? Change the test!

[ ] Change the test to avoid the flakiness, for example by using a different test strategy, or by adding retries w/ timeouts (TODO: Link to PR/commit)
[ ] Run the test 100 times locally as a sanity check.
[ ] Close this bug

No?

[ ] Delete the test because flaky tests are not useful (TODO: Link to PR/commit)

Thanks @ryanbrandenburg and @Eilon. I wasn't aware tests in this repo were anything but rock solid.

See #318 for product bug

WebHookAction_NonGetOrPost_IsNotAllowed failed again.
This comment was made automatically. If there is a problem contact @ryanbrandenburg.

WebHookAction_WithBody_Succeeds failed again.
This comment was made automatically. If there is a problem contact @ryanbrandenburg.

WebHookAction_NonGetOrPost_IsNotAllowed failed again.
This comment was made automatically. If there is a problem contact @ryanbrandenburg.

WebHookAction_NonGetOrPost_IsNotAllowed failed again.
This comment was made automatically. If there is a problem contact @ryanbrandenburg.

WebHookAction_NoCode_IsBadRequest failed again.
This comment was made automatically. If there is a problem contact @ryanbrandenburg.

WebHookAction_NoBody_IsBadRequest failed again.
This comment was made automatically. If there is a problem contact @ryanbrandenburg.

WebHookAction_NoCode_IsBadRequest failed again.
This comment was made automatically. If there is a problem contact @ryanbrandenburg.

WebHookAction_NoBody_IsBadRequest failed again.
This comment was made automatically. If there is a problem contact @ryanbrandenburg.

WebHookAction_WithBody_Succeeds failed again.
This comment was made automatically. If there is a problem contact @ryanbrandenburg.

WebHookAction_Get_Succeeds failed again.
This comment was made automatically. If there is a problem contact @ryanbrandenburg.

WebHookAction_WithNoOrganizationId_IsBadRequest failed again.
This comment was made automatically. If there is a problem contact @ryanbrandenburg.

WebHookAction_NonGetOrPost_IsNotAllowed failed again.
This comment was made automatically. If there is a problem contact @ryanbrandenburg.

/cc @Eilon meta: https://github.com/aspnet/WebHooks/issues/313#issuecomment-407885142
This wasn't flaky, it's a legit functional break. Should we add a checkbox for that?

@rynowak yeah that makes sense. I'll work with @ryanbrandenburg (the human, not the bot) on a "step #0" for that.

@rynowak much appreciated.
Is this done? And, should the workflow above be updated?