Copy text in mouse mode

Hello,
First of all, I'm new to tmux. Sorry for my noob question.
I have Kali with xsel and xclip installed. When I'm in mouse mode, how can I copy a text?
Thank you

Hello @BloodhoundAllfather 👋
Did you set
tmux_conf_copy_to_os_clipboard=true

In your .local customization file copy?
When you're in mouse mode, selecting text should automatically send the content to the host clipboard.
If that doesn't work, please paste here the output of
$ tmux lsk | grep MouseDragEnd1Pane

@gpakosz Hello,
Thank you for answering. It worked. Although it jumps to bottom, but copy works.
Thank you very much


Prevent that every number followed by a dot is interpreted as order list

Is there a way to prevent marked from rendering / interpreting every number followed by a dot as an ordered list item?
The problem is, that here in Switzerland we format a date as follows: 14. August 2017.  Now if I run this through marked I get 1. August 2017 (first item of ordered list). Not exactly what I want :-)

See #982

Hi, I'm still seeing this issue, demo on marked.js.org
What's my input:
# Some title

The development work of the something something  started in
2016. It was pioneered by somebody and some others.
Over the past 2 years or so, a lot of bugs have been fixed in
mode
and our recent extensive testings show that it is already mature enough
for our own production use.

What I get:

However, 2016. is just the end to the previous sentence, it should not be rendered as ordered list. I do can just move it to the previous line for now, but how should I prevent this later? Thanks.

looks like this is fixed when gfm: false demo

Looks like this was fix in v0.7.0


Update sql-server-2022-database-engine-events-and-errors-14000-14999.md

Hi SQL Server Docs Team,
I've fixed the incomplete Description for message_id 14852 so that it matches the text in sys.messages in SQL Server 2022-2016.
Thank you,
Vlad

@MashaMSFT

Can you review this PR?
IMPORTANT: When this content is ready to merge, you must add #sign-off in a comment or the approval may get overlooked.

#label:"aq-pr-triaged"
@MicrosoftDocs/public-repo-pr-review-team

@VladDBA Thank you! This change will not be approved, because the articles are published directly from the source code.
However, you have revealed a bug in the generator, so when we do a regular publish from the source again, it will include this change.


Error parsing $var declaration where identifier contains square brackets

When parsing a $var directive that both contains a square bracket as part of the identifier AND a bit index declared afterwards, pyvcd will fail to process it properly and raise vcd.reader.VCDParseError: [lineno]:[col]: Expected $end. This can occur in VCDs generated for constructs like reg [31:0] regs [31:0] that are an array of vectors, where the resulting VCD would have the declaration $var wire 32 Q! regs[0] [31:0] $end (I had this occur in a file generated by Verilator).
I had difficulty finding the official IEEE Verilog standard's definition of what an "identifier" is, but it seems to me that in the above example, regs[0] would be considered part of the identifier, and [31:0] would be considered the bit index. If you (the maintainers) think this interpretation is correct, then I already have a fix + test case that does this, which I can file a PR for.
(screenshot of the relevant portion of the spec that I could find):

I have the same issue with definitions coming from a generate loop:
$scope module genblock[3].mod $end
will also raise the afore mentioned error.

Also I have this error, could you please share the fix meanwhile is officially fixed?

Currently we I am just preprocessing the VCD with sed to make them readable by pyvcd.
sed -E 's/\[([[:digit:]]+)\]/_\1_/g' waves.vcd > waves2.vcd
sed -i -E 's/\$var ([^ ]+ [^ ]+ [^ ]+) (\\)/$var \1 _/g' waves2.vcd


why can not use in vscode?

I set the path like this but it can not work.
{     "configurations": [         {             "name": "Win32",             "includePath": [                 "${workspaceFolder}/**",                 "F:/Code/C/package/nana-master/include"             ],             "defines": [                 "_DEBUG",                 "UNICODE",                 "_UNICODE"             ],             "compilerPath": "D:\\MinGW\\MinGW2020\\mingw64\\bin\\g++.exe",             "cStandard": "gnu17",             "cppStandard": "gnu++14",             "intelliSenseMode": "gcc-x64"         }     ],     "version": 4 }
the vscode raise an error
"f:\Code\C\study20210902\test.cpp:1:10: fatal error: nana/gui.hpp: No such file or directory
#include <nana/gui.hpp>"
hope someone help me, thanks!

You need to build nana before using.
https://github.com/cnjinhao/nana/wiki/Troubleshooting-MinGW


RFC: 'thread lifetime

Add a 'thread lifetime, which denotes a thread-bounded region.
Rendered

See  https://github.com/rust-lang/rust/issues/17954#issuecomment-196653308 for a simpler solution.

I remember @alexcrichton and @aturon and I discussing precisely this question when working on the thread_local! API -- this is basically why you have foo.with(...) instead of foo.get(). Originally, the idea was that foo.get() would return something that lets you access thread-local data via the Deref impl, but we realize that this would allow leakage -- ah, I remember now, we were thinking also of scoped thread-locals, which I think have since been removed (RIP). I wonder if we could now add get so long as the thing which is returned is not Send?
Anyway, certainly we could make special rules for &foo where foo is #[thread_local] -- it's perhaps a bit disappointing, in that one can't return that reference out of your current function, but it'd be a small step to restore soundness.
Are there other use cases for 'thread?
(I am not that concerned about #[thread_local], since it is not fully portable or general.)

would allow leakage

Uh, that's right...

Are there other use cases for 'thread?

There a no other (at least to might knowledge) where it is strictly required, but there are quite a few where it is handy (pinging @tomaka).

In any case, the current API is kinda hacky.

There a no other (at least to might knowledge) where it is strictly required, but there are quite a few where it is handy (pinging @tomaka).

Sorry. I have had several problems with multithreading in general, but nothing comes to my mind that would be solved with 'thread.

(I am not that concerned about #[thread_local], since it is not fully portable or general.)

Actually, since LLVM now supports TLS emulation, #[thread_local] can probably be made to work on any platform. It's still not as general as thread_local! since it doesn't support dynamic initialization and drop, but it will be on par with global statics.

The problems I remember with 'thread being equal to 'static are not data races - they are that 'thread has different meaning between threads, so that one of the threads can go down and leave the reference dangling. Are there other problems (e.g. is there UB when no thread ever exits?).
The bit about 'thread not being Send needs further elaboration. A &'thread T can be coerced to a &'a T, which can be freely passed to a scoped thread and lead to just the same problems. Yet passing an &mut &'thread u32 would allow the same dangling pointer situations.
In the presence of thread locals, a sendable Rust Fn(X) -> Y is equivalent to a for<'thread> Fn(ThreadLocals<'thread>, X) -> Y, and we must avoid capture of 'thread there. Not sure what is the best way to handle this.

The problems I remember with 'thread being equal to 'static are not data races - they are that 'thread has different meaning between threads, so that one of the threads can go down and leave the reference dangling. Are there other problems (e.g. is there UB when no thread ever exits?).

They aren't equal:

'thread outlives every lifetime with the exception of 'static.

'thread  cannot coerce into 'static

The bit about 'thread not being Send needs further elaboration. A &'thread T can be coerced to a &'a T, which can be freely passed to a scoped thread and lead to just the same problems. Yet passing an &mut &'thread u32 would allow the same dangling pointer situations.

Hmm, that's a good point.

They aren't equal

With today's Rust they are and that causes unsafety, not because of data races, but because of thread termination.

Hmm, that's a good point.

You must also stop bad things when they are done in a rather indirect way:
#![feature(thread_local)]

fn call_scoped<F, T>(f: F) -> T
    where F: FnOnce() -> T + Send
{
    // this function  can be implemented using e.g. the crossbeam API, and
    // we want to allow it.
}

fn set_bomb<'b>(bomb: &mut Option<&'b u32>)
    where 'thread: 'b
{
    // this function looks legal.
    #[thread_local]
    static LOCAL: u32 = 0;
    *bomb = Some(&LOCAL);
}

fn detonate_bomb<'b>(bomb: &mut Option<&'b u32>, set_bomb: fn(&mut Option<&'b u32>))
{
    // look at me! no `'thread` in sight!
    call_scoped(|| set_bomb(bomb));
}

fn blow_up() {
    // no `Send` in sight here.
    let mut bomb = None;
    detonate_bomb(&mut bomb, set_bomb);
    println!("{:?}", bomb);
}

fn main() {
    blow_up()
}

@arielb1 I believe that in my alternative (function-local borrows), this line:
    *bomb = Some(&LOCAL);

would not, in fact, pass the borrow-checker, because &LOCAL would behave a lot like &variable (although it would outlive all function variables) and couldn't escape the function in any way.

@eddyb

function-local borrows

Sure. That would also end up with us not needing 'thread, right? OTOH, some people may want "arbitrary scoped borrowing" - to have an
fn with_thread_locals<T, F: for<'a> FnOnce(ThreadLocals<'a>) -> T>(f: F) -> T { /* <snip> */ }

@arielb1 Yeah, it's intended to make thread_local safe without introducing anything to lifetimes, but rather treating thread_local like local variables (which is a semantic approximation, but it's hard to do anything else because threads are a library construct).
That function signature should work with f(&THREAD_LOCAL) as the body (T cannot capture 'a).

Yeah, thinking more deeply about the idea of 'thread, I don't think it's plausible to have a system where &'a T: Send is depending on 'a. That just seems fundamentally incompatible with subtyping (not to mention just plain undesirable).
I think that the way to think about 'thread which would make it safe is to consider it instead an implicit region parameter that appears on all fns -- but I'm not sure how we would integrate that notion with our current notion of closures. IOW, to account for the "viewshift" between threads, you'd have to add some way of saying that a closure type or other thing is not dependent or tainted upon the "lifetime of current thread" idea. (Otherwise you get examples like the one that @arielb1 gave.)
Certainly @eddyb's notion of "current fn" seems much simpler -- and, thinking back to what @aturon and @alexcrichton and I were banging on a while back, I remember that a special lifetime 'caller is in fact what we were thinking of (that could be used in unsafely-implemented APIs to get the "immediately enclosing fn body").

The current fn approach is not ideal, it makes it imossible for library-level TLS vars.

@ticki You can always create your own handle type which is not Send and which implement Deref unsafely, borrowing the handle type, or have a safe with method, or just a regular free function.

@ticki

The current fn approach is not ideal, it makes it imossible for library-level TLS vars.

Yes, I agree it's not ideal -- but it is workable. =)
I think you can imagine something like 'thread that also works in a similar fashion. The idea would be roughly that 'thread is a special lifetime parameter and only usable in fn signatures (or perhaps constants and/or other rvalues) as a kind of early lifetime parameter.
When checking a fn body, we create a skolemized lifetime (let's call it 'current-thread) to represent the current thread. 'current-thread <= 'static, naturally, but that's probably all we know about it (and I guess some relation to the current fn body). When a fn is referenced whose signature includes 'thread, it is instantiated with a fresh region variable. This region variable is bounded to be <= 'current-thread.  Sorry if this is vague but rough idea is that, when you instantiate something, 'thread is replaced with the 'current-thread
This would cause a type error in @arielb1's example beca

Ah, never mind, I see the error in my thinking. I think the key part of @arielb1's example that is problematic is here:
fn set_bomb<'b>(bomb: &mut Option<&'b u32>)
    where 'thread: 'b
{
    // this function looks legal.
    #[thread_local]
    static LOCAL: u32 = 0;
    *bomb = Some(&LOCAL);
}

