Question about WebSocketConnectionPtr::send

Hi,
I'm wondering if WebSocketConnectionPtr::send is a blocking method?
This is of an interest since I'm interested in understanding how would a websocket server implemented with Drogon cope with sending large amount of data to multiple connections, some are slow and some are fast?
If the send method does not block and can be queued on any i/o thread in the event loop, is there a way to tell when it completed?
Thank you in advance.

That's good to know.
Looks like the underlying TcpConnectionImpl::queueInLoop method will enqueue the formatted message until it is sent out. Does this queue have a capacity limit?
The reason it would be nice to have a send completion callback is to avoid a situation of overflowing or expanding this queue without a limit by avoiding additional transfers until the current one completed.

We can do this by adding a new send method with a callback parameter. This callback can only indicate that the message has been emptied from the application's queue. As for whether it has been received by the client, the user needs to add a receipt message at the application layer to know that.
IMHO, the messages sent on the websocket generally only serve as prompts or notifications. These messages are very short and should not cause serious problems even if no callback is added. @rbugajewski, @marty1885 what do you think about this?

I think a hook after dequeue is nice, and won’t hurt, especially if it is just an alternative to the non-callback method, but as @an-tao already mentioned this will give us only Drogon-internal information, as it is inherent to WebSocket to ignore some state.

Thank you both.
In my application, I am streaming data from a server connected to some hardware in chunks of ~64KB and as fast as the client can consume.
Correct me if I'm wrong, but isn't one of the ideas behind a websocket is guaranteed data transfer?
Wouldn't a dequeue callback guarantee that the socket isn't flooded? Otherwise, is custom flow control the only way to throttle the connection?

Correct me if I'm wrong, but isn't one of the ideas behind a websocket is guaranteed data transfer?

I’m not sure if we are on the same line of understanding here, but WS will basically give you no guarantees whatsoever. You would need to introduce it as some custom protocol on top of it.

Wouldn't a dequeue callback guarantee that the socket isn't flooded? Otherwise, is custom flow control the only way to throttle the connection?

 In my opinion the callback could only help to empirically test the limits of the clients, and then to manually throttle.

Let me try to rephrase: how do I know if a call to WebSocketConnectionPtr::send actually sent the data or not?

Let me try to rephrase: how do I know if a call to WebSocketConnectionPtr::send actually sent the data or not?

This would be doable by adding a send method with a callback as @an-tao already mentioned.

No, WebSocketConnectionPtr::send method doesn't block the current thread. Because of the complecation of network transporting, it hard to know when the data is sent completely to clients if there is not any application layer ack messages received. Drogon can ensure that messages are corractly sent to clients if no brocken occurs on the connection.

Does send() copy? Is the following code safe?
size_t len = -1;
char* data = new char[len];
/* Populate the data */
conn->send(data, len);
delete[] data;

Does send() copy? Is the following code safe?

It may or may not depending on if you are calling send() on the same thread as the client is bounded to. But in any case. We ensure that you can delete the data after calling the function.

But in any case. We ensure that you can delete the data after calling the function. (If we need it, we'll make a copy internally

Thank you for clarifying, was good until it got to the last part, how does drogon determine whether a copy is needed?


UserWarning: object dtype is not supported by sparse matrices   warnings.warn("object dtype is not supported by sparse matrices")

In the doc when executing feat_selector = qd_forest.fit_selector_model(df) this warning appears

duplicate of #20


Support monitoring TCP services

Not all services are web based - but they can be checked fairly simply (i.e. see if they're at least running) by opening a TCP socket. If the socket opens successfully, the service is considered online.
This is crude - but at least opens the door to monitoring applications which are not based on HTTP.
This is pretty similar to this request: https://github.com/TwinProduction/gatus/issues/5 but should be a lot more generic.

I'm all for it, but however, I'm a little perplexed by the following statement:

If the socket opens successfully, the service is considered online.

If the socket opens successfully, it just means that there's something listening on that port at the host specified, it doesn't necessarily mean that the service is healthy.
The code for this is quite simple, in fact:
conn, err := net.DialTimeout("tcp", "<IP_ADDRESS>:6379", 10 * time.Second)
if err != nil {
	// couldn't open connection :(
	panic(err)
}
fmt.Println("Managed to open connection successfully :)")
conn.Close()

But this is the least of our concerns, as the biggest concern lies with the conditions themselves. To be perfectly frank, the idea of supporting non-http requests hadn't even crossed my mind when I started Gatus, and which the fault lies entirely with me on this one, it doesn't change the fact that we need to ask ourselves how can we support both the new pattern you're suggesting as well as HTTP.
Let's take a look at the current core configuration options:
services:
  - name: twinnation
    url: "https://twinnation.org/health"
    interval: 30s
    conditions:
      - "[STATUS] == 200"
      - "[BODY].status == UP"
      - "[RESPONSE_TIME] < 300"

We can already see a few problems here, namely the conditions and the url:

A few of the conditions use placeholders that are specific to HTTP requests, such as the [BODY], which uses JSONPath, and [STATUS], which is the HTTP status.
The URL is, well, an URL, but TCP doesn't really care about URL, it only cares about the host name and the port.

Suggested solution
Coupled with forcing the prefix tcp:// for tcp services and http:///https:// for HTTP services,
ignoring unnecessary placeholders are configuration options would definitely make the work easy.
I will introduce a new placeholder, [CONNECTED], which will return true only if a connection could be established.
It will work for both TCP and HTTP - probably UDP in the future too.
Here's what the configuration for a TCP service would look like:
services:
  - name: redis
    url: "tcp://<IP_ADDRESS>:6379"
    interval: 1m
    conditions:
      - "[CONNECTED] == true"

Of course, quite a few fields will be useless for TCP services, such as services[].body, services[].insecure,
services[].headers, services[].method and services[].graphql. Likewise, the [STATUS] and [BODY] placeholders will be useless.
I originally wanted to create a new top level field tcpServices[] instead of services[] just for TCP services, but then I realized that later on, if we want to add support for native MySQL query, UDP, native Redis commands, etc. it would require adding one new top level field for each of them.
Instead, leveraging the prefix of the services[].url should be enough even for future use case, i.e.:

tcp://<IP_ADDRESS>:6379
redis://<IP_ADDRESS>:6379
postgres://{user}:{password}@{hostname}:{port}/{database-name}

In any case, I've already started the work necessary and it'll be available shortly.

@dchidell I've pushed this into latest. Would you mind giving it a try locally and telling me what you think before I release this in v1.2.0?

Tested it using the latest docker tag, and looks good to me! Thanks for getting that in, SUPER fast as well.
To your above point regarding if the service is listening / healthy - there are almost limitless ways to test if a TCP service is healthy / functional, but while checking the TCP port is crude, it's often effective (i.e. the service hasn't crashed, and is at least configured to listen on the right port). It's a good indicator if something is likely to work or not without delving into the complexity of different services.
I don't think this will work for UDP based services, since there's no socket to 'establish' as you get with TCP using the 3 way handshake. I think you'd have to end up building a mechanism to send a particular byte string, and then expecting some form of response depending on the service type. For TCP however, this works beautifully :)

For UDP, I was hoping to just send something and accept any answer as a valid answer, or perhaps support services[].body as what to write. Anyhow, one problem at a time 🤣
Thanks for your input! I'll release this in v1.2.0, probably today

Released in v1.2.0


Please create possibility to pass containerStyle prop through List to Grid

Grid Component have prop which pass styles to inner cell-container -
"ReactVirtualized__Grid__innerScrollContainer"
I'm sure that small fix wouldn't break anything - it's just optional prop.

This is already being done by this line :smile: List passes through all unknown props to Grid


Question
I observe that when a page contains 100+ images that get loaded with lazyload the browser starts to stutter when scrolling down while more images are getting loaded.
Is this a known issue? Or what else could be the reason?

Not a known issue.
It could depend on many reasons, if you could link a page where this is developed and visitable, I can take a look at that and give you some advice. If you can't, please post some of your html, css and js code here.

OK, I made our test environment public, but in order to see the effect, you have to login on the top right with stackoverflow / stackoverflow (un / pw).
When logged in, open this page which has about 130 lazy loaded thumbnail images.
If you scroll down, you will notice the stuttering.
http://test.zwischengas.com:8380/de/VC/veranstaltungsberichte/Grossglockner-Grand-Prix-2013-auf-den-Spuren-der-alten-Helden.html?gallery=on
Thanks for any advice.

Any updates on this? I have to close the test environment otherwise soon again. Thanks for a quick note.

Hi @baszero. For what I could see on your website, the problem is not due to LazyLoad but to the layout of the website. Try to avoid using HTML tables to layout the images, because it seems very CPU-consuming when a repaint occurs.
I also notices that the Chrome/Opera inspector hangs/crashes when I tried to inspect an image. This must be due to a CPU issue. Try to use the "profile" tab in the inspector to find out where your problem is.

Thanks for that quick analysis. I will change the layout. But if the performance issues are still there, I'll get back to you :) I will replace the table by left-aligned floating divs.

Hi Verlok, you might want to look into this again,
but I did use the PROFILE now and I see that lazyload is causing the delays!
See screenshot:

Good to know. I'll definitely check this out.

Can you please make your test environment available again?

Ok then, I've worked on it, used the profiler and found some performance issues, which I addressed and resolved in the latest version of LazyLoad, the recently released 4.0.2.
I also created a demo with 320 images to test it and make sure that the performance issues are gone.
Please test it on your website and let me know if this can be closed again.
Important note: since version 4.0.0 the script only supports IE 10+.

Ok, I will test it. However the IE10+ restriction is a big impact for us, have to decide whether we can use it.
Where do I see the version? In the dist folder there aren't any versions... Would be great to see version directories in the dist folder (e.g. v3.8, v3.9, v4.0 etc)

Question: I will use the latest version in the dist folder, is that the latest too? Have they been updated with 4.0.2?

Hi, I'm using GitHub's semantic versioning, so you can choose the version in the releases page.
You're right, IE10+ can be a storng restriction in terms of backward compatibility, but it's now a standard not to support IE older than that. See browser stats for november / december 2016 for desktop computers.

Can I close this @baszero?

Psst: have you already starred this repo? All you need to do is to press the Star ★ button on the top right corner of the website. ;)


Implementation example

Can you please provide an example.
README is out of date.

Looks like there is an updated example in test/src/ecdsa/main.mo


Exception information isn't passed through to context.with_resource managed resources

