PHP benchmark: exclude uploading stats time for the QPS test

Currently, each time when the php cliend do a call, it will upload latency result through a streamming RPC immediately, and that time is counted in the benchmark time.
What I am doing is save the latency result into an array, and when the benchmark finish, php-client will receive a signal and start uploading the result. (tick to check signal will have some influence on the performance, but better than RPC uploading).
QPS tests in my own local machine (protobuf c extension, 20s warm-up, 60s benchmark):
QPS            before    after
unary          2865.9    4176.4
streamming     2898.0    4389.5

I tried to create a child process in php and let it handle stats stream but it seems grpc has some problem inside child process. Thus I can only handle the signal inside main process.
Tick also has influence in the php client side. But setting time_alarm also needs tick.  I'll check if sending histogram for every ping-pong is faster or not after I implement merge hist in ruby side.
Each signal will block ruby proxy because it should wait until php program is started or data is transferred.
Bucket data can't be send back to the ruby proxy. I am checking why.

Corrupt JSON data (indicates timeout or crash):
    bm_fullstack_trickle.BM_PumpStreamServerToClient_Trickle_64_4k.opt.old: 1

[trickle] No significant performance differences

[microbenchmarks] No significant performance differences

[trickle] No significant performance differences

[trickle] No significant performance differences

[microbenchmarks] No significant performance differences

[microbenchmarks] No significant performance differences

[trickle] No significant performance differences

Result shows batch sending result for every 1000 times is faster than using signal as trigger.

[trickle] No significant performance differences

[microbenchmarks] No significant performance differences

[trickle] No significant performance differences

[trickle] No significant performance differences

[microbenchmarks] No significant performance differences

[microbenchmarks] No significant performance differences

[microbenchmarks] No significant performance differences

I changed it in the ruby side:

Each client-channel will create a thread which start a php-client (although using thread seems unnecessary, but start php-client is really slow, that most times first mark is called before php-client is initiate. But using signal to keep the order will introduce 'tick' in the php side, which slow the program);
php report histogram to the ruby by "report_hist" for every 2000 ping-pong. It's faster than using signal trigger uploading the histogram.
Can you please help me to have a review for the ruby code? @vjpai I changed proxy-server.rb and histogram.rb

[trickle] No significant performance differences

[trickle] No significant performance differences

[trickle] No significant performance differences

[trickle] No significant performance differences

After the latest update, php has 8 scenarios:
php_protobuf_php_extension_to_cpp_protobuf_sync_unary_ping_pong
php_protobuf_php_extension_to_cpp_protobuf_sync_streaming_ping_pong
php_protobuf_php_extension_to_cpp_protobuf_sync_unary_qps_unconstrained
php_protobuf_php_extension_to_cpp_protobuf_sync_streaming_qps_unconstrained
php_protobuf_c_extension_to_cpp_protobuf_sync_unary_ping_pong
php_protobuf_c_extension_to_cpp_protobuf_sync_streaming_ping_pong
php_protobuf_c_extension_to_cpp_protobuf_sync_unary_qps_unconstrained
php_protobuf_c_extension_to_cpp_protobuf_sync_streaming_qps_unconstrained

[microbenchmarks] No significant performance differences

[microbenchmarks] No significant performance differences

Corrupt JSON data (indicates timeout or crash):
    bm_fullstack_trickle.BM_PumpStreamServerToClient_Trickle_2M_32k.opt.old: 1

[trickle] No significant performance differences

[trickle] No significant performance differences

[microbenchmarks] No significant performance differences

[microbenchmarks] No significant performance differences

[microbenchmarks] No significant performance differences

[microbenchmarks] No significant performance differences

[trickle] No significant performance differences

[trickle] No significant performance differences

[trickle] No significant performance differences

[microbenchmarks] No significant performance differences

@jtattermusch , I am adding unconstrained scenarios for php qps benchmark result. I added two more scenarios for it. I also split php's name for different protobuf extension in run_tests.py, because if then share the same name 'php', it will create more workers than I need when running both languages. Inside run_worker_php.sh, composer install will conflict with each other. All changes are in this commit.
Do I need to create a single PR for this commit or merge it with this PR?
All 8 scenarios runs well in the performance_adhoc, qps can reach 130,000 for unconstrained scenarios using c-protobuf-extension:
php_protobuf_php_extension_to_cpp_protobuf_sync_unary_ping_pong
php_protobuf_php_extension_to_cpp_protobuf_sync_streaming_ping_pong
php_protobuf_php_extension_to_cpp_protobuf_sync_unary_qps_unconstrained
php_protobuf_php_extension_to_cpp_protobuf_sync_streaming_qps_unconstrained
php_protobuf_c_extension_to_cpp_protobuf_sync_unary_ping_pong
php_protobuf_c_extension_to_cpp_protobuf_sync_streaming_ping_pong
php_protobuf_c_extension_to_cpp_protobuf_sync_unary_qps_unconstrained
php_protobuf_c_extension_to_cpp_protobuf_sync_streaming_qps_unconstrained

[microbenchmarks] No significant performance differences

[microbenchmarks] No significant performance differences

[trickle] No significant performance differences

[trickle] No significant performance differences

[microbenchmarks] No significant performance differences

[microbenchmarks] No significant performance differences

[trickle] No significant performance differences

[microbenchmarks] No significant performance differences

[trickle] No significant performance differences

[trickle] No significant performance differences

[microbenchmarks] No significant performance differences

[microbenchmarks] No significant performance differences

[trickle] No significant performance differences

[microbenchmarks] No significant performance differences

@ZhouyihaiDing

it's fine to add https://github.com/grpc/grpc/pull/12760/commits/715775e5d6ac12555f0d9aae504238acde6e41c3 in this PR.

340% CPU means 3.4 CPU cores have been used and that's nothing unusual on an 8 or 32-core machine.

[trickle] No significant performance differences

[microbenchmarks] No significant performance differences

[trickle] No significant performance differences

[microbenchmarks] No significant performance differences

****************************************************************

libgrpc.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

****************************************************************

libgrpc++.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

[trickle] No significant performance differences

[microbenchmarks] No significant performance differences

****************************************************************

libgrpc.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

****************************************************************

libgrpc++.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

****************************************************************

libgrpc.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

****************************************************************

libgrpc++.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

****************************************************************

libgrpc.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

****************************************************************

libgrpc++.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

****************************************************************

libgrpc.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

****************************************************************

libgrpc++.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

[trickle] No significant performance differences

[trickle] No significant performance differences

[trickle] No significant performance differences

[microbenchmarks] No significant performance differences

[microbenchmarks] No significant performance differences

[microbenchmarks] No significant performance differences

[microbenchmarks] No significant performance differences

****************************************************************

libgrpc.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

****************************************************************

libgrpc++.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

****************************************************************

libgrpc.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

****************************************************************

libgrpc++.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

[trickle] No significant performance differences

[trickle] No significant performance differences

Rebase the PR.

****************************************************************

libgrpc.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

****************************************************************

libgrpc++.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

****************************************************************

libgrpc.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

****************************************************************

libgrpc++.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

[microbenchmarks] No significant performance differences

[microbenchmarks] No significant performance differences

[trickle] No significant performance differences

[trickle] No significant performance differences

[microbenchmarks] No significant performance differences

[microbenchmarks] No significant performance differences

