Inconsistent VADER results

Installing both NLTK (and the vader_lexicon) and the vaderSentiment thing from PyPi, which I believe is a mirror of this version, and running the same segments of text (Tweets, really. Specifically this one) results in different results.
from nltk.sentiment.vader import SentimentIntensityAnalyzer as nltk_vader
from vaderSentiment.vaderSentiment import SentimentIntensityAnalyzer as raw_vader

def show_difference(test_string:str):
    print(f'    (NLTK) {test_string}:\n{nltk_vader().polarity_scores(test_string)}')
    print(f'(Not-NLTK) {test_string}:\n{raw_vader().polarity_scores(test_string)}\n')

if __name__ == '__main__':
    show_difference('Not all heroes wear capes. Prepare for performance with (super) power, this is the fully electric Audi e-tron S. Discover more at https://t.co/WoOrQWM6Vp. #Audi #eMobility #etronS #FutureIsAnAttitude https://t.co/mBVOYF3cqi')
    show_difference('Not all heroes wear capes.')
    show_difference('Prepare for performance with (super) power, this is the fully electric Audi e-tron S. Discover more at https://t.co/WoOrQWM6Vp. #Audi #eMobility #etronS #FutureIsAnAttitude https://t.co/mBVOYF3cqi')
    show_difference('Prepare for performance with (super) power, this is the fully electric Audi e-tron S.')
    show_difference('Not all heroes wear capes. Prepare for performance with (super) power, this is the fully electric Audi e-tron S. Discover more at')
    show_difference('Not all heroes wear capes. Prepare for performance with (super) power, this is the fully electric Audi e-tron S. Discover more at . #Audi #eMobility #etronS #FutureIsAnAttitude')
    show_difference('Not all heroes wear capes. Prepare for performance with (super) power, this is the fully electric Audi e-tron S. Discover more at https://t.co/WoOrQWM6Vp.  https://t.co/mBVOYF3cqi')

    (NLTK) Not all heroes wear capes. Prepare for performance with (super) power, this is the fully electric Audi e-tron S. Discover more at https://t.co/WoOrQWM6Vp. #Audi #eMobility #etronS #FutureIsAnAttitude https://t.co/mBVOYF3cqi:
{'neg': 0.091, 'neu': 0.909, 'pos': 0.0, 'compound': -0.4023}
(Not-NLTK) Not all heroes wear capes. Prepare for performance with (super) power, this is the fully electric Audi e-tron S. Discover more at https://t.co/WoOrQWM6Vp. #Audi #eMobility #etronS #FutureIsAnAttitude https://t.co/mBVOYF3cqi:
{'neg': 0.083, 'neu': 0.797, 'pos': 0.12, 'compound': 0.2955}

    (NLTK) Not all heroes wear capes.:
{'neg': 0.403, 'neu': 0.597, 'pos': 0.0, 'compound': -0.4023}
(Not-NLTK) Not all heroes wear capes.:
{'neg': 0.403, 'neu': 0.597, 'pos': 0.0, 'compound': -0.4023}

    (NLTK) Prepare for performance with (super) power, this is the fully electric Audi e-tron S. Discover more at https://t.co/WoOrQWM6Vp. #Audi #eMobility #etronS #FutureIsAnAttitude https://t.co/mBVOYF3cqi:
{'neg': 0.0, 'neu': 1.0, 'pos': 0.0, 'compound': 0.0}
(Not-NLTK) Prepare for performance with (super) power, this is the fully electric Audi e-tron S. Discover more at https://t.co/WoOrQWM6Vp. #Audi #eMobility #etronS #FutureIsAnAttitude https://t.co/mBVOYF3cqi:
{'neg': 0.0, 'neu': 0.849, 'pos': 0.151, 'compound': 0.5994}

    (NLTK) Prepare for performance with (super) power, this is the fully electric Audi e-tron S.:
{'neg': 0.0, 'neu': 1.0, 'pos': 0.0, 'compound': 0.0}
(Not-NLTK) Prepare for performance with (super) power, this is the fully electric Audi e-tron S.:
{'neg': 0.0, 'neu': 0.769, 'pos': 0.231, 'compound': 0.5994}

    (NLTK) Not all heroes wear capes. Prepare for performance with (super) power, this is the fully electric Audi e-tron S. Discover more at:
{'neg': 0.114, 'neu': 0.886, 'pos': 0.0, 'compound': -0.4023}
(Not-NLTK) Not all heroes wear capes. Prepare for performance with (super) power, this is the fully electric Audi e-tron S. Discover more at:
{'neg': 0.102, 'neu': 0.752, 'pos': 0.147, 'compound': 0.2955}

    (NLTK) Not all heroes wear capes. Prepare for performance with (super) power, this is the fully electric Audi e-tron S. Discover more at . #Audi #eMobility #etronS #FutureIsAnAttitude:
{'neg': 0.098, 'neu': 0.902, 'pos': 0.0, 'compound': -0.4023}
(Not-NLTK) Not all heroes wear capes. Prepare for performance with (super) power, this is the fully electric Audi e-tron S. Discover more at . #Audi #eMobility #etronS #FutureIsAnAttitude:
{'neg': 0.086, 'neu': 0.791, 'pos': 0.123, 'compound': 0.2955}

    (NLTK) Not all heroes wear capes. Prepare for performance with (super) power, this is the fully electric Audi e-tron S. Discover more at https://t.co/WoOrQWM6Vp.  https://t.co/mBVOYF3cqi:
{'neg': 0.105, 'neu': 0.895, 'pos': 0.0, 'compound': -0.4023}
(Not-NLTK) Not all heroes wear capes. Prepare for performance with (super) power, this is the fully electric Audi e-tron S. Discover more at https://t.co/WoOrQWM6Vp.  https://t.co/mBVOYF3cqi:
{'neg': 0.094, 'neu': 0.769, 'pos': 0.136, 'compound': 0.2955}