When writing a simple tool with a bunch of commands updating a database, I was using a context manager in each command that would begin a transaction, and then commit it on success, or rollback on error.
Initially, I thought I'd be able to avoid some boilerplate on every subcommand by adding the session as a managed resource via ctx.with_resource(context_manager).  However, while this works in the success case, it will also commit the transaction if an unexpected exception occurs, since the exception information doesn't seem to be being passed through to the context manager.
Eg. given the below context manager:
class TestContextManager:
    def __enter__(self):
        print("ENTER")

    def __exit__(self, exc_type, exc_val, traceback):
        print("EXIT", exc_type, exc_val, traceback)

Using it in a regular context manager via:
with TestContextManager():
    raise Exception()

will correctly print the exc_type, exc_val and traceback parameters when an exception occurs.  But using it via:
@click.group()
@click.pass_context
def cli(ctx):
    ctx.obj = ctx.with_resource(TestContextManager())

These will always be None, and so any context manager that needs to act differently on the occurrence of an exception vs success will always treat this as success.  (And likewise, try/except blocks will never trigger in function-style ones using the @contextmanager decorator.)
Would it be possible for the exception information to be passed through to managed resources so that context managers that treat success/failure cases differently operate correctly?
Environment:

Python version: 3.10.9
Click version: 8.1.3

I came across this issue too and asked about it on StackOverflow here (in my case, I'd like to print exception tracebacks to a file, and prevent them from printing to stderr). The solution offered was to override Context.__exit__ so it forwards on the exception information:
class MyContext(click.Context):
    def __exit__(self, exc_type, exc_value, tb):
        self._depth -= 1
        if self._depth == 0:
            self._exit_stack.__exit__(exc_type, exc_value, tb)
            self._exit_stack = contextlib.ExitStack()
        click.core.pop_context()

cli.context_class = MyContext

For reference, the current implementation of Context.__exit__ is essentially:
def __exit__(self, exc_type, exc_value, tb):
    self._depth -= 1
    if self._depth == 0:
        self._exit_stack.close() # equivalent to: `self._exit_stack.__exit__(None, None, None)`
        self._exit_stack = ExitStack()
    pop_context()

So it seems this would be a minor change to fix; although I have no idea if it would have undesirable side effects.


Update README.md

Fixed grammar and punctuation in the first couple of sentences.
Please note that for legal reasons we require you to sign the
Contributor Agreement
before we can accept your pull requests.

good spot @TimF2004 ;
Please note that we require a Apache 2 CLA for ArangoDB, which can be found here: https://www.arangodb.com/documents/cla.pdf
We have not been able to set of an electronic system yet. Can you sign, scan and email it to cla (at) arangodb.com?
Thanks a lot
Willi

Signed and sent


LogMergePolicy set_max_merge_size not being respected

Describe the bug

What did you do?
Configured the LogMergePolicy with max merge size and inserted 38M documents with a single final commit in the end.

let writer = index
    .writer(1024 * 1024 * 1024)
    .expect("failed to create writer");

let mut policy = tantivy::merge_policy::LogMergePolicy::default();
policy.set_max_merge_size(3_000_000);

writer.set_merge_policy(Box::new(policy));

What happened?

Multiple 1M document segments merged into 9M document segments and two 9M document segments merged into a ~ 18M document segment

What was expected?

The expected behavior was that no segment larger than 3M documents would be merged. As an aside, the desired behavior for my use case was to limit the maximum size of a segment to 3M documents in order to have enough segments to optimize parallelism.
Which version of tantivy are you using?
If "master",  ideally give the specific sha1 revision.

Some bugs are not deterministic. Can you describe with precision in which context it happened?
If this is possible, can you share your code?
The time required to reindex all documents is not trivial so no attempt was made to reproduce the bug

@andrebsguedes Thank you for the bug report... We will investigate.

@PSeitz  can you have a look at this?

Thanks for the report, should be fixed with https://github.com/tantivy-search/tantivy/issues/1035


[Docs Bug 🐞 report]: Links in main readme files are dead

Describe the bug you found in AsyncAPI Docs.
There are multiple links dead in https://github.com/asyncapi/generator#cli-installation
Attach any resources that can help us understand the issue.
None
Code of Conduct

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

true, should point to https://github.com/asyncapi/generator/blob/master/docs/installation-guide.md
other links for usage and versioning are also wrong, they are missing docs/ prefix
/gfi docs

/help

/gfi docs

@jonaslagoni hey👋,how did I find all links? Is there any specific location where all links are available?

Hello, @Amishakumari544 all the links can be found in the docs folder here 👉🏿https://github.com/asyncapi/generator/tree/master/docs. You'll need to add the /docs prefix to the broken links as mentioned by Lukasz above. For example, currently, clicking the installation guide points to: https://github.com/asyncapi/generator/blob/master/installation-guide.md. After your updates, the new link should look like this: https://github.com/asyncapi/generator/blob/master/docs/installation-guide.md.

cc @derberg @Florence-Njeri @jonaslagoni


refactoring of repeater package + add trace.Driver.OnRepeaterWakeUp e…

…vent
I hereby agree to the terms of the CLA available at: https://yandex.ru/legal/cla/?lang=en

Pull request type

Please check the type of change your PR introduces:

[ ] Bugfix
[x] Feature
[ ] Code style update (formatting, renaming)
[x] Refactoring (no functional changes, no api changes)
[ ] Build related changes
[ ] Documentation content changes
[ ] Other (please describe):

What is the current behavior?

Issue Number: N/A
What is the new behavior?

Other information

Codecov Report

Merging #147 (00862d3) into master (dd3e376) will decrease coverage by 0.13%.
The diff coverage is 0.00%.

@@            Coverage Diff             @@
##           master     #147      +/-   ##
==========================================
- Coverage   26.02%   25.88%   -0.14%
==========================================
  Files          62       60       -2
  Lines       10091    10095       +4
==========================================
- Hits         2626     2613      -13
- Misses       7297     7316      +19
+ Partials      168      166       -2

Flag
Coverage Δ

1.14.x
25.88% <0.00%> (-0.07%)
:arrow_down:

1.15.x
?

1.16.x
?

1.17.x
?

macOS-latest
?

ubuntu-latest
25.88% <0.00%> (-0.12%)
:arrow_down:

unit
25.88% <0.00%> (-0.14%)
:arrow_down:

windows-latest
?

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

Impacted Files
Coverage Δ

trace/driver.go
0.00% <ø> (ø)

trace/driver_gtrace.go
0.00% <0.00%> (ø)

internal/table/client.go
86.10% <0.00%> (-1.21%)
:arrow_down:

cmd/gtrace/internal/test/test_gtrace_windows.go

...d/gtrace/internal/test/test_gtrace_darwin_amd64.go

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 dd3e376...00862d3. Read the comment docs.


New directline js update tries to render non message type activities

Hello everyone, im having this message when i send a custom message type to our backend (passing thru directline)

Steps to reproduce

Have a cdn base webchat
Use DirectLine to send a custom activity
Result: Error appears and then the message from backend bot
Expected Result: Nothing but the response from the backend bot should render

Code
    var dl = (<any>window).WebChat.createDirectLine({ secret: 'MySecret c:' });

    (<any>window).WebChat.renderWebChat({
      directLine: dl,
      userID: this.userProvider.getUserId(),
      resize: 'detect'
    }, (<any>document).getElementById('bot'));

    dl.postActivity({
      from: {
        id: this.userProvider.getUserId(),
        name: this.userProvider.getUsername()
      },
      name: 'requestWelcomeDialog',
      type: 'requestWelcomeDialog',
      value: ''
    }).subscribe(function (id) {
      console.log('"trigger requestWelcomeDialog" sent');
    });

@Dongata sorry, but this is expected behavior.
For custom activities, we always recommend using activity type of event with a custom name and value property. This guarantee the behavior to works consistently across multiple channels.
You can find a list of activity types that are officially supported in this article, https://docs.microsoft.com/en-us/azure/bot-service/rest-api/bot-framework-rest-connector-activities?view=azure-bot-service-4.0.
For activities with unsupported type, like requestWelcomeDialog in your case, from what I heard from the channel team, the channel is not guaranteed to deliver them to its client (Direct Line and Web Chat).
To disable the warning prompt, you can follow the sample here:

Pass an additional activityMiddleware to Web Chat
If card.activity.type is requestWelcomeDialog, return false

Else, pass it to the next middleware by return next(card);


Support repos mounted with trailing @

Currently our convention is to mount repos with a leading @ character.    There is some pressure to change this to a trailing @.     We should generalize the few points that currently strip @ to strip off leading and trailing @.   Then, if someone really prefers the alternative convention, they can always modify their own mepo config file.

This is probably not too hard. Something like:
string(REPLACE '@' '' foo ${foo})

could do it (assuming no future components will have an @-symbol in the middle).
The problem is changing CMakeLists.txt files throughout the repositories in every add_subdirectory() and esma_add_library() call as well, e.g.:
esma_add_subdirectories (
  @MAPL
  @GMAO_Shared
  @NCEP_Shared
  @GSW
  )

# Special case - FMS is built twice with two
# different precisions.
add_subdirectory (@FMS fms_r4)
add_subdirectory (@FMS fms_r8)

I think the idea in the short term will be to modify the esma_add_subdirectories() implementation.   It should strip any @ chars from the argument "foo" and then check for directories named  "foo"  "@foo" and "foo@" and add the first of those that it finds.
We can then at our leisure remove the @'s in the various components.
Note:  Ricardo wants to eliminate them entirely, though mostly because tab complete is not working for him.   He may not be opposed to trailing ones.    I really don't care so long as there is a consensus and we don't go back and forth.   Existing was a proposed solution.   Pushback is the change.  And then we hold the line.


Application directly closes on back pressed

Describe the feature you'd like
Application directly closes on back pressed. If an user clicks the back button unintensionally then the application is terminated . A small dialog box can fix this issue.
Would you like to work on the issue?
Sure

We might not need this

But you might have seen this feature in many apps where it is used to avoid unexpected back clicks. Isn't it?

Yes, non standard apps. If you made a mistake, you can go back to the app using switcher in 2 clicks. We'll be making users deliberately click twice who want to exit the app. Why can't people who made a mistake click twice?

No worries. Thanks for quick look.

But one thing I have observed is that our app is missing the flow.
There is no home menu. I consider create badge to be home menu.
So if someone clicks back from eg. Settings fragment ideally they should land to home menu.
But in our current situation if one clicks back from any fragment the app is closed.
Is this expected behaviour? I believe there should be a home menu.


error: failed to run custom build command for utxo-runtime v2.0.0-alpha.5

At around the 15 minute mark of the tutorial video, we were asked to run
cargo check -p utxo-runtime

However, an error occurs half way through the compilation process:
error: failed to run custom build command for `utxo-runtime v2.0.0-alpha.5 (/home/athena/utxo-workshop/runtime)`

Caused by:
  process didn't exit successfully: `/home/athena/utxo-workshop/target/debug/build/utxo-runtime-770daab2e5a3b297/build-script-build` (exit code: 1)
  --- stdout
  Executing build command: "rustup" "run" "nightly" "cargo" "rustc" "--target=wasm32-unknown-unknown" "--manifest-path=/home/athena/utxo-workshop/target/debug/wbuild/utxo-runtime/Cargo.toml" "--color=always" "--release"

  --- stderr
     Compiling wasm-build-runner-impl v1.0.0 (/home/athena/utxo-workshop/target/debug/wbuild-runner/utxo-runtime13178774267024377957)
      Finished dev [unoptimized + debuginfo] target(s) in 0.47s
       Running `/home/athena/utxo-workshop/target/debug/wbuild-runner/utxo-runtime13178774267024377957/target/debug/wasm-build-runner-impl`
     Compiling frame-support v2.0.0-alpha.5
  error[E0424]: expected value, found module `self`
     --> /home/athena/.cargo/registry/src/github.com-1ecc6299db9ec823/frame-support-2.0.0-alpha.5/src/traits.rs:835:11
      |
  833 | / bitmask! {
  834 | |     /// Reasons for moving funds out of an account.
  835 | |     #[derive(Encode, Decode)]
      | |              ^^^^^^ `self` value is a keyword only available in methods with a `self` parameter
  836 | |     pub mask WithdrawReasons: i8 where
  ...   |
  851 | |     }
  852 | | }
      | |_- this function has a `self` parameter, but a macro invocation can only access identifiers it receives from parameters
      |
      = note: this error originates in a derive macro (in Nightly builds, run with -Z macro-backtrace for more info)

  error: aborting due to previous error

  For more information about this error, try `rustc --explain E0424`.
  error: could not compile `frame-support`

  To learn more, run the command again with --verbose.

