IntelliJ Test support broken in 1.22.0-dev.10.3

IntelliJ runs the snapshot directly – but it seems they need to pass in another flag to support the old snapshot format
https://github.com/dart-lang/sdk/wiki/Snapshots#application-snapshots
May need to talk to VM team
/Users/kevmoo/homebrew/opt/dart/libexec/bin/dart --checked file:///Users/kevmoo/homebrew/opt/dart/libexec/bin/snapshots/pub.dart.snapshot run test:test -r json /Users/kevmoo/source/github/dart2js_info
Testing started at 3:13 PM ...
file:///Users/kevmoo/homebrew/opt/dart/libexec/bin/snapshots/pub.dart.snapshot is not a valid UTF-8 script

Process finished with exit code 253

What version of the Dart plugin / webstorm?

/cc @jwren @alexander-doroshko

Unrelated: why pass --checked to pub? pub itself should run in unchecked mode.

IntelliJ IDEA 2016.3.1
Build #IU-163.9166.29, built on December 9, 2016
Licensed to Dart Language / Kevin Moore
Subscription is active until October 5, 2017
For non-commercial open source development only.
JRE: 1.8.0_112-release-408-b2 x86_64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o

I believe this is a duplicate of https://github.com/dart-lang/sdk/issues/28511

Yup, this is a dup. Kevin, Alex released a version of the plugin Friday with a fix for this. That fix is available for IntelliJ version 2016.3.3 and higher I believe. We have an outstanding request to push some changes back to 2016.3.1 (or more correctly, to see if we can expand the version range of the 2016.3 Dart plugin to cover 2016.3.1 as well).

Kevin, can you confirm that 2016.3.3 fixes the issue for you?

Yup!
Of course the pain here is diagnosing this...
IntelliJ IDEA 2016.3.4
Build #IU-163.12024.16, built on January 31, 2017
Licensed to Dart Language / Kevin Moore
Subscription is active until October 5, 2017
For non-commercial open source development only.
JRE: 1.8.0_112-release-408-b6 x86_64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
On Thu, Feb 2, 2017 at 3:36 PM, Jaime Wren<EMAIL_ADDRESS>wrote:

Kevin, can you confirm that 2016.3.3 fixes the issue for you?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/dart-lang/sdk/issues/28618#issuecomment-277119660,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AABCiikd8uzxM-CGf8dZ30vLZ7UocnBUks5rYmhtgaJpZM4L1w3v
.

I guess this was addressed in Intellij. Closing.

Published Dart plugin update compatible with IntelliJ IDEA 2016.3.1 (Build 163.9166.*)

I have the same issue in WebStorm.
/usr/local/opt/dart/libexec/bin/dart --ignore-unrecognized-flags --checked --trace_service_pause_events file:///usr/local/opt/dart/libexec/bin/snapshots/pub.dart.snapshot run test:test -r json /Users/kzhao/repo/matcher_test/test/matcher_test_test.dart
Testing started at 10:52 PM ...
file:///usr/local/opt/dart/libexec/bin/snapshots/pub.dart.snapshot is not a valid UTF-8 script
Process finished with exit code 253

@kzhdev which version of IntellliJ And Dart are you sing?

@kevmoo
CLion 2016.1.2
Build #CL-145.972, built on May 18, 2016
JRE: 1.8.0_76-release-b162 x86_64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o

@kevmoo Sorry, wrong software. Here is the one:
WebStorm 2016.2.4
Build #WS-162.2228.20, built on October 18, 2016
Licensed to TRADING TECHNOLOGIES / Kun Zhao
You have perpetual fallback license for this version
Subscription expired on December 2, 2016
JRE: 1.8.0_112-release-287-b2 x86_64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o

@kzhdev, so as you can see from the previous comments, the issue if fixed long ago in 2016.3.x and more recent IDE updates.

@kevmoo
More color on this. It is pretty easy to reproduce. Just create an new Console Application through WebStorm and run the test.
Tests on Dart package Package project is working fine.

@alexander-doroshko Oh, I thought that just for IntelliJ. Too bad, I can't upgrade to 2016.3 that is not free. :(

Dart SDK 1.22 was released on February 14, 2017, way later than WebStrom 2016.2 that you use. WebStrom 2016.3 was already available at that moment. You shouldn't expect the IDE to be future-compatible with all the upcoming SDKs.


http: gRPC-web filter does not clear the route cache

Title: gRPC-web filter does not clear the route cache
Description:

source/extensions/filters/http/grpc_web/grpc_web_filter.cc checks if the incoming request is a gRPC-web request and transforms it to gRPC proper. The transformation involves changing the content type to application/grpc. Unlike the JSON transcoding filter, gRPC-web one does not however clear the route cache making it harder to route the "upgraded" request the same way one would route a native gRPC request.

Envoy version: master @ 97d259d43a4f9b7c6d798804b4b2c9ffbd2d285d (02/11/2019)
Repro steps:
Define a route explicitly matching gRPC traffic:
...
    "match": {
      "prefix": "/",
      "grpc": {}
    },
    "route": {
      "cluster": "lo_svc_grpc",
      "max_grpc_timeout": {
        "seconds": 0
      }
    },
  {
    "match": {
      "prefix": "/"
    },
    "route": {
      "cluster": "lo_svc_http",
      "timeout": {
        "seconds": 60
      }
    }
  }
...

Define the http filters in the following order:
...
    "http_filters": [
      {
        "name": "envoy.grpc_web"
      },
      {
        "name": "envoy.router"
      }]
...

Send a gRPC-web request through Envoy
Expected: the request is upgraded to gRPC proper and routed to lo_svc_grpc
Actual: the request is upgraded to gRPC proper and routed to lo_svc_http (the cached route)
Why is this a bug?

JSON transcoding filter clears the cache and supports such routing - consistency issue.
The documentation states the filters are executed in order of their definition, since the router was defined as the last one, it should pick up the changes made by the previous filters.
The routing supports matching on gRPC requests and when the gRPC-web request reaches the router, it is a gRPC request at that point and should be routed as such.

Workaround:
Insert a route matching the initial request on gRPC-web explicitly:
  {
    "match": {
      "prefix": "/",
      "headers": [
        {
          "name": "content-type",
          "prefix_match": "application/grpc-web"
        }
      ]
    },
    "route": {
      "cluster": "lo_svc_grpc",
      "max_grpc_timeout": {
        "seconds": 0
      }
    }
  },

Proposed fix:
decoder_callbacks_->clearRouteCache();

after the line https://github.com/envoyproxy/envoy/blob/master/source/extensions/filters/http/grpc_web/grpc_web_filter.cc#L60

Agreed sounds like a bug, cc @lizan @fengli79

@mattklein123 Agree the user facing behavior sounds not right. Regarding the impl, shouldn't clearRouteCache() something transparent to filters? It sounds error prone if we need each filter to manage the route cache at some point to make the proxying right.

@mattklein123 Agree the user facing behavior sounds not right. Regarding the impl, shouldn't clearRouteCache() something transparent to filters? It sounds error prone if we need each filter to manage the route cache at some point to make the proxying right.

This is something that has come up before, and there is no great solution. Recomputing the route can be very expensive, and it's hard for the connection manager to know if a filter does something that might effect the route without a huge amount of work. I agree it's worth thinking about more, but for now we should just fix in the filter.

If it's very expensive, we should not clear it for each request.
Compare to lost efficiency and get such a route config be correct, I would prefer to get efficiency.
Is there a better place to support such routing? Like somewhere at config time?

after the line https://github.com/envoyproxy/envoy/blob/master/source/extensions/filters/http/grpc_web/grpc_web_filter.cc#L60

Is there a better place to support such routing? Like somewhere at config time?

Sorry what do you mean?

I mean this is something should be resolved by the caching at config time. For example, if we can enhance the caching knows that a specific filter will produce a specific content-type, and this make the route cache able.
In this case, the user already has a workaround by defining a grpc mapping separately. If we change the filter to clear the cache, yes, this upgrade case will be supported at a performance cost, but for people who care about performance, they have no workaround anymore, they are always with a performance lost.
I would leave this to you to decide how important to support such upgrade case.

For this particular case, IMO we can add a flag into GrpcRouteMatchOptions, such as include_grpc_web so the route will match grpc-web request too before the filter, WDYT?

@lizan I don't think we should add any flag for this. It will be harder to deprecate them further.
@mattklein123 I list the potential solutions here:

Simply announce this is not supported, user should follow the workaround above.
Fix the route caching and remove the clearRouteCache() API from filters. In this case, if the request is modified by a filter, maybe it should trigger a route cache miss and gets re-compute once.
Uses clearRouteCache() as temp fix with performance penalty. And fix the route caching later.

@wenbozhu to find someone can actively work on this.

To give some context from user's perspective, say I have a service, I put Envoy as a reverse proxy in front of it and want to direct all traffic through Envoy.
For historical reasons, the service listens on multiple ports for different types of traffic (e.g. gRPC, regular HTTP), Envoy present an opportunity to unify this and get rid of this port per traffic type pattern.
In addition to that, I'd like to enrich the gRPC experience by allowing JSON HTTP/1.1 -> gRPC and gRPC-web -> gRPC. I believe this is not out of ordinary since gRPC-web alone is often insufficient (does not support ad-hoc use cases well like a simple curl).
Now to do that, one needs to:

Add gRPC-web and JSON gRPC transcoding filters (let's assume in this order)
Define routes to match on (in this order)

grpc and route to gRPC port
Prefix match the content-type for application/grpc-web and route to gRPC port
no good option at this point or transcoding request detection
Match "/" and route to HTTP endpoint

As you may see, there's no need to rely on filters mutating the request nature and if fact it makes the routing more confusing, from where I stand I'd be perfectly fine to actually remove the ability for filters to clear the route cache, but I'd definitely want to be able to detect the incoming traffic during the routing the same way the filters do.
This means adding native traffic detectors like the grpc one to the Route Match config.
In this particular case it would mean that for gRPC-web a new route match option is added grpc-web which executes the same logic as  the filter.
And for the transcoding one, a new route match option is added json-grpc which executes the filter logic.
(and ideally for most other filters using the same convention)
For the transcoding one, I'd make a change to require a custom header requesting the transcoding (x-envoy-json-grpc) because currently it is very aggressive and will attempt to match any non-gRPC content type HTTP request with the proto descriptor and execute the transcoding, which may clash with the native HTTP endpoint of the service.
TL;DR: enrich Route Match with more native detectors for various types of traffic, ideally bringing it to par with the filters supported and making filters more explicit about when they are triggered (json grpc) by using custom headers (or something else?). This should eliminate the need for the route cache invalidating filters altogether.
I know the docs mention this mutation as a feature but the justification seems very weak, if what I suggest is implemented (better traffic route match), one can just add an explicit match for the transcoding and direct it to the same cluster as gRPC if desired.

"grpc" in the route match is more like a shortcut for varies application/grpc content-type headers.
For grpc-web, did you try?
"match": {
      "prefix": "/",
      "headers": [{
          "name": "content-type",
          "prefix_match": "application/grpc-web"
        }]
    },

"grpc" in the route match is more like a shortcut for varies application/grpc content-type headers.

True, but it gives a valuable benefit of executing the same logic as the actual filter, one does not need to make sure it's up to date with the filter, that it matches all of the headers in the same way etc. It's a useful abstraction.

For grpc-web, did you try?

Yes, it's in the original post (under work around).
I'd rather not match on headers manually and be worried I did not get everything right, but have these mini-options letting me match the common traffic, potentially internally exposed by filters so it's shared logic. Case in point - I read the filter code to make sure I got the header matching right.
I just wanted to stress again that for the transcoding filter (and maybe some others) you can't even match on the content-type, there's simply nothing to match on, the filter is super aggressive about the transcoding.

@troshko111 transcoding filter does clear route cache by default as it changes path/method and mostly change the route, so you can just match the request as normal grpc.

Yes, that's exactly what I'm doing, I was saying that in the context of my comment about potentially getting rid of the cache invalidation and using explicit matching.
In both cases, I feel like the transcoding filter's behavior is not ideal as it tries to transcode everything non application/grpc which may potentially clash with pure HTTP endpoints on the upstream (if the user happens to define a conflicting mapping).
Let me know if the comment linked above is ambiguous, I'll try to clarify it. I was just offering an opinion on how to potentially improve the user experience and consistency of filters and routing.

"grpc" in the route match is more like a shortcut for varies application/grpc content-type headers.

True, but it gives a valuable benefit of executing the same logic as the actual filter, one does not need to make sure it's up to date with the filter, that it matches all of the headers in the same way etc. It's a useful abstraction.
Maybe even not ture for grpc. For example, if you want to blacklist a specific buggy client version, etc. A clear spec/doc about how to identify grpc/grpc-web is simpler and more transparent.

For grpc-web, did you try?

Yes, it's in the original post (under work around).
Sorry, I missed that part. I would suggest to use that work around as the official way to match grpc-web traffics. Clear the route cache doesn't sound a meaningful fix anymore, due to the recompute cost.
I'd rather not match on headers manually and be worried I did not get everything right, but have these mini-options letting me match the common traffic, potentially internally exposed by filters so it's shared logic. Case in point - I read the filter code to make sure I got the header matching right.
I just wanted to stress again that for the transcoding filter (and maybe some others) you can't even match on the content-type, there's simply nothing to match on, the filter is super aggressive about the transcoding.

For the transcoding one, I'd make a change to require a custom header requesting the transcoding (x-envoy-json-grpc) because currently it is very aggressive and will attempt to match any non-gRPC content type HTTP request with the proto descriptor and execute the transcoding, which may clash with the native HTTP endpoint of the service.

In both cases, I feel like the transcoding filter's behavior is not ideal as it tries to transcode everything non application/grpc which may potentially clash with pure HTTP endpoints on the upstream (if the user happens to define a conflicting mapping).

Feel free to open an PR as long as requiring header is opt-in thus not breaking existing users. I don't feel much value as it is a config problem in general, and if you have a proto descriptor defined transcoding clashes with the native HTTP endpoint, you will have your own problem anyway.

@mattklein123 @lizan any news on this? Or a choice of decision to implement?


Api changes xrefs

Xrefs are grouped by id rather than name (opposite to evidences) because xrefs are now source-centric. We can also distinguish reviewed from non-reviewed xrefs.

Sorry Leyla, you need to make pull requests to api-changes, not master Will explain tomorrow.


suggestion: move away from panic in the lib

Generally I don't think it is good practice to panic in a library. Doing this assumes a number of things about the caller of the library:

They have a panic handler
OR they want their application to crash if this lib doesn't work

I am not sure we should make these assumptions. In a situation where an error occurs I believe the lib should hand back control to the caller and allow it to decide what to do in that situation as the caller has the full context and domain knowledge.

$ git grep "panic(" | grep -v test
clients/crd.go:			panic(err.Error())
clients/etcd.go:			panic(err.Error())
clients/kubernetes.go:			panic(err.Error())
clients/kubernetes.go:		panic(err.Error())
clients/openshift.go:			panic(err.Error())
runtime/runtime.go:		panic(err.Error())
runtime/runtime.go:			panic(err.Error())
runtime/runtime.go:		panic(err.Error())
runtime/runtime.go:			panic(fmt.Errorf("Broker is attempting to delete its own namespace"))

IRC meeting this morning the recover docs were referenced:
https://blog.golang.org/defer-panic-and-recover
Particularly these two sections:

Recover is a built-in function that regains control of a panicking goroutine. Recover is only useful inside deferred functions. During normal execution, a call to recover will return nil and have no other effect. If the current goroutine is panicking, a call to recover will capture the value given to panic and resume normal execution.

For a real-world example of panic and recover, see the json package from the Go standard library. It decodes JSON-encoded data with a set of recursive functions. When malformed JSON is encountered, the parser calls panic to unwind the stack to the top-level function call, which recovers from the panic and returns an appropriate error value (see the 'error' and 'unmarshal' methods of the decodeState type in decode.go).

The general consensus is to use a recover paradigm for the panics in the client package. And modify NewRuntime to return errors instead of panicking.

Closing stale issues


define AWS_SUPPRESS_ASAN for MSVC

Issue #, if available: https://github.com/aws/aws-sdk-cpp/issues/2213
Description of changes:
MSVC ASAN reports issues with the AWS SDK due to a "buffer overflow" in hashlittle2. AWS_SUPPRESS_ASAN is now defined correctly for Windows MSVC when sanitizer is enabled. AWS_SUPPRESS_ASAN is already set for the function but had to be moved above function declaration to work with MSVC's declspec.
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

addressed in https://github.com/awslabs/aws-c-common/commit/e86e1b6f4622ff8f09d8219d00d79bf8025deaae


Using openmp to speed up further

I have made some small modifications to the code to take advantage of multi-threading using openmp and achieve a further 3x improvement with codec plain and2x with codec SSE3. With 8 threads on a quad-core with hyperthreading both codec now run at approx the same throughput, which seems to memory bandwidth limited (see attached under the heading ferry-quad)
TRP-Base64-00.pdf
I uploaded the code to my repository https://github.com/htot/base64 branch openmp, but I'm not really familiar with working with github so don't know how to create a pull request. Also, as right now, the code FTB without the option -fopenmp.
Are you interested to pull? How to proceed?

Hi Ferry, noticed you guys are from my old neighbourhood in Delft. Greetings from The Hague :)
I must admit that I don't have any experience with OpenMP, but I get from this that it's a library that can split the work over multiple cores? Looks good, and is in line with the aim of this project, which is to be fast most of all. ("Correctness" is also important, but sort of meaningless when a base64 string is either correct or not.)
I'd agree with you that the results look bounded by memory latency rather than raw throughput, but to me that's a good thing, it means the code is getting the theoretical maximal performance on the target hardware. If you wanted to get more accurate benchmarks, you could try to work on data only in the L1 or L2 caches.
I'd certainly be interested to pull, but there is one showstopper with the current code and that's that the library would require OpenMP. That's not worth it, I'd like to remain cross-platform and portable. You could fix this by using an environment variable to Make such as ENABLE_OPENMP to conditionally include omp.h and link the library. I also noticed some spacing issues which I will comment on separately. If you fix these (or I can fix them, but I'd become the author of your commit), I'll pull it.
Not being familiar with pull requests is no problem, as long as I have your commits and can merge them manually.

For me this use of openmp is new as well, so I needed to learn a few thing to get it right. It works mostly by compiler pragmas, so is ignored when the compiler doesn't support it. Yesterday I already put a conditional around the only openmp library function that is called from the code, so now it builds also without -fopenmp. But you are right, it should then not include omp.h. I'll fix that up, along with the spaces formatting.

I've split up the code, fixed formatting and permissions and added some benchmarks.

BTW I checked my memory configuration and found it to be DDR1333, while I have DDR1600, fixed that and got some more performance.

Thanks for the contribution! I'm amazed, on my Core i5 the SSSE3 and AVX2 decoders are now equally fast and bounded only by memory latency. This is a very cool technology to have in my toolbox, thanks.
I just pushed an 'openmp' branch which contains your work, plus a merge commit where I make some small cleanups. I fixed some typos, I tried to keep the line length at 80 characters, and I made some minor whitespace changes. If you agree on the changes, I'll push it into master.

Also, I think you deserve to be in the Acknowledgements section of the readme, so I'll add a mention if you agree.

Added a shout-out to the Readme.

Thanks for this.
Today I modified the benchmark program, to benchmark with different buffer sizes. I found that when the buffer is 100kB - 1MB that seems to be the best case, so my previous benchmarks @10MB were not really comparable. with yours. Fixes that up, added a graph at the bottom of Readme.md .
You can see > 10M the cache is not very effective so you become memory constrained, while below 10k its not really worth to create threads. In the sweat spot you can achieve 27Gb/sec.

Ehr, that would be previously 100MB. Now I repeat 10MB 10x, to measure the timing accurately, and repeat proportionally more times when the block is smaller.

With this out of the way, I can get to doing something useful with the code: use it to encode binary data over a 2Mb/s serial connection. Using base64 I can add control/synchronization characters (/00 error, /FF preamble, STX, ETX) with almost no performance loss. With the Edison doing 150MB/s even without threading encoding will increase communication time ~1% (+33% due to base64 of course).
Thanks!

Ah, I saw that you merged your branch on top of my master. Could you maybe try to rebase it onto master instead?  That gives a nice linear history without merge commits.
With rebase you can also squash commits so that it looks like they never happened. You could for instance suppress the plaintext ASCII table that appeared and disappeared in the README. The "recorded history" becomes a clean set of additive patches. Faking history in git is an awesome perfectionistic superpower :)
It's OK if you don't want to rebase, because I'm happy to merge your changes. Let me know if you're OK with the mention I put in the README and with the small tweaks I made in my merge commit.