Notably, the NLTK version seems to be far less responsive to the non-hashtag, non-url text content changing. For example, despite massive differences in the first two chunks of text, the NLTK version comes up with the exact same compound score, but the non-NLTK version comes up with different scores. (Which is why I'm reporting the issue here, thinking it might be an NLTK issue. Though it could be me somehow using this incorrectly?)
EDIT to show the results in a different, maybe more readable, way:
Text 1: Not all heroes wear capes. Prepare for performance with (super) power, this is the fully electric Audi e-tron S. Discover more at https://t.co/WoOrQWM6Vp. #Audi #eMobility #etronS #FutureIsAnAttitude https://t.co/mBVOYF3cqi
Text 2: Not all heroes wear capes.
Text 3: Prepare for performance with (super) power, this is the fully electric Audi e-tron S. Discover more at https://t.co/WoOrQWM6Vp. #Audi #eMobility #etronS #FutureIsAnAttitude https://t.co/mBVOYF3cqi
Text 4: Prepare for performance with (super) power, this is the fully electric Audi e-tron S.
Text 6: Not all heroes wear capes. Prepare for performance with (super) power, this is the fully electric Audi e-tron S. Discover more at
Text 7: Not all heroes wear capes. Prepare for performance with (super) power, this is the fully electric Audi e-tron S. Discover more at . #Audi #eMobility #etronS #FutureIsAnAttitude
Text 8: Not all heroes wear capes. Prepare for performance with (super) power, this is the fully electric Audi e-tron S. Discover more at https://t.co/WoOrQWM6Vp.  https://t.co/mBVOYF3cqi

    (NLTK) {'neg': 0.091, 'neu': 0.909, 'pos': 0.0, 'compound': -0.4023}
    (NLTK) {'neg': 0.403, 'neu': 0.597, 'pos': 0.0, 'compound': -0.4023}
    (NLTK) {'neg': 0.0,   'neu': 1.0,   'pos': 0.0, 'compound': 0.0}
    (NLTK) {'neg': 0.0,   'neu': 1.0,   'pos': 0.0, 'compound': 0.0}
    (NLTK) {'neg': 0.114, 'neu': 0.886, 'pos': 0.0, 'compound': -0.4023}
    (NLTK) {'neg': 0.098, 'neu': 0.902, 'pos': 0.0, 'compound': -0.4023}
    (NLTK) {'neg': 0.105, 'neu': 0.895, 'pos': 0.0, 'compound': -0.4023}

(Not-NLTK) {'neg': 0.083, 'neu': 0.797, 'pos': 0.12, 'compound': 0.2955}
(Not-NLTK) {'neg': 0.403, 'neu': 0.597, 'pos': 0.0, 'compound': -0.4023}
(Not-NLTK) {'neg': 0.0, 'neu': 0.849, 'pos': 0.151, 'compound': 0.5994}
(Not-NLTK) {'neg': 0.0, 'neu': 0.769, 'pos': 0.231, 'compound': 0.5994}
(Not-NLTK) {'neg': 0.102, 'neu': 0.752, 'pos': 0.147, 'compound': 0.2955}
(Not-NLTK) {'neg': 0.086, 'neu': 0.791, 'pos': 0.123, 'compound': 0.2955}
(Not-NLTK) {'neg': 0.094, 'neu': 0.769, 'pos': 0.136, 'compound': 0.2955}

One of the differences that I'm noting is that NLTK uses:
['Not', 'all', 'heroes', 'wear', 'capes', 'Prepare', 'for', 'performance', 'with', '(super)', 'power', 'this', 'is', 'the', 'fully', 'electric', 'Audi', 'e-tron', 'S.', 'Discover', 'more', 'at', 'https://t.co/WoOrQWM6Vp.', '#Audi', '#eMobility', '#etronS', '#FutureIsAnAttitude', 'https://t.co/mBVOYF3cqi']

while vaderSentiment uses:
['Not', 'all', 'heroes', 'wear', 'capes', 'Prepare', 'for', 'performance', 'with', 'super', 'power', 'this', 'is', 'the', 'fully', 'electric', 'Audi', 'e-tron', 'S.', 'Discover', 'more', 'at', 'https://t.co/WoOrQWM6Vp', 'Audi', 'eMobility', 'etronS', 'FutureIsAnAttitude', 'https://t.co/mBVOYF3cqi']

These are equivalent except for two differences:

NLTK uses (super) while vaderSentiment uses super
NLTK uses #Audi, #etronS etc. while vaderSentiment uses Audi, etronS, etc.

The former issue can be explained by https://github.com/cjhutto/vaderSentiment/pull/57, which updates some punctuation differences. In particular, this section in vaderSentiment versus this section in NLTK:
https://github.com/nltk/nltk/blob/2f34b52da55a6c83fd18306095c9aa00b4996381/nltk/sentiment/vader.py#L299-L311

In fact, replacing (super) with super makes the outputs (almost) identical again:
    (NLTK) Not all heroes wear capes. Prepare for performance with super power, this is the fully electric Audi e-tron S. Discover more at https://t.co/WoOrQWM6Vp. Audi eMobility etronS FutureIsAnAttitude https://t.co/mBVOYF3cqi:
{'neg': 0.083, 'neu': 0.797, 'pos': 0.12, 'compound': 0.2955}
(Not-NLTK) Not all heroes wear capes. Prepare for performance with super power, this is the fully electric Audi e-tron S. Discover more at https://t.co/WoOrQWM6Vp. Audi eMobility etronS FutureIsAnAttitude https://t.co/mBVOYF3cqi:
{'neg': 0.083, 'neu': 0.797, 'pos': 0.12, 'compound': 0.2955}

    (NLTK) Not all heroes wear capes.:
{'neg': 0.403, 'neu': 0.597, 'pos': 0.0, 'compound': -0.4023}
(Not-NLTK) Not all heroes wear capes.:
{'neg': 0.403, 'neu': 0.597, 'pos': 0.0, 'compound': -0.4023}

    (NLTK) Prepare for performance with super power, this is the fully electric Audi e-tron S. Discover more at https://t.co/WoOrQWM6Vp. #Audi #eMobility #etronS #FutureIsAnAttitude https://t.co/mBVOYF3cqi:
{'neg': 0.0, 'neu': 0.849, 'pos': 0.151, 'compound': 0.5994}
(Not-NLTK) Prepare for performance with super power, this is the fully electric Audi e-tron S. Discover more at https://t.co/WoOrQWM6Vp. #Audi #eMobility #etronS #FutureIsAnAttitude https://t.co/mBVOYF3cqi:
{'neg': 0.0, 'neu': 0.849, 'pos': 0.151, 'compound': 0.5994}

    (NLTK) Prepare for performance with super power, this is the fully electric Audi e-tron S.:
{'neg': 0.0, 'neu': 0.769, 'pos': 0.231, 'compound': 0.5994}
(Not-NLTK) Prepare for performance with super power, this is the fully electric Audi e-tron S.:
{'neg': 0.0, 'neu': 0.769, 'pos': 0.231, 'compound': 0.5994}

    (NLTK) Not all heroes wear capes. Prepare for performance with super power, this is the fully electric Audi e-tron S. Discover more at:
{'neg': 0.102, 'neu': 0.752, 'pos': 0.147, 'compound': 0.2955}
(Not-NLTK) Not all heroes wear capes. Prepare for performance with super power, this is the fully electric Audi e-tron S. Discover more at:
{'neg': 0.102, 'neu': 0.752, 'pos': 0.147, 'compound': 0.2955}

    (NLTK) Not all heroes wear capes. Prepare for performance with super power, this is the fully electric Audi e-tron S. Discover more at . #Audi #eMobility #etronS #FutureIsAnAttitude:
{'neg': 0.088, 'neu': 0.784, 'pos': 0.127, 'compound': 0.2955}
(Not-NLTK) Not all heroes wear capes. Prepare for performance with super power, this is the fully electric Audi e-tron S. Discover more at . #Audi #eMobility #etronS #FutureIsAnAttitude:
{'neg': 0.086, 'neu': 0.791, 'pos': 0.123, 'compound': 0.2955}
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
# The neg and pos here are the *only* differences between NLTK and vaderSentiment now.

    (NLTK) Not all heroes wear capes. Prepare for performance with super power, this is the fully electric Audi e-tron S. Discover more at https://t.co/WoOrQWM6Vp.  https://t.co/mBVOYF3cqi:
{'neg': 0.094, 'neu': 0.769, 'pos': 0.136, 'compound': 0.2955}
(Not-NLTK) Not all heroes wear capes. Prepare for performance with super power, this is the fully electric Audi e-tron S. Discover more at https://t.co/WoOrQWM6Vp.  https://t.co/mBVOYF3cqi:
{'neg': 0.094, 'neu': 0.769, 'pos': 0.136, 'compound': 0.2955}

In conclusion, this is a difference in the text preprocessing between vaderSentiment and NLTK. I hope that helps explain it somewhat!


File headers: allow pattern matching or multiple allowable headers to support headers that must include a date

I agree with @sharwell that it's a pain to have a file header that includes a date. However, this might not always be avoidable. On one project, the header includes the year when the file was last updated.
It would be helpful if there was a way to allow, say, "Copyright (C) Flubbersoft, {year}" where year is defined as
\d{4}

(regular expression) or even
{ "2014", "2015" }

(array of permissible values)
I can make my own analyzer for this case if it's rare, but would be interested to know whether it would be helpful to anyone else too.

So what you're saying is, if you update all the headers to say 2015, it will still be correct?
Because that's exactly what I did in my work project to handle exactly this case. :smile:

We were asked not to update the date unless the file had been changed.

Of course, if you do update the date, then the file has definitely been changed... but I don't think that's what was meant ;-)

+1 Same here.

We have the same issue.  We don't update the date unless the file has been changed.  With a large solution, changing all file headers to a new date is cumbersome.
Having a way to support this use case would be very helpful.

At this point, the project already supports two specific and particularly practical use cases:

Cases like the .NET Foundation uses, which minimizes the chances that a project header ever needs to be changed (no date included at all, but instead references another file containing the information).
The strongest possible copyright protection under US copyright law, which is to use the year in which the project started as the copyright date and not change the year for future files (new files get back-dated).

I've seen other strategies employed, but they all seem to lose sight of the actual goals. When 95 years rolls around, one of three things will inevitably happen:

You don't care about the code enough to try and protect it anymore
The code is so old no one cares to copy it anymore aside from fair use for historical preservation purposes
We will all be dead so the whole thing is moot

My recommendation is to use the inflexibility of this tool as rationale to change the policy as it applies to your project.

Aside from dates, a pattern matching feature would be very useful in terms of headers where the file author is included - a common pattern in open-source collaborations. As it is, having two files with the same header where the only difference is the author (or list of authors) is not possible. A way to have wildcards or list value matching would solve this issue.

@Nihlus When extending this feature, I'm looking for two critical characteristics:

The ability to look at the text of a source file and determine that the header is either correct or the header is not correct.
In the event the header is not correct, a code fix is provided that will modify it such that the analysis determines the header is now correct.

@sharwell To me, then, it makes sense to extend the existing variable system in the json configuration to allow lists of values, along with a default value for the code fix.

@sharwell: Any updates on this? It is a company requirement for me to have the copyright year in the file header (year the files was created). With the year hard coded in the stylecop config it makes it very hard to have a mix of years.
Has a general design for this been discussed?

This change would not meet the ideal outcome we expect for StyleCop Analyzers automation (validation without false positives or false negatives, and the ability to fix everything automatically without introducing errors). In addition, the current implementation supports the requirements of a wide variety of organizations, including but not limited to the .NET Foundation's guidance and Microsoft for its own internal projects.
If a project falls outside the capabilities of StyleCop Analyzers for header validation, I would recommend creating a new analyzer for use in validating file headers for that project. It should not be difficult to implement considering StyleCop Analyzers is open source under a permissive license, and the new testing library (Microsoft.CodeAnalysis.Testing) is flexible and easier than ever to get a project working. There are many options for deployment of the result, including the following:

Publishing on NuGet
Publishing on an internal-only NuGet feed
Inclusion of the analyzers as source within the repository itself, similar to how dotnet/machinelearning has https://github.com/dotnet/machinelearning/tree/master/src/Microsoft.ML.Analyzer


[WIP] Use plan id 158665945

What
Describe what you have changed and why.
How to review
Describe the steps required to test the changes.
Who can review
Describe who can review the changes. Or more importantly, list the people
that can't review, because they worked on it.

closing in favour of https://github.com/alphagov/paas-billing/pull/49


Added missing assets to the pkg-section of the package.json

Signed-off-by: prebbe<EMAIL_ADDRESS>

The change did not result in the settings-file to be added to the release. I had to manually create it to make the executable run. Since this does not fix the error. I reverted the changes again and will try to find another solution for it.


[$500] Web - Group Conversation - There are redundant lines in mention popup when mention @...

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Version Number: 1.4.59-4
Reproducible in staging?: Y
Reproducible in production?: N
If this was caught during regression testing, add the test name, ID and link from TestRail: N/A
Email or phone of affected tester (no customers<EMAIL_ADDRESS>Issue reported by: Applause - Internal Team
Action Performed:

Go to staging.new.expensify.com
Tap on the any group chat
Typing @..
Scroll down popup

Expected Result:
Not have redundant lines in mention popup when mention @..
Actual Result:
There are redundant lines in mention popup when mention @..
Workaround:
Unknown
Platforms:

Which of our officially supported platforms is this issue occurring on?

[ ] Android: Native
[ ] Android: mWeb Chrome
[ ] iOS: Native
[ ] iOS: mWeb Safari
[x] MacOS: Chrome / Safari
[ ] MacOS: Desktop

Screenshots/Videos
Add any screenshot/video evidence

https://github.com/Expensify/App/assets/78819774/5e7f57db-29c5-40b4-944c-4739e7be426d
View all open jobs on GitHub
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~01b5430fff43fbf9eb
Upwork Job ID:<PHONE_NUMBER>719233024
Last Price Increase: 2024-04-03

Production:
https://github.com/Expensify/App/assets/78819774/ad679100-37c1-4728-8a6c-95633148e746

@chiragsalian  FYI I haven't added the External label as I wasn't 100% sure about this issue. Please take a look and add the label if you agree it's a bug and can be handled by external contributors

I can't reproduce this with my high traffic account, it's a minor display bug, and it seems to be account specific, so gonna demote to NAB

Please re-state the problem that we are trying to solve in this issue.
Web - Group Conversation - There are redundant lines in mention popup when mention @... #39564
What is the root cause of that problem?
I have tested this problem carefully but it works correctly. I have attached the result.
Uploading 2024-04-06_22-23-57.mp4…
What changes do you think we should make in order to solve the problem?
What alternative solutions did you explore? (Optional)
NA

Contributor details
My Expensify account email<EMAIL_ADDRESS>Upwork Profile Link: https://www.upwork.com/freelancers/~01e06e26f8cd83d24f

### Proposal
Please re-state the problem that we are trying to solve in this issue.
Web - Group Conversation - There are redundant lines in mention popup when mention @... #39564
What is the root cause of that problem?
I have tested this problem carefully but it works correctly. I have attached the result.
https://github.com/Expensify/App/assets/67734399/965a8f64-b0cf-44c5-b421-930c3f662d32
What changes do you think we should make in order to solve the problem?
What alternative solutions did you explore? (Optional)
NA

@rushatgabhane - I believe we are waiting on you to review the proposals above! Can you pls take a look?

There are no proposals. like @sea1375, I can't reproduce this issue either

waiting on proposals

I can't reproduce either. Let's close it.

This has been labelled "Needs Reproduction". Follow the steps here: https://stackoverflowteams.com/c/expensify/questions/16989


LLVM 16

builds on my machine, still needs testing against a project that uses it

I am done patching clang for now :-)