Asan C (internal CI) -
Basic Tests C++ Linux [opt] (internal CI) - (100 failure in last 24h)json_run_localhost:cpp_protobuf_async_client_unary_1channel_64wide_128Breq_8MBresp_secure
Basic Tests MacOS [opt] (internal CI - #12857
Basic Tests Windows [dbg] (internal CI) - #12858
Interop Cloud-to-Prod Tests (internal CI) - #10763
Tsan C (internal CI) - #12859

****************************************************************

libgrpc.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

****************************************************************

libgrpc++.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

[trickle] No significant performance differences

[microbenchmarks] No significant performance differences

****************************************************************

libgrpc.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

****************************************************************

libgrpc++.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

[trickle] No significant performance differences

****************************************************************

libgrpc.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

****************************************************************

libgrpc++.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

[trickle] No significant performance differences

Corrupt JSON data (indicates timeout or crash):
    bm_fullstack_streaming_ping_pong.BM_StreamingPingPongWithCoalescingApi_MinInProcessCHTTP2_NoOpMutator_NoOpMutator__2M_1_0.counters.new: 1
    bm_fullstack_streaming_ping_pong.BM_StreamingPingPongWithCoalescingApi_InProcessCHTTP2_NoOpMutator_NoOpMutator__2M_1_0.opt.new: 1
    bm_fullstack_streaming_ping_pong.BM_StreamingPingPongWithCoalescingApi_InProcessCHTTP2_NoOpMutator_NoOpMutator__2M_2_0.counters.new: 1

[microbenchmarks] No significant performance differences

Not related:
Basic Tests Windows [dbg] (internal CI)  - #12872  cmake
Basic Tests Windows [opt] (internal CI) - #12872
Portability Tests Windows [Build Only] (internal CI) - #12872
Interop Cloud-to-Prod Tests (internal CI) - #12875  all node tests fail

@vjpai @adelez @jtattermusch
I actually have the same question. What's the expected behavior in the multiple cores testing?
I'm under the impression that either client or server may be the bottleneck and occupied all the cores, however that sounds like a blur test scenario for QPS measuring.
For example, in a 8 cores client and 8 cores server test, some languages may get the bottleneck on client side while other may hit it on the server side. These numbers are not really comparable.
Ideally it should be:

Have different set of tests to limit the core on client and server side. Like give client 8 cores and give the server enough CPUs to serve all the traffic. And make a different test case to limit the server for 8 cores and give client enough CPUs.
On the machine which get limited CPU cores, adjust the concurrency and thread model to get max QPS. I'm expecting that the QPS under fixed number of cores is a curve when we adjust the concurrency factors (threads/processes, etc).

Corrupt JSON data (indicates timeout or crash):
    bm_fullstack_streaming_ping_pong.BM_StreamingPingPongWithCoalescingApi_MinInProcessCHTTP2_NoOpMutator_NoOpMutator__2M_1_0.opt.old: 3
    bm_fullstack_streaming_ping_pong.BM_StreamingPingPongWithCoalescingApi_MinInProcessCHTTP2_NoOpMutator_NoOpMutator__2M_1_0.opt.new: 1
    bm_fullstack_streaming_ping_pong.BM_StreamingPingPongWithCoalescingApi_InProcessCHTTP2_NoOpMutator_NoOpMutator__2M_1_0.counters.old: 1
    bm_fullstack_streaming_ping_pong.BM_StreamingPingPongWithCoalescingApi_MinInProcessCHTTP2_NoOpMutator_NoOpMutator__2M_1_0.counters.old: 1

[microbenchmarks] No significant performance differences


Remove prerelease, update icon uri, and clean up for PowerShell modules

Resolves #4651
Resolves #4653
Resolves #4652
Changes:

Removes comments related to crescendo
Updates compatiblePSEdition for the Microsoft.WinGet.Client module to include desktop support.
Removes Prerelease = alpha comment

Microsoft Reviewers: Open in CodeFlow

/azp run


Ability to specify speed of simulation

Nice addition would be to have ability to specify a speed of simulation. Just a slider, with min 200ms and max 2s

Should the speed be saved to local storage aswell to save it between session? And should the speed be Set before the game starts or during the game?

no need for local storage, and it should be set before the game starts


Implement skipped tests

Blocked until v0.10.0 release

Assigning this to you @azizpunjani as it fits right in with https://github.com/softlayer/sl-ember-components/issues/588 and you may actually have even already addressed this.

@notmessenger please close as sl grid tests branch has been merged.


Not loading in windows 10

I've been unable to load on two seperate systems with windows 10
I've tried the troubleshooting compatibility, and running as admin, windows 7 compat, etc. Nothing is working.
Anyone else experiencing the issue on windows 10?

Correction, windows 10 professional correctly opened it now after reloading. I will try Windows 10 Enterprise later and see if i'm still having it fail

Have you tried the latest beta?

https://github.com/Aluxian/Facebook-Messenger-Desktop/issues/479


Show both internal and shared state managment in example.

I pointed someone at this example and they were confused by the
shared state example.  To help with their confusion I updated
the example to show both shared and internal component state
management.
There is an issue with the IncrementGlobal action that, so
far, I've been unable to sort out.
Steps to reproduce
Upon first load, if you:

click the Add button beneath the Persistent Count display then;
observe the console to see that the IncrementGlobal action seems to be dispatched twice on a single click.

Hopefully, someone will be able to point out my, likely, very dumb error.

It might be worth using the context api since the new reason-react supports it.

I looked into the context api but couldn’t determine where the attachment
point would be. How would I attach an app level piece of context into the
app level in Next.js?
On Sun, May 12, 2019 at 13:05 Adam Recvlohe<EMAIL_ADDRESS>wrote:

It might be worth using the context api since the new reason-react
supports it.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/zeit/next.js/pull/7312#issuecomment-491624994, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AABZG4D4OJIJ65QTIQXPQ63PVB2BVANCNFSM4HMJ46GA
.

--
Ciao,
Nathan Sculli
(702) 508-8678

There are a few domain specific configurations for Next.js. Based on the redux example it looks as though you can create a _app.js the acts as a wrapper for your components: https://github.com/zeit/next.js/blob/master/examples/with-redux/pages/_app.js. In this case, you would create your context in reason and then import it into your _app.js file and pass it down using react context API.

Thank you 🙏 I will look into that when I get back to my computer
On Sun, May 12, 2019 at 14:20 Adam Recvlohe<EMAIL_ADDRESS>wrote:

There are a few domain specific configurations for Next.js. Based on the
redux example it looks as though you can create a _app.js the acts as a
wrapper for your components:
https://github.com/zeit/next.js/blob/master/examples/with-redux/pages/_app.js.
In this case, you would create your context in reason and then import it
into your _app.js file and pass it down using react context API.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/zeit/next.js/pull/7312#issuecomment-491630241, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AABZG4CGPO7GX6HE3UKEBKTPVCC3NANCNFSM4HMJ46GA
.

--
Ciao,
Nathan Sculli
(702) 508-8678

@arecvlohe I've updated the implementation to use a custom hook.  I muddled around with using the Context API but found that it was very confusing to me and required me to  mix in a lot of JavaScript.
Benefits of the custom hook implementation

All concerns are separated nicely
No new raw JavaScript code was required.
Duplicate increment issue on first click after load was solved.

Let me know what you think.

@scull7 Let me play around with this tomorrow and get back to you. I think there is a nice way to work with context that doesn't require interop with JS. I kinda want to exhaust this possibility first. There is a nice example of context that I found in the discord channel so I will use that for inspiration.

Why the desire to use the context API? The idea of it seems to run counter to one of the benefits of the hooks API.  Namely removing extraneous wrapping from the DOM structure.
The more I consider the global state reducer implementation; is this not what redux (and the Elm architecture) are doing implicitly?

Well, I would like to explore this option. I am not necessarily tied to it. Just want to see what's possible. At the end of the day this is your PR so you can push it forward without any of my input but it would be nice to see if the API can be improved in any way.

I apologize if I came off harsh in any way.  I was asking so that I could
understand the reasoning.
On Wed, May 15, 2019 at 11:54 Adam Recvlohe<EMAIL_ADDRESS>wrote:

Well, I would like to explore this option. I am not necessarily tied to
it. Just want to see what's possible. At the end of the day this is your PR
so you can push it forward without any of my input but it would be nice to
see if the API can be improved in any way.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/zeit/next.js/pull/7312?email_source=notifications&email_token=AABZG4GX27IH5GOK5RTA2ETPVRL6PA5CNFSM4HMJ46GKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODVPTSPY#issuecomment-492779839,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AABZG4BPZQKSJG3AXJEKYW3PVRL6PANCNFSM4HMJ46GA
.

--
Ciao,
Nathan Sculli
(702) 508-8678

It's all good! I understand why you have some reservation about using context API since it might add more complexity than is necessary. My reservation is using a mutable reference as a means to hold state. You can say I am a bit of a purist in those regards. I am working on using the context API now and I should have something ready pretty soon. We can mull it over and see what makes the most sense. But this is still your PR so you can decide whether it's valuable or not.

I look forward to seeing what you come up with.  I understand the purity argument.  But I think of the reference in this case as similar to using something like local storage, which for an example might cloud the purpose.  Although, someone might also think that this is a good way to store state and that would probably not be good also... so 🤷♂
Also, while I generated the PR, I think this should be something more than just me thinks is a good idea.

@scull7 I have a commit I would like to push to your branch. It's just 1 commit so you could easily remove it by rebasing. I just need permission to push to your branch and I can push up my changes.

@scull7 If you think it's better served as a separate example then I could create a new one entitled with-reasonreact-context or something like that. It doesn't matter to me either way. It was fun learning how to use context in reason-react with the useReducer/useContext hooks :).

@scull7 Do you want to undo my last commit or do you want me to do it. I'll have some time to do it in the morning so just let me know if want me to.

I probably won’t have time until tomorrow night, so if you get to it before
I do then by all means.   Thank you for the discussion on this.  I also
enjoyed reading through your implementation and I learned a lot.
On Wed, May 15, 2019 at 20:23 Adam Recvlohe<EMAIL_ADDRESS>wrote:

@scull7 https://github.com/scull7 Do you want to undo my last commit or
do you want me to do it. I'll have some time to do it in the morning so
just let me know if want me to.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/zeit/next.js/pull/7312?email_source=notifications&email_token=AABZG4CGOZMAX3FNETDEJKTPVTHSVA5CNFSM4HMJ46GKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODVQRKNA#issuecomment-492901684,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AABZG4BXURTMCCUW2XRP5CLPVTHSVANCNFSM4HMJ46GA
.

--
Ciao,
Nathan Sculli
(702) 508-8678

@scull7 Reverted my commit so the branch is clean now

Cool, thank you.
On Thu, May 16, 2019 at 11:44 Adam Recvlohe<EMAIL_ADDRESS>wrote:

@scull7 https://github.com/scull7 Reverted my commit so the branch is
clean now
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/zeit/next.js/pull/7312?email_source=notifications&email_token=AABZG4EYAYWTJMEGFDZ66Z3PVWTQ7A5CNFSM4HMJ46GKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODVSW2XA#issuecomment-493186396,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AABZG4EVF6Y4EOSREXZHGGDPVWTQ7ANCNFSM4HMJ46GA
.

--
Ciao,
Nathan Sculli
(702) 508-8678

I think this example is ready to be merged. Are there any objections?

@lfades I believe this example update is also ready to go.


20 unresolved references after download (Crypto related)

Dear Stefan,
Trying to run your MQTT library on an Epec 6200 controller. Codesys 3.5.13 (newer is not recommended for now by Epec).
I managed to get all the libraries installed (downloading missing libraries only helped partially). To compile the application all works fine now (I had to add ^ to DATA.PayloadString and StrPt in ReceiveValue.PublishReceived and had to change CommonTypesAndFunctions.FindLastDot to CommonTypesAndFunctions.FindLasDot until I realized that you have an updated version of the library in a different repository, still version <IP_ADDRESS> according to Codesys though).
So it compiles with no errors. But after downloading I get 20 errors, all Unresolved references related to Crypto. I did install the CmpCrypto library, version <IP_ADDRESS>. Don't know whether it is actually related to this library. Any idea what this could be? Is there a way to work around this?
Out of curiosity: Yesterday you replaced MQTT.library v<IP_ADDRESS> with a different v<IP_ADDRESS>. What changed?