The question of which benchmark size to choose is tricky. If you choose 100MB, the tests take very long to run on a Raspberry Pi or other slow hardware. If you choose 10MB, you'll be constrained by the speed of memory on desktop systems. (Which I think is an awesome achievement btw :) If you choose a lower size, you get fairer benchmarks for very fast hardware, but the timing variation is larger. I guess I'm not the first to note that meaningful benchmarking is both very difficult and quite subjective.

I think it's cool that you're using this library for serial comms. It's nice that you stretch out 3x8 bits over 4x6 so that you can fit in control characters in the top two bits. But if that's the approach you're taking, I have to note that base64-encoded data is not 6-bit clean, because after reshuffling, it gets translated to the base64 alphabet. (0x00 becomes 'A', and so on.) So the top two bits are not free for use. If you want to patch that out, get rid of the "translate" sections during encoding/decoding.

:-) I think this was my first C code in 10 years, and now I'm attempting openmp, git, github and markdown at the same time. As soon as I figure out how to rebase I'll attempt to make the history lineair.
What I modified in the benchmark is to use the same buffer multiple times in such a way that the total time is constant regardless the buffer size. This way we should get the same accuracy for small and large buffers. It take a bit of time on edison and probably a bit more on raspberry.
The correct way would be of course to select a constant time and do as many buffer conversions as possible within that time. But I think for now this is good enough.
I measured on Edison today that the cache has no effect (or doesn't exist), so no peak for small buffers. And thread creation costs 9us for one and 12us for 2 threads. So in my application (2k buffer at 2Mb/sec = 0.2MB/sec with SSE3 codec running at 150MB/sec) not using openmp for encoding/decoding will probably be optimal. Irony.
Actually base64 should be just fine I think, in ascii control characters are put from 0x00 to 0x37 and 0xFF is also reserved. I think I saw in your code 0xFF is used for error signalling so that would be just fine for me. And all I actually need is 0x00 (the serial port should be able to generate that in case of parity errors), 0xFF for preambles and STX (0x02) and ETX (0x03) to enclose the base64 text.

With respect to rebasing and rewriting history: please tell me how to do that and I'll get it done. I'm a little afraid to mess things up.
Otherwise, just go ahead and merge as you see fit. Thanks for the mention in the Readme!

Take a look at the Pro Git Book, especially at the sections about Rebasing and Rewriting History.
Cheers

So, how would I continue then? Create a new branch starting from my initial branch point (beaf4e3)  and then reorder and squash commits into 1) add openmp stuff + 2) benchmarks?

Alright, I think I sorted things out locally. Now how to fix on github? Delete the openmp branch and push up again? Or create a new branch?

You can overwrite a branch's content doing a force push. You shouldn't delete a branch with an open pull request, because the pull request will irreversebly closed and you'd have to open a new one.

I forced pushed. Hope that didn't screw up anything.

Hey, I just merged your work into my openmp branch. I'll probably merge that into master tomorrow after I sleep on it.
 The merge commit basically changes nothing except some spacing/style/syntax issues. The new commit shuffles things a little bit so that the plain functions are back in lib/lib.c, and lib/lib_plain.c is no longer needed. I think that makes the code cleaner, because lib/lib_openmp.c was basically copying the bodies of the plain codecs for the case where the buffer size was below the OMP threshold.

That's great news. Thanks for this great project and for letting me contribute something back!

Merged into master branch, thanks a lot for a great contribution!

Actually, I think I have one last question about the OpenMP code, in regards to this line. base64_stream_decode returns -1 if the requested codec is not implemented, 0 if decoding failed because of invalid input, and 1 if everything is OK. What happens if we spawn four OpenMP threads, and one thread encounters a decode error? All of the return values are added, so the accumulated result will be 3, which is truncated to 1, which means "success". Shouldn't a value for result of anything other than num_threads indicate an error?

You're right, I didn't realize there is no test case for this.
We could replace '+=' by '&=' (assuming -1 can not occur) and initialize 'result' to 1?

Well, if there are no errors, the sum must be equal to num_threads. The -1 case will come out as -num_threads since all threads encounter the same missing codec. Any result other than those two indicates that one or more threads hit an error.

Pushed fix to master.


Implementing 3D matrix transformation

Implementing 3D of this library

This would make a fine addition indeed.

Yes. Do everything you want. Thanks for using :+1:

Closing this issue as this feature isn't would be applies as project is in DEPRECATED status


Software is still under development

It works fairly well but there will defiantly be issues, let me know and I'll fix what I can

It works fairly well but there will defiantly be issues, let me know and I'll fix what I can


Add deploy key to let Travis push to GitHub

I've generated an SSH keypair for this repository. The private key I encrypted using travis encrypt-file and committed to this repo as .travis/govuk_elements.enc. The public key is .travis/govuk_elements.pub which I added to the deploy keys for the repo - I gave it push access.
https://github.com/alphagov/govuk_elements/settings/keys
I've added a bit of code to the Travisfile to configure Git and SSH and a deployment which runs a script. I renamed the script from jenkins.sh (GOV.UK Jenkins used to run this script) and removed the conditional from the script because Travis handles that for us now.
This is better than using a GH_TOKEN because it's tied to a repo rather than a user. This means that:

if the token is compromised because of a vulnerability in Travis, the attacker has access to all repos that the user can access, not just this repo
if the user leaves GDS, the token will stop working

I'd recommend that the update-release-branch.sh script is changed to use this approach. Happy to help with that!

I've deleted the Jenkins webhook from this repo's settings and disabled the job on GOV.UK Jenkins for this repo.

Sat down with @alexmuller and ran through this. I’m happy with the approach, but it’s difficult to test without being merged. With that in mind let’s wait until we want to do a release in the new year, and merge this in at that point.

I sat down with @robinwhittleton, @gemmaleigh and @dsingleton yesterday and talked through this, and I've made a couple of small changes:

moved git setup to before_deploy in Travis file
added comment indicating that openssl command is automatically generated
added README to Travis directory

I think this is good to go.

👏  this is great - well documented and easy to understand, despite the complexity.


Fix, tests for #4033

This pull request fixes ?enabled query parameter filter added in #4033.
It was missing a transformation so it didn't actually work. In addition to that, it also adds tests for those filters.
A couple of things (most of them we already talked about in the past):

Such changes are not much help without the corresponding test cases
We should utilize correct types for query param filters and not just abuse type: string for everything. It's wrong and incorrect (e.g. enabled should have type: array). I already voiced my opinion about that in the past (especially for arrays), but we should do something about it.
We should auto-generate tests for all the query param filters using openapi definition file. Previous point is a pre-requisite for this.

I opened an issue for the second bullet point - #4042.
/cc @enykeev


Add a BaseSpec trait

Description
Add a BaseSpec trait, which was found to be common in downstream projects.
Changes

 BaseSpec

I kept the getProviderFactory method for compatibility reasons, which can be removed once downstream projects switch to getProviders()


The query inside ScriptLocator has been encoded twice

Describe the bug
I put my bundle on the azure storage, to request this bundle i need to put some token stuff inside the query,  then i found out that the query object is actually will be encoded twice,
the first time is in js code

the second time is in native code

this will cause some error when fetching the bundle, i assume this is a bug ?
System Info
none

Re.Pack Version
4.3.1
Reproduction
none
Steps to reproduce
put a property like this: t: '2024-09-04T04:56:27Z' inside query obj

Hi @ra1nj,
this looks very valid, since you found the places in the code, can you make a PR with a fix for that? Currently I have no capacity to handle this.

OK, i will try to fix this,  also i will verify whether is this happening on android.

I have checked and it will not be encoded again on the android side.
https://github.com/callstack/repack/pull/739

Fixed by #739


Increment version for openenergyplatform releases

Increment package version after release of Azure.ResourceManager.EnergyServices

API change check
API changes are not detected in this pull request.


The Build Errors of Godot are really annoying !!

Godot version:

3.3.2
OS/device including version:

Win/GLES3
Issue description:

I've been working with Unity for a long time, It's been a while since I decided to launch a new engine for my 2D project and saw Godot engine showcase and videos in Youtube. Then I downloaded the latest version (C# support version). I create an empty c# file and attached it to 2dnode then build :

Then I searched in the internet, some pointed to it was related to .Net framework version and so on. I installed every version of  .NET Framework. I used Visual Studio Installer to install the components, the funny part is that after installation 4.8 and other versions, in the Programs and Features in Control panel, I just have 4.7 version : 😆😆

A person in youtube suggested to change the version of TargetFramework in csproj file of project :

I don't know anymore, the error , the workflow is really frustrating , What should I do guys ? any suggestion ?!
Steps to reproduce:
Minimal reproduction project:

#32424 Here is an old issue... similar prob. It was fixed and closed. I am not an expert of Mono.
@ash7977 Can you tell me if the following path (and the executable) exists in your system?:
"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\MSBuild.exe"

Then, I don't know what to do.
cc @akien-mga.

Plz help

@ash7977 try to install .net 472 and use this:
<TargetFramework>net472</TargetFramework>

net472

I did this more 10 times, friend
I don't know what's going on inside the stupid game engine

@ash7977
Also just to ensure, install net framework 472 from this link:
https://dotnet.microsoft.com/download/dotnet-framework/net472
Runtime and Developer Pack!
try to install .net 472 and change the csproj to this:
<Project Sdk="Godot.NET.Sdk/3.3.0">
  <PropertyGroup>
    <TargetFramework>net472</TargetFramework>
  </PropertyGroup>
</Project>

Ps: Also after installing both, restart your PC, and start a fresh new project!

I'm using Godot 3.2.2 on Win7, got .Net 4.7 and 5.0, tried the script first time on Visual Studio Code, omnisharp complained about:
The SDK 'Godot.NET.Sdk/3.3.0' specified could not be found.
Tried installing Mono 6.12 and problem solved, i'm using it right now, both VSC and Godot flawless.

As of Godot Mono 3.2.3+, all you need is the .NET [Core] SDK, so it should be simpler than it was before. Unfortunately the main download site doesn't say it yet, but there's more info in the docs:
https://docs.godotengine.org/en/stable/getting_started/scripting/c_sharp/c_sharp_basics.html#setting-up-c-for-godot
To sum up:

Install .NET SDK 5.0 from https://dotnet.microsoft.com/download
In Godot, open Editor -> Editor Settings..., then search for Build Tool. Select dotnet CLI from the dropdown.

(I have a PR open to update the site at https://github.com/godotengine/godot-website/pull/341, but the devs haven't looked at it yet.)


bug: connectAsync with walletconnect 2

Is there an existing issue for this?

[X] I have searched the existing issues

Package Version
1.3.0
Current Behavior
awaiting connectAsync with walletconnect resolves prematurely, I'm not able to sign message right after
 async function connectAndSign({ connector }) {
    await connectAsync({ connector });
    //sleep for e.g. 1000ms here solves issue
    const signature = await signMessageAsync({ message: 'some message' }); //throws
    }
  }

using same logic with metamask injected wallet seems to work fine, also same code was working with walletconnect 1.
maybe I'm doing something wrong, but seems like it resolves before signer is set up or something like that
Expected Behavior
when connectAsync resolves all hooks should work properly
Steps To Reproduce
click Wallectconnect+sign button, login with walletconnect, it will throw right after since signMessage fails

Link to Minimal Reproducible Example (StackBlitz, CodeSandbox, GitHub repo etc.)
https://stackblitz.com/edit/stackblitz-starters-xvs7pj?file=pages%2Findex.js
Anything else?
No response

Thanks for response. Gotcha, so fix for this will be probably in next release? If so any estimate on when that should be.

WalletConnect update should be released now.

Thank you guys.
I just tested it with new version and issue still persist.

Thanks for the quick patch to include the newest WC dependencies. I'm also continuing to experience the chain switching issue. Wondering if the bug originates in WC libs or on MM's end, sigh.


[Feature] Autoscaler to support scaling from zero based on custom_resource or accelerator_type

Search before asking

[X] I had searched in the issues and found no similar feature requirement.

Description
Currently kuberay's autoscaler can't scale worker groups from zero based on their custom_resource or accelerator_type.
This is because the autoscaler learns about the  custom_resource or accelerator_type from ray running in that worker group, but when the worker group is set to scale from zero, there is no ray running, so the autoscaler can't learn about custom_resource or accelerator_type of the worker group, so it doesn't know that that is the worker group it needs to scale up from zero to get that requested custom_resource or accelerator_type.
We had a long discussion about this with Miha Jenko on Slack at https://ray-distributed.slack.com/archives/C02GFQ82JPM/p1673194077107389
Use case
You could see use cases about this with custom_resource or accelerator_type request for from zero-scaling.
I have a use case where I occasionally need a specific accelerator type, so I have created a worker group (worker group B) for it with scaling set to zero (I don't need that GPU at all times, only occasionally).
At the same time I have some other worker groups (worker group A) with a different GPU, so when I need that occasional GPU then I use the accelerator_type for ray options to get that from that worker group (worker group B). This works, as long as that worker group (worker group B) is scaled from 1, as then the autoscaler knows what accelerator that group has.
Once I set the min scaling to zero of that worker group (worker group B), then this doesn't work, as the autoscaler doesn't know that that worker group (worker group B) has that given accelerator type.
Setting the accelerator type as a custom resource in the ray params doesn't help, as ray of that worker group (worker group B) is not running until that group is not scaled up - so it is a catch-22 - once it gets scaled, only then it knows that that is the group to scale.
The only way to solve this would be to supply the accelerator type to the ray head directly - instead of expecting the worker group to self-report, so then it would know that that worker group services that accelerator type (or custom resource), even when that group is scaled to zero.
Something like: ray start --head --resources {"workergroupname1:accelerator_type:T4": 1}
Related issues
No response
Are you willing to submit a PR?

[ ] Yes I am willing to submit a PR!

Ah, I see the issue -- KubeRay is not currently smart enough to detect the accelerator type ahead of time.
Could you try this?
    rayStartParams:
      node-ip-address: $MY_POD_IP
      block: 'true'
      metrics-export-port: '8080'
      resources: '"{\"accelerator_type:A10G\": 1}"'

I think the docs don't adequately address how the accelerator_type argument is supposed to work and what its limitations are.
cc @wuisawesome @gvspraveen @kevin85421

@DmitriGekhtman, I have already tried that and it didn't work.
It is not surprising, as setting the ray start param should NOT be making a difference for a worker group scaling from zero, as until it is on zero nodes, ray is actually not running on that worker group, so whatever ray param is set, it should not make a difference.
That is exactly what I have found - when setting the ray start param, it did not make a difference for the worker group with scaling from zero.

Actually what I have tried was resources: "'{\"A10G\": 1}'" and that didn't work, which seems logical.
I will also try resources: "'{"accelerator_Type:A10G": 1}'" tomorrow, but again, logic dictates that that shouldn't work either for worker groups scaled from zero. But who knows, maybe I will be surprised.
Scaling the worker group from zero does work with using the right rayStartParams, such as resources: '"{\"accelerator_type:A10G\": 1}"'
I have assumed, that that can't work, as when scaling from zero that Ray instance is not running until the worker group hasn't scaled that, so it wouldn't matter what are the rayStartParams, but I have tested it and in fact it works!
Not sure why, but it does work. :-)
So in summary, this ticket is really just a documentation ticket to ensure that this is mentioned in the docs.
To summarize for those who are just looking for a solution - if you want to scale your worker group with a special GPU (like NVidia Tesla A10G in the below example) from zero, then define it as the following (see the resources in the rayStartParams):
  - replicas: 1
    minReplicas: 0
    maxReplicas: 5
    groupName: gpu-g5-group
    rayStartParams:
      node-ip-address: $MY_POD_IP
      block: 'true'
      metrics-export-port: '8080'
      resources: '"{\"accelerator_type:A10G\": 1}"'
    template:
      ...

Hi @zoltan-fedor , should custom_resource also work with it? if not, could you also post your config file? cc: @DmitriGekhtman

Using a custom resource without accelerator type would also work.
Under the hood, the accelerator type argument uses a custom resource with a name of the form described above. On the other hand, the autoscaler reads custom resource info from the RayCluster CR. This is why we're able to scale up in this case.


Request<EMAIL_ADDRESS>email

Request<EMAIL_ADDRESS>as a distribution mailing list with Thomas, Amreen and Victor as recipients

A shared inbox has been set up, and I configured it successfully 🙌


A way to see the deployed release for a specific job

Hello,
We recently had an issue where the version of the release deployed by our job did not match the version we expected it to deploy. We would like a way to programmatically verify, as part of our Concourse pipeline, that the deployed release has the correct version number.
As far as we know, the only way to get this information is to run bosh releases and do some very complicated string-parsing of the ASCII table output.
We'd like to be able to run a single command, something like bosh deployed-release --job [job-name] that would tell us which release was deployed by the job. We could then very easily programmatically compare this output to what we expect, and either fail or continue the build, as appropriate.

The bosh -d my-deployment-name deployment | cut -f2 command might be useful to you. It shows the release/version information for a single deployment.

adding soon --column flag which will allow: bosh -d my-deployment-name deployment --column releases

There's also the --json flag, which at the very least will return easily parsable json output from the command.

@elenasharma Newer versions of the CLI support --column flag, which you could use as @cppforlife suggested to get only a list of the active releases for that deployment.


Will the present code be compatible with unit test automation?

Wondering if the present code structure would allow for easy automated testing upon PR creation

@mentatbot can you look to see if this is possible? If so please write a PR to enable unit testing, including any information in README.md


Need two '/' for getting data

First Check

[X] I added a very descriptive title to this issue.
[X] I used the GitHub search to find a similar issue and didn't find it.
[X] I searched the FastAPI documentation, with the integrated search.
[X] I already searched in Google "How to X in FastAPI" and didn't find any information.
[X] I already read and followed all the tutorial in the docs and didn't find an answer.
[X] I already checked if it is not related to FastAPI but to Pydantic.
[X] I already checked if it is not related to FastAPI but to Swagger UI.
[X] I already checked if it is not related to FastAPI but to ReDoc.

Commit to Help

[X] I commit to help with one of those options 👆

Example Code
router = APIRouter(
    prefix='/consumers',
    tags=['Consumers'],
    dependencies=[Depends(get_current_user)]
)

@router.get("/users/whoami", response_model=UserOutSchemaWithMsgOne)
def who_am_i(current_user: UserOutSchema = Depends(get_current_user)):
    logging.info(f'Запрос на информацию об авторизовавшемся пользователе {current_user = }')
    content, msg_type, msg = current_user, 'a', f'Done'
    return {'content': content, 'msg_type': msg_type, 'msg': msg}

@router.get("/userswhoami", response_model=UserOutSchemaWithMsgOne)
def who_am_i_test(current_user: UserOutSchema = Depends(get_current_user)):
    logging.info(f'Запрос на информацию об авторизовавшемся пользователе {current_user = }')
    content, msg_type, msg = current_user, 'a', f'Done'
    return {'content': content, 'msg_type': msg_type, 'msg': msg}

Description
Today I found one problem and the search did not give me an answer. If you use two slashes "/users/whoami", the request is processed successfully.

If use one slash "/userswhoami", then it gives an error, the code is completely identical.

Operating System
Linux
Operating System Details
Ubuntu 20.04
FastAPI Version
75.0
Python Version
3.8
Additional Context
No response

I'm guessing (and this is the only explanation that makes sense to me) you certainly have another route defined BEFORE that "/userswhoami" route, and it must be accepting an integer x - so the route may look like it: "/{x}"
so when you're trying to access "/userswhoami" this integer route is used by FastAPI instead of the "/userwhoami" route - and because "userswhoami" is not an integer you're getting an error

@TheoBabilon thank you!


usetoggle no param casting

Ignore non-boolean values parameters  of useToggle updater function and toggle state as if there was no parameter. This allows you to use the update action like onClick={toggle}.
Fixes #278

@ankithkonda I have commented out two tests as I'm getting a state update after unmount React error. Not sure what I'm doing wrong.

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Added maintainers to spec

See #30

@VictorBjelkholm Do you get notifications if I force push? Curious.

@RichardLitt no, don't think so. Just get notifications regarding the mentions. I do think this looks good now 👍

Ok, will remember to ping. @martinheidegger, thoughts?


Credentials - Do not store empty credentials.

gptscript version v0.0.0-dev-656ae77b-dirty
Steps to reproduce the problem:

Execute the following script which has a tool that has  credential tool served from gihub

Tools: github.com/sangee2004/slack-message/toolcred.gpt

Send a message to "sangeetest" channel saying "hello new from gptscript".

When prompted for entering the credential  - quit (clt c) or just hit enter (no credential is entered).

This results in an empty credential to be stored.

Execute the script again. We will not be prompted to enter the credentials and the script will fail.

Expected Behavior:
When user has not entered any credentials , we should not store the credentials. This way , when the script is executed the next time user will be prompted to the enter the credentials instead of failing right away.
Note:
Should we also consider stripping empty spaces before and after the credential string before storing and using the keys .

Just merged the fix.

Tested with gptscript version v0.0.0-dev-9d41471d-dirty
Empty credentials are not stored anymore.


Docs for "Code Organization" Concept

Apart from the exercise material, the Code Organization part also needs docs:

[ ] about.md
[ ] introduction.md
[ ] links.json
[ ] .meta/config.json

Concept will be split into several smaller ones


async functions not reloading

Plugin seems to ignore functions marked async. Are they not meant to be reloadable?
Desktop (please complete the following information):

OS: Windows 10
Reloadium package version: 0.9.0
PyCharm plugin version: 0.8.3
Editor: PyCharm 2022.1.3 (Pro Edition)
Run mode: Both

Off-topic: Consider lowering the sponsorship minimum to $5. $10 is IMO too much and likely why you don't have any sponsors yet.

Fixed in reloadium 0.9.1


Fixed obvious errors in CMA and DIRECT optimizers, added unit tests

Going via PR to test build changes

Codecov Report

Merging #223 into master will increase coverage by 0.7%.
The diff coverage is 93.33%.

@@            Coverage Diff            @@
##           master     #223     +/-   ##
=========================================
+ Coverage   77.36%   78.06%   +0.7%
=========================================
  Files          97       97
  Lines        4603     4627     +24
=========================================
+ Hits         3561     3612     +51
+ Misses       1042     1015     -27

Impacted Files
Coverage Δ

...ting/optimization_tests/test_optimizer_creation.py
100% <100%> (ø)
:arrow_up:

GPyOpt/optimization/optimizer.py
88.8% <60%> (+21.86%)
:arrow_up:

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 19ca3ed...fc33fb2. Read the comment docs.

Initially I've tried to not only test creation but also simple running of the optimizers. However DIRECT proved difficult to automate tests against - it requires additional FORTRAN install and has conflicts with some python versions.


Shortcuts don't work outside of Cesium

Hi. I have a calculator running OS 5.4.0 with the latest version of Cesium installed. When I attempt to use the shortcuts that are listed as working outside of Cesium, such as ON+PGRM, they don't work at all. Is there any way to diagnose and fix this issue? It'd be pretty nice to have them, however, it isn't that big of a deal.

Odd question, but have you enabled them in the settings menu by pressing [mode] in Cesium?

Yup. It's enabled.

Are you holding ON while pressing PRGM?
I'm sorry about these kinds of questions; because shortcuts seem to work everywhere else.

Yup, I hold ON while pressing PRGM. Not sure what it could be really.

I'm going to close this because I have no way to reproduce it unfortunately. Feel free to reopen if you find steps that I can use to make it always happen.


libpng12: 1.2.57 -> 1.2.59 [19.03]

CVE-2017-12652
Should this go into release-19.03 or staging-19.03?

Motivation for this change
#70106
Things done

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nix-review --run "nix-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[x] Determined the impact on package closure size (by running nix path-info -S before and after)

28905760 -> 28906296 (~1KiB diff)

[ ] Ensured that relevant documentation is up to date
[x] Fits CONTRIBUTING.md.

Notify maintainers
cc @Fuuzetsu

There aren't many reverse dependencies (1.2 is ancient), which is why it can be merged directly.  (And why it the fix doesn't matter too much anyway.)