I have built this macOS, and tested on pasta and an internal tool, and things are working for me. I haven't tested with any of the lifting tools.


Fix test filters when using both notPackage and notClass

Fixes #460
Checklist

[ ] Documented
[x] Unit tested

Codecov Report

Merging #654 into master will decrease coverage by 0.06%.
The diff coverage is 91.66%.

@@             Coverage Diff              @@
##             master     #654      +/-   ##
============================================
- Coverage     77.91%   77.85%   -0.07%
- Complexity      637      639       +2
============================================
  Files            88       88
  Lines          2531     2533       +2
  Branches        323      324       +1
============================================
  Hits           1972     1972
- Misses          353      355       +2
  Partials        206      206


"Incremental" mode that skips mutations that were caught last time

If someone's iterating on trying to improve coverage it might be helpful to only try mutants that were not caught on the last run, maybe by automatically looking in mutants.out.
However you can get close to this today by narrowing it with -f.
Closely related to #57.

I’m going to give this one a try.

Great! If you want to talk about the approach or anything please feel to post here or put up a draft PR.

Hello, i've added my question on the PR, please let me know if it is better to post here https://github.com/sourcefrog/cargo-mutants/pull/174#issuecomment-1856855270.

Hello, I've added my question on the PR, please let me know if it is better to post here instead https://github.com/sourcefrog/cargo-mutants/pull/174#issuecomment-1856879607 .


Turn off Audio on WebRender TOP: Faster boot up

Now in the latest release https://github.com/torinmb/mediapipe-touchdesigner/releases/


Abstract over Conn and Transaction

Hi. Is it possible to abstract over a connection and a transaction?
Situation: I'm working on an ORM layer and want to  support MySql. For that I need to wrap a connection or transaction with a struct. On that struct I call my library functions.
From the API I see two ways:

Deref<Target=Conn>, can't make this work, because it's auto implemented by Rust for &Conn and in your API for Transaction.
-> To go this way it would be needed to implement it for Conn See Playground
ToConnection, perfect - but it seems to be a marker trait. There is no getter function on it.

What do you suggest?
Thanks for taking your time.

Hi.
I'm using ToConnection for this purpose, and then relying on the Query trait. Example (it's a copy-paste from one of my projects, so you should ignore some details. The point here is that any valid query is first converted into QueryWithParams<Cow<'static, str>, Params>, and then executed using Query::run and T: ToConnection):
pub struct DbQuery<T> {
    query: QueryWithParams<Cow<'static, str>, Params>,
    extractor: T,
}

impl<T: Extractor> DbQuery<T> {
    pub fn new<U, V>(query: QueryWithParams<U, V>, extractor: T) -> Self
    where
        U: Into<Cow<'static, str>>,
        V: Into<Params>,
    {
        Self {
            query: QueryWithParams {
                query: query.query.into(),
                params: query.params.into(),
            },
            extractor,
        }
    }

    pub async fn run<'a, 't: 'a, C>(self, conn: C) -> crate::Result<T::Output>
    where
        C: ToConnection<'a, 't> + 'a,
    {
        let res = self.query.run(conn).await?;
        self.extractor.extract(res).await
    }
}

Also I believe that it is possible to come up with an enum-based newtype and then implement Deref<Target=Conn> on it (something like the private Connection structure).

Thank you for your fast response!
Yes, maybe an enum would do the trick. Havn' thought of that, I'll check it out.
My problem was, that I couldn't access the affected rows and the last_insert_id.
That's why I tried to get a connection from whatever source (Conn or Transaction) the user would provide.
Basically Queryable abstracts over those sources. A workaround I found is to query the affected_rows and last_insert_id from the db, but I guess getting them from the Connection would be faster.
I'm closing the issue, thanks again and have a nice weekend.


Enter broken and won't fire for multiple instances - Chrome Android / Pixel

Steps to reproduce:
See example

Basic 1 - Broken will not add items
Basic 2 - Works OK

Enter will not fire when multiple instances are used embedded within a form.
Applies to Chrome Android / Pixel. I believe this is to do with the stock android keyboard not firing Enter properly.  The enter key is the 'next' key. And will tab to the next field instead of fire the enter key.
Any ideas on how to fix this?

For anyone that is stuck on this issue: A quick fix I've found is to make the drop down clickable. Example below:
const choicesElem = document.querySelector(' input[data-choices]')
this.choices = new Choices(choicesElem, {
          callbackOnInit: () => {
            let container = document.querySelector('[data-choices-container]')
            let dropdown = container.querySelector('.choices__list.choices__list--dropdown')

            dropdown.addEventListener('click', () => {
              let input = container.querySelector('input.choices__input--cloned')
              if ((input.value.length > 0)) {
                this.choices.setValue([input.value])
                input.value = ''
                dropdown.classList.remove('is-active')
                dropdown.setAttribute('aria-expanded', false)
              }
            })
          }
        })


Bloxstrap: Remove 32bit version and update to 2.3.0

The developer no longer supports 32bit version, because the Roblox client is now 64bit.

[X] I have read the Contributing Guide.

/verify


How can I find the login token?

Hi there, I've launched the demo and would like to start making a few API calls through pyFirecREST. How can I find the required access token? I wasn't able to find the information on GitHub or the readthedocs site.
Thank you for your help,
Simon

Hi, in order to get an access token you need to make first a request to the keycloak container of the demo environment. That would be something like this:
curl -s -X POST http://localhost:8080/auth/realms/kcrealm/protocol/openid-connect/token \
     --data "grant_type=client_credentials" \
     --data "client_id=firecrest-sample" \
     --data "client_secret=b391e177-fa50-4987-beaf-e6d33ca93571"

This will return with a short-lived token and you can make requests to http://localhost:8000 as long as the token is valid. If you don't want to have to deal with the token expiration you can also have a look at pyfirecrest, a python wrapper for the firecrest api: https://github.com/eth-cscs/pyfirecrest .

Great, thank you for the super fast response! Actually, I am using pyfirecrest already. How does that help get around the token expiration issue?

My answer was a bit misleading maybe, I only meant you won't have to make requests for new token explicitly. Whenever you are trying to make a request through pyfirecrest (if you are using the ClientCredentialsAuth object), firecrest will check how much time you token has left and if it is less than 10 seconds(this is configurable), it will make the request for a new one.
Since you are using pyfirecrest, you can get a valid access token at any moment with this
client_id = "firecrest-sample"
client_secret = "b391e177-fa50-4987-beaf-e6d33ca93571"
token_uri = "http://localhost:8080/auth/realms/kcrealm/protocol/openid-connect/token"

keycloak = f7t.ClientCredentialsAuth(
    client_id, client_secret, token_uri
)
print(keycloak.get_access_token())

Perfect! Thanks again!


How do I pass emojicon as a string to the backend server?

How do I pass emojicon as a string to the backend server?
I hope I can give you an answer

take a look: https://stackoverflow.com/questions/25074112/how-to-encode-and-decode-emoji-in-android


[No QA] Unheld total needs to be multiplied against coefficient as well

Unheld total needs to be multiplied against coefficient as well. See the other return below:
    return [
        CurrencyUtils.convertToDisplayString((iouReport?.unheldTotal ?? 0) * coefficient, iouReport?.currency),
        CurrencyUtils.convertToDisplayString((iouReport?.total ?? 0) * coefficient, iouReport?.currency),
    ];

Before

After

Fixed Issues
$ https://github.com/Expensify/App/pull/49144#issuecomment-2351682462
PROPOSAL:
Tests

Manual offline tests

Offline tests
This is an offline bug!
QA Steps

Create Expense report with two expenses
submit to admin
As admin, go offline
hold one expense
attempt to partial approve and observe negative amount

PR Author Checklist

[x] I linked the correct issue in the ### Fixed Issues section above
[x] I wrote clear testing steps that cover the changes made in this PR

[x] I added steps for local testing in the Tests section
[x] I added steps for the expected offline behavior in the Offline steps section
[x] I added steps for Staging and/or Production testing in the QA steps section
[x] I added steps to cover failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[x] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)
[x] I tested this PR with a High Traffic account against the staging or production API to ensure there are no regressions (e.g. long loading states that impact usability).

[x] I included screenshots or videos for tests on all platforms
[x] I ran the tests on all platforms & verified they passed on:

[x] Android: Native
[x] Android: mWeb Chrome
[x] iOS: Native
[x] iOS: mWeb Safari
[x] MacOS: Chrome / Safari
[x] MacOS: Desktop

[x] I verified there are no console errors (if there's a console error not related to the PR, report it or open an issue for it to be fixed)
[x] I followed proper code patterns (see Reviewing the code)

[x] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick)
[x] I verified that the left part of a conditional rendering a React component is a boolean and NOT a string, e.g. myBool && <MyComponent />.
[x] I verified that comments were added to code that is not self explanatory
[x] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[x] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method

[x] If any non-english text was added/modified, I verified the translation was requested/reviewed in #expensify-open-source and it was approved by an internal Expensify engineer. Link to Slack message:

[x] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[x] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is either coming verbatim from figma or has been approved by marketing (in order to get marketing approval, ask the Bug Zero team member to add the Waiting for copy label to the issue)
[x] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[x] I verified the JSDocs style guidelines (in STYLE.md) were followed

[x] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[x] I followed the guidelines as stated in the Review Guidelines
[x] I tested other components that can be impacted by my changes (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar are working as expected)
[x] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[x] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[x] I verified that if a function's arguments changed that all usages have also been updated correctly
[x] If any new file was added I verified that:

[x] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[x] If a new CSS style is added I verified that:

[x] A similar style doesn't already exist
[x] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(theme.componentBG))

[x] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[x] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[x] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[x] If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
[x] If the PR modifies the UI (e.g. new buttons, new UI components, changing the padding/spacing/sizing, moving components, etc) or modifies the form input styles:

[x] I verified that all the inputs inside a form are aligned with each other.
[x] I added Design label and/or tagged @Expensify/design so the design team can review the changes.

