In-process transport

This includes the transport, the core API, the core test fixtures, C++ API, and C++ end2end tests.
At the current time, this still does not support proper cancellation as well as some assorted filters.
I'd appreciate comments if anyone has time for an early pass, though some things still have to change as described.

Fantastic!!

No significant performance differences

No significant performance differences

No significant performance differences

Performance differences noted:
Benchmark                  cpu_time    real_time
-------------------------  ----------  -----------
BM_MetadataRefUnrefStatic  -7%         -7%

No significant performance differences

No significant performance differences

No significant performance differences

No significant performance differences

No significant performance differences

This has now passed all core end2end tests on my desktop. I think it is ready for review by @wcevans . There is certainly a memory leak here that I need to address, but I think that's a matter of using GRPC_ERROR_REF/UNREF properly (and there might be a few places where those aren't clean).

No significant performance differences

No significant performance differences

No significant performance differences

No significant performance differences

No significant performance differences

No significant performance differences

No significant performance differences

No significant performance differences

Performance differences noted:
Benchmark                                         cpu_time    real_time
------------------------------------------------  ----------  -----------
BM_HasClearGrpcStatus<ErrorWithNestedGrpcStatus>  +6%         +6%

No significant performance differences

No significant performance differences

No significant performance differences

No significant performance differences

No significant performance differences

No significant performance differences

No significant performance differences

Rebased master to catch latest updates, also squashed commits.

  I will address and resolve soon.

@wcevans : PTAL; I think I've addressed all your comments. Thanks!

[trickle] No significant performance differences

[microbenchmarks] Performance differences noted:
Benchmark                                   cpu_time    real_time
------------------------------------------  ----------  -----------
BM_ClosureSched2OnExecCtx                   +5%         +5%
BM_ClosureSched3OnExecCtx                   +4%         +4%
BM_ErrorGetIntFromNoError                   +4%
BM_ErrorGetMissingInt                       +13%        +14%
BM_ErrorGetStatusCode<ErrorWithHttpError>   +6%         +6%
BM_HasClearGrpcStatus<ErrorCancelled>       +4%         +4%
BM_HasClearGrpcStatus<ErrorNone>            +8%         +9%
BM_HasClearGrpcStatus<ErrorWithGrpcStatus>  +8%         +8%
BM_HasClearGrpcStatus<ErrorWithHttpError>   +7%         +7%
BM_HasClearGrpcStatus<SimpleError>          +15%        +15%

@wcevans : Can you take a look at commit 8103512 ? That is the diff since the last time you saw this and I think it now properly does stream refcounting to integrate with call arena's

@wcevans : hold that thought. This still has the  use-after-free. Will check into it some more.

[trickle] No significant performance differences

[microbenchmarks] Performance differences noted:
Benchmark                                     cpu_time    real_time
--------------------------------------------  ----------  -----------
BM_ErrorGetIntFromNoError                     +5%         +5%
BM_ErrorGetMissingInt                         +15%        +14%
BM_ErrorGetStatus<ErrorCancelled>             +9%         +9%
BM_ErrorHttpError<ErrorWithGrpcStatus>        +4%         +5%
BM_ErrorHttpError<ErrorWithHttpError>                     +4%
BM_ErrorHttpError<ErrorWithNestedGrpcStatus>              +4%
BM_ErrorHttpError<SimpleError>                +5%         +5%
BM_HasClearGrpcStatus<ErrorWithHttpError>     +5%         +7%
BM_HasClearGrpcStatus<SimpleError>            +12%        +12%

[trickle] No significant performance differences

[microbenchmarks] Performance differences noted:
Benchmark                                     cpu_time    real_time
--------------------------------------------  ----------  -----------
BM_ErrorGetIntFromNoError                     +4%         +5%
BM_ErrorGetMissingInt                         +11%        +11%
BM_ErrorGetStatus<ErrorCancelled>             +5%         +5%
BM_ErrorGetStatusCode<ErrorWithHttpError>     +4%         +4%
BM_ErrorHttpError<ErrorWithHttpError>         +6%         +6%
BM_ErrorHttpError<ErrorWithNestedGrpcStatus>  +4%         +5%
BM_ErrorHttpError<SimpleError>                +9%         +9%
BM_HasClearGrpcStatus<ErrorWithHttpError>     +9%         +8%
BM_HasClearGrpcStatus<SimpleError>            +17%        +16%

@wcevans : Ok, I think use-after-free is now under control. Can you review commit bf60251 ? Thanks!

LGTM

Jenkins, test this please

[trickle] No significant performance differences

I believe that all relevant tests will pass this time as I've gotten the previously problematic tests to pass on my instance.

[trickle] No significant performance differences

[microbenchmarks] No significant performance differences

Squashed commits down to 2: the first to incorporate everything that was reviewed and the 2nd to disable 1 specific expectation (questionable) in async_end2end_test that merits a later revisit.

Jenkins, test this please

[trickle] No significant performance differences

[trickle] No significant performance differences

[microbenchmarks] No significant performance differences

Jenkins, test this please

[trickle] No significant performance differences

[trickle] No significant performance differences

[microbenchmarks] No significant performance differences

Test failures: interop (infrastructural)

This is very useful addition - thanks for pushing this through.
I am thinking of using this as a means to expose some functionality as a library (for in-proc use), which otherwise primarily exists as a standalone micro-service. Want to check if there are any caveats to doing so and if this is a advisable use of this feature. Basically, the body of code in question is currently  exposed as a gRPC service, but there are some scenarios where this needs to be made available in-proc. I want to avoid defining yet another wrapper to expose the code as a library and instead am thinking of re-using the gRPC interfaces themselves as the in-proc library variant too. The idea is to just have the client avail the functionality through the gRPC compiler generated ServerStub constructed with an "InProcessChannel" constructed using the Server::InProcessChannel method. The main motivation is to use gRPC messaging centric API as a means of ABI (application binary interface) safety, instead of having to newly define an ABI safe C API (the server and clients are independently compiled C++ binaries).
However, I am not sure if this is a sensible thing to do; my main questions/concerns are:

The server code will be isolated in a separate DLL and the client is compiles independently, potentially with a different compiler version. Thus the Server::InProcessChannel created "Channel" object will be constructed in the server DLL and then be passed across the server DLL boundary to the client. The client then uses this to create the ServerStub for accessing the in-proc server. Is this safe - particularly when the client is an independently compiled C++ binary?
What any the main in-efficiencies, if any, of using the InProcess channel as opposed to exposing the code as a standard C library? Specifically, is there any redundant  copying of messages across the server and client?
Any other caveats - functional or performance wise?

Would really appreciate any thoughts and insights.
Regards,
Amit

Not answering any questions... But we might want to think about an
in-process name resolver at some point to better enable "grpc-as-a-linker"
scenarios... Think:
ServerBuilder b;
b.RegisterInProcessName("foo");
//...
Then we could NewStub("inproc:foo") and make where to hit totally config
defined.
On Mon, Aug 7, 2017, 9:48 AM Amit Agarwal<EMAIL_ADDRESS>wrote:

This is very useful addition - thanks for pushing this through.
I am thinking of using this as a means to expose some functionality as a
library (for in-proc use), which otherwise primarily exists as a standalone
micro-service. Want to check if there are any caveats to doing so and if
this is a advisable use of this feature. Basically, the body of code in
question is currently exposed as a gRPC service, but there are some
scenarios where this needs to be made available in-proc. I want to avoid
defining yet another wrapper to expose the code as a library and instead am
thinking of re-using the gRPC interfaces themselves as the in-proc library
variant too. The idea is to just have the client avail the functionality
through the gRPC compiler generated ServerStub constructed with an
"InProcessChannel" constructed using the Server::InProcessChannel method.
The main motivation is to use gRPC messaging centric API as a means of ABI
(application binary interface) safety, instead of having to newly define an
ABI safe C API (the server and clients are independently compiled C++
binaries).
However, I am not sure if this is a sensible thing to do; my main
questions/concerns are:

The server code will be isolated in a separate DLL and the client
is compiles independently, potentially with a different compiler version.
Thus the Server::InProcessChannel created "Channel" object will be
constructed in the server DLL and then be passed across the server DLL
boundary to the client. The client then uses this to create the ServerStub
for accessing the in-proc server. Is this safe - particularly when the
client is an independently compiled C++ binary?
What any the main in-efficiencies, if any, of using the InProcess
channel as opposed to exposing the code as a standard C library?
Specifically, is there any redundant copying of messages across the server
and client?
Any other caveats - functional or performance wise?

Would really appreciate any thoughts and insights.
Regards,
Amit
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/grpc/grpc/pull/11145#issuecomment-320717406, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AJpudUtoBH3LhmplWiUfCi2BQp897HwDks5sVz_wgaJpZM4Nb6n3
.

Re: performance, there's a message copy involved here. It might be
avoidable but would need some engineering debate.
In previous systems we've also built in-process stubs which approached
function call level performance (I think the difference was 100ns vs 1-2us
overhead)
On Mon, Aug 7, 2017, 11:44 AM Craig Tiller<EMAIL_ADDRESS>wrote:

Not answering any questions... But we might want to think about an
in-process name resolver at some point to better enable "grpc-as-a-linker"
scenarios... Think:
ServerBuilder b;
b.RegisterInProcessName("foo");
//...
Then we could NewStub("inproc:foo") and make where to hit totally config
defined.
On Mon, Aug 7, 2017, 9:48 AM Amit Agarwal<EMAIL_ADDRESS>wrote:

This is very useful addition - thanks for pushing this through.
I am thinking of using this as a means to expose some functionality as a
library (for in-proc use), which otherwise primarily exists as a standalone
micro-service. Want to check if there are any caveats to doing so and if
this is a advisable use of this feature. Basically, the body of code in
question is currently exposed as a gRPC service, but there are some
scenarios where this needs to be made available in-proc. I want to avoid
defining yet another wrapper to expose the code as a library and instead am
thinking of re-using the gRPC interfaces themselves as the in-proc library
variant too. The idea is to just have the client avail the functionality
through the gRPC compiler generated ServerStub constructed with an
"InProcessChannel" constructed using the Server::InProcessChannel method.
The main motivation is to use gRPC messaging centric API as a means of ABI
(application binary interface) safety, instead of having to newly define an
ABI safe C API (the server and clients are independently compiled C++
binaries).
However, I am not sure if this is a sensible thing to do; my main
questions/concerns are:

The server code will be isolated in a separate DLL and the client
is compiles independently, potentially with a different compiler version.
Thus the Server::InProcessChannel created "Channel" object will be
constructed in the server DLL and then be passed across the server DLL
boundary to the client. The client then uses this to create the ServerStub
for accessing the in-proc server. Is this safe - particularly when the
client is an independently compiled C++ binary?
What any the main in-efficiencies, if any, of using the InProcess
channel as opposed to exposing the code as a standard C library?
Specifically, is there any redundant copying of messages across the server
and client?
Any other caveats - functional or performance wise?