Tried running
rustup toolchain install nightly-2020-07-12
cargo +nightly-2020-07-12 build --release

but the error did not go away.
What should we do to fix this?
$ rustup show
Default host: x86_64-unknown-linux-gnu
rustup home:  /home/athena/.rustup

installed toolchains
--------------------

stable-x86_64-unknown-linux-gnu (default)
nightly-2020-07-12-x86_64-unknown-linux-gnu
nightly-x86_64-unknown-linux-gnu

active toolchain
----------------

stable-x86_64-unknown-linux-gnu (default)
rustc 1.46.0 (04488afe3 2020-08-24)

me too

I figured out the issue comes from the nightly toolchain, downgrading to a few months old nightly fixed the issue. I'm using nightly-2020-06-03-x86_64-unknown-linux-gnu.

I figured out the issue comes from the nightly toolchain, downgrading to a few months old nightly fixed the issue. I'm using nightly-2020-06-03-x86_64-unknown-linux-gnu.

yes, exactly, solve my problem. thanks
btw, you have to install the wasm with this specific date version as well.
rustup target add wasm32-unknown-unknown --toolchain nightly-2020-06-03

I figured out the issue comes from the nightly toolchain, downgrading to a few months old nightly fixed the issue. I'm using nightly-2020-06-03-x86_64-unknown-linux-gnu.

Sovle my problem. And in windows use
nightly-2020-06-03-x86_64-pc-windows-msvc

FWIW, I did not see this problem on the master branch, but i did see it on the workshop branch.


stalwart-mail: 0.9.2 -> 0.9.3

Automatic update generated by nixpkgs-update tools. This update was made based on information from https://github.com/stalwartlabs/mail-server/releases.
meta.description for stalwart-mail is: Secure & Modern All-in-One Mail Server (IMAP, JMAP, SMTP)
meta.homepage for stalwart-mail is: https://github.com/stalwartlabs/mail-server
meta.changelog for stalwart-mail is: https://github.com/stalwartlabs/mail-server/blob/0.9.3/CHANGELOG
Updates performed

Rust version update

To inspect upstream changes
Impact
Checks done

built on NixOS
The tests defined in passthru.tests, if any, passed
found 0.9.3 with grep in /nix/store/7wrw5yc2mwdfnrnvsalzvizfc0glk30w-stalwart-mail-0.9.3
found 0.9.3 in filename of file in /nix/store/7wrw5yc2mwdfnrnvsalzvizfc0glk30w-stalwart-mail-0.9.3

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

2 total rebuild path(s)

2 package rebuild(s)

First fifty rebuilds by attrpath

stalwart-mail

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/7wrw5yc2mwdfnrnvsalzvizfc0glk30w-stalwart-mail-0.9.3 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

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

Or:
nix build github:r-ryantm/nixpkgs/2158b8b869fdda7eba8c3c8df768718002020e94#stalwart-mail

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/7wrw5yc2mwdfnrnvsalzvizfc0glk30w-stalwart-mail-0.9.3
ls -la /nix/store/7wrw5yc2mwdfnrnvsalzvizfc0glk30w-stalwart-mail-0.9.3/bin

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

1 package built:

stalwart-mail

Maintainer pings
cc @happysalada @onny @oddlama for testing.

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

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

Result of nixpkgs-review run on x86_64-linux 1

1 package built:

stalwart-mail


No way to get help for pub subcommands with dart pub

Pub has many sub-commands. Getting help for this is a fairly common use case. However. dart help pub publish fails:
mit-macbookpro4:~ mit$ dart help pub publish
Command "dart pub" does not expect a subcommand.

Usage: dart pub [arguments]

Note that this does seem to work for other commands, e.g. compile:
mit-macbookpro4:~ mit$ dart help compile exe
Compile Dart to a self-contained executable

Usage: dart compile exe [arguments] <dart entry point>

cc @jwren @jonasfj

dart pub help publish is likely to work. We could do a work around for this. Otherwise, I would expect this to resolve if we manage to get pub embedded in dartdev.

Note that this does work:
mit-macbookpro4:flutter mit$ dart help compile exe
Compile Dart to a self-contained executable

Usage: dart compile exe [arguments] <dart entry point>
-h, --help                          Print this usage information.
-o, --output                        Write the output to <file name>.
                                    This can be an absolute or reletive path.
-D, --define=<key=value>            Set values of environment variables. To specify multiple variables, use multiple options or use commas to separate key-value pairs.
                                    E.g.: dart compile exe -Da=1,b=2 main.dart
    --enable-asserts                Enable assert statements.
-p, --packages=<path>               Get package locations from the specified file instead of .packages. <path> can be relative or absolute.
                                    E.g.: dart compile exe --packages=/tmp/pkgs main.dart
-S, --save-debugging-info=<path>    Remove debugging information from the output and save it separately to the specified file. <path> can be relative or absolute.

This is caused by the argument parsers for some older commands (like pub) being shallow wrappers in dart CLI that call out to the existing commands. Over time as we discontinue the older commands, we can move all of the command and argument parsing into the dart CLI.
Also, you can use dart pub publish --help. Would be good to investigate if we can generally support turning dart help foo bar into dart foo bar --help.

Logic here: https://dart-review.googlesource.com/c/sdk/+/158521.  If/when we decide on the contents and file name, we can modify the PR and land.

@jwren I think that comment was for 42500, not the present bug?

Yes, thanks @mit-mit

I believe a solution for this would be to do some light parsing of the command line for the pub subcommand, to convert:
dart help pub publish

(which currently fails), to:
dart pub publish -h

which will succeed.
We'd need to be careful with that parsing and re-writing to ensure that we're correct in various cases; hopefully we can cover that w/ good unit tests.
I don't think this is critical for this milestone however; it's currently a P2 - we may consider moving it out of the milestone as we get closer to the release.

@devoncarew -- yes, thank you for articulating on the bug.  I am working on this issue now.  With the exception of a Dart VM issue, this is the last dart-cli bug labeled with the September milestone.

@devoncarew @mit-mit
A call to dart help pub publish doesn't invoke any code (such as printUsage in pub.dart)
To re-order the commands, we'd have to intercept modify the runCommand (in dartdev.dart) to match when the user has [..., help, pub, ...] in their arguments.  However, even when such a match has been made, there is no way to then have the arguments re-ordered or re-parsed with the current args library: newArgResults is hidden when src/arg_results.dart is exported.
Unfortunately, with the architecture of the args package the most robust way to implement this would be to copy the pub argument parser over like we have done for test.  Given this, how important is this for the September release schedule?

A call to dart help pub publish doesn't invoke any code (such as printUsage in pub.dart)
To re-order the commands, we'd have to intercept modify the runCommand (in dartdev.dart) to match when the user has [..., help, pub, ...] in their arguments. However, even when such a match has been made, there is no way to then have the arguments re-ordered or re-parsed with the current args library...

Yes, I think the CommandRunner doesn't support re-writing / re-parsing args. Its a specialized use case (but important when you need it).
Have you considered doing the re-write before we pass the list of args to CommandRunner.run()? That would be on or around https://github.com/dart-lang/sdk/blob/master/pkg/dartdev/lib/dartdev.dart#L122. This is were things get tricky - you have to be careful about how you identify something like help pub publish, so you don't mis-identify other invocations.

We have work ongoing in https://github.com/dart-lang/pub/pull/2622 to facilitate embedding pub in dartdev, that would alleviate these issues.

PR out at https://dart-review.googlesource.com/c/sdk/+/159341. @jonasfj - if/when embedding is done of pub into dartdev directly, the tests should remain, but the argument parsing in lib/dartdev.dart should be removed.


How to override default accessToken response?