[x] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[x] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.

Screenshots/Videos

Android: Native

Android: mWeb Chrome

iOS: Native

iOS: mWeb Safari

MacOS: Chrome / Safari

MacOS: Desktop

Reviewer Checklist

[ ] I have verified the author checklist is complete (all boxes are checked off).
[ ] I verified the correct issue is linked in the ### Fixed Issues section above
[ ] I verified testing steps are clear and they cover the changes made in this PR

[ ] I verified the steps for local testing are in the Tests section
[ ] I verified the steps for Staging and/or Production testing are in the QA steps section
[ ] I verified the steps cover any possible failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[ ] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)

[ ] I checked that screenshots or videos are included for tests on all platforms
[ ] I included screenshots or videos for tests on all platforms
[ ] I verified tests pass on all platforms & I tested again on:

[ ] Android: Native
[ ] Android: mWeb Chrome
[ ] iOS: Native
[ ] iOS: mWeb Safari
[ ] MacOS: Chrome / Safari
[ ] MacOS: Desktop

[ ] If there are any errors in the console that are unrelated to this PR, I either fixed them (preferred) or linked to where I reported them in Slack
[ ] I verified proper code patterns were followed (see Reviewing the code)

[ ] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick).
[ ] I verified that the left part of a conditional rendering a React component is a boolean and NOT a string, e.g. myBool && <MyComponent />.
[ ] I verified that comments were added to code that is not self explanatory
[ ] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[ ] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method
[ ] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[ ] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is either coming verbatim from figma or has been approved by marketing (in order to get marketing approval, ask the Bug Zero team member to add the Waiting for copy label to the issue)
[ ] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[ ] I verified the JSDocs style guidelines (in STYLE.md) were followed

[ ] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[ ] I verified that this PR follows the guidelines as stated in the Review Guidelines
[ ] I verified other components that can be impacted by these changes have been tested, and I retested again (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar have been tested & I retested again)
[ ] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[ ] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[ ] If a new component is created I verified that:

[ ] A similar component doesn't exist in the codebase
[ ] All props are defined accurately and each prop has a /** comment above it */
[ ] The file is named correctly
[ ] The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
[ ] The only data being stored in the state is data necessary for rendering and nothing else
[ ] For Class Components, any internal methods passed to components event handlers are bound to this properly so there are no scoping issues (i.e. for onClick={this.submit} the method this.submit should be bound to this in the constructor)
[ ] Any internal methods bound to this are necessary to be bound (i.e. avoid this.submit = this.submit.bind(this); if this.submit is never passed to a component event handler like onClick)
[ ] All JSX used for rendering exists in the render method
[ ] The component has the minimum amount of code necessary for its purpose, and it is broken down into smaller components in order to separate concerns and functions

[ ] If any new file was added I verified that:

[ ] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[ ] If a new CSS style is added I verified that:

[ ] A similar style doesn't already exist
[ ] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(theme.componentBG)

[ ] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[ ] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[ ] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[ ] If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
[ ] If the PR modifies the UI (e.g. new buttons, new UI components, changing the padding/spacing/sizing, moving components, etc) or modifies the form input styles:

[ ] I verified that all the inputs inside a form are aligned with each other.
[ ] I added Design label and/or tagged @Expensify/design so the design team can review the changes.

[ ] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[ ] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.
[ ] I have checked off every checkbox in the PR reviewer checklist, including those that don't apply to this PR.

Screenshots/Videos

Android: Native

Android: mWeb Chrome

iOS: Native

iOS: mWeb Safari

MacOS: Chrome / Safari

MacOS: Desktop

@robertjchen lint is failing

Fixed the style, but it's now complaining of these items, which can be ignored.

getParentReportAction is used in ReportUtils.ts itself and Onyx is irrelevant there
originalMessage is used in the very function that deprecates its use in ReportActionUtils.ts 😄