Would really appreciate any thoughts and insights.
Regards,
Amit
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/grpc/grpc/pull/11145#issuecomment-320717406, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AJpudUtoBH3LhmplWiUfCi2BQp897HwDks5sVz_wgaJpZM4Nb6n3
.

Hi @amitaga ,
Thanks for your comments. I'm going to answer here but I think in the future a better forum would be the grpc-io mailing list.

I think it would be great to try that out. There is no fundamental reason why that wouldn't work: the only requirement is that the client and server live in the same address space. I don't see any reason to believe that it wouldn't be fine for the server implementation to be in a DLL; as long as the client has a way to call InProcessChannel on the server it would be fine.

Indeed, assuming that you're using protobuf for communication, you'll have a protobuf serialization and deserialization stage. The in-process transport is still a message-passing programming model and not a shared-memory programming model (even though it is implemented using shared-address space). For small messages, we're currently benchmarking a streaming RPC message ping-pong at around 2 us and a unary call at around 6 us. It's substantially higher than a function call but still allows the communication model of gRPC in a much faster way than TCP over localhost (which gives about 10 us for streaming ping-pong and 50 us for unary call).

The main functional difference is what @ctiller mentioned: it's not totally transparent whether the target is in-process or external because of the separate InProcessChannel method. Having a name resolution for in-process transport would allow common use of CreateChannel just using different server target names and we can file a feature request for that but I don't have an ETA for now.

Please let us know how it works if you get a chance to try this out!

I'd note the name resolution idea might be a great place for a new
contributor to start.
On Mon, Aug 7, 2017, 7:10 PM Vijay Pai<EMAIL_ADDRESS>wrote:

Hi @amitaga https://github.com/amitaga ,
Thanks for your comments. I'm going to answer here but I think in the
future a better forum would be the grpc-io mailing list.

I think it would be great to try that out. There is no fundamental
reason why that wouldn't work: the only requirement is that the client and
server live in the same address space. I don't see any reason to believe
that it wouldn't be fine for the server implementation to be in a DLL; as
long as the client has a way to call InProcessChannel on the server it
would be fine.
2.
Indeed, assuming that you're using protobuf for communication, you'll
have a protobuf serialization and deserialization stage. The in-process
transport is still a message-passing programming model and not a
shared-memory programming model (even though it is implemented using
shared-address space). For small messages, we're currently benchmarking a
streaming RPC message ping-pong at around 2 us and a unary call at around 6
us. It's substantially higher than a function call but still allows the
communication model of gRPC in a much faster way than TCP over localhost
(which gives about 10 us for streaming ping-pong and 50 us for unary call).
3.
The main functional difference is what @ctiller
https://github.com/ctiller mentioned: it's not totally transparent
whether the target is in-process or external because of the separate
InProcessChannel method. Having a name resolution for in-process transport
would allow common use of CreateChannel just using different server target
names and we can file a feature request for that but I don't have an ETA
for now.
Please let us know how it works if you get a chance to try this out!
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/grpc/grpc/pull/11145#issuecomment-320830110, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AJpudUjK5zCuR6o0qYXN_DFtt0hLD4v0ks5sV8OsgaJpZM4Nb6n3
.

Thanks Vijay and Craig. Sorry about misusing the PR's comments section for this discussion - for future discussions, I will use the grpc-io mailing list as suggested.
The name based in-process server discovery and channel creation method is clearly a much cleaner approach from an API perspective and is how the Java inprocess (https://grpc.io/grpc-java/javadoc/io/grpc/inprocess/package-summary.html) support is exposed. I will take a stab at designing and implementing something along similar lines for C++. I will start navigating other PRs and the code to get started; it will be helpful if you have any pointers to for me to get started.

I tried separating the server and client into separate binaries and was able to get the in-proc channel to work. My main concern is that with this mechanism the channel object is constructed in the server DLL and is used in the client binary. This is problematic if the Channel object itself is not designed to be ABI safe and the client and server binaries are independently compiled using different compiler versions and potentially different compiler options (for e.g. a Release mode server and a debug mode client binary). On looking at the Channel implementation, it does seem this could be a problem. This is a moot issue if I use name based discovery and channel creation, so I will not worry about it for the time being (assuming I will be able to get the name based channel creation to work).

Thanks for the performance related insights. In my scenario, the communication is coarse-grained so I think 10s of microseconds of overhead/latencies should be tolerable. If things turn out to be too inefficient in actual measurements, I will resurrect the topic.

Regards,
Amit

@amitaga, I think the existing sockaddr resolver is pretty close to what you want, so you can probably start by making a copy of it and changing out the relevant parts of the implementation:
https://github.com/grpc/grpc/blob/master/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.c
Please let me or @dgquintas know if you have any questions.

Thanks Mark.
I took a closer look at the inproc_tranport implementation and it does not seem to provide the level of client/server isolation I am looking for. In the current implementation, the client and server side transport and stream objects directly hold on to, and use the inproc_transport and inproc_stream objects on the other side. This assumes that the both the client and server binaries are compiled using the same gRPC library, which is too restrictive for my scenario. I am in need of a purely over-the-wire form communication albeit through shared (same address space) memory, to avoid paying the network stack overhead. Please correct if I misread the implementation.
Are there plans to implement an in-proc transport of the form I describe above? Also, is there an existing transport (or plans to implement one) for inter-process communication across Windows processes on the same machine (similar to the Unix domain socket protocol for Unix platforms)?

(Not sure if this is correct forum, apologies if I have posted erroneously)
Hi,
This might be  somewhat naive question but are there alternatives to TCP/IP. Basically we are using grpc for embedded system (on Ububtu, currently C++ only) and will want to be communication between two processes to be as fast as possible.
We have tested with unix domain sockets and results are faster, I am wondering if there is any other means to get even better results. I am assuming since these are two different processes we can't use inprocess transport
Regards


Should user-select:none be default?

https://github.com/Swimlane/angular-data-table/blob/master/src/dataTable.less#L38-L42
-webkit-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    -o-user-select: none;
    user-select: none;

The default dataTable.css contains a css property user-select:none. Any reason particular reason that is the default and should it be?
I find it handy to be able to select text from a row to copy and paste it into something else. This inhibits that ability. I know we can override it but just wonder if it should really be the default.

I had some specific reason for doing it but i can't remember now.  You can always override it in your implementation.


iter is not async iterable error when trying to use streaming API

Hello - I'm trying to use the stream API on my node 18 env but it throws the below error.

To repro - run ANTHROPIC_KEY="your_key" yarn playground on the main branch of this repo:
https://github.com/dzhng/llm-api
I followed the stream implementation exactly as defined in the readme, and there aren't any type issues, so I don't see anything obviously wrong here.

Hi @dzhng, so sorry about this – we've released a fix in https://github.com/anthropics/anthropic-sdk-typescript/releases/tag/v0.5.3


Update extensions.md

Add a skeleton, better than nothing.

I'm actually not sure if this statement: "views.py: The / path will show up as your plugin's home page in lnbits' UI. Other pages you can define yourself. The templates folder should explain itself in relation to this." is true, by the way.

Thanks! So much to do


Cannot run install script - curl https://spin.fermyon.dev/downloads/install.sh | bash

curl https://spin.fermyon.dev/downloads/install.sh | bash doesn't work.
The install script has been moved to https://developer.fermyon.com/downloads/install.sh. We recommend you user the --location / -L flag for curl to ensure it follows any redirects.
Both of the following commands will work:
curl -L https://spin.fermyon.dev/downloads/install.sh | bash or
curl -L https://developer.fermyon.com/downloads/install.sh | bash

Closed by https://github.com/fermyon/developer/pull/173


Metal shaders for memory efficient self attention on large sequences

Implements metal shaders for:
o = mx.fast.scaled_dot_product_attention(queries, keys, values, scale=scale, mask=None)
Supports fp16, fp32 dtypes; flexible hidden dimension, currently templated for 64 and 128.
Causal masking for prompt encoding not yet implemented, this shader is focused at present on full self-attention.
Context
We're continuing the work started with https://github.com/ml-explore/mlx/pull/735 and following up with memory savings for the self-attention use case common in diffusion transformer workflows such as Stable Diffusion 3.  In particular, we observe memory savings for the 8-b use case of > 5GB for float32.  Current shaders are implemented using Steel-like GEMM primitives in MLX style, with potential for performance tuning to improve latency while retaining the memory savings.
Supported

Supports mx.float16 and mx.float32 dtypes
Supports head_dim=64,128 (covers most 7b+ LLMs)
MHA supported (no MQA, no GQA)
Unsupported use cases still go through MLX primitives under the hood.
No backward pass implementation (inference-only kernel)

Checklist
Put an x in the boxes that apply.

[x] I have read the CONTRIBUTING document
[x] I have run pre-commit run --all-files to format my code / installed pre-commit prior to committing changes
[x] I have added tests that prove my fix is effective or that my feature works
[x] I have updated the necessary documentation (if needed)

Marking as draft, currently working through some numerical issues via separate workflow, and will add CPU side bindings + dispatch, test & docs - sharing a current status and will update this PR

Working on benchmarks

Hi folks,

Attaching some graphs for measured latency on M3 Max and some estimated memory savings per attention block (empirically observed at several data points, graph here obtained via formulas)

Some room for improvement on larger sequences re: latency, with a divergence after ~2300 sequence length, though the memory savings exceeds 1GB ~2k, and is approaching 5GB at 4250 sequence length (SD3 8B use case).
All measurements were with batch size 2, heads = 38, hidden dim = 64, and float32 on M3 Max / 48GB.

@bpkeene left a few minor comments. Could you address? Once updated we can run the tests and get this merged.

Updated with the requested changes, thank you for the prompt review!


Version 0.4 of scikit-optimize

A bit of a conda-forge newbie, is this the right place to discuss updating the recipe for a new release?
Maybe @pmlandwehr could help me modify the recipe for the new version we released today.
One complication (maybe?) is that we have a new dependency (scikit-garden) which needs cython to build. Would the first step be to add a conda-forge recipe for scikit-garden?

Hey sir - yep, adding scikit garden would be the first step for that. I actually started working on a pull but ended up putting it on hold because it was complicated & my time has been short. If you're interested in picking it up...


Unable to Retrieve ' hidden_states ' Despite ' Setting return_dict=True ' and ' output_hidden_states=True '

Hello,
I am currently working with the zhihan1996/DNABERT-2-117M model to extract features from DNA sequences and am encountering an issue with accessing the hidden states of the model.
Issue Description
Despite setting return_dict=True and output_hidden_states=True, the output from the model remains a tuple rather than the expected ModelOutput object that includes the .hidden_states attribute. When attempting to access outputs.hidden_states, I encounter the following error:
AttributeError: 'tuple' object has no attribute 'hidden_states'
Additionally, I have used the following code to check the type and attributes of the output object, confirming that it indeed returns a tuple, which lacks the ' hidden_states ':
print(type(outputs))
print(dir(outputs))
Environment Setup
Transformers version: 4.29.2 (as specified in the requirements.txt)
I would appreciate any guidance or suggestions on how to resolve this issue. Thank you for your time and assistance!

We encountered the same issue. It should work fi you set the transformer version to 4.28.0
:)

