Adaptive avg pool 1d

Thanks for the PR!

No problem at all.

* Would it be possible to add support for 2d and 3d pooling as well?

Yes, but it will take me some time to work on it. I'll prioritize tests for 1D and documentation first.

* And possibly also n-dimensional pooling? Although I think the number of pieces might scale exponentially with the dimension n. Not sure if there's a smart way around that. (Do you know how PyTorch handles this?)

I'll take a look at this and start a discussion before working on the 2d and 3d implementations.

* Can you add some tests verifying that this works as expected?

Yes, I'll do that.

* Can you add this to the pooling documentation in `/docs/api/nn/pool.md`?

Yes!

Excellent!
Regarding higher dimensions: I think it might be possible to implement this by sequentially performing 1d averages over each dimension in turn?
I speculate that this isn't optimal speed-wise for smaller dimensions (as the operations are sequential, not in parallel), but is better for large dimensions (no exponential explosion in the number of pieces). In either case it would be easier to implement though.

I tried the sequential 1D adaptive calls. For this, probably best to have functional form of the adaptive_avg_pool1d?
Speed wise, pytorch adaptive1d is 100x faster than the current eqx version (tried on colab). Any idea on how the speed can be boosted? For the 2D variants, speed difference is 4x.
Pytorch AdaptiveAvgPool1,2,3d are implemented as calls to their respective F. method. link
A general Nd adaptive pooling is a base class without a forward call.

I think the functional form for adaptive_avg_pool1d is a great way to implement things. In terms of it apparently being slower -- do you have a benchmark script you can share?

I crudely compute the performance (ONLY CPU) using
key = jax.random.PRNGKey(0)
arr = jax.random.uniform(key, (1,10000))
final_size = 500

adptv_pooler = AdaptiveAvgPool1D(final_size)#eqx

avg_pooler = nn.AvgPool1D(kernel_size=20, stride=20)#eqx

torch_pooler = torch.nn.AdaptiveAvgPool1d(final_size)#torch
torch_tensor = torch.tensor(np.asarray(arr))

%timeit -n 25 jax.vmap(pooler)(arr).block_until_ready()
%timeit -n 25 avg_pooler(arr).block_until_ready()
%timeit -n 25 torch_pooler(torch_tensor)

"""output
25 loops, best of 5: 1.86 ms per loop
25 loops, best of 5: 367 µs per loop
25 loops, best of 5: 16.1 µs per loop
"""

PyTorch's calls: with a bit of spelunking through the C++ source code I found this, which looks like the 2d implementation. Basically they're just manually iterating.

Yes, eqx.AdaptivePoolAvg1D (version 0) was based on this. Like you mentioned it before, looping in python is perhaps not the best way to reproduce what pytorch does.

AvgPool1d expecting 2d input: ack, that's annoying. That's a mistake on my part, I think. (FWIW I do think this might be slightly easier to use inside a nn.Sequential this way, without needing to wrap in a vmap.)
...  Which do you think is best?

Pytorch supports both 3D (batch, channels, dims) and 2D(channels, dims) inputs for adaptive1D. Using this as a reference, it makes sense to support 2D input for adaptive1D. This becomes consistent with the other pooling methods implemented in equinox.

Would it be reasonable to add an AdaptivePool base class, on top of which we implement AdaptiveAvgPool1d, AdaptiveMaxPool2d etc? I think this should be possible/straightforward, and then we'd have complete parity between adaptive and non-adaptive pooling.

Yes, it makes sense to have one.

Regarding the speed: you need to wrap the JAX operations inside a jax.jit, i.e. jax.jit(jax.vmap(pooler))(arr).block_until_ready(). The first time this is run this will be compiled. On subsequent runs this will then hit the compiled version of that function.
(There are three rules for using JAX that I wish I could emblazon across the sky: 1. have a single jax.jit (or equinox.filter_jit) decorator surrounding all your code. 2. don't use lax.cond unless you know what you're doing 3. don't use .at[] unless you know what you're doing.)

Okay, we're getting there! I think it should be possible to have an AdaptivePool base class rather than just AdaptiveAvgPool, by simply passing in the operation to be vmap'd inside _adaptive_avg_pool1d: jnp.max instead of jnp.mean, etc. This would then be consistent with the current pooling operations.
Likewise I don't think we need _adaptive_avg_pool{2d,3d} operations. Rather we should be able to do something like:
class AdaptivePool(eqx.Module):
    target_shape: Tuple[int]
    operation: Callable

    def __call__(self, x, *, key=None):
        if x.ndim != len(target_shape):
            raise ValueError(...)
        for i, target_size in enumerate(self.target_shape):
            x = jax.vmap(_adaptive_pool1d, (i, None, None))(x, target_size, self.operation)
        return x

class AdaptiveAvgPool1d(eqx.Module):
    def __init__(self, target_size):
        self.target_shape = (target_size,)
        self.operation = jnp.mean

...  # avg-2d, avg-3d, max-1d, max-2d, max-3d

I agree that a general AdaptivePool is much better and having operation also allows for easier extension to other pooling methods.
My concern is the __call__ method of the AdaptivePool. Assuming that _adaptive_avg_pool_1d is the current implementation then the line below
for i, target_size in enumerate(self.target_shape):
            x = jax.vmap(_adaptive_pool1d, (i, None, None))(x, target_size, self.operation)

will only work for AdaptiveAvgPool1d. The _adaptive_avg_1d at the moment assumes the input to be (dim, ) and all the others are built on top of it. That's why I added _adaptive_{2d,3d} to iterate over first N dimensions before calling _adaptive_1d.

Ah right. Yeah I think what's needed is something like:
for i, target_size in self.target_shape:
  op = _adaptive_pool1d
  for j in range(len(self.target_shape)):
    if i == j:
      continue
    op = jax.vmap(op, in_axes=(j, None, None))
  x = op(x)