GeometryCollection Feature type to check its first Item for the Featu…

When creating a Feature using a GeometryCollection there is no other way to set the FeatureType, meaning that it cannot be written out to file as the FeatureType is Unspecified by default.
This alteration gets the FeatureType of the first Item in the GeometryCollection.

Please add yourself to the contributors file and your fix to the changelog.

I have now added code that checks if all elements in the GeometryCollection are equal.

Thanks for submitting your fix.


The first connection to a docker based Strapi has the hostname and port wrong

Here is how to reproduce:

Create a docker-compose file with a different Strapi port, eg.:  ports:
       - "1338:1337"

and a different hostname than localhost, eg.:   environment:
           - HOST=<my_hostname>.com

At first opening and admin user creation, the browser opens on: localhost:1337 whch yields a 404.
The solution is simple (change the URL manually), but may distress users not used to docker.

Hi, this issue is a duplicate of https://github.com/strapi/strapi-docker/issues/192

^ this is issue 192 :D did you mean 191?


remove ps1 scripts

Please make sure the code is following contribution guidelines in CONTRIBUTING.md

[ ] : This PR has a corresponding issue open in the Repository.
[ ] : Approach is signed off on the issue.

I use runTests.ps1 to run tests locally since it takes care of deploy and run the tests.
Now I will have to deploy latest code myself and then run tests using "pytest".
This is sub-optimal but fine.
If we want to take the change as is - this will need to go into the dev_setup documentation since it mentions runTests.ps1.
OR
We can take the pipeline changes but leave the script as a utility. (If this is to get rid of powershell scripts from dev setup we can convert the same to python for which there is a partial PR in progress. I stopped working since lot of pipeline changes went in parallel to that making the changes outdated.)
Thoughts?

I use runTests.ps1 to run tests locally since it takes care of deploy and run the tests.
Now I will have to deploy latest code myself and then run tests using "pytest".
This is sub-optimal but fine.
If we want to take the change as is - this will need to go into the dev_setup documentation since it mentions runTests.ps1.
OR
We can take the pipeline changes but leave the script as a utility. (If this is to get rid of powershell scripts from dev setup we can convert the same to python for which there is a partial PR in progress. I stopped working since lot of pipeline changes went in parallel to that making the changes outdated.)
Thoughts?

so now UTs can run against latest code from VSCode itself.
For live test installing extension step is involved but that is also Ctrl+Shift+B ==> select option
and that is how most of the tests are which are not UTs exactly.
I am inclined towards a future where most (if not all) the dev work can be done from IDE instead of depending on scripts

I use runTests.ps1 to run tests locally since it takes care of deploy and run the tests.
Now I will have to deploy latest code myself and then run tests using "pytest".
This is sub-optimal but fine.
If we want to take the change as is - this will need to go into the dev_setup documentation since it mentions runTests.ps1.
OR
We can take the pipeline changes but leave the script as a utility. (If this is to get rid of powershell scripts from dev setup we can convert the same to python for which there is a partial PR in progress. I stopped working since lot of pipeline changes went in parallel to that making the changes outdated.)
Thoughts?

so now UTs can run against latest code from VSCode itself.
For live test installing extension step is involved but that is also Ctrl+Shift+B ==> select option
and that is how most of the tests are which are not UTs exactly.
I am inclined towards a future where most (if not all) the dev work can be done from IDE instead of depending on scripts

Inclined towards UI for CLI development? :)
For me having the functionality in vscode is good to have but having scripts for anything that runs in the CI pipelines is a must have (I hate that style check is not straight forward due to python version dependency.)
I am fine with manual install and pytest for running tests. But I will contribute a python script which can do everything for me from command line itself.
You will still need to update the documentation to reflect the deletion of the script.


Add GH_TOKEN to CI's GitHub publish

Closes #1214

Current dependencies on/for this PR:

main

PR #1215   👈

This stack of pull requests is managed by Graphite.


Add playwright test suite to synchronous onboarding on desktop

📝 Description
Add automated tests using playwright to the new synchronous onboarding
❓ Context

Impacted projects: ledger-live-desktop
Linked resource(s): FAT-241

✅ Checklist

[x] Test coverage
[x] Atomic delivery
[x] No breaking changes

📸 Demo

TODO
🚀 Expectations to reach
Please make sure you follow these Important Steps.
Pull Requests must pass the CI and be internally validated in order to be merged.

/generate-screenshots

/generate-screenshots

Screenshot comparison failing is expected -> the base of the base of this branch needs to regen them, I choose to ignore it since I'm merging in another work in progress branch


move build to gh-actions

This will allow me to not use a personal key, which I wasn't thrilled about the security implications of

Gonna go ahead and land this, since it doesn't affect any of the proposal


Merge version 1.2.0 vulnerability

Merge 1.2.0 has a high severity vulnerability: https://nvd.nist.gov/vuln/detail/CVE-2018-16469#VulnChangeHistorySection
Can we upgrade merge to 1.2.1? It looks like pull request #48 will do the trick.

Whoops! Forgot to update you on this issue. We've upgraded to<EMAIL_ADDRESS>Thanks!