Thank you so much for your assistance!
I will proceed to update the transformer to the version you suggested.
By the way, could you please let me know if there are any other version dependencies that I should be aware of?
Your guidance is greatly appreciated!

I have set the transformers library to version 4.28.0, but unfortunately, the issue persists.


Txs Aggregation timeout for chains with huge amounts of data

This is specifically for Terra, Band and Solana (handled by SolJuno)
Currently the query below will always hang and never return due to the default behavior of psql (It will go through the table and count in real time).
query Transactions($limit: Int = 7, $offset: Int = 0) {
  transactions: transaction(limit: $limit, offset: $offset, order_by: {height: desc}) {
    height
    hash
    success
    block {
      timestamp
    }
    messages
    logs
  }
  total: transaction_aggregate {
    aggregate {
      count
    }
  }
}

Removing the following will return the data right away
  total: transaction_aggregate {
    aggregate {
      count
    }
  }

I will see if i can do a workaround on the frontend in the meantime but I believe this is something that can be better handled at the back

Have you tried using two different queries instead? The count should not be a problem at all since PostreSQL runs that in O(1)

Yes I've tried separating the queries but it feels like the bottleneck is the count aggregation.
The following query took about 1 minute for Band to return any response and about 3 minutes in Solana.
query Transactions {
  total: transaction_aggregate {
    aggregate {
      count
    }
  }
}

Not sure if this is expected but is there a way to improve the performance?
There's no way O(1) takes this long. It feels like O(n)...

After reading this StackExchange conversation it appears to be a PostgreSQL related problem. Apparently to count all rows of a table PostgreSQL iterates over all of them. To fix this I've run the following commands:
vacuum analyze transaction;
ALTER TABLE transaction SET (
  autovacuum_vacuum_scale_factor = 0,
  autovacuum_analyze_scale_factor = 0,
  autovacuum_vacuum_threshold = 10000,
  autovacuum_analyze_threshold = 10000
);

This will set the vacuum function of PostgreSQL to run more frequently which will allow a faster iteration over all the records.


Add go-team to CODEOWNERS

Didn't realize you could specify a team in CODEOWNERS. That'll make things easier!

Didn't realize you could specify a team in CODEOWNERS. That'll make things easier!

I agree that it's spiffy, but I actually like that we don't do this in the agent repository though. I think that "add yourself to codeowners" is a nice first PR for new team members. (definitely nice to use it here though)


Add Tailwind to existing Stencil Project

Is your feature request related to a problem? Please describe.
No, it's not.
Describe the solution you'd like
As a Flinkey integration partner, I'd like to use Tailwind as a CSS framework, in order to style my components in an organized, scalable and fast way.


Add vpaes_ctr32_encrypt_blocks for x86_64

This adds an analog to the (currently unused) "2x" optimization from
vpaes-armv8.pl and a ctr128_f implementation.

Checklist

[ ] documentation is added or updated
[ ] tests are added or updated

@davidben FYI: This is a back-port of your contribution to #9677
The main body of that PR was already merged to 1.1.1 in 87bea6550ae0dda7c40937cff2e86cc2b0b09491
So there is no BSAES any more for X86_64, therefore this PR should make
a difference.  There is still BSAES for ARMv8 IIRC, therfore I did not remove
BSAES completely.
But I can try to add a "int3" to the assembler module, and see if I can
trigger that.
I do not understand why that was approved for 1.1.1 but the same PR for
master is stuck, and I will probably close it soon.
Frankly in the moment I feel like creating my own personal totallyBoringSSL branch.
What were your reasons for ceating BoringSSL?

I just confirmed,
diff --git a/crypto/aes/asm/vpaes-x86_64.pl b/crypto/aes/asm/vpaes-x86_64.pl
index c15618d..6e66642 100644
--- a/crypto/aes/asm/vpaes-x86_64.pl
+++ b/crypto/aes/asm/vpaes-x86_64.pl
@@ -92,6 +92,7 @@ $code.=<<___;
 .align 16
 _vpaes_encrypt_core:
 .cfi_startproc
+int3
        mov     %rdx,   %r9
        mov     \$16,   %r11
        mov     240(%rdx),%eax

OPENSSL_ia32cap=2199023255552 make test
gives many test errors. without the int3 the above test is good.

So there is no BSAES any more for X86_64, therefore this PR should make a difference. There is still BSAES for ARMv8 IIRC, therfore I did not remove BSAES completely.
But I can try to add a "int3" to the assembler module, and see if I can trigger that.

Ah, sorry, I'd missed that! Ignore what I said about this being a no-op then. Is the x86 BSAES_CAPABLE definition still needed then?
(Regarding BoringSSL, I didn't start the project, but the README has some comment about how it came about. I got involved because I work on Chrome and was distractable. :-) )

No reason to feel sorry about that.  I am happy you looked at this PR.
So it is probably my fault to not start the conversation with
"Thank you very much for your review" :-)

Is the x86 BSAES_CAPABLE definition still needed then?

good point I will check that.

regarding "Chrome"

isn't that a toxic element?
By the way does it alse have the "omni.ja" file, I found recently in my firefox/thunderbird
installation, where hidden extensions are installed that are next to impossible to uninstall?


Provide a free/open source license

There's currently no licenses provided for this project making it proprietary by default. It would be great if you could provide a free/open source one.

I added the licence file.


flutter installation was not successful on MacBook Pro M2

Is there an existing issue for this?

[X] I have searched the existing issues
[X] I have read the guide to filing a bug

Steps to reproduce
Step 1 :
I followed the instructions from https://docs.flutter.dev/get-started/install/macos
and downloaded the Flutter bundle from the following link https://storage.googleapis.com/flutter_infra_release/releases/stable/macos/flutter_macos_arm64_3.13.9-stable.zip
Step 2:
Extract the file in the desired location. For example:
content_copy
cd ~/development
unzip ~/Downloads/flutter_macos_arm64_3.13.9-stable.zip
Add the flutter tool to your path:
content_copy
export PATH="$PATH:pwd/flutter/bin"
This command sets your PATH variable for the current terminal window only. To permanently add Flutter to your path, check out Update your path.
Step 3:
check flutter installation by running flutter and there was no problem
Step 4 :
When i executed
flutter  doctor -v
I had an error
Actual results
srikrishna.rao@macbook% flutter doctor -v
#0      throwToolExit (package:flutter_tools/src/base/common.dart:10:3)
#1      _DefaultPub._runWithStdioInherited (package:flutter_tools/src/dart/pub.dart:447:7)
<asynchronous suspension>
#2      _DefaultPub.get (package:flutter_tools/src/dart/pub.dart:323:5)
<asynchronous suspension>
#3      PubDependencies.update (package:flutter_tools/src/flutter_cache.dart:126:5)
<asynchronous suspension>
#4      Cache.updateAll (package:flutter_tools/src/cache.dart:679:9)
<asynchronous suspension>
#5      FlutterCommand.verifyThenRunCommand
(package:flutter_tools/src/runner/flutter_command.dart:1566:7)
<asynchronous suspension>
#6      FlutterCommand.run.<anonymous closure>
(package:flutter_tools/src/runner/flutter_command.dart:1297:27)
<asynchronous suspension>
#7      AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:150:19)
<asynchronous suspension>
#8      CommandRunner.runCommand (package:args/command_runner.dart:212:13)
<asynchronous suspension>
#9      FlutterCommandRunner.runCommand.<anonymous closure>
(package:flutter_tools/src/runner/flutter_command_runner.dart:339:9)
<asynchronous suspension>
#10     AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:150:19)
<asynchronous suspension>
#11     FlutterCommandRunner.runCommand
(package:flutter_tools/src/runner/flutter_command_runner.dart:285:5)
<asynchronous suspension>
#12     run.<anonymous closure>.<anonymous closure> (package:flutter_tools/runner.dart:115:9)
<asynchronous suspension>
#13     AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:150:19)
<asynchronous suspension>
#14     main (package:flutter_tools/executable.dart:90:3)
<asynchronous suspension>

Logs

Logs

<!-- Paste your logs here -->

Flutter Doctor output

Doctor output

#0      throwToolExit (package:flutter_tools/src/base/common.dart:10:3)
#1      _DefaultPub._runWithStdioInherited (package:flutter_tools/src/dart/pub.dart:447:7)
<asynchronous suspension>
#2      _DefaultPub.get (package:flutter_tools/src/dart/pub.dart:323:5)
<asynchronous suspension>
#3      PubDependencies.update (package:flutter_tools/src/flutter_cache.dart:126:5)
<asynchronous suspension>
#4      Cache.updateAll (package:flutter_tools/src/cache.dart:679:9)
<asynchronous suspension>
#5      FlutterCommand.verifyThenRunCommand
(package:flutter_tools/src/runner/flutter_command.dart:1566:7)
<asynchronous suspension>
#6      FlutterCommand.run.<anonymous closure>
(package:flutter_tools/src/runner/flutter_command.dart:1297:27)
<asynchronous suspension>
#7      AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:150:19)
<asynchronous suspension>
#8      CommandRunner.runCommand (package:args/command_runner.dart:212:13)
<asynchronous suspension>
#9      FlutterCommandRunner.runCommand.<anonymous closure>
(package:flutter_tools/src/runner/flutter_command_runner.dart:339:9)
<asynchronous suspension>
#10     AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:150:19)
<asynchronous suspension>
#11     FlutterCommandRunner.runCommand
(package:flutter_tools/src/runner/flutter_command_runner.dart:285:5)
<asynchronous suspension>
#12     run.<anonymous closure>.<anonymous closure> (package:flutter_tools/runner.dart:115:9)
<asynchronous suspension>
#13     AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:150:19)
<asynchronous suspension>
#14     main (package:flutter_tools/executable.dart:90:3)
<asynchronous suspension>

Hi @srikrishnaraorakuten. It seems the installation hasn't been fully completed, are you certain you are setting the PATH correctly, also when you run which flutter from your terminal, do you get a response?

@dam-ease
This is my response for which command
srikrishna.rao@MACBOOK Learning %  which flutter
/Users/srikrishna.rao/Learning/flutter/bin/flutter

Hi @srikrishnaraorakuten. Thanks for your response. Can you try reinstalling flutter on your machine probably following the video suggested here to see if this still reoccurs?


Fix build-release.sh script

Script was failing due to erroneous pipe.

Please sign the cla. What is the break that you're seeing?

@googlebot I signed it!