Is there a way we can exclude these checks for these files moving forward? Some sort of ignore comment? 🤔
Error:   1539:55  error  'getParentReportAction' is deprecated. Use Onyx.connect() or withOnyx() instead                                              deprecation/deprecation
Error:   1552:55  error  'getParentReportAction' is deprecated. Use Onyx.connect() or withOnyx() instead                                              deprecation/deprecation
Error:   1565:55  error  'getParentReportAction' is deprecated. Use Onyx.connect() or withOnyx() instead                                              deprecation/deprecation
Error:   2214:55  error  'getParentReportAction' is deprecated. Use Onyx.connect() or withOnyx() instead                                              deprecation/deprecation
Error:   2227:55  error  'getParentReportAction' is deprecated. Use Onyx.connect() or withOnyx() instead                                              deprecation/deprecation
Error:   3108:51  error  'getParentReportAction' is deprecated. Use Onyx.connect() or withOnyx() instead                                              deprecation/deprecation
Error:   3715:78  error  'getParentReportAction' is deprecated. Use Onyx.connect() or withOnyx() instead                                              deprecation/deprecation
Error:   4[25](https://github.com/Expensify/App/actions/runs/10894940139/job/30232421816?pr=49242#step:4:26)1:31  error  'originalMessage' is deprecated. Used in old report actions before migration. Replaced by using getOriginalMessage function  deprecation/deprecation
Error:   5992:51  error  'getParentReportAction' is deprecated. Use Onyx.connect() or withOnyx() instead                                              deprecation/deprecation

They come from this announcement. Ideally we should fix them (either on this PR or a separate one)

:hand: This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release.

🚀 Deployed to staging by https://github.com/luacmartins in version: 9.0.37-0 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

🚀 Deployed to production by https://github.com/grgia in version: 9.0.38-4 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅


Account Management

Is your feature request related to a problem? Please describe.
Users need to be able to add and join houses.
Describe the solution you'd like
Once a user is logged in, they need to be able to create or join a house. Detailed specification for the entire milestone is on this page.
For this task, the specs are as follows (not yet final):
Frontend

New users will be shown a screen where they can either create or join a house

Joining a house will require a code
Creating a house will ask the user for some basic information, such as a name

Users in a house will be directed to the dashboard for that house

This task doesn't require the dashboard to be implemented, just that they are redirected to the page

Screens

Page to create new or join house
Page to create a new flat

Backend

New users are created in the database with the Firebase (#40)
Endpoint to get the user's current house
Endpoint to create a new house, owned by the creator.

Usable by people who are not in a house
The house must have a unique associated code that can be used to join it

Endpoint to join a house with a code, that will add the user to that house

Checklist:

[x] I have double checked that the issue does not currently exist.
[x] I have added the appropriate labels (e.g. feature, front-end, back-end).
[x] I have added the Platform Project project

The design of the account-management page.

The UI design about after clicking the create button:


Splitting at "-" or "von" unreliable

Should "-" or "vor" be used other than dividing title and artist the split might not be correct.

For NJOY and Antenne as soon as rust 1.15 comes serde can be used
WDR needs some kind of other solution

Which WDR Channel do you mean?

All of them, since they only provide a single line of text.
I'm tempted to only fix it for NJOY and NDR stations and close it with the tag "wontfix"

Naive attempt at fixing "-"-split by requiring spaces before and after.


Change banner style according to width

Problem
As clearly seen below, the Support Ukraine 🇺🇦 Banner is not changing to fit the screen.
The banenr takes up a lot of space.
Code

As seen on a screenshot of the devtools, it shows us the default style of the banner.
Everything is fine.
However, there is no code for changing the banner style to fit the screen.
File
Looking at the file that contains the style for the banner (website/src/pages/index.module.css), media exists.
@media only screen and (max-width: 768px) {
  .announcement {
    font-size: 18px;
  }
}

@media only screen and (max-width: 500px) {
  .announcement {
    font-size: 15px;
    line-height: 22px;
    padding: 6px 30px;
  }
}

However, the class is set to .announcement and there is no element by the class of .announcement.
But there is an element (the banner) that has the class of announcementBar_yyVl.
I concluded the class should be div[class^='announcementBarContent'].
Screenshots

Tested

Yeah, I noticed this as well on mobile, thanks for sending a PR!. @dmitryvinn does this seem fine? I assume it was copied across Meta projects.

Ping @dmitryvinn


Run Selection/Line in Python Interactive Window outputs "KeyboardInterrupt"

Does this issue occur when all extensions are disabled?: Yes/No

VS Code Version: 1.94.1
OS Version: Windows 11 23H2

Steps to Reproduce:

In .py file, write some simple command, like 4+4, shift-Enter (or Run Selection/Line in Python Interactive Window)

Terminal outputs:
Python 3.12.7 (tags/v3.12.7:0b05ead, Oct  1 2024, 03:06:41) [MSC v.1941 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.

KeyboardInterrupt

4+4
8

Rollback, packages update did not help
code --disable-extensions has no impact (issue is still there)

Duplicate
https://github.com/microsoft/vscode-python/issues/24251


fix(build): set Swift target triple

This fixes some issues when building a Swift package for iOS
This fix was written by @guillemcordoba
Co-authored-by: guillemcordoba

Inception is my favorite movie ever btw @@guillemcordoba thank you for that fix, it also solves some other problems we were facing.


Document does not import after db folder has been deleted.

I am attempting to use chatdocs in different folders, so that each folder refrences a different data set.  I wanted to clear data set A and start over again, so I removed the db folder.  When I added a document to data set A using "chatdocs add /path/to/file" I get the following error message -
Loading new documents: 0it [00:00, ?it/s]
No new documents to load

I attempted to uninstall chatdocs via pip, and reinstall, but I'm still getting the same error message.
When attempting to launch chatdocs from the folder (which no longer has a db) it crashes after being asked a question.
  I was attempting to add teh document itself using
chatdocs add /path/to/pdf/document.pdf

But chat docs needs to be pointed at a folder, not a document....

See above


Reduce Cyclomatic Complexity

Describe the bug
As stated on goreportcard.com:

The cyclomatic complexity of a function is calculated according to the following rules: 1 is the base complexity of a function +1 for each 'if', 'for', 'case', '&&' or '||' Go Report Card warns on functions with cyclomatic complexity > 15.

Link: Actual report for this package (v1.1.2)
Version

v1.1.2 and later
N/A

Additional context
This report is a placeholder for ongoing efforts to reduce cyclomatic complexity within the go-schemax package wherever possible.

(Will be) honored by #16


Add support for type annotations (issue #922)

working to fix macros for scala 2.10

Build fails with 2.13.1, but it looks like the error is related to SBT.

We're waiting on Scala.js to propagate ... won't be long.

Actually, it's scoverage: https://github.com/scoverage/sbt-scoverage/issues/295.

You should be good if you rebase on master.

Rebased.

Got rid of the companion object in 2.10 although there is still a tiny bit that is version specific. I don't see how to get around Types.AnnotatedType, so that part is now isolated in a trait, AnnotationsHelper, defined in folders scala_2.10 and scala_2.11+.

Can you use something like case a: AnnotatedType => a.annots cross versions?

Thanks for the hint!

Got rid of the version specific implementation. Now everything is in the common bundle.

Sorry for the hold up ...
That's great stuff. Many thanks ... merging :-)

I don't think this was released


Generic Attributes on table columns

I am trying to set aria-label attributes on a table header, but I can't get it to work
This is the original md:
|Width { aria-label='width' }|Length { aria-label='length' }|
|---------|---------|
|80cm|200cm|
|90cm|200cm|
|90cm|210cm|
|90cm|220cm|

This renders (ignore the aria-labelledby - it is inserted via javascript because I found no way to add a caption):

Width
Length

80cm
200cm

90cm
200cm

90cm
210cm

90cm
220cm

The call to Markdig looks like this:
var pipeline = new MarkdownPipelineBuilder().UseAdvancedExtensions().Build();
return Markdown.ToHtml($"{{.table-dimensions}}\n{dimensions}", pipeline);

(dimensions is the markdown string)
What am I doing wrong?

I don't think attributes on column are supported. At some point, when you start to use heavily HTML attributes, it might be better to just write the HTML table directly:

WidthLength

80cm200cm

90cm200cm

90cm210cm

90cm220cm


Add sidebar filter for how packages are marked.

Synaptic has a section in the sidebar that filters packages to the ones marked for install, unmarked, marked for upgrade, etc. This would be helpful if people want to see what's going to be installed and stuff and modify it without having to sort the package list by the Action column.
Maybe the "Marked for upgrade" thing could check winget upgrade and mark the available upgrades, too. I'll have to put that into another issue. Might be a good idea to make sure winget upgrade is available for use first, though. Besides, if Store support is on, that means I'll have to also add Store support to handle the upgrades (and installs) there.

Make absolutely sure that there's an option for Action in the sidebar dropdown list. I accidentally started work on this in the Status dropdown, and got the terminology confused with Synaptic.

There's now a tab for Actions with these for now:

All
Do nothing
Install

The `Status` tab now has:

All
Installed
Not installed
Unknown

The Status ones are placeholders for whenever I implement the thing to check which apps are installed.

Something that would probably work when expanding the Search function to cover more than just the package ID would be to pass the column that we want to filter by from the double-click/Enter listbox event handler so the search function can just take the column index rather than it being hard-coded like it is now. Searching by multiple columns at once (such as if the user wants to search both Package and Description) would make it more complicated, though that could be handled by an optional arg that, if it's not Nothing, will be used in an AndAlso thing for the If statement.

Alright, this is done. See #93.


New SDK Reference Website

Check it out at https://amplitude.github.io/Amplitude-JavaScript/
Summary

Created website/ folder containing content for developing and deploying the reference website using docusaurus

Uses npx @docusaurus/init@next init docs classic template and replaces it with amplitude related content

Create website/generate-jsdoc.js that scans src/ and outputs autogenerated markdown docs in website/docs/

Uses jsdoc2md package as an API to interact with jsdoc comments

Created website/README.md for development and deployment instructions

All the generated markdown file shouldn't be checked into master branch.
They should be generated when you trigger a new release and putting them to gh-pages branch.


No win on this task - targetting children of an element

Challenge http://beta.freecodecamp.com/challenges/waypoint-target-the-children-of-an-element-using-jquery has an issue. Please describe how to reproduce it, and include links to screenshots if possible.
<script>
  $(document).ready(function() {
    $('#right-well').children().css('color', 'green')
  });
</script>

The test for the RGB value was incorrect, I have fixed this in https://github.com/FreeCodeCamp/freecodecamp/pull/1706.


🌱 cache: replication controller: attach the shard annotation during object creation

Summary
to avoid an additional UPDATE request, mismatch on the Generation, CreationTime or UID field, replicated objects will have those fields set. by setting the shard name during object creation we instruct the cache server to stop updating/changing those fields in any way. in addition to that, the cache server will remove the annotation before persisting the object because a shard name is calculated based on the storage prefix.
Related issue(s)
requires https://github.com/kcp-dev/kubernetes/pull/106 and https://github.com/kcp-dev/kubernetes/pull/107
part of https://github.com/kcp-dev/kcp/issues/342

/lgtm
/approve


Tracing via dotnet ActivitySource

Reducing the Activity surface to a minimum
Removing redundancy with existing Logger module , in this casing tracing (= ActivitySource) is more appropriate and semantically correct
Bringing up consistent naming
Covering the surface area of BackgroundCompiler (full for any non-trivial public action) and FsharpChecker (if not being just a wrapper over background compiler)
Selecting a few heavier below the call stack for further nested activity tracking
Wrapping the existing ReportTime (used by fsc for example) so that it produces activities as well

@safesparrow
I have done steps o bring this up to date and make a few extensions and cleanups.
I hope this 2-step-PR process will work, especially not sure if my merging actions will get reflected also in the original PR to main repo.

Thanks. The PR is showing lots of files changed. I suspect it's because it contains recent changes from master. Ill have a look at resolving this.

Yes, I merged with origin/master to get it to a fresh state .


🐞 [Bug]: test broken on windows - GitHub action

Contact Details
No response
What happened?
Currently the command npm test Is failing on the GitHub action windows based job due to some issue on the plugin-mongodb-mock... Apparently it's an issue the retrievial a docker container from the Library testcontainer-node.
Detail: https://github.com/restqa/restqa/actions/runs/3548736493/jobs/5965213655
Relevant log output
Error: (HTTP code 404) no such container - No such image: testcontainers/ryuk:0.3.2
    at D:\a\restqa\restqa\node_modules\.pnpm\docker-modem@3.0.6\node_modules\docker-modem\lib\modem.js:336:17
    at getCause (D:\a\restqa\restqa\node_modules\.pnpm\docker-modem@3.0.6\node_modules\docker-modem\lib\modem.js:366:7)
    at Modem.buildPayload (D:\a\restqa\restqa\node_modules\.pnpm\docker-modem@3.0.6\node_modules\docker-modem\lib\modem.js:335:5)
    at IncomingMessage.<anonymous> (D:\a\restqa\restqa\node_modules\.pnpm\docker-modem@3.0.6\node_modules\docker-modem\lib\modem.js:303:16)
    at IncomingMessage.emit (node:events:525:35)
    at endReadableNT (node:internal/streams/readable:1358:12)
    at processTicksAndRejections (node:internal/process/task_queues:83:21) {
  reason: 'no such container',
  statusCode: 404,
  json: { message: 'No such image: testcontainers/ryuk:0.3.2' }
}

🙏 Would you be willing to submit a PR?
Yes
Code of Conduct

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

@cristianrgreco I'm not sure you could support us on that issue 🙏


Allow for explicit updates to offsets

Allow callers to disable auto-committing of offsets and commit that themselves.  Will need to expose enable.auto.commit and possibly enable.auto.offset.store.

This is addressed in #10


TextField becomes focused on navigator back (pop) action

Steps to reproduce

Run app the app, I did test on real device, iPhone 13
press on text field to open keyboard
scroll list to close keyboard
open dialog by pressing plus icon
close dialog by pressing close button or press at dismiss area
boom, you returned to previous page, keyboard appearing, text field again focused, but shouldn't...

Expected results
You return to page with scrolled list with no keyboard opened.
Actual results
Text field is focused and keyboard appearing
Code sample
Code sample
import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      home: const MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});

  final String title;

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Theme.of(context).colorScheme.inversePrimary,
        title: Text(widget.title),
        actions: [
          IconButton(
            onPressed: () {
              showDialog(
                context: context,
                builder: (context) {
                  return Center(
                    child: SizedBox(
                      height: 300,
                      child: Scaffold(
                        backgroundColor: Colors.grey,
                        body: Column(
                          children: [
                            const Row(
                              children: [
                                Text(
                                  'some text',
                                  style: TextStyle(),
                                ),
                              ],
                            ),
                            const Spacer(),
                            TextButton(
                              onPressed: () {
                                Navigator.of(context).pop();
                              },
                              child: const Text('Close'),
                            ),
                          ],
                        ),
                      ),
                    ),
                  );
                },
              );
            },
            icon: const Icon(Icons.add),
          ),
        ],
      ),
      body: Column(
        children: [
          const TextField(),
          Expanded(
            child: ListView(
              keyboardDismissBehavior: ScrollViewKeyboardDismissBehavior.onDrag,
              children: List.generate(
                45,
                (index) => ListTile(
                  title: Text('index: $index'),
                ),
              ),
            ),
          )
        ],
      ),
    );
  }
}

Screenshots or Video

Screenshots / Video demonstration
[Upload media here]

Logs
Logs
[Paste your logs here]