In particular, we can't replace 'thread with 'current-thread at the point where we refer to set_bomb, we have to replace it at the point where we call set_bomb. IOW, 'thread would have to be late-bound which would forbid it from appearing in the where-clause, and would in turn render the fn body illegal.
This isn't a fully thought out thought yet either though :)
Certainly 'thread is full of subtle-ty. I am not sure yet if treating it "properly" is worth it. The only reason I can see pursuing it is precisely if you want to enable references to thread-local data to be shared between (scoped) threads (e.g., when using rayon). Otherwise non-send wrappers seem better.

@nikomatsakis You can always just pass it down the stack in the "current fn" approach, it's as valid as any reference to a stack-local variable

@eddyb yeah, true. It can cross threads, you just can't return it. But I guess you can return it with a wrapper and share that.
I have to say that adding a bunch of machinery to cover this corner case doesn't feel very good, especially since I consider directly using #[thread_local] a kind of anti-pattern, at least for now (perhaps I will revise my opinion in light of https://github.com/rust-lang/rfcs/pull/1705#issuecomment-238073102 though).

@rfcbot fcp close
I move we close this RFC. The motivation (supporting references to #[thread-local] data) doesn't feel that strong: that attribute isn't even stable, and thread_local! is perfectly adequate (and performant!) in practice. thread_local! already addresses the soundness problems via its API. Moreover, the 'thread "lifetime" doesn't compose well, since you want (safe) pointers to thread-local data to be thread-local, which would mean that &'a T would be Send unless 'a == 'thread, something which we cannot support.

Since this PR has been in FCP for 16 days and there are no new comments, I'm closing it. For justification see https://github.com/rust-lang/rfcs/pull/1705#issuecomment-260061724


Add the option to include the git context of the user if available

This pull request adds the ability for terminal-copilot to include Git context in the prompt sent to the OpenAI API. The --git flag can be used to enable the inclusion of Git context in the prompt, which may include the current branch name, repository status, recent commit messages, and file history.
This feature can be useful for users working with Git repositories and may help terminal-copilot generate more accurate and targeted terminal commands.
To use this feature, pass the --git flag when calling terminal-copilot.
Let me know what you think of this.

Great idea! merged!


Fix broken build when compiling for Mac Catalyst

The revision 42e18ec60f45e1f51585410cd63758c1b47574cc introduced a build error when compiling for Mac Catalyst.
As you can see in SFAuthenticationURLHandler.swift, SFAuthenticationURLHandler is not defined on Catalyst:
#if !targetEnvironment(macCatalyst)
@available(iOS, introduced: 11.0, deprecated: 12.0)
open class SFAuthenticationURLHandler: OAuthSwiftURLHandlerType {
[...]
#endif

The proposed solution consists of using the same #if targetEnvironment(macCatalyst) to not use SFAuthenticationURLHandler when compiling for Catalyst.

Thanks


GOSA15 -  Create routing for screens in main.dart

Create routing for all the screens.
Steps:

Create a static variable routeName with value "/screenName" in respective screens.
Add the routeName to main.dart

assign me

please assign this to me

plz assign me this!

Can work on this!

@RakeshSeervi  you can work on this issue.

@RakeshSeervi Thank you for the contribution, We have successfully merged your Pull request.
You have received 5 points for the contribution. Keep it up.


Add HSTS warning for specifying --dtr-external-url

Addresses https://docker.atlassian.net/browse/ENGDTR-256.
@caervs do you think this is sufficient to address the HSTS issue?

Deploy preview for docsdocker ready!
Built with commit 9b77e6af4639dd3f4213cfa991b0300a0eaadabf
https://deploy-preview-8591--docsdocker.netlify.com

Thank you, @caervs !

Future work: Add example error message:
Chrome:
You cannot visit <dtr-url> right now because the website uses HSTS. Network errors and attacks are usually temporary, so this page will probably work later.


IntersectionObserver sometimes looses events on Chrome/ Opera

The initial problem: This is extremly hard to reproduce and I too have reports for Firefox that I cannot confirm.
So sometimes in a list of let's say 20 images one or two aren't loaded. The data-loaded is not set, so if you scroll the element out of view and back again it will be loaded.
I've tried to find recent bugreports for Chrome, but was not lucky.
The only thing that came near my observation is this ticket: https://github.com/firehol/netdata/issues/3289
Does anyone encountered similar behavior?
If so: Is there some kind of workaround w/o falling back to the old ways?

@damac23 I'm experiencing the same issue. Using Chrome 65.0.3325.146.
Although i'm not having the issue on Chrome Canary 67.0.3366.0, so it seems it is a issue related to Chrome.

I can confirm that with Google Chrome 65.0.3325.162 I have a lot of issues with the appearance of the images, while Firefox 60.0b3 works fine.

Closing this issue, as needs to be fixed at the browser's end

Hi
I'm having issues with the latest version of Chrome on OSX and Windows. Only about half of the images are loaded, many are not loaded at all.
Maybe it has something to do that the images are only visible on hover (css opacity).
The solution that works for me is to add a src attribute with a placeholder image:
<img class="lozad" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" data-src="myimg.jpg">
Maybe this is useful for somebody.


Convert to Uint8Array to avoid Content-Type override

Fixes #1010, #336

Great investigation, thanks!

Looks like might need to run prettier @dqbd

Looks like might need to run prettier @dqbd

My bad, fixed now 👍


Docs/Update landing page graphic

@seanvaleo
feel free to merge this if it looks good to you, thanks!


Search without mode matching everything

when i search 'git' on fts and ncs, i get normal results. when I search without a mode it is matching everything:

Searching without a mode defaults to fuzzy search. Is fuzzy search not behaving correctly?

Searching without a mode defaults to fuzzy search. Is fuzzy search not behaving correctly?

Yes, I don't think that using 'git' as a search query should match all my snippets. We might need to adjust something in the fuzzy search package?


[Documentation]: Combine "contributing.md" and "development.md"

What problem or use case are you trying to solve?
We currently have two documents on how to contribute to OpenDevin, but it's confusing about which one to look at:

https://github.com/OpenDevin/OpenDevin/blob/main/CONTRIBUTING.md
https://github.com/OpenDevin/OpenDevin/blob/main/Development.md

We should consider combining the content of the two.

Might actually be good to keep them separate, but rather improve upon their content, which doesn't necessarily have a big overlap (dev <-> enduser):
https://docs.github.com/en/communities/setting-up-your-project-for-healthy-contributions/setting-guidelines-for-repository-contributors#adding-a-contributing-file

I do think that this would be a possibility, but (1) right now the overlap between these two files seems pretty high (both deal with environment setup for devs, etc), and (2) the files are not super-long. Because of this, I think it might be nice to just have all information in one place but with a table of contents so you can quickly jump to the relevant information for now, and if the file length gets too unwieldy we could consider splitting them again.

Thanks for raising this.
I would be keen to at least have clearer references between them:
When I read contributing.md, I didn't know that development.md existed and I just tried to guess about how to build the program, until neubig pointed me to the right one.

@neubig When I first picked this issue up, I tried combining the two and it didn't look great tbh. It became rather large so I fixed it by referencing each doc in the beginning of the other doc.
There isn't really overlap between the two and I tried to explain the use case of each document. Take a look at the new files and reopen with any concerns if you feel like it did not resolve the main problem.

Thanks @mamoodi !


ClassNotFoundException when opening the Editor from the QuickEdit dialog.

When there is another app that can handle the Edit Intent for Tasks, the Chooser will crash when the editor is opened from the Quickedit dialog. That's because the extras Bundle contains a custom Parcelable class (the ContentSet).

fixed


Authentication fails with older user models since 5.x

Laravel Version: 5.7 and  6.2 Testet
Adldap2-Laravel Version: >= 5.x
PHP Version: 7.2.5
LDAP Type: ActiveDirectory on Windows Server 2019

I've recently updated a project for one of my clients, which included updating Adldap2 for Laravel from 4.0* to 6.0*. I used the website with the testuser provided by the client and everything worked fine. Now I've deployed the site to their server and he notified me, that older user models can't log in. After some testing we could see the following:
When logging in with a relatively new LDAP user the authentication works without a problem on 6.0, as seen here:
[2019-10-22 22:33:22] local.INFO: LDAP (ldap://<IP_ADDRESS>:389) - Connection: default - Operation: Binding - Username<EMAIL_ADDRESS>
[2019-10-22 22:33:22] local.INFO: LDAP (ldap://<IP_ADDRESS>:389) - Connection: default - Operation: Bound - Username<EMAIL_ADDRESS>
[2019-10-22 22:33:22] local.INFO: LDAP (ldap://<IP_ADDRESS>:389) - Connection: default - Operation: Search - Base DN: dc=schule,dc=intern - Filter: (&(objectclass=user)(objectcategory=person)(!(objectclass=contact))(cn=testle.testle)) - Selected: (*) - Time Elapsed: 22.61
[2019-10-22 22:33:23] local.INFO: LDAP (ldap://<IP_ADDRESS>:389) - Connection: default - Operation: Search - Base DN: dc=schule,dc=intern - Filter: (&(objectclass=user)(objectcategory=person)(!(objectclass=contact))(cn=testle.testle)) - Selected: (*,objectguid) - Time Elapsed: 22.55
[2019-10-22 22:33:23] local.INFO: User 'testle.testle' has been successfully found for authentication.
[2019-10-22 22:33:23] local.INFO: User 'testle.testle' is being synchronized.
[2019-10-22 22:33:23] local.INFO: User 'testle.testle' has been successfully synchronized.
[2019-10-22 22:33:23] local.INFO: User 'testle.testle' is authenticating with username: 'testle.testle'
[2019-10-22 22:33:23] local.INFO: LDAP (ldap://<IP_ADDRESS>:389) - Connection: default - Operation: Attempting - Username: testle.testle
[2019-10-22 22:33:23] local.INFO: LDAP (ldap://<IP_ADDRESS>:389) - Connection: default - Operation: Binding - Username: testle.testle
[2019-10-22 22:33:23] local.INFO: LDAP (ldap://<IP_ADDRESS>:389) - Connection: default - Operation: Bound - Username: testle.testle
[2019-10-22 22:33:23] local.INFO: LDAP (ldap://<IP_ADDRESS>:389) - Connection: default - Operation: Passed - Username: testle.testle
[2019-10-22 22:33:23] local.INFO: LDAP (ldap://<IP_ADDRESS>:389) - Connection: default - Operation: Binding - Username<EMAIL_ADDRESS>
[2019-10-22 22:33:23] local.INFO: LDAP (ldap://<IP_ADDRESS>:389) - Connection: default - Operation: Bound - Username<EMAIL_ADDRESS>
[2019-10-22 22:33:23] local.INFO: User 'testle.testle' has successfully passed LDAP authentication.
[2019-10-22 22:33:23] local.INFO: User 'testle.testle' has been successfully logged in.

Older User models give a "invalid credentials" error:
[2019-10-22 22:33:58] local.INFO: LDAP (ldap://<IP_ADDRESS>:389) - Connection: default - Operation: Binding - Username<EMAIL_ADDRESS>
[2019-10-22 22:33:58] local.INFO: LDAP (ldap://<IP_ADDRESS>:389) - Connection: default - Operation: Bound - Username<EMAIL_ADDRESS>
[2019-10-22 22:33:59] local.INFO: LDAP (ldap://<IP_ADDRESS>:389) - Connection: default - Operation: Search - Base DN: dc=schule,dc=intern - Filter: (&(objectclass=user)(objectcategory=person)(!(objectclass=contact))(cn=adrian.knoll)) - Selected: (*) - Time Elapsed: 24.54
[2019-10-22 22:33:59] local.INFO: LDAP (ldap://<IP_ADDRESS>:389) - Connection: default - Operation: Search - Base DN: dc=schule,dc=intern - Filter: (&(objectclass=user)(objectcategory=person)(!(objectclass=contact))(cn=adrian.knoll)) - Selected: (*,objectguid) - Time Elapsed: 24.13
[2019-10-22 22:33:59] local.INFO: User 'ADRIAN.KNOLL' has been successfully found for authentication.
[2019-10-22 22:33:59] local.INFO: User 'ADRIAN.KNOLL' is being synchronized.
[2019-10-22 22:33:59] local.INFO: User 'ADRIAN.KNOLL' has been successfully synchronized.
[2019-10-22 22:33:59] local.INFO: User 'ADRIAN.KNOLL' is authenticating with username: 'ADRIAN.KNOLL'
[2019-10-22 22:33:59] local.INFO: LDAP (ldap://<IP_ADDRESS>:389) - Connection: default - Operation: Attempting - Username: ADRIAN.KNOLL
[2019-10-22 22:33:59] local.INFO: LDAP (ldap://<IP_ADDRESS>:389) - Connection: default - Operation: Binding - Username: ADRIAN.KNOLL
[2019-10-22 22:33:59] local.WARNING: LDAP (ldap://<IP_ADDRESS>:389) - Connection: default - Operation: Failed - Username: ADRIAN.KNOLL - Reason: Invalid credentials
[2019-10-22 22:33:59] local.INFO: LDAP (ldap://<IP_ADDRESS>:389) - Connection: default - Operation: Binding - Username<EMAIL_ADDRESS>
[2019-10-22 22:33:59] local.INFO: LDAP (ldap://<IP_ADDRESS>:389) - Connection: default - Operation: Bound - Username<EMAIL_ADDRESS>
[2019-10-22 22:33:59] local.INFO: User 'ADRIAN.KNOLL' has failed LDAP authentication.

I tried the same User with version 4.0.* (the one I used before) and authentication worked without any problem. Then I tried version 5.0.* and it failed, so it seems like the bug or maybe incompatility got introduced with the new version of the package(it seems like a few things changed, since we have different config files since 5.x ...). My client told me they are using Windows Server 2019.
I would be more than happy to share the server username, password,(....) for helping you with debugging this(via a private communication channel of course, since I don't want to expose sensitive information like the password).
If you need any additional information I'm more than happy to provide it.
Thank you very much in advance!

Hi @3Descape,
When you upgraded, did you re-publish the configuration files and reconfigure?
Also, did you create an objectguid database column on the users database table? This was one of the most notable changes in v6.0.

Also, the Invalid Credentials error is coming directly from their LDAP server.
For the user in question (ADRIAN.KNOLL), is this the users userPrincipalName?

Yes I did republish the configuration and reconfigure

Can you post your config/ldap_auth.php file?

<?php

return [
    /*
    |--------------------------------------------------------------------------
    | Connection
    |--------------------------------------------------------------------------
    |
    | The LDAP connection to use for Laravel authentication.
    |
    | You must specify connections in your `config/ldap.php` configuration file.
    |
    */

    'connection' => env('LDAP_CONNECTION', 'default'),

    /*
    |--------------------------------------------------------------------------
    | Provider
    |--------------------------------------------------------------------------
    |
    | The LDAP authentication provider to use depending
    | if you require database synchronization.
    |
    | For synchronizing LDAP users to your local applications database, use the provider:
    |
    | Adldap\Laravel\Auth\DatabaseUserProvider::class
    |
    | Otherwise, if you just require LDAP authentication, use the provider:
    |
    | Adldap\Laravel\Auth\NoDatabaseUserProvider::class
    |
    */

    'provider' => Adldap\Laravel\Auth\NoDatabaseUserProvider::class,

    /*
    |--------------------------------------------------------------------------
    | Model
    |--------------------------------------------------------------------------
    |
    | The model to utilize for authentication and importing.
    |
    | This option is only applicable to the DatabaseUserProvider.
    |
    */

    'model' => App\User::class,

    /*
    |--------------------------------------------------------------------------
    | Rules
    |--------------------------------------------------------------------------
    |
    | Rules allow you to control user authentication requests depending on scenarios.
    |
    | You can create your own rules and insert them here.
    |
    | All rules must extend from the following class:
    |
    |   Adldap\Laravel\Validation\Rules\Rule
    |
    */

    'rules' => [
        // Denys deleted users from authenticating.

        Adldap\Laravel\Validation\Rules\DenyTrashed::class,

        // Allows only manually imported users to authenticate.

        // Adldap\Laravel\Validation\Rules\OnlyImported::class,
    ],

    /*
    |--------------------------------------------------------------------------
    | Scopes
    |--------------------------------------------------------------------------
    |
    | Scopes allow you to restrict the LDAP query that locates
    | users upon import and authentication.
    |
    | All scopes must implement the following interface:
    |
    |   Adldap\Laravel\Scopes\ScopeInterface
    |
    */

    'scopes' => [
        // Only allows users with a user principal name to authenticate.
        // Suitable when using ActiveDirectory.
        // Adldap\Laravel\Scopes\UpnScope::class,

        // Only allows users with a uid to authenticate.
        // Suitable when using OpenLDAP.
        // Adldap\Laravel\Scopes\UidScope::class,
    ],

    'identifiers' => [
        /*
        |--------------------------------------------------------------------------
        | LDAP
        |--------------------------------------------------------------------------
        |
        | Locate Users By:
        |
        |   This value is the users attribute you would like to locate LDAP
        |   users by in your directory.
        |
        |   For example, using the default configuration below, if you're
        |   authenticating users with an email address, your LDAP server
        |   will be queried for a user with the a `userprincipalname`
        |   equal to the entered email address.
        |
        | Bind Users By:
        |
        |   This value is the users attribute you would
        |   like to use to bind to your LDAP server.
        |
        |   For example, when a user is located by the above attribute,
        |   the users attribute you specify below will be used as
        |   the 'username' to bind to your LDAP server.
        |
        |   This is usually their distinguished name.
        |
        */

        'ldap' => [
            'locate_users_by' => 'cn',

            'bind_users_by' => 'cn',
        ],

        'database' => [
            /*
            |--------------------------------------------------------------------------
            | GUID Column
            |--------------------------------------------------------------------------
            |
            | The value of this option is the database column that will contain the
            | LDAP users global identifier. This column does not need to be added
            | to the sync attributes below. It is synchronized automatically.
            |
            | This option is only applicable to the DatabaseUserProvider.
            |
            */

            'guid_column' => 'cn',

            /*
            |--------------------------------------------------------------------------
            | Username Column
            |--------------------------------------------------------------------------
            |
            | The value of this option is the database column that contains your
            | users login username.
            |
            | This column must be added to your sync attributes below to be
            | properly synchronized.
            |
            | This option is only applicable to the DatabaseUserProvider.
            |
            */

            'username_column' => 'cn',
        ],

        /*
        |--------------------------------------------------------------------------
        | Windows Authentication Middleware (SSO)
        |--------------------------------------------------------------------------
        |
        | Local Users By:
        |
        |   This value is the users attribute you would like to locate LDAP
        |   users by in your directory.
        |
        |   For example, if 'samaccountname' is the value, then your LDAP server is
        |   queried for a user with the 'samaccountname' equal to the value of
        |   $_SERVER['AUTH_USER'].
        |
        |   If a user is found, they are imported (if using the DatabaseUserProvider)
        |   into your local database, then logged in.
        |
        | Server Key:
        |
        |    This value represents the 'key' of the $_SERVER
        |    array to pull the users account name from.
        |
        |    For example, $_SERVER['AUTH_USER'].
        |
        */

        'windows' => [
            'locate_users_by' => 'samaccountname',

            'server_key' => 'AUTH_USER',
        ],
    ],

    'passwords' => [
        /*
        |--------------------------------------------------------------------------
        | Password Sync
        |--------------------------------------------------------------------------
        |
        | The password sync option allows you to automatically synchronize users
        | LDAP passwords to your local database. These passwords are hashed
        | natively by Laravel using the Hash::make() method.
        |
        | Enabling this option would also allow users to login to their accounts
        | using the password last used when an LDAP connection was present.
        |
        | If this option is disabled, the local database account is applied a
        | random 16 character hashed password upon first login, and will
        | lose access to this account upon loss of LDAP connectivity.
        |
        | This option is only applicable to the DatabaseUserProvider.
        |
        */

        'sync' => env('LDAP_PASSWORD_SYNC', true),

        /*
        |--------------------------------------------------------------------------
        | Column
        |--------------------------------------------------------------------------
        |
        | This is the column of your users database table
        | that is used to store passwords.
        |
        | Set this to `null` if you do not have a password column.
        |
        | This option is only applicable to the DatabaseUserProvider.
        |
        */

        'column' => 'password',
    ],

    /*
    |--------------------------------------------------------------------------
    | Login Fallback
    |--------------------------------------------------------------------------
    |
    | The login fallback option allows you to login as a user located in the
    | local database if active directory authentication fails.
    |
    | Set this to true if you would like to enable it.
    |
    | This option is only applicable to the DatabaseUserProvider.
    |
    */

    'login_fallback' => env('LDAP_LOGIN_FALLBACK', false),

    /*
    |--------------------------------------------------------------------------
    | Sync Attributes
    |--------------------------------------------------------------------------
    |
    | Attributes specified here will be added / replaced on the user model
    | upon login, automatically synchronizing and keeping the attributes
    | up to date.
    |
    | The array key represents the users Laravel model key, and
    | the value represents the users LDAP attribute.
    |
    | You **must** include the users login attribute here.
    |
    | This option is only applicable to the DatabaseUserProvider.
    |
    */

    'sync_attributes' => [
        App\Handlers\LdapAttributeHandler::class,
    ],

    /*
    |--------------------------------------------------------------------------
    | Logging
    |--------------------------------------------------------------------------
    |
    | User authentication attempts will be logged using Laravel's
    | default logger if this setting is enabled.
    |
    | No credentials are logged, only usernames.
    |
    | This is usually stored in the '/storage/logs' directory
    | in the root of your application.
    |
    | This option is useful for debugging as well as auditing.
    |
    | You can freely remove any events you would not like to log below,
    | as well as use your own listeners if you would prefer.
    |
    */

    'logging' => [
        'enabled' => env('LDAP_LOGGING', true),

        'events' => [
            \Adldap\Laravel\Events\Importing::class => \Adldap\Laravel\Listeners\LogImport::class,
            \Adldap\Laravel\Events\Synchronized::class => \Adldap\Laravel\Listeners\LogSynchronized::class,
            \Adldap\Laravel\Events\Synchronizing::class => \Adldap\Laravel\Listeners\LogSynchronizing::class,
            \Adldap\Laravel\Events\Authenticated::class => \Adldap\Laravel\Listeners\LogAuthenticated::class,
            \Adldap\Laravel\Events\Authenticating::class => \Adldap\Laravel\Listeners\LogAuthentication::class,
            \Adldap\Laravel\Events\AuthenticationFailed::class => \Adldap\Laravel\Listeners\LogAuthenticationFailure::class,
            \Adldap\Laravel\Events\AuthenticationRejected::class => \Adldap\Laravel\Listeners\LogAuthenticationRejection::class,
            \Adldap\Laravel\Events\AuthenticationSuccessful::class => \Adldap\Laravel\Listeners\LogAuthenticationSuccess::class,
            \Adldap\Laravel\Events\DiscoveredWithCredentials::class => \Adldap\Laravel\Listeners\LogDiscovery::class,
            \Adldap\Laravel\Events\AuthenticatedWithWindows::class => \Adldap\Laravel\Listeners\LogWindowsAuth::class,
            \Adldap\Laravel\Events\AuthenticatedModelTrashed::class => \Adldap\Laravel\Listeners\LogTrashedModel::class,
        ],
    ],
];

This is the issue:
'bind_users_by' => 'cn',

You cannot bind users by their common name. ActiveDirectory users can only be bound by:

distinguishedname
or userPrincipalName

Also, since this system is in production, make sure you clear your configurations cache if you are indeed caching it (via a php artisan config:clear).

Thank you very, very much! I'm really sorry I didn't catch that myself.
Keep up the great work with this package, it's super nice!
Thank you very much again!

No problem at all! Thanks for much for your kind words, that truly means a lot to me :smile:
Please let me know if you encounter any further issues - I'm always happy to help in any way I can.


is it possible to pass script_path="task.py" to CustomTrainingJobOp?

I observe the google_cloud_pipeline_components.v1.custom_job.CustomTrainingJobOp may not have a parameter to accept a script path like the following code section:
job = aiplatform.CustomTrainingJob(
    display_name=JOB_NAME,
    script_path="task.py",
    container_uri=TRAIN_IMAGE,
    requirements=["tensorflow_datasets==1.3.0"],
    model_serving_container_image_uri=DEPLOY_IMAGE,
)

MODEL_DISPLAY_NAME = "cifar10-" + TIMESTAMP

# Start the training
if TRAIN_GPU:
    model = job.run(
        model_display_name=MODEL_DISPLAY_NAME,
        args=CMDARGS,
        replica_count=1,
        machine_type=TRAIN_COMPUTE,
        accelerator_type=TRAIN_GPU.name,
        accelerator_count=TRAIN_NGPU,
    )
else:
    model = job.run(
        model_display_name=MODEL_DISPLAY_NAME,
        args=CMDARGS,
        replica_count=1,
        machine_type=TRAIN_COMPUTE,
        accelerator_count=0,
    )

Is it possible to achieve the training above in with Vertex Pipeline code sample below?
custom_job_task = CustomTrainingJobOp(
        project=project,
        display_name="model-training",
        worker_pool_specs=[
            {
                "containerSpec": {
                    "args": TRAINER_ARGS,
                    "env": [{"name": "AIP_MODEL_DIR", "value": WORKING_DIR}],
                    "imageUri": "gcr.io/google-samples/bw-cc-train:latest",
                },
                "replicaCount": "1",
                "machineSpec": {
                    "machineType": "n1-standard-16",
                    "accelerator_type": aip.gapic.AcceleratorType.NVIDIA_TESLA_K80,
                    "accelerator_count": 2,
                },
            }
        ],
    )

I am guessing gcr.io/google-samples/bw-cc-train:latest is probably @andrewferlitsch custom build container image for the model training which may contain task.py already. I want to understand if CustomTrainingJobOp can accept script_path="task.py"; if not, I am guessing developers would need to create a kfp.v2.dsl.component to include the 1st code section of aiplatform.CustomTrainingJob?

@hilliao Sorry for the late response.
CustomPythonPackageTrainingJob takes an entire python package.
CustomTrainingJob does accept script_path=task.py.
It is CustomContainerJob where the script is burned into the container,


Merge staging to master

Codecov Report

Merging #8 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master       #8   +/-   ##
=======================================
  Coverage   85.33%   85.33%
=======================================
  Files           2        2
  Lines          75       75
  Branches       14       14
=======================================
  Hits           64       64
  Misses          9        9
  Partials        2        2

Continue to review full report at Codecov.

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


Don't log message changes for messages authored by Logos

The broader picture is that for deletion, this isn't exactly self-deletion: this is all deletions for a message created by Logos. (For message update, obviously there is no such issue.)

The reason I kept this as draft is that it doesn't account for bulk deletion. I'm not really familiar with it but I'd assume that bulk deletion doesn't always belong to just one user, especially when it's initiated by a bot (can users initiate bulk deletions anyway? maybe when banning someone?). I don't quite understand the Discord behavior and/or the desired outcome when there might be a list of messages deleted that includes some messages that aren't created by Logos.

According to the comments in private

You don't have to worry about bulk deletes because Logos doesn't bulk-delete messages on its own
The only case in which logos can bulk-delete its own messages is during the course of /purge

I'm going to just advance this branch to a stable PR.


Broken positioning for one-tap links

Bug Description
When adding a 1-tap link (aka element within amp-story-cta-layer), the absolute positioning is somehow broken and not based on the bottom 20% of the page.
This used to work (after it was once broken), but seems like it regressed again.
Only change that seems relevant is #916.
Expected Behaviour
1-tap links should be positioned correctly on the page.
Steps to Reproduce
Add text element with link in the bottom of the (second) page and check the frontend output.
The element is nowhere to be seen.
Screenshots
Editor:

Frontend:

Do not alter or remove anything below. The following sections will be managed by moderators only.
Acceptance Criteria
QA Instructions

FI: In my testing, the background (fill) showed up as expected, however, the text not.
See the editor:

FE:

@wassgha are you actively working on this one?
(also congrats to @swissspidy for creating #1000   🎉🎉)

Yes! Will have a PR for it today


recaptcha widget is displayed between tools  swap

The ReCaptcha widget is displayed in the background of the sepal tools in the bottom right corner as is shown in the below image

To Reproduce
Steps to reproduce the behavior:

Go to sepal and swap between the tools (process, files, terminal...)
check the bottom right corner and see the overlayed widget

The behavior is happening on Chrome but not on Firefox

Resolved by https://github.com/openforis/sepal/commit/b90d58387a9770703e15aa24d856a57d44674d60.


How does the Globally Distributed static content work with other features?

In your docs you say that one of the key features you have in Azure Static Web Apps is:

Globally distributed static content, putting content closer to your users.

I don't understand how it can work with other features like authentication.
If I have this staticwebapp.json:
{
  "routes": [
    {
      "route": "/*",
      "allowedRoles": ["authenticated"]
    }
  ]
}

I don't have any code in my HTML+JS that enforces the authentication, but still, something enforces that rule.
On one hand, you claim that the static content is globally distributed.
On the other hand, you claim that the Azure Functions (managed) are deployed to one region:

Azure Static Web Apps is a global service. Your app's static assets are globally distributed. When you create your app, you select a region where the managed Azure Functions app is deployed.

So, the backend that enforces the other features cannot be Azure Functions since it is deployed to one region.
So, how does Azure Static Web Apps enforces such features and still allow globally distributed static content?

Azure Static Web Apps globally distributes your static content. All requests are routed to our edge nodes where various logic is applied such as routing rules. The various features in the config file are independent of any serverless functions you add to your project.

Not sure I understand the flow.
What is the flow of a user that want to navigate to any page with the config from my first comment?
There is a lot of logic happening before the static content...
Your servers need to reads the config file, authorize the user with the context cookie, and if authorize, return the static content.
Is this server logic global distributed?

Our edge nodes how to interpret the config file and your rules are applied before static content is served. This happens at our globally distributed edge nodes.

Means in the end the "global distribution" is a lie when you just "route it".
I've tested it now. Makes me really mad, because it is a lie in the documentation and have now find another way to distribute the content.


New test-suite to cover K3s support

root@sysbox-test:~/nestybox/sysbox# bats -t tests/kind/k3s-flannel.bats
1..10
ok 1 k3s cluster up (flannel)
ok 2 k3s pod (flannel)
ok 3 k3s pod multi-container (flannel)
ok 4 k3s deployment (flannel)
ok 5 k3s service clusterIP (flannel)
ok 6 k3s service nodePort (flannel)
ok 7 k3s vol emptyDir (flannel)
ok 8 k3s vol hostPath (flannel)
ok 9 k3s vol local persistent (flannel)
ok 10 k3s cluster down (flannel)

Skipping CI for now till submodule changes are merged.

Travis CI execution failed due to a known issue not related to the changes being made here.


mavlink: 2015.3.11-0 in 'jade/distribution.yaml' [bloom]

Increasing version of package(s) in repository mavlink to 2015.3.11-0:

upstream repository: https://github.com/mavlink/mavlink.git
release repository: https://github.com/mavlink/mavlink-gbp-release.git
distro file: jade/distribution.yaml
bloom version: 0.5.19
previous version for package: 2015.3.3-0

Trying to retrigger Travis check...


Feature Request: implement it like husky

Proposal:
Implement a tool or mechanism for Rust projects that functions like Husky, enforcing the execution of pre-build hooks whenever a cargo command (e.g., cargo build, cargo test) is run. This ensures that contributors must run these hooks, which helps automate checks and maintain code quality.
Key Requirements:

Forced Hook Execution: Ensure that hooks are automatically run as a prerequisite whenever any cargo command is executed.
Integration with Rust: Seamless integration with the Rust development workflow, similar to how Husky operates in Node.js projects.
Customization: The ability to define and customize hooks for tasks like code linting, formatting, or running tests.

Benefits:

Uniform Code Quality: Enforces consistent pre-build checks across all contributors.
Automation: Reduces manual tasks by automatically running necessary scripts before significant operations.
Reliability: Decreases potential for errors or skipped checks before building and testing.

Expected Outcome:
A tool or script that integrates with cargo to run specified hooks, ensuring all contributors comply with pre-defined workflows to enhance project reliability and maintain code standards.

Thanks for the proposal! This project is still in the early development stage, so I'll concentrate on implementing most of the pre-commit functionalities first. I'll consider your suggestion once the main functions are in place.


Support Perl 5.6.1, 5.6.2, and 5.8.x (where x < 5)

Would be really nice to have support for those.
Yes, I know cpanm doesn't work on Perl older than 5.8.1, so the classic CPAN client would need to be used there.

Actually cpanm is really easy to get working on Perl 5.6.
Here's an example of a working cpanm for Perl 5.6. (Tested on 5.6.1 and 5.6.2.)
https://gist.github.com/tobyink/c7a1001f39d90c3ff76400b13183b268
A summary of changes:

print$fh JSON::PP::encode_json($local) needs to be changed to print {$fh} JSON::PP::encode_json($local) — this is just one place in the fatpacked App::cpanminus::script.
use 5.008001 needs to be changed to use 5.006 in fatpacked CPAN::Meta::YAML.
In fatpacked App::cpanminus::script, where it calls GetOptions, the q|quiet! option should be changed to q|quiet, n|notest! changed to n|notest and S|sudo! changed to S|sudo. This means that --no-prefixed versions of those options stop working, but they're already false by default.

So if actions-setup-perl could install a patched version of cpanm with the above fixes, this would make testing on Perl 5.6 work beautifully.

fixed by https://github.com/shogo82148/actions-setup-perl/pull/481 and https://github.com/shogo82148/actions-setup-perl/pull/453


Does not work with 3.7

_TypingBase was removed in python/cpython@d911e40.

Look like we need to use typing._Final in Python 3.7+, @samuelcolvin what do you think?


[Feature][Connector-V2] Support Druid Source & Sink

fix [Feature][Connector] New SeaTunnel API Connectors #1946 Add Druid Source & Sink

Expect the connector to complete.
And can you add e2e to seatunnel-connector-v2-e2e module? you can see #2924.

hi bro，development e2e testcase,There are some problems with my environment. this is message:
https://github.com/apache/incubator-seatunnel/issues/2876#issuecomment-1257417413

Hi, @guanboo  Did you fix the problems?

Hi, @guanboo Did you fix the problems?

Yes,done

@guanboo please fix CI error and resolve conflicts

hi brother,did you continue this PR?
I am studying the reader connector of druid. The implementation method is somewhat different from yours. Through the raw json protocol. I think we can communicate

@guanboo  Will this pr go ahead? If not, I would like to take over and finish it

@guanboo  Will this pr go ahead? If not, I would like to take over and finish it

yes,brother. the pr is going,the connector is complete，but e2e is not completely, I has finished the reader of e2e,and guanboo try to finished the writer of e2e, but he is so busy to do it.I not similar with the writer for druid.

@guanboo  Will this pr go ahead? If not, I would like to take over and finish it

if you so similar with druid you can continue it or another pr，guanboo and I are so busy for our work.


configurable image cleaners

This PR creates some configurable ImageCleaners  that are just Component wrappers for the existing algorithms (similar to what was in #1163 and intended to replace those.   The parameters of each can be configured differently for each telescope in the array (or by type), since they use TelescopeParameters traits.
It also creates a TelescopeComponent base class to help with attaching a SubarrayDescription to Components that need them.
The basic usage inside a Tool is:
clean = self.add_component(
    ImageCleaner.from_name(cleaning_method, subarray=subarray, parent=self)
)

...

clean_mask = clean(tel_id, image, arrival_times)

Could we add one more test, which ensures that the ImageCleaner really always needs a subarray, like this?
@pytest.mark.parametrize(
    "method", ["TailcutsImageCleaner", "MARSImageCleaner", "FACTImageCleaner"]
)
def test_image_cleaner_needs_subarray(method):
    with pytest.raises(TypeError):
        ImageCleaner.from_name(method)

Or is that actually more of a test for TelescopeComponent .. at the moment TelescopeComponent seems not to be tested at all.

c.f. #1203 I though it would be nice to test all subclasses automatically, without having to list them all manually.

c.f. #1203 I though it would be nice to test all subclasses automatically, without having to list them all manually.

Of course, we still need to add some configs for each subclass, so it doesn't save too much time, but I do like that it prevents accidentally missing one.

Could we add one more test, which ensures that the ImageCleaner really always needs a subarray, like this?

Yes, I'll add some more. I'm definitely worried about the case where the user forgets the subarray and expects the config file to be followed, but in reality it is using defaults. Though I   guess that should be tested for in the TelescopeComponent tests (which I just notice I forgot)


ref(tlsutil): remove ServerConfig

dead code from Tiller days
Signed-off-by: Matthew Fisher<EMAIL_ADDRESS>

Now we are calling it tiller days? Already? 🤣🤣


("mods" in inputEvent) always false

Godot version
4.2.beta3.official [e8d57afae]
System information
Windows 11
Issue description
Works fine: ("pressed" in event)
Always false:  ->>> ("mods" in event) <<<-
I saw that it is not listed in the documentation:
https://docs.godotengine.org/en/latest/classes/class_inputeventkey.html
Maybe it isn't meant to be used from the gdscript lvl but it is being printed out with print(event).
That's why it looks like a bug but maybe it isnt.
Someone who designed the events part should decide how to proceed here.
Steps to reproduce
if event is InputEventKey &&  ("mods" in event):
Minimal reproduction project
Minimal project not needed as it is simple to reproduce.

I think this is because "mods" isn't a property on InputEventKey or any of its ancestor classes as far as I can see in 4.x. Did you find this in the class reference or somewhere else?

This is the printout on my Windows 11 machine:
print(event) -> InputEventKey: keycode=67 (C), mods=Shift, physical=false, pressed=true, echo=false
So it exists but maybe not meant to be used..

This is not a property name. It actually prints the value of InputEvent.as_text().

It's listing which modifiers are enabled. It's not a property that's directly accessible, but a human-readable summary of which modifiers are enabled. You can check which modifiers are actually enabled with the properties in InputEventWithModifiers: https://docs.godotengine.org/en/latest/classes/class_inputeventwithmodifiers.html#class-inputeventwithmodifiers (which is inherited by InputEventKey).


Broken links

Issue in /src/pages/implement/client-side/atjs/on-device-decisioning/on-device-decisioning.md
Broken links as pointed out in the screenshot:

Fixed as a result of addressing Issue #78.


GridSplitter vs ContentSizer

Both GridSplitter and ContentSizer allow a control to be resized by the user.  But when to use one or the other?
When to use GridSplitter:
When the developer is trying to resize a grid-based layout (i.e., rows and columns)

Resize methods utilizing RowDefinition and ColumnDefinition properties
Grid interior GridResizeBehavior such as resizing scheme based on CurrentAndNext or PreviousAndNext row and column
GridLength measurement (IsAuto, IsStar, etc.)

Where to use ContentSizer:
Anywhere else not utilizing a grid-based layout

Includes implementation for, but certainly not limited to, basic horizontal and/or vertical resizing

A third option?
Implement your own control, by deriving from the base class, SplitBase.

Moved to WCT repo


moved filter_vcf_exac.cwl to new definitions/tools directory

could not locate a path that needed to be changed

I forgot to add the docker requirement

added the dockerrequirement


index: https://github.com/metanorma/metanorma-iso/issues/480

Merged into https://github.com/metanorma/metanorma-iso/pull/488/commits


Having problems building the jar

Executing
./gradlew jar
results in the following error message
Task 'jar' not found in root project 'spotify-web-api-android'
and the build fails. Any ideas as to the solution.
Bill

@theBoyMo please use ./gradlew assemble and collect spotify-web-api-android-0.1.0.aar from build/outputs/aar
sorry for confusion, I will update the doc right away

Cheers, that worked a treat.

What do you mean by 'collect' <spotify-web-api-android-0.1.0.arr>? What do I do with it, so that I can build the library into a jar?

I simply placed the resulting aar file in the project's app/libs folder,  amended the app build.gradle file and performed a sync. Spotify-web-api, RetroFit, OkHttp and Gson libraries now appear in the External Libraries folder and I can access the various Spotify classes from within an activity or fragment.

If you only need the jar, do the following:

go to build/outputs/aar
unzip spotify-web-api-android-0.1.0.arr
rename your classes.jar to spotify-web-api-android-0.1.0.jar
mv classes.jar spotify-web-api-android-0.1.0.jar
use the jar file into your project


fix: resolve 'document.tags' expected a [list] of 'string' literals error when using tag methods with a single tag

Types of changes

[ ] Chore (a non-breaking change which is related to package maintenance)
[x] Bug fix (a non-breaking change which fixes an issue)
[ ] New feature (a non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)

Description
This PR resolves the following API error when error when using tag methods with a single tag.
'document.tags' expected a [list] of 'string' literals... [truncated]

This error is returned by the API when using a tag method like the following:
// API error
client.getAllByTag('tag')

After this PR, this now works:
// Works
client.getAllByTag('tag')

This is resolved by ensuring tag methods always use an array predicate parameter, even for single tag queries.
Note: This PR also changes getByTag() and getAllByTag() to use the any predicate rather than at. This allows matches against documents that have multiple tags.
Checklist:

[ ] My change requires an update to the official documentation.
[x] All TSDoc comments are up-to-date and new ones have been added where necessary.
[x] All new and existing tests are passing.

🐱

Codecov Report

Merging #220 (50c78f7) into master (52b455c) will not change coverage.
The diff coverage is 100.00%.

@@            Coverage Diff            @@
##            master      #220   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files           19        19
  Lines          316       317    +1
  Branches        60        60
=========================================
+ Hits           316       317    +1

Impacted Files
Coverage Δ

src/client.ts
100.00% <100.00%> (ø)

Continue to review full report at Codecov.

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


Composite Operator: feature for composing quantum operations at a high level

Issue #, if available: NA
Description of changes: This feature supports building decomposable quantum operations for high level quantum algorithms. Moreover, it allows quantum circuits to be compartmentalized into distinct sub operations when visualizing.
Testing done:

./test/unit_tests/braket/circuits/test_composite_operator.py: tested composite_operator base class; covered all class methods and constructor __init__
./test/unit_tests/braket/circuits/test_composite_operators.py: tested composite operators for GHZ, QFT, and QPE; covered all class methods and decompositions using one instance each (maybe can add more instances with different qubit inputs in the future)
./test/unit_tests/braket/circuits/test_ascii_circuit_diagram.py: tested composite operator ascii circuit diagram
./test/unit_tests/braket/circuits/test_circuits.py: tested decompose function on circuit object
./test/unit_tests/braket/circuits/test_instruction.py: tested decompose function on instruction object

Merge Checklist
Put an x in the boxes that apply. You can also fill these out after creating the PR. If you're unsure about any of them, don't hesitate to ask. We're here to help! This is simply a reminder of what we are going to look for before merging your pull request.
General

[ x] I have read the CONTRIBUTING doc
[ ] I used the commit message format described in CONTRIBUTING
[ ] I have updated any necessary documentation, including READMEs and API docs (if appropriate)

Tests

[ x] I have added tests that prove my fix is effective or that my feature works (if appropriate)
[ ] I have checked that my tests are not configured for a specific region or account (if appropriate)

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

Closing PR since there has been no activity on this for a while. Please feel free to reopen if you wish to continue working on this. Thanks!


Handle error code '5' as 'NOT_FOUND'

When testing against the pubsub emulator, I am seeing:
Error: Failed to "modifyAckDeadline" for 1 message(s). Reason: 5 NOT_FOUND: Subscription does not exist
    at /home/simon/code/radio/backend/node_modules/@google-cloud/pubsub/src/message-queues.ts:240:15
    at runNextTicks (internal/process/task_queues.js:62:5)
    at processImmediate (internal/timers.js:429:9)

This happens intermittently, on socket disconnect. From what I can see of the error, it looks like this message is related to the socket that has gone away, in which case NOT_FOUND seems like a sensible response.
The code 404 is listed for NOT_FOUND in https://cloud.google.com/pubsub/docs/reference/error-codes
However, this code for NOT_FOUND in grpc is listed as 5: https://github.com/grpc/grpc/blob/master/doc/statuscodes.md - This is the error that I am getting back in this case.
This could be a bug in the emulator, but handling this error code here also works and is the simpler fix. Given that this error does not overlap with any of the HTTP error codes listed in the pubsub reference, I think this is fine.
Making this change locally in my app has got rid of the error above, without any discernable negative side-effects.

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

Thanks for contributing and using this library :)

I've just released it in v2.0.5

Thanks for the merge!


Support new repository page

Github is previewing a new look for the repository page (enable it by going to Avatar  → feature preview  → Repository Refresh), which isn't compatible with the extension.

Thanks for bringing this up. I am working on a PR to address this issue.

Support for new Github UI is shipped in version 0.6.0.

When it's rooling out?

It's currently pending review by Chrome. I hope it to be out in 24-72 hours.

Surely can't wait hahaha

New placement of repo size is bad. It is among the clickable items which are visible everywhere in the repo while repo size is visible only on the main repo page. Better move it:

Moving it to both places would cover all cases and makes more sense IMO

The displayed repo size is actually a clickable element. When you click on it, it loads directory sizes. :)

Right, I think they just meant the placement makes more sense to be displayed along with commit, branch, and tag information, rather than looking like a tab

Oh, I see. Sure, let's do it. @guidezpl do you want to take a stab at this?

New version is published on Chrome Web Store on June 26, 2020. Tracking position related changes in #60


fix #185: improve the accuracy of datetime to milliseconds (v1.1.5)

Change the time format from yyyy-MM-dd'T'HH:mm:ss.sss to yyyy-MM-dd'T'HH:mm:ss.SSS
When converting Date, read microsec from DateTimeWrapper and change to millisec

PR type

[x] Bugfix

Codecov Report
Patch and project coverage have no change.

Comparison is base (3c7265f) 0.00% compared to head (ca1dfbd) 0.00%.

:exclamation: Your organization is not using the GitHub App Integration. As a result you may experience degraded service beginning May 15th. Please install the Github App Integration for your organization. Read more.
Additional details and impacted files
@@          Coverage Diff           @@
##           master    #186   +/-   ##
======================================
  Coverage    0.00%   0.00%
======================================
  Files          73      73
  Lines        2437    2455   +18
  Branches      264     264
======================================
- Misses       2437    2455   +18

Impacted Files
Coverage Δ

...bula/contrib/ngbatis/binding/DateDeserializer.java
0.00% <ø> (ø)

...ib/ngbatis/binding/beetl/functions/ValueFmtFn.java
0.00% <0.00%> (ø)

...rg/nebula/contrib/ngbatis/utils/ResultSetUtil.java
0.00% <0.00%> (ø)

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


docs: Update the description of PostCSS config

Fixed #10099
Reference postcss/postcss-cli#233

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

Thanks for your contribution.
PR targeted towards hugo's documentation should go to the documentation repository.
Can you please resubmit? Thanks.

Sorry for submitting the PR to incorrect repo. gohugoio/hugoDocs#1783


UI/UX Enhancements for Header, Layout, Popups and other minor style issues

This PR introduces a series of updates and improvements to enhance the UI/UX of the wwWallet:

Updated arrow down select on the Settings page for a better user experience.
Implemented scroll-based header minimization, including resizing of the logo, text, and icons to create a more dynamic and user-friendly interface.
Refactored styles for the popup layout and select credential popup, ensuring consistency across all screen sizes.
Refined the header, sidebar, and main layout styles to simplify the logic and fix the scroll top home page after login.
Removed left padding from the custom scrollbar to streamline the layout.
Enhanced BottomNav padding and styling for an optimized mobile layout experience.
Removed focus outline from the modal to improve the overall UI appearance.

Suggested titles for Cred pages:

Credential
Credential Presentations -> Presentation Details
Credential Dataset

Button labels for Cred page:

Presentations
Dataset
Delete Credential


Support import types in JSDoc links

Bug Report

🔎 Search Terms

JSDoc
link / see

🕗 Version & Regression Information
4.3.0-dev.20210503
💻 Code
For some JavaScript:
// foo.js

export class Foo {}

// index.js

/**
 * {@link import('./foo').Foo Foo}
 *
 * @param {import('./foo').Foo} foo
 */
function withFoo(foo) { }

🙁 Actual behavior
The parameter type is resolved but the @link is not
🙂 Expected behavior
Both links should be resolved

Same issue for me - this is especially annoying, because TS and eslint regard type imports which are only used for JSDoc as unused and will request to remove those imports.

As a workaround, you could use typedef with an import, pointing the link to it:
/** @typedef {import("./typedefs.js").TheType} TheType */

/**
 * Some doc with a link to the type {@link TheType}.
 */

Not great, as "go to definition" will take you to this typedef instead of the main one, but at least the correct type is shown when hovering.

That will cause TheType to be exported twice though (#46011). I usually just end up not linking at all in this situation, because I'd rather not have duplicate entries in my autocomplete list.

I would really love to see this too.

Linking to other symbols in JSDoc comments is super useful, but adding the import type at the top-level (to get jump-to-definition for that symbol) triggers eslint's no-unused-var rule.

Using the no-undefined-types rule from eslint-plugin-jsdoc can solve that (it'll mark the import as used for Eslint), but that rule creates the risk of a non-type-only import that's only used in a JSDoc comment being marked as used, which could lead to unnecessary/unexpected side effects in the verbatimModuleSyntax world.

Having TS default to type-only imports (with #55675) might make that less risky, except that the import in these cases won't be autogenerated (at least not from within the context of the JSDoc comment) since TS won't try to find an import to suggest when the type name is used within a @link/@see.

Today, I think the best solution is to manually alias the import to start with an _, and configure eslint to not flag variables as unused if they start with an _, but that aliasing is kinda annoying.

I think my old issue is similar to this one...
I was trying to @link a function from an imported module from node_module
Per jsdoc documentation this should be possible

Link to a module (e.g. within a @link or @see tag) using "module:moduleName". For example, "@module foo/bar" can be linked to using "{@link module:foo/bar}".

I was expecting that these comments link to the function in node_module/date-fns/format but they just render as is
/**
  * @see module:date-fns/format
  * @link module:date-fns/format
  */

+1
Why i should import it in top of the module for simple JSDoc link?


Support Columns with numeric prop values. (for simple array rows)

I'm submitting a ...  (check one with "x")
[ ] bug report => search github for a similar issue or PR before submitting
[x] feature request
[ ] support request => Please do not submit support request here

Current behavior

Setting a Column prop to a numeric value results in an exception.

TypeError: path.split is not a function
at Object.deepValueGetter (index.js:5627)

Expected behavior

Users should be able to use numeric prop values.
Reproduction of the problem

What is the motivation / use case for changing the behavior?

Some data is formatted as arrays, not a list of JSON objects. Also, this format is more efficient for large amounts of data.
Please tell us about your environment:

Table version: 6.0.2

Angular version: 2.4.5

Browser: all

Language: all

Proposal
If you don't have the time, I can work on a solution and submit a PR.
This just involves changing  deepValueGetter

See PR #494

Merged.


static call to stateful function reverts with no bytes

Description
Making a static call to simulate the result of a stateful function call reverts with no bytes i.e. bytes.length == 0, however making a static call to simulate a view/pure function call reverts with the expected bytes.
Steps to reproduce

In a hardhat project save the following contracts to SimpleStorage.sol:

// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 <0.9.0;

contract SimpleCaller {

    // call this function to simulate static call
    function staticChange(address ssAddress, uint256 _number) public returns (uint256 a)
    {
        try SimpleStorage(ssAddress).updateNumber(_number) {} catch (bytes memory reason) {
            if (reason.length == 0) { // condition is true when SimpleStorage.updateNumber function is stateful
                return (404);
            }

            a = abi.decode(reason, (uint256));
        }
    }

    // this function is called by SimpleStorage.updateNumber and reverts with the simulated number
    function updateNumberCallback(uint256 _number) public pure {
        assembly {
            let ptr := mload(0x20)
            mstore(ptr, _number)
            revert(ptr, 32)
        }
    }
}

contract SimpleStorage {
    uint256 public number;
    uint256 public square;

    function updateNumber(uint256 _number) external returns (uint256) {

        square = _number ** 2; // state changing statement; callStatic works when this line is commented out

        SimpleCaller(msg.sender).updateNumberCallback(_number);
        return number;
    }

    function setNumber(uint256 _number) external returns (uint256) {
        number = _number;

        return number;
    }
}

Save the following test script to ./test/simple.ts:

import { ethers } from "hardhat";

import { ContractFactory } from "@ethersproject/contracts";

import { deployOverrides } from "./utilities";

import { SimpleCaller, SimpleStorage } from "../types";

let _simpleStorage: SimpleStorage;
let _simpleCaller: SimpleCaller;

const deploySimple = async (SimpleStorage: ContractFactory, SimpleCaller: ContractFactory) => {
  const simpleStorage = (await SimpleStorage.deploy(deployOverrides)) as SimpleStorage;

  const simpleStorageAddress = (await simpleStorage.deployTransaction.wait()).contractAddress;

  _simpleStorage = SimpleStorage.attach(simpleStorageAddress) as SimpleStorage;

  console.log("ds 1");

  const simpleCaller = (await SimpleCaller.deploy(deployOverrides)) as SimpleCaller;

  const simpleCallerAddress = (await simpleCaller.deployTransaction.wait()).contractAddress;

  _simpleCaller = SimpleCaller.attach(simpleCallerAddress) as SimpleCaller;

  console.log("ds 2");
};

describe("SimpleStorage", function () {
  before(async () => {
    console.log("s 1");

    const SimpleStorage = await ethers.getContractFactory("SimpleStorage");
    const SimpleCaller = await ethers.getContractFactory("SimpleCaller");

    console.log("s 2");

    await deploySimple(SimpleStorage, SimpleCaller);
  });

  it("should be able to make static call", async function () {
    console.log("t 1");

    const res = await _simpleCaller.callStatic.staticChange(_simpleStorage.address, 101); // STATIC CALL

    console.log("static res:", res);
  });
});

Install and import the hardhat-ethers plugin to hardhat.config.ts
Run the test: hardhat test test/simple.ts and observe the bytes.length == 0 return value i.e. 404(0x0194) from callStatic
Comment out  the stateful statement square = _number ** 2;  in SimpleStorage.sol and observe the expected return value from the callStatic i.e. 101(0x65)
Confirm the issue is with the hedera node by spinning up a local ganache blockchain and running the test against it, configure the ganache local node in hardhat.config.ts networks and change defaultNetwork to ganache and observe the expected return value 101(0x65):

const config: HardhatUserConfig = {
  ...,
  defaultNetwork: "ganache",
  networks: {
    hedera: {
      url: "http://<IP_ADDRESS>:7546",
      accounts: [
        "0x105d050185ccb907fba04dd92d8de9e32c18305e097ab41dadda21489a211524",
        "0x2e1d968b041d84dd120a5860cee60cd83f9374ef527ca86996317ada3d0d03e7",
        "0x45a5a7108a18dd5013cf2d5857a28144beadc9c70b3bdbd914e38df4e804b8d8",
        "0x6e9d61a325be3f6675cf8b7676c70e4a004d2308e3e182370a41f5653d52c6bd",
        "0x0b58b1bd44469ac9f813b5aeaf6213ddaea26720f0b2f133d08b6f234130a64f",
        "0x95eac372e0f0df3b43740fa780e62458b2d2cc32d6a440877f1cc2a9ad0c35cc",
        "0x6c6e6727b40c8d4b616ab0d26af357af09337299f09c66704146e14236972106",
        "0x5072e7aa1b03f531b4731a32a021f6a5d20d5ddc4e55acbb71ae202fc6f3a26d",
        "0x60fe891f13824a2c1da20fb6a14e28fa353421191069ba6b6d09dd6c29b90eff",
        "0xeae4e00ece872dd14fb6dc7a04f390563c7d69d16326f2a703ec8e0934060cc7",
      ],
    },
    ganache: {
      url: "http://<IP_ADDRESS>:8545",
      chainId: 1337,
      accounts: [
        "0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80",
        "0x59c6995e998f97a5a0044966f0945389dc9e86dae88c7a8412f4603b6b78690d",
        "0x5de4111afa1a4b94908f83103eb1f1706367c2e68ca870fc3fb9a804cdab365a",
        "0x7c852118294e51e653712a81e05800f419141751be58f605c371e15141b007a6",
        "0x47e179ec197488593b187f80a00eb0da91f1b9d0b13f8733639f19c30a34926a",
        "0x8b3a350cf5c34c9194ca85829a2df0ec3153be0318b5e2d3348e872092edffba",
        "0x92db14e403b83dfe3df233f83dfa3a0d7096f21ca9b0d6d6b8d88b2b4ec1564e",
        "0x4bbbf85ce3377467afe5d46f804f221813b2bb87f24d81f60f1fcdbf7cbf4356",
        "0xdbda1821b80551c9d65939329250298aa3472ba22feea921c0cf5d620ea67b97",
        "0x2a871d0798f97d79848a013d4936a73bf4cc922c825d33c1cf7073dff6d409c6",
      ],
    },
  },
  ...
};

Additional context
No response
Hedera network
other
Version
<EMAIL_ADDRESS>Operating system
macOS

Hey @Nana-EC , I just wanted to ask if you might have an estimate on when this can be completed. It's core functionality for a component we're working on.

Hey @mshakeg we'll triage the issue and determine the scope of the issue and what a potential fix looks like.
I can't speak to a timeline estimate until then.

Hey @Nana-EC thanks for the reply. Looking forward to hearing back from you.

In Hedera and hashio for eth_call we enforce "static" semantics from the very first frame on eth_call.  Hence you should only be calling view and pure functions from eth_call.
The commented out line invokes a SSTORE operation, which triggers a revert when called in a static context.
We may adjust it when we shift eth_call to be invoked in hashio, but in the interim all eth_call calls will be static.

@shemnon thanks for providing context. My understanding was that Hedera's relay was meant to have parity with Ethereum relays(Infura, etc) which do allow static calls to stateful functions to simulate outputs. If this functionality isn't going to be implemented on Hedera in the near future that will significantly impact development as many major DApps require this functionality.
Are there any alternatives other than writing view equivalent methods of the stateful methods(which shouldn't even be considered since static calls exist to avoid doing this, but this will also result in larger contract bytecode that may exceed the ~25KB limit)?

The current support depends on running the EVM calls on the consensus nodes.  Because of the consensus interactions we can only support non-state-modifying calls.
We are working on code to bring these calls off of the consensus nodes to provide better eth_estimateGas calls. When that is ready we can remove the restriction.

@shemnon that's great to hear. #493 was opened relatively recently, so presumably work has only just begun to address that, do you have a rough estimate on when it'll be ready?

I'm not in a position to comment publicly about delivery timeframes.

Hey @Nana-EC seems like little progress has been made on this issue in HIP-584, as attempting an eth_call on SimpleStorage#setNumber returns:
{
  "code": -32008,
  "data": "ILLEGAL_STATE_CHANGE"
}

You can run the hardhat-example test:ss and test:ss:previewnet scripts on my fork to demo the discrepancies between the hardhat node and the hedera previewnet.

Hey @Nana-EC not sure if Github notified you of my last comment. Could you please link the issue that tracks this feature? I couldn't find any related issue on the mirror node. I'm assuming there is as this falls within the scope of HIP-584.

Hi @mshakeg HIP 584 development is in progress and we're working towards this.
We'll circle back with a ticket to track this or an update.

Hey @mshakeg can you confirm your flows are addressed with the improvement in the 0.83 version of the mirror node which is in testnet. As Ivan K mentioned non system contract flows should work now for dynamic functions

Hey @Nana-EC I just confirmed that it works with my simple test:ss script. I'll re-open it if I get issues on my more complex use case.


Fix SimpleTableError and 500 error when finishing outline without wei…

…ghts and outline time

Codecov Report

Merging #300 (df4ab5e) into master (4040a4a) will decrease coverage by 0.05%.
The diff coverage is 0.00%.

@@            Coverage Diff             @@
##           master     #300      +/-   ##
==========================================
- Coverage   87.71%   87.66%   -0.05%
==========================================
  Files          80       80
  Lines        5649     5652       +3
==========================================
  Hits         4955     4955
- Misses        694      697       +3

Flag
Coverage Δ

unittests
87.66% <0.00%> (-0.05%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

base/views/outline_initial_views.py
82.25% <0.00%> (-0.60%)
:arrow_down:


Removing highlight from line numbers

Is there a configuration or something that can be passed to remove the light color in gutter area hosting line numbers.
I prefer having a flat look, where it blends with the editor area background color.
Currently:

Solved:

Thanks for the good port pal!

How exactly did you achieve that? I'd like to have that too

How exactly did you achieve that? I'd like to have that too @sameer1612

Here's the piece you need to add:
https://github.com/oahlen/iceberg.nvim/issues/4#issuecomment-2212390128


Event rule "Terminal shell in container" produces multiple duplicates

Describe the bug
The rule "Terminal shell in container" is triggered multiple times, when only one terminal shell is started. If I execute into a container, I receive several alerts, instead of only one.
How to reproduce it
When I ppen a shell in a container I get the alert x5 (sometimes more) times
Expected behaviour
Get only one alert
Screenshots

Each group of alerts is from a single terminal execution

Environment

Falco version:
0.37.0
System info:
System info: Linux version 5.15.0-1057-azure (buildd@lcy02-amd64-033)
Cloud provider or hardware configuration: AKS
OS:
Debian GNU/Linux 12 (bookworm)
Kernel:
5.15.0-1057-azure
Installation method:
community helm chart

Additional context
I have installed falco and falcosidekick in my Azure Kubernetes cluster. Falco is outputting alerts to a slack channel. The other rules are triggering as expected, but the "Terminal shell in container" is triggered several times, even though a single shell was opened in the container.
The previous issue #1854 was closed without a solution. Can anyone please address this? I would like to deploy it to production, but this issue is currently blocking me from doing so.

Hi,
How do you start the shell? With a kubectl exec or else? I did some tests, with an AKS cluster and I replicate the behavior, if I start a shell from  k9s, if I use kubectl exec I got only 1 alert.
 I don't know what k9s does exactly.

Hi,
Yes, it seems like the behavior is caused by k9s after all. I can't replicate it with kubectl exec.
Thank you very much for your help!


Add Menu component to Showcase

There is already an implementation of Menu, but I have not taken the time to create a page for it in the showcase.
Desired outcome:

Add a Menu page to the showcase
Replicate as much functionality as shown in https://ant.design/components/menu/ with the current Elm Antd API

I would like to work on this next.

Go for it!


WithdrawOffer missing from InventoryService

The withdrawOffer method and corresponding request and response types seems to be missing from InventoryService.
WithdrawOffer docs

Hello, ETA about this?

I'll try and get this done over the weekend. I've been caught up with other things and shouldn't have left this for the time that I have, so I apologize for that.

Hi, no problem. I've added a pull request to help with this task if you prefer


CLV lower than monetary_value

Hi,
I'm using customer_lifetime_value to calculate CLV and I get RMSE of ~0.4 (which I think is good). The problem is that I found users that have CLV lower than monetary_value. I have 2 questions:

Is CLV total revenue or average (my guess is total as it fits real life results better).
If #1 is true then how is it possible that I get CLV < monetary value.

*** I put monetary_value to be average revenue (total_revenue / days_in_data).
Thanks!

In this library, (prior) monetary_value is the average of total previous revenue divided by the number of purchases the customer has made.
And CLV is the total amount the customer is going to spend after a set date. CLV is not the sum of previous monetary value with the future, predicted one. There is no mandatory condition in reality that would make someone necessarily spend more money in a store than they already have.

Thanks @psygo
So I got everything wrong ;)
A couple of followup questions:

If I use data for 2 months and predict 2 months with discount=0, should I expect total revenue to be the same?
What are the best suggested ways to test the results?
What parameters can I change to improve results? (If any)

Thanks!

@refaelos, with respect to your questions:

Nope. I don't know what you're thinking about the discount variable but it's simply some kind of inflation or interests compensator, nothing much. Training your model on the first 2 months will make it recognize monetary_value. Predicting (testing) it on the rest of the data will make it calculate CLV for the same clients for the next, say, 2 months. monetary_value and CLV can yield totally different numbers, their sum can is within [monetary_value, +infinity], depending on what the model learns.
There are tons of graphs that help in the visual validation, which are also demonstrated in the main tutorial of the library. As you mentioned, RMSE is also a good metric, which was unfortunately not implemented.
The simpleste parameters that come to my mind are: the penalizer_coef of the model (don't go too high, keep it under 1 for example); the date in which the separation between training and testing occurs.

In this library, (prior) monetary_value is the average of total previous revenue divided by the number of purchases the customer has made.
And CLV is the total amount the customer is going to spend after a set date. CLV is not the sum of previous monetary value with the future, predicted one. There is no mandatory condition in reality that would make someone necessarily spend more money in a store than they already have.

When calculating the monetary_value using summary_data_from_transaction_data is seems like the first transaction is left out.
https://github.com/CamDavidsonPilon/lifetimes/blob/master/lifetimes/utils.py#L296
If that's the case, why is that so?

In this library, (prior) monetary_value is the average of total previous revenue divided by the number of purchases the customer has made.
And CLV is the total amount the customer is going to spend after a set date. CLV is not the sum of previous monetary value with the future, predicted one. There is no mandatory condition in reality that would make someone necessarily spend more money in a store than they already have.

When calculating the monetary_value using summary_data_from_transaction_data, it seems like the first transaction is left out.
https://github.com/CamDavidsonPilon/lifetimes/blob/master/lifetimes/utils.py#L296
If that's the case, why is that so?

Never mind. I just realised that the model assumes that the value of the first transaction is 0.


DataBase creation error

There was an error while trying to connect to the host or while executing a query: "SQLSTATE[HY000] [2002] Connection refused (SQL: SELECT 1 FROM dual)" I get this when I try to add the database inside the panel after the script is finish installing
I press [1] on the firewall setup on both of them, its happends on ubuntu 18.04 and 20.04

I can reproduce this bug. Seems like this is caused by the unix_socket_authentication on newer versions of MariaDB. I will attempt to fix this in the next couple of days.

I am having the same problem unfortunately. Any solutions?

 It worked for me

All that does is bind the port, not bypass the firewall.

Will see if i can reproduce and patch this.

Fixed in #8 and #9


Set ThreadPool as default executor

There are many workflows that require interweaving async and non async (CPU intensive) blocking code. These cannot each be split up into separate tasks because there are locally stored files involved. The best solution is thus to offload the blocking tasks to the executor so as to not block the asyncio loop.
If I understand correctly, each worker process starts a ThreadPoolExecutor in which sync tasks are run. Being able to access this thread pool instead of making another one would be ideal. Currently we are working around this by having a custom receiver, accessing the instance of the threadpool and storing the reference in the application state.
from taskiq.receiver import Receiver

class CustomReceiver(Receiver):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        # Store the executor in the broker's state for global access
        # This allows us to run CPU-heavy code on the workers
        # without blocking the asyncio loop
        self.broker.state.executor = self.executor

But I believe a much better solution would be to simply set the created threadpool as the default executor for the asyncio loop so it can be used without passing the reference around:
with ThreadPoolExecutor(args.max_threadpool_threads) as pool:
    loop = asyncio.get_event_loop()
    loop.set_default_executor(self.executor)

await asyncio.get_running_loop().run_in_executor(None, func)

Or in addition / at the minimum allow us to get the instance of the executor from the API.

In fact, it doesn't seem like a good idea to have more than one thread in that threadpool if all it is used for is genuine CPU-intensive sync tasks, provided IO tasks are run with asyncio.
As far as I can tell, the default of having many threads in a thread pool predates the widespread use of asyncio. If you are only doing blocking tasks on threads, due to the GIL, it is counter-productive to have more than one thread, and using the --workers options with multiprocessing should instead be used to match the CPU count.

https://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.ThreadPoolExecutor

I agree that adding the ability to reuse the pool is a good addition to the API. However, I disagree with the suggestion that the default thread pool size should be set to 1. The Global Interpreter Lock (GIL) in Python only prevents multiple Python bytecode instructions from running concurrently in the same process. In most cases, when performing calculations, you'll be using libraries like numpy or similar, which are written in C or C++ and operate in native extensions. Since these libraries perform their computations in C, the GIL is not a bottleneck during execution. Here's a small benchmark:
import time
import asyncio
from concurrent.futures import ThreadPoolExecutor

def my_sync_task():
    sum = 0
    for _ in range(50_000_000):
        sum += 1

async def my_async_task(tp: ThreadPoolExecutor):
    loop = asyncio.get_running_loop()

    task1 = loop.run_in_executor(tp, my_sync_task)
    task2 = loop.run_in_executor(tp, my_sync_task)
    await asyncio.gather(task1, task2)

async def test_run(workers: int, tasks: int):
    with ThreadPoolExecutor(max_workers=workers) as tp:
        start = time.monotonic()
        await asyncio.gather(*[my_async_task(tp) for _ in range(tasks)])
        print(f"Time taken: {time.monotonic() - start}")

async def main():
    await test_run(10, 5)
    await test_run(1, 5)

if __name__ == "__main__":
    asyncio.run(main())

When executing this code, the GIL will actually slow down the program, so the execution time for both cases will be almost the same:
Time taken: 15.220620960004453  # With 10 workers and 10 sync tasks running.
Time taken: 14.688892211997882  # With 1 worker and 10 sync tasks running.

[!NOTE]
I have an AMD Ryzen 5 7530U @ 4.546GHz, so you might need to adjust some values to get the similar execution speed.

Now, let's modify the test to replace my_sync_task with something that offloads calculations to a native extension, like numpy:
import numpy as np

def my_sync_task():
    rand = np.random.default_rng()
    a = rand.integers(1, 100, size=(1300, 1200))
    b = rand.integers(1, 100, size=(1200, 1300))
    c = a @ b # Perform a big matrix multiplication

In that case GIL will only impact parts of the library that are written in Python and sending data between the interpreter and native extension. Here are results:
Time taken: 7.917032391997054  # With 10 workers and 10 sync tasks running.
Time taken: 20.60293159300636  # With 1 worker and 10 sync tasks running.

Although it's not as fast as one might expect (due to tasks sharing the CPU and the data transfer overhead between Python and C++), you can see a significant improvement when using multiple workers.
So, I would say that setting the worker count to 1 will generally decrease performance, especially for CPU-bound tasks that rely on native extensions. Even when using Python code, there's often little to no difference between having 1 or n threads in the pool.
But to give more flexibility to TaskIQ I would really like adding an ability to set custom executors.
To do so, I suggest the following:

Add broker field that holds a reference to an executor (ThreadPoolExecutor by default).
Add a method like with_executor that will be able to set an executor to something else.

In that case:

it will be a super easy to get the executor from a broker.  Because you can get it from a broker's field like broker.sync_executor
You can set it explicitly during broker creation. Like:  broker = Broker().with_executor(ThreadPool...)
You can set it to None, to use default (global) executor.
You can set global executor during broker's startup.

What do you think?

It is probably best to allow the users to change / set and access the Executor, and document that as a feature. You can then have the default amount of workers equal to the number of CPUs on the system (e.g. via multiprocessing.cpu_count()). This would allow for the most flexibility in use-cases.

when performing calculations, you'll be using libraries like numpy or similar, which are written in C or C++ and operate in native extensions

This is actually a big assumption and not really reflected in what one would expect from a worker library for Python. For a particular example I am working on, I am going through PDFs with pdfium, which does not release the GIL, despite it using an underlying C library, meaning it is effectively CPU-intensive to the main Python process.  To best utilise the CPUs, I set the main Taskiq ThreadPool to 1 worker, and then made a separate ThreadPool which # CPUs as the # of workers, on which I schedule the tesserocr tasks, and then await all of them. This means there is only ever at most # CPUs' worth of Python threads running, since the main pool can only run one task, and it is waiting on results from the other pool before continuing.
If one schedules a bunch of truly CPU-intensive sync tasks on the main Taskiq executor (not releasing the GIL), it is very easy to end up with degraded performance as it keeps context-switching between the various threads. This is not obvious from a user perspective and a common pitfall. Additionally, depending on how the tasks get distributed to workers, it is easy for one worker to pick up multiple sync tasks that it then can't truly run in parallel, instead of them getting spread out over other workers which can do the sync work. Of course, none of this apply to just asyncio tasks.
In light of this, I believe there is still a case for setting the default sync threads to 1, or at the very least documenting the trade-offs in detail.


Add hashcode and equals to value

This simplifies testing, as one can compare Values like this:
expect(Value(1), Value(1));

Or a realistic example:
final capturedArgument = verify(fooDao.insert(captureAny)).captured.first.createdAt;
expect(capturedArgument, Value(DateTime(0)));

A test is still missing which would look something like this:
test('value support hash and equals', () {
  const first = Value(0);
  final equalToFirst = Value(0);
  const different = Values.absent());

  expect(first.hashCode, equalToFirst.hashCode);
  expect(first, equals(equalToFirst));

  expect(first, isNot(equals(different)));
  expect(first, equals(first));
});

I'm not sure where the test is supposed to be.

Thanks for this!

I'm not sure where the test is supposed to be.

You can put it into moor/test/data_class_test.dart (or make a new test file, but I'm not sure if that's worth it in this case).

Looks good now, thanks!


fix: avoid early error when server is closed in ssr

Fixes #13735
Fixes #13786
Closes #13767
Description
Throwing an error during SSR would force the users to handle it on every call to ssrLoadModule. What is safer long term is something we should discuss for Vite 5. At least for 4.4 (and I'm leaning towards this approach for 5 too), it is better to avoid the error during SSR. The only reason it was added was to speed up server restart. During SSR, the requests should be fast enough.

What is the purpose of this pull request?

[x] Bug fix
[ ] New Feature
[ ] Documentation update
[ ] Other

/ecosystem-ci run