When running the release build, this script is invoked and fails with the
'-xcodebuild: error: Unknown build action ' -project'.


Allow vector-0.12

I'm being bold and made a revision on Hackage

I become a maintainer of this package, merged this PR into master in https://github.com/phadej/qc-instances


Fix issue #634

I like this approach.

:+1:

:+1:

:+1:

:+1:

The best solution for this is mentioned here: https://github.com/amsul/pickadate.js/issues/667#issuecomment-85983322
Closing this in favor of that. Cheers!


Remove CA1071

See #22084, but we shouldn't be publicizing this article yet.

@gewarren Do you want to convert this to a draft PR so we don't accidentally publish it?

@gewarren Do you want to convert this to a draft PR so we don't accidentally publish it?

@BillWagner from my standpoint, this is ready to merge. I already removed the article from the TOC and index in #22085. I'll update the title of this PR to be more accurate.

@BillWagner from my standpoint, this is ready to merge. I already removed the article from the TOC and index in #22085. I'll update the title of this PR to be more accurate.


php 5.4 required

Hi.
Am I right in thinking the minimum PHP version needs to be upped to 5.4 due to react/event-loop/StreamSelectLoop.php defining array's using the new shorthand method of square brackets. It might be in other places too, but this is the first insance of the error I've seen so far so should already be enough to require upping it.
private $readStreams = [];
private $readListeners = [];
private $writeStreams = [];
private $writeListeners = [];

The current version of most React libs (0.4.*) require 5.4. However the API hasn't changed much from 0.3 so this line will figure out which version is needed based on the installed PHP version. This Travis build also shows Ratchet running on 5.3


Support json column types

We've been storing some json data in postgresql and when we query it always returns as a string. This small patch will convert that json data in string format into a dictionary of values.
Before this patch a JSON column would be returned like this:
    "order": "[{\"destination\": \"EMBALLAGE\", \"type\": \"PACKET\", \"amount\": 50}]",

After applying this we get the following:
    "order": [
      {
        "destination": "EMBALLAGE",
        "type": "PACKET",
        "amount": 50
      }
    ],

I used a string to represent json in the type map as there doesn't seem to be a single object or type that would be usable as a conversion function.
Thanks for taking the time to look at this.

Thank you! Sorry about the delay. Will test and release this shortly.

This approach is incorrect and breaks downstream applications, reverting.


pikchr integration?

Hi, I'm interested in contributing a Pikchr integration. Pikchr is written in C, so it looks like I'll need to call C from Python (pikchr integration docs). I don't work much with either python or C, but based on 10 minutes of research it looks like the easiest way to call C from Python is to use something like SWIG. This looks fairly easy, but I think it will involve changing the build process and I'm not sure about the implications in other areas (especially publishing to PyPi).
Please let me know:

if the pikchr integration seems feasible and desirable
is this the easiest way to accomplish it, or is there a better way?

Hi @ethanmdavidson, thanks for sharing your idea. I don't know how the mistletoe community, but I think it would be cool to have some "UML-like" diagrams support.
I have done some quick research, and it looks like there are various alternatives (each offering a different approach and set of features):
a) Pikchr - the easiest integration seems to be via calling a local OS-dependent executable which can be built from Pikchr's C source code (example: a filter for Pandoc which calls Pikchr).
b) PlantUML - can be integrated by calling its Java jar, or by calling a (public) PlantUML server (see PlantUML  Extension for Python-Markdown).
c) Mermaid - probably the most lightweight integration via including its JavaScript in the resulting HTML page (an output example). Con: this would work just for HTML renderers.
So, when thinking out a solution, it would be good to think about how to make it as reusable (general) as possible, but of course, that will take some time, so maybe having something less universal, yet working, would be also great...
Back to Pikchr :), I think the best non-intrusive & simple approach would be calling it from Python as an external command, similar to the Pandoc example linked at point (a). From the many possible approaches, I would probably choose Python's subprocess.run() to implement the call, as described for example here. (It looks like mistletoe doesn't call any external command / executable yet.)


Release Plans?

I stumbled across this gem and it's very similar to what I'm recreating myself - do you have any plans to release to rubygems?
Thanks!

@mikeantonelli I wanted to add some tests first and release later, but I completely forgot about gem.
Thank you for a reminder!
I'll take a look at it on a weekend and would probably release it.

@scarfacedeb I logged https://github.com/scarfacedeb/request_store_registry/pull/2, let me know what you think.


Redundant Import Statement in PyRIT Documentation

Describe the issue linked to the documentation
The documentation page for writing prompts includes a redundant import statement. This could potentially confuse new users and clutter the codebase.
File: how_to_guide.ipynb
Section: Write prompts yourself
File: how_to_guide.py
Section: Line 58
Suggest a potential alternative/fix
Remove the duplicate line:
from pyrit.models import PromptRequestPiece

The duplicate import doesn't impact the functionality but cleaning it up would improve the code quality and readability.

Excellent find! Can you make the change?


[pipeline] Bert pipeline for shardformer and its tests

📌 Checklist before creating the PR

[x] I have created an issue for this PR for traceability
[x] The title follows the standard format: [doc/gemini/tensor/...]: A concise description
[x] I have added relevant tags if possible for us to better distinguish different PRs

🚨 Issue number

Link this PR to your issue with words like fixed to automatically close the linked issue upon merge
e.g. fixed #1234, closed #1234, resolved #1234
#4190

📝 What does this PR do?

Summarize your work here.
if you have any plots/diagrams/screenshots/tables, please attach them here.
This PR add bert pipeline into shardformer and tests the pipeline forward.

💥 Checklist before requesting a review

[x] I have linked my PR to an issue (instruction)
[x] My issue clearly describes the problem/feature/proposal, with diagrams/charts/table/code if possible
[x] I have performed a self-review of my code
[x] I have added thorough tests.
[x] I have added docstrings for all the functions/methods I implemented

⭐ Do you enjoy contributing to Colossal-AI?

[x] 🌝 Yes, I do.
[ ] 🌚 No, I don't.

Tell us more if you don't enjoy contributing to Colossal-AI.

shard former tests and pipeline tests passed

finish tests


Replay the terminal error to work (receive calls) that arrives after the underlying async client termination.

The async Reactor receiver client backs the sync client. If the async Reactor client arrives terminal state (due to a non-retriable error or retry-exhaust case), then further receive call on sync client may keep returning empty iterable, without informing the application about the fact that the client is terminated.
Today sync client notifies the "already enqueued pending" works with the terminal error but not the work that gets enqueued after the terminal error event. This pull request fixes this by replaying the terminal error for future works.
Also, adding a synchronous sample equivalent to async "ServiceBusReceiverAsyncClientRetrySample"

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


Reduce snprintf and snprintk footprint

Is your enhancement proposal related to a problem? Please describe.
Both snprintk() and snprintf() are used and therefore linked in the app binary.
This is waste of flash to have both when they basically have mostly the same behavior.
Describe the solution you'd like
To me, the best solution would be:

Add a Kconfig variable to either use snprintf() or snprintk() based on the user and libraries needs.

Describe alternatives you've considered
Another safer and easier solution could be:

Always use snprintf() as snprintk() is a lightweight implementation of snprintk().

This issue is linked to https://github.com/zephyrproject-rtos/zephyr/issues/24181.

@XavierChapron I assume that this is still an issue even though we closed #24181?

snprintk() is part of the Zephyr kernel. It is small, does not implement the entire specification, does not use much stack space.
snprintf() is part of the C library. It is variously implemented in newlib, minimal libc, etc. It is standards compliant but much larger than snprintk() and uses a lot more stack space.

Always use snprintf() as snprintk() is a lightweight implementation of snprintk().

This doesn't quite make sense to me can you rephrase?

Both snprintk() and snprintf() are used and therefore linked in the app binary.

Add a Kconfig variable to either use snprintf() or snprintk() based on the user and libraries needs.

I don't think this will work because snprintk() is not directly equivalent to snprintf()

snprintk() is part of the Zephyr kernel. It is small, does not implement the entire specification, does not use much stack space.

I agree with that, it is clearly small, and that is great. If we add everything it is weighing around 1kB in my binary, so definitively a small implementation.
 .text._printk_dec_ulong
                0x000000000000e02c       0x98 libzephyr.a(printk.c.obj)
 .text.__printk_hook_install
                0x000000000000e0c4        0xc libzephyr.a(printk.c.obj)
                0x000000000000e0c4                __printk_hook_install
 .text.vsnprintk
                0x000000000000e0d0       0x28 libzephyr.a(printk.c.obj)
                0x000000000000e0d0                vsnprintk
 .text.arch_printk_char_out
                0x0000000000030930        0x4 libzephyr.a(printk.c.obj)
                0x0000000000030930                arch_printk_char_out
 .text.print_err
                0x0000000000030934       0x1c libzephyr.a(printk.c.obj)
 .text.str_out  0x0000000000030950       0x26 libzephyr.a(printk.c.obj)
 .text.z_vprintk
                0x0000000000030976      0x2e0 libzephyr.a(printk.c.obj)
                0x0000000000030976                z_vprintk
 .text.printk   0x0000000000030c56       0x1a libzephyr.a(printk.c.obj)
                0x0000000000030c56                printk
 .text.snprintk
                0x0000000000030c70       0x1a libzephyr.a(printk.c.obj)
                0x0000000000030c70                snprintk

snprintf() is part of the C library. It is variously implemented in newlib, minimal libc, etc. It is standards compliant but much larger than snprintk() and uses a lot more stack space.

I have not looked at the newlib or minimal lib implementation, but they are indeed heavier. For newlib, using CONFIG_NEWLIB_LIBC_FLOAT_PRINTF=n when not necessary is already saving lot and lot of flash.
My point is that they are very similar, for every supported input of snprintk, snprintf will give the same input.
This means that (excluding the fact that snprintf use probably more stack) using something like #define z_vprintk z_vprintf instead of the full implementation of snprintk should work.
But this will only spare ~1kB of flash.
However, in many situations, snprintk is definitively enough. When looking at snprintf usage in zephyr, I don't see many situations where snprintk will not have done the exact same job.
If every not necessary usage of snprintk is removed, then it will be link only when really necessary.
@carlescufi @andrewboie What are your though about this.
In my opinion this should help decide if a driver should use snprintk or snprintf, the rule could be clear:

If snprintk is enough, go for it
However, if you really need snprintf, then you have no other choice.

If you really would like to achieve what you suggest, I think it would make more sense to add an option that globally does:
#define snprintf(s_, sz_, f_, ...) snprintk((s_), (sz_), (f_), __VA_ARGS__)

Implementations for reference
https://github.com/zephyrproject-rtos/zephyr/blob/1d9b08aef5cd814406ae068f602cab54fdf2805f/lib/os/printk.c#L534
https://github.com/zephyrproject-rtos/zephyr/blob/ed139948a54bdb13bdafed57b1f00b68f0610890/lib/libc/minimal/source/stdout/sprintf.c#L30-L31