I wan to customize default Oauth2 access token generation response from this:
{
"access_token": "f3389e81c234276967079b2293795fc9104a2fac",
"expires_in": 86400,
"token_type": "Bearer",
"user_id": 9,
"scope": null,
"refresh_token": "851464a210f56bb831da378a43e1016bd3e765d7",
}
to this
{
"access_token": "f3389e81c234276967079b2293795fc9104a2fac",
"expires_in": 86400,
"token_type": "Bearer",
"scope": null,
"refresh_token": "851464a210f56bb831da378a43e1016bd3e765d7",
"user": {
"id": 9,
"first_name": "Test",
"last_name": "Test2",
"username": "test",
"email"<EMAIL_ADDRESS>"status": 1,
"dob": "20-08-1990",
"gender": "Male",
}
}
for further details visit [this] (http://stackoverflow.com/questions/40235307/how-to-override-default-yii2-filsh-oauth-server-response)
@mtangoo @RoyXiang @damiandennis @freezy-sk @wenbin1989

Since token returns "user_id": 9 then use that to request user details /users?id=9
Else there is no point of doing what you want to do. It is worthless IMHO

It would be a separate call I just want user info in same oauth response anyways I have found a workaround you can see the details here. There should be a workaround within oauth2 server it should have been flexible to add new fields in response array without modifying the core files, just like QueryParamAuth  and HttpBearerAuth we extend it and modify according to our needs.


[breaking] Add linting support

This PR adds a linting stage to Go package builds. Beware: once this PR is merged, we'll try and lint all future Go builds.
By default we use golangci-lint, but this can be configured on a per-package level.
fixes #40

I've also installed golangci-lint on a workspace with gitpod-core to check how much work we have ahead...
Output was really big, but less than 20 severe warning :P


Timesheet - 01/05/2021 - James Pang

Task 1
Catched up and updated justin on several issues on the existing PRs. (small snippet of our convo below)
Proof of Work

Time Spent
1 hours

Task 2
Worked on the admin openings page
Proof of Work

Work is in local

Time Spent
2 hours

Task 3
Worked on the projects page.

Updated the project page with the project icons
Utilised the new font system
Fixed various bugs with project icons
Update projects design based on latest updated design
Scrapped off previous scrolling behavior and implement based on design
Removed usage of gap as it is not supported by Safari
Refactor declaration of z-index values to separate _z-index.scss

Proof of Work

https://github.com/thenewboston-developers/Website/pull/1753

Latest project page screen recording:
https://user-images.githubusercontent.com/32864116/116788266-3a715e00-aadb-11eb-8102-be27a20cd2bc.mp4
Time Spent
8.5 hours

Total Time Spent
11.5 hours
Account Number
c54c04774efaae20746fd3f29cdd619fea512e119bc1082b863572b2e8844104

Approved

Approved


Chrome extensions

I made some editorial changes (see the second commit), so wanted your approval.
r? @mjp2220

@mjp2220 I'm going to go ahead and merge this.


Passing options to default recipe

It is easy to write recipes which accept flags:
just my-recipe --some-flag

but if this recipe is the default and you try to use it as such, the flag is passed on to just itself:
just --some-flag
error: Found argument '--some-flag' which wasn't expected, or isn't valid in this context

Many commands use -- in these sorts of cases, but it looks like just does not:
just -- some-flag
error: Justfile does not contain recipe `--some-flag`.

I have come up with the hack of naming the default recipe _, which works, but ... meh.
Does just cater for passing flags to the default recipe?
If not, might -- be added for these sorts of use cases?

It isn't possible to pass arguments, flags or otherwise, to the default recipe without naming it. I can see the argument for using -- for this, but I'm not sure that's much better than just naming the default recipe, e.g., just default --some-arg.


Fix statically linked concurrency on Linux

Generating a statically-linked executable either with
-static-executable or -static-stdlib that contains concurrency needs
to link the concurrency libraries or the missing symbols will cause link
failures.
This patch adds dispatch and blocks runtime to the list of statically
linked libraries. In the case of the static stdlib, it only adds them if
the concurrency mechanisms use dispatch, otherwise it doesn't.
For the static executable, it always adds them since that doesn't appear
to be very configurable.

@swift-ci please test

@swift-ci please test

Broken by https://github.com/apple/swift/pull/42073

@swift-ci please test macOS

@swift-ci please test Windows

https://github.com/apple/swift/pull/42075 has now merged, which should hopefully fix things again.

@swift-ci please test macOS


How Can I Use a Pre_trained Model?

How can I use a pretraied model to train cornernet-lite?

usage: train.py [-h] [--iter START_ITER] [--workers WORKERS] [--initialize]
[--distributed] [--world-size WORLD_SIZE] [--rank RANK]
[--dist-url DIST_URL] [--dist-backend DIST_BACKEND]
cfg_file
eg：python train.py CornerNet_Saccade --iter 6000

and when training my own dataset , can I use transfer learning，because, my dataset is small.

Hello, how to load the coco pretrained model for transfer learning on custom datasets?
any tip here?
thank very much.


Zero assigned clusters leading to zero means

The current design chooses the first k points as starting values.
If any of these data points are identical this leads the first to be assigned all the points and the second to be assigned no points (and then generating a NaN mean over its 0 members, and derailing the whole clustering algorithm).
There are 2 solutions I can think of to avoid this condition:

Select the first k distinct points for centres.
Move any centre which ends up with a cluster of size 0 to a random other point.

The first one seems simple and more predictably performant to start from.

today the same problem appeared today. i have not tested #6 yet, but @huonw please look into it.


Fix sanitize Russian year

Hi,
I've fixed issue: https://github.com/scrapinghub/dateparser/issues/147
Problem was that sanitize_date remove 'г.' even if it's part of word like 'Авг.'

Thanks @skrypka!


How to connect or disconnect

Is there is a function I can call to connect , Power off and disconnect MYO instead of connecting it every time through ARMband Manager ?
Regards

instead of connecting it every time through ARMband Manager ?

But what do you mean by that exactly? All I have to do is to make sure that Myo Connect is running, I don't have to check the Armband Manager everytime.

Closing due to inactivity.


SAK-41786 T&Qs : preview doesn't work for draft assessments

@adrianfish Can you please re-check? Thanks!


Add Member NaokiLH

Sign up startrek plan

👌

@yubing744 Sure. But i don't know typescrip😿. What can i do?

@NaokiLH If you can contribute 3 PRs to the move-analyzer module, you can graduate.

@NaokiLH Hello, how are you studying now?
Graduation criteria have been updated recently, and graduation is now easier: https://github.com/movefuns/web3startrek/blob/main/README.md#graduation-criteria

Since the PR is not updated for too long, it is temporarily closed. If you want to continue to participate in Startrek, please apply again.


Implement stale issue bot

This will auto-close issues after a time frame. https://github.com/probot/stale

You might want this. @cormacmccarthy

Stale issue bot implemented. https://github.com/salesforce/design-system-react/blob/master/.github/stale.yml


Dockerization

This PR adds the following feature:

Dockerfiles for building transformer images

These are up on dockerhub for the latest version
Dockerhub has some light instructions for running containers from the images.

n.b. - The dockerfiles, at the moment, do not contain caches of the huggingface models, mostly to spread this out over two commits. The main question for later is one of preference; would you rather:

have one image type per runnable model (smaller individual images, but more maintenance)
import configurations from the rest modules (brittle but DRYer)
have a seperate python file just for managing installing models during docker builds (less intrusive but forgettable)

n.b. - The docker images, at the moment, do not contain caches of the huggingface models, mostly to spread this out over two commits. The main question for later is one of preference; would you rather:
* have one image type per runnable model (smaller individual images, but more maintenance)

* have one image for all models (probably adds a few gigs)

My immediate preference is for one image per runnable model, probably with a base image with the common stuff, but I'll defer to Tim as he's the one who maintains the runnable models.

and also, would you rather:
* import configurations from the rest modules (brittle but DRYer)

* have a seperate python file just for managing installing models during docker builds (less intrusive but forgettable)

Could you elaborate on this more concretely? I don't have an immediate preference.

and also, would you rather:

import configurations from the rest modules (brittle but DRYer)
have a seperate python file just for managing installing models during docker builds (less intrusive but forgettable)

Could you elaborate on this more concretely? I don't have an immediate preference.

So, in order to get the huggingface transformers into the images, i'm basically looking to mimic the calls to to from_pretrained and their supporting infrastructure in src.cnlpt.api.cnlp_rest.initialize_cnlpt_model during the docker build. So for each model, I need to go grab arguments from the associated rest support module - most importantly, model_name.
So - in the first case, for negation_rest as an example, I'd explictly import model_name from there, and I might need to do something like make the cuda/batch size arguments more explictly stored in variables in that module so they could be imported as well, and run that during the build for the negation image, and basically do that once for each model.
The other option is to have that code not depend directly on the model code, and explicitly set up a replica set of calls, maintaining model_name params in there as well, and managing optional arguments as needed.
Does that make sense? I don't really have a strong preference myself - I think in a vacuum I would probably choose the second option and expect that things would occasionally break, but I can see the other case as well.

I'll defer to @tmills since that's his code.

I'm ok with one image per runnable model.

For the second issue, if I understand correctly, I agree with the second approach: Keep a separate set of configs for the image creation. There is nothing magic about the hardcoded configs, and in fact maybe they should be factored out somehow.

Any other concerns to address before merging?

Any other concerns to address before merging?

Nope, I'm good with that - I'll add multiple images/models in a followup PR.


Maintainer application thread

Hi all,
There have been a number of threads about the activity of sh as a project going forward, and I thought I would address them here.  Sh is not abandoned, but admittedly, the lifecycle of maintenance is a lot longer than I would like.  It's on my TODO list, but I am pressured to take care of more pressing priorities in my life right now.  Rather than go down a negative path with the community by arguing about why my timeline is more important, I am opening up sh to take on additional maintainer(s) to alleviate that friction.
If you would like to be a maintainer, please reply to this post.  I will be considering people who are visible in the OSS community, who write high-quality, tested code, and who have similar responsibilities maintaining projects.  You will be responsible for:

Ensuring sh tests pass on Linux, MacOS, and Unix-like OSes
Answering issues and questions in a timely manner
Reviewing PRs and ensuring that they fit in line with the existing philosophy of sh as well as its coding standards (testing, comments, documentation, etc)
Maintaining documentation
Developing support for future Python versions across supported OSes
And most importantly: not breaking the builds

If this is you, voice your interest here and I will reach out to you.

Hi Andrew!
I have been using sh over the years and noticed that it didn't make it to the CentOS8 official repo (probably because of https://github.com/amoffat/sh/issues/498). I don't have a lot of open source credentials but would love to help.
/me goes clone repo...

Hi @lestercheung thanks for your interest.  Your willingness to help out is much appreciated.  However, I am looking for someone with a bit more experience in open source maintenance.  Cheers.

I completely understand. All the best finding a co-maintainer and stay safe in Seattle/wherever you are!

Hi @amoffat
I’d like to volunteer. I can’t take full responsibility but I can start with the low-hanging fruit and work my way up. I would prefer if you can at least mentor in the beginning as I find my way around.
I already maintain the https://github.com/ecederstrand/exchangelib package and generally strive for good quality and being a nice person. And we use sh at my day job.

Hi Erik! Thanks for your interest. You've been an early contributor to sh as well...I'm seeing commits from you as early as 2014. I'd be very happy to have you as a maintainer, in whatever capacity you can offer. I will reach out to you over the email in your profile.

That's fantastic news! A lot of us would be sad to see this project getting bitrot.

Welcome aboard Erik and thank you for volunteering your time! 6ba7f7b4ab7a339d361a20bd4b5c49f82d320473


[Docs] Clarify that String parsing methods don't support num separators

Even if we chose to implement this in the future it'd be good to clear this up in 4.2 and 4.3, might easily be confusing as:

to_int does ignore these
GDScript allows them

Can explicitly clarify the case in Expression but I think that class needs a more general clarification on how it works and what it does actually support so leaving it for now.
See:

https://github.com/godotengine/godot/issues/97324

Not sure this actually solves the mentioned issue, as this information is still hidden behind the String methods, which are not directly tied to the Expression class, at least not documented as such.

It doesn't, hence why not linked, it's related and what inspired this change

Also this should probably either be a note, the example should speak for itself without additional remarks in the same line, or both. As by the rest of this class reference page, you shouldn't need the code blocks to understand the methods.

If says it only supports digits, so this is just "hey keep this one in mind" for those who miss that, it doesn't add any information the description doesn't have, just makes it clearer (it doesn't explicitly say "you can't put letters in a number")


Focus is completely lost with Teaching tip

I am using the Teaching Tip control in a UWP app. However, I am not able to get focus on the teaching tip. As suggested in the documentation, pressing F6 does not help. The focus is completely lost and I am not able to navigate using the tab key even in the rest of the app. The only option is to press the Esc key which dismisses the teaching tip.
The reason I suspect this happens is because the "IsLightDismissEnabled" property is set to True, hence there is no cross button on the top right corner. Moreover, I do not use the "ActionButton" or the "CloseButton". If I have any of those, then the focus gets set on pressing F6. I have my own custom content in the Teaching tip -
<muxc:TeachingTip
            x:Name="TestTip"
            Title="Sample Title"
            Target="{x:Bind TaskEntryBar.PlusIcon}"
            PreferredPlacement="TopRight"
            IsLightDismissEnabled="True">
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="*"/>
                    <ColumnDefinition Width="*"/>
                </Grid.ColumnDefinitions>
                <TextBlock Grid.Column="0" Text="2 of 2" FontSize="14"/>
                <Button
                    x:Name="TestButton"
                    Grid.Column="1"
                    FontSize="14"
                    Margin="6,0"
                    Content="Got it"
                    Click="AddTaskTip_Click" />
            </Grid>
</muxc:TeachingTip>

As suggested in one of the other issues, I tried to set the focus ( in the code behind file ) on my custom button but that also did not work -
TestTip.IsOpen = true;
TestButton.Focus(FocusState.Programmatic);

And using the visual tree helper, I got the popup, but Focus() method is not available on a popup.
var popups = VisualTreeHelper.GetOpenPopups(Window.Current);
foreach (var popup in popups)
{
    popup.Focus(FocusState.Programmatic);
}

Please suggest what can I do to get focus on the teaching tip in case of only custom content and with IsLightDismissEnabled set to true.
Windows 10 Version: Build 19041.450
Device Form Factor: Desktop

Seems like a few issues. First is an oversight in the F6 logic, that at tip could have no close button, we should fix this so it works with your content.  Second, the isOpen property on teaching tip is async, which means you cannot set it to true and immediately call focus on your content.  You should be able to do this if you attach to the TestButton.Loaded event and call focus in there.  But perhaps we should also add an Opened event to teaching tip, given that IsOpen is async.

Help wanted for the F6 portion.  @SavoySchuler fyi about the opened event.

@StephenLPeters Thanks, the TestButton.Loaded solution worked. However, the problem with that solution is that the narrator announcement is not made due to the Focus shifting to the button immediately.

I would like to take a look at the Focus keyboard shortcut problem (F6) if that's fine with everybody.
@nilaysanghvi

However, I am not able to get focus on the teaching tip. As suggested in the documentation, pressing F6 does not help

Where exactly did you find that in the documentation I checked the TeachingTip main documentation page but found no mention of F6 setting focus into the TeachingTip. I only found such a note here. If this info is not present in the docs, then it should be added.

@Felix-Dev I'm sorry it is not in the documentation but the spec.
Also if you switch on the narrator service then it announces that you need to press F6.

Definitely should be added to the TeachingTip's main documentation page then. Can open a PR for that later today.

@Felix-Dev there is another issue regarding the narrator not announcing the subtitle? Should I open a new issue for that?

@nilaysanghvi Yep :)

Since my PR for this issue adds an interaction test I am currently more or less blocked on issue https://github.com/microsoft/microsoft-ui-xaml/issues/3349.

@StephenLPeters has there been any progress on this? Is this blocked?

@StephenLPeters is there any traction we can get on this to get it approved/merged?

This is especially problematic in a WinUI app for the TextBox controls since is causes the user to have to click the TextBox twice.
The only way I know to get around this is to setup a PropertyChangedCallback for the teaching tip...
teachingTip.RegisterPropertyChangedCallback(TeachingTip.IsOpenProperty, IsTipOpenChanged);
The inside the callback shift the focus back to the TextBox.


Enhancement - omnidb server listen on localhost only

Although you can change the ports, when omnidb-server starts up, it listens on <IP_ADDRESS>, and it isn't obvious that can be easily changed to just listen on localhost, or a specific private IP address (for multi-homed systems).
-h is already used for "help".
You could optionally parse the port options to include a listening hostname like this:
omnidb-server -p localhost:55555 -w localhost:55000

Hi Rotten,
that is a great suggestion. OmniDB server actually listens to all IP's related to the machine where the server was started:
<IP_ADDRESS>, local network IP, public internet IP.
Having a parameter to specify which IP to listen to is a great idea since it gives the user the possibility to block access from undesired locations, hence enhancing security.
This parameter will be included in the next release, as the materialized views and foreign tables.

Hi @rotten ,
Thanks very much for your feedback. Recent version of omnidb-server allows you to specify listen address and ports. Please refer to omnidb-server -h:
Usage: omnidb-server [options]

Options:
  --version             show program's version number and exit
  -h, --help            show this help message and exit
  -p PORT, --port=PORT  listening port
  -w WSPORT, --wsport=WSPORT
                        websocket port
  -H HOST, --host=HOST  listening address
  -c CONF, --configfile=CONF
                        configuration file

I'm closing this issue now.


Copy job config and images

Only config files can be copied this way, images cannot be copied from config, and we cannot use the internal ones because they need vpn, as they are configured to point to internal repos. We will need to build our own using jobs


Fixes QBittorent Interface Rebinding

ref https://github.com/qbittorrent/qBittorrent/issues/13154

ref https://github.com/qbittorrent/qBittorrent/issues/9466


CFE resolves top-level variable to null with constants flag

Given this example:
import 'dart:convert' show json;

main() {
  print(json.decode('{}'));
}

With DDC's Kernel backend, and the constant patches from: https://github.com/dart-lang/sdk/issues/36479, DDC is getting the following Kernel tree:
main = test::main;
library from "file:///Users/jmesserly/scratch/test.dart" as test {

  import "dart:convert";

  static method main() → dynamic {
    core::print((#C1).{con::JsonCodec::decode}("{}"));
  }
}
constants  {
  #C1 = null
}

This leads it to output null.decode. This is causing (at least some of) the failures in this test run:
https://ci.chromium.org/p/dart/builders/try/ddc-linux-release-chrome-try/16764
For example, tests/language_2/map_test.dart fails due to the line above. The "show" doesn't matter.
I'm guessing this is an issue with cross-module constants? I'll poke around and see if I can figure it out. (also I'll sync to HEAD, in case this was fixed since my test run last night).

Note, the fix described here: https://github.com/dart-lang/sdk/issues/36535#issuecomment-481282531 would probably fix this issue too.

CC @askeksa-google  ... I think I found a simple fix:
diff --git a/pkg/front_end/lib/src/fasta/kernel/constant_evaluator.dart b/pkg/front_end/lib/src/fasta/kernel/constant_evaluator.dart
index d35150db18..a43c39a7e3 100644
--- a/pkg/front_end/lib/src/fasta/kernel/constant_evaluator.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/constant_evaluator.dart
@@ -360,7 +360,7 @@ class ConstantsTransformer extends Transformer {
   visitStaticGet(StaticGet node) {
     final Member target = node.target;
     if (target is Field && target.isConst) {
-      return evaluateAndTransformWithContext(node, target.initializer);
+      return evaluateAndTransformWithContext(node, node);
     } else if (target is Procedure && target.kind == ProcedureKind.Method) {
       return evaluateAndTransformWithContext(node, node);
     }

Alternatively the code could inline the target.isInExternalLibrary && target.initializer == null check from ConstantEvaluator.visitStaticGet. Basically it looks like transformer's visitStaticGet is trying to inline some of that logic (for performance?) so it misses the case of unevaluated constants.
(ConstantEvaluator.visitStaticGet is also doing withNewEnvironment, that seems like potentially a good idea, so the field initializer isn't evaluated in the same scope as the field use site?)

I'm now testing a version of this fix, that also includes an attempt at fixing https://github.com/dart-lang/sdk/issues/36535 ... but I'm not sure if the APIs are what the CFE would want.

FWIW, the other way of fixing it would be:
diff --git a/pkg/front_end/lib/src/fasta/kernel/constant_evaluator.dart b/pkg/front_end/lib/src/fasta/kernel/constant_evaluator.dart
index d35150db18..994c1610f1 100644
--- a/pkg/front_end/lib/src/fasta/kernel/constant_evaluator.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/constant_evaluator.dart
@@ -359,7 +359,8 @@ class ConstantsTransformer extends Transformer {

   visitStaticGet(StaticGet node) {
     final Member target = node.target;
-    if (target is Field && target.isConst) {
+    if (target is Field && target.isConst &&
+       (target.initializer != null || !target.isInExternalLibrary)) {
       return evaluateAndTransformWithContext(node, target.initializer);
     } else if (target is Procedure && target.kind == ProcedureKind.Method) {
       return evaluateAndTransformWithContext(node, node);

I verified that this works too.

I noticed this problem as well when looking at the code, but didn't mention it, since https://dart-review.googlesource.com/c/sdk/+/98677 will fix it (it includes the same fix as your first suggestion).
That part of the code will be rewritten by the fix for https://github.com/dart-lang/sdk/issues/36535 anyway (somewhat similarly to your second suggestion).

@jmesserly can you verify this is fixed?

I can confirm it's fixed!
I'm still working on fixing DDC with the constants flag; I found some unusual behavior that I'm not sure is intended (e.g. annotations appearing as ConstantExpressions whose value is an UnevaluatedConstant). It happens only with modular compilation+outline Kernel files. But I have a workaround for that, so it's not blocking.


Tree Sitter - SuperHTML (.shtml) Syntax Highlighting for Neovim, ...

In tree-sitter-superhtml there's a grammar for SuperHTML templates that can be used by any editor (or tool in general) that relies on Tree Sitter.
Unfortunately, a grammar alone is not enough to get syntax highlighting in an editor, as you also need highlighting queries, and those need to be crafted for each editor.
I've developed the current queries for Helix and they look like this:

Notice in particular how id values of block definitions are underlined differently from other non-semantically-relevant(to the templating engine) ids.
Trying yesterday with a user to add those same queries to Neovim caused an error, which means that Neovim users at the moment cannot have syntax highlighting for .shtml files.

Just a side note: .shtml is a very well known extensions for HTML files with support for Server Side Includes (SSI), see: https://en.wikipedia.org/wiki/Server_Side_Includes
It may be smart to use a different default extension for "SuperHTML" to avoid confusion.

This has been working for a while now, forgot to close this issue.
The name can stay, Vim knows how to detect the correct file type and other editors can figure out too (and some of them don't even have support for SSI anymore).


Shoot, I'm still getting the read_only errors with 0.5.1:
https://nbviewer.org/gist/85a34aed6e432d0d8502841076bbab92

I think you may be hitting a version of https://github.com/zarr-developers/zarr-python/pull/1354 because you are calling
m = fs.get_mapper("")

Try updating to the latest zarr version, or else creating an FSStore instead.

Okay, will do!

Would be helpful to confirm which Zarr version you had installed.

Hmm, zarr==2.13.6.  Not sure why though, just build the env today.  Something must be pinning it!

Okay, with the latest zarr=2.14.2, I don't get the read_only errors.   But the workflow fails with killed workers, with this error:

KilledWorker: Attempted to run task ('copy_intermediate_to_write-bca90f45d4dc080cca14b54ce5a10d1f', 2) on 3 different workers, but all those workers died while running it. The last worker that attempt to run the task was tls://<IP_ADDRESS>:35291. Inspecting worker logs is often a good next step to diagnose what went wrong. For more information see https://distributed.dask.org/en/stable/killed.html.

The logs from those workers are not available on the dashboard, I guess because the workers died, right?
This rechunker workflow was working on in December.    Should I revert to zarr and rechunker from that era?

Ideally you would figure out what is going wrong and help us fix it, rather than rolling back to an earlier version.

Yep, because I'm using conda-store.  :)

I won't be able to log into the ESIP cluster to debug your failing computation. If you think there has been a regression in rechunker in the new release, I strongly encourage you to develop a minimum reproducible example and share it via the issue tracker.

If you have ideas, I'm game to try them.

My first idea would be to freeze every package version except rechunker in your environment, and then try running the exact same workflow with only different rechunker versions (say 0.5.0 vs 0.5.1). Your example has a million moving pieces. Dask, Zarr, kerchunk, xarray, etc etc. It's impossible to say whether your problem is caused by a change in rechunker unless you can isolate this. There have been extremely few changes to rechunker over the past year. Nothing that obviously would cause your dask workers to start running out of memory.

I've confirmed that my rechunking workflow runs successfully if I pin zarr=2.13.3:
cf_xarray                 0.8.0              pyhd8ed1ab_0    conda-forge
dask                      2023.3.1           pyhd8ed1ab_0    conda-forge
dask-core                 2023.3.1           pyhd8ed1ab_0    conda-forge
dask-gateway              2022.4.0           pyh8af1aa0_0    conda-forge
dask-geopandas            0.3.0              pyhd8ed1ab_0    conda-forge
dask-image                2022.9.0           pyhd8ed1ab_0    conda-forge
fsspec                    2023.3.0+5.gbac7529          pypi_0    pypi
intake-xarray             0.6.1              pyhd8ed1ab_0    conda-forge
jupyter_server_xarray_leaflet 0.2.3              pyhd8ed1ab_0    conda-forge
numcodecs                 0.11.0          py310heca2aa9_1    conda-forge
pint-xarray               0.3                pyhd8ed1ab_0    conda-forge
rechunker                 0.5.1                    pypi_0    pypi
rioxarray                 0.13.4             pyhd8ed1ab_0    conda-forge
s3fs                      2022.11.0       py310h06a4308_0
xarray                    2023.2.0           pyhd8ed1ab_0    conda-forge
xarray-datatree           0.0.12             pyhd8ed1ab_0    conda-forge
xarray-spatial            0.3.5              pyhd8ed1ab_0    conda-forge
xarray_leaflet            0.2.3              pyhd8ed1ab_0    conda-forge
zarr                      2.13.3             pyhd8ed1ab_0    conda-forge

If I change to zarr=2.13.6 I get the ReadOnlyError: object is read-only error.
If I change to zarr=2.14.2 I get the dask workers dying.

@gzt5142 has a minimal reproducible example.   But should this be raised as a zarr issue?

Thanks a lot for looking into this Rich!

But should this be raised as a zarr issue?

How minimal is it? Can you decouple it from the dask and rechunker issues? Can you say more about what you think the root problem is?

Actually, our minimal example works fine.  :(

I'm going to reopen this issue.
If there is a bug somewhere in our stack that is preventing rechunker from working properly, we really need to get to the bottom of it.


Improve unit tests

And fix a build break due to yesterday's symbol renaming.

This change is

PTAL.


Add balance_claim operation

Closes: #219

Codecov Report

Merging #220 into develop will increase coverage by 0.07%.
The diff coverage is 100%.

@@             Coverage Diff             @@
##           develop     #220      +/-   ##
===========================================
+ Coverage    36.19%   36.26%   +0.07%
===========================================
  Files           34       34
  Lines         2133     2137       +4
  Branches       489      489
===========================================
+ Hits           772      775       +3
  Misses        1236     1236
- Partials       125      126       +1

Impacted Files
Coverage Δ

bitsharesbase/operations.py
53.22% <100%> (+0.61%)
:arrow_up:

bitsharesapi/bitsharesnoderpc.py
50% <0%> (-2.78%)
:arrow_down:

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 e3a7cb1...54d712d. Read the comment docs.


Options for dest_path and dest_loader_path

It would be nice too add options for destination path and destination loader path, this would allow placing libraries in a separate folder when creating application bundles.

I'm almost finished with this! Curious, is there any reason why they couldn't be specified by the same option? For example, if the binary is /a/b/program couldn't the option just be a folder relative to the directory containing the binary? e.g. --dir=../libs which would copy the binaries into /a/libs and the loader path would automatically be @executable_path/../../libs/<library>?
I have it pretty much the same way as macdylibbundler right now but I can't think of a scenario where they'd be different. I haven't made an app bundle yet though

I think combining is a good idea. You just have to resolve the destination path relative to the binary location (./macpack -d ../libs path/to/binary should result in path/libs).
The only reason to separate these is when you would like to copy the binary to a different location after modification without moving the libraries, but I don't think this is necessary at all.

I got that done using os.relpath to find location of libs relative to the binary folder. New option is -d. And yeah, I think it's safe to assume you wouldn't really want to move them after modification... If they specify an absolute path in -d it won't do any relative stuff
Thanks!

Tested, everything is good (even with new @loader_path). Thank you very much!


Add support for parameterized SipHash

The core SipHash supports either 8 or 16-byte output and a configurable
number of rounds.
The default behavior, as added to EVP, is to use 16-byte output and
2,4 rounds, which matches the behavior of most implementations.
Note that documentation has not been updated, as there was some doc updates
for Poly1305 that I did in PR #2128 that I want to build upon.

Checklist

[x] documentation is added or updated
[X] tests are added or updated
[X] CLA is signed

Description of change

This needs a rebase

Yup, with the Poly1305 commit.

Rebased.

Looks good to me.

There already is a no-siphash option. It's currently on by default

Rebased, comments resolved.

@levitte please reconfirm and i will merge.

3f5616d on master.  Thanks!


removed deadCode

Description

This is not being used in production but the code of it in in the production repository

Related Issue

#131
Changes Made

Removed the code which was not used in production but was on the master branch, which also caused an error of Casing (but its due to the whole code not enclosed in <svg> tag)
Screenshots

Checklist

[x] I have tagged the issue in this PR.
[x] I have attached necessary screenshots.
[x] I have provided a short description of the PR.
[x] I ran yarn build and build is successful
[x] My code follows the style guidelines of this project.
[x] I have added necessary documentation (if applicable)

Ty!


Support for bearer tokens

Is your feature request related to a problem? Please describe.
azure-storage-cpplite supported bearer tokens with the azure::storage_lite::token_credential class. However, bearer tokens are no longer supported in the azure-sdk-for-cpp out of the box.
This is an issue in many corporate environments where account keys cannot be used since they do no allow for fine-grained access control and also never expire.
Describe the solution you'd like
azure-sdk-for-cpp should support token credentials including refresh out of the box.
Describe alternatives you've considered
We tried to use SAS tokens but those cannot be created to be valid for multiple containers using azure cli.
Additional context
Information Checklist
Kindly make sure that you have added all the following information above and checkoff the required fields otherwise we will treat the issuer as an incomplete report

[x] Description Added
[x] Expected solution specified

Hi @janbernloehr, we do have Azure::Core::TokenCredential, but it is an abstract class that gets implemented by different credential types.
I think the closest thing to the bare credential is the Azure::Identity::ClientSecretCredential - it does not take the token, but it takes TeneantId, ClientId, and a ClientSecret, and gets the token (and also populates a new one the old one expires).
I think, if your application was using azure::storage_lite::token_credential, it did implement fetching that token in some way, was it via client secret?
Here is the sample how to use ClientSecretCredential: https://github.com/Azure/azure-sdk-for-cpp/blob/main/sdk/identity/azure-identity/samples/client_secret_credential.cpp
We also have Azure::Identity::EnvironmentCredential: it is basically a ClientSecretCredential, which reads its input parameters from the environment variables with the argeed-upon names. Because if you use ClientSecretCredential, you don't want to hardcode the client secret and you need to read it from somewhere, and the environment is not bad location to read from, in some circumstances, especially if your app runs on an Azure VM, which you can set up to populate the corresponding environment variable during the VM deployment.
Sample: https://github.com/Azure/azure-sdk-for-cpp/blob/main/sdk/identity/azure-identity/samples/environment_credential.cpp
And also, speaking of Azure VMs, Azure::Identity also has ManagedIdentityCredential, which is supposed to work only when your app runs in Azure, namely on Azure VMs being one of the cases: you enable Managed Identity in the VM properties, and the credential starts working.
Sample: https://github.com/Azure/azure-sdk-for-cpp/blob/main/sdk/identity/azure-identity/samples/managed_identity_credential.cpp
If you can tell us more how you were using the azure::storage_lite::token_credential before, I think we could suggest more specific recommendations. Thank you!

Hi @janbernloehr , I'm the current maintainer of cpplite sdk.  I wrote a customized token credential for them and it works great for them. Not sure if it works for you.
struct SimpleTokenCredential {
  void SetToken(std::string token)
  {
    std::lock_guard<std::mutex> guard(m_mutex);
    m_token = std::move(token);
  }

  std::string GetToken()
  {
    std::lock_guard<std::mutex> guard(m_mutex);
    return m_token;
  }

private:
  std::mutex m_mutex;
  std::string m_token;
};

std::unique_ptr<Azure::Core::Http::Policies::HttpPolicy> MakePolicy(
    std::function<void(Azure::Core::Http::Request&)> func)
{
  class NewPolicy final : public Azure::Core::Http::Policies::HttpPolicy {
  public:
    NewPolicy(std::function<void(Azure::Core::Http::Request&)> func) : m_func(std::move(func)) {}

    ~NewPolicy() override {}

    std::unique_ptr<HttpPolicy> Clone() const override
    {
      return std::make_unique<NewPolicy>(*this);
    }

    std::unique_ptr<Azure::Core::Http::RawResponse> Send(
        Azure::Core::Http::Request& request,
        Azure::Core::Http::Policies::NextHttpPolicy nextPolicy,
        Azure::Core::Context const& context) const override
    {
      m_func(request);
      return nextPolicy.Send(request, context);
    }

  private:
    std::function<void(Azure::Core::Http::Request&)> m_func;
  };

  return std::make_unique<NewPolicy>(std::move(func));
}

Use the policy:
  using namespace Azure::Storage::Blobs;

  std::string accountName = "targettest";
  std::string containerName = "sample-container";
  std::string blobName = "sample-blob";
  std::string blobContent = "Hello Azure!";

  SimpleTokenCredential simpleTokenCredential;
  simpleTokenCredential.SetToken("token1");

  BlobClientOptions clientOptions;
  clientOptions.PerRetryPolicies.emplace_back(
      MakePolicy([&simpleTokenCredential](Azure::Core::Http::Request& request) {
        request.SetHeader("Authorization", "Bearer " + simpleTokenCredential.GetToken());
      }));
  auto containerClient = BlobContainerClient::BlobContainerClient(
      https:// + accountName + ".blob.core.windows.net/" + containerName, clientOptions);

  containerClient.CreateIfNotExists();

  BlockBlobClient blobClient = containerClient.GetBlockBlobClient(blobName);

  // Let's say token expired and we want to refresh it.
  simpleTokenCredential.SetToken("token2");  // Token is protected by mutex, so this function can be called synchronously or asynchronously.

  std::vector<uint8_t> buffer(blobContent.begin(), blobContent.end());
  blobClient.UploadFrom(buffer.data(), buffer.size());

  Azure::Storage::Metadata blobMetadata = {{"key1", "value1"}, {"key2", "value2"}};
  blobClient.SetMetadata(blobMetadata);

  auto properties = blobClient.GetProperties().Value;

Thanks for the extensive example. If I understand it correctly, it does not feature auto-renew of tokens, though? This would be the most important missing piece.

If I understand it correctly, it does not feature auto-renew of tokens, though?

Nope. It provides the same functionality as cpplite. I don't know if that can help your migration from cpplite to this SDK.

@janbernloehr, I think we've provided a solution for the storage_lite token credential, with the code above. We are not currently planning to have it as part of the SDK, because token refresh is problematic. There are similar in spirit types of credentials, such as AzureCli credential which I think we can implement.
Other recommendation is also to update your app to use currently available and supported credentials.
I am closing this issue - please reopen it if you think we should reconsifer storage_lie token credential, or contact us if you have more questions.
If you need Azure CLI credential, please open another issue, and we will look into it.

@janbernloehr, we just added Azure CLI Credential to main (#4146). It does invoke az account get-access-token and uses that token. It also handles token expiration, and requests a new token if the old one is about to expire or has expired. If you have any feedback, please let us know!


Distance and Direction - Remove the ability to add "+/-" prefix on notations that do not support

Widget
Distance and Direction
Version of widget
All versions
Bug or Enhancement
Remove the ability to add "+/-" prefix on notations that do not support, such as:
MGRS
USNG
GEOREF
GARS
UTM

fixed please can somebody verify

@elinz
Enhancement added please verify

@adgiles Verified fixed. Closing issue.


Using Fulfill to send QuickReply buttons in combination with  tag on FB Messenger - timing is wrong

Ho Ho Ho!<pause /><greet tz="Europe/London" />, Santa here what would you like to know? <pause /><buttons>Yes,No</buttons>
In the above example, the timing of the quick reply buttons appearing in Facebook Messenger is between the "Ho Ho Ho!" and the "Santa here what would you like to know?" messages. Obviously, the expectation is that the buttons come out last, but they don't.
The button implementation is as follows:
        controller: (params) => {
            const buttonTitles = params.content.split(',');
            params.update.message.quick_replies = [];
            for (const buttonTitle of buttonTitles) {
                params.update.message.quick_replies.push({
                    content_type: 'text',
                    title: buttonTitle,
                    payload: buttonTitle,
                });
            }
            return '';
        },

Try the following,
controller: (params) => {
            const buttonTitles = params.content.split(',');
            process.nextTick(function() {
                 params.bot.sendDefaultButtonMessageTo( buttonTitles, params.update.sender.id);
             });
            return '';
        },

This will use the botmaster method to send the buttons which combined with the process.nextTick  should send the buttons after the tag has been evaluated.

Hi this has now been fixed in botmaster-fulfill 2.3.0 with a new feature that allows you to run functions after fulfill has finished running.
The syntax is the following
        controller: (params, next) => {
            const buttonTitles = params.content.split(',');
            next().then(() => {
                params.bot.sendMessageTo(buttonTitles, params.update.sender.id)
            });
            return '';
        },

Please note that there is a problem with quick replies on facebook when not in messenger.
https://community.chatfuel.com/t/quick-reply-not-showing-in-messages-when-user-are-in-facebook/2069


[AVM Question/Feedback]: Migrating from v0.1.x to v0.2.x

Check for previous/existing GitHub issues

[X] I have checked for previous/existing GitHub issues

Description
Is there any advice/guidance around migrating to version 0.2.x of this module due to the breaking changes? i.e. what can be done to avoid having to destroy and redeploy the virtual network, subnets, and peering?
This might be a good piece of documentation for early adopters of this module.
Thanks, appreciate the support.

Hi!
With this sort of change I'd recommend leaving your existing resources on the old version and deploying new ones with the new version.
If you want to migrate you can use import/removed {} blocks to achieve this.
We will provide documentation on how to do this.

@matt-FFFFFF thank you very much! Is there any general guidance available yet on using import blocks with AVM?
For example, if I use:
import {
  to = module.virtual_network.azurerm_virtual_network.vnet
  id = "/subscriptions/xxx/resourceGroups/rg-IdentityConnectivity-prod-001/providers/Microsoft.Network/virtualNetworks/vnet-IdentityConnectivity-prod-001"
}

I get the following error:
The configuration for the given import target module.virtual_network.azurerm_virtual_network.vnet does not exist. All target instances must have an associated configuration to be imported.
I appreciate this is perhaps more of a general Terraform question.

I managed to figure it out, it should've been:
removed {
  from = module.virtual_network.azurerm_virtual_network.vnet
  lifecycle {
    destroy = false
  }
}
import {
  to = module.virtual_network.azapi_resource.vnet
  id = "/subscriptions/xxx/resourceGroups/rg-IdentityConnectivity-prod-001/providers/Microsoft.Network/virtualNetworks/vnet-IdentityConnectivity-prod-001"
}


Different field_descriptions.json for in congress tutorial vs. repo

The tutorial for the Congress example asks you to paste in a custom field_descriptions.json:
[
   {"field":"date","datatype":"time","type":"numeric","unique":true,"derived":[{"resolution":"month"}]},
   {"field":"searchstring","datatype":"searchstring","type":"text","unique":true},
   {"field":"enacted","datatype":"categorical","type":"text","unique":false},
   {"field":"sponsor_state","datatype":"categorical","type":"text","unique":false},
   {"field":"cosponsors_state","datatype":"categorical","type":"text","unique":false},
   {"field":"chamber","datatype":"categorical","type":"text","unique":false}
   ]

However, the repo for congress_api already has a different, larger version:
[
    {"field":"date","datatype":"time","type":"numeric","unique":true,"derived":[{"resolution":"month"}, {"resolution":"year"}]},
    {"field":"searchstring","datatype":"searchstring","type":"text","unique":true},
    {"field":"chamber","datatype":"categorical","type":"text","unique":true},
    {"field":"awaiting_signature","datatype":"categorical","type":"text","unique":true},
    {"field":"enacted","datatype":"categorical","type":"text","unique":true},
    {"field":"vetoed","datatype":"categorical","type":"text","unique":true},
    {"field":"status","datatype":"categorical","type":"text","unique":true},
    {"field":"main_subject","datatype":"categorical","type":"text","unique":true},
    {"field":"subjects","datatype":"categorical","type":"text","unique":false},
    {"field":"sponsor_state","datatype":"categorical","type":"text","unique":true},
    {"field":"sponsor_name","datatype":"categorical","type":"text","unique":true},
    {"field":"sponsor_title","datatype":"categorical","type":"text","unique":true},
    {"field":"num_cosponsors","datatype":"categorical","type":"integer","unique":true},
    {"field":"thomas_id","datatype":"etc","type":"integer","unique":true}
]

If there is a reason for the truncated example in the tutorial, it is not clear. I can imagine one valid reason: to have a person see and consider the format of the file, rather than saying "it's all already in the repo".
The new Bookworm Docs don't seem to use the Congress example anymore, so this may not be too important, but it's perfectly functional, so I think it's worth keeping around.

I've updated the Congress repo example for the v0.4.0 readme.


proposal: Go 2: Preference over snake case instead of camel case

Go Programming Experience
Experienced
Other Languages Experience
Rust, NodeJS
Related Idea

[ ] Has this idea, or one like it, been proposed before?
[ ] Does this affect error handling?
[ ] Is this about generics?
[ ] Is this change backward compatible? Breaking the Go 1 compatibility guarantee is a large cost and requires a large benefit

Has this idea, or one like it, been proposed before?
In other languages, it's already a standard. In Golang, I'm not quite sure
Does this affect error handling?
Not at all
Is this about generics?
Nope.
Proposal
The proposal is to make it a standard to have Golang adhere to snake_case/Snake_case instead of camelCase/CamelCase.
Reason being:

Okay, Golang does not have Enums. As much as anybody would love to call this "enums", it's not, its pseudo-enums

    type MyEnum int
    const (
            MyEnumOne MyEnum = iota + 1
            MyEnumTwo
    )

It pollutes the namespace, it's not really intuitive, it does not have compiler support or anything of that short in case you want to validate an enum. You can only do that by inserting functions on the type itself and doing it by hand. Okay, my point is not to say how these are not enums, but how they pollute the namespace in such a way that it becomes unreadable. Imagine having a longNameForAnEnumOne and having to read all of that instead of just reading long_name_for_an_enum_one.

Snake case is designed to have underscores as a replacement for spaces. CamelCase is literally designed to stick letters onto each other. It's counter-intuitive when trying to read someone's code or your own code when snake case was designed for this specific purpose to be easily readable.
I've programmed in Rust before, and while Rust may not be itself the most readable language of them all, the variable or function names are more than suffice. C++ too, Python, or other languages that usually follow the snake_case format and for a good reason. Golang is one of the few that has stepped back and doesn't use snake_case and uses camelCase instead. I don't quite understand why, and why the linter tries to enforce you by placing warnings for auto-fixing it.
It's completely reasonable to try to enforce one code-style for name convention with linting don't misunderstand me. But it's counter-intuitive to try to enforce a code-style that is designed to not be as readable as its competitors.
And best of all, it's backwards compatible, it has nothing to do with the code itself or the compiler at all. You can still write in snake_case, it's just that the compiler and the IDE will complain, but your code will work it's not that it's against the principles of the compiler.
Language Spec Changes
No language spec changes. Just the philosophy that "everything should be written in CamelCase" and either leave some freedom on the programming team deciding the best convention, or enforce the one that is just ... objectively the best out there for naming convention. The one that is designed to be readable because it's designed to separate words with a "space"-like symbol.
Informal Change
No response
Is this change backward compatible?
Totally.
Orthogonality: How does this change interact or overlap with existing features?
It does not interact with any feature.
Would this change make Go easier or harder to learn, and why?
It makes it easier to read, write and maintain code or even write long pseudo-enums.
Cost Description
The linter would have to stop complaining or try to enforce snake_case instead at least.
Changes to Go ToolChain
No changes except that gofmt would probably have to enforce another naming convention.
Performance Costs
No performance cost, it's just naming convention
Prototype
Self-understandable what the prototype is or should be.
Instead of this
func MyLongNameFunction()

have this
func My_long_name_function()

Maybe we could also migrate to spaces for indentation, because they have literally no advantage over tabs :+1: (/s if it wasn't obvious)

Maybe we could also migrate to spaces for indentation, because they have literally no advantage over tabs 👍 (/s if it wasn't obvious)

Great way of making a constructive conversation, and so many arguments provided here. Thanks for the constructive criticism. /s if it wasn't obvious

Sorry, I also find "it's unintuitive" not exactly an objective measure for anything. I myself can read and mentally parse a name just fine independent on if it's CamelCase, Snake_Case, Kebap-Case, or whatever someone may come up with. Do you have something "tangible"?

This seems contradictory to Go's use of uppercase letters to export names in packages.
Moreover, I don't think we could actually switch the ecosystem of developers and existing code even if we wished to.

If it's not a comprehensive change (breaking backwards compat) - it will result in a split ecosystem where pre-snakeCase code is still camel and new code is snakeCase.. Now you have to live with camel and snake! Doesn't seem ideal.

Maybe I missed who said that…

let me remind you your own words, maybe you'll recall, where you used Irony and thus aggressiveness/toxicity just to make your point:
Maybe we could also migrate to spaces for indentation, because they have literally no advantage over tabs 👍 (/s if it wasn't obvious)

Still, reading code and preferences is a highly individual thing and as such the experience differs from developer to developer

ImadeMyPointInMyLastSentence. Is_that_sufficient_for you?

You are free to do so. _ is a valid character in identifiers.

You can, but the linter always complains and you split your team into the "snake_case" team and the "camelCase" team. Like, that was my point from the start, to have a standardized name convention.

Use as many emoji reactions as you want. They're not arguments against the toxicity of the community that I see in some people here who even have the badge of the contributor and hold a responsibility to be a little bit more friendlier, and the aversion to change, and not really any arguments against what I proposed. Just pure toxicity and emoji reactions .... great way to show what a friendly place for proposals this is.


different appearance of one day to mutiple day events

Currently one day events just get a colored bubble in front of the eventtitle. Mutiple day events are colored the entire eventitle. In my opinion, it would look nicer if one day events are colored the same way.
Maybe there should be panel setting to toggle between both modes for one day events.

This is how both Google Calendar and Apple Calendar differentiates between single and multi-day events, both which I'm using for inspiration for the plugin. I'm open to discussing this, but I'd need a stronger argument for using the same styled would be better.

This came into my mind when playing with the multi-calender-query feature. We have many planned changes over multiple days highlighted in color a and some critical changes (mostly one day changes) in color b. In my opinion the less critical changes are highlighted more than the critical ones. They just seem to get lost in the crowd.
I think i have to discuss this with our internal costumers about their opinion. Maybe they come up with a crucial reason ;)

Hm, I understand the issue and why a shared style would make sense here.
I guess the question then is rather how do you'd differentiate between events of different priority. First thing that comes to mind is to use more muted colors for lower priority events, and more saturated colors for higher priority.
I have another feature request for manually setting the color for each calendar (https://github.com/marcusolsson/grafana-calendar-panel/issues/23). Do you thing that would help?

Yes, thats my point of view too. But i think even when you use a more saturated color for higher priority, if it only colors the little dot in front of the title, the event still looks not as important as a muti day event. I will try to make a sample calender dashboard and post it here.

For me, the multitimeevents look more important than the emergency change on 09.06.2021. The multiday color highlights the unimportant and normal events (but not because they are critical, only because they are multiday) more than the little dot in front of the emergency change. I am not sure if using a red instead of a light blue dot would help to highlight the emergency change enough.

Yeah, it doesn't help that the text is a little too greyed out for single-day events unless you hover it.
I don't have any way of proving it, but I think the majority of events will be single-day events, as it fits well with with event logs for example. My main worry is that by making single-day events more colorful, the calendar would overpower other panels.
Rather than making single-day events grab more attention, could we change it so that multi-day events grab less attention?
For example:

Make colors for multi-day events more muted and boost the contrast of single-day events
Experiment with more subtle styles for multi-day, for example remove fill and only have an outline

We really like the way multiday events look like now, it is exactly what we are looking for. But your suggestion with an outline instead of a whole title fill sounds promising too. I think there will be use cases for both stylings, so maybe adding a panel option for toggling between outline/complete fill will be good.
But my major point here is, that the appearance should not really differ between single and multiday as it does today. If you use complete fill both should be filled, if you use small outlines both types should use it.

Thanks for all the great feedback! 🙏
I think the next step would be to create some mock-ups for some possible solutions. We can always make this configurable as you say, e.g. "Display single day events as all-day events".
I'll update this issue with some screenshots after I've experimented a bit!

A view like https://codepen.io/jaschulke/pen/qhGEp would be great.
Even better with color chooser mentioned in #23


Remove an erroneous dangling Condition check from vcproj file

Remove an erroneous dangling Condition check from vcproj file

/azp run


Make component development doc more language agnostic

Updated some phrases in component-development.md document to make it more clear pipeline components are language agnostic.
Based on kubeflow/pipelines#4599 discussion
Preview Link

Ready for review when you get a chance. Thanks!
/assign @Ark-kun

Hi @lqdev thanks for the submission! Would you mind to sign the cla/google in the meantime? Seems like is not right now. :)

Hi @alfsuse,
I did that. Though after submitting the PR. Not sure if PRs retroactively pick up that information. Is there something I should to retrigger that check?

@lqdev thank you for this. You should follow the instructions from the google-cla bot - https://github.com/kubeflow/website/pull/2294#issuecomment-712563187 - to sign the Google-specific CLA. Make sure you use the same 📧 address.

/assign @Bobgy @IronPan @neuromage @Ark-kun @numerology
(assigned the Pipelines approvers)

@googlebot I signed it!

Thanks @8bitmp3 . My mistake. I had signed the LFAI, not the Google CLA.

/lgtm
/approve
Thanks!


The Firefox addon link is broken

Is your feature request related to a problem? Please describe.
The link to Firefox addon link is broken
Describe the solution you'd like
That the doki web theme is available as an addon for firefox
Describe alternatives you've considered
self-loading it but that only keeps it temporarily

Yeah, this is a bit lame, you can track the issue on #60 . I'll close that issue once it is public, sorry for the inconvenience!


create page rule to return the page rule object - quick fix?

Does the simplest possible thing to get creation of page rules to be usable in terraform or other automation by returning the page rule object. I also added a bunch of tests while I'm here
I'm aware there is related some discussion and parallel work going on in #154, happy to align with that just trying to get something in quickly
Of course - this is still a breaking change

@benjvi approved.
Let me know when it also makes sense to tag a new release w/ the breaking changes, so you can vendor against a version (instead of a commit ref or HEAD) in the Terraform provider.

Awesome -thanks @elithrar . Will do - I'm not planning to make any more changes to this library at the moment but I still have a few things to look at so something else might turn up. Still could be worth tagging in the meantime? - up to you


Using the same array V-for rendering on the same page will report an error

Version
2.5.20
Reproduction link
codepen.io
Steps to reproduce
When I'm on the same page or component，“v-for” multiple times using the same array， "Duplicate keys detected. This may cause an update error." will be reported on the page，But the key of V-for is not repeated
What is expected?
In a page, using an array to render V-for multiple times will not report an error
What is actually happening?
In a page, use an array to render V-for multiple times and report errors

You cannot have the same key for adjacent elements. Keys must be unique.

Please, next time consider using the forum, the Discord server or StackOverflow for questions first. But feel free to come back and open an issue if it turns out to be a bug 🙂

However, the error will still be reported if it is not adjacent. I have modified codepen


requires-python field does not conform to the spec

requires-python maps to the Requires-Python core metadata field, which follows the PEP 440 specifier format, which allows multiple comma separated clauses.
We currently only allow one clause in our validation, which is wrong.
First reported in https://github.com/scipy/scipy/pull/16353#issuecomment-1146685941

I still need to deal with some blocking issues, so sounds like you'll resolve this matter first. Ideally the first release candidate would already be out, but things are rarely that simple anymore. Anyway, good that we can likely deal with this without too much trouble.