Thanks, Martijn

Hi Martijn,
old Story,
your PLC Manufactor doesn implement openSSL on your plc.
Doesn't they like security in Finnland? ;) Open a case at Epec, Maybe they implement it...
For your solution look here:
https://github.com/stefandreyer/CODESYS-MQTT/issues/25#issuecomment-544242203
My Change yesterday:
receive publish with renaining lenght of 128 Bytes will crash calculation of remaining length.
I solved this.
And some other minor Things....
BR Stefan

Thanks Stefan!
I didn't realize this to be the same, since I have no building errors.
I'll give this solution a try and let you know. For sure I'll check with Epec about this!
Martijn

Unfortunately not much changed. Moved to 18 unresolved references now, instead of 20. The library CmpTls is completely not there (does give me an error at first, but will let me download anyway).
Can you point me in the direction where these references are used? I can't find any in the libraries nor in the project.
Martijn

Hi Martijn,
just delete CmpTls library out of commonTypesAndFunction, then compile(check pool objects in build) and you will see the usage.

BR Stefan

It is exactly what I did before. Didn't help.
Martijn

Hi Martijn,
please try to delete CmpCrypto too…

BR Stefan

And it is in the mqtt lib too.
BR stefan

Thanks Stefan! I'll try it after holidays. Have a nice Christmas!
Martijn

Hi Martjin,
did you had luck?
BR Stefan


Place parameters on a new line for long member definitions advice can lead to compiler warnings

Following up on https://github.com/fsprojects/fantomas/issues/868, the style guide mentions

Place parameters on a new line for long member definitions
If you have a very long member definition, place the parameters on new lines and indent them one scope.
This also applies to constructors:

type C(
    aVeryLongType: AVeryLongTypeThatYouNeedToUse
    aSecondVeryLongType: AVeryLongTypeThatYouNeedToUse
    aThirdVeryLongType: AVeryLongTypeThatYouNeedToUse) =
    // ... the body of the class follows

(this sample is also missing , after each parameter)
but if you put this in practice the following example leads to a compiler warning:
type VersionMismatchDuringDeserializationException (
    message: string,
    innerException: Exception)
    =
    inherit Exception(message, innerException)

  <Fantomas>\FakeHelpers.fs:4916 Possible incorrect indentation: this token is offside of context started at position (148:52). Try indenting this token further or using standard formatting conventions.

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

ID: 8c09996f-24ac-cf39-ef43-d7909cbc2b89
Version Independent ID: 1efdd523-8552-6421-e149-74f76826ef8f
Content: F# code formatting guidelines
Content Source: docs/fsharp/style-guide/formatting.md
Product: dotnet-fsharp
GitHub Login: @cartermp
Microsoft Alias: phcart

Thanks, the indentation is actually off in that sample since it should be a few spaces to the right

@cartermp thanks for clarifying this.
Where would the return type be placed if there is one?
And does the equal sign always follow the closing )?
I would assume it would be something like:
type VersionMismatchDuringDeserializationException(message: string,
                                                   innerException: System.Exception) =
    inherit System.Exception(message, innerException)

type C() =
    member _.LongMethodWithLotsOfParameters(aVeryLongType: int,
                                            aSecondVeryLongType: int,
                                            aThirdVeryLongType: int) : int =
        aVeryLongType + aSecondVeryLongType + aThirdVeryLongType

In this case, the return type should probably be as you specified it, yes.

Updated the PR.

Many thanks for this @cartermp!


i can run the example

Is this a bug report?
(write your answer here)

Have you read the Contributing Guidelines?
(Write your answer here.)
Environment

Steps to Reproduce

(Write your steps here:)

Expected Behavior

(Write what you thought would happen.)
Actual Behavior

(Write what happened. Add screenshots!)
Reproducible Demo

(Paste the link to an example project and exact instructions to reproduce the issue.)

@facebook-github-bot close

Do you have an actual issue with react-native or your example? This issue seems to be some sort of spam? Could you give some detail if you are having any issue, or I want to close this issue.

@facebook-github-bot label Needs more information


Change references to ="$(expression)" from =$(expression) in scripts

Ticket
Resolves #669
Changes

Update syntax to match the style guide here: https://google.github.io/styleguide/shellguide.html#quoting

Context for reviewers
This is related to the changes made in #661
Testing
N/A

@aplybeah sorry I totally missed this PR, please ping me again if you don't get a response, don't let PRs just sit around as the PR author you're ultimately responsible for driving things to completion.
Please follow the template development workflow and create a platform-test PR with these changes so that we can see that these changes all pass in CI, and post a link to that PR in this one.


widget support

widgets are a low hanging fruit for greater levels of engagement on mobile devices where navigating is inherently cumbersome.
the following very easy-to-implement widgets would provide a lot of value for people who setup their homescreens accordingly:

suggested documents
new document in a specified location or home
a pinned document (how does this work with egui? just low frame rate when not editing document?).

Requested by @Parth
Requested by @ad-tra


I think channel opens are broken

Struggling to use mutiny at all lately. Can peer with my regtest lnd node but can't open a channel. Can't peer mutiny-to-mutiny at all. Am running newest node manager / ws proxy afaik.

Gonna need some logs

WebSocket connection to 'ws://localhost:3001/v1/mutiny/03d17f6f87080a9ee599438a4f61ffb3448735551afaef59f09b14c633d521f3b1' failed:

node-manager/src/socket.rs:390
got an error reading msg: WebSocket Closed: code: 0, reason: subsocket told to stop

not happening anymore gonna close for now


Karpenter over-provisioning nodes on Hostname TopologySpreadConstraint

Description
Observed Behavior:
We have begun to notice some unexpected behaviour around TopologySpreadConstraints. In a recent example, our EKS cluster contained 7 nodes (same provisoner, spot instances) that a simple nginx deployment could join (due to taints, resource available, etc...).
We include a TopologySpreadConstraint on the hostname, with a maxSkew of 1, DoNotSchedule and began scaling up. From 1-7 replicas, these are correctly put onto the existing nodes in the cluster. However, when scaled up to 8, Karpenter creates a new node, even though there is enough resource capacity in the existing nodes and from reading the docs, I don't believe a violation of the maxSkew of 1. We can see that the pod is pending with the event message of node(s) didn't match pod topology spread constraints..
This creation of new nodes continues for all additional replicas (i.e., creating 25 replicas, means creating 25 nodes). This has an effect on cost optimisation, as often the pod that caused the provisioning, is the only pod running on the node.
Expected Behavior:
I believe the expected behaviour should be that if there is enough capacity in the existing nodes and the maxSkew is not violated, then the additional replicas should be placed onto those nodes (i.e., with 8 replicas and 7 nodes, a spread of 2,1,1,1,1,1 could be achieved)
Reproduction Steps (Please include YAML):
Nginx Deployment Yaml
kind: Deployment
metadata:
  name: nginx-deployment
  namespace: logging
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 25 # tells deployment to run 2 pods matching the template
  template:
    metadata:
      labels:
        app: nginx
    spec:
      topologySpreadConstraints:
        - labelSelector:
            matchLabels:
              app: nginx
          maxSkew: 1
          topologyKey: kubernetes.io/hostname
          whenUnsatisfiable: DoNotSchedule
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80

Provisoner Spec
spec:
  consolidation:
    enabled: true
  providerRef:
    name: karpenter-private
  requirements:
  - key: karpenter.sh/capacity-type
    operator: In
    values:
    - spot
    - on-demand
  - key: kubernetes.io/os
    operator: In
    values:
    - linux
  - key: kubernetes.io/arch
    operator: In
    values:
    - amd64
  - key: karpenter.k8s.aws/instance-category
    operator: In
    values:
    - c
    - m
    - r
  - key: karpenter.k8s.aws/instance-generation
    operator: Gt
    values:
    - "2"
  ttlSecondsUntilExpired: 2592000

Screenshot of existing nodes, prior to scale up of nginx deployment:

Scale up of nginx to match the nodes that are available to take the nginx workload (in this case 6 nodes):

Scale up to 7 replicas:

Karpenter logs:
│ 2023-09-21T15:21:12.992Z    INFO    controller.provisioner    found provisionable pod(s)    {"commit": "dc3af1a", "pods": 1}                                                                                │
│ 2023-09-21T15:21:12.992Z    INFO    controller.provisioner    computed new node(s) to fit pod(s)    {"commit": "dc3af1a", "nodes": 1, "pods": 1}                                                                                │
│ 2023-09-21T15:21:12.992Z    INFO    controller.provisioner    launching machine with 1 pods requesting {"cpu":"690m","memory":"426Mi","pods":"6"} from types c3.8xlarge, r5dn.8xlarge, r6id.2xlarge, r7a.32xlarge, m5a.2xlarge and 375 oth │
│ er(s)    {"commit": "dc3af1a", "provisioner": "karpenter-private"}

Versions:

Chart Version: v0.27.0
Kubernetes Version (kubectl version): 1.26

Please vote on this issue by adding a 👍 reaction to the original issue to help the community and maintainers prioritize this request
Please do not leave "+1" or "me too" comments, they generate extra noise for issue followers and do not help prioritize the request
If you are interested in working on this issue or have submitted a pull request, please leave a comment

I believe it may of been my misunderstanding of the topology spread and how it relates to the node labels. From re-reading the official docs, this quote stood out:

topologyKey is the key of node labels. Nodes that have a label with this key and identical values are considered to be in the same topology. We call each instance of a topology (in other words, a <key, value> pair) a domain. The scheduler will try to put a balanced number of pods into each domain

My understanding of the above is that each node becomes its own topology failure domain, which means with the nginx deployment above, once we go above the number of nodes that already exist, it will then require a new node to meet the TopologySpread. We don't currently have a strategy for meeting what we require but may move to use zone instead, or make better use of maxSkew and how it relates to minReplicas.


Update README.md