@stephanosio Why do you think that this as more sense ?
As you mention, some "advanced" functions will not work.
Whereas if all snprintf call that are not "advanced" are changed to snprintk, there is manual job but at the end no risk:

If an snprintf remains in the code linked, then snprintf will be embedded in the binary.
if no snprintf remains, then it should not be embedded.

@XavierChapron could you try to reformulate your proposal either in words or in a draft Pull Request so we can try to move it forward?

@carlescufi I've drafted a PR so we can discuss about potential solutions: https://github.com/zephyrproject-rtos/zephyr/pull/25069

Closing this since #25069 took care of it


[TVM][ARITH] Teach BoundDeduce to handle the case in which target var can appear in rhs of expression

@ZihengJiang, @xqdan, and/or @sgrechanik-h Please review.
This fixes https://github.com/dmlc/tvm/issues/2794
Added @tqchen for review in case he is available.
This is a simple change.

@xqdan @ZihengJiang the CI build was failing due to a testcase that's now been commented out. Can you please take another look? Thanks.

thanks @derisavi , this is merged


OAuth1 Handling Callback

I am new to OAuth, but it looks like in the 'starting out' django is used to get a piece of the callback url in the requests.GET('oauth_verifier'). I am wondering where/how the requests object is created, as this line of code seems entirely separated from all previous steps regarding the OAuth.
'requests.get('oauh_verifier')' seems to go to the Twitter verification page, allow the app, then go to the callback url, then extract the relevant data from the callback url. This is the step I am unsure how to do.
Here is what I am looking at.
APP_KEY = 'KEY'
APP_SECRET = 'SECRET'

twitter = Twython(APP_KEY, APP_SECRET)
auth = twitter.get_authentication_tokens(callback_url='https://www.callback.com')

OAUTH_TOKEN = auth['oauth_token']
OAUTH_TOKEN_SECRET = auth['oauth_token_secret']

## I am lost here
oauth_verifier = requests.GET['oauth_verifier']
##

twitter = Twython(APP_KEY, APP_SECRET,
                  OAUTH_TOKEN, OAUTH_TOKEN_SECRET)

final_step = twitter.get_authorized_tokens(oauth_verifier)

OAUTH_TOKEN = final_step['oauth_token']
OAUTH_TOKEN_SECRET = final_step['oauth_token_secret']

I realize this is from January, so hoping you found your answer, but to clear it up anyway: the request object in that case is provided by Django, identifying the return request in the OAuth handshake.
If you've not already, I'd encourage getting up to speed here: Django


fix(app.js) fix #24 logout route to have uppercase

This is a fix for issue #24

@adriatic Added more fixes to this PR


change timezone

Hi,
is it possible to change the timezone of the Datetimepicker?
If i push a moment() with different timezone, its shown correct.
But when I open the pickerand change month or date, Datetimepicker automatically selects
browser timezone again.

It would be nice if you could also pick time zone in the UI.

Without selecting date if I click outside of the calendar, It is taking the current date and Time. I need after selecting date in a calendar only,  I want to display the selected date in a textbox. Please help me anyone how can I do this in bootstrap datetimepicker version v3. It has displaying like this,

It is displying current date and time in screen. I dont want like this. After selecting date only the selected date will display in texbox. Example if I select "28/04/1990" means the seleced date will display on screen. How can I do this?

In my screen add, delete and save button is there. If I click + button, new row will add. In that new row If I insert any date, I want to display the date as selected date and time as "00:00". I have attach the image like what I want,

Here, I am setting time "00:00" as manually. What I want If I select any date in calendar,  the time will  automatically take "00:00". This is for only newly added row. How can I do this? Please help me anyone.

@ssathishkumar540 please don't hijack issues with unrelated problems. It's best to open your own issue.
if you want the picker to just select the date then use the format option format: 'L' or MM/dd/YYYY

datetimepicker defaultly taking current date and time. After selecting a date in a calendar only I want to display the selected date in textbox. Please help me how can I do this?

I'm locking this issue.


Add Cypress for integration/e2e testing

This also includes two scenarios used in real User Testing.

Phew, runs at last: https://app.netlify.com/sites/ons-data-map/deploys/62176b554f691e0008a4bf55#L324

Story time (not really, just need help).
During one of the user sessions there was a case of a missing map, an issue that we couldn't replicate ourselves no matter what. It's been hanging on Trello since: https://trello.com/c/OFhWF7Mv/273-bug-missing-map-on-mobile-view
Eventually I decided to automate the user journey hoping the issue would crop out eventually, so the test goes as this PR shows:
beforeEach(() => {
  cy.visit("/");
  cy.wait(500);
});

describe("User Testing Scenarios", () => {
  it("can go through Route 1", () => {
    cy.contains("Choose a category").click();
    cy.wait(500);
    cy.url().should("include", "/categories");
    cy.contains("Education").should("exist");
    cy.contains("Health").should("exist");
    cy.contains("Housing").should("exist");
    cy.contains("Identity").should("exist");
    cy.contains("Population").should("exist");
    cy.contains("Work").should("exist");
    cy.contains("Housing").click();
    cy.contains("Show Heating options").click();
    cy.contains("Gas").click();
    cy.wait(500);
    cy.url().should("include", "/housing/heating/gas");
    cy.get(".mapboxgl-canvas").should("be.visible");
  });
});

Cypress waits 500ms after each route change, check for elements, and clicks through to a page where the error occurred.
Here's the interesting bit:
These tests pass and fail randomly, regardless of the delay and often way before the test is concerned about the map. I've tried with anything up to 4000ms all giving out random errors that related to a map:
TypeError: The following error originated from your application code, not from Cypress. It was caused by an unhandled promise rejection.
> Cannot read property 'remove' of null
When Cypress detects uncaught errors originating from your application it will automatically fail the current test.

or
> Cannot read properties of undefined (reading 'getSource')

There seems to be something wrong with the way we load the map that causes these errors and likely the error that one of the users came across during the real testing. They don't seem to pop up during manual testing for me, and I get more positive results when running Cypress locally, byt Cypress on Netlify fails almost constantly.

Phew, this builds now: https://app.netlify.com/sites/ons-data-map/deploys/6218bbdfce9e080007af760c


Search for a set

Would it be possible to implement some way for searching for a set by it's name? If not, I'm willing to make a PR.

Implemented as of v3.1.0
Thanks for the suggestion!


I wanna contribute Java Programming language in Bengali language

I wanna contribute Java programming language in Bengali Language. As like other languages, the learners whose mother tongue is Bangla, also learning Java programming language. The resource of Bengali language is not much in Bengali Language. From that perspective, for the Bengali students, I wanna contribute my Java lecture from Basic to onwards.
Thank you

Do you know how to make Pull Request? Both yes or not, I aim you to read our CONTRIBUTING guidelines and HOWTO to learn how to contribute in the repository.
If you want contribute in bangla resources, welcome. Search free resources in internet that satisfies the requirements and send the PR.

Thanks.
I will pull request and I have seen that Java content is already posted. So, I am  coming with HTML Bangla


[DRAFT] IBM Support

Draft pull request to track remaining todos with IBM integration.
TODOs:

[x] Pull/merge recent skyplane changes
[ ] Test multipart transfers
[ ] Query bucket locations rather than reading location from config
[ ] If possible, automate generation of ibm_credentials file as part of skyplane init (using https://cloud.ibm.com/docs/cloud-object-storage?topic=cloud-object-storage-uhc-hmac-credentials-main)
[ ] Update documentation to include IBM setup details and transfer examples

@sarahwooders I already support to query bucket location. Unfortunately, IBM Cloud Object Storage doesn't has a single API to query a location, so the way is to pass over all regions and check if bucket exists there. https://github.com/skyplane-project/skyplane/blob/ibmcloud-support/skyplane/obj_store/cos_interface.py#L37.
Does this address the bullet you asked: Query bucket locations rather than reading location from config

@sarahwooders also all uploads done with multipart. What do you mean by "Test multipart transfers" ?

@sarahwooders I follow https://skyplane.org/en/latest/contributing.html and execute black -l 140 .    but I see that checks failed in PR on the black type?

@sarahwooders I follow https://skyplane.org/en/latest/contributing.html and execute black -l 140 .  but I see that checks failed in PR on the black type? This is in my laptop:
`MacBook-Pro skyplane % black . --check --line-length=140
All done! ✨ 🍰 ✨
117 files would be left unchanged.
MacBook-Pro skyplane % git status
On branch ibmcloud-support
Your branch is up to date with 'skyplane/ibmcloud-support'.

nothing to commit, working tree clean

`

but the pytest / black-pytype (pull_request) Failing after 14m fails, Can you check please?

I think there are different versions of black - could you please try using poetry instead and run poetry run black . --line-length=140 && poetry run pytype . --config .pytype.cfg -j 16?

@sarahwooders this also returned the same as before
`kyplane % poetry run black . --line-length=140
Creating virtualenv skyplane-4B0aA3OF-py3.9 in /Users/gilvernik/Library/Caches/pypoetry/virtualenvs
All done! ✨ 🍰 ✨
117 files left unchanged.
`

If you run the same, does it show you different things?

Did you run pip install -r requirements-dev.txt? I ran the formatter and got some changes, so just pushed them.

Also one issue that I've continued to have is that ibmcloud_resource_group_id doesn't get automatically added to ~/.skyplane/config (I have to manually copy it from ~/.bluemix/ibm_credentials). I think you can reproduce this by removing ~/.skyplane and then re-running skyplane init.

@sarahwooders black works now...thanks.
I see that  pytest / black-pytype still fails. Where this module suppose to be installed?
/home/runner/.virtualenvs/skyplane-sLdV35Eb-py3.10/lib/python3.10/site-packages/urllib3/contrib/socks.py:50: DependencyWarning: SOCKS support in urllib3 requires the installation of optional dependencies: specifically, PySocks.  For more information, see https://urllib3.readthedocs.io/en/1.26.x/contrib.html#socks-proxies
[13](https://github.com/skyplane-project/skyplane/actions/runs/4445310069/jobs/7804307955?pr=731#step:8:14)
  warnings.warn(
[14](https://github.com/skyplane-project/skyplane/actions/runs/4445310069/jobs/7804307955?pr=731#step:8:15)
ninja: Entering directory `.pytype'
[15](https://github.com/skyplane-project/skyplane/actions/runs/4445310069/jobs/7804307955?pr=731#step:8:16)
[1/122] check skyplane.gateway_version
[16](https://github.com/skyplane-project/skyplane/actions/runs/4445310069/jobs/7804307955?pr=731#step:8:17)
[2/122] check skyplane.exceptions
[17](https://github.com/skyplane-project/skyplane/actions/runs/4445310069/jobs/7804307955?pr=731#step:8:18)
[3/122] check skyplane.utils.definitions
[18](https://github.com/skyplane-project/skyplane/actions/runs/4445310069/jobs/7804307955?pr=731#step:8:19)
[4/122] check skyplane.config
[19](https://github.com/skyplane-project/skyplane/actions/runs/4445310069/jobs/7804307955?pr=731#step:8:20)
[5/122] check skyplane.utils.logger
[20](https://github.com/skyplane-project/skyplane/actions/runs/4445310069/jobs/7804307955?pr=731#step:8:21)
[6/122] check skyplane.utils.imports
[21](https://github.com/skyplane-project/skyplane/actions/runs/4445310069/jobs/7804307955?pr=731#step:8:22)
[7/122] check skyplane.config_paths
[22](https://github.com/skyplane-project/skyplane/actions/runs/4445310069/jobs/7804307955?pr=731#step:8:23)
[8/122] check skyplane.utils.timer
[23](https://github.com/skyplane-project/skyplane/actions/runs/4445310069/jobs/7804307955?pr=731#step:8:24)
[9/122] check skyplane.compute.ibmcloud.ibm_gen2.config
[24](https://github.com/skyplane-project/skyplane/actions/runs/4445310069/jobs/7804307955?pr=731#step:8:25)
[10/122] check skyplane.compute.ibmcloud.ibmcloud_auth
[25](https://github.com/skyplane-project/skyplane/actions/runs/4445310069/jobs/7804307955?pr=731#step:8:26)
FAILED: /home/runner/work/skyplane/skyplane/.pytype/pyi/skyplane/compute/ibmcloud/ibmcloud_auth.pyi
[26](https://github.com/skyplane-project/skyplane/actions/runs/4445310069/jobs/7804307955?pr=731#step:8:27)
/home/runner/.virtualenvs/skyplane-sLdV35Eb-py3.10/bin/python -m pytype.single --imports_info /home/runner/work/skyplane/skyplane/.pytype/imports/skyplane.compute.ibmcloud.ibmcloud_auth.imports --module-name skyplane.compute.ibmcloud.ibmcloud_auth --platform linux -V 3.10 -o /home/runner/work/skyplane/skyplane/.pytype/pyi/skyplane/compute/ibmcloud/ibmcloud_auth.pyi --analyze-annotated --nofail --quick /home/runner/work/skyplane/skyplane/skyplane/compute/ibmcloud/ibmcloud_auth.py
[27](https://github.com/skyplane-project/skyplane/actions/runs/4445310069/jobs/7804307955?pr=731#step:8:28)
File "/home/runner/work/skyplane/skyplane/skyplane/compute/ibmcloud/ibmcloud_auth.py", line 34, in get_iam_authenticator: Can't find module 'ibm_cloud_sdk_core.authenticators'. [import-error]
[28](https://github.com/skyplane-project/skyplane/actions/runs/4445310069/jobs/7804307955?pr=731#step:8:29)

[30](https://github.com/skyplane-project/skyplane/actions/runs/4445310069/jobs/7804307955?pr=731#step:8:31)
For more details, see https://google.github.io/pytype/errors.html#import-error
[31](https://github.com/skyplane-project/skyplane/actions/runs/4445310069/jobs/7804307955?pr=731#step:8:32)
[11/122] check skyplane.utils.generator
[32](https://github.com/skyplane-project/skyplane/actions/runs/4445310069/jobs/7804307955?pr=731#step:8:33)
ninja: build stopped: subcommand failed.
[33](https://github.com/skyplane-project/skyplane/actions/runs/4445310069/jobs/7804307955?pr=731#step:8:34)
Computing dependencies
[34](https://github.com/skyplane-project/skyplane/actions/runs/4445310069/jobs/7804307955?pr=731#step:8:35)
Analyzing 94 sources with 2 local dependencies
[35](https://github.com/skyplane-project/skyplane/actions/runs/4445310069/jobs/7804307955?pr=731#step:8:36)
Leaving directory '.pytype'
[35](https://github.com/skyplane-project/skyplane/actions/runs/4445310069/jobs/7804307955?pr=731#step:8:36)
Error: Process completed with exit code 1.

@sarahwooders I deleted the ~/.skyplane folder. Then executed skyplane init and resource_id was created in the config file. I can't reproduce a flow where this filed is not created in the config file

@sarahwooders related your comment : If possible, automate generation of ibm_credentials file as part of skyplane init.
I didn't used ibmcloud tool as it's confusing when need to setup both VPC and Cloud Object Storage. Unfortunately this is how this tool works. The less confusing approach is just to setup all in the UI of IBM Cloud. I also assumed that those who use SkyPlane with IBM Cloud already has IBM Cloud account and therefore they have their credentials to the cloud object storage. I think it's not a good idea if SkyPlane will auto-generate credentials for COS, since it may confuse those who already has active COS account and those who doesn't  - still better create all in UI and not via CLI tool


Added architecture for add/delete file events

In reference to #2353

Up for review @gideonthomas

Closing this against #858


chore: use jvm system property for IBM_CREDENTIALS_FILE

PR summary
This PR changes the integration test base class so that it uses System.setProperty() to
set the IBM_CREDENTIALS_FILE variable instead of mocking the EnvironmentUtils class to use
environment variables.
Fixes: n/a
PR Checklist
Please make sure that your PR fulfills the following requirements:

[x] The commit message follows the Angular Commit Message Guidelines.
[ ] Tests for the changes have been added (for bug fixes / features)
[ ] Docs have been added / updated (for bug fixes / features)

PR Type

[ ] Bugfix
[ ] Feature
[ ] Code style update (formatting, local variables)
[ ] Refactoring (no functional changes, no api changes)
[ ] New tests
[x] Build/CI related changes
[ ] Documentation content changes
[ ] Other (please describe)

What is the current behavior?

What is the new behavior?

Does this PR introduce a breaking change?

[ ] Yes
[x] No

Other information

:tada: This PR is included in version 0.4.1 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Suggestion: Rename "New Feed" Label

Currently, the command label for adding a feed subscription reads as "New Feed". The "new" prefix is usually used when creating a new item inside of the app you are using (creating a new file, document, photo album, etc).
Would suggest renaming it to "Subscribe to Feed".

Using “New Feed” for this allows us to use cmd-N and File -> New Feed.
This is slightly unconventional, I grant, but it’s also a lesson learned from years of NetNewsWire development — it’s actually the best of no-perfect-options.


Improved Encoder API

This PR reworks the implementation of the encoder module to accomplish 2 goals:

Improve the performance of the encoder logic. The existing implementation performs a lot of small allocations due to creating and passing around around small Vec and String objects internally. The reworked implementation passes through a reference to the output, and all data is written directly to the output; no internal buffers are allocated, making performance much faster. The performance improvement from this is significant, improving performance by 4-40x in my results from stress-test benchmarks that I created alongside these changes (sample results below). In a practical project in which I'm using rosc, these changes have decreased the amount of time spent encoding OSC packets to about 1/8 of what it was before (from ~150 us per packet to ~18 us) with no code changes in that project.

Make the output more flexible. This PR adds an Output trait which allows the user control over what is done with the output. For std, this includes an implementation of this trait for std::io::Write, allowing OSC data to be encoded directly to a Vec<u8>, Cursor, socket, file, etc. In the non-std case, an implementation is provided only for Vec<u8>. These changes also include encode_into and encode_string_into functions, which allow the user to pass in a mutable reference to any object implementing this Output trait, allowing the user to control how the encoded data is handled.

The existing public functions have not had their signatures altered, only new public items have been added. Thus, according to the SemVer Compatibility guide, these changes should only qualify as a minor change. Additionally, these changes do not incur a MSRV bump (1.52 is the minimum supported version according to cargo-msrv, both with and without these changes). Thus, these changes don't require a major version bump.
This also fixes unit tests not building without the std feature. All existing unit tests are passing, both with and without std. No additional unit tests have been added.
Benchmark results on my machine for comparison:

Benchmark
master
encoder-improvements
Relative Speed (1x = no change)

bench_encode_args_array
90,150 ns/iter ± 4,137
6,904 ns/iter ± 250
13.1x

bench_encode_args_blob
73,101 ns/iter ± 989
11,919 ns/iter ± 542
6.1x

bench_encode_args_bool
37,263 ns/iter ± 665
5,293 ns/iter ± 71
7.0x

bench_encode_args_double
69,613 ns/iter ± 1,721
6,112 ns/iter ± 165
11.4x

bench_encode_args_float
69,645 ns/iter ± 1,475
6,015 ns/iter ± 171
11.6x

bench_encode_args_int
70,911 ns/iter ± 6,504
6,082 ns/iter ± 103
11.7x

bench_encode_args_long
70,653 ns/iter ± 1,034
6,073 ns/iter ± 174
11.6x

bench_encode_args_nil
37,474 ns/iter ± 918
5,254 ns/iter ± 94
7.1x

bench_encode_args_string
141,297 ns/iter ± 2,025
9,611 ns/iter ± 183
14.7x

bench_encode_bundles
294,400 ns/iter ± 23,868
7,092 ns/iter ± 102
41.5x

bench_encode_bundles_into_new
-
8,530 ns/iter ± 93
-

bench_encode_bundles_into_reuse
-
7,189 ns/iter ± 66
-

bench_encode_huge
2,932,320 ns/iter ± 91,668
752,465 ns/iter ± 71,469
3.9x

bench_encode_huge_into_new
-
695,820 ns/iter ± 22,084
-

bench_encode_huge_into_reuse
-
235,025 ns/iter ± 2,126
-

bench_encode_messages
374,490 ns/iter ± 3,665
12,190 ns/iter ± 116
30.7x

bench_encode_messages_into_new
-
15,494 ns/iter ± 133
-

bench_encode_messages_into_reuse
-
13,943 ns/iter ± 271
-

I find the discrepancy between the encode benchmarks and the into_new benchmarks interesting, because they should be doing the same thing, and yet the encode benchmark is noticeably faster in most cases (except for the huge benchmark).

@Barinzaya That's awesome work you did there 🐎 !
I'll try to find some time in the next days, maybe next week, to get a deeper look into the changes and give it a proper review.  Thanks in advance!

Sure thing! Let me know if you have any comments or suggestions.

@Barinzaya That's awesome work you did there 🐎 !
I'll try to find some time in the next days, maybe next week, to get a deeper look into the changes and give it a proper review. Thanks in advance!
Edit: I deleted the original comment, because I accidentally made that using my work account.

I simplified the encode_args benchmarks to simplify the packets being encoded and focus it more on the arguments (was bundle(1 message(args)), now just message(args)). For some reason, this seems to have improved the performance on the branch further (expected, since there are fewer steps to the encoding), but for some reason didn't seem to have any effect on the benchmark time on master, much to my surprise. This makes the improvement numbers look nicer, but also makes me wonder if the benchmarks I added are missing some case that accounts for that difference.
Just wanted to make an open note of it, since it gives me the feeling of fluffing the numbers, which wasn't the intention at all.

@Barinzaya Can you share the command (if there is some) that you used to create the benchmark table from https://github.com/klingtnet/rosc/pull/44#issue-1617160005 ?
Did you use https://github.com/BurntSushi/cargo-benchcmp ?

As far as the benchmark comparison table, I created them manually. Ran cargo bench on master and copied the output, then switched to encoder-improvements and copied its outputs. The relative speeds were also done manually (old time / new time).
I probably could have at least used a spreadsheet or something, but there were only a few benchmarks when I started and I never bothered to set one up. There might be other, more suitable tools out there too.

Commits have been squashed.
Unsquashed commits are still available in the encoder-improvements+unsquashed branch on the fork's repository.

Looks good to me.  I'm going to merge this in the next few days and then prepare a release.
@Barinzaya Good work 👍🏻

Added one more commit, which adds an encoder unit test using encode_into to write to a Vec via a Cursor, using the WriteOutput struct. I feel this is somewhat important, as Output implementation for WriteOutput is not covered by the existing unit tests.
That makes this 5 commits, one per file touched. I can squash them down a bit further (e.g. combine the commit for the unit test change with the commit for the encoder changes) if preferred.


Support TFX 1.10

Add support for TFX 1.10. Also introduces a small fix to handle pre-releases in test_utils

/lgtm

ty!


parser variable support?

I apologize if this is documented somewhere but I was hoping to parse a sample of gcode with variables.
#103=50.0 (BAR STOCK DIA);
...
G00 X[#103+3] Z5.0 M08;

Is there a way to handle these lines?  In my limited testing the parser ignores the declaration and raises a ParseFloatError on retrieval.  I'm not targeting an embedded system so I suppose I could handle the error then parse the span with regex or something.  Any input is appreciated.  Thanks!
edit: also implicitly used here is an expression and "variables" could be parameters etc

Is this valid gcode? From memory, everything in gcode is hard coded and there are none of the higher level concepts like variables, loops, and conditionals that you find in real programming languages.

Yeah unfortunately (as I understand it) there are a bunch of variations in syntax from different manufacturers.  But I believe it's quite common to use values like tool offset, vice offset, etc in the gcode itself.  If CAM software (like fusion 360 or mastercam) is used, I believe you enter those values and compute the final value beforehand.
My use case involves a large library of gcode that was written by hand where parameters and expressions are common.
Interestingly (or horrifyingly), loops and conditionals are available in many dialects of gcode with WHILE, GOTO, and IF primitives available.
Anyway, thanks for the response.  I think I can parse most of it without much effort then use regex for the rest.

I intended the parser to be fault tolerant and skip over text it can't understand, so let me know if you encounter issues where some commands are broken after skipping variables or expressions (e.g. the previous line contained an expression and then we only parse half of the next line).
Depending on how much effort you want to go to, the Callbacks::unknown_content() callback may be useful for detecting when an expression/variable was skipped and doing something to handle it. That callback gives you the "unknown" text and where it occurred, so in theory you should have enough information to figure out the rest.

Thanks for pointing that out.  That's what I'll do.  Thanks


onAttach(), onDetach()

the docs are...lacking.

I think these are pretty low level calls.  I searched the repository and none of the widgets use them.  These functions are actually called on every object (stack, card, ...) but I'm not sure where it would fall in the widget sequence.  OnCreate and OnLoad are very early.  Not sure if the attach would happen between or after them (don't think it could happen before, but don't really know for sure).  I'd have to sift through .cpp code to figure that out.  LC Mark could probably answer off the top of his head.


Migrate old StateProvider to riverpod generator

I have the following provider
final completeProfileImageProvider = StateProvider.autoDispose<File?>((ref) {   return null; });
and update its value like
ref.read(completeProfileImageProvider.notifier).state = file;
now I get warning

Generated providers should only depend on other generated providers. Failing to do so may break rules such as "provider_dependencies".

To solve this I tried to use @riverpod generator but I couldn't update the value
I know I think I can use class based generator approach but I have more providers like this which I dont want to convert to clases what is  the solution here?

The solution is to use a class.
I am considering a slightly simpler syntax for this case. But at the moment, you'll have to write a class.
There are already issues for improving the StateProvider syntax, and docs about its migration.
So I'll close this :)


Can I use xls.writeFile(callback)?

I think it will be wonderful if I can save a xls file like:
xls.writeFile(function(err){}); or specify a new file name xls.writeFile('aaa', function(err){});
Can I use it like that now?

@liwenzhu @irfanyounas @geraltrivyan @sixquarks @recalccc migrating the issue to the XLSX tracker


zgui: expose ListClipper API

Exposes ImGui's ListClipper to have performant lists/tables with lots of items.
I tested it with my own code, and it works as expected.
Let me know if there is anything missing or that should be changed.

Oh nice, I was actually just going to start using this and was hoping it was bound already! :)


EnvironmentVariableCollection.description only works for one extension

This is the reason js-debug isn't working but git is:
https://github.com/microsoft/vscode/blob/01d4949f36c7a5598f115adaea463dc30e4f9c12/src/vs/platform/terminal/common/environmentVariableCollection.ts#L139-L161
This is probably a good candidate for recovery, not a good reason to push 1.80.0 out though.

Fixed in main https://github.com/microsoft/vscode/pull/186861

Thanks for taking care of it while I was out! Can this be closed?

@karrtikr this one's going into the recovery build, didn't quite make the cut for 1.80.0.

@karrtikr verified that JavaScript debug terminals are getting the expected env - can you pls lmk what the repro steps were here?

You can add the following setting to activate description for Python ext: "python.experiments.optInto": ["pythonTerminalEnvVarActivation"] in User settings and reload.
After which, if you select a virtual environment (Python: Select Interpreter), it should use env collection to activate terminal with appropriate description, something like:

Description is the "Enable Nodejs..." string next to "Javascript debugger:", it appears when hovering over the terminal label.

Seems to work 👍

The actual verify steps for this is to ensure 2 list items appear in the same section. Verified below.
Insiders:

Stable:


Improve priority support

Is your feature request related to a problem? Please describe.
Both regex recognizers and triggers rely on order to resolve conflicts.  Currently there is no way to change this order except by manipulating the dialog JSON directly.  The regex recognizer returns the first intent that matches.  By default triggers rely on priority to pick which trigger to execute when there are multiple matching triggers and the trigger priority is the order in the triggers array.
Describe the solution you'd like

We should support surfacing all intents from recognizers so that we can use conditions/priorities to choose between them at the trigger level.
We should add a flag to the ability for a regex recognizer to return all matching intents and default to that in Composer.  That way all matches are surfaced to the trigger level and the trigger can use priority & conditions to decide which one to take.
We should add the ability to reorder triggers to the Composer UI.  Simplest would be to allow drag & drop in the left nav.

Describe alternatives you've considered

We could fill in trigger priorities when a trigger is defined, however this is likely to be confusing and since priority is an integer there are problems when you want to insert things in-between two existing priorities.  I've filed a separate bug to change priority to a float which would get rid of that issue but would be a breaking change.
We could have explicit UI for controlling the order of triggers.  Advantage would be that it does not confuse the left nav information model with the order and that you would be more explicit about triggers that have explicit priorities.
We could add priority/condition to the regex recognizer, but this starts sounding a lot like triggers.
Composer could warn if you put a priority on an onIntent trigger when there are no alternatives for that intent.  This would at least tell people that priority did not matter.

Additional context
This was originally found in porting Hubot scripts.  From the discussion:
The priority issue is a collision of how we present things and what is happening underneath.  Underneath there is a regex recognizer which takes all of the trigger patterns and it will take the first pattern that triggers and surface that as a single intent which will only have 1 trigger that ever matches--so priority will not matter.  The trigger UI "appears" to have a regex which is a part of the trigger condition--but it is not.  I suspect that what we should change the regex recognizer to optionally surface all intent matches.  This would cause multiple intents to fire which then would allow priority to play a role and this would be more compatible with the UI presentation.
This also points to another issue.  Both regex and triggers use the order inside the recognizer or triggers array as the default priority.  There is no way in composer to change that except by looking at the dialog code and manually rearranging JSON.  Currently the left nav for triggers keeps them in the order they are defined.  I could see allowing manually reordering them although there is a tension between the functional order and the informational order.  For example, alphabetical is nice for finding stuff, but unlikely to be the preferred evaluation order.  We could also explicitly specify the priority on the regex expression or trigger but that is likely to be confusing and we would probably want to be able to renumber.
Related SDK issues:
https://github.com/microsoft/botbuilder-dotnet/issues/5082
https://github.com/microsoft/botbuilder-dotnet/issues/5083

Transferring to the dotnet repo.  I think we need to consider this from an SDK perspective and then, once any changes are made at the SDK level, we can open appropriate tickets for Composer.
@mrivera-ms @tomlm @chrimc62 @johnataylor This issue plays in a complex space from what I can see - would be good for the SDK team to provide a perspective on what should be done here (it may be exactly what @chrimc62 has suggested) with a view to ensuring we don't introduce any behavior changes for existing users.
Given we only found this during the HuBot scenario, I think that we might want to deliberately push this issue to R14, given the current timelines for R13, but happy to discuss if we think this is more important and we have data to support that.
Assigning to @mrivera-ms to coordinate within the SDK team for an initial discussion.

We will not be addressing at the moment.


What's the difference between css and style?

I'm reviewing the docs and I see references to 2 methods: css and style. Is there any difference?
Also, I'm trying to use an external css lib, like bootstrap or flexboxgrid. Is there a way to integrate classes from those libraries like this:
<div className={"row" + <glamor-expression>}>

There's no difference between the two. I'm keeping style() around for legacy reasons.
Your example for integrating classes looks fine, tho you need a space after row - "row " +

I figured out that

Also worked. This seems cleaner.

Yes, that's my preference too :) closing this for now, lemme know if you have any more issues


Added this.hasChanged

The control is related with a renderer.
It is not necessary to render if there is not update in the control.
So, I created property called hasChanged to know when the user has done some event in the control.
The user MUST reset the variable to false in his program.
Should be it better to do something like this to do it more automatically?
function getHasChanged() {
let aux = this.hasChanged;
this.hasChanged=false;
return aux;
}

@rwirz does it have a real impact on performance?
Could you please submit the patch to THREEJS?
We want to update the THREEJS because ideally AMI should not have to deal with that unless there is a good reason to maintain a different version.
The only other missing thing in THREEJS one is the ability to set the "state" programatically.
I just opened a pull request for this one:
https://github.com/mrdoob/three.js/pull/10284
Once merged, we could ideally just get rid of the copy of the controls we maintain in AMI.
Does that make sense?

It is not for Three.js since the api is good, it is an application "issue".
How a re you going to work with the Views: 3d, axial, sagital, coronal in the same window ?
If you are going to work with orthogonal cameras for axial, sagital and coronal, it is good to render only when something change so the performance is better.

I think I understand what you mean - in the render loop, you want to render the scene only if something was updated, if not skip the render.
So basically you are asking if we can get a proper API to support this behavior:
http://jsfiddle.net/nicolasrannou/7k7bf7fc/

Yes. You can see a great FPS difference. The problem is that you need a function to render the 2D view (3D scene with orthogonal camera) to render when the GUI is updated too. And with layers you can set what see or not see in each camera.

Yes  exactly - as you said my concern is that it is not specific to the control so I am not sure it is the best place to add such a flag:

if the LUTs changes we need to re-render.
if the window size changes we need to re-render.
etc.

I am thinking now that maybe the best approach is not to have any flag at all and just render the scene explicitly if needed:
render: function(){
    requestAnimationFrame(function() {
      controls.update();
      renderer.render(scene, camera);
    });
}

It needs a bit more logic to handle zoom/pan properly though but that it is probably the best bet.
WDYT?


[Bug]: Warning: React version specified in eslint-plugin-react-settings must be a valid semver version, or "detect"; got “^17”

Is there an existing issue for this?

[x] I have searched the existing issues and my issue is unique
[x] My issue appears in the command-line and not only in the text editor

Description Overview
I am getting this Warning message:
Warning: React version specified in eslint-plugin-react-settings must be a valid semver version, or "detect"; got “^17”
I have a .eslintrc file with this setup:
"settings": {
"react": {
"version": "detect"
},
Expected Behavior
This plugin should be able to cope with carets which are part of the semver specification
eslint-plugin-react version
v7.37.2
eslint version
v8.57.0
node version
v20.10.0

Technically no, ranges are not part of the semver specification, they're something npm invented (although, they should be, and there's an open PR on the spec to add them).
It's meant to target a specific version. is there a reason you can't use "detect"?

I currently have "detect" on the .eslintc file. Are you referring to adding that tag somewhere else?

No, that’s what i meant. If you have that setting, where does the ^17 come from?

Well, from what I gather, the "detect" tag in .eslintc is making the plugin fetch the ^17 from my package.json (for the react dependency) and hence giving the warning.

The way "detect" works is it pulls the version number directly from the react you have installed on disk, so package.json shouldn't be involved at all (except in that it informs what ends up on disk).

If not from my package.json then I don't where else it would retrieve ^17 from:
If I do "npm list" I get, for React:
├──<EMAIL_ADDRESS>

Can you use eslint --print-config=path/to/some/file and see what it says under settings? it's possible a shared config or a nested .eslintrc file is setting it to ^17.


ci: addlicense in github actions

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 98.382%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
1459

Relevant Lines:
1483

💛  - Coveralls


Packagist version

Q
A

Bug report?
yes

Feature request?
no

BC Break report?
no

Looks like v.1.0.3 in packagist contains the dev-master (v.2) branch and therefore doesn't work.
https://packagist.org/packages/simplethings/entity-audit-bundle#v1.0.3

oh man :-( thank you very much! should be fixed with version 1.0.4


Customizing the timetable grid.

Is it possible to change the timetable grid to start from any time rather than 7:30a using a GUI option? Or Should it be changed programmatically?
Also, is it possible to change the timetable grid unit to be 1 hour instead of 30 minutes using a GUI option?

The start time, end time, and increment for each selection on the Times dropdown of the Timetable page can be changed using the unitime.timeGrid.timesX application properties (see Administration > Defaults > Configuration)
You can modify (or create another) time window (Times dropdown in the Filter on the Timetable page) using the unitime.timeGrid.timesX application properties (X is a number starting with one). The defaults are:
unitime.timeGrid.times1=Daytime|90|210|6
unitime.timeGrid.times2=Evening|210|276|6
unitime.timeGrid.times3=Daytime & Evening|90|276|6
unitime.timeGrid.times4=All|0|288|6

The format is name|first slot|last slot|increment, e.g., Daytime|90|222|6 means starting at 7:30 am, ending at 6:30 pm, in half-hour increments. All time slots are 5 minutes long and start at midnight.
So, for instance, if you want to change the Daytime & Evening times, create a new application property unitime.timeGrid.times3 and set it to what you need (using the Administration > Defaults > Configuration page). If you want to create new options, create property unitime.timeGrid.times5, unitime.timeGrid.times6, and so on.


Fix bracket/brace names in sql.grammar

The bracket and brace is switched.
ASCII 91 = "[", which matches "BracketL" at https://github.com/codemirror/lang-sql/blob/main/src/tokens.ts#L25, but was "{" on L45 in sql.grammar

Thanks for spotting that!


clv.utils.customer_lifetime_value generates one row for every chain/draw/customer_id permutation instead of 1 row per customer_id

As the title says, clv.utils.customer_lifetime_value returns an unmanageably large dataset for me. For a sample dataset with 25k users, our final dataset results in 100 million rows.
Below are the key steps I ran, where clv_df_all is my full dataset and clv_df_freq1 filters that dataset down to users with frequency>0:
import pandas as pd
import pymc_marketing.clv as clv
bgm = clv.BetaGeoModel(data = clv_df_freq1)
bgm.build_model()
bgm.fit()
user_ltvs = clv.utils.customer_lifetime_value(
    transaction_model = bgm,
    customer_id = clv_df_all['customer_id'],
    frequency = clv_df_all['frequency'],
    recency = clv_df_all['recency'],
    T = clv_df_all['T'],
    monetary_value = clv_df_all['monetary_value'],
    time = 12,
    discount_rate = 0.01,
    freq = 'D'
)

Is this expected behavior (i.e. am I missing a post-processing step)? Or is this unintended behavior?

Thanks @ricardoV94. I'd love to help with a pull request if I knew how to, but unfortunately I don't.
Is there anything else I can do to help with this? This feature would be really helpful for us.
Alternatively, if there's another way to generate CLVs with the pymc_marketing.clv, I'd love to try that. For the "main" method outlined in one of the tutorial notebooks, I'm running into this issue.

Actually, reading through the tutorial notebooks again, I see that this section https://www.pymc-marketing.io/en/stable/notebooks/clv/clv_quickstart.html#ranking-customers-from-best-to-worst generates a "thin" output with num_purchases.mean(("chain", "draw")).values.
Just confirming – I should be able to the same with clv.utils.customer_lifetime_value to get my intended output, right?

Instead of adding a thin to every method, I decided to add it to the model itself. Then a user gets back a model with the thinned dataset, and can call whatever methods they want with it (and doesn't need to destroy the full dataset of the original model)

Hey ricardo, please could you demonstrate in a few lines how this functionality would be used?

@tomthepeach it will look something like:
fitted_gg_thinned = fitted_gg.thin_fit_result(keep_every=10)
fitted_bg_thinned = fitted_bg.thin_fit_result(keep_every=10)

ggf_clv_thinned = fitted_gg_thinned.expected_customer_lifetime_value(
    transaction_model=fitted_bg_thinned,
    customer_id=t.index,
    frequency=t["frequency"],
    recency=t["recency"],
    T=t["T"],
    mean_transaction_value=t["monetary_value"],
)

You could sample less draws from the get go when calling model.fit, but usually you want enough to at least check convergence.

Looks good! Would be awesome to get this merged into main, perhaps this should be the default/ recommended approach? I'm not sure what the utility is for the current implementation

Looks good! Would be awesome to get this merged into main, perhaps this should be the default/ recommended approach? I'm not sure what the utility is for the current implementation

Thinning loses information so we shouldn't do by default. It's up to the user to decide if they are no longer going to need all the draws, and that depends very much on their workflow. Hopefully this makes it easier to make that decision.
We'll try to get it merged soon, I think there were still some tests failing. Follow the PR to be up to date!


批量导入卡密报错Whoops, looks like something went wrong.

批量导入卡密报错Whoops, looks like something went wrong.
不知道怎么回事，之前可以正常批量导入的，一个月后就不行了

开debug看报错


Having Error in Colab

While trying to run the code in colab I am getting following error
ERROR: Could not find a version that satisfies the requirement numpy==1.22.0 (from questgen) (from versions: 1.3.0, 1.4.1, 1.5.0, 1.5.1, 1.6.0, 1.6.1, 1.6.2, 1.7.0, 1.7.1, 1.7.2, 1.8.0, 1.8.1, 1.8.2, 1.9.0, 1.9.1, 1.9.2, 1.9.3, 1.10.0.post2, 1.10.1, 1.10.2, 1.10.4, 1.11.0, 1.11.1, 1.11.2, 1.11.3, 1.12.0, 1.12.1, 1.13.0rc1, 1.13.0rc2, 1.13.0, 1.13.1, 1.13.3, 1.14.0rc1, 1.14.0, 1.14.1, 1.14.2, 1.14.3, 1.14.4, 1.14.5, 1.14.6, 1.15.0rc1, 1.15.0rc2, 1.15.0, 1.15.1, 1.15.2, 1.15.3, 1.15.4, 1.16.0rc1, 1.16.0rc2, 1.16.0, 1.16.1, 1.16.2, 1.16.3, 1.16.4, 1.16.5, 1.16.6, 1.17.0rc1, 1.17.0rc2, 1.17.0, 1.17.1, 1.17.2, 1.17.3, 1.17.4, 1.17.5, 1.18.0rc1, 1.18.0, 1.18.1, 1.18.2, 1.18.3, 1.18.4, 1.18.5, 1.19.0rc1, 1.19.0rc2, 1.19.0, 1.19.1, 1.19.2, 1.19.3, 1.19.4, 1.19.5, 1.20.0rc1, 1.20.0rc2, 1.20.0, 1.20.1, 1.20.2, 1.20.3, 1.21.0rc1, 1.21.0rc2, 1.21.0, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6)
ERROR: No matching distribution found for numpy==1.22.0

similar issue
it seems that colab will not support the numpy version 1.22.0 anymore(in default indexes-searching websites)
I'm also trying to code in colab, and this project cites Questgen from this git link
However, Questgen keeps torch version at 1.10.0,
but colab could only find versions from 1.10.1 to latest versions
that is to say, 1.10.0 is out of date for colab
by the way, I have tried many times and I could have some experience
add more source of finding indexes. In default, colab will look in indexes in https://pypi.org/simple   and  https://us-python.pkg.dev/colab-wheels/public/simple/
we could try more urls to search for viable indexes
!pip install --index-url=https://mirrors.aliyun.com/pypi/simple/ packagename
try different urls in the above code
it could be useful when the url contains the package versions you want


Update README.md

Made table look cleaner, didnt change any core content

Made table look cleaner, didnt change any core content

Thanks for your interest in contributing to our repo. The table is frontmatter metadata used by our systems to publish the template across our docs' sites, so unfortunately, we can't alter it.
We look forward to having other contributions from you!