Alternatively, I think we can try to solve it recursively inside the _adaptive_pool1d with an extra _adaptive_pool method. Something like
def _adaptive_pool1d(x: Array, target_size: int, operation: Callable) -> Array:
    if x.ndim == 1:
        dims = jnp.size(x)
        num_head_arrays = dims % target_size
        if num_head_arrays != 0:
            head_end_index = num_head_arrays * (dims // target_size + 1)
            head_mean = jax.vmap(operation)(x[:head_end_index].reshape(num_head_arrays, -1))
            tail_mean = jax.vmap(operation)(
                x[head_end_index:].reshape(-1, dims // target_size)
            )
            mean = jnp.concatenate([head_mean, tail_mean])
        else:
            mean = jax.vmap(operation)(
                jax.vmap(operation)(x.reshape(-1, dims // target_size))
            )
        return mean
    else:
        return jax.vmap(_adaptive_pool1d, (0, None, None))(x, target_size, operation)

def _adaptive_pool(x: Array, target_shape: tuple, operation: Callable) -> Array:
    dims = x.ndim
    for i in range(dims):
            x = jnp.moveaxis(x, i, -1)
            x = jax.vmap(_adaptive_pool1d, (0, None, None), 0)(x, target_shape[i], operation)
            x = jnp.moveaxis(x, -1, i)
    return x

Then the base class can simply call the _adaptive_pool batched over channels and the methods can take care of batching over the dims?

@paganpasta just checking whether this is ready for review or not?

Alright, merged via #140. Thanks a lot for contributing -- I know we went back-and-forth on the design a bit!


feat(snippets): add new quirks

Why did you close? It was just waiting on the linting fixes I think?


feat: add budgetadjustment spec

Add a Budget Adjustment Spec to cover a use case where you would like to adjust the SLI percentage for an expected and accepted unreliability event.

You can find an initial implementation of the spec here: https://github.com/thisisibrahimd/opensloctl

https://github.com/OpenSLO/OpenSLO/discussions/256

~I'm really not sure how I feel about this~ I don't feel good about this. On one hand, I understand what the issue that you are trying to solve is, on the other hand, I am not sure if it's job of the specification (or frankly implementations) to support use-cases such as this one.
It would make more sense to me to solve your use-case at the monitoring level, for example by changing the uptime target or something similar (in the spirit of "it's agreed upon all people involved that this service should be considered 'up'")
I would love to hear from other contributors though.

I can understand your workaround and your statement on the job of the specification. However, unplanned of unexpected events can occur that needs to get patched sadly. You can read Nobl9's description of the use case, https://docs.nobl9.com/features/budget-adjustment/#:~:text=Using the budget adjustments feature,in the error budget calculations.


Remove a writer task in wasi-http

This commit updates the wasi-http BodyWriteStream implementation to avoid an extra task spawned to manage the outgoing body. Some local profiling shows that a "hello world" component currently maxes out at 500rps locally which is suprisingly low.
Some investigation shows that one of the primary reasons for this is concurrency-related issues. For example taskset -c 1 wasmtime serve ... has a significantly better rps than without taskset. My hypothesis is that the extra tasks for both reading the incoming body and writing the outgoing body are introducing opportunities for the guest to block and get work-stolen to another thread in the "happy path" where reads/writes are immediately ready and don't need blocking.
For example writing to the body currently sends the chunk of bytes to a task which then sends it to another task. This means that if a guest writes some bytes and then waits for readiness it'll synchronize on these bytes by doing a round-trip with another task. This opportunity for blocking apparently lets something, be it Linux or the Tokio scheduler, to work-steal the wasm task to another thread.
Once a wasm task is work-stolen to another thread it can significantly increase the cost of VM management syscalls because any happy path the kernel might have for a single thread is no longer applicable, meaning that many costs start shooting through the roof.
The fix here in this PR is to remove a helper task when writing HTTP bodies. This extra task didn't end up doing much and was largely just a proxy into a channel, so the channel is now directly manipulated instead. Namely the flush implementation in the old worker task didn't actually do anything and so the only thing that needs to be managed in the stream is sending chunks along through the channel. This proved relatively easy and enables the "happy path" where if a body is written and then flushed it's immediately "ready" so no opportunity for a context switch happens and wasm stays planted on its thread.
The end result of this PR is that wasmtime serve goes from 500rps to 5000rps (10x increase) for the simple "hello world" example that I'm working with.

Good point @pchickey, how about this amended approach? I had to increase the channel capacity by 1 to get a test to pass but otherwise this seems like a good way to avoid that. This way we don't allow writes unless there's guaranteed capacity in the channel so we're guaranteed channel sends always succeed.


Return to message list upon "Mark as unread"

fixes https://github.com/thundernest/k-9/issues/7081
PR Description
This PR returns to this of messages(or go to the next message depending on the settings) when a message is marked as unread,
Issue video
https://www.loom.com/share/9093c59a60e840218aee631b8a10da20
Demo video
https://www.loom.com/share/4740c3e1de434a57b92be13c37352d4d

This code was written and reviewed by GitStart Community. Growing great engineers, one PR at a time.

Thank you for your pull request :+1: Apologies, for not providing feedback earlier.
We postponed dealing with this pull request because its existence highlights a couple of organizational issues we have as an open source project. We're now (slowly) beginning to address those.
Initially we weren't sure if we even wanted to add this feature. Since then we've talked about this internally and decided that yes, we're fine with adding an option that controls what happens when a message is marked as unread from the message view. Please see this comment for more information.
For the implementation, please discard the existing changes and do the following:

Add a new setting "Return to list after mark as unread". See 0cad7f3b4744b972a2db0ef247d4a845de778432 for an example of what changes are necessary to add a new setting. (Change K9, Settings, GeneralSettingsDescription, GeneralSettingsDataStore, general_settings.xml, and strings.xml)
Add a new method to MessageViewFragmentListener to handle the navigation after a "mark as unread" operation, e.g. performNavigationAfterMarkAsUnread().
Call this method after marking a message as unread (and only when marking as unread; not when marking as read!)
Implement the navigation logic in MessageList (i.e. call returnToMessageList() when necessary).

It has been quite a while since you've started work on this. If you have since moved on and don't want to implement these changes, that's totally understandable. In that case please add a quick comment to let us know and we'll work on this ourselves.
Again, apologies for sitting on this for so long and not making this a smoother experience for you as a contributor. We'll try to do better in the future.

Since there hasn't been any activity for more than a month, I considered this pull request abandoned and implemented the change myself. See #7350.


Using triple braces to open and close html tags does not render properly

In my controller javascript file I have the following:
"openTag": "
",
"closeTag": "
"
I want to be able to use them in my template like this:
{{{openTag}}}
     ``<button type="button" class="btn btn-default" >Button</button>
{{{closeTag}}}
The result I want is this:

     ``<button type="button" class="btn btn-default" >Button</button>

But instead it is rendering as this:

<button type="button" class="btn btn-default" >Button</button>
I want to run  an each loop inside the openTag but the problem is the tag is not always a div, it could be a ,
,
,
 or any other container tag, so I want it to be dynamic otherwise I have to insert an if block for each container.

Have you looked at the DOM or at the actual Handlebars output? Could you try to run console.log() with the result of the template-function? The browser might do some cleanups, although I don't understand why this should happen in your case.

Thanks for your reply.
I looked at the DOM, I inspected the page.
Which function do you mean? I'm just using triple braces to render a string property as HTML like this {{{openTag}}}

In the Contributing-Guide there is a link to a JSFiddle-Template that you can use to show your issue.
I have copied your Twiddle in the at https://jsfiddle.net/9D88g/53/ and it's working as you would expect.
This probably isn't a bug in Handlebars but something in Ember or even another package...

That's really weird. If you look at the twiddle, there isn't a lot of packages.  It may be the ember-template-compiler.
Thanks a lot anyway.

I'm going to close this. Please reopen if you have reason to suspect the issue is Handlebars.


Item not pressing

When scrolling down, I can't click on the top items. (I have a picture)

so it looks like the header image is overlapping the scroll view, going to wrap it with an IgnorePointer widget.


Pull request for python-pygments

For travis-ci//travis-ci#4244.
Ran tests and found no setuid bits.
See https://travis-ci.org/travis-ci/apt-whitelist-checker/builds/72050176

Sorry, but this test will have to be re-run. Will open a new one later.


#26 Pull request to implement array_get_random / array_pop_random

Issue: https://github.com/Alphish/gm-community-toolbox/issues/26
Tried to follow the specifications laid out by @Alphish  on the issue page as well as the guidelines/coding conventions on https://github.com/Alphish/gm-community-toolbox/issues/11
Had to implement a new type of assertion within Verrific to be able to implement some of the test cases. Created a separate commit for that.
Kindly review and get back with feedback

manta ray

@biyectivo I merged Verrific update with the should_be_one_of assertion. Please revert your changes to the Verrific scripts and use the new assertions instead (to avoid having different versions between the mainline Verrific and Community Toolbox one).
Also, please use the offset/length handling like in other utils_Array functions.
One more thing: I spotted some tab characters where browsing through files, please change them to 4 spaces instead. ^^'
(tabs can be recognised by being especially large in PR files differences view; they are displayed as 8 spaces instead of 4 there)


python312Packages.py-scrypt: 0.8.24 -> 0.8.27

Automatic update generated by nixpkgs-update tools. This update was made based on information from passthru.updateScript.
meta.description for python312Packages.py-scrypt is: Bindings for scrypt key derivation function library
meta.homepage for python312Packages.py-scrypt is: https://pypi.python.org/pypi/scrypt
Updates performed

Ran passthru.UpdateScript

To inspect upstream changes
Impact
Checks done

built on NixOS
The tests defined in passthru.tests, if any, passed
found 0.8.27 with grep in /nix/store/xnxhjbkykp17pz3f526gh50v4cyvlfs2-python3.12-py-scrypt-0.8.27
found 0.8.27 in filename of file in /nix/store/xnxhjbkykp17pz3f526gh50v4cyvlfs2-python3.12-py-scrypt-0.8.27

Rebuild report (if merged into master) (click to expand)

4 total rebuild path(s)

4 package rebuild(s)

First fifty rebuilds by attrpath

electrum-ltc
python311Packages.py-scrypt
python312Packages.py-scrypt

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/xnxhjbkykp17pz3f526gh50v4cyvlfs2-python3.12-py-scrypt-0.8.27 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A python312Packages.py-scrypt https://github.com/r-ryantm/nixpkgs/archive/2553f4b738d63dede25a2a1abf14ed9f77988633.tar.gz

Or:
nix build github:r-ryantm/nixpkgs/2553f4b738d63dede25a2a1abf14ed9f77988633#python312Packages.py-scrypt

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/xnxhjbkykp17pz3f526gh50v4cyvlfs2-python3.12-py-scrypt-0.8.27
ls -la /nix/store/xnxhjbkykp17pz3f526gh50v4cyvlfs2-python3.12-py-scrypt-0.8.27/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
nixpkgs-review result
Generated using nixpkgs-review.
Command: nixpkgs-review

x86_64-linux

:x: 2 packages failed to build:

electrum-ltc
electrum-ltc.dist

:white_check_mark: 4 packages built:

python311Packages.py-scrypt
python311Packages.py-scrypt.dist
python312Packages.py-scrypt
python312Packages.py-scrypt.dist

Maintainer pings

[!TIP]
As a maintainer, if your package is located under pkgs/by-name/*, you can comment @NixOS/nixpkgs-merge-bot merge to automatically merge this update using the nixpkgs-merge-bot.

Add a :+1: reaction to pull requests you find important.

nixpkgs-review result
Generated using nixpkgs-review.
Command: nixpkgs-review pr 361554

aarch64-darwin

:x: 2 packages failed to build:

electrum-ltc
electrum-ltc.dist

:white_check_mark: 4 packages built:

python311Packages.py-scrypt
python311Packages.py-scrypt.dist
python312Packages.py-scrypt
python312Packages.py-scrypt.dist


🚀 Feature: Restrict Signups to specified mail domains

🔖 Feature description
As an administrator for my organization, I want to be able to restrict who is able to log in to a few (mail) domains that are associated with our organization. An added field to the global admin configuration to list these domains is needed for that.
Btw: We love using pingvin-share! It has made not only our GDPR compliance but also everything else with an organization wide sharing tool so much easier.
🎤 Pitch
Currently, I am restricting the access to who is able to sign in or sign up by using a oauth plugin for our reverse proxy that forbids access for mail addresses not in our organization realm. Since you recently added the option to sign in with openID connect, this has become a totally unnecessary step, since it would be very easy to just forbid access for everyone but users with an organization mail address.
The reverse proxy setup is also unnecessary complex since I want to restrict access to registration, log in and file share, but not to actually viewing and downloading of the files, which should remain open for "outsiders".
Inviting every user manually is also not an option since 1) i want the registration flow to be as simple as possible and 2) at our non-profits scale I am simply not able to respond in a timely manner to registration requests.

hello are you talking about something like this

@TadeSF The restriction should only be for authentication with OAuth2, right? Because it wouldn't make sense for email and password authentication as the email doesn't get validated.

I mean the concept itself does apply to all means of authentication. But I agree that it wouldn't really make sense to implement it if there is no way to check if somebody actually has access to the email.
For me and my use case, applying this to OICD only would be sufficiant since I disabled email signup anyways - but I guess others using pingvinshare without OICD Issuer infrastructure in the background might still be interested in that feauter?
Also maybe implementing an email verification flow is generally worth a thought? 😊
Buth thats a different issue ofcourse and I can't tell what the cons/implications might be.

@TadeSF The restriction should only be for authentication with OAuth2, right? Because it wouldn't make sense for email and password authentication as the email doesn't get validated.

i put this in my pull request and i didnt mean to sorry

@TadeSF I think email verification is out of scope for this project. In my opinion it makes more sense to use a OIDC provider like Keycloak if advanced authentication features are required.
What OIDC provider do you use if I may ask?

Yeah, i think thats fair.
Internally, we are using google workspaces and currently use google as our OIDC Issuer. But we are currently in a transition process switching to Zitadel.
We are currently renewing our services and in order to avoid dealing with authentication all that much, we want to allow our users outside the organization to have one central Account and use OICD for all means of authentication. And to make privacy matters easy, we therefore decided on a selfhosted solution. Thats where Zitadel comes into play 😊

@TadeSF Thanks for sharing. Isn't there a way to limit the accounts for an OIDC client on Google's side? For example Microsoft Entra ID allows you to specify which tenants are allowed to sign in.


Mobile top bar

scroll down then all the way back up and you get awkward white space if you're on mobile.

resolved


chore: Update Anthropic example, use ChatPromptBuilder properly

Properly use ChatPromptBuilder init with documents variable
Inject document content into prompt not just str of the document
Verify component connections
Verify output is based on fetched document

@Amnah199 David and I talked about this example yesterday and how it needs an update. This is that update 😄

@vblagoje the docs also need to be updated: https://haystack.deepset.ai/integrations/anthropic#haystack-20

Thank you for this @davidsbatista https://github.com/deepset-ai/haystack-integrations/pull/254
All other docs are ok, merging this one


Check how across language optimization performs in TiKV

Feature Request
Is your feature request related to a problem? Please describe:
TiKV depends on grpcio, jemallocator and rust-rocksdb, all of them use a lot of C/C++ code. Currently, cross language optimization is not performed, so there may be some cases that simple functions are not inlined to achieve best performance.
Describe the feature you'd like:
Rust supports deferring the LTO to linking steps by using -C linker-plugin-lto. There is also a doc explaining the necessary steps: https://doc.rust-lang.org/rustc/linker-plugin-lto.html. TiKV may be too complicated to test out, we may probably test how much improvement it can bring in smaller crates first like jemallocator or rust-rocksdb.

I tried it before. Overall I don't see significant improvements in integration benchmarks.
But microbenchmarks show that there is about 20% improvement specifically in RocksDB get after applying LTO.

... 20% improvement specifically in RocksDB get ...

Then it may also help next and large range scan.


Racks can't be undone.

Thought I fixed this.  Didn't fix this.

suddenly, undoable racks. f21f83d8452e00b065fbdaacbb8de674436f5e69


Error when going to 2.3.3 from 2.2.0

I am getting this error which I was not before
TypeError: Cannot read property '$errorsWrapper' of undefined
errorsWrapper is defined
    elEventForm.parsley({
    successClass: "",
    errorClass: "has-error",
    classHandler: function(el) {
        return el.$element.closest(".form-group");
    },
    errorsWrapper: "",
    errorTemplate: ""
});

Sorry about that...
Could you tell me what the code that causes the error?

It's quite difficult to address this without at least knowing which code line causes the issue. Best would be a codepen.

sorry. just been busy. From what I remember I don't even have validation where it was occurring.

Just to be clear: best case scenario is if you can provide a codepen where the error occurs. Otherwise there's no way for me to tell what is going on.

Think I found the issue.
getting Accessing ParsleyUI is deprecated. Call 'removeError' on the instance directly.
when I using
window.ParsleyUI.removeError(actCountParsley, 'min');
elActivityCount.parent().removeClass("has-error")

what is the new way cause the docs still say to use that.

Yeah, the docs for addError/removeError/etc are very wrong, and the deprecation code itself blew up for me ("instance is undefined") when using addError when upgrading from 2.0.0.  Would be great to expand/fix the docs for this use case for those of us integrating Parsely with existing code/frameworks.

@KrunchMuffin The new way is to use actCountParsley.removeError('min').
@irongaze If instance is undefined, I think that means that the first argument you're passing is undefined, which would be an error on your end, no?
I anyways, I think this is fixed in the last release, let me know otherwise.
I would like to understand better the need for removeError and al, please comment in #1073.


⚠ ClamAV has degraded performance

In d46d32c, ClamAV (https://spamassassin.apache.org/) experienced degraded performance:

HTTP code: 200
Response time: 81 ms

Resolved: ClamAV performance has improved in f0b6790.


Create First-time contributors

I've made this file new contributors. It sends a welcome message to the contributors and checks their PR on CI. I'm not 100% sure whether both the welcome message and checks are going to work, but we can see! :)

Can you explain why this requires an additional file? Have you tested it on a smaller test repository so I can see what it looks like? :)

Can you explain why this requires an additional file? Have you tested it on a smaller test repository so I can see what it looks like? :)

@shahabgol I think Philippe will take care of changing the CI file to enable forks tests. I can close this branch I think :)

Can you explain why this requires an additional file? Have you tested it on a smaller test repository so I can see what it looks like? :)

@shahabgol I think Philippe will take care of changing the CI file to enable forks tests. I can close this branch I think :)

OK, I was planning to work on it tonight. but if you think Philippe can handle that, we can close the branch.


io.sysread can raise an EOFError

I've been experiencing random EOFError when connecting to sendgrid from my application from this line: http://github.com/rightscale/right_http_connection/blob/master/lib/net_fix.rb#L52. By default ruby (1.8.6) will raise the EORError: http://github.com/ruby/ruby/blob/ruby_1_8_6/lib/net/protocol.rb#L90.
I'm wondering if I would get the EOFError even without right_http_connection or if it was introduced by the larger socket read size? If the error was introduced by the larger read size what do you think the appropriate fix would be?

Hi i am also getting this exception randomly ... any idea so far ?


Chip widget's avatar padding changing if label text is more than 1 line

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
please run the below code
Expected results
Chip widget's icon padding should not change based on label text length
Actual results
Chip widget's icon padding is changing based on label text length
Code sample
Code sample
 Widget getAmenitiesList() {
    List<String> nameList = [
      'hello abc',
      'hello good morning abc',
      'good morning',
      'hello good morning hello good morning hello good morning  '
    ];
    return ListView.builder(
      itemCount: nameList.length,
      shrinkWrap: true,
      physics: const ScrollPhysics(),
      itemBuilder: (context, index) {
        return SizedBox(
          width: 300,
          child: ChoiceChip(
            label: SizedBox(
                width: 150,
                child: Text(
                  nameList[index],
                  maxLines: 3,
                  overflow: TextOverflow.ellipsis,
                )),
            selected: false,
            avatar: Icon(Icons.settings),
          ),
        );
      },
    );
}

Screenshots or Video

Logs
Logs
[Paste your logs here]

Flutter Doctor output
Doctor output
Flutter version 3.7.12

Of course, it will be changed and take child size, however, you need to  wrap the label (Widget) with SizedBox which will fix ChoiceChip height and width
 SizedBox(           width: 100,           child: Text(             nameList[index],             overflow: TextOverflow.ellipsis,           ),         ),

Alre

Of course, it will be changed and take child size, however, you need to wrap the label (Widget) with SizedBox which will fix ChoiceChip height and width SizedBox( width: 100, child: Text( nameList[index], overflow: TextOverflow.ellipsis, ), ),

Already wrapped label with sizedbox

Thanks for filing the issue. I can also reproduce this issue on the latest stable and master channels.

Complete sample code
import 'package:flutter/material.dart';

void main() {
  runApp(const MaterialApp(
    title: 'Flutter Demo',
    home: Example(),
  ));
}

class Example extends StatelessWidget {
  const Example({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: getAmenitiesList(),
      ),
    );
  }

  Widget getAmenitiesList() {
    List<String> nameList = ['hello abc', 'hello good morning abc', 'good morning', 'hello good morning hello good morning hello good morning  '];
    return ListView.builder(
      itemCount: nameList.length,
      shrinkWrap: true,
      physics: const ScrollPhysics(),
      itemBuilder: (context, index) {
        return SizedBox(
          child: ChoiceChip(
            label: SizedBox(
                width: 150,
                child: Text(
                  nameList[index],
                  maxLines: 3,
                  overflow: TextOverflow.ellipsis,
                )),
            selected: false,
            avatar: const Icon(Icons.settings),
          ),
        );
      },
    );
  }
}

flutter doctor -v (stable and master)
[✓] Flutter (Channel stable, 3.13.8, on macOS 14.0 23A344 darwin-x64, locale en-VN)
    • Flutter version 3.13.8 on channel stable at /Users/huynq/Documents/GitHub/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 6c4930c4ac (11 hours ago), 2023-10-18 10:57:55 -0500
    • Engine revision 767d8c75e8
    • Dart version 3.1.4
    • DevTools version 2.25.0

[✓] Android toolchain - develop for Android devices (Android SDK version 32.0.0)
    • Android SDK at /Users/huynq/Library/Android/sdk
    • Platform android-34, build-tools 32.0.0
    • ANDROID_HOME = /Users/huynq/Library/Android/sdk
    • Java binary at: /Applications/Android Studio Giraffe.app/Contents/jbr/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b829.9-10027231)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 15.0)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 15A240d
    • CocoaPods version 1.13.0

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 2022.3)
    • Android Studio at /Applications/Android Studio Giraffe.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b829.9-10027231)

[✓] Android Studio (version 2022.2)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b802.4-9586694)

[✓] VS Code (version 1.83.1)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.74.0

[✓] Connected device (3 available)
    • RMX2001 (mobile) • EUYTFEUSQSRGDA6D • android-arm64  • Android 11 (API 30)
    • macOS (desktop)  • macos            • darwin-x64     • macOS 14.0 23A344 darwin-x64
    • Chrome (web)     • chrome           • web-javascript • Google Chrome 118.0.5993.70

[✓] Network resources
    • All expected network resources are available.

• No issues found!

[!] Flutter (Channel master, 3.16.0-14.0.pre.22, on macOS 14.0 23A344 darwin-x64, locale en-VN)
    • Flutter version 3.16.0-14.0.pre.22 on channel master at /Users/huynq/Documents/GitHub/flutter_master
    ! Warning: `flutter` on your path resolves to /Users/huynq/Documents/GitHub/flutter/bin/flutter, which is not inside your current Flutter SDK checkout at /Users/huynq/Documents/GitHub/flutter_master. Consider adding /Users/huynq/Documents/GitHub/flutter_master/bin to the front of your path.
    ! Warning: `dart` on your path resolves to /Users/huynq/Documents/GitHub/flutter/bin/dart, which is not inside your current Flutter SDK checkout at /Users/huynq/Documents/GitHub/flutter_master. Consider adding /Users/huynq/Documents/GitHub/flutter_master/bin to the front of your path.
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 07042fa27c (3 hours ago), 2023-10-19 20:16:27 -0400
    • Engine revision cc3356c0e6
    • Dart version 3.3.0 (build 3.3.0-45.0.dev)
    • DevTools version 2.28.1
    • If those were intentional, you can disregard the above warnings; however it is recommended to use "git" directly to perform update checks and upgrades.

[✓] Android toolchain - develop for Android devices (Android SDK version 32.0.0)
    • Android SDK at /Users/huynq/Library/Android/sdk
    • Platform android-34, build-tools 32.0.0
    • ANDROID_HOME = /Users/huynq/Library/Android/sdk
    • Java binary at: /Applications/Android Studio Giraffe.app/Contents/jbr/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b829.9-10027231)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 15.0)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 15A240d
    • CocoaPods version 1.13.0

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 2022.3)
    • Android Studio at /Applications/Android Studio Giraffe.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b829.9-10027231)

[✓] Android Studio (version 2022.2)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b802.4-9586694)

[✓] VS Code (version 1.83.1)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.74.0

[✓] Connected device (5 available)
    • RMX2001 (mobile) • EUYTFEUSQSRGDA6D                         • android-arm64  • Android 11 (API 30)
    • iPad (mobile)    • 00008103-000A1464346A201E                • ios            • iOS 17.0.3 21A360
    • iPhone (mobile)  • d9a94afe2b649fef56ba0bfeb052f0f2a7dae95e • ios            • iOS 15.7.9 19H365
    • macOS (desktop)  • macos                                    • darwin-x64     • macOS 14.0 23A344 darwin-x64
    • Chrome (web)     • chrome                                   • web-javascript • Google Chrome 118.0.5993.96

[✓] Network resources
    • All expected network resources are available.

! Doctor found issues in 1 category.

Hi @Nandhini-Saravanakumar

Already wrapped label with sizedbox. I want to show avatar in same place (without additional padding)

"By same place"  Are you suggesting you want the icon to be on the top and not in the center?

Hi @Nandhini-Saravanakumar

Already wrapped label with sizedbox. I want to show avatar in same place (without additional padding)

"By same place" Are you suggesting you want the icon to be on the top and not in the center?
The avatar aligned in the center when you have more than 1 line of label text, hence the padding.

i want to remove extra horizontal padding (on more than 2line labels)


Try to structure contextKeys like verbose such that we can differentiate between errors to retrieve them, or simply not set

In the logs, there's lots of these DEBUG messages:
Could not retrieve verbose setting from context, either because it was not set or because of an error.  Setting verbose to false

See if we can propagate whether verbose wasn't set or if there was an error retrieving it.  The above looks like an error, so it'd be nice if we stored the contextKey with the information about whether we're passing the default (not set), so the retrievers, like the workers, can actually properly display an error if they couldn't retrieve the value.  Maybe embed it in the struct or change the logic of retrieivng a contextKey?

Fixed by having Getters return specific errors that can be checked with errors.Is


Data preparation

Hi,
first of all congratulations for the interesting paper and thanks for sharing the code with us! :)
Mine is more a doubt than a real issue, but I thought it could be useful opening a thread as a reference for people that could come across the same question in the future.
As I read in the paper, I see you're normalizing the input data by subtracting the mean and dividing by the standard deviation.
https://github.com/FGiuliari/Trajectory-Transformer/blob/18a787794123a31cf99b22e80bb0ccf8c717e9ea/train_individualTF.py#L129-L137
I've noticed that you collect xy means and stds from the different scenes in two vectors, average the vectors to obtain single values and then apply these average values to entire the dataset (that contains stacked trajectories from different input files/scenes).
Have you tried instead to standardize the trajectories from a specific file with its own "scene-specific" mean and std, and only then stack the trajectories from different scenes?
Cheers
Alex

Hi Alex,
the normalization was one of the few problems that we encountered and still are not sure about.
The main problem is that you know the mean and std of all the training data, but not on the testing.
This leads to problems when the datasets have very large differences in mean and std for example in the eth case where the speeds are increase wrt to the other 4 scenes.
In the sr-lstm paper they say that the video is accelerated so they sample from the video with a higher frequency, but that leads to different results that are not comparable to other methods that did not take this approach. (for example they have eth down to 0.60s or something for the mad; using their resampled data we can go also go down to something like 0.58; but we wanted to compare it with other methods so we used the original Social-GAN data).
Along the line, we tried different methods. so I think it is something that we tried but I don't have the number so you are welcome to try and if you want post here the results.
One problem that I see with that approach though is that while you can do a standardization on a scene-by-scene basis you cannot do so for the testing dataset. So you would have to use either a weighted mean or something along those lines for the testing mean and std.
By collecting xy means and std and using those I can still have some variance in the normalized inputs even during training since not all datasets have the same mean and std.
br,
Francesco

This leads to problems when the datasets have very large differences in mean and std for example in the eth case where the speeds are increase wrt to the other 4 scenes.
In the sr-lstm paper they say that the video is accelerated so they sample from the video with a higher frequency, but that leads to different results that are not comparable to other methods that did not take this approach. (for example they have eth down to 0.60s or something for the mad; using their resampled data we can go also go down to something like 0.58; but we wanted to compare it with other methods so we used the original Social-GAN data).

I see; I'm unfortunately quite familiar too with the several flaws this dataset carries around, and despite everything it oddly became a sort of de facto standard for this kind of task  ¯_(ツ)_/¯
Anyway, I'll try normalizing on a scene-by-scene basis and let you know if I find something interesting.
Thanks for your response and your time :)
Alex


Duplicate Locale classes

I am surprised to see Intl define its own Locale class when dart:ui already has a Locale class.
Why couldn't Intl use the Locale class from dart:ui?  Or maybe Locale should be moved to dart:core?
Why does this bother me?  Well, Flutter/MaterialApp operates with dart:ui Locale objects, but elsewhere in my code I have locale codes as Strings that need to be converted to Locale instances, but the Intl Locale has the parse method.  And then there are all of the Intl methods that take Locale as a String.
All of this seems like excessive type conversion.

(Disclaimer: I don't work on intl any more)
We spent some time trying to do something, but didn't manage. Intl doesn't depend on Flutter, and we didn't want dart:ui to depend on intl. Moving Locale in Dart core would work, but would impose a heavy burden on evolution of that class and tie Locale features to particular SDK versions. Since there's a canonical string representation, that works for interchange. For most normal usage there isn't actually much conversion. Most things will use the currently active locale, and even if it's passed in it will usually hit the case of "is this locale exactly the same as the last operation we did".


PERF: Replace mutex by atomic in MersenneTwisterRandomVariateGenerator

Declared internal integer data members m_Seed and m_StaticDiffer
atomic, and removed three locks (std::lock_guard<std::mutex>) from
MersenneTwisterRandomVariateGenerator, to improve the performance.
For performance reasons, it is in general recommended to use atomics,
instead of mutex locking, whenever possible.

/azp run

There is some error downloading testing data. I hope it will go away later today. @N-Dekker could you also make a WIP PR to python-builds branch after the tests pass here?

could you also make a WIP PR to python-builds branch after the tests pass here?

Thanks for your approval, @dzenanz but I'm not so much into Python. I don't think the PR affects Python bindings anyway, as it just proposes an improvement to the internal implementation of the C++ class. It does not propose any change of the public interface.
If you still think this PR would need extra Python testing, please try!

Just added a slightly related style commit (a no-brainer), hoping to get Azure Pipelines to do its job again. Unfortunately I see, ITK.macOS failing already.

@dzenanz : honestly I don't know if the atomic would create a problem with the Python wrapping. We definitely need to carefully think about it and have some Python test that should ensure that the seed is still synchronized. I cannot think of a place in ITK where this specific variable would be modified simultaneously in different ITK Python modules, but if you can find one location where this could happen, this would be a great test!

I vaguely remember that some global variable requires careful synchronization, and m_PimplGlobals is reminiscent of that. @fbudin69500 could tell us more.

My understanding is that simply the m_PimplGlobals being a pointer and the pointer being synchronized solved the non-unique global symbol problem here. The content or usage of the member of m_PimplGlobals does not matter, since if the pointer is managed/synconized properly they are still the same object.
I don't think this should change anything with respect to the Python global issues.

Thanks to you all for reviewing this PR so carefully. I do realize that multi-threading code needs that extra bit of care!
Note that this PR does not remove all the locks from MersenneTwisterRandomVariateGenerator. For example, I left the std::lock_guard in here:
https://github.com/InsightSoftwareConsortium/ITK/blob/2dbf82c2cf53a4c414fb790f6bbe9e68c02425a4/Modules/Core/Common/include/itkMersenneTwisterRandomVariateGenerator.h#L306
Only for those cases where the mutex was only protecting the access to a single integer (m_Seed or m_StaticDiffer), using atomic instead of locking a mutex appeared the right thing to do.

/azp run

https://github.com/InsightSoftwareConsortium/ITK/blob/v5.0.0/Modules/Core/Common/include/itkMersenneTwisterRandomVariateGenerator.h#L38 says:
It is recommended to create a separate object in each thread. By
default, each instantiated class will have a different seed created
by the GetNextSeed method. The creation of the initial seeds are
initialized once from the time. For deterministic behavior, the
individual instances' seeds should be manual set to separate
values in each thread.

It is no longer recommended to use this class using a
"Singleton-like" GetInstance method for the global instance of this
class. This usage may result in unsafe concurrent access to
the global instance.

Interesting... in that case I guess both mutex locking and atomics are unnecessary! Right?

That might be a recommendation, but do not trust the users to follow it. We should still have atomics.

It is recommended to create a separate object in each thread. By
default, each instantiated class will have a different seed created
by the GetNextSeed method. The creation of the initial seeds are
initialized once from the time. For deterministic behavior, the
individual instances' seeds should be manual set to separate
values in each thread.
It is no longer recommended to use this class using a
"Singleton-like" GetInstance method for the global instance of this
class. This usage may result in unsafe concurrent access to
the global instance.

I think that comment is totally out of date an incorrect.
There have been a few efforts to make this generator reproducible and random over the years. So the details of the implementation and recommend usage of changed over time and the documentation has not kept up.

Thanks for your explanation, Dzenan and Bradley.
@blowekamp wrote:

I think that comment is totally out of date an incorrect.

Are you sure? Because it looks like you that comment less than two years ago: "DOC: recommend using separate instances", https://github.com/InsightSoftwareConsortium/ITK/commit/3563b8601d442e85a1e9570589e7dc88062079a2
Anyway, no problem!

😆 Well... looks like I fixed it.
I wonder if the GetInstance method could be deprecated in the future...


Add web interface to utility

The server can be started and used like so:
hug -f app.py

title="foo"
content="bar"
curl "http://localhost:8000/create_note?title=${title}&content=${content}"

The command line functionality remains unchanged:
title="foo"
content="bar"
python app.py "${title}" "${content}"

Resolves #1

This is great, thank you for your contribution.


replace Button to components

What type of PR is this?
/kind cleanup
What this PR does / why we need it:
components must be in their own folder
Which issue(s) this PR fixes:
resolve https://github.com/karmada-io/website/issues/100

/assign @RainbowMango
small refactor

Hi @Arhell I can't tell what's changed, can you give a more detailed description?

components must be in their own folder

Hi @Arhell I can't tell what's changed, can you give a more detailed description?

components must be in their own folder

I don't know what that means.

I moved it to a separate folder, an example of how these components https://github.com/karmada-io/website/tree/main/src/components

/lgtm
/approve


Bug: exception raised by calling getUserOrganizations post ID token expiry

Prerequisites

[X] I have searched the repository’s issues and Kinde community to ensure my issue isn’t a duplicate
[X] I have checked the latest version of the library to replicate my issue
[X] I have read the contributing guidelines
[X] I agree to the terms within the code of conduct

Describe the issue
When the ID token expires while the access token is still valid, calling the getUserOrganizations method raises the following exception and logs out the user.
No authentication credential found, when requesting claim org_codes

The above bug can be reproduced using the following steps

login into Kinde's dashboard and open your application settings.
set ID token expiry for 60 seconds and that of the access token for 80 seconds.
login in app with a user.
wait 60 seconds once the ID token has been expired and call the getUserOrganizations method.

Library URL
https://github.com/kinde-oss/kinde-typescript-sdk
Library version
2.2.0
Operating system(s)
Ubuntu
Operating system version(s)
Ubuntu 20.04

Fix published in v2.2.2


Make PIPNAME variable name more descriptive

Without reading the code closely, it's not entirely obvious at first sight what PIPNAME represents. Expanding the P abbreviation in the variable name to PUBLIC makes the name more immediate and therewith makes it easier to skim the code snippet.

@c-w : Thanks for your contribution! The author, @neilpeterson, has been notified to review your proposed change.

@c-w thanks a bunch.
#sign-off


[Hotfix][ST-Engine] fix job restart of all node down

Purpose of this pull request

Check list

[ ] Code changed are covered with tests, or it does not need tests for reason:
[ ] If any new Jar binary package adding in your PR, please add License Notice according
New License Guide
[ ] If necessary, please update the documentation to describe the new feature. https://github.com/apache/incubator-seatunnel/tree/dev/docs
[ ] If you are contributing the connector code, please check that the following files are updated:

Update change log that in connector document. For more details you can refer to connector-v2
Update plugin-mapping.properties and add new connector information in it
Update the pom file of seatunnel-dist

@EricJoy2048 PTAL. I will try it


feat(esm): move to ESM

Current dependencies on/for this PR:

main

PR #4   👈

This comment was auto-generated by Graphite.


Implement GetUserByClaim for LDAP user driver

The LDAP user driver can now fetch users by a single claim / attribute. Use an attributefilter like (&(objectclass=posixAccount)({{attr}}={{value}})) in the driver section.

I need to add the uid and gid to the opaque user properties ...

With this PR and https://github.com/owncloud/ocis-proxy/pull/89 I can share files with other users when running ocis on top of eos.


How to automatically synchronize meilisearch when updating collection data?

Now have to manually run the command npx directus extension:searchsync index to sync to meilisearch
Is there has automatic way to do this? just like meilisearch plugins in strapi

I found why..
After configuring .searchsyncrc.json file, the extension need restart directus to automatically synchronize the collection to meilisearch
Is it possible to avoid restarting directus here?


Changed jQuery to vanilla JS and removed jQuery import

Rewrote some jQuery to vanilla JavaScript and removed the jQuery import. This will improve performance some 😄

Thanks Twan, this is great! 🙌


Update iOS Versions

This PR updates the iOS Versions

iOS 14.4 -> iOS 14.4.2 (see https://support.apple.com/kb/HT212256)
iOS 12.5.1 -> iOS 12.5.2 (see https://support.apple.com/kb/HT212257)

Sorry for not squashing the commits, currently working on another PC which only has the GitHub website. Fell free to use squash and merge.

@dsarkar Could you please take a look at this? Thank you! 🙂

@Ein-Tim Many thanks!

@Ein-Tim If you are interested, and happy to take this over: open in doc repo an issue
"Wie und wo kann man sich testen lassen? / How and where to get tested?"
Thanks.

@dsarkar
For sure I can do this (but only todays evening, sorry).
May I ask why?

@Ein-Tim Thanks. We think it might be useful and also very welcome by the GH community and other users, but it is currently not our scope. Idea is later to link to the GH issue from a FAQ article.

@dsarkar
Thanks for the list and the texts, I opened https://github.com/corona-warn-app/cwa-documentation/issues/569. I adapted the texts a bit to explain how to contribute. Hope that's fine for you (:


ci(GEMC): use image jeffersonlab/gemc:dev-g4v10.7.4-fedora36-cvmfs

requested by @maureeungaro

close #103
close #104
close #105
close #106


TaskList opens and closes erratically after v1.0.0

I have been using TaskList in Chainlit v0.7.700 for a while and everything seemed to work fine. However, after upgrading to 1.0.0 (or 1.0.101), the TaskList seems to collapse in the middle of the flow erratically.
0.7.700 behavior
TaskList would open once (when task_list.send() is called) and then would stay open for the rest of the execution as intended.
1.0.0 behavior
Before TaskList opens, a "Loading..." label pops up on the right side. TaskList doesn't stay on the screen after it's loaded, frequently collapsing into the "Loading..." state, pushing the actual chat back and forth.

Can you provide a snippet of code to reproduce?

I've attached some videos of the right edge of my screen here to demonstrate what I'm seeing. This is the same code running on 0.7.700 and 1.0.101.
0.7.700 behavior
https://github.com/Chainlit/chainlit/assets/17806916/d11cbc86-be0e-4bd9-8c71-7dcea33569f7
1.0.101 behavior
https://github.com/Chainlit/chainlit/assets/17806916/66dfd135-abae-43af-9cd9-a03abe5fd1d4

Since I cannot share my actual code, I wrote some code that hopefully reproduces the issue for you:
import chainlit as cl
import time

INITIAL_MSG = """Demo for TaskList issue #667"""

@cl.on_chat_start
async def on_chat_start():
    await cl.Message(content=INITIAL_MSG,
                     author="Announcer").send()

@cl.on_message
async def run_conversation(message: cl.Message):
    # Create the TaskList
    task_list = cl.TaskList()
    task_list.status = "Running..."

    # Agent 1 task
    initial_task = cl.Task("Processing query...", cl.TaskStatus.RUNNING)
    await task_list.add_task(initial_task)
    await task_list.send()
    # Agent 1 msg
    agent_1_msg = cl.Message(content="", author="Agent 1")
    await agent_1_msg.send()
    await cl.sleep(0)   # to show the loader

    # simulate async operation
    await cl.sleep(2)
    # update the first task
    initial_task.status = cl.TaskStatus.DONE
    await task_list.send()

    # update Agent 1 msg
    agent_1_msg.content = "Agent 1 is done"
    await agent_1_msg.update()

    # now add more tasks
    new_tasks: list[cl.Task] = []
    for task_label in ['Processing results...', 'Extracting information...']:
        t = cl.Task(task_label, cl.TaskStatus.READY)
        new_tasks.append(t)
        await task_list.add_task(t)

    # simulate running each task
    for i, task in enumerate(new_tasks):
        # update task
        task.status = cl.TaskStatus.RUNNING
        await task_list.send()

        # set a loading message
        agent_msg = cl.Message(content="", author=f'Agent {i+2}')
        await agent_msg.send()
        await cl.sleep(0)

        if i == 0:
            # simulate streaming
            dummy_text = 'Lorem ipsum dolor sit amet ' * 5
            await agent_msg.remove()
            msg = cl.Message(author='Agent 2', content="")
            for token in dummy_text.split(' '):
                await msg.stream_token(token + ' ')
                await cl.sleep(0.3)
            await msg.send()

        elif i == 1:
            # simulate async
            await cl.sleep(2)
            # simulate sync
            time.sleep(2)

            # update msg
            agent_msg.content = f'Ran Agent 3'
            await agent_msg.update()

        # update task
        task.status = cl.TaskStatus.DONE
        await task_list.send()

    # update task list finally
    task_list.status = "Done"
    await task_list.send()

Thank you for the details, will try to reproduce!


split api and cron

different branches for each?

cleaned it up. so not need now

fixed with #19


[backport-1.1] [FLINK-5940] [checkpoint] Harden ZooKeeperCompletedCheckpointStore.recover method

Backpor of #3446 onto release-1.1 branch.
The ZooKeeperCompletedCheckpointStore only tries to recover the latest completed
checkpoint even though it might have read older checkpoint state handles from
ZooKeeper. In order to deal with corrupted state handles, this commit changes the
behaviour such that the completed checkpoint store adds all read retrievable
state handles from ZooKeeper and upon request of the latest checkpoint it will
return the latest completed checkpoint which could be retrieved from the state
handles. Broken state handles are removed from the completed checkpoint store and
ZooKeeper.

Fix looks good, but I have a similar comment about the test as for #3446

Thanks for the review @StephanEwen. See comment on #3446 for the test. Merging this PR.


Change Maven parent of libphonenumber-parent artifact

This change results in a build success for these calls from the root directory:
ant -f java/build.xml \
    build-phone-metadata build-test-metadata \
    build-short-metadata build-alternate-metadata \
    build-timezones-data build-timezones-test-data \
    junit
mvn package
mvn install

Yet when we got to deployment last time, we failed. Sending a PR to see whether Travis would catch this.

Conclusion: Travis can't help us determine whether it will deploy.


Update welcome_messages.yaml

Ok, as master doesn't currently work, (waiting on John's next batch of changes), I've manually hotpatched this on the server. Will merge once stable is working again.


First attempt at accurate import declarations for WASM modules

Previously, every module was requesting as imports the entirety of the definitions that has previously been generated. This was sound, but inefficient.
Now, we collect the required "external" definitions in a first phase, and only generate import declarations for those external definitions (function or global) that we need.

Everest green


[semantic-arc-opts] Change semantic arc opts to use a SmallBlotSetVec…

…tor instead of a SmallSetVector.
Blotting is a trick with Map/Set vectors that involves one assigning None to the
vector at the index mapped to an entry instead of deleting the entry itself from
the vector. This ensures that we do not need to move elements of the vector down
when erasing elements from the worklist.

@swift-ci smoke test

@nate-chandler @atrick I realized in our conversation today I was using a set vector here instead of a blot set vector. Our conversation inspired me to fix this.

Wow! We should never call vector::erase. I wonder how many times that's slipped through the cracks.
LGTM


Pytest's caplog fixture with multiprocessing (hashtag573)

I am trying to use this with multiprocessing, but am not having any luck. Is there something I should be looking out for there?

_Originally posted by  in

Hey  I created a new ticket to ardress your issue separately.
Can you please give me an example using multiprocessing which doesn't work as expected? What is happening?

sure, thanks for making this issue, I should have done that myself :sweat_smile:
hashtag Minimum reproduction
import multiprocessing as mp

import pytest
from _pytest.logging import caplog as _caplog
from loguru import logger

def caplog(_caplog):
    hashtag
    handler_id = logger.add(_caplog.handler, format="{message}")
    yield _caplog
    logger.remove(handler_id)

def create_a_log():
    logger.critical("multiprocess log")

def log():
    logger.critical("setup log")

    def _log(name: str = None):
        client_process = mp.Process(
            name=name,
            daemon=True,
            target=create_a_log,
        )
        client_process.start()
        return client_process

    yield _log
    logger.critical("teardown log")

def test_log(log):
    logger.critical("test log")
    log_process = log()
    log_process.join()

    assert False, "fail on purpose to show captured logs, stdout, and stderr"

hashtag What I expect
To logs generated using Loguru to be captured by Pytest
hashtag What happens
None of the logs are captured:
collected 1 item

repro/test_issue.py F                                                                             [100%]

=============================================== FAILURES ================================================
_______________________________________________ test_log ________________________________________________

log = <function log.<locals>._log at 0x7f676c9035e0>

    def test_log(log):
        logger.critical("test log")
        log_process = log()
        log_process.join()

>       assert False, "fail on purpose to show captured logs, stdout, and stderr"
E       AssertionError: fail on purpose to show captured logs, stdout, and stderr
E       assert False

repro/test_issue.py:42: AssertionError
----------------------------------------- Captured stderr setup -----------------------------------------
2022-01-21 17:12:03.648 | CRITICAL | repro.test_issue:log:22 - setup log
----------------------------------------- Captured stderr call ------------------------------------------
2022-01-21 17:12:03.648 | CRITICAL | repro.test_issue:test_log:38 - test log
2022-01-21 17:12:03.650 | CRITICAL | repro.test_issue:create_a_log:17 - multiprocess log
--------------------------------------- Captured stderr teardown ----------------------------------------
2022-01-21 17:12:03.663 | CRITICAL | repro.test_issue:log:34 - teardown log
======================================== short test summary info ========================================
FAILED repro/test_issue.py::test_log - AssertionError: fail on purpose to show captured logs, stdout, ...
=========================================== 1 failed in 0.05s ===========================================

Hi, thanks for the reproducible example! :+1:
I notice you're not using [the caplog fixture]( anywhere. Note that for this reason no logs are captured.
I refactored a bit your example as follow:
import multiprocessing as mp

import pytest
from _pytest.logging import caplog as _caplog
from loguru import logger

def caplog(_caplog):
    hashtag
    handler_id = logger.add(_caplog.handler, format="{message}")
    yield _caplog
    logger.remove(handler_id)

def create_a_log():
    logger.critical("multiprocess log")

def log():
    logger.critical("setup log")

    client_process = mp.Process(
        name=None,
        daemon=True,
        target=create_a_log,
    )
    client_process.start()
    client_process.join()

    logger.critical("teardown log")

def test_log(caplog):
    logger.critical("test log")

    log()

    assert "setup log" in caplog.text
    assert "teardown log" in caplog.text
    assert "multiprocess log" in caplog.text

Notice all logs are captured except the one emitted in a different Process. This is actually expected because while using multiprocessing to spawn a child process, the logger is entirely copied. The child and parent process do not share the same logger object, thus logs emitted in child process are not captured by the parent one.
As a workaround, you have to specify enqueue=True while adding the caplog's handler to Loguru. It will ensure logs are propagated to the parent process instead of being handled in the child one.

def caplog(_caplog):
    hashtag
    handler_id = logger.add(_caplog.handler, format="{message}", enqueue=True)
    yield _caplog
    logger.remove(handler_id)

See also this related part in the documentation: [Compatibility with multiprocessing using enqueue argument](

Okay, I think I see now where a lot of my confusion is coming from. This is ONLY for adding loguru logs to the caplog fixture, it does not add them to whatever pytest uses to help debug failed tests. Example below:
import logging
import multiprocessing as mp

import pytest
from _pytest.logging import caplog as _caplog
from loguru import logger

def caplog(_caplog):
    hashtag
    handler_id = logger.add(_caplog.handler, format="{message}", enqueue=True)
    yield _caplog
    logger.remove(handler_id)

def create_a_log():
    logger.critical("loguru multiprocess log")
    logging.critical("logging multiprocess log")

def log():
    logger.critical("loguru setup log")
    logging.critical("logging setup log")

    client_process = mp.Process(
        name=None,
        daemon=True,
        target=create_a_log,
    )
    client_process.start()
    client_process.join()

    logger.critical("loguru teardown log")
    logging.critical("logging teardown log")

def test_log(caplog):
    logger.critical("loguru test log")
    logging.critical("logging test log")

    log()

    assert "setup log" in caplog.text
    assert "teardown log" in caplog.text
    assert "multiprocess log" in caplog.text
    assert False

![image](
I see that what you put results in all logs, including multiprocess logs, ending up in caplog, which is even better than what happens with logging (note the lack of the logging multiprocess log anywhere)!
Do you happen to know how to get the loguru logs to show up under the Captured log call section?

Indeed, caplog fixture and reported terminal logs are different. I dug a bit into pytest source code, and I found this: [_pytest/logging.pyhashtagL552](
This is the handler reporting logs on terminal, which needs to be added to Loguru's logger as well. Here is a possible implementation:

def reportlog(pytestconfig):
    logging_plugin = pytestconfig.pluginmanager.getplugin("logging-plugin")
    handler_id = logger.add(logging_plugin.report_handler, format="{message}", enqueue=True)
    yield
    logger.remove(handler_id)

I don't know if this can be considered part of the public pytest API, but it seems to work fine. Can you try adding this fixture to your test_log() function and let me know if it gives the output you were looking for?

That works! Thanks so much!

For posterity, all logs can be automatically reported using autouse=True on the fixture

Okay I am running into a different but related issue; The code I'm testing calls logger.remove(), and it's nuking my logging-plugin sink. Thoughts?

A way to "protect" a sink would be awesome :)

If you know the handler id returned by .add() in your tested code, you could use .remove(handler_id) which would keep the logging-plugin alive.
Otherwise I would just advice using [unittest.mock]( to re-add the logging-plugin as a side effect of calling logger.remove().


GPU memory unbalanced when training

I have encountered the problem of gpu memory imbalance when I train images containing a large number of objects (about 50 ~ 600).  I also referred to the solution of https://github.com/open-mmlab/mmdetection/issues/2665 to limit the size of box and specify the parameter gpu_assign_thr to 300, but it does not work in some cases, and it will greatly reduce the speed. Are there any other solutions, and other suggestions? Thanks!

You may reduce gpu_assign_thr and trade off between speed and memory, or use a GPU with larger memory if there are too many gts.

You may reduce gpu_assign_thr and trade off between speed and memory, or use a GPU with larger memory if there are too many gts.

Thanks for your reply. In fact, through further experiments, I found that the cause of OOM is that when the input image is too large, the number of anchor boxes (bboxes) increases significantly, which makes the matrix : [gt_bboxes, bboxes] in bbox_overlaps too large. Compared to put the calculations on the CPU, I tried to put all calculations in assign function on a separate GPU, but the speed is still unacceptable. In addition to adjusting anchor-related parameters, are there any other optimization methods? Thanks!


Update to Webpack 3. Almost all dependency are updated.

Reorganisation of the config files. Now use Prettier, so most files are will need to be updated to validate. This is stil an early WIP.
Known bugs: validation is broken since rewritten in without "module.exports"

Many things are still to fix and change. My goal is passing eslint with prettier rules on all files in src and dev while having everything work as before.
Only npm run dev was tested. npm run build still need to be updated.
I have broken the validation. We can't use module.exports anymore, and while changing it I clearly broke it. @icebob I will need you help to fix it.
I have moved files around (it copy the vue + webpack template). I tried some refactoring on the dev files, putting things in common and unifying as much as I was able to.
Constructive feedback and new ideas are welcome.

Will review tomorrow morning

I'm not sure if I'm comfortable with merging this in, as it's currently in an unusable state.  The broken validators are a major issue, for example, as is the broken npm run build.
I like the direction you're heading in though.
Perhaps we should have two branches for v3? One as a 'v3-master' and another as a 'v3-dev'.  This way we can merge "broken" code in so everyone can contribute to fixing it, and another for "stable" v3 changes?

This is not supposed to be ready to merge yet.
This is a (bleeding edge) proof of concept and I will need more time to finish it then I will ask for a merge.
As i said :

My goal is passing eslint with prettier rules on all files in src and dev while having everything work as before.

I want feedback from the collaborator on the direction I going with this.
I don't want to work on my side and then realized no one like the way I organized the files, the prettier config or something like that.
My biggest problem is my lack of time, since at work, we are very close to the big launch + Holidays coming.
I'm doing my best to create a solid base for the future of VFG, please give me time ⌛ and feedback ⚡

I'm back ! I have just updated everything and I still need to update this branch with the latest correction from v2.
The good news is that I will have time in two weeks to work on this almost full time.

That's done, the v3 is up to date with the latest fix from v2.
I'm going to fix the build process now.

Little update:

it use jsdom instead of phantomJs, so it is way faster to initialize,
I have skipped most of the test, only enabling one at the time and fixing all errors,
so far I only have the pure JS test working

  65 passing (180ms)
  385 pending

the hard part is coming, I have to use test-utils to wrap the Vue components and adapt the test with this new tools. I will first try to fix the test without it so I don't spend too much time on it.

Progress Update
  154 passing (534ms)
  295 pending

I had to skip some test (6 for now).

index.spec.js - no skip
validators.spec.js - no skip
schema.spec.js - no skip
VueFormGenerator.spec.js - 4 skip
abstractField.spec.js - 1 skip
fieldCheckbox.spec.js - 1 skip

Progress Update (19/02/2018)
  154 passing (534ms)
  295 pending

I had to skip some test (6 for now).

index.spec.js - no skip
validators.spec.js - no skip
schema.spec.js - no skip
VueFormGenerator.spec.js - 4 skip
abstractField.spec.js - 1 skip
fieldCheckbox.spec.js - 1 skip

Progress Update
  257 passing (2s)
  193 pending

I'm hitting the first real problem with jQuery based fields. I'm going to skip them for the moment.

index.spec.js - no skip
validators.spec.js - no skip
schema.spec.js - no skip
VueFormGenerator.spec.js - 4 skip
abstractField.spec.js - 1 skip
fieldCheckbox.spec.js - 1 skip
fieldChecklist.spec.js -2 skip
fieldCleave.spec.js - no skip
fieldDateTimePicker.spec.js - full skip (jQuery based)
fieldGoogleAddress.spec.js - no skip (will need some work later to make it work correctly)

I feel like anything relying on jQuery should be reworked to not need jQuery, reducing the deps for VFG... as not everyone uses jQuery. I think we should also rework the optional fields to be separate packages to allow devs to pick and chose which ones they want to reduce the overall size of VFG.
Let me know if there’s anything I can do to help.

@zoul0813 There is already vanilla js alternative and jQuery is optional. But I absolutely agree, all fields should be their own project.
It would greatly reduce the weight on our shoulder and make thing clearer (separated issues and all). @icebob was against this idea so it doesn't seem to be something that is going to happen.
I'm doing my best to finish the test as far as I can go and merge. Then I think every collaborator will be able to help. Still a looooot of work toward this new version, this is exciting and frightening 😀
Thank you !

Should this not be updated to webpack 4 instead of 3?

@ChadTaljaardt This project started before the v4 was even announced. I feel like it will require a lot of changes and I'm not sure the plugin ecosystem is up to date already.
Maybe later this year will we be able to update. I don't want to lose more time on this.

I thought @icebob said splitting the optional fields out was a good idea - could be mistaken, lots of discussions going on.  I was under the impression the new group organization was setup to help facilitate the split of the optional fields into different packages (as well as create more projects with similar goals).

I may have misunderstood. You are right, this new organization is perfect for that. Maybe @icebob changed his mind ? I sure hope so !

Progress Update
  362 passing (3s)
  89 pending

index.spec.js - no skip
validators.spec.js - no skip
schema.spec.js - no skip
VueFormGenerator.spec.js - 4 skip
abstractField.spec.js - 1 skip
fieldCheckbox.spec.js - 1 skip
fieldChecklist.spec.js -2 skip
fieldCleave.spec.js - no skip
fieldDateTimePicker.spec.js - 1 skip (jQuery based)
fieldGoogleAddress.spec.js - no skip (will need some work later to make it work correctly)
fieldImage.spec.js - 1 skip
fieldInput.spec.js - no skip
fieldLabel.spec.js - no skip
fieldMasked.spec.js - 1 skip (jQuery based)
fieldNoUiSlider.spec.js - 1 skip
fieldPikaday.spec.js - 1 skip
fieldRadios.spec.js - no skip
fieldRangeSlider.spec.js - 3 skip (jQuery based)
fieldSelect.spec.js - no skip

@lionel-bijaoui well, if he hasn't ... maybe we can do a "best of both worlds" solution, and split the optional fields up into separate packages anyway ... then have two versions of VFG ... a VFG Lite and a VFG Full, where VFG Full just includes all the optional packages in it's package.json ... this would then allow us to have the stream lined separate packages for easier development and testing of advanced fields, as well as provide devs with a "lite" version and a "full" version ... you could then start with the "lite" version and add any extra optional fields you wish, or just use the "full" version and get everything with a single package dep.
The "lite" version would just include basic form fields, anything that's part of the HTML5 standard (input, select, check, radio, buttons, hidden fields, etc).
@icebob thoughts?

@zoul0813 It is already like that, you've got the core or full version. But from experience, we need an "engine" version without any field at all.

@lionel-bijaoui the difference in what I'm proposing is that if you enable "full" you get it all ... you can't selectively decide that you want to use the "core" and then add in 1-2 optional fields ...
Splitting the optional fields up into there own packages would allow me to just npm install --save-dev vfg-core vfg-optional-field-name, and then I'd have the core and only that single optional field, as opposed to all of the optional fields.

Hi guys,
sorry for late. Yes, I support to split optional modules to separated packages in v3. And as @zoul0813 said, we can create a "full" bundle, which install all optional modules as npm dependencies.

@icebob I'm so happy to hear that ! Will it use git submodule or separate package ?

I think separate npm packages in separate github repos under vue-generators org.

I will try to set npm publishing on travis, so every team member will able to release new versions without me. (Nowadays I'm very busy, sorry)

Progress Update
  416 passing (4s)
  35 pending

I worked on the overhaul of code coverage. I'm hopping this will pass Travis. Only one file to do ! I'm seeing the light at the end of the tunnel u

index.spec.js - no skip
validators.spec.js - no skip
schema.spec.js - no skip
VueFormGenerator.spec.js - 4 skip
abstractField.spec.js - 1 skip
fieldCheckbox.spec.js - 1 skip
fieldChecklist.spec.js -2 skip
fieldCleave.spec.js - no skip
fieldDateTimePicker.spec.js - 1 skip (jQuery based)
fieldGoogleAddress.spec.js - no skip (will need some work later to make it work correctly)
fieldImage.spec.js - 1 skip
fieldInput.spec.js - no skip
fieldLabel.spec.js - no skip
fieldMasked.spec.js - 1 skip (jQuery based)
fieldNoUiSlider.spec.js - 1 skip
fieldPikaday.spec.js - 1 skip
fieldRadios.spec.js - no skip
fieldRangeSlider.spec.js - 3 skip (jQuery based)
fieldSelect.spec.js - no skip
fieldSelectEx.spec.js - 4 skip (jQuery based)
fieldSpectrum.spec.js - 3 skip (jQuery based)
fieldStaticMap.spec.js - no skip
fieldSubmit.spec.js - 3 skip
fieldSwitch.spec.js - no skip
fieldUpload.spec.js - no skip

Progress Update
  425 passing (4s)
  26 pending

I cleaned the files and remove obsolete function. I'm not going to do any more work on the test. My goal now is to make the build successful.

index.spec.js - no skip
validators.spec.js - no skip
schema.spec.js - no skip
VueFormGenerator.spec.js - 4 skip
abstractField.spec.js - 1 skip
fieldCheckbox.spec.js - 1 skip
fieldChecklist.spec.js -2 skip
fieldCleave.spec.js - no skip
fieldDateTimePicker.spec.js - 1 skip (jQuery based)
fieldGoogleAddress.spec.js - no skip (will need some work later to make it work correctly)
fieldImage.spec.js - 1 skip
fieldInput.spec.js - no skip
fieldLabel.spec.js - no skip
fieldMasked.spec.js - 1 skip (jQuery based)
fieldNoUiSlider.spec.js - 1 skip
fieldPikaday.spec.js - 1 skip
fieldRadios.spec.js - no skip
fieldRangeSlider.spec.js - 3 skip (jQuery based)
fieldSelect.spec.js - no skip
fieldSelectEx.spec.js - 4 skip (jQuery based)
fieldSpectrum.spec.js - 3 skip (jQuery based)
fieldStaticMap.spec.js - no skip
fieldSubmit.spec.js - 3 skip
fieldSwitch.spec.js - no skip
fieldUpload.spec.js - no skip
-fieldVueMultiSelect.spec.js - no skip

@icebob I don't know how to activate Codacy for this branch, but expect for that, everything is ready for the merge on my side.
Dev, build, test are working, travis is happy and coveralls is working.

@lionel-bijaoui Great job! Thank you!


Socket5 proxy in beast

Can beast::websocket set socket5 proxy ?
I used to use beast::http set LoaclHost:8888 proxy for check http connect in Fiddler . Now, I need
use beast::websocket client set Socket5 proxy in my project. I checked the doc of Socket5 proxy and few samples, but I still have no idea how to set Socket5 proxy for beast::websocket client.
Has anyone implemented it ?
I apologize my English is poor.

No.


Fixing JOE, the fully functional text editor, on macOS

JOE didn't compile on macOS.
Things done
Wrote a patch to add a missing #include.

Built on platform(s)

[ ] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[x] aarch64-darwin

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[x] sandbox = true

[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[x] Tested basic functionality of all binary files (usually in ./result/bin/)
24.11 Release Notes (or backporting 23.11 and 24.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

Squash the commits.

Done.


systemd-nspawn: prints timezone warning

Every time I've seen acbuild run used, the following warning is printed before the actual command is exec'd:
Timezone Europe/Berlin does not exist in container, not updating container timezone.

We should prevent the error from being printed.

@dgonyeo https://github.com/coreos/rkt/pull/226


PluginContainer supports id-based plugins if those use injection

This is a follow up to support id-based plugins as well. The initial
fix for plugins using injection was added in commit
c584c55f89c81db72140aca5a8a95a5b733fb50a

@bot-gradle test QF

OK, I've already triggered QuickFeedback build for you.


Add license

Hi!
There is no license in your repo so nobody is allowed to use the code. Could you please add maybe a permissive license such as MIT?
Thank you!

Sorry for Late Reply , I Just Added a License to My Project !
Guten Tag!


refining os-diff procedures

https://issues.redhat.com/browse/RHOSPDOC-1602
@matbu Can you please address my questions in this PR and review the procedures in this PR carefully?
CC: @jistr

@matbu any chance you could help review this PR?


Expose value class for serialization

This PR exposes constructors and methods for basic data types of int64, uint64, double, float, string, and bool.
Constructor with key-value pair is also exposed.
PR exposes get_key, is_null method for value object.
PR adds tests for the same. Tests are copied from value_test.cpp with required modifications.
We probably wouldn't require all the methods for custom_op serialization, just exposing constructors for cpp_types should do. In that case, later i can remove unused methods.
Follow up work :
Support binary type, object type, array type with bracket operator [], emplace, insert, push etc. methods.
Support different types of constructors on value.

Review comments are being duplicated. I've deleted duplicate ones.

are you planning to still merge this?

I can close this for now, but eventually we need this.

This can be revisited when necessary.


feat(observe): implement opentelemetry

The newly "Observe" Otlp backend implementation

remove the old connector package
update observe API schema and proxy routes
save the framework traceId => only one attribute via that I can load the trace from Observe
Some changes are only because of prettier (eslintrc.cjs, .github/workflows/main.yml, src/ui/jwks.json, tsconfig.json)

It must be merged with the related PR from Observe and UI

Related PR

Observe = https://github.com/i-am-bee/bee-observe/pull/7
UI = coming soon

Please revert changes in all the config files with no actual edits.
Why? We should change the prettier, otherwise, the current formating is valid.
@pilartomas

You're right, I had some rogue formatter for all "config" files set up in my VSCode which overrode prettier and that confused me. 👍


Background Refresh

DESIGN DOC ➡
Proposal
WN Post
Strategy
In order to offer a pleasing user experience, we strive to keep data in NewDot as up to date as possible at any given time. We have implemented solutions for keeping active user’s up to date in real time (namely sending updates in realtime using Pusher). Next we should aim to update inactive users to improve their experience when re-opening the app while offline or on a slow connection.
Problem
A growing pain for NewDot is its routinely stale data when first opening the app. Eg:

Opening the Chats screen and seeing an out of date list
Opening a chat and not seeing the latest messages

After a moment (or several depending on your connection), the app finishes syncing data that was missed and flickers as it finally displays the latest data. This delay can be particularly frustrating as you may know that you’re missing something new (eg: something from a notification).
Solution
iOS and Android grant us some ability to run tasks while the app is in the background so let’s fully utilize it! We can implement background refresh and use it to periodically sync updates we have missed. While this won’t completely eliminate stale data, this should noticeably improve the “freshness” of the app when you open it.
We can dig further on what specifically we should sync, but at a minimum lets use background refresh to sync high level data on chats and messages so that you can catch up with conversations more quickly.
Tasks

[x] Post Proposal (full Problem/Solution statement) in #whatsnext
[x] Wait at least one full business day, and until the post has a majority (2/3) of positive reactions (👍)
[x] Paste Proposal in the space above with a link to the Slack thread
[x] Email<EMAIL_ADDRESS>and paste in the Proposal
[x] Fill out the High-level overview of the problem, Timeline, and Terminology sections of the Design Doc
[x] Email<EMAIL_ADDRESS>(continue the same email chain as before) with the link to your Design Doc
[x] Host a pre-design meeting (example) in an appropriate slack channel to discuss any necessary details in public before filling out the High-level of proposed solution section. (pre-design link)
[x] Fill out the High-level of proposed solution section
[x] Email<EMAIL_ADDRESS>again with links to the doc and pre-design conversation in Slack
[x] Add the DesignDocReview label to get the High-level of proposed solution section reviewed
[x] Respond to any questions or concerns and bring up blockers in Slack to get a consensus if necessary
[x] Confirm that the doc has the minimum necessary number of reviews before proceeding
[x] Host another pre-design meeting in the appropriate slack channel to ask for engineering feedback on the technical solution. (follow-up discussion)
[x] Fill out the Detailed implementation of the solution and related sections.
[x] Re-add the DesignDocReview label to this issue
[ ] Respond to any questions or concerns and bring up blockers in Slack to get consensus if necessary
[ ] Confirm that the doc has the minimum necessary number of reviews before proceeding
[ ] Email<EMAIL_ADDRESS>one last time to let them know the Design Doc is moving into the implementation phase
[ ] Implement the changes
[ ] Send out a follow up email to<EMAIL_ADDRESS>once everything has been implemented and do a Project Wrap-Up retrospective that provides:

Summary of what we accomplished with this project
What went well?
What could we have done better?
What did we learn?

This issue has not been updated in over 15 days.  eroding to Monthly issue.
P.S. Is everyone reading this sure this is really a near-term priority? Be brave: if you disagree, go ahead and close it out. If someone disagrees, they'll reopen it, and if they don't: one less thing to do!

@arosiclair do you want to take this issue over?

Sure! I'll follow through on this

Posted to WN. Gonna start drafting pre-design questions soon

I drafted some questions for the pre-design, but am prioritizing Distance Requests design doc atm.

I'm adding a pre-design section on tracking the success rate of the background refresh with logging.
Today I tested the our background update functionality and found that it wasn't working properly on our current airship version (react-native-airship v15.2.3). I worked with Ryan on this here and we've got a new version with some fixes coming in v15.2.6! We'll have to do another upgrade but this should be quick since it's just a patch.
Additionally I'm testing how well we can detect when the app is in the background. We have a visibility function that checks AppState.currentState === 'active' on native for this, but we found that to be unreliable in the past. However, currently I'm seeing no issues on my Pixel 4A with Android 13. I'm starting a discussion on this.

AppState.currentState === 'active' testing works in all of the following configs!

Pixel 4A - Android 13 ✅
Pixel 3 - Android 9 (Emulator) ✅
iPhone 11 - iOS 16 ✅

While testing background updates on iOS, I noticed that the full app is being woken and OpenApp and ReconnectApp are actually already running in the background when we receive push notifications. To ensure we're not doing duplicate work, we should probably check if the app is in the foreground before running OpenApp/ReconnectApp.

Held the pre-design here.
One of the bigger takeaways is that we'll want play nicely with upcoming improvements for ReconnectApp. Specifically how we'll fetch report actions using GetChats detailed by Marc here.
I'll begin drafting a design doc get all of this written down.

HLD is being drafted. Aiming to put that out this week

Not quite finished yet but 90% done. Need to add a couple contextual bits and ask about using NVPs for throttling (discussion)

Addressed some pre-review comments. Putting this out tomorrow!

I'm updating the OP to use the project/design doc template. Rory's original proposal for posterity:

Slack context: https://expensify.slack.com/archives/C04E99DVBTP/p1675977099688389
Problem
We want our app to be offline-first. In order to make that experience as good as it can be, we want to make sure that while the phone is connected to the network, we deliver as much up-to-date information to the app as possible. We can refer to this as a “background data trickle”.
In order to do this on mobile devices even if the app is backgrounded or not running, we have had solutions in place for a while:

:apple: on iOS we deliver notifications with the content-available flag. This informs the OS that there’s work to be done in relation to that notification, and it wakes up the app in the background (docs).
🤖 on Android, we use headless JS to process background notifications.

While this solution sometimes works, it has some crippling limitations.

:apple: – on iOS

When a device receives a background notification, the system may hold and delay the delivery of the notification, which can have the following side effects:

When the system receives a new background notification, it discards the older notification and only holds the newest one.
If something force quits or kills the app, the system discards the held notification
Your app has 30 seconds to perform any tasks and call the provided completion handler

The documentation says: "The system treats background notifications as low priority: you can use them to refresh your app’s content, but the system doesn’t guarantee their delivery ... don't try to send more than two or three per hour"

:android-bot: – on Android, this is more reliable, but is also prone to OS limitations based on the system conditions (for example, if the device is running low on battery)

Furthermore, when these methods don't work, it causes a pretty bad UX. For example, it's totally feasible to get "ghost notifications", and this happens to me all the time on iOS:

You are online and receive a push notification.
The OS throttles you and does not wake up the app in the background, so the data from that notification is not inserted into Onyx.
You go offline and open the app
You open the app, and the message from the notification is missing, and does not reappear until you come online.

Note: a similar bug occurs if you are online, but the message appears moments later after the OpenApp API request completes and Onyx is updated.
Solution
This is just part of the solution proposed in slack, but...
Start getting more greedy with the background events the host OS gives us. :grabby_hands: This means that when a notification wakes our app in the background, we don't just insert the single reportAction from the notification into Onyx. Instead, we just call OpenApp and update all the app's data. As long as this completes within 30 seconds that should work.

I have read and reviewed this Design Doc!

I have read and reviewed this Design Doc!

I have read and reviewed this Design Doc!

I have read and reviewed this Design Doc!

I have read and reviewed this Design Doc!

Addressed some comments today

I have read and reviewed this Design Doc!

I have read and reviewed this Design Doc!

Just need another Product Manager signature. Also broke out a discussion on a concern from Ionaton (link)

I have read and reviewed this Design Doc!

I have read and reviewed this Design Doc!

We've gotten all the necessary signatures! Moving forward to the detailed design

I have read and reviewed this Design Doc!

Made good progress on the detailed design today and mostly completed the "Sending refresh notifications section".

I have read and reviewed this Design Doc!

Made good progress last week but only about 75% of the way there. Some remaining items to address:

[ ] start a discussion on fetching report actions for top chats
[ ] add details for logging
[ ] finish up detailed background section

Detailed design is complete! I'll open an issue to time our queries for getting and updating the lastBackgroundRefreshTime NVP for a large room and start the next round of reviews

I have read and reviewed this Design Doc!

I have read and reviewed this Design Doc!

I have read and reviewed this Design Doc!

I have read and reviewed this Design Doc!

I have read and reviewed this Design Doc!

I have read and reviewed this Design Doc!

I have read and reviewed this Design Doc!

I have read and reviewed this Design Doc!

I have read and reviewed this Design Doc!

I have read and reviewed this Design Doc!

I have read and reviewed this Design Doc!

I have read and reviewed this Design Doc!

I have read and reviewed this Design Doc!

This gonna get pushed back as I update this to use changes from #vip-reliable-updates. More updates to come

I have read and reviewed this Design Doc!

We held a couple discussions (1, 2) on updating this to use the new reconnect pattern from #vip-reliable-updates and also remove  the use of throttling for refresh notifications.
Both of these decisions significantly scale down the scope of this project since we are already sending refresh notifications and these notifications already trigger a call to OpenApp/ReconnectApp on iOS. I'll work to verify the same on Android. If it is not the same, we'll just add a call to App.reconnectApp() in the push notification handler for when the app is in the background.
Since the scope is now so small, I'll "downgrade" this from a project with a design doc to a normal issue. I should be able to finish this week.

Sounds good. Do we still plan to complete this as part of the Reliable Updates project?

 I'll post 2 small PRs to add logs to App and Web-E today. Then testing and updating Android to call reconnectApp should also be pretty easy.

@garrettmknight this is all set could you just do payment to @Ollyws for his C+ review?

@Ollyws sorry for the wait, can you accept the offer and I'll pay?

Summarizing payments for this issue:
#urgency bonus? No
Contributor+: @Ollyws $1000
Upwork Job: https://www.upwork.com/ab/applicants/1694731046889934848/job-details

All paid, closing.


Getting marker data on marker clicks

Hello,
Getting the name (which seems to be the index) of the marker on marker click event is not very useful, since when you remove that marker from the array, all the names will be messed up.
Would it be possible to pass the markerData on https://github.com/tombatossals/angular-leaflet-directive/blob/dab1c1e1b7d0ea3c8fab6d5d94096e5ed4d6aaed/src/services/leafletEvents.js#L34
Unless I've missed a way to get the original data somehow, the name doesn't seem very reliable.

@Marsup I plan on modifying this behavior to return the actual markerData (model).  Also the event should also include the layerName. The layerName should be included now as a way to get back to the actual markers location in the structure quickly if it is nested.
IE: if <leaflet markers-nested='true' /> the following is now (master) possible :
markers :{
    cars: {
        1: { lat:_lng:_}
        2: ...
   }
}

I'm going to rework&redesign angular-leaflet-directive to be compatible with Leaflet v1.0. It will mantain almost all its functionality, and will be compatible with the current features of the directive, but I must start from a fresh point, so I'm going to close this issue. If you think it must be worked with the new version, please reopen it.