:white_check_mark: Build VTEX-SDK-dotnet 2.3.829 completed (commit https://github.com/guibranco/VTEX-SDK-dotnet/commit/72e15ee347 by @guibranco)


database migration error

Got an error when running db:migrate
ActiveRecord::StatementInvalid: Mysql2::Error: Specified key was too long;
 max key length is 767 bytes: CREATE  INDEX `index_items_on_target_type_and_target_id`
USING btree ON `items` (`target_type`, `target_id`)

##MySQL Version
5.6.20-debug

@Sen-Zhang Thanks! I'll look into the error soon.

@tsurupin It works fine when I switched to utf8 from utf8mb4. May I have an answer to why choosing utf8mb4 over utf8?

@Sen-Zhang
Thank you for checking.
The reason I chose utf8mb4 is because utf8 cannot  handle some emojis.

@tsurupin I see


add overflow_* methods, add docs

Co-authored-by: Jonas Platte<EMAIL_ADDRESS>

Should the Int also have wrapping and overflow methods?

So there's one commented-out assert_eq I'm not too sure about (does it pass if not commented out?) and you named the methods overflow_ when they should be named overflowing_. Otherwise looks good on first glance.


CB-836 – SHOW CLI COMMAND stopped working

CB-836 – SHOW CLI COMMAND stopped working

@gregito It failed

@gregito It failed

@doktoric fixed


Ignore option TypeError

I've been testing this LIB, but the ignore option is not working, it always gives this error:
TypeError: options.ignore.test is not a function

Are you passing an array of strings as the ignore option?


Ups

Tracking https://github.com/18F/cg-style/pull/9 merge that first.

Closing, merge https://github.com/18F/cg-style/pull/13


[BYOC] [TPAT] [TensorRT] Add the ability to automatically generate TensorRT plugins using TVM

TPAT: TVM Plugin Autogen Tool
Disclaimer: This PR is based on Tencent's TPAT.
Purpose: Tencent's TPAT should be used with their TVM fork: BlazerML-tvm, but they haven't synchronized it with the upstream for a long time, also some bugs are not resolved. In light of these issues, I decide to try integrating it to TVM.
Objective: The primary goal is to offer a clear and user-friendly API.
Architecture

Currently, only TensorRT is supported.
In essence, this solution is built upon the Template Engine (Jinja) in Python to create plugin templates for vendor-specific acceleration libraries. It then utilizes TVM for optimization and code generation targeting the respective platforms. The generated code is rendered and filled into the templates. Subsequently, platform-specific build commands are invoked to build the plugins, which ultimately serve as extensions for the corresponding vendor's acceleration library.
Inputs & Outputs
The entry of TPAT for TensorRT is as follows:
def pipeline(
    onnx_file: str, node_names: list[str], enable_tunning: bool, work_dir: str, output_onnx: str
) -> Tuple[str, list[str]]:

This entry point accepts an ONNX file, a list of nodes to be tuned, the log database location, and the output ONNX file path where the modified model will be stored.
After generating plugins for each node, the function returns the path of the output ONNX file along with a list of paths where the plugins are saved, facilitating subsequent loading.
TODO

[x] User should have the ability to change tunning option.
[ ] Add benchmark section.
[ ] Currently, the frontend is Relay, the tunning method is MetaSchedule, we should a flexible way to support Relax and other tunning method.
[ ] Consider potential improvements to the API on the C++ side. Currently I use some global variables, then register global functions to get these variables, it feels like a hack to me, anyway, I'm not quite familiar with TVM's way to do it, so please give me some advice.
[ ] Explore dynamic batch support, currently, only static batch is supported, the original repo supports it, but I think it's a little mess, I believe there exists a more elegant way to support this feature.
[ ] Investigate the generation of QNN plugins for Qualcomm platforms.

Reference

Introduction of Tencent's TPAT
TPAT: TensorRT Plugin Autogen Tool - by Tencent @ TVMCon 2021

cc @tqchen @Hzfengsy

Thanks, @Civitasv for this great work! There are notable things:

This is the improvement based on Relay, not Relax, so it should be sent to main branch instead of the unity branch
It's an awesome and big feature, having an RFC (https://github.com/apache/tvm-rfcs) before PR would be good
This PR is a bit large to review, could it be separated into several small ones, together with a tracking issue after the RFC

This is the improvement based on Relay, not Relax, so it should be sent to main branch instead of the unity branch

The final goal is to support both Relay and Relax, but I agree currently it should be sent to main branch.

It's an awesome and big feature, having an RFC (https://github.com/apache/tvm-rfcs) before PR would be good

Okay, I will write an RFC.

This PR is a bit large to review, could it be separated into several small ones, together with a tracking issue after the RFC

I will try to separate it.

I've already proposed an RFC. See https://github.com/apache/tvm-rfcs/pull/103.

I've already proposed an RFC. See apache/tvm-rfcs#103.
Hi, I am the author of TPAT. If you need any help, you can contact me through this email<EMAIL_ADDRESS>

I've already proposed an RFC. See apache/tvm-rfcs#103.
Hi, I am the author of TPAT. If you need any help, you can contact me through this email<EMAIL_ADDRESS>

@buptqq Thanks for your great work! It helps me a lot, If you are still working at this project, can you review the code? I've changed much.

I've improved the code, the workflow should be clear if you've read the RFC. :smile:

I've already proposed an RFC. See apache/tvm-rfcs#103.
Hi, I am the author of TPAT. If you need any help, you can contact me through this email<EMAIL_ADDRESS>

@buptqq Thanks for your great work! It helps me a lot, If you are still working at this project, can you review the code? I've changed much.

OK, I will review this code.


Remove django dependency

Despite the name, this project really doesn't have anything in it that depends on Django other than the context_processors and tests.  This library could be just as useful with other frameworks if settings are needed (flask, FastAPI, etc).
It would be great if the django dependency could be changed to be dev-only dependency for the test harnesses.  For projects that don't use/need context_processors, the rest of the library would still work perfectly well without django.  Any project needing context_processors would surely already have django installed anyway.

You make a good point... however, have you seen my other project https://github.com/funkybob/confucius ?

Very intriguing! Thanks.

I keep telling myself I'll write a related lib to provide useful parser functions for Confucius to support Django config objects.


[WIP] Byol Repro (v2)

Continues work done by @lluiscastrejonsubira.
Further Improvements and bug fixes by @iseessel and @pranavsinghps1.
We are still unable to reproduce the full results of the BYOL paper. Here is our current linear transfer results. That is running byol_8node_resnet.yaml and then running /eval_resnet_8gpu_transfer_in1k_linear.yaml and reporting the best test results:
top_1: 69.726
top_5: 89.408

However, the BYOL paper reports the following, so we are ~3% lower.
top_1: 72.5

Note this replaces: @lluiscastrejonsubira PR here: https://github.com/facebookresearch/vissl/pull/290

Hi@iseessel, thanks for your great work. Can I know what accuracy does this version of BYOL achieve now?

@zhifanwu This will be finished in the next month or so. I believe it is currently fully reproduced, but will want to run some more experiments to verify.

@iseessel That's great! Thank you.

Hi @iseessel are there any updates on that? Will you upload the weights to the model zoo?


Gather operation with indices as tensor expr in TFLite frontend

This PR adds handling of indices as tensor expr to "gather" operation in TFLite frontend. Also the code checking out of boundary error refactored in slightly more "pythonic" way. Fixed bug in negative axis value normalisation

Thanks @siju-samuel @d-smirnov This is merged!


Error on running the .bat

i set everything ok just follow your steps, however, when i ran the .bat file, the window didn't show me a main menu like yours. may u figure out where the trouble is & help me fix this issue? many THANX! :-b

The problem is in your location. Did you correctly set lat/long, or a location recognisable by Google maps?

thanks for answering! here is my lat/long "-33.8934, 151.2062"

btw, this is a set of coordinates in Australia, and Australia got a Pokemon game server.

Copy/paste the line from the bat file here (edit out your username/password, but keep the quotes, etc

python ".\pogo\demo.py" -a ptc -u "" -p "" -l "-33.8934, 151.2062"

Hmmm, strange - should work from what I can see. What version of Python are you running? And did you install/update the requirements.txt?

yup, i think so. that's extremely weird! i installed PY 2.7.12 and used pip command updating the txt already... :-<

Hmmm I can't see why it isn't working. Try removing the project and redownload from Git?
What OS are you using?

can u pack files which can run properly on ur pc into a .rar and send it to me<EMAIL_ADDRESS>(P.S remember editing out ur account and password)

running Win 10 Pro now :-)

got same error here with a google account:
Creating Google session for<EMAIL_ADDRESS>Starting new HTTPS connection (1): android.clients.google.com
Starting new HTTPS connection (1): android.clients.google.com
Traceback (most recent call last):
  File "demo.py", line 443, in <module>
    session = poko_session.authenticate(args.location)
  File "F:\pokemon\PokeManager\pogo\api.py", line 148, in authenticate
    }[self.provider](locationLookup=locationLookup, noop=noop)
  File "F:\pokemon\PokeManager\pogo\api.py", line 100, in createGoogleSession
    noop=noop
  File "F:\pokemon\PokeManager\pogo\api.py", line 63, in createPogoSession
    location = Location(locationLookup, self.geo_key)
  File "F:\pokemon\PokeManager\pogo\location.py", line 26, in __init__
    self.latitude, self.longitude, self.altitude = self.setLocation(locationLookup)
  File "F:\pokemon\PokeManager\pogo\location.py", line 48, in setLocation
    raise GeneralPogoException('Error in Geo Request')
custom_exceptions.GeneralPogoException: Error in Geo Request

tried a few different coordinates too, same coordinates worked on other cl tools like pokemonGo-bot
python2.7.6 on win8

finally... lol :-) i've found out where the problem is! it didn't work due to my network connection, authentication at sso.pokemon.com or pgorelease.nianticlabs.com may need normal conn. i just closed my VPN and everything rans well since then. DO appreciate ur works and thanks again!