Flutter Doctor output
Doctor output
[✓] Flutter (Channel stable, 3.22.2, on macOS 14.5 23F79 darwin-arm64, locale en-UA)
[✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
[✓] Xcode - develop for iOS and macOS (Xcode 15.4)
[✓] Chrome - develop for the web
[✓] Android Studio (version 2022.3)
[✓] VS Code (version 1.83.1)
[✓] Connected device (4 available)
[✓] Network resources

• No issues found!

Hi, @huycozy, did a test, really looks solved on Channel master, 3.24.0-1.0.pre.202
iPhone 13, iOS 17.5.1

Glad to know. Closing this as fixed.


Promoting a statement-terminating error to a script-terminating one results in unhelpful $Error entry.

Note: The behavior may be an indication that there never should have been statement-terminating errors to begin with, only script-terminating ones, as reflected in the current documentation neglecting to make this important distinction.
In practice, an (uncaught) statement-terminating error (e.g., 1 / 0 or Get-Item -NoSuchParam) does not terminate the script, but can be made to do so via $ErrorActionPreference = 'Stop', against documented behavior (but not with -ErrorAction Stop).
If you do, so you get:

the usual error record reflecting the statement-terminating error  in $Error
an additional, unhelpful $Error entry that is simply a part of the statement-terminating-error record, namely the underlying exception.

In other words: you get 2 $Error entries, with the exception-only entry coming after (reflected in $Error[0] immediately after, with $Error[1] containing the statement-terminating-error record.
The exact relationship is:
[object]::ReferenceEquals($Error[1].exception, $Error[0]) # -> $True

Contrast this with promoting a non-terminating error to a script-terminating one, where you also get 2 entries, but the extra entry is a helpful exception ([System.Management.Automation.ActionPreferenceStopException]) whose message reflects the fact of the promotion:
# Promote a non-terminating error to a script-terminating one.
> $Error.Clear(); Get-Item -ErrorAction Stop /NoSuchItem
Get-Item : Cannot find path '/NoSuchItem' because it does not exist.
...
# Print the message of the extra $Error entry that was recorded.
# (exception System.Management.Automation.ActionPreferenceStopException)
> $Error[0].Message
The running command stopped because the preference variable "ErrorActionPreference" or common parameter is set to Stop: Cannot find path '/NoSuchItem' because it does not exist.

Steps to reproduce
$Error.Clear(); $ErrorActionPreference = 'stop'; Get-Item -NoSuchSwitch
'---'
$Error | % GetType | % Name

Expected behavior
I'm describing expected behavior from the perspective of consistency with how things work with non-terminating errors:
Get-Item : A parameter cannot be found that matches parameter name 'NoSuchSwitch'.
...
---
ActionPreferenceStopException  # indicate promotion to script-terminating error
ErrorRecord

Actual behavior
Get-Item : A parameter cannot be found that matches parameter name 'NoSuchSwitch'.
...
---
ParameterBindingException # !! Simply duplicated the .Exception value of $Error[1]
ErrorRecord

Environment data

PowerShell Core v6.0.0-beta.6 on macOS 10.12.6
PowerShell Core v6.0.0-beta.6 on Ubuntu 16.04.3 LTS
PowerShell Core v6.0.0-beta.6 on Microsoft Windows 10 Pro (64-bit; v10.0.15063)
Windows PowerShell v5.1.15063.502 on Microsoft Windows 10 Pro (64-bit; v10.0.15063)

Wouldn't a more appropriate expected behavior for this be a single entry in $error consisting of the ErrorRecord that identifies the error, with Exception referencing an ActionPreferenceStopException that has an InnerException of ParameterBindingException?
i.e. Why are we generating two entries in $error for what an end user perceives as a single error?
Similarly, when you have a ParseException, why are we adding an exception of type ParseException to that contains an ErrorRecord with an Exception of type ParentContainsErrorRecordException to $error? Why don't we simply add an ErrorRecord that contains an exception of type ParseException instead?
In either case, these changes could possibly be breaking for anyone who had built tooling that processes $error or that performs error handling, so does it matter? I'm not asking that because I feel these changes should be made -- the fact that raw exceptions are added to $error and they way they are added makes it more difficult to process errors since the contents of the collection are inconsistent -- but I do wonder if it's worth my time to go through and try to correct such issues (which I would do, because I'm spending a lot of time with the PowerShell parser and debugger right now). I suppose an RFC is in order to discuss the collection of issues and propose a fix that would be beneficial enough to implement.


[tool_crash] ArgumentError: Invalid argument(s): Cannot find executable for E:\development\AndroidProjects\y-merchants-flutter-module-2.0.fvm\flutter_sdk\bin\cache\artifacts\engine\android-arm-release\windows-x64\gen_snapshot.

Command
flutter --quiet assemble --depfile E:\development\AndroidProjects\y-merchants-flutter-module-2.0\.android\Flutter\build\intermediates\flutter\release/flutter_build.d --output E:\development\AndroidProjects\y-merchants-flutter-module-2.0\.android\Flutter\build\intermediates\flutter\release -dTargetFile=lib/main.dart -dTargetPlatform=android -dBuildMode=release -dTrackWidgetCreation=true android_aot_bundle_release_android-arm android_aot_bundle_release_android-arm64 android_aot_bundle_release_android-x64

Steps to Reproduce

...
...
...

Logs
ArgumentError: Invalid argument(s): Cannot find executable for E:\development\AndroidProjects\y-merchants-flutter-module-2.0.fvm\flutter_sdk\bin\cache\artifacts\engine\android-arm-release\windows-x64\gen_snapshot.
#0      _getExecutable (package:process/src/interface/local_process_manager.dart:124:5)
#1      LocalProcessManager.start (package:process/src/interface/local_process_manager.dart:40:30)
#2      ErrorHandlingProcessManager.start.<anonymous closure> (package:flutter_tools/src/base/error_handling_io.dart:638:33)
#3      _run (package:flutter_tools/src/base/error_handling_io.dart:532:20)
#4      ErrorHandlingProcessManager.start (package:flutter_tools/src/base/error_handling_io.dart:638:12)
#5      _DefaultProcessUtils.start (package:flutter_tools/src/base/process.dart:472:28)
#6      _DefaultProcessUtils.stream (package:flutter_tools/src/base/process.dart:491:35)
#7      GenSnapshot.run (package:flutter_tools/src/base/build.dart:73:26)
#8      AOTSnapshotter.build (package:flutter_tools/src/base/build.dart:194:56)
#9      AndroidAot.build (package:flutter_tools/src/build_system/targets/android.dart:232:52)
#10     _BuildInstance._invokeInternal (package:flutter_tools/src/build_system/build_system.dart:796:27)
<asynchronous suspension>
#11     Future.wait.<anonymous closure> (dart:async/future.dart)
<asynchronous suspension>
#12     _BuildInstance.invokeTarget (package:flutter_tools/src/build_system/build_system.dart:734:32)
<asynchronous suspension>
#13     Future.wait.<anonymous closure> (dart:async/future.dart)
<asynchronous suspension>
#14     _BuildInstance.invokeTarget (package:flutter_tools/src/build_system/build_system.dart:734:32)
<asynchronous suspension>
#15     FlutterBuildSystem.build (package:flutter_tools/src/build_system/build_system.dart:563:16)
<asynchronous suspension>
#16     AssembleCommand.runCommand (package:flutter_tools/src/commands/assemble.dart:220:32)
<asynchronous suspension>
#17     FlutterCommand.verifyThenRunCommand (package:flutter_tools/src/runner/flutter_command.dart:1157:12)

[✓] Flutter (Channel unknown, 2.0.5, on Microsoft Windows [Version 10.0.19043.1055], locale zh-CN)
    • Flutter version 2.0.5 at E:\development\AndroidProjects\y-merchants-flutter-module-2.0\.fvm\flutter_sdk
    • Framework revision adc687823a (2 months ago), 2021-04-16 09:40:20 -0700
    • Engine revision b09f014e96
    • Dart version 2.12.3
    • Pub download mirror https://pub.flutter-io.cn
    • Flutter download mirror https://storage.flutter-io.cn

[✗] Android toolchain - develop for Android devices
    ✗ Unable to locate Android SDK.
      Install Android Studio from: https://developer.android.com/studio/index.html
      On first launch it will assist you in installing the Android SDK components.
      (or visit https://flutter.dev/docs/get-started/install/windows#android-setup for detailed instructions).
      If the Android SDK has been installed to a custom location, please use
      `flutter config --android-sdk` to update to that location.

[✗] Chrome - develop for the web (Cannot find Chrome executable at .\Google\Chrome\Application\chrome.exe)
    ! Cannot find Chrome. Try setting CHROME_EXECUTABLE to a Chrome executable.

[!] Android Studio (not installed)
    • Android Studio not found; download from https://developer.android.com/studio/index.html
      (or visit https://flutter.dev/docs/get-started/install/windows#android-setup for detailed instructions).

[✓] Connected device (1 available)
    • Edge (web) • edge • web-javascript • Microsoft Edge 91.0.864.54

! Doctor found issues in 3 categories.

Flutter Application Metadata
Type: module
Version: 1.0.0+1
Material: true
Android X: true
Module: true
Plugin: false
Android package: com.example.flutter_module
iOS bundle identifier: com.example.flutterModule
Creation channel: stable
Creation framework version: f7a6a7906be96d2288f5d63a5a54c515a6e987fe
Plugins
fluttertoast-8.0.7
loading_indicator_view-1.1.0
path_provider-2.0.2
path_provider_linux-2.0.0
path_provider_macos-2.0.0
path_provider_windows-2.0.1
shared_preferences-2.0.6
shared_preferences_linux-2.0.0
shared_preferences_macos-2.0.0
shared_preferences_web-2.0.0
shared_preferences_windows-2.0.0
sqflite-2.0.0+3
url_launcher-6.0.7
url_launcher_linux-2.0.0
url_launcher_macos-2.0.0
url_launcher_web-2.0.1
url_launcher_windows-2.0.0

@Terran-Marine
Check if bin\cache\artifacts\engine\android-arm-release\windows-x64\ path has gen_snapshot.exe file. It may be possible that it could have been deleted by security software by accident.
Also, a similar issue was fixed, #68475 few months ago. So you should upgrade your version to get latest fixes.
I am going ahead and closing this as already fixed. Solution is to upgrade version (to latest stable or master). If after upgrading, you still see the same issue, write in comments and I'll reopen it.
Thanks.


Change version of com.github.caciocavallosilano

Change version of com.github.caciocavallosilano to support java 8

runtests


HTML email

This contains everything from #4 and #10 for HTML emails.

Since this is such a huge pull request it's quite hard to review and test.
I'm going to run it on a copy of production to see if there's any big problems. I'll take a look at a few of the emails it generates too.
I'll then also cast my eye over the code to see if there's any issues I can spot.
Once that's done I think it's ready to go. Is that right @mattjoyce?

Are you able to write the output to a html file? Then I can run that through some email browsers to give it a final test. One for the MP version, another for the phrase version if possible

@davidjeliba I generated an email for you can you please give it a final test?

@henare looking back at the send function, I don't think this is multipart.
Unless we fix the multipart emails, we will have to introduce a user option for Text or HTML.
I will take a look this evening.

I'll then also cast my eye over the code to see if there's any issues I can spot.

I've done this and can't spot any big obvious issues.

I'm going to run it on a copy of production to see if there's any big problems. I'll take a look at a few of the emails it generates too.

Using production data this crashes and doesn't generate emails for any alerts. Let me know the outcome of your testing @mattjoyce.

The actual test of the HTML can be seen here. http://imgur.com/a/KsQ0w
Agreed that I don't think it's multipart yet and the placeholder {ITEM_URL} isn't populated and can still be seen in the HTML output from the code.

Thanks David, good catch.
I think I have fixed the multipart issue, and looking at {ITEM_URL} now.
On Sun, Feb 15, 2015 at 5:43 PM, davidjeliba<EMAIL_ADDRESS>wrote:

The actual test of the HTML can be seen here. http://imgur.com/a/KsQ0w
Agreed that I don't think it's multipart yet and the placeholder
{ITEM_URL} isn't populated and can still be seen in the HTML output from
the code.
—
Reply to this email directly or view it on GitHub
https://github.com/openaustralia/twfy/pull/11#issuecomment-74406343.

--
+61 468 335597
LinkedIn Profile : Matt Joyce
http://au.linkedin.com/pub/matthew-joyce/6/4b5/6a4/

OK, I have added in the ITEM_URL, which is the link 'Full Debate' for each
item.
I am 100% certain I am sending the correct link, but yahoo mail seems to
remove an '=' from the link query which just breaks it.
I see the correct link query in gmail.
More frustratingly, with multipart in use, Yahoo displays fine, but Gmail
shows the whole thing as text.
On Sun, Feb 15, 2015 at 8:02 PM, Matt Joyce<EMAIL_ADDRESS>wrote:

Thanks David, good catch.
I think I have fixed the multipart issue, and looking at {ITEM_URL} now.
On Sun, Feb 15, 2015 at 5:43 PM, davidjeliba<EMAIL_ADDRESS>wrote:

The actual test of the HTML can be seen here. http://imgur.com/a/KsQ0w
Agreed that I don't think it's multipart yet and the placeholder
{ITEM_URL} isn't populated and can still be seen in the HTML output from
the code.
—
Reply to this email directly or view it on GitHub
https://github.com/openaustralia/twfy/pull/11#issuecomment-74406343.

--
+61 468 335597
LinkedIn Profile : Matt Joyce
http://au.linkedin.com/pub/matthew-joyce/6/4b5/6a4/

--
+61 468 335597
LinkedIn Profile : Matt Joyce
http://au.linkedin.com/pub/matthew-joyce/6/4b5/6a4/

Can you provide an output of the HTML with the headers so I can help out with debugging?

Yes, here's the final email body before sending as email.
https://gist.github.com/mattjoyce/50347e6d54f4b87a32d6
I have ordered the content, with most preferred last, as per RFC.
For the weird lin issue, searching for '?id=', finds all the debate links,
which work if you cut/paste to a browser.
But in Yahoo mail, the equal sign is missing.   In Gmail they are not
missing.
Yahoo looks find, not functional.
Gmail looks awful, functional links.
On Mon, Feb 16, 2015 at 7:21 AM, davidjeliba<EMAIL_ADDRESS>wrote:

Can you provide an output of the HTML with the headers so I can help out
with debugging?
—
Reply to this email directly or view it on GitHub
https://github.com/openaustralia/twfy/pull/11#issuecomment-74434854.

--
+61 468 335597
LinkedIn Profile : Matt Joyce
http://au.linkedin.com/pub/matthew-joyce/6/4b5/6a4/

OK so I have had a look at the issues. For the Yahoo link issue I believe they might be stripping out the id parameter of the url. If you inspect the anchor you will see that it looks something like this in Yahoo Mail:

See more

So it looks like id might be interfered with by their parsing software. Is there any way to make add a work-around parameter that just maps back to ID in the system?
As for the plain text rendering in GMail I think the headers might need a bit of work. From your gist where you have:

--mime-boundary-54dfad52a3066

on the first line. I think you will need to add in these headers before that:

Content-Type: multipart/alternative; boundary="mime-boundary-54dfad52a3066"
MIME-Version: 1.0

Let me know how it goes.

Apologies the gist I shared was just the Subject and below.
The header I'm generating is this :
X-Mailer: PHP/5.2.14
MIME-Version: 1.0
Precedence: bulk
From: OpenAustralia.org<EMAIL_ADDRESS>Reply-To: OpenAustralia.org<EMAIL_ADDRESS>Content-Type: multipart/alternative;boundary="mime-boundary-54dfad52a3066"
My understanding from the RFC is that anything between boundaries, will be
considered for rendering, and the preference will be the version farthest
down the content.
Can you share an email address and I will send an example email to you?
On Mon, Feb 16, 2015 at 9:39 AM, davidjeliba<EMAIL_ADDRESS>wrote:

OK so I have had a look at the issues. For the Yahoo link issue I believe
they might be stripping out the id parameter of the url. If you inspect the
anchor you will see that it looks something like this in Yahoo Mail:
See more
So it looks like id might be interfered with by their parsing software. Is
there any way to make add a work-around parameter that just maps back to ID
in the system?
As for the plain text rendering in GMail I think the headers might need a
bit of work. From your gist where you have:
--mime-boundary-54dfad52a3066
on the first line. I think you will need to add in these headers before
that:
Content-Type: multipart/alternative; boundary="mime-boundary-54dfad52a3066"
MIME-Version: 1.0
Let me know how it goes.
—
Reply to this email directly or view it on GitHub
https://github.com/openaustralia/twfy/pull/11#issuecomment-74441399.

--
+61 468 335597
LinkedIn Profile : Matt Joyce
http://au.linkedin.com/pub/matthew-joyce/6/4b5/6a4/

djeliba [at] gmail

Weird thing about the yahoo issue is, I provided an alternate query token
'oaid', and the equal sign was still missing.
Changed it to 'oadebate', same deal.
Not sure what the next move is.
On Mon, Feb 16, 2015 at 9:39 AM, davidjeliba<EMAIL_ADDRESS>wrote:

OK so I have had a look at the issues. For the Yahoo link issue I believe
they might be stripping out the id parameter of the url. If you inspect the
anchor you will see that it looks something like this in Yahoo Mail:
See more
So it looks like id might be interfered with by their parsing software. Is
there any way to make add a work-around parameter that just maps back to ID
in the system?
As for the plain text rendering in GMail I think the headers might need a
bit of work. From your gist where you have:
--mime-boundary-54dfad52a3066
on the first line. I think you will need to add in these headers before
that:
Content-Type: multipart/alternative; boundary="mime-boundary-54dfad52a3066"
MIME-Version: 1.0
Let me know how it goes.
—
Reply to this email directly or view it on GitHub
https://github.com/openaustralia/twfy/pull/11#issuecomment-74441399.

--
+61 468 335597
LinkedIn Profile : Matt Joyce
http://au.linkedin.com/pub/matthew-joyce/6/4b5/6a4/

Hi Matt,
The email you sent to my gmail account was a forward from Yahoo and it appeared as the HTML version in gmail. I would need a version sent directly from the system rather than via Yahoo to confirm if gmail is an issue or not.
Will need to think about the Yahoo link issue in more depth, might be something weird with the value after the equals sign that it doesn't link. Can you try just hard coding "?id=test" to see if it still gets interfered with?

@mattjoyce: Not sure what the next move is.

I thought I'd jump in and see where we're at. There still seems to be lots of problems that we have to fix and I'm not even clear from reading the conversation between David and Matt which problems we've fixed and which ones are still to be fixed.
So, what I propose is that we create issues for each problem as we discover it so that we can track this. You can probably see I've already opened a bunch myself, can both of you please do the same for any outstanding problem?

@davidjeliba: I would need a version sent directly from the system rather than via Yahoo to confirm if gmail is an issue or not.

In my testing I sent one to my Gmail and I've done the same for you David. Let me know if I can help with any further tests like these.
Onward! :rocket:

Thanks, that makes sense.  My multi threaded comments don't help.
On Tue, Feb 17, 2015 at 4:59 PM, Henare Degan<EMAIL_ADDRESS>wrote:

@mattjoyce https://github.com/mattjoyce: Not sure what the next move is.
I thought I'd jump in and see where we're at. There still seems to be lots
of problems that we have to fix and I'm not even clear from reading the
conversation between David and Matt which problems we've fixed and which
ones are still to be fixed.
So, what I propose is that we create issues for each problem as we
discover it so that we can track this. You can probably see I've already
opened a bunch myself, can both of you please do the same for any
outstanding problem?
@davidjeliba https://github.com/davidjeliba: I would need a version
sent directly from the system rather than via Yahoo to confirm if gmail is
an issue or not.
In my testing I sent one to my Gmail and I've done the same for you David.
Let me know if I can help with any further tests like these.
Onward! [image: :rocket:]
—
Reply to this email directly or view it on GitHub
https://github.com/openaustralia/twfy/pull/11#issuecomment-74620877.

--
+61 468 335597
LinkedIn Profile : Matt Joyce
http://au.linkedin.com/pub/matthew-joyce/6/4b5/6a4/

What is the status of this pull? It would be nice to see HTML alerts coming through.

@davidjeliba there are still critical issues to be resolved - see the linked issues above.

@davidjeliba Current status is 1 issue assigned to @mattjoyce to resolve and 2 assigned to me to test, which I hope to do soon.

@henare final issue should be fixed, but my dev system does not deliver email anymore (!), so actual sending as an unregistered user has not been tested properly.  High confidence.

In @mattjoyce's most recent email to me asking to test this pull request he said he'd put in a ton of work to this, which he absolutely has. So has @davidjeliba and others, including myself. Thank you to everyone for this work.
Given that, it's hard to say what I'm about to say - I'm not merging this pull request and I'm going to close it.
To be honest I was a little scared that everything would work and I'd have to end up supporting a difficult and confusing extra bit of code (as you can appreciate it's hard work maintaining what we have already!). However I needn't have worried because the most recent commits are so badly broken that after I had invested half a day of my time in preparing a test environment the code didn't even run!
The simple reason it didn't even run is that there are multiple instances of Git cruft committed in the most recent commit: https://github.com/openaustralia/twfy/commit/3d544af37051a241b8437c245779fff06cc43c37#diff-5a18b13c180b3ec44fc8a7d6cf973e20R116
Sadly this says to me that the engineering of this pull request is just not up to scratch. Even if we get it running and merge this it would be a nightmare to support. We need to remember that the citizens using OpenAustralia.org.au are the most important part of this equation and if email alerts break it's obviously no good for them.
However all is not lost! Even though I'm closing this now, the work everyone has done can be picked back up at a later time. We don't have any immediate plans to work on this feature but I honestly hope that it's cleaned up and merged by someone down the line.
Thanks again for all your work. I'm as sorry as you are about the present outcome.

@henare Fair enough if the system cannot handle HTML emails in its current state but to not continue with trying to implement HTML emails is disappointing. They make the alerts so much more digestible, you could expand your audience to those looking for a more accessible summary of information.
The current plain text emails are hard to read and exclude a lot of people who are interested in politics but cannot be bothered to shift through walls of plain text emails.

Help me understand what happened.  Did I break something?
I can understand the trepidation, with all the spaghetti, but I think the
the feature is worthy of continued effort.
There is a couple of options worth considering:

Have two mailers, one using the existing code, and another using the new
code, and only including a small pilot set of recipients for the new code.
Myself and David perhaps.
Start again, and this time instead of trying to modify the existing
code, change the approach to make it easier.
I would like to suggest separating into two stages, first pass, extract all
the data needed for a mail run to temporary tables, second pass simply
process the data with a template, perhaps using an existing tool or service.

Happy to have a chat and a beer, and open to ideas.
Matt
On Wed, Jun 24, 2015 at 2:13 PM, davidjeliba<EMAIL_ADDRESS>wrote:

@henare https://github.com/henare Fair enough if the system cannot
handle HTML emails in its current state but to not continue with trying to
implement HTML emails is disappointing. They make the alerts so much more
digestible, you could expand your audience to those looking for a more
accessible summary of information.
The current plain text emails are hard to read and exclude a lot of people
who are interested in politics but cannot be bothered to shift through
walls of plain text emails.
—
Reply to this email directly or view it on GitHub
https://github.com/openaustralia/twfy/pull/11#issuecomment-114722942.

--
+61 468 335597
LinkedIn Profile : Matt Joyce
http://au.linkedin.com/pub/matthew-joyce/6/4b5/6a4/

I'm stoked you're both still keen on proceeding, thank you! I totally agree with you both that the feature is very desirable and worth working on. After all, I use the email alerts too :smile:
To clarify what I mean about having no immediate plans to work on it. While we don't have any time allocated to work on OpenAustralia.org.au, if a pull request was submitted that was clear, easily understandable, and well tested then we could merge and deploy it without issue.
There are major problems with this pull request. I was happy to keep working through them but the most recent round of failures forced me to stop and think.

@mattjoyce Help me understand what happened. Did I break something?

As per the link in my last comment, the most recent commit contains Git merge cruft in the code (amongst so much else). We're working on a big, difficult feature that requires care and attention to detail. If I'm asked to review a pull request and the most simple of checks hasn't been done, i.e. not committing heaps of junk you don't mean to, then it gives me no confidence whatsoever that any of the other important tests have passed or been tried at all.
I'm so concerned that this doesn't do what it says it's going to do that I think there is still a massive amount of work involved before we could merge it.

Long running pull requests are never a good thing (and this one's two years old). They're a pretty good indicator that there's something wrong with the way you're approaching a problem. Getting smaller changes merged is far easier and safer - they're so much easier to understand.
Building ways to test new things out without affecting everyone else is also a great idea so I like your suggestion about building in a feature flag or something @mattjoyce.
@mattjoyce What I propose is that you create a new issue and write up a debrief on this pull request. What was the approach we tried? What worked well? What didn't work well or was difficult to understand or implement? What options do we have for implementing the feature? How could we split the work up into smaller, more manageable chunks? That sort of thing.
We can then use that issue to hammer out an approach before starting fresh. How does that sound?

Yes, I see what you mean about the Git commits.  That was almost certainly
my lack of experience with Git.
If we were to abandon the last commit, the remaining work is actually quite
solid.
The commits prior to that were small, and commented.
With regards to testing, clearly I should have been more thorough.
There's a few lessons here, and I'm going to have a bit of a think....
On Thu, Jun 25, 2015 at 10:04 AM, Henare Degan<EMAIL_ADDRESS>wrote:

I'm stoked you're both still keen on proceeding, thank you! I totally
agree with you both that the feature is very desirable and worth working
on. After all, I use the email alerts too [image: :smile:]
To clarify what I mean about having no immediate plans to work on it.
While we don't have any time allocated to work on OpenAustralia.org.au,
if a pull request was submitted that was clear, easily understandable, and
well tested then we could merge and deploy it without issue.
There are major problems with this pull request. I was happy to keep
working through them but the most recent round of failures forced me to
stop and think.
@mattjoyce https://github.com/mattjoyce Help me understand what
happened. Did I break something?
As per the link
https://github.com/openaustralia/twfy/commit/3d544af37051a241b8437c245779fff06cc43c37#diff-5a18b13c180b3ec44fc8a7d6cf973e20R116
in my last comment, the most recent commit contains Git merge cruft in the
code (amongst so much
https://github.com/openaustralia/twfy/commit/3d544af37051a241b8437c245779fff06cc43c37
else). We're working on a big, difficult feature that requires care and
attention to detail. If I'm asked to review a pull request and the most
simple of checks hasn't been done, i.e. not committing heaps of junk you
don't mean to, then it gives me no confidence whatsoever that any of the
other important tests have passed or been tried at all.
I'm so concerned that this doesn't do what it says it's going to do that I
think there is still a massive amount of work involved before we could
merge it.
Long running pull requests
https://github.com/blog/1378-view-long-running-pull-requests are never
a good thing (and this one's two years old). They're a pretty good
indicator that there's something wrong with the way you're approaching a
problem. Getting smaller changes merged is far easier and safer - they're
so much easier to understand.
Building ways to test new things out without affecting everyone else is
also a great idea so I like your suggestion about building in a feature
flag or something @mattjoyce https://github.com/mattjoyce.
@mattjoyce https://github.com/mattjoyce What I propose is that you
create a new issue and write up a debrief on this pull request. What was
the approach we tried? What worked well? What didn't work well or was
difficult to understand or implement? What options do we have for
implementing the feature? How could we split the work up into smaller, more
manageable chunks? That sort of thing.
We can then use that issue to hammer out an approach before starting
fresh. How does that sound?
—
Reply to this email directly or view it on GitHub
https://github.com/openaustralia/twfy/pull/11#issuecomment-115050434.

--
+61 468 335597
LinkedIn Profile : Matt Joyce
http://au.linkedin.com/pub/matthew-joyce/6/4b5/6a4/


🚨 Fix warnings

Thanks! That's been annoying me for a while haha. Would still like to fix it upstream when I get a chance.


Board Review: OpenTelemetry Exporter to Azure Monitor

The Basics

Service team responsible for the client library: Azure Monitor / Application Insights (https://github.com/Azure/azure-sdk/issues/1621)
Link to documentation describing the service: https://github.com/Azure/azure-sdk/issues/1621
Contact email (if service team, provide PM and Dev Lead): @ramthi @reyang

About this client library

Name of the client library: Microsoft.OpenTelemetry.Exporter.AzureMonitor
Languages for this review: C#, Java, JavaScript and Python
Link to the service REST APIs: https://github.com/Azure/azure-rest-api-specs/blob/master/specification/applicationinsights/data-plane/Monitor.Exporters/preview/2020-09-15_Preview/swagger.json
This library takes a dependency on OpenTelemetry library in all languages.
OpenTelemetry specification

Namespace and package names
Python:
microsoft-opentelemetry-exporter-azuremonitor
JS:
@microsoft/opentelemetry-exporter-azure-monitor
C#:
Microsoft.OpenTelemetry.Exporter.AzureMonitor
Java:
Group ID - com.microsoft
Artifact name - microsoft-opentelemetry-exporter-azuremonitor
Artifacts required (per language)
We use an API review tool (apiview) to support .NET and Java API reviews.  For Python and TypeScript, use the API extractor tool, then submit the output as a Draft PR to the relevant repository (azure-sdk-for-python or azure-sdk-for-js).
.NET

apiview
Link to samples for champion scenarios:
https://github.com/Azure/azure-sdk-for-net/blob/master/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/tests/Azure.Monitor.OpenTelemetry.Exporter.Demo.Tracing/DemoTrace.cs#L16-L25

Java

apiview
Link to samples for champion scenarios: https://github.com/Azure/azure-sdk-for-java/tree/master/sdk/monitor/azure-monitor-opentelemetry-exporter/src/samples/java/com/azure/monitor/opentelemetry/exporter

Python

apiview
Link to samples for champion scenarios: https://github.com/Azure/azure-sdk-for-python/tree/master/sdk/monitor/azure-monitor-opentelemetry-exporter/samples/traces

TypeScript

apiview
Link to samples for champion scenarios: Samples

Champion Scenarios
A champion scenario is a use case that the consumer of the client library is commonly expected to perform.  Champion scenarios are used to ensure the developer experience is exemplary for the common cases.  You need to show the entire code sample (including error handling, as an example) for the champion scenarios.

Champion Scenario:

Send tracing data to Azure Monitor for troubleshooting and business analytics.

50% of the user would enable this feature.

An online retail business has an Order Management Service which interacts with multiple services like payments, logistics, inventory, address book etc and each of these services can further make calls to other services or to application databases. In order to troubleshoot issues with an order, the company wants to enable distributed tracing to track each request originating from the order management service.
This service is using Azure Core OpenTelemetry tracing library for capturing trace data and wants to export this to Azure Monitor to view the trace information on Application Insights portal. The library we are discussing in today's arch board does the exporting part. Note that there are other exporters and visualizing tools available like Jaeger, Zipkin etc that also follow the OpenTelemetry specifications and the service should be able to use any of these exporters.
Instrumenting application code for distributed tracing
https://opentelemetry.io/docs/concepts/instrumenting/
Agenda for the review
The Part 1 intro meeting was in August: https://github.com/Azure/azure-sdk/issues/1621
The Agenda is to review the package name, Microsoft.
A board review is generally split into two parts, with additional meetings as required
Part 1 - Introducing the board to the service:

Review of the service (no more than 10 minutes).
Review of the champion scenarios.
Get feedback on the API patterns used in the champion scenarios.

After part 1, you may schedule additional meetings with architects to refine the API and work on implementation.
Part 2 - the "GA" meeting

Scheduled at least one week after the APIs have been uploaded for review.
Will go over controversial feedback from the line-by-line API review.
Exit meeting with concrete changes necessary to meet quality bar.

Thank you for your submission

scheduled for 11/18

For Python, API docs are not available yet for new release, previous API documentation is available here
https://opentelemetry-azure-monitor-python.readthedocs.io/en/latest/azure_monitor/export/export.trace.html
@rakshith91 is this going to be available in https://azure.github.io/azure-sdk-for-python/monitor.html ?
Samples code is available here:
https://github.com/Azure/azure-sdk-for-python/tree/master/sdk/monitor/microsoft-opentelemetry-exporter-azuremonitor/samples/traces

Recording from yesterday's arch board meeting - https://web.microsoftstream.com/video/b32ca1ff-0400-b9eb-cab9-f1eb29fa697c

second review scheduled for 2/11

The Azure SDK architects along with @reyang have finalized the namespace and package name for the Exporters.
Python:
azure-monitor-opentelemetry-exporter
Java:
Group - com.azure
Artifact - azure-monitor-opentelemetry-exporter
.NET
Azure.Monitor.OpenTelemetry.Exporter
JS/TS
@azure/monitor-opentelemetry-exporter

Recording from 2/11 arch board meeting