open5gs pods multiple replicas (

hello,
question, not an issue really.
is it safe to scale pods to multiple replicas ? (default is 1 for all components) ?
I can see comment in values.yaml that RWM mode is required if scale is required. Does this apply really to all components pods ?
thanks,
j

Hi,
You will not be able to scale de deployments because we defined a HorizontalPodAutoscaler with maxReplicas to 1 in order to avoid people scaling the 5G functions.
If you need for example multiple amfs in your core, you have to deploy multiple open5gs-amfs, each one with a different name (for example playing with the helm release name), in order to register with a unique name in the open5gs-nrf.
If you are thinking in having multiple pods to have some sort of high availability for your 5G function, you can give it a try, but I really don't know the implications on the open5gs core. https://github.com/open5gs/open5gs/issues/1549  does not recommend it.
To scale a deployment you need to delete the corresponding hpa resource.
Please, let us know if you test it!
Kind Regards,

@jmarkotic did you find any alternative?


Linux headless server does not export to macOS properly in Docker container

Godot version
3.3.4+
System information
Mac OS Monterey for host machine, Alpine Linux for Docker
Issue description
Hi! I'm trying to export a Mac OSX export from the linux headless build on docker.
The image that i have on my public registry is the following:
https://gist.github.com/lelandhwu/bd21f0a0faecda70de87f3ce061aa2a5
it works great, the headless linux server works great for multiplayer. Exporting the linux version works (for obvious reasons), but the thing is for my CI/CD builds when i try to export a mac osx version using the following command: godot --export "Mac OSX" file.dmg, it becomes corrupted. I've tested this by spinning up a local docker container running headless godot, exporting the file, and then running a docker cp to get the file back onto my host machine. I've also tested this with a fresh project with nothing on it. The .dmg file still gets corrupted
any ideas? next thing im thinking about is bumping the godot version on my public registry. I'd love some ideas from you guys though.
Thanks so much!
Steps to reproduce

Create a doctor image with the following code: https://gist.github.com/lelandhwu/bd21f0a0faecda70de87f3ce061aa2a5
we've tried version 3.3.4. The highest we'll go is 3.4.3 for now

Push it up to a registry. We'll be using this as a base image for our future builds.

Create a simple godot project with a main scene. We'll use this to test. Create a Dockerfile in the root directory of tha tproject that looks like this: https://gist.github.com/lelandhwu/b8233f352c616b23ff0a6325189a14f7
This is the other part of the file, just in a separate docker image

build the docker image:  docker build . -f Dockerfile

run the image in a separate process: docker run -it image-id /bin/bash

In a separate process, cp the exported the artifact onto your host machine. docker cp container-id:/godotapp/hz.dmg .

try and run the dmg file

Minimal reproduction project
test_project.zip

godot --export "Mac OSX" file.dmg

Exporting as .dmg is supported only on macOS host, on Linux hosts is's possible to export macOS app only as a .zip.
But even if it's exported as .zip, the application will not be signed, it will be blocked by Gatekeeper on all Macs and won't run on M1 powered Macs at all. 3.5 and 4.0 will have ad-hoc singing support on Linux, but proper singing with the Apple issued signature and notarization is still will be only available on macOS hosts.

is there any relatively simple way to export a signed Mac OS version from a headless Godot server for ci/cd pipelines?

Only if your CI/CD is running on macOS (there's no official binaries, but it should be possible to build a headless version for macOS, or use normal macOS editor binary instead).

We should modify the exporting code to print an error when attempting to export a .dmg on a non-macOS platform, including in headless mode.

Any pointers for running headless Mac binaries?

Any pointers for running headless Mac binaries?

In 3.x, you need to compile a binary with platform=server on a macOS machine, and it'll produce a headless macOS editor binary.

According to wwdc2022 you can now notarize by REST api! https://developer.apple.com/videos/play/wwdc2022/10109/?time=90

Duplicate of https://github.com/godotengine/godot-proposals/issues/5115 but for Godot Engine 3

According to wwdc2022 you can now notarize by REST api!

In 4.0 you can sign and notarize macOS apps on Linux/Windows using PyOxidizer rccodesign, see https://github.com/godotengine/godot/pull/64207

but for Godot Engine 3

There's nothing 4.x specific, so should be possible to backport it for 3.6.


Add fetch function for SecLists AI LLM Bias Testing datasets

Is your feature request related to a problem? Please describe.

Link: https://github.com/danielmiessler/SecLists/tree/master/Ai/LLM_Testing/Bias_Testing
There are three files which we can load and convert to a PromptDataset as prompts. Note that some of them have placeholders for Country, Region, Nationality, Gender, Skin-Color which we'd need to be mindful of. Those are basically PromptTemplates where we need to plug in a parameter.
Describe the solution you'd like

A fetch function under pyrit.datasets similar to what's being added as part of #254 for another dataset.
Describe alternatives you've considered, if relevant

Additional context

PyRIT will have a datasets module soon. Currently, it's just a collection of data files.

Hello @romanlutz,
I would be interested in working on the SecLists AI LLM Bias Testing datasets task after I complete the many-shot-jailbreak task. What are your thoughts on this?
Best regards,
Volkan

Great idea!


Font change doesn't work

I never really used the font change option, but apparently is doesn't work at all. Doesn't matter what I input, it just exits without making any changes to the file.
A valid fix might be to remove the already existing [options] section, and replace it, or add an [options] to the top of the current config if it doesn't already exist.
I'll try to get working on it.

Update: am able to list fonts, have to add ability to change them

Font change is working fine for me even after puling new changes. Mind posting your config and a filepath to where you keep it?

config.txt
here's my config, I keep it in ~/.config/termite/config
I'm working on a fix now, it's because it doesn't have an [options] section
I will make it so if no [options] section is written, one is made and a font line is added, otherwise we simply edit the current config.

Ah gotcha, fair enough. I'd assumed the base config had a pre configured [options] section. That would be a good addition though, to add one if not seen. I'll work on a solution for that as well, so I can use for the urxvt side of things, and add it argparse.

Tested all the new things, they seem to be working great. Merged and using now. Will update the argparse later today. Thanks again for all the contributions man!


Clarification on (*tsdb.DB).ChunkQuerier and populated chunks.

Hello, I'm looking for clarification about (*tsdb.DB).ChunkQuerier. When iterating over series and chunks returned by (*tsdb.DB).ChunkQuerier, I'm using chunks.Iterator, which has following comment for its At() method:
// Iterator iterates over the chunk of a time series.
type Iterator interface {
	// At returns the current meta.
	// It depends on implementation if the chunk is populated or not.
	At() Meta
...

(https://github.com/prometheus/prometheus/blob/77e648534e2f716cc3cf090eadf009d4c37d0dbf/tsdb/chunks/chunks.go#L75)
My question is if it is possible for returned chunks to be unpopulated, when using (*tsdb.DB).ChunkQuerier. If so, how can I get the relevant chunk from *tsdb.DB based on returned chunks.Meta? Given that Meta doesn't say which block (or Head) it is coming from, and only contains Ref, that doesn't seem to be possible.
Thanks for answer.

I have moved the issue to prometheus.
cc @codesome @bwplotka

I have moved the issue to prometheus.

Oh, thanks :) I looked at AM PR before and opened this at wrong place. 🤦

When the querier is on > 1 blocks, I don't see an easy way to only have the Ref since the definition of the Ref only contains the chunk files and not block info (and cant?). I think it should be the populated chunk always. @pstibrany by any chance have you come across any implementation that returns Ref? I am happy to change the comments on this if not.

When the querier is on > 1 blocks, I don't see an easy way to only have the Ref since the definition of the Ref only contains the chunk files and not block info (and cant?). I think it should be the populated chunk always. @pstibrany by any chance have you come across any implementation that returns Ref? I am happy to change the comments on this if not.

I haven't come across such implementation yet, but I suspect that I may eventually, given the comment :)

Considering the multiple block scenario, I would be happy to change the comment then :) WDYT @bwplotka?

Hello from the bug scrub.
This seems to have fallen through the cracks. @codesome do you still think it is worth changing the comment?


Launch blog post

Complete :)

https://medium.com/quansight/unveiling-ragna-an-open-source-rag-based-ai-orchestration-framework-designed-to-scale-from-45a6ee07d2a8
https://quansight.com/post/unveiling-ragna-an-open-source-rag-based-ai-orchestration-framework-designed-to-scale-from-research-to-production/


refactor: direct [[ModuleSourceClassName]] slot

I've been investigating the WebAssembly ESM Integration spec changes necessary to define AbstractModuleSource inheritance, and it would be significantly simpler to have a direct [[ModuleSourceClassName]] slot on the instance instead of having to jump through an intermediate ModuleSource slot record, which doesn't otherwise provide any benefit in the spec.

The corresponding ESM integration PR is in https://github.com/WebAssembly/esm-integration/pull/73/files.

I like this change a lot. At some point in the future we will need ModuleSource Records, but let's push it to a later proposal that will actually rely on them :)


[Bug] incubator-uniffle-website codes can not clone in windows

Code of Conduct

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

Search before asking

[X] I have searched in the issues and found no similar issues.

Describe the bug
It is currently not possible to clone https://github.com/apache/incubator-uniffle-website locally
$ git clone https://github.com/cdmikechen/incubator-uniffle-website.git
Cloning into 'incubator-uniffle-website'...
remote: Enumerating objects: 396, done.
remote: Counting objects: 100% (171/171), done.
remote: Compressing objects: 100% (106/106), done.
remote: Total 396 (delta 81), reused 128 (delta 62), pack-reused 225
Receiving objects: 100% (396/396), 2.59 MiB | 1.74 MiB/s, done.
Resolving deltas: 100% (166/166), done.
error: invalid path 'blog/2023-07-21/Uniffle: New chapter for the shuffle in the cloud native era.md'
fatal: unable to checkout working tree
warning: Clone succeeded, but checkout failed.
You can inspect what was checked out with 'git status'
and retry with 'git restore --source=HEAD :/'

Affects Version(s)
master
Uniffle Server Log Output
No response
Uniffle Engine Log Output
No response
Uniffle Server Configurations
No response
Uniffle Engine Configurations
No response
Additional context
It seems to be caused by colon/spaces in the file path. I'm using windows.
Are you willing to submit PR?

[X] Yes I am willing to submit a PR!

closed.


[Bug] add_env_info causes error when not running from base directory

This PR added this functionality add_env_info: https://github.com/EleutherAI/lm-evaluation-harness/commit/f78e2da45f034a23b1b13cde3235105b0f55d830
In my use case, I was running the eval from within a subfolder, lm-evaluation-harness/eval in a checked out commit. This led to the following error:
Traceback (most recent call last):
  File "/usr/bin/lm_eval", line 8, in <module>
    sys.exit(cli_evaluate())
  File "/lm-evaluation-harness/lm_eval/__main__.py", line 318, in cli_evaluate
    results = evaluator.simple_evaluate(
  File "/lm-evaluation-harness/lm_eval/utils.py", line 288, in _wrapper
    return fn(*args, **kwargs)
  File "/lm-evaluation-harness/lm_eval/evaluator.py", line 265, in simple_evaluate
    add_env_info(results)  # additional environment info to results
  File "/lm-evaluation-harness/lm_eval/logging_utils.py", line 441, in add_env_info
    upper_dir_commit = get_commit_from_path(
  File "/lm-evaluation-harness/lm_eval/logging_utils.py", line 415, in get_commit_from_path
    git_hash = head_ref.read_text(encoding="utf-8").replace("\n", "")
  File "/usr/lib/python3.10/pathlib.py", line 1134, in read_text
    with self.open(mode='r', encoding=encoding, errors=errors) as f:
  File "/usr/lib/python3.10/pathlib.py", line 1119, in open
    return self._accessor.open(self, mode, buffering, encoding, errors,
FileNotFoundError: [Errno 2] No such file or directory: '/lm-evaluation-harness/eval/../.git/8051d954e68ba3156beda9af72f2192772a2e7ab'

This is due to this code not handling exceptions:
    upper_dir_commit = get_commit_from_path(
         Path(os.getcwd(), "..")
     )  # git hash of upper repo if exists

Note: running from base directory /lm-evaluation-harness/ works fine.

This is due to this code not handling exceptions

Since you know the solution, can you please do a PR with it?

I believe the root cause of the issue is related to being in a detached head which is the case when you checkout a specific version.  When you are in a detached head the HEAD file contains a hash instead of a path which the function expects.   This means that teh path constructed on line 414 doesn't exist.
https://github.com/EleutherAI/lm-evaluation-harness/blob/34c9b7e40825ec998e44c5f45041953249c06a7b/lm_eval/logging_utils.py#L414
If your head is not detached (i.e. if you didn't checkout a specific revision) then the HEAD file contains a path that the function can use.

catch all exceptions and simply return None if it fails

Why is this solution better than directly check if head_ref exists (if the problem is really in head_ref)?
       if head_ref.exists():
            git_hash = head_ref.read_text(encoding="utf-8").replace("\n", "")
        else:
            git_hash = None

catch all exceptions and simply return None if it fails

Why is this solution better than directly check if head_ref exists (if the problem is really in head_ref)?
if head_ref.exists():
    git_hash = head_ref.read_text(encoding="utf-8").replace("\n", "")
else:
    git_hash = None

Yeah this works for me. I guess I was saying catch all exceptions because I am worried that there may be other failure modes and the uncaught exception kills our runs.


Make Frame enum public

Hi,
is it possible to export Frame enum as public? It would be really nice to have ability to decode QUIC packets and see how they are really look like e.g. in order to better protocol understanding.
I mean this function
https://github.com/cloudflare/quiche/blob/c726d349120ce72e8f0a00cd5176fd0767325511/src/frame.rs#L144-L146
This line in src/lib.rs will do it
pub use crate::frame::Frame;

but I suppose there is a reason to not doing this :/

I haven't noticed that there is already function decode_pkt but I cannot figure out when I should use it. I mean I could only use this function while receiving  message from peer but not during connection establishment. Anyway is there a possibility to see what I am passing to conn.recv() function? I am talking about buf content e.g.
        let len = match socket.recv(&mut buf) {
            Ok(v) => v,
            Err(e) => {
                if e.kind() == std::io::ErrorKind::WouldBlock {
                    debug!("recv() would block");
                    break;
                }
                panic!("recv() failed: {:?}", e);
            }
        };
        debug!("got {} bytes", len);

        let pkt_buf = &mut buf[..len];

        // Parse the QUIC packet's header.
        let hdr = match quiche::Header::from_slice(
            pkt_buf,
            quiche::MAX_CONN_ID_LEN,
        ) {
            Ok(v) => v,
            Err(e) => {
                error!("Parsing packet header failed: {:?}", e);
                panic!();
            },
        };

is there any way to see whole content of buf not only header?
I tried this (after some lib modifications):
let mut b = quiche::Octets::with_slice(&mut buf[..len]);
info!("frame {:#?}", quiche::Frame::from_bytes(&mut b, hdr.ty));

and this
    let frames = decode_pkt(conn, &mut buf, len);
            match frames {
                Ok(frames) => {
                    for frame in frames {
                        info!("frame: {:?}", frame);
                    }
                }
                Err(e) => info!("{}", e)
            }

but the first one gives me InvalidFrame error and the second one CryptoFail. I suppose that decode_pkt is intended to use only after connection establishment especially after TLS handshake i.e. when we have generated  key used to encoding and decoding packets.

I think you're looking at quiche::testing::decode_pkt(), which is a library-internal method used for unit testing and probably not going to work as you hope.
More generally, the quiche API is intended to take responsibility for the protocol aspects and therefore purposefully provides the abstractions. I appreciate the learning purposes you might have but can I ask why you want to use the quiche library to do so? A simpler is to analyse logs, or to dump the session key and dissect packet captures in Wireshark.

I wanted to better understand how the library works especially while sending packets. For example
[2020-05-01T16:40:32Z DEBUG quicson] got 70 bytes
[2020-05-01T16:40:32Z DEBUG quicson] processed 70 bytes
[2020-05-01T16:40:32Z DEBUG quicson] got 455 bytes
[2020-05-01T16:40:32Z DEBUG quicson] processed 455 bytes

here quiche (quicson is my project name) received 70bytes and then 455 bytes. I was wondering why it is not in one packet when there was nothing sent between 70 and 455 bytes so I thought let's print these packets and see how they are really look like but it wasn't too easy. It seems that wireshark will be the best way, thanks!

From the sound of it, the logging should fit your needs and is a bit easier than worrying about pcaps. So in this case I would recommend two logging options that can be combined:

Run the application with RUST_LOG=trace which will give you a lot more detail from the internals of quiche. For example, it will tell you QUIC packet receive and transmits and details of all the frames inside each packet

If you run quiche-client or quiche-server with QLOGDIR=/path/to/folder it will log packet and frame events to a file in the qlog format that you can visualise in a tool such as qvis https://qvis.edm.uhasselt.be/#/files

Thanks a lot, everything works!


FR : list of topic subscriptions

We can now SubscribeToTopic and UnsubscribeFromTopic.
Is it possible to add a function ListTopicsForDevice based on "rel/topics" attribute  from the Instance ID service ?

Sounds like a useful feature to me. @sampson-chen any thoughts?

Any update ? Can I send a PR ?

@chemidy Before putting any time into writing code, can you propose what this API is going to look like (method/type signatures)? I can take that to the FCM team and get their thoughts on it.

Hi, we have plan to add this feature to the AdminSDK (along with a new HTTP API). But we don't have an estimated timeline now.


Add Chronograf CLI documentation

@sanderson Should we delete the old version of this page now? https://docs.influxdata.com/chronograf/v1.7/administration/config-options/

@noramullen1 About deleting the old config options doc – I'm fine with it as long as we aren't missing any key pieces of information that are in that doc. Tables don't make it easy to give more detailed information. If we delete the config-options page, we need to be sure to add it as an alias to the new CLI page so links that point to it will get redirected to the right place.


fix: Add test in GitHub Actions

Signed-off-by: cegao<EMAIL_ADDRESS>

TBD: test-alipay and test-wechat don't have assertions, consider to implement it.

/hold

@gaocegege
https://github.com/deb-sig/double-entry-generator/blob/442ccc6526e1ee458f9e838e8b56236863c4e112/pkg/provider/wechat/convert.go#L76
use time.Format in here.
format type: 2020-06-09 02:57:13 +0800 CST

/assign @Triple-Z


Error seeing snps on JBrowse

I am getting an error message for all the files in my snp analysis.  The screenshot is attached.

The bam file is not loading

Also, I know that a snp should be right here, but that is not loading, either.

I think you need to select respective VCF tracks using the check boxes in the left panel.

On Nov 2, 2017, at 11:26 AM, ARWattam<EMAIL_ADDRESS>wrote:
Also, I know that a snp should be right here, but that is not loading, either.
https://user-images.githubusercontent.com/11475316/32337681-0c9bfe3c-bfc9-11e7-88c1-44e428800bf3.png
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub https://github.com/PATRIC3/patric3_website/issues/1768#issuecomment-341478193, or mute the thread https://github.com/notifications/unsubscribe-auth/ABLd7zkKAMWCQkLQYnkK67272mCnDI4Tks5sye03gaJpZM4QP5-_.

@ARWattam, I believe this worked for you later, right?
Please comment if you still see the problem.
-Maulik

Seems to be working for the test run I did.

vcf.gz track never showed anything, but no errors.

Yes, I see them all now, and have even confirmed that the data in the html matches what I see in the browser.  Excellent job and well done.


No coloring for Angular directives

server and servers should be colored.
*ngFor, (click), [disabled], and all other Angular directives should be colored and not be white to distinguish from regular plain text

Thanks for letting me know, I need to do more research on this. Are you aware of other themes you have used that highlight angular correctly?

One Dark theme has coloring

Here is the same file opened in VS Code with the official Monokai Pro (Spectrum) theme

Just an update, I can reproduce the color changes from One Dark, but haven't yet figured out what fields they are using to accomplish this (I've tried coping all of their NG.* and TEMPLATE fields). I'll let you know if I can figure this out, sorry for the delay.

I have created a pull request that includes color schemes for angular directives. @espositocode Please verify and merge with the main repo.


Unit test sql stuff

Can we have unit tests that populate a database (maybe in sqlite) and run the picture_commands helper methods on it? As well as the other helper methods, like confirming that file names don't get overwritten and such.

No, using sqlite would mean having to support two sql languages, and it's too much work (and it'd take too long) to get postgres to work in test cases. Let's not do it for the database stuff. Rip.

Closing, wontdo


IOS Build Failed (Xcode >= 11.3)

Hi, I have a problem with a IOS when I try to build my application after updating the Xcode to the version 11.3 and now 11.4. It's related to DKImagePickerController, bunch of Swift compiler errors.
For example:
'pngData()' has been renamed to 'UIImagePNGRepresentation(_:)'
...
'jpegData(compressionQuality:)' has been renamed to 'UIImageJPEGRepresentation(_:_:)'
...
etc

It's native library related error. You can open issue in native library repo

@jibon57, Thx the author of native library comes here with a fix. There is a way to force the Swift version with the plugin directly?

@Stanteq thank you. Will you please try this?

@Stanteq thank you. Will you please try to follow this article: https://medium.com/@championswimmer/setting-swift-version-in-nativescript-6ece09112a46

I think it's better to set DKImagePickerController for swift 5.
pre_install do |installer|
installer.analysis_result.specifications.each do |s|
if s.name == 'DKImagePickerController'
s.swift_version = '5.0'
end
end
end

@jibon57, thank you.

post_install do |installer|
	installer.pods_project.targets.each do |target|
		target.build_configurations.each do |config|
			config.build_settings['SWIFT_VERSION'] = '5.0'
		end
	end
end

This sets the desired version for all pods (but in my case breaks other ones which are required a different version)

pre_install do |installer|
    installer.analysis_result.specifications.each do |s|
        if s.name == 'DKImagePickerController'
            s.swift_version = '5.0'
        end
    end
end

This has no effect. The swift version remains 4

I got it to work finally with the following steps:

change the pod file in the plugin nativescript-web-image-cache to

pod 'SDWebImage', '~> 5.9.0'

add the below to app/App_Resources/iOS/Podfile :
post_install do |installer| installer.pods_project.targets.each do |target|  if target.name == 'DKImagePickerController'    target.build_configurations.each do |config|      config.build_settings['SWIFT_VERSION'] = '5.0'    end  end end end
This should fix the error and build the project.

I got it to work finally with the following steps:

change the pod file in the plugin nativescript-web-image-cache to

pod 'SDWebImage', '~> 5.9.0'

add the below to app/App_Resources/iOS/Podfile :
post_install do |installer| installer.pods_project.targets.each do |target|  if target.name == 'DKImagePickerController'    target.build_configurations.each do |config|      config.build_settings['SWIFT_VERSION'] = '5.0'    end  end end end
This should fix the error and build the project.


Generated beta models and request builders

This pull request was automatically created by Azure Pipelines. Important Check for unexpected deletions or changes in this PR.

Supeceded by https://github.com/microsoftgraph/msgraph-beta-sdk-ruby/pull/126


[BEAM-9930] Correct authors of beam summit digital blog post

The authors are not shown correctly.

CC @matthiasa4

Now fixed: https://apache-beam-website-pull-requests.storage.googleapis.com/11654/blog/2020/05/08/beam-summit-digital-2020.html

Thanks Max!


Add support for streaming to v4l2

I've added this functionality directly into the viewer example. I could however factor this out to a separate file if that helps to keep these examples easier to understand. While technically this should be able to stream to any v4l2 output I've only tested it with v4l2loopback.
The second colorspace conversion and use of RGB for v4l2 output is chosen due to extremely narrow color space support in Chromium. I think a bunch of people might be interested in using this to stream IR to video chat applications.

I just tried this and it works awesome. Why isn't this merged yet?

Happy to make any changes you need to get this merged @maartenvds

Hi there,
I'm currently not maintaining this repo anymore since I don't own a seek cam anymore (this way I cannot test any new features). Feel free to clone this repo and continue developing the library.
Kind regards
Maarten

@maartenvds Firstly let me say thanks for all the work you put into this. Would you consider transferring the repo to an organization so can keep development centralized? https://docs.github.com/en/enterprise/2.14/user/articles/transferring-a-repository#transferring-a-repository-owned-by-your-personal-account

I second @Bostwickenator. Also, I'd totally be willing to help maintain the source, if you need some volunteers. I already am maintaining the Arch Linux AUR package. :)

@Bostwickenator I appreciate your proposal to transfer the ownership. I would love to see the open source community continue developing this code base, so the only request I have is that it maintains open source under MIT license or some other similar permissive software license. Can you tell me about what 'organization' you want me to transfer it too?
@alxpettit Thanks for jumping this train!

Sorry to be unclear I meant creating a new free org https://github.com/organizations/plan and transferring this project into that then adding say @alxpettit and I as contributors so we can manage the repo. Name wise the org could just be libseek.

@Bostwickenator Maybe its better that you create the org since a contact e-mail for the org is required. Then later I can transfer this repo to that org. Otherwise I need to somehow change the contact e-mail afterwards too.

Fair call! https://github.com/OpenThermal is setup, you should see an invite email soon if you haven't already.

@Bostwickenator It's done! Happy to transfer the steering wheel :-)

Awesome! @Bostwickenator you think this is ready to merge?

I'm in the OpenThermal org now, but I have read-only access still.


Invalid use of getiter in tuple of arrays

Hello!
I get an error when I try to run the following code:
import numpy as np
from numba import jit

default = np.array([],dtype=np.int8)
c1 = np.zeros(2,dtype=np.int8)

@jit(nopython=True)
def generate(c1=default, c2=default):
  if not c1.size or not c2.size:
    return default
  nc = np.zeros(min(c1.size,c2.size),dtype=np.int8)
  return nc

@jit(nopython=True)
def combine(*values):
  combined = values[0]
  for v in values[1:]:
    combined = (combined.reshape(combined.size,1)+v).ravel()
  return combined

c2 = generate(c1, c1)
print("try")
c3 = combine(c1, c2, c1)
print('OK')

output:
try
Traceback (most recent call last):
  File "numba_crash.py", line 23, in <module>
    c3 = combine(c1, c2, c1)
  File "~/miniconda3/envs/idp/lib/python3.7/site-packages/numba/core/dispatcher.py", line 401, in _compile_for_args
    error_rewrite(e, 'typing')
  File "~/miniconda3/envs/idp/lib/python3.7/site-packages/numba/core/dispatcher.py", line 344, in error_rewrite
    reraise(type(e), e, None)
  File ~/miniconda3/envs/idp/lib/python3.7/site-packages/numba/core/utils.py", line 80, in reraise
    raise value.with_traceback(tb)
numba.core.errors.TypingError: Failed in nopython mode pipeline (step: nopython frontend)
Invalid use of getiter with parameters (Tuple(readonly array(int8, 1d, C), array(int8, 1d, C)))
 * parameterized
[1] During: typing of intrinsic-call at numba_crash.py (17)

File "numba_crash.py", line 17:
def combine(*values):
    <source elided>
  combined = values[0]
  for v in values[1:]:
  ^

Any of the following changes make the execution succeed:

calling combine(c1, c2.copy(), c1)
calling combine(c1, c1, c1)
calling combine(c1, c2, c2)
removing the jit in generate
removing the test if not c1.size or not c2.size: in generate  (???)

Python 3.7.7 :: Intel(R) Corporation
numpy       1.18.5             py37h6ebd63d_5            intel
numba       0.49.1            np118py37hf484d3e_2    intel

Thanks for the report. What is happening is due to the use of a global as the default value for the kwargs c1 and c2 in generate. Explanation:

Numba sees globals as compile time constants. This means default (as in e.g. return default) is considered constant and "read only" as a result.
When Numba tries to work out the types of the variables in generate it sees the branch:  if not c1.size or not c2.size:
    return default

and so decides that return type from this branch must be read only. It then see's the return nc and to unify this return path with the return path from branch it requires that nc is also read only (this is "type unification" you can read more about it here). The result of all this being that generate returns a read only array such that c2 = generate(c1, c1) leads to c2 being read only.
When combine is called, the *values is the tuple (c1, c2, c1) which is then sliced like values[1:]  for the loop iteration, this is a tuple (c2, c1) which is essentially a "mixed type" tuple as mutability is a type property in Numba's typing system.
As a result of 3. Numba cannot iterate the tuple as it is heterogeneous in type and you get the error above. This also explains why .copy() fixes it because it's basically making the array mutable such that all the types in the tuple are the same.

Ways to fix it...

Make the copy as noted.
Flip the writeable flag of c2 in Python:c2 = generate(c1, c1)
c2.flags.writeable = True

Use literal_unroll to version the loop body such that the "mixed type" tuple can be iterated:import numpy as np
from numba import jit, literal_unroll

default = np.array([],dtype=np.int8)
c1 = np.zeros(2,dtype=np.int8)

@jit(nopython=True)
def generate(c1=default, c2=default):
if not c1.size or not c2.size:
    return default
nc = np.zeros(min(c1.size, c2.size), dtype=np.int8)
return nc

@jit(nopython=True)
def combine(*values):
combined = values[0]
for v in literal_unroll(values[1:]): # <---- UNROLL!
    combined = (combined.reshape(combined.size,1)+v).ravel()
return combined

c2 = generate(c1, c1)

print("try")
c3 = combine(c1, c2, c1)
print('OK')

Thank you very much for you detailed answer. I understood it was a read-only or not problem, but since combine only reads the input I could not see why such a crash. Your point 4. makes it clear.
I just returned default.copy() in generate to get the mutable returned value I need, nc has no reason to be read-only.
I did not dig into the heterogeneous tuples section before, since this is expected behavior I think you can close.

Thank you very much for you detailed answer. I understood it was a read-only or not problem, but since combine only reads the input I could not see why such a crash. Your point 4. makes it clear.
I just returned default.copy() in generate to get the mutable returned value I need, nc has no reason to be read-only.
I did not dig into the heterogeneous tuples section before, since this is expected behavior I think you can close.

Great, thanks for confirming and thanks for using Numba!


Add guidelines of how react-d3-graph can incorporated to a react app

As I am totally new to react framework and i am working on a project that has to visualize graph networks, it would be very helpful if you would provide me with guidelines of how can i integrate react-d3-graph and visualize a graph into a project created with create-react-app

Hello there @mtheolog, in this project you can go to the sandbox folder and the sandbox/Sandbox.jsx the file is a live/working sample of how to integrate react-d3-graph in a react app. There are a lot of descriptive comments within the component whose purpose is to provide documentation for how the Graph component can be integrated. Also to check the build process just look into the webpack.config.js on the root of the project.

Thank you very much. Please close it.


feat: add option to synth superwerker without aws organisation

Alternatively provide instructions before installing superwerker that organisations must be created first.


Review console warning output when renderIsComplex and highlightOnChange used on same column

Currently Column warns if you spec both arguments as true:
https://github.com/xh/hoist-react/blob/aadb6a5d1dc2ed3196fa22fde63d493f0a0a780e/cmp/grid/columns/Column.js#L457
The new Hoist Inspector properties grid does this for its value column:
https://github.com/xh/hoist-react/blob/aadb6a5d1dc2ed3196fa22fde63d493f0a0a780e/inspector/models/ModelsModel.js#L242
But I am not observing any issues with that configuration.  I see updated values flash as intended, but do not see the values column cells always flash as the warning implies.
Am I missing something, or is this warning perhaps out of date given Ag-Grid changes? If the latter, does this imply there's something deeper we need to revisit?

Tested this, and I think we can safely remove the warning and close.  Am assuming this is related to the major ag-Grid changes in the last several releases.


glib: Mark wrapper structs for Shared/Object/Boxed/Type as #[repr(transparent)]

This way they're completely equivalent to the underlying FFI pointer and
can be used interchangeably.
Also extend a test to assert this.

This does not help us much yet because our conversion traits for containers always go to Rust traits or have to add a NULL at the end, but this allows reducing the number of temporary allocations in the future and in manual code.

Please review again. This comes with some API that makes use of this now to reduce some allocations. In the future we can also teach gir about these but that's for another day.


Add Coveralls test coverage reporting

Automated message from Dropbox CLA bot
@borisyankov, it looks like you've already signed the Dropbox CLA. Thanks!


Update + Resolve conflicts with COOP and README file

Now with correct HEAD branch.

@DobaKung I choose you!
Do your job and approve my PR


revert multibot shell looping

Short Description:

Removed un-needed looping code in shell from multibot shell

👍