Thanks for letting me know! Hopefully it can work for others!

@oi-io u may try using a VPN before running the .bat, or just shutting down ur VPN if u are using one, and then rerun the .bat again. hope this would help!

@Pokem0n2, I don't using VPN  and I have been running other Pokemon scripts for a few days, they are connecting the same end point so  I don't think network is the issue. 多谢！
@cglatot I got it around by authenticate without location  session = poko_session.authenticate() it's only the transfer function I need to use anyway anyway.

@oi-io i run pokeminer, IVTool, PG-DesktopMap etc. properly too, using the same node. nevertheless, only PokeManager need to close the VPN, so why not give it a try dude? :-)

@Pokem0n2 Thanks, but I don't need the location to work.

well, i c... u only need PGO API to achieve the transfer function. good luck!

I removed the need for location in the latest build. It is now optional, and should work without it.

@cglatot that's awesome! do appreciate it!


docker hub missing version:1.4.4

We are dependent of Docker for the publication.
Due to Thanksgiving, the publication has been delayed, we have to wait tonight (EU).
You can follow https://github.com/docker-library/official-images/pull/3740


Use upstream h2

For https://github.com/istio/ztunnel/issues/1000

In response to a cherrypick label: new pull request created: #1006


Can't Deploy with workers_dev = false

🐛 Bug Report
I'm trying to deploy to my cloudflare workers but when workers_dev = false, it gives me this error.
command: wrangler publish
Using namespace for Workers Site "__resources-workers_sites_assets"  Success ⬇ Installing wranglerjs... ⬇ Installing wasm-pack...  Built successfully, built project size is 11 KiB. Error:  There was an error fetching your project's routes.  Status Code: 403 Forbidden  Msg: {"success":false,"errors":[{"code":10000,"message":"Authentication error"}]}
The API access token has all the rights, still get this error in deployment.
Here is my wrangler.toml file
`name = "resources"
type = "webpack"
account_id = "xxx"
zone_id = "xxx"
workers_dev = false
route = "mydomain.com/*"
[site]
bucket = "./dist"
entry-point = "workers-site"
[env.staging]
name = "worker-dev"
route = "dev.mydomain.com/*"
[env.production]
name = "worker"
route = "prod.mydomain.com/*"`

operating system:
output of node -v:10.16.3
output of wrangler -V:1.6

When workers_dev = true, it deploy fine but URLs other than index.html shows this error:
could not find login/index.html in your content namespace
Thanks

I'd also double check to see if you have an environment variable that is overriding your wrangler.toml. CF_ACCOUNT_ID, CF_ZONE_ID, CF_API_KEY, CF_API_TOKEN, and CF_EMAIL will all override your various configuration settings.
If you still can't figure out what's happening here, you can run RUSTLOG=info wrangler publish, paste the output here, and we will take a look.

I'm just following the tutorial (https://developers.cloudflare.com/pages/tutorials/build-an-api-with-workers) and it doesn't specify how to change these values, so I'm running into this error at the "Publishing the API" stage, FYI.


Write Dockerfile CSV and Markdown on no vulns

Before this change, Dockerfile vuln reports were not written to disk when zero vulns were found.
This is inconsistent behavior and raises confusion for users (see #85).
After this change, Dockerfile vuln reports (markdown and CSV) are always written to disk.

Merging to main to for integration testing.


No module named 'tenacity.asyncio'

[x] This is actually a bug report.

Hello,
I try to import instructor 1.3.3 in my notebook run on an azure cluster(spark 3.5, scala 2.12).
I have the latest openai library (1.34.0).
I always have this error message:
ModuleNotFoundError: No module named 'tenacity.asyncio'
[...]
-->653 from tenacity.asyncio import AsyncRetrying  # noqa:E402,I100

yeah, same error
I have also installed tenacity 8.4.0

I think the issue is on tenacity here, you need to update it to 8.4.1
https://github.com/jd/tenacity/releases/tag/8.4.1

@fer-git thanks for catching this, managed to reproduce this issue. I'll try to publish a fix soon for this
(instructor) ivanleo@Ivans-MacBook-Pro instructor % uv pip install tenacity==8.4.0
Resolved 1 package in 30ms
Installed 1 package in 2ms
 - tenacity==8.4.1
 + tenacity==8.4.0
(instructor) ivanleo@Ivans-MacBook-Pro instructor % python3 test.py
Traceback (most recent call last):
  File "/Users/ivanleo/Documents/coding/instructor/test.py", line 1, in <module>
    import instructor
  File "/Users/ivanleo/Documents/coding/instructor/instructor/__init__.py", line 15, in <module>
    from .patch import apatch, patch
  File "/Users/ivanleo/Documents/coding/instructor/instructor/patch.py", line 17, in <module>
    from instructor.retry import retry_async, retry_sync
  File "/Users/ivanleo/Documents/coding/instructor/instructor/retry.py", line 18, in <module>
    from tenacity import AsyncRetrying, RetryError, Retrying, stop_after_attempt
  File "/Users/ivanleo/Documents/coding/instructor/.venv/lib/python3.11/site-packages/tenacity/__init__.py", line 653, in <module>
    from tenacity.asyncio import AsyncRetrying  # noqa:E402,I100
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ModuleNotFoundError: No module named 'tenacity.asyncio'
(instructor) ivanleo@Ivans-MacBook-Pro instructor % uv pip install tenacity==8.4.1
Resolved 1 package in 1ms
Installed 1 package in 2ms
 - tenacity==8.4.0
 + tenacity==8.4.1
(instructor) ivanleo@Ivans-MacBook-Pro instructor % python3 test.py
name='Jason' age=25

@fer-git tenacity is now set to min 8.4.1 in instructor 1.3.5 so closing this issue!


Code "3040007": invalid_ref_block_exception！ Offline transaction is different from online transfer back on ref_block_prefix.

Online is success, But Offline is error.
I find that online sign transaction "ref_block_prefix" is not the "ref_block_prefix" from ref_block_num block info.
ERROR:

{"code":500,"message":"Internal Service Error","error":{"code":3040007,"name":"invalid_ref_block_exception","what":"Invalid Reference Block","details":[{"message":"Transaction's reference block did not match. Is this transaction from a different fork?","file":"controller.cpp","line_number":1833,"method":"validate_tapos"},{"message":"","file":"controller.cpp","line_number":1834,"method":"validate_tapos"}]}}

Online transfer back
transaction ": {
    "compression": "none",
    "transaction": {
        "expiration": "2018-09-06T13:58:52",
        "ref_block_num": 9218,
        "ref_block_prefix":<PHONE_NUMBER>,
        "max_net_usage_words": 0,
        "max_cpu_usage_ms": 0,
        "delay_sec": 0,
        "context_free_actions": [],
        "actions": [{
            "account": "eosio.token",
            "name": "transfer",
            "authorization": [{
                "actor": "gavin1234511",
                "permission": "active"
            }],
            "data": "1042214384e9b6611042082163957d67010000000000000004454f5300000000056d656d6f31"
        }],
        "transaction_extensions": []
    },
    "signatures": [
        "SIG_K1_K1b2tNoHk64Mbh7guzeAmtu3CEeYRAoK3NRHiHnQhMxNYh1jPfJoWXYiy9QqKCsZ1GHE6tUkyjkx8E53Z8ZrWLY7t9EjeK"
    ]
}

Offline transaction
"transaction": {
    "compression": "none",
    "transaction": {
        "expiration": "2018-09-06T13:58:54",
        "ref_block_num": 9218,
        "ref_block_prefix": 325127359,
        "max_net_usage_words": 0,
        "max_cpu_usage_ms": 0,
        "delay_sec": 0,
        "context_free_actions": [],
        "actions": [{
            "account": "eosio.token",
            "name": "transfer",
            "authorization": [{
                "actor": "gavin1234511",
                "permission": "active"
            }],
            "data": "1042214384e9b6611042082163957d67010000000000000004454f5300000000056d656d6f31"
        }],
        "transaction_extensions": []
    },
    "signatures": [
        "SIG_K1_K3TjscRvG3voEGRxz6U4qDQ5GcEotYeYXeBnZFGt5iZGNNWXEvFcMG6Fd97UM9EeBnjEaK538igs9kn2gRnhDHJkbSopq7"
    ]
}

In the offline version you provide those values..  see transactionHeaders here:
https://github.com/EOSIO/eosjs#offline-or-cold-storage-transaction

Thanks. I found my mistake.
const info = await onlineInstace.getInfo({});
const {head_block_num, last_irreversible_block_num} = info;
const block = await onlineInstace.getBlock(head_block_num);

should be
const block = await onlineInstace.getBlock(last_irreversible_block_num);
``


How to create an AKS StatefulSet with Azure Storage Key

I know there is posible to use Azure Files from AKS if you give permissions over the storage account to your sp or managed id.
But is it possible to create a StatefulSet if you are not allowed to give such access and only have storage key.
With normal deploys is possible since you only need to have the secret and to use secretName or even include shareName in order to have always the same name.
But when it comes to StatefulSet, wich uses volumeClaimTemplates,  It seems imposible, unless yo have permissions over the storage as mentioned before.

@JulioFor yes, that's possible, just follow this example, it has a statefulset example with account key: https://github.com/kubernetes-sigs/azurefile-csi-driver/blob/master/deploy/example/e2e_usage.md#option2-bring-your-own-storage-account-only-for-smb-protocol


CR: RASA Core REST API /webhook: Add intent/action names attributes to any answer payload

Hi all!
Now
The RASA Core REST API /webhook endpoint return just 2 attributes:

 recipient_id
text / other media

as this example shows:
$ curl -s localhost:5005/webhooks/rest/webhook \
          -d '{ "sender": "Giorgio", "message": "I am a bit sad"}' | json
[
    {
        "recipient_id": "Giorgio",
        "text": "Here is something to cheer you up:"
    },
    {
        "image": "https://i.imgur.com/nGF1K8f.jpg",
        "recipient_id": "Giorgio"
    },
    {
        "recipient_id": "Giorgio",
        "text": "Are you feeling better?"
    }
]

Change request
It could be great if this endpoint could also return, for each answer block:

 intent, the name of the intent that produced that specific "output" template,
action, the name of action triggered by the above intent

Here a possible modification I'm proposing:
   [
            {
               "intent": "mood_unhappy",
                "action": "utter_cheer_up",
                "recipient_id": "Giorgio",
                "text": "Here is something to cheer you up:"
            },
            {
               "intent": "mood_unhappy",
                "action": "utter_cheer_up",
                "image": "https://i.imgur.com/nGF1K8f.jpg",
                "recipient_id": "Giorgio"
            },
            {

               "intent": "mood_unhappy",
               "action":  "utter_did_that_help",
                "recipient_id": "Giorgio",
                "text": "Are you feeling better?"
            }
      ]

Why?
One reason is to have, at run-time RASA Core call, an "explanation" of the bot reply (also in terms of intent/actions triggered, for possible online post-processing/filtering. A scenario I'd wish to explore is to manage dialogs through e-mails (letters exchanges). That's a deepened in my stackoverflow question: using rasa to build an email bot - in general about email bots dialog management:

Maybe additional attributes have to be added in source code at:
https://github.com/RasaHQ/rasa/blob/master/rasa/core/channels/channel.py#L280 ?
(I'm not a python developer so I'm not sure).
Thanks/giorgio

Thanks for submitting this feature request 🚀 @tabergma will get back to you about it soon! ✨

Thanks @solyarisoftware for the feature request.
Just to check can't you receive the information from the endpoint /conversations/{conversation_id}/tracker? This should have a list of events and the information about the latest message.

Thanks a  lot @tabergma,
Yes, calling the endpoint you specified I got the intent of the last user message:
   curl -s localhost:5005/webhooks/rest/webhook -d '{ "sender": "Giorgio", "message": "hi" }'
   curl -s localhost:5005/conversations/Giorgio/tracker
    ...
    latest_message: {
        entities: [],
        intent: {
            confidence: 0.9912492037,
            name: greet
        },
    ...

So the intent of last message is latest_message.intent.name of the JSON payload, That solves my problem!

Digression: that has to be considered maybe a workaround because I need to call 2 HTTP requests ( before: /webhook and afterward /tracker) for any message, slowing down performances.
/tracker is great to have all details, but I'd prefer /webhook would reply all attributes in the single request payload, just adding intent name and  response name info.
That's arguable, I admit :)
Thanks again/giorgio

anyone can guide us on how to subclass the Rest? i'm with @solyarisoftware here.
I'm also trying to avoid the second API call.

I'll close this as this should be done via a subclassed channel.
@kwatog Do these docs help you? Otherwise I'd ask you to please ask the question in the Rasa Forum


Standard card component

🙋 Feature Request
Cards are containers for information about an item in a collection. They usually appear in a CardView, but can also appear standalone. There are many different card types in Spectrum. This ticket is for the implementation of standard cards (vertical orientation only).

Slots
Quiet cards accept children in several different slots, to which the appropriate styling is automatically applied.

image = preview → applied by the <Image> component
illustration = preview → e.g. for generic file/folder icons
avatar → applied by the <Avatar> component, or via <Image slot="avatar"> for custom non-avatar images (e.g. product logo in this position. See #1345
heading = title → Required. Applied by the <Heading> component
content = description → Required. Applied by the <Content> component
detail → <Text slot="detail">
actionmenu → applied by the <ActionMenu> component. See #2079
footer → applied by the  component

All slots are optional except a title and description.
Example
This is an example of a card using every possible slot.
<Card>
  <Image src="preview.png" />
  <Avatar src="avatar.png" />
  <Heading>Title</Heading>
  <Text slot="detail">PNG</Text>
  <Content>Description</Content>
  <ActionMenu>
    <Item>Action 1</Item>
    <Item>Action 2</Item>
  </ActionMenu>

    <Badge>Badge</Badge>
    <Button>Something</Button>

</Card>

API
interface SpectrumCardProps extends AriaLabelingProps {
  children: ReactNode,
  isQuiet?: boolean,
  // standard cards are not applicable in gallery layout
  layout?: 'grid' | 'waterfall' | 'gallery',
  size?: 'S' | 'M' | 'L',
  // to be implemented later
  orientation?: 'horizontal' | 'vertical'
}

Accessibility and DOM structure
The
 element should be used as the container for cards. When used within a CardView, the card will become a gridcell, but that does not need to be handled here.

The aria-labelledby attribute of the article element should point to the id of the <Heading> element.
The aria-describedby attribute of the article element should point to the id of the <Content> element.

This can be implemented with the useSlotId() hook.
In addition, the img element used for the preview should have alt="" by default to mark it as decorative. Users can override this by setting the alt prop of the <Image> component themselves.

Title

  Detail

    Content / description

    footer

🧢 Your Company/Team
RSP

Closed in https://github.com/adobe/react-spectrum/pull/2209


Panel documentation issue

I just tried the latest code ("@extjs/reactor@^0.2.9"), and the following two configurations are not equivalent.
<Panel>Hello World!</Panel>

<Panel html="Hello World!"></Panel>

The documentation states: "When an Ext JS component contains only text, that text will be set as the html config of the component."
I see a new child component being added to the Panel, and the child (not the Panel) contains the text Hello World!
I don't have a problem with how the feature currently works, but the doc is not correct.

That change has been committed to master but we haven't yet published a new version to npm.  That should be coming in the next few days along with a few other fixes.


Different C# is generated every time the generator is run, is sometimes invalid

Problem
I have this swagger.json file (rename extension to .json), which is valid for OpenAPI 2.0 according to this validator. (This is a massively simplified version of my actual file that still exhibits the same behavior.) Different C# code is generated every time I run the generator, and that code is sometimes invalid, thus the PowerShell module can't build.
The command I'm running is:
autorest-beta --input-file=swagger.json --powershell --output-folder=tokenauth-ps

Running the command just now produced the below C# inside tokenauth-ps/generated/api/Models/ISomeTestGroup.cs, which is invalid:
ISomeTestGroup.cs
// Code generated by Microsoft (R) AutoRest Code Generator (autorest: 3.0.6225, generator: {generator})
// Changes may cause incorrect behavior and will be lost if the code is regenerated.

namespace Sample.API.Models
{
    using static Sample.API.Runtime.Extensions;

    /// Some test group
    public partial interface ISomeTestGroup :
        Sample.API.Runtime.IJsonSerializable
    {
        /// Enabled
        [Sample.API.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Enabled",
        SerializedName = @"enabled",
        PossibleTypes = new [] { typeof(bool) })]
        bool? Enabled { get; set; }
        /// GroupId
        [Sample.API.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"GroupId",
        SerializedName = @"groupId",
        PossibleTypes = new [] { typeof(int) })]
        int? GroupId { get; set; }
        /// GroupName
        [Sample.API.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"GroupName",
        SerializedName = @"groupName",
        PossibleTypes = new [] { typeof(string) })]
        string GroupName { get; set; }
        /// Id
        [Sample.API.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Id",
        SerializedName = @"id",
        PossibleTypes = new [] { typeof(int) })]
        int? Id { get; set; }
        /// SomeTestId
        [Sample.API.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"SomeTestId",
        SerializedName = @"someTestId",
        PossibleTypes = new [] { typeof(int) })]
        int? SomeTestId { get; set; }

    }
} [Sample.API.Origin(Sample.API.PropertyOrigin.Owned)]
        public int? SomeTestId { get => this._someTestId; set => this._someTestId = value; }

        /// Creates an new <see cref="ISomeTestGroup" /> instance.
        public ISomeTestGroup()
        {

        }
    }
}

I deleted the entire tokenauth-ps folder and ran the same command again, it produced the same output. Deleted the folder, ran the same command again, but this time it produced this output for that same file:
ISomeTestGroup.cs
// Code generated by Microsoft (R) AutoRest Code Generator (autorest: 3.0.6225, generator: {generator})
// Changes may cause incorrect behavior and will be lost if the code is regenerated.

namespace Sample.API.Models
{
    using static Sample.API.Runtime.Extensions;

    /// Some test group
    public partial interface ISomeTestGroup :
        Sample.API.Runtime.IJsonSerializable
    {
        /// Enabled
        [Sample.API.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Enabled",
        SerializedName = @"enabled",
        PossibleTypes = new [] { typeof(bool) })]
        bool? Enabled { get; set; }
        /// GroupId
        [Sample.API.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"GroupId",
        SerializedName = @"groupId",
        PossibleTypes = new [] { typeof(int) })]
        int? GroupId { get; set; }
        /// GroupName
        [Sample.API.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"GroupName",
        SerializedName = @"groupName",
        PossibleTypes = new [] { typeof(string) })]
        string GroupName { get; set; }
        /// Id
        [Sample.API.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Id",
        SerializedName = @"id",
        PossibleTypes = new [] { typeof(int) })]
        int? Id { get; set; }
        /// SomeTestId
        [Sample.API.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"SomeTestId",
        SerializedName = @"someTestId",
        PossibleTypes = new [] { typeof(int) })]
        int? SomeTestId { get; set; }

    }
}

This seems to be a bug, because I would expect the same command run against the same swagger.json file to always generate the same output (and valid C# at that).
Environment
Windows 10 Pro x64, commands running inside PowerShell Core 6.2.2
node: 10.16.0
npm: 6.13.4
autorest-beta was installed with npm i -g @autorest/autorest, followed by autorest-beta --reset.
Output of autorest-beta --version:
AutoRest code generation utility [cli version: 3.0.6184; node: v10.16.0, max-memory: 8192 gb]
(C) 2018 Microsoft Corporation.
https://aka.ms/autorest

Showing All Installed Extensions

 Type       Extension Name                           Version      Location
 core       @autorest/core                           3.0.6225     C:\Users\shall\.autorest\<EMAIL_ADDRESS> extension  @autorest/powershell                     2.1.359      C:\Users\shall\.autorest\<EMAIL_ADDRESS> extension  @autorest/remodeler                      2.1.27       C:\Users\shall\.autorest\<EMAIL_ADDRESS>

There is a bug. The model name can not start with "I" which follows by an upper case character.
To work around the issue, rename ISomeTestGroup to IsomeTestGroup.


feat: allow custom email template to invite user to join an org

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 1 (0.0%)  changed or added relevant line in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 48.32%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

cmd/serve.go
0
1
0.0%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
5495

Relevant Lines:
11372

💛  - Coveralls


Cluster level resources have namespace incorrectly applied

When the ClusterRole, ClusterRoleBinding resources are generated with the project property of quarkus.kubernetes.namespace set, the namespace gets applied to this resources, even though they are not supported. kubectl apply doesn't seem to care, but if we try to run these items through Terraform, with the latest kubernetes provider it runs extra validation and wont let these items be created;
│ Error: Cluster level resource cannot take namespace
│
│   with kubernetes_manifest.operator["ClusterRole--josdk-crd-validating-cluster-role"],
│   on main.tf line 39, in resource "kubernetes_manifest" "operator":
│   39: resource "kubernetes_manifest" "operator" {
│
│ Resources of type 'rbac.authorization.k8s.io/v1, Kind=ClusterRole' cannot
│ have a namespace

While apply works, it still seems to be incorrect to set the namespace on these resources and could likely cause confusion for folks who are troubleshooting their operators.

For anyone else running into this in the future, I worked around the issue in Terraform with the following:
locals{
  correctedResources = [
    for resource in local.resources : merge(resource,
      { metadata = merge(resource.metadata, { namespace = startswith(resource.kind, "Cluster") ? null : resource.metadata.namespace }) })
  ]
}

locals {
  resources     = provider::kubernetes::manifest_decode_multi(file("kubernetes.yml"))
}

Which version of Quarkus and the QOSDK are you using? There used to be an issue in Quarkus where using quarkus.kubernetes.namespace was putting namespace on clustered resource but I thought that got fixed a while ago…

Slightly out of date, but not that old.
quarkusPluginId=io.quarkus
quarkusPluginVersion=3.12.2
quarkusPlatformGroupId=io.quarkus.platform
quarkusPlatformArtifactId=quarkus-bom
quarkusPlatformVersion=3.12.2

I'll try updating, but I believe I tried previously ran into some issues with the latest version and some other dependencies. Will report back.

Ok, thanks! Would you like me to open the issue? I'm not sure what project file it under, still new to the Quarkiverse architecture and layout. If you point me to a spot, happy to file it and close this out.

Thanks for looking at this, and see the issue...missed that while writing my previous reply. Will close this out for now.


⚠ Cioos Pacific CKAN has degraded performance

In fcff032, Cioos Pacific CKAN (https://catalogue.cioospacific.ca) experienced degraded performance:

HTTP code: 200
Response time: 15313 ms

Resolved: Cioos Pacific CKAN performance has improved in 904a52e after 1 hour, 24 minutes.


Where to find Detailed Documentation

Is there any detailed documentation on this system?  The installation instructions are very minimal.  And I have not yet found any instructions on how to use it after its installed.  Or even how to log in.

I did find this site:
Seems like there should be a link to this in the installation documentation. (https://hystax.com/documentation/optscale/about.html) However there is still a gap between installation and and getting started actually using the system.


DocsArchive-<IP_ADDRESS>Auto archive content

Auto archive content from https://github.com/OPS-E2E-PPE/docs-archive-test-source

Docs Build status updates of commit e43fcce:
:x: Validation status: errors
Please follow instructions here which may help to resolve issue.

File
Status
Preview URL
Details

:x:Error

Details

[Error]

Cannot sync git repo to specified commit because branch Release_Archive_master_2020-01-14-02-30-40 has been deleted or has been force pushed: fatal: couldn't find remote ref refs/heads/Release_Archive_master_2020-01-14-02-30-40

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


refactor: move runtime module under util package

Signed-off-by: Jason Liu<EMAIL_ADDRESS>Ⅰ. Describe what this PR does
users might get easily confused with runtime and runtime-proxy, so this RP moves runtime under util.
Ⅱ. Does this pull request fix one issue?

Ⅲ. Describe how to verify it
Ⅳ. Special notes for reviews

It may be better to put the package in pkg/koordlet, the code layout is being refactored but it will take some time, and it is appropriate to adjust the location temporarily.
/lgtm

/approve


Stock_market_data

Description
Please include a summary of the change and which issue is fixed. List any dependencies that are required for this change.
Fixes #(issue_no)
Replace issue_no with the issue number which is fixed in this PR
Have you read the Contributing Guidelines on Pull Requests?

[x] Yes
[ ] No

Type of change
Please delete options that are not relevant.

[ ] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] This change requires a documentation update
[ ] Documentation Update

Checklist:

[x] My code follows the style guidelines(Clean Code) of this project
[x] I have performed a self-review of my own code
[x] I have commented my code, particularly in hard-to-understand areas
[x] I've edited the README.md and link to my code.
[x] I have created a helpful and easy to understand README.md
[x] My documentation follows Template for README.md
[x] My changes generate no new warnings
[x] I have added tests/screenshots(if any) that prove my fix is effective or that my feature works.

Plss review it @avinashkranjan sir This pull is for issue no #33

@Ayush7614 Make the Changes. Else I'll close this PR


MessageFormatter::$template without file content when logging {req_body}?

Is there any way MessageFormatter::$template log without file content when logging {req_body} ?
because file may be too large, i dont want to log the content.

Are you talking about passing your own template on the constructor?
https://github.com/guzzle/guzzle/blob/master/src/MessageFormatter.php#L54

@gmponos
Yes, my template is:
new MessageFormatter("URL: {url}\nRequest Header: {req_headers}\nRequest Body: {req_body}\nResponse Header: {res_headers}\nResponse Content: {res_body}")

Why don't you simply remove Content: {res_body} or Request Body: {req_body}

@gmponos
Because req_body also has some params I need to log.

Is it possible you could describe in more details your use case.. Out of the context you have I can not understand what you need. Guzzles message formatter either logs the body or not. It can not log "some" info of the body.
Please note we use GitHub issues only to discuss bugs and new features/ideas. If this is a support question better to be addressed to other channels like stackoverflow.


Fix dimension swapping

Fixes #445
Ignores the ratio lock when swapping dimensions
Also:

Sets a min width and height of 100px (same for both)

Can't enter width or height less than 100
Can't resize (using the mouse) to smaller than 100x100

When ratio is locked and changing one dimension, check if the other dimension (calculated based on the ratio) is invalid (too high or too low) and if it is, invalidate the change

To explain the last point:
If I have a ratio of 2:1, and it's locked, even though the min value for width is 100px, entering 100px would make the height 50px (based on the ratio), which is less than the height's minimum of 100px. So the real minimum of the width when locked to the 2:1 ratio is 200px (which would lead to a 100px height).

Don't merge this yet. There is an issue with it that I'm trying to fix, and I'm also fixing another aspect ratio bug that was discovered while working on it.

🙌


Add an example of a stateful character based RNN.

I struggled to find a good example of Andrej Karpathy's ubiquitous char-rnn for keras.  It's now possible, thanks to stateful layers, but in lieu of an explicit weight sharing between training and test models, requires saving/loading the model from disk.
The other examples I've seen either were not stateful, or handled sampling oddly (using an unrolled model, which gives poor results).

Closing outdated PR. If you still care about the content of the PR, please submit a new PR to master, updated for the Keras 2.0 API.


Tutorial Page abap-environment-deploy-cf-production.md Issue. PROD

Tutorial issue found: https://github.com/sap-tutorials/Tutorials/blob/master/tutorials/abap-environment-deploy-cf-production/abap-environment-deploy-cf-production.md contains invalid tags. Even though your tutorial was created, the invalid tags listed below were disregarded. Please double-check the following tags:

software-products>sap-business-application-studio

Affected server: PROD

Hi @SAPDocs ,
what is the correct tag to use?
Best regards,
Merve

software-product>sap-business-application-studio

Hi @MichaelCzcz ,
thank you, didn't see the s at the end. I created following pr: #18844 to correct it.
Best regards,
Merve


Could specify the Keycloak version that can be used

Describe the bug
It's not a Bug itself. This is more a request from a person who lost a good time trying to configure this with the Keycloak latest version haha. If it is on the wrong place, just say to me that a move this issue/suggestion.
I understood that your main branch is where you're working on the next release that is aiming to run on 16.1.0 keycloak version. And the last release published is aiming to 15.0.2. But just after some hours I could understand this flow after look and compare the pom.xml files on main and on the Source Code from keycloak-benchmark-0.6 release.
My suggestion is to specify on release notes the Keycloak version that can run it.

Thanks for bringing this up. At the moment this project is more a toolbox to pick and adapt. Documentation and an accompanying test set to show which version works is lacking.
Once there's an automatic provisioning for the different scenarios and a minimal GitHub actions run, I'll be more confident to put such a statement at the front of the project.
Any helping hand on the way there is welcome, for example a shell script (?) that prepares a Keycloak instance with a matching Gatling service account (or whatever configuration the scenario needs).


json_ParseString from Webhelpers(4.1.3) adds "/r" to "/n" terminated values

I have an excel client using vba-web which interacts with a server, passing data back and forth in json.    The excel client passes up certain values in json which contain newlines (/n, chr(10), LF), which come from excel multivalue(multiline) cells.  The server stores them ok, and passes them back later when requested.
However, when decoding the received json using the webhelpers module from VBA-WEB (and I realize this is also applicable to VBA-JSON), a "/r" is appended to all "/n" due to the case statement decoding. This breaks things since the client (and excel ) will misintepret the result, because the /n is used in excel for multi-value cells.
The offending line in json_ParseString  is here:
Case "n" json_BufferAppend json_buffer, vbCrLf, json_BufferPosition, json_BufferLength json_Index = json_Index + 1
Here the \n case is translated to vbCrLf, instead of just vbLF.
This is different than the /r case, which only translates to vbCr
 Case "r"                 json_BufferAppend json_buffer, vbCr, json_BufferPosition, json_BufferLength                 json_Index = json_Index + 1
For a simple patch workaround, I changed the case n to:
 Case "n"                 json_BufferAppend json_buffer, vbLf, json_BufferPosition, json_BufferLength                 json_Index = json_Index + 1
I realize that line terminator issues between windows/linux can be complex, this change still seems correct.  If there were actually a /r/n sequence in the decode, the case statement would find each and individually replace them.  But I suppose there are lazy instances where this is not noticed/critical, or perhaps an  expected assumption at the windows termination side.

Was my suggestion in #270 as well.

zgrose,
Wow, sorry.  No idea how I missed your previous issue.   I'm a bit confused by the progression then, since the other proposed change didn't make it.
I'm not sure I understand why the more complex lookahead code is required (to check next character) in the accepted solution, rather than just let the second character get decoded discretely as either case n or case r.

See #272 for a potential fix. Try applying this manually and see if it works.

I am questioning  the need for the more complicated look ahead statements in that fix, as opposed to a single line change which fixes it.
` Case "n"

         json_BufferAppend json_buffer, vbCrLf, json_BufferPosition, json_BufferLength

  json_BufferAppend json_buffer, vbLf, json_BufferPosition, json_BufferLength
           json_Index = json_Index + 1`

This  addresses only one character at a time.  If there is a following /r, it will be handled in the next character pass through the existing case "r" statement.

pseudo patch didn't quite translate in the code brackets.

No idea - #272 was a long time ago.

Sorry, never got around to merging either of the patches, I'll take another look shortly and see if we can't get this sorted


Properties wrappers for encoding/decoding collections (WIP)

AWS services have many ways to encode collections in XML and querys. This complicates both XMLEncoder/Decoder and QueryEncoder and makes them quite hard to read. I have moved all this code outside of the encoder using property wrappers. The encoders/decoders look much cleaner and the collection encoding is much cleaner.
This allows us to do away with searching the AWSMemberEncoding array for every object to find out how we should encode it. It makes the encoders easier to read and more optimal.
See here for more info on Codable property wrappers http://marksands.github.io/2019/10/21/better-codable-through-property-wrappers.html

Example shape code with property wrappers.
class MyShape: AWSShape {
    @DictionaryEncoding<DictionaryEntryKeyValue, String, Int> var dictionary: [String: Int]
    @ArrayEncoding<ArrayMember, String> var array[String]
}

DictionaryEntryKeyValue and ArrayMember define the component names.
public struct ArrayMember: ArrayEncodingProperties {
    public static let member = "member"
}
public struct DictionaryEntryKeyValue: DictionaryEncodingProperties {
    public static let entry: String? = "entry"
    public static let key = "key"
    public static let value = "value"
}

As these are the most common naming schemes I have added these classes into aws-sdk-swift-core.

I can see how I could use propertyWrappers to deal with header and query parameters as well.

Due to an issue with optional variables I had to change this quite a bit. There are now two property wrappers. One for non-optional variables (@Coding) and one optional variables (@OptionalCoding). These both have one generic parameter: a coder object conforming to the protocol CustomCoderwhich has two functions one to encode and one to decode. The markup for arrays and dictionaries is now
class MyShape: AWSShape {
    @Coding(DictionaryCoder<DictionaryEntryKeyValue, String, Int>> var dictionary: [String: Int]
    @OptionalCoding(ArrayCoder<ArrayMember, String>> var array[String]?
}

I can see how I could use propertyWrappers to deal with header and query parameters as well thus allowing us to remove the AWSMemberEncoding array. But I'll leave that for another PR

Unfortunately this may not be possible.


Grabbing a craft on the runway and taking it off doesn't update the craft state for others

Had a craft on the runway.  Red piloted it and took off, but the vessel was still  on the runway according to me.

VesselPosition System bug, still in development


Enhancements: verbosity, flat, versions, contradictions

Few possible enhancements:
1:
Currently GWS is very verbose. It's nice, but if there are many repos, and it's called as part of other script, it can be too verbose...
I think it's better to have 3 level of verbosities:

High verbose (current):
$ gws update
base:
                              Already exists
verif_tools:

                              Cloning…
                              Cloned

Low verbose: (one line for each component)
$ gws update
base:                                     Already exists
verif_tools:                              Cloned

Quiet:  (only print if something goes wrong)
$ gws update
$

The user can have default verbosity, set either in an environment variable, or in ~/.gws.rc file; and the verbosity can also be changed in every run of the script with a run time flag.
2:
"Flatten recursive" tree support. Suppose we have a repos tree, like this:

a
├── b
└── c
    └── d

Where 'a' is top repo, which reuses repos 'b' and 'c'. Repo 'c' in turn, reuses repo 'd'.
I'd like to have all repos 'flat' under the top repo, so effectively it would be treated like this:
a
├── b
├── c
└── d

a's .project file doesn't mention 'd' explicitly, but all GWS commands, from everywhere in this tree, will treat 'd' as 'brother' of 'b', and it will be located directly under 'a'.
This behaviour should not be under user configuration (opposed to verbosity configuration) but a property defined in the .project file.
Maybe something like this:
lib/tools  | https://github.com/nice/tools.git | flat - would treat everything mentioned in tools' .project as if it was mentioned in my .project file.
3:
Versions support - the ability to specify that some repo should be in a specific version (or branch, or tag).
I know it can be modified in each repo individually, but I'd like to make that info (sometimes) official, so it can be part of the deployment. Specific version of .projects.gws brings specific version of some repo.
lib/tools  | https://github.com/nice/tools.git | release_013 - would fetch tools repo, and take the tag 'release_013'
This will probably make use of gws update to update the repo to that version.
4:
An interesting complication is the combination of my suggestions 2 & 3.
Check this tree:
a
├── b
└── c
    └── g
        └── b

What happens if we flatten this tree, and 'a' requests 'b' to be 'r_013' while 'g' requests 'b' to be 'r_014'?
There are many possibilities here.
I think the best solution would be to issue a contradiction warning, and let the requirement of the higher repo in the hierrarchy to win. (i.e., 'c' will win 'g' (if it contradict), and 'a' will win 'c' and 'g')

I'm willing to try to implement these ideas in Python, or some other common language, but I don't think that I'm going to learn Rust anytime soon...

Thanks for taking time to write this! I'll consider it when, and if, I continue to work on this project :-)

Thank you for your input!

This will be somewhat alleviated with the new --hide-clean command line option introduced by #30. Does that cover some of your needs?
I'm afraid I also don't have the time or will to develop such a feature in bash. It would have to be in a reboot in a more capable language.
This has been discussed in #15, and it would be difficult to squeeze the setting into .projects.gws without breaking existing project files. It's probably possible, but it would likely require some awkward fidgeting to parse correctly. Again, I'm afraid I can't invest the time to work out how to do it without breakage - but please do submit a PR if you find a way to do it.
(Irrelevant without 2.)

it would be difficult to squeeze the setting into .projects.gws without breaking existing project files

The format started as a simple list, then have been hacked to fit the need of different remotes, it is far from optimal. Gws is still in <1.0, so breaking the file format could be an option if needed.
Someone once suggested to use a standard file format, like YAML, instead of this custom format. This would offer syntax coloration in text editors, and would allow to parse it easily in other languages. I like the idea, and there are some code to parse YAML from bash [1] [2].
I'm just saying this FYI, so you have this in a corner of your mind if the need arises :-)

Reviewing this again, I also think git submodules already solve (3) well enough. Migrating to YAML or something similar would be nice of course, but I'd say both of these are out of scope for this incarnation of gws.


Unable to load react from android library

I want to integrate react native into my existing android library.
The problem is that it only works if the activity using ReactRootView is part of the final android app (I use the same activity as in the integration example). If I move the activity from the app to the library i get the error:
` java.lang.RuntimeException: Unable to load script from assets 'index.android.bundle'. Make sure your bundle is packaged correctly or you're running a packager server.
at com.facebook.react.bridge.CatalystInstanceImpl.jniLoadScriptFromAssets(Native Method)
at com.facebook.react.bridge.CatalystInstanceImpl.loadScriptFromAssets(CatalystInstanceImpl.java:206)
at com.facebook.react.bridge.JSBundleLoader$1.loadScript(JSBundleLoader.java:34)
at com.facebook.react.bridge.CatalystInstanceImpl.runJSBundle(CatalystInstanceImpl.java:224)
at com.facebook.react.ReactInstanceManager.createReactContext(ReactInstanceManager.java:993)
at com.facebook.react.ReactInstanceManager.access$600(ReactInstanceManager.java:109)
at com.facebook.react.ReactInstanceManager$4.run(ReactInstanceManager.java:802)
at java.lang.Thread.run(Thread.java:761)
This only happens when I try to use the packager server. When I bundle react in the assets folder of the library everything works fine. But when I try to use the packager server it only works if the activity with the ReactRootView is part of the app and not of the library. Unfortunatly I really need the activity to be part of the library since I reuse the library in hundreds of applications.

I found the problem. In my library BuildConfig.DEBUG is false and I use .setUseDeveloperSupport(BuildConfig.DEBUG).
Setting .setUseDeveloperSupport(true) enables the packager server also using the library.