Draft a policy on email lists and slack channels

The goal of this policy is to write down how mailing lists (both public and restricted) are set up in astropy. Who gets to be a member? Is the content available openly? Are the lists moderated?
This is a WIP for several reasons:

This not an "as-is" (e.g. I don't know if any of our mailing lists are currently moderated), but an "as I want it to be" that needds discussion and community consensus.
I may not be aware of all communication channels used. Missing channels need to be added (with membership restriction as appropriate) - please add comments or PRs to my branch.

I think this is a policy that's way below the level of e.g. APE0, thus I think it's appropriate to suggest this as a PR in the project repository. Like an APE, it should probably annouced on astropy-dev, when the list of lists is more complete.
Edit: After review by a number of people and rewording to avoid the "missing channels still need to be added" problem mentions above, I've removed the WIP label.

It would be helpful if everyone reading this can leave a thumbs up / down or comment, so that we know if there is community consensus. Without feedback it's hard to know if everyone agrees or just nobody bothers to read this issue ;-)
e.g. @Cadair did a review, but only left a grammatical comment. Not sure if that means he's agreeing in general?

If having written policies ensure that certain individuals don't step through a line to arbitrarily censor just because they have unlimited technical power, then it's 💯

@hamogu , can you please address the remaining comments and then we can merge? Thanks!

Do we have to mention anything about that Facebook group, even if to say that it is not under our control?

Where is that mentioned, and which one is it? https://www.facebook.com/groups/astropython/ is administrated by Tom, Erik and Kelle, so why perhaps not formally linked to the project, it should certainly be under our control at this point.

p.s. Which Tom?

It is "for users of Python in Astronomy", though not strictly scoped on Astropy only.
The 3 admins are all Core Team members, but there is probably no formal structure to control it. Also @astrofrog and @eteq seem to have been fairly inactive on Facebook for about as long as this PR, so it is probably mostly down to @kelle atm.
Also we have tried to endorse Discourse as the preferred communication channel, but there are still various roles and some funds allocated to taking care of Facebook communication. I am not sure if that falls within the scope of this policy though.

Since this policy has been drafted in 2020, it has become clear to me that

the channels we use change to frequently that it is not realistic to have a specific policy and keep it up to date with specific channels - one just has to look at the comments above to see how things change; one particular point is the fluctuating effectiveness of spam filters in various channels.

There is also some overlap between this text and the Code of Conduct in that both say what's allowed and what's not, who can enforce it etc. We discussed updated to the Code of Conduct at the Coordination meeting in 2023, and I think it's better to roll access to things in there than to have the separate document drafted in this PR.

I don't want to re-invent NASA (or ESA for that matter), where there is a multi-page policy document for everything. I do believe that the point I tried to make in this PR (open access, fair and equal treatment of all members moderation as little as possible) are important, but I no longer think that a standalone txt file in a repro few people read is the way to guarantee that. Also, I am not convinced that the policy as written here would have prevented any problems we had in the past, and thus it likely also would not prevent new problems in the future.
I have thus chosen to close this PR, but I want to thank all people who helped me improve the text of this policy in this PR and I hope you don't feel you effort is wasted. If you strongly disagree with this decision, please feel comment and make a suggestion on how to move this forward.


Don't remove noscript tags

Further explanation here: https://github.com/rails/turbolinks/issues/523

:+1:
Agree with what you said in #523.
Since this is a breaking change, could you add a changelog entry?

Sure. Added.

Thanks!


[Examples] Potential typo in MIRNet example

Hello @soumik12345, thank you for the great MIRNet example!
While working on an adaptation of your model I saw that the variable level2_dau_2 in line 347 is never used in the code. Could it be that there's a typo in line 352 and that it should be level2_dau_2 instead of level3_dau_2?
-      skff_ = selective_kernel_feature_fusion(level1_dau_2, level3_dau_2, level3_dau_2)
+      skff_ = selective_kernel_feature_fusion(level1_dau_2, level2_dau_2, level3_dau_2)

I would like to work on this issue to sort this and close the issue .. Can you assign this to me and specify a bit more on what needs to be changed

Sure, feel free to take this over. Nothing to assign yet, as no PR was issued yet. And the only thing that needs to be changed, assuming that this is a typo, is the line indicated in my initial statement.

Hi @miykael ,
The proposed PR has been merged with master branch and now i can see the changes. Please refer the code in master branch attached below and if satisfied please feel free to close the issue.
https://github.com/keras-team/keras-io/blob/8f49b3ec63c7d959b9457ab7cc961ce4ca922d2f/examples/vision/mirnet.py#L353
Thanks!


UIDetail completed

Build the entire structure of the View, divided in different components

Pull the main branch, add .gitignore, .gitattributes and swiftlint to your branch


SQL Server fixes

1.-Connection String for sql server was built with the user id from the Clickhouse destination
2.-New Data Type Mapping for Sql Server (includes money, smallmoney, bit....)
3.-Fix for Lazy, it is read-only and was not saving the changed column types (MySql does at class init so it must be working)

Latest commit achieves a 22% performance improvement on inserted rows/sec
Updated to .Net 5.0 & changed SqlClient to Microsoft.Data.SqlClient


Use ViewSequence and refactor otherwise

I have not yet looked into the actual logic, but this is how it should probably be done, to be a little bit more extensible and idiomatic.
I would suggest looking into the different concepts of the traits, it's not the easiest to digest unfortunately though.
Implementing a custom derived View trait is more advanced territory, and likely not what an end-user should be doing usually.
I hope we can cover similar cases in the future with less boilerplate (keep in mind all of this is very experimental still)...

Oh wow, that was quick!
Thank you so much! :pray:


Initialize sun with unknown values.

Description:
Initial values should be unknown instead of 0. Otherwise on HA restart the value of 0 is pushed to metrics databases (graphite/influx/recorder).

This line Should be taking care of all of the next_* properties before it hits the state machine. I think all we need to do is either add a self.update_sun_position(dt_util.utcnow()) before that, or we could update point_in_time_listener to also call update_sun_position before updating the ha state.
Personally I'd prefer the second option. The sun positions get updated every 30 seconds, so it's not really necessary, but if we're going to write a new state anyway we might as well get all of the latest information.

@armills I think this should work

On the right track, just a few changes necessary.

done

Just need to change it from self.update_sun_position(dt_util.utcnow()) to self.update_sun_position(now). Otherwise looks good!

Sorry, should have payed more attention :)

No problem. Glad to see one more quirk eliminated from the sun component!


Unification algorithm does not work with rules with lists

There are multiple bugs in the unification algorithm if there are lists in a rule

Fixed in commit: f27bc295cd8877d5a8fae23a2ae498b29e0e1ce4


Update to support latest ECMAScript

I've been looking for a good loot table to implement into a Discord bot, and so far this seems like the best option. But I can see this was last updated 3 years ago and doesn't support the latest changes in ECMAScript. E.g. Replace "var" with let and const.
Is there any plans for a future update? Would love to be able to use this without any possible issues.

hey @nickjfrench  I maintain the npm package for this.  I'd like an es module too and some modernization.
I'll put a PR together for this.

https://github.com/jotson/LootTable.js/pull/7

@nickjfrench https://github.com/mreinstein/random-gap?tab=readme-ov-file#loottable


fix: change 'sites' to 'legacy_assets' in error msg (fixup for #6798)

What this PR solves / how to test
Fixes #6798
Author has addressed the following

Tests

[ ] TODO (before merge)
[x] Tests included
[ ] Tests not necessary because:

E2E Tests CI Job required? (Use "e2e" label or ask maintainer to run separately)

[ ] I don't know
[ ] Required
[x] Not required because: no e2e yet

Changeset (Changeset guidelines)

[ ] TODO (before merge)
[ ] Changeset included
[x] Changeset not necessary because: main PR has changeset already

Public documentation

[ ] TODO (before merge)
[ ] Cloudflare docs PR(s):
[x] Documentation not necessary because: unreleased, fixup, internal etc. etc.

This is a follow-up PR for https://github.com/cloudflare/workers-sdk/pull/6798 which is merged today so no additional changeset is needed.


documentation

readme should create links to
https://app.vagrantup.com/box-cutter/boxes/ubuntu1604-desktop
not
https://app.vagrantup.com/boxcutter/boxes/ubuntu1604-desktop
probably other fixes as well.

If you  can open a PR for this I'll merge it.

boxcutter is the correct reference


🚀 Feature: Top navigation loader

🔖 Feature description
a loader that appears at top of the page while loading page
🎤 Why is this feature needed ?
for ux
✌ How do you aim to achieve this?
using packages
🔄 Additional Information

👀 Have you spent some time to check if this feature request has been raised before?

[X] I checked and didn't find similar issue

Are you willing to submit PR?
Yes I am willing to submit a PR!

It will be a good addition


Add ETL timing logs and extra bulk indexing

The branch name is a bit ominous, but this PR just adds bulk indexing for units, published units and content errors (which speeds up ETL phy locally by about 8 seconds).
Importantly, some logging is added that times various parts of the indexing process. This will be helpful in diagnosing what exactly is taking ages on the live server.

Would it be possible to test this locally when you review the new changes please @mlt47 - my local ETL is having issues connecting to the content repo and I'm fairly sure these changes have nothing to do with it.


[vcpkg] Fixed 'update' command output

Currently output of the 'update' command is a little bit broken. Instead of replacing %s placeholder with program name it just prints it after base text. Somebody used print2 instead of printf.
To update these packages and all dependencies, run
    %s upgrade

To only remove outdated packages, run
    %s remove --outdated

.\vcpkg.\vcpkg

This patch fixes the output.

🤣 Thanks for your contribution!


YahooQuote function is not working as of 02/02/2012 was fine prior to today

from original Google Code repo

Fixed as of 0.9.4


Set up organisation avatar

The default avatar for organization on GitHub doesn't honor the maturity of the Standard.
Lacking a dedicated logo (since it used to be the Foundation when the project was there), and after reviewing the existing assets, I suggest using the codebase image.
Following the governance for this community, considering that this is one of the first community-made decisions, and since that decision impacts the public image of the organization, I decide to “inform the rest of the team that [I am] about to take a certain decision under lazy consensus”, and start a 96 hours window for objections on this decision, after which I will set up this image as avatar if there are no objections 🙂

Done! I also set the “Organization display name” to “Standard for Public Code”.


add weather metrics

Added collection of metrics related to outside weather

Thank you @expobrain, sorry for the delay


[EPIC] Restructure/refactor submariner-operator repo

[ ] Move packaging of operator to another repo - "deploy"?
[ ] Make subctl a library - Depends on https://github.com/submariner-io/submariner-operator/issues/1329
[ ] Support to install operator in custom namespace -  Deepnds on https://github.com/submariner-io/submariner-operator/issues/1040
[ ] Use go:embed instead of go:generate
[ ] Check for any other optimizations

Closed in favor of https://github.com/submariner-io/enhancements/issues/53


feat(ops): allow specifying block number for some tasks

Motivation
Currently tasks in ops/info.ts script use the latest block as the point in time for getting balances and performing other calculations. Being able to specify a block number and get data for that particular moment can be handy for historic reasons and for debugging (for example the GRT circulating supply subgraph).
Changes
This PR adds an optional CLI parameter blocknumber to the contracts:summary and contracts:list tasks. If set it will run the tasks in the context of the given block, if unset it will default to latest.
Example:
$ npx hardhat contracts:summary --network mainnet --blocknumber 14405000

Block: 14405000 / Thu Mar 17 2022

General Summary
---------------
= Total Supply:<PHONE_NUMBER>9
- Total Locked:<PHONE_NUMBER>
-- General:<PHONE_NUMBER> /<PHONE_NUMBER>
-- Edge & Node:  556169289 / 725438204
-- Foundation:<PHONE_NUMBER> /<PHONE_NUMBER>
-- Exchanges:    148562500 / 454333334
- Total Free:<PHONE_NUMBER>

= Managed:<PHONE_NUMBER> [n:1880]
- Available (67%):<PHONE_NUMBER>
-- Released (50%):<PHONE_NUMBER> [n:1390]

Revocable Summary
-----------------
= Managed:<PHONE_NUMBER> [n:94]
- Available (89%):<PHONE_NUMBER>
-- Released (25%): 464565320 [n:36]
- Used 260739192 [n:15]

Signed-off-by: Tomás Migone<EMAIL_ADDRESS>

I'm having an issue when I run it with no blocknumber.
This evaluation parseInt(taskArgs.blocknumber) ?? 'latest' instead of returning 'latest' returns NaN

Fixed!


<<< in bash messes with syntax coloring.

VSCode Version: Code 1.17.2 (b813d12980308015bcd2b3a2f6efa5c810c33ba5, 2017-10-16T13:57:00.652Z)
OS Version: Linux x64 4.10.0-38-generic
Extensions:

Extension
Author (truncated)
Version

vscode-docker
Pet
0.0.21

jslint
ajh
1.2.1

vscode-eslint
dba
1.4.3

githistory
don
0.2.3

python
don
0.7.0

gitlens
eam
5.7.1

vscode-npm-script
eg2
0.3.3

hg
mrc
1.2.3

vscode-icons
rob
7.17.0

html-preview-vscode
tht
0.1.1

python
tht
0.2.3

highlight-matching-tag
vin
0.4.4

markdown-all-in-one
yzh
0.11.1

(5 theme extensions excluded)

Bash syntax coloring isn't working properly
Steps to Reproduce:
1.Create a bash file with A="$(tr / _ <<<$B)"
2.Every line below it will be wrongly colored.

Reproduces without extensions: Yes

I forgot to add what happens when you remove the <<<

Reproduced with
X="ABC"
B="$(tr / _ <<<$B)"
X="ABC"

This issue was moved to atom/language-shellscript#90


Defaults and keyword argument format now available

@iibarant @berndnoll
Defaults and keyword argument format now available for Red String Grouper.  Weights, for instance, have a default value of 1.0 as requested by @berndnoll.  Here's how a sample call would now look like:
from red_string_grouper import record_linkage, field

matches = record_linkage(
    df,
    fields_2b_matched_fuzzily=[
        field('statusText'),
        field('address'),
        field('addressZipcode', weight=2, min_similarity=0.9999)
    ],
    fields_2b_matched_exactly=[
        field('addressState', weight=4),
        field('hasVideo')
    ]
)

I'd appreciate it if you or anyone else would take a look at these new changes and test that they are working as prescribed.
Thanks.

Hi @ParticularMiner, that is a nice update. However, I copied the latest version and it shows an error at the very last line. Is it needed as you already have a return statement?

Thanks @iibarant
That's a careless mistake.  I'll update the code shortly.  In the meantime, yes, you may remove it.
Cheers

Thanks @iibarant
That's a careless mistake. I'll update the code shortly. In the meantime, yes, you may remove it.
Cheers

Please see my addition in the previous comment.

@iibarant
Package has now been updated to version 0.0.8 with the correction.
To answer your other questions —  all other options are still there.  You only need to use the string_grouper names for these options. (follow this link).  For instance,
similarity_dtype is now tfidf_matrix_dtype.
ngram_size remains the same.
You can specify any option within the auxilliary function field(), or directly in record_linkage() in which case the options apply to all fields.  However, options already specified for a field take precedence over those directly specified in record_linkage().  For example,
matches = record_linkage(
    df,
    fields_2b_matched_fuzzily=[
        field('statusText'),
        field('address'),
        field('addressZipcode', weight=2, min_similarity=0.9999),
        field('addressState', weight=4, ngram_size=2, min_similarity=0.9999),
        field('hasVideo', min_similarity=0.9999)
    ],
    n_blocks=(1,1),
    tfidf_matrix_dtype=np.float32
)

I hope this is clear.

@iibarant
I would be interested to know your results of explorations into varying ngram_size

@ParticularMiner,
For all the same parameters except ngrams, for a data set of 131056 records, there is following runtime breakdown
ngrams    runtime (sec)
3          - 131.266
4          - 116.601
5          - 110.756

@iibarant
Good.  I suspected that would be the case, since the matrices become sparser and easier to compute.
If you like, try increasing the n_blocks parameter to say n_blocks=(1, 50).

Hi @ParticularMiner,
Here we go on a dataframe of 33788 records:
n = 3   n_blocks =  1   -   Runtime (sec):  7.31
n = 3   n_blocks =  2   -   Runtime (sec):  7.15
n = 3   n_blocks =  3   -   Runtime (sec):  7.4
n = 3   n_blocks =  4   -   Runtime (sec):  8.79
n = 3   n_blocks =  5   -   Runtime (sec):  8.22
n = 3   n_blocks =  6   -   Runtime (sec):  8.37
n = 3   n_blocks =  7   -   Runtime (sec):  8.23
n = 3   n_blocks =  8   -   Runtime (sec):  8.4
n = 3   n_blocks =  9   -   Runtime (sec):  8.33
n = 3   n_blocks =  10   -   Runtime (sec):  8.32
n = 3   n_blocks =  11   -   Runtime (sec):  8.37
n = 3   n_blocks =  12   -   Runtime (sec):  8.35
n = 3   n_blocks =  13   -   Runtime (sec):  8.4
n = 3   n_blocks =  14   -   Runtime (sec):  8.38
n = 3   n_blocks =  15   -   Runtime (sec):  8.95
n = 3   n_blocks =  16   -   Runtime (sec):  9.03
n = 3   n_blocks =  17   -   Runtime (sec):  9.12
n = 3   n_blocks =  18   -   Runtime (sec):  9.14
n = 3   n_blocks =  19   -   Runtime (sec):  9.29
n = 3   n_blocks =  20   -   Runtime (sec):  9.31
n = 3   n_blocks =  21   -   Runtime (sec):  9.27
n = 3   n_blocks =  22   -   Runtime (sec):  9.45
n = 3   n_blocks =  23   -   Runtime (sec):  9.5
n = 3   n_blocks =  24   -   Runtime (sec):  9.54
n = 3   n_blocks =  25   -   Runtime (sec):  9.72
n = 3   n_blocks =  26   -   Runtime (sec):  9.64
n = 3   n_blocks =  27   -   Runtime (sec):  9.79
n = 3   n_blocks =  28   -   Runtime (sec):  9.78
n = 3   n_blocks =  29   -   Runtime (sec):  8.91
n = 3   n_blocks =  30   -   Runtime (sec):  9.07
n = 3   n_blocks =  31   -   Runtime (sec):  9.04
n = 3   n_blocks =  32   -   Runtime (sec):  9.0
n = 3   n_blocks =  33   -   Runtime (sec):  8.75
n = 3   n_blocks =  34   -   Runtime (sec):  8.83
n = 3   n_blocks =  35   -   Runtime (sec):  8.84
n = 3   n_blocks =  36   -   Runtime (sec):  9.01
n = 3   n_blocks =  37   -   Runtime (sec):  8.97
n = 3   n_blocks =  38   -   Runtime (sec):  8.88
n = 3   n_blocks =  39   -   Runtime (sec):  8.89
n = 3   n_blocks =  40   -   Runtime (sec):  8.95
n = 3   n_blocks =  41   -   Runtime (sec):  9.05
n = 3   n_blocks =  42   -   Runtime (sec):  9.03
n = 3   n_blocks =  43   -   Runtime (sec):  9.08
n = 3   n_blocks =  44   -   Runtime (sec):  9.14
n = 3   n_blocks =  45   -   Runtime (sec):  9.07
n = 3   n_blocks =  46   -   Runtime (sec):  9.06
n = 3   n_blocks =  47   -   Runtime (sec):  9.08
n = 3   n_blocks =  48   -   Runtime (sec):  9.06
n = 3   n_blocks =  49   -   Runtime (sec):  9.13
n = 3   n_blocks =  50   -   Runtime (sec):  9.23
n = 4   n_blocks =  1   -   Runtime (sec):  7.19
n = 4   n_blocks =  2   -   Runtime (sec):  7.1
n = 4   n_blocks =  3   -   Runtime (sec):  7.13
n = 4   n_blocks =  4   -   Runtime (sec):  7.15
n = 4   n_blocks =  5   -   Runtime (sec):  7.39
n = 4   n_blocks =  6   -   Runtime (sec):  7.16
n = 4   n_blocks =  7   -   Runtime (sec):  7.19
n = 4   n_blocks =  8   -   Runtime (sec):  7.28
n = 4   n_blocks =  9   -   Runtime (sec):  7.21
n = 4   n_blocks =  10   -   Runtime (sec):  7.3
n = 4   n_blocks =  11   -   Runtime (sec):  7.4
n = 4   n_blocks =  12   -   Runtime (sec):  7.26
n = 4   n_blocks =  13   -   Runtime (sec):  7.25
n = 4   n_blocks =  14   -   Runtime (sec):  7.28
n = 4   n_blocks =  15   -   Runtime (sec):  7.85
n = 4   n_blocks =  16   -   Runtime (sec):  7.91
n = 4   n_blocks =  17   -   Runtime (sec):  8.01
n = 4   n_blocks =  18   -   Runtime (sec):  8.12
n = 4   n_blocks =  19   -   Runtime (sec):  8.15
n = 4   n_blocks =  20   -   Runtime (sec):  8.19
n = 4   n_blocks =  21   -   Runtime (sec):  8.36
n = 4   n_blocks =  22   -   Runtime (sec):  8.65
n = 4   n_blocks =  23   -   Runtime (sec):  8.49
n = 4   n_blocks =  24   -   Runtime (sec):  8.52
n = 4   n_blocks =  25   -   Runtime (sec):  8.58
n = 4   n_blocks =  26   -   Runtime (sec):  8.7
n = 4   n_blocks =  27   -   Runtime (sec):  8.74
n = 4   n_blocks =  28   -   Runtime (sec):  8.7
n = 4   n_blocks =  29   -   Runtime (sec):  8.2
n = 4   n_blocks =  30   -   Runtime (sec):  7.89
n = 4   n_blocks =  31   -   Runtime (sec):  7.95
n = 4   n_blocks =  32   -   Runtime (sec):  7.93
n = 4   n_blocks =  33   -   Runtime (sec):  7.64
n = 4   n_blocks =  34   -   Runtime (sec):  7.72
n = 4   n_blocks =  35   -   Runtime (sec):  7.71
n = 4   n_blocks =  36   -   Runtime (sec):  7.72
n = 4   n_blocks =  37   -   Runtime (sec):  7.71
n = 4   n_blocks =  38   -   Runtime (sec):  7.75
n = 4   n_blocks =  39   -   Runtime (sec):  7.86
n = 4   n_blocks =  40   -   Runtime (sec):  7.95
n = 4   n_blocks =  41   -   Runtime (sec):  7.95
n = 4   n_blocks =  42   -   Runtime (sec):  7.91
n = 4   n_blocks =  43   -   Runtime (sec):  8.06
n = 4   n_blocks =  44   -   Runtime (sec):  8.0
n = 4   n_blocks =  45   -   Runtime (sec):  8.09
n = 4   n_blocks =  46   -   Runtime (sec):  8.01
n = 4   n_blocks =  47   -   Runtime (sec):  8.15
n = 4   n_blocks =  48   -   Runtime (sec):  8.16
n = 4   n_blocks =  49   -   Runtime (sec):  8.56
n = 4   n_blocks =  50   -   Runtime (sec):  8.18
n = 5   n_blocks =  1   -   Runtime (sec):  7.01
n = 5   n_blocks =  2   -   Runtime (sec):  6.91
n = 5   n_blocks =  3   -   Runtime (sec):  6.89
n = 5   n_blocks =  4   -   Runtime (sec):  7.02
n = 5   n_blocks =  5   -   Runtime (sec):  6.9
n = 5   n_blocks =  6   -   Runtime (sec):  6.98
n = 5   n_blocks =  7   -   Runtime (sec):  7.0
n = 5   n_blocks =  8   -   Runtime (sec):  7.08
n = 5   n_blocks =  9   -   Runtime (sec):  7.04
n = 5   n_blocks =  10   -   Runtime (sec):  6.98
n = 5   n_blocks =  11   -   Runtime (sec):  7.01
n = 5   n_blocks =  12   -   Runtime (sec):  7.14
n = 5   n_blocks =  13   -   Runtime (sec):  7.11
n = 5   n_blocks =  14   -   Runtime (sec):  7.35
n = 5   n_blocks =  15   -   Runtime (sec):  7.91
n = 5   n_blocks =  16   -   Runtime (sec):  7.77
n = 5   n_blocks =  17   -   Runtime (sec):  8.13
n = 5   n_blocks =  18   -   Runtime (sec):  7.99
n = 5   n_blocks =  19   -   Runtime (sec):  8.21
n = 5   n_blocks =  20   -   Runtime (sec):  8.34
n = 5   n_blocks =  21   -   Runtime (sec):  8.05
n = 5   n_blocks =  22   -   Runtime (sec):  8.29
n = 5   n_blocks =  23   -   Runtime (sec):  8.49
n = 5   n_blocks =  24   -   Runtime (sec):  8.45
n = 5   n_blocks =  25   -   Runtime (sec):  8.39
n = 5   n_blocks =  26   -   Runtime (sec):  8.43
n = 5   n_blocks =  27   -   Runtime (sec):  8.43
n = 5   n_blocks =  28   -   Runtime (sec):  8.71
n = 5   n_blocks =  29   -   Runtime (sec):  7.86
n = 5   n_blocks =  30   -   Runtime (sec):  7.88
n = 5   n_blocks =  31   -   Runtime (sec):  7.9
n = 5   n_blocks =  32   -   Runtime (sec):  8.04
n = 5   n_blocks =  33   -   Runtime (sec):  7.72
n = 5   n_blocks =  34   -   Runtime (sec):  7.57
n = 5   n_blocks =  35   -   Runtime (sec):  7.67
n = 5   n_blocks =  36   -   Runtime (sec):  7.71
n = 5   n_blocks =  37   -   Runtime (sec):  8.0
n = 5   n_blocks =  38   -   Runtime (sec):  8.07
n = 5   n_blocks =  39   -   Runtime (sec):  7.72
n = 5   n_blocks =  40   -   Runtime (sec):  8.03
n = 5   n_blocks =  41   -   Runtime (sec):  8.23
n = 5   n_blocks =  42   -   Runtime (sec):  8.16
n = 5   n_blocks =  43   -   Runtime (sec):  8.43
n = 5   n_blocks =  44   -   Runtime (sec):  7.67
n = 5   n_blocks =  45   -   Runtime (sec):  7.69
n = 5   n_blocks =  46   -   Runtime (sec):  8.1
n = 5   n_blocks =  47   -   Runtime (sec):  8.14
n = 5   n_blocks =  48   -   Runtime (sec):  7.97
n = 5   n_blocks =  49   -   Runtime (sec):  8.15
n = 5   n_blocks =  50   -   Runtime (sec):  8.18

Thanks @iibarant
Question: you are changing n_blocks[1] and not n_blocks[0], right?
If that's the case, then the increase in runtime is likely due to the fact that your DataFrame is too small.
Hopefully, a decrease in runtime with increase in n_block[1] will occur with a larger DataFrame with number of rows of the order of 300 000.

@iibarant
The latest update to Red String Grouper needs to be tested.  But see if the following makes sense:
(Note that all previous functionality (with one DataFrame) has been retained.  This attempts comparing 2 DataFrames.)
import pandas as pd
import numpy as np
from red_string_grouper import record_linkage, field, field_pair

inputfilename = 'data/us-cities-real-estate-sample-zenrows.csv'
df = pd.read_csv(inputfilename, dtype=str)

df.set_index('zpid', inplace=True)
df1 = df[['imgSrc', 'addressState', 'statusText']]
df2 = df[['detailUrl', 'addressState', 'statusText']]

matches = record_linkage(
    [df1, df2],
    fields_2b_matched_fuzzily=[field_pair('statusText', 'statusText', weight=3),
                               field_pair('imgSrc', 'detailUrl', weight=4, regex=r'https://|.zillow.com|[,-./:]|\s', min_similarity=0.05)],
    fields_2b_matched_exactly=[field_pair('addressState', 'addressState', weight=4)],
    n_blocks=(1,1))

matches.sort_values(('Fuzzily Matched Fields', 'imgSrc/detailUrl', 'similarity'), ascending=False)

Exactly Matched Fields
Fuzzily Matched Fields

addressState/addressState
statusText/statusText
imgSrc/detailUrl

Weighted Mean Similarity Score

left
similarity
right
left
similarity
right

left_zpid
right_zpid

96757735
9469011
0.680908
PA
Townhouse for sale
1.0
Townhouse for sale
https://photos.zillowstatic.com/fp/e86b55f8ff4...
0.122498
https://www.zillow.com/homedetails/1115-W-9th-...

2075301422
2075905715
0.676702
OK
Lot / Land for sale
1.0
Lot / Land for sale
https://photos.zillowstatic.com/fp/33759096aea...
0.110931
https://www.zillow.com/homedetails/Moccasin-Tr...

2100136081
2070606357
0.674255
TX
Lot / Land for sale
1.0
Lot / Land for sale
https://photos.zillowstatic.com/fp/81739685ade...
0.104201
https://www.zillow.com/homedetails/Fm-344-Rd-W...

33628288
2076543613
0.673813
OH
Multi-family home for sale
1.0
Multi-family home for sale
https://photos.zillowstatic.com/fp/17d6ff62ed2...
0.102986
https://www.zillow.com/homedetails/105-1-2-N-P...

84501900
74747435
0.672341
MI
House for sale
1.0
House for sale
https://photos.zillowstatic.com/fp/d64d0568f30...
0.098939
https://www.zillow.com/homedetails/Townsend-Rd...

...
...
...
...
...
...
...
...
...
...

2077977874
86740833
0.654574
NH
Active
1.0
Active
https://photos.zillowstatic.com/fp/b1404f9e886...
0.050079
https://www.zillow.com/homedetails/59-Maple-Ln...

92848559
86797118
0.654568
NH
Active
1.0
Active
https://photos.zillowstatic.com/fp/8246797fd69...
0.050061
https://www.zillow.com/homedetails/39-John-St-...

2077102415
95343578
0.654566
NH
Active
1.0
Active
https://photos.zillowstatic.com/fp/9c8b1983578...
0.050057
https://www.zillow.com/homedetails/155-Barrett...

86793455
2070175193
0.654554
NH
Active
1.0
Active
https://photos.zillowstatic.com/fp/155c840ddee...
0.050023
https://www.zillow.com/homedetails/208-26-Hamm...

32607416
32816743
0.654553
NY
House for sale
1.0
House for sale
https://photos.zillowstatic.com/fp/9d07d42d4dd...
0.050021
https://www.zillow.com/homedetails/70-Main-St-...

638 rows × 8 columns

@iibarant
Because I lack meaningful data.  I would appreciate it very much if you could form a meaningful example using two DataFrames that I could include in the README.md file (that is, the documentation).  Alternatively you could edit the README.md file yourself and post a pull request.

@iibarant
The MacOS test-scripts seem to be working:
https://github.com/ParticularMiner/red_string_grouper/runs/3869210363?check_suite_focus=true

@iibarant
Ok.  It seems the conda channels don't yet have red_string_grouper.
So first deactivate:
conda deactivate
Then try:
pip install --upgrade red_string_grouper

@iibarant
That one is on me.  It 's because here on my machine, I'm importing the new string_grouper.  You are using the old one.  I'm still waiting for the maintainer to update string_grouper to the newest version.
Let me see if I can fix it in the meantime.

@iibarant
This usually happens when there are non-strings present in the data, like Null/None/'',numbers, etc.

@iibarant
Follow this link for a possible solution.

Hi @ParticularMiner,
When I try to use the previous approach with only one df to find duplicates, I get error messages
record_matches = record_linkage(df_to_check,
               fields_2b_matched_fuzzily=[field('ADDRESS', min_similarity=0.8, ngram_size=3, weight=1.5)],
               fields_2b_matched_fuzzily=[field('NAME', min_similarity=0.8, ngram_size=3, weight=2.5)],
               fields_2b_matched_exactly=[('STATE', weight=3)],
               hierarchical=False,
               max_n_matches=8200,
               force_symmetries=True,
               n_blocks=(1, 1))

Removing weight from the STATE, the error is

What am I supposed to do here?

Great, thanks.
I got a lot on my plates now.

On Oct 14, 2021, at 2:30 PM, ParticularMiner @.***> wrote:

Hi @iibarant
There can only be one 'fields_2b_matched_fuzzily'. Remember? It is a single list of one or more fields.
record_matches = record_linkage(df_to_check,
fields_2b_matched_fuzzily=[field('ADDRESS', min_similarity=0.8, ngram_size=3, weight=1.5),
field('NAME', min_similarity=0.8, ngram_size=3, weight=2.5)],
fields_2b_matched_exactly=[field('STATE', weight=3)],
hierarchical=False,
max_n_matches=8200,
force_symmetries=True,
n_blocks=(1, 1))
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or unsubscribe.
Triage notifications on the go with GitHub Mobile for iOS or Android.

Hi @ParticularMiner, sorry for delays, I have a very busy schedule.
Reducing min_similarity did not help as instead of:

I got:

The STATE field uses 2 letters abbreviation, so 3-grams would be irrelevant, but I thought for exact match that parameter is not needed, so I only specified the weight.
Thank you!

@ParticularMiner, thank  you, it works now!
Beside many caveat warnings, everything is good.
I currently set warnings.filterwarnings("ignore"), but going forward for a library it would be a good thing to solve.
SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame


🚀 : Update Angular v16.x to v17.x

🚀 Is your feature request related to a problem? Please describe.
Updating Angular from v16.x to v17.x is necessary to leverage the latest features, improvements, and security patches. Staying on an older version might lead to compatibility issues with other libraries and tools, as well as missing out on performance enhancements and bug fixes.
Describe the solution you'd like
I'd like to update our Angular project from v16.x to v17.x smoothly and efficiently. This involves updating dependencies, adjusting code for any breaking changes, and ensuring that the application functions correctly after the update.
Describe alternatives you've considered
One alternative is to postpone the update, but this might lead to further complications down the line, especially as newer versions are released. Another alternative is to hire external help for the update process, but I believe our team is capable of handling it internally with proper guidance and resources.
Additional context
Our Angular project is a critical part of our application stack, and keeping it up-to-date is essential for maintaining its performance, security, and compatibility with other tools and libraries. Let's prioritize this update to ensure our application remains robust and efficient.
#604
If you want speed up process of this issue, please send 🚀 as a reaction.

[ ] https://update.angular.io/?v=16.0-17.0

Done w/ #735


Azure Key Vault and Azure Key Vault w/ Managed Identity should be merged

What content needs to be created or modified?
https://docs.dapr.io/reference/components-reference/supported-secret-stores/azure-keyvault/
https://docs.dapr.io/reference/components-reference/supported-secret-stores/azure-keyvault-managed-identity/
Describe the solution you'd like
Merge these into one file named "Azure Key Vault"
Additional context
It's the same component, just different configuration

Also need to callout that managed identity and standard are in different lifecycle status

Resolved - closing


Button shown twice on Bitbucket pull request page

Hello, was this published yet? Still happening but only right after making a pull request. Refreshing that page afterwards shows only 1 button though.

Hi this has not been release. The fix will be in next release.


How can we avoid duplication?

The Dockerfiles must create containers that are executable in three different environments:

:exec
:start
on Heroku

Currently, the config is separate for local and remove execution. Exec and start rely on Docker config (https://github.com/heroku/heroku-docker/blob/master/platforms/node/Dockerfile.t#L14), while Heroku relies on .profile.d.
Should we somehow have exec and start run .profile.d as well?

Possible solution with forego: https://github.com/jesperfj/heroku-dockerfiles/blob/master/docker-base/Dockerfile#L8

Current solution: https://github.com/hunterloftis/node-image/blob/master/init

https://github.com/heroku/heroku-docker/tree/compose uses docker-compose and doesn't have separate exec/start steps. It only has behavior analogous to start, no volume mounting. Uses an init script within the docker hub image to run .profile.d scripts. If this approach makes sense, we can factor init into a base image from which the platform implementations can inherit.

init helps but doesn't totally solve the problem: https://github.com/hunterloftis/node-image/commit/1069079e6cef3de49671cdf9cffb7426538c2154

nnggh!


fix toolbar alignment

Description
Fix the alignment issue with the clear filter button.
closes #4422

Self Check:
Strike through any lines that are not applicable (~~line~~) then check the box

[ ] Attached issue to pull request
[x] Changelog entry
[x] Code is clear and sufficiently documented
[x] Sufficient test cases (reproduces the bug/tests the requested feature)
[x] Correct, in line with design
[ ] End user documentation is included or an issue is created for end-user documentation (add ref to issue here: )

Processing this pull request

Merged into branches iso5, master, iso6 in dd161396ccd6ad9a4dfdc35e75a47e7b772c405b


find_by_id test is expecting an addressable event which got replaced

I am scratching my head regarding the find_by_ tests. This is part of the setup for these tests:

Kinds range 30000-39999 is for addressable events, which are identified by the combination of kind, pubkey and d-tag. Since these two are missing their d-tags, I'm assuming they should be treated as "" or null, but either way identical. Meaning these two events are "identical" and relay should be expected to store only one of those (timestamp is also equal, so the one with lower lex order).
Yet the tester is expecting the relay to return both and fails several tests because of this when I run it against my implementation.
Is my understanding of addressable events incorrect?

I just realized I was on old commit and this issue was resolved by https://github.com/mikedilger/relay-tester/pull/4 ...


As a user, I want to search for library items by bibliographic metadata so that I can find specific items I’m interested in.

testing notes
make sure you're logged in, then head to the book search page. you should see a shiny new keyword search box like the one on members. type into the box and you should see results load as you type.
note - if at any point you notice something funky with the result loading, please comment on #233, since that issue deals with the fast loading behavior specifically. everything else you can keep on this issue.
go ahead and search for a couple works by title and take a look at the relevance scores of your results (make sure you are sorting by relevance). do they make sense? the actual numbers don't mean anything, but the relative size of the numbers should give you an idea of which works solr thinks are most relevant for your query.
please also test the following cases:

searching for a work by the author's name
searching for a work by the translator or editor's name
searching for periodicals by typing "periodical"
searching for a work by some text in its public notes
searching for a work that has an author's name in the title (I think there are some books like "James Joyce's Dublin" or similar)

dev notes
Search should include these fields in this priority order:

author
title
creator (all creator names in a single field)
format
public notes

author, title, and creator should probably all be available in both stemmed and unstemmed search fields.
Refer to PUL Solr config for possible boosting values and unstem search field definition.

Marking as blocked because this should wait until after we've integrated OCLC data and decided which fields should be included and how they should be prioritized (= boosted).

@clmahoney would you add this item to a future meeting agenda? To implement search on books we need to know which book data fields should be searchable and which ones are most important.

This looks so awesome! Some notes from testing:

Searching seems to work well. I typed in "Moby" and got Moby-Dick right away, with large numbers.
If I search for "Homer," I get The Odyssey as the third result. The first two have "Homer" in the title

If I search for editors and translators the results vary depending on how much work the editors/translators do. So: if I search for the relatively unknown "Richard Thirsk" then I get his translation of "Ditte" as the 14th result. The previous 13 all have "Richard" in the title or the author's name is Richard. But if I search for "Thirsk" that only shows the Ditte translation. If I search for Eugene Jolas, editor of "transition," that is the 5th result; the previous 4 are all by Jolas also as author. That makes sense.

NO: if I search for "periodical" or "periodicals," I do NOT get periodical results, I get this:

YES, if I search for a work by it's public notes I can find that. For example, I searched for "by or about John Donne" and I got "John Donne" (in quotes) as the first result, which is where the notes belong.

YES, if I type in an author's name then a work with that name in the title shows up first. For example: I tried "James Joyce": the first 11 results have James Joyce in the title. The next 9 have a "James" of some kind in the title, usually Henry or William. James Joyce as author does not appear until the 21st entry. I think this might be too far down: is there a way to make it be the next series of results after JJ in the title?

I made some changes to the way books are indexed and boosted, so this is ready to test again.

YES, if I search for a work by an author's name, the works by that other appear first. I tried with "Homer" again, and got "The Odyssey" as the first result, then 2 results with "Homer" in the title. I tried with "Melville" and got the first results as books by Melville, then a book called "Herman Melville" in the title.
YES, if I search for a work by the translator/editor's name I find the work right away: tried with Thirsk
YES! If I search for "periodical" then I see a list of periodicals!!

YES, if I search by a work by some text in its public notes, I see it
YES! If I search for a work that has an author's name in the title I find it. I tried with James Joyce, and now the first results are books by James Joyce, then books ABOUT Joyce - great work!!


Remove version: Nvidia.GeForceNow version <IP_ADDRESS>

[Automated] It returns code over 400 in all urls
Microsoft Reviewers: Open in CodeFlow

URL: https://ota-downloads.nvidia.com/ota/GeForceNOW-release_918B0A.exe
Response status code does not indicate success: 404 (Not Found).
(Automated message - build 897)


Avalaibility on Bower

Hi,
why not add your project in Bower (a dependencies manager) ?
Some links :

http://bower.io/
http://sindresorhus.com/bower-components/#!/search/nwxforms

Added to Bower.
Thank you


sile: leverage lua environments

Motivation for this change
allows to simplify the implementation quite a bit
Things done
leverage lua environments
the package has no maintainer to ping :'(

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nix-review --run "nix-review wip"
[x] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Assured whether relevant documentation is up to date
[x] Fits CONTRIBUTING.md.

@GrahamcOfBorg build sile


New groups are not created when updating user pool groups

Before opening, please confirm:

[X] I have installed the latest version of the Amplify CLI (see above), and confirmed that the issue still persists.
[X] I have searched for duplicate or closed issues.
[X] I have read the guide for submitting bug reports.
[X] I have done my best to include a minimal, self-contained set of instructions for consistently reproducing the issue.
[X] I have removed any sensitive information from my code snippets and submission.

How did you install the Amplify CLI?
npm
If applicable, what version of Node.js are you using?
14.17.5
Amplify CLI Version
9.0.0
What operating system are you using?
Ubuntu
Did you make any manual changes to the cloud resources managed by Amplify? Please describe the changes made.
No manual changes made.
Amplify Categories
auth
Amplify Commands
update
Describe the bug
When running amplify update auth and adding new user pool groups,  the new user pool groups are not added after running amplify push -y.
I can see that the user-pool-group-precedence.json is updated to reflect the precedence of the groups (with the new additions):
[
  {
    "groupName": "basic",
    "precedence": 1
  },
  {
    "groupName": "editor",
    "precedence": 2
  },
  {
    "groupName": "admin",
    "precedence": 5
  }
]

Any ideas on what could be causing this? This used to work...
Expected behavior
New user pool groups should be added.
Reproduction steps

Create a user pool with the CLI with a few groups.
Run amplify update auth and add new user pool groups.
Run amplify push and see that the new groups were not created.

GraphQL schema(s)
No response
Project Identifier
No response
Log output

# Put your logs below this line

Additional information
No response

Update:
I updated the user-pool-group-precedence.json manually, adding the missing Cognito groups. I then executed amplify push to then be greeted with this lovely error:
CREATE_FAILED companyContributorGroupRole AWS::IAM::Role Wed Jun 29 2022 09:33:27 GMT+0100 (British Summer Time) us-east-1_GHxxxxx-companyContributorGroupRole already exists
CREATE_FAILED companyAdminGroupRole       AWS::IAM::Role Wed Jun 29 2022 09:33:27 GMT+0100 (British Summer Time) us-east-1_GHxxxxxx-companyAdminGroupRole already exists

My guess is that these roles were left dangling after running amplify update auth. I may try to delete these manually in the console and run amplify push again..

OK, so deleting the dangling roles manually in the IAM console has fixed the above issue. So, updating user-pool-group-precedence.json manually is the temporary solution for Amplify CLI not adding the new Cognito groups...

Hello @kylekirkby, Thank you for reaching out. The issue appears to be similar to https://github.com/aws-amplify/amplify-cli/issues/10613. A PR has been created addressing this: https://github.com/aws-amplify/amplify-cli/pull/10641.
I will be closing this Github issue to keep the whole information related to this behaviour on a single stream to avoid any miscommunication. Please feel free to add your comments to the linked issue.


Please incorporate a reference the Retain Policy behaviour for deleting PVs using Azure Files

I've been working with Azure File Shares using the article above for reference. When migrating this over to be a helm chart, and subsequently using the Helm delete commands, the Azure File Shares themselves were being deleted also as documented at: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#delete
I, however, found this subtlety to be a bit counter-intuitive (as the File Shares were manually created within the Azure Portal) and given the possibility of data loss I think its worth highlighting the behaviour as part of this article.

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: d634c63a-6194-86a6-b522-3310812c81e8
Version Independent ID: fa86da1e-9c86-88fe-170c-5e6aa9230b5f
Content: Create a static volume for multiple pods in Azure Kubernetes Service (AKS)
Content Source: articles/aks/azure-files-volume.md
Service: container-service
GitHub Login: @iainfoulds
Microsoft Alias: iainfou

Thanks for the feedback! We are currently investigating and will update you shortly.

@woodwardmatt Thanks for the feedback!
I think we can have a note added.
Tutorials are modeled in such a way that at the end all the resources are deleted.
I have assigned the issue to the content author to investigate further and update the document as appropriate.

Sorry you ran into issues, @woodwardmatt. Can you describe your repro steps, please? Does this happen following the doc as it's written?
When I manually create the volume, as documented here, and then later delete the deployment, the Azure File share remains.
I'm not sure if the Helm chart is extending behavior somehow, as the doc as-written doesn't exhibit this behavior.
#hold-off

If you're still having problems here @woodwardmatt, please reach back out.
Otherwise, @jakaruna-MSFT #please-close


How to set batch size

Could you please tell me how to set batch size?

@MSTK2014  Please modify samples_per_gpu in the configuration


Pull only specific fields within endpoint?

Summary (include Python version)
Is it possible to perform an API call to only certain fields within an endpoint? Specifically, I'm asking about the get_balance_sheet or get_financials endpoints. For example, if it would possible to perform get_shareholderEquity(). I see from the docs (here) that a couple field methods are available under get_key_stats, but wondering if there a hack-y way to expand it to other endpoints.
Context - I'm setting up a small app under the IEX launch data plan, but hitting my usage limits fast. Trying to find ways to reduce the volume from some of the expensive calls (e.g., get_balance_sheet, get_key_stats).
Date/time of issue
5/17/19
Expected behavior
N/A
Actual behavior
N/A

Played around with this a bit more and looks like this may be possible, but not likely to affect data weights. For example, the two calls below had the same effect on my total useage (3000 messages)

https://cloud.iexapis.com/stable/stock/gs/balance-sheet?filter=shareholderEquity&token=XXX
https://cloud.iexapis.com/stable/stock/gs/balance-sheet?token=XXX

Maybe I'm missing a simple solution, but it seems like the IEX API basically prevents a workaround.

Could this be achieved with the Data Points endpoint? I believe that allows retrieval of individual fields. I will take a look.

iexfinance actually supports this using the filter_ keyword argument to Stock method calls, such as:
from iexfinance.stocks import Stock
aapl = Stock("AAPL")
aapl.get_balance_sheet(filter_="shareholderEquity")

# 39242091

though IEX does not support reduced message weighting for filtered calls on most endpoints. I may open an issue for this in their repo.

Thanks Addison! Let me know if you do end up opening an issue in their repo - I would make a ton of use out of the filter argument if it did reduce message weighting. For now, I'm working around it with some procedures to cache the data I'm pulling.


Added lab_1 template, added tests for tokenize function

General comment for tests:
It is better visually and easier to read if we split expected and actual results in different variable.
Example
expected = ['1', '2', '3']
actual = function_name('1 2 3')
self.assertEqual(expected, actual)

General comment for tests:
It is better visually and easier to read if we split expected and actual results in different variables.
Example
expected = ['1', '2', '3']
actual = function_name('1 2 3')
self.assertEqual(expected, actual)

I have skipped unittests for now.
Now it is necessary to deal with lint & plagiarism.

I have dealt with lint.
The last thing to consider is plagiarism check: even if it is green now, i do not think it is working correctly.
Further note:
Create separate branch for feature, do no develop in master as it is easier to maintain several features and more convenient for other people who use your fork.

I have skipped unittests for now.
Now it is necessary to deal with lint & plagiarism.

we have to somehow add public GitHub token for accessing all pull requests and then everything should work properly it seems

I have skipped unittests for now.
Now it is necessary to deal with lint & plagiarism.

we have to somehow add public GitHub token for accessing all pull requests and then everything should work properly it seems

I was be able to access raw files without token. I will try to investigate furthermore.

I suggest we split this PR into two:

The one with lab template (leave it here);
The other one with plagiarism check as it may take some time to implement.


Updates to schema.sql

Some changes to your SQL schema:
https://github.com/pinax-network/substreams-atomicmarket-sales/blob/master/schema.sql

[ ] :x:  id not required
[ ] :warning: sales_id  should be a number UInt64 (can also be used as PRIMARY KEY)
[ ] :x:  timestamp not required
[ ] :warning: trx_id transaction should be stored as FixedString(64)
[ ] :warning:  asset_ids should be an array of Array(UInt64) (I think?? @julienrousseau )
[ ] :warning: listing_price should be split up as listing_price_amount Int64 & listing_price_symcode FixedString(7)

[ ] split using https://github.com/pinax-network/antelope.rs

[ ] :warning: collection_name should be defined as EOS Name type, which is maximum 12 characters FixedString(12)

Since sales_id are unique, we can use ReplacingMergeTree
ENGINE = ReplacingMergeTree
PRIMARY KEY (sales_id)
ORDER BY (sales_id, collection_name, listing_price_symcode, trx_id);

We can always add more fields to ORDER BY
References

https://github.com/pinax-network/substreams-erc20-supply/blob/master/schema.sql
https://github.com/pinax-network/substreams-sink-clickhouse/blob/main/src/clickhouse/tables/blocks.sql#L7-L9

Made the changes with Float64 for listing_price_amount :
https://github.com/pinax-network/substreams-atomicmarket-sales/blob/master/schema.sql

Completed the updates in v0.2.0 : https://github.com/pinax-network/substreams-atomicmarket-sales/releases/tag/v0.2.0


Error selectedIndex at app lunch

Hi,
there is a problem when i get the selectedIndex at first lunch of app.
The code is:
guard let myTabBar = self.window?.rootViewController as? RAMAnimatedTabBarController else {             return         }         print(myTabBar.selectedIndex)
The code print "9223372036854775807"

@furiosFast try NMAnimatedTabBarItem

Yes, you are right. But selectedIndex is the part of UITabBarController. And you can reproduce this issue with every UITabBarController. you need to create the issue in radar https://developer.apple.com/bug-reporting/


Message handler to trigger replaying queued Google Analytics requests

Library Affected:
sw-google-offline-analytics
Browser & Platform:
all browsers
Issue or Feature Request Description:
It could be useful to define a message event handler in the ServiceWorkerGlobalScope that listened for requests from controlled pages to replay the Google Analytics hits, instead of only replaying them when the service worker starts up. This would allow, e.g., the controlled page to listen to window.online and then tell the service worker to attempt replaying.
(This isn't fool-proof, due to lie-fi, but it's something people could opt-into.)
CC: @igrigorik

👍

We're more likely to go with a rewrite based on https://github.com/GoogleChrome/sw-helpers/tree/master/packages/sw-background-sync-queue than to modify the existing codebase, so I'm going to close this.


Auto clear DB & storage on breaking changes

A future major update would require clearing the DB & Storage manually. We would like to make it part of the migration process for seamless upgrades.

Fixed in https://github.com/falcondev-oss/github-actions-cache-server/releases/tag/v4.0.0

Fixed in https://github.com/falcondev-oss/github-actions-cache-server/releases/tag/v4.0.0


Incorrect domain returned when parsing http://sub.domain.global.prod.fastly.net

Expected to get domain: domain.global.prod.fastly.net,
since global.prod.fastly.net is present in https://publicsuffix.org/list/public_suffix_list.dat.
Instead got (full result):
{
    "domain": "fastly.net",
    "domainWithoutSuffix": "fastly",
    "hostname": "sub.domain.global.prod.fastly.net",
    "isIcann": true,
    "isIp": false,
    "isPrivate": false,
    "publicSuffix": "net",
    "subdomain": "sub.domain.global.prod"
}

P.S. Thank you for this nice library!

Excellent! Thank you very much!


fix(Playwright): handle null context in proceedClick

Motivation/Description of the PR
We have a test that opens a link in a new tab, switches to that tab and tries to click a button. Some example code:
I.click(locate('.some-button'));
I.switchToNextTab();
I.waitForElement('Get Started');
I.retry(5).forceClick('Get Started');

and we get this error intermittently (maybe 50% of our runs):
     Cannot read property '$$' of null
      at Playwright.findElements (node_modules/codeceptjs/lib/helper/Playwright.js:2152:18)
      at Playwright.findClickable (node_modules/codeceptjs/lib/helper/Playwright.js:2186:47)
      at Playwright.proceedClick (node_modules/codeceptjs/lib/helper/Playwright.js:2162:35)

After some spelunking, we discovered that sometimes this.context gets set to null. No clue how that's happening as _setPage is meant to set the context and gets called when switching tabs. However, most methods in the file are using this._getContext() but I'm not sure what the semantic difference between it and this.context is.
Applicable helpers:

[ ] WebDriver
[ ] Puppeteer
[ ] Nightmare
[ ] REST
[ ] FileHelper
[ ] Appium
[ ] Protractor
[ ] TestCafe
[x] Playwright

Applicable plugins:

[ ] allure
[ ] autoDelay
[ ] autoLogin
[ ] customLocator
[ ] pauseOnFail
[ ] puppeteerCoverage
[ ] retryFailedStep
[ ] screenshotOnFail
[ ] selenoid
[ ] stepByStepReport
[ ] wdio

Type of change

[ ] :fire: Breaking changes
[ ] :rocket: New functionality
[x] :bug: Bug fix
[ ] :clipboard: Documentation changes/updates
[ ] :hotsprings: Hot fix
[ ] :hammer: Markdown files fix - not related to source code
[ ] :nail_care: Polish code

Checklist:

[ ] Tests have been added
[ ] Documentation has been added (Run npm run docs)
[x] Lint checking (Run npm run lint)
[x] Local tests are passed (Run npm test)

Trying to understand this codebase a bit more, seems like this.context gets set when called using a within callback, so something like
  within('.some-selector', () => {
    I.click('Button');
  });

Wondering if we should be changing the implementation of _getContext or should do a check like
const something = this.context || await this._getContext();

Looking for some feedback.

Yeah, your solution should be fine
_getContext already checks that a context element is present.
As you found out that context is used for within to specify area for search. But there is another problem there, if inside within a new page is opened or context element removed this functionality won't work. Not even sure how to fix that :)

Sorry I missed the time to review it so now it was released as part of 3.0.3-beta
Please update to 3.0.3-beta to have this fix applied


Rdd test sampling

Pimped RDD type with sampling and persistence operations

Some refactoring of test sample creation and convenient pimped RDD sampling/persistence operations in RDDTestSampleExtensions.scala


Typo "PATINDEX('%pattern%**'"→"PATINDEX ( '%pattern%',"

https://docs.microsoft.com/en-us/sql/t-sql/functions/text-and-image-functions-textptr-transact-sql?view=sql-server-ver15
https://github.com/MicrosoftDocs/sql-docs/blob/live/docs/t-sql/functions/text-and-image-functions-textptr-transact-sql.md
related:  #7251
#PingMSFTDocs

@hyoshioka0128 : Thanks for your contribution! The author(s) have been notified to review your proposed change.

#label:"aq-pr-triaged"

Hello,
Thank you for this suggestion, and I apologize for the delay in reviewing it.
This change would remove the bolding from the round parenthesis, and result in inconsistent formatting with other parts of the article. Looking at the live page, I believe it is formatted correctly currently.
I am going to go ahead and close this PR, but please know that you can still comment afterward. Please let me know if I have misunderstood the intent of the change and it fixes an issue which I haven't spotted.
Thanks,
Kendra from the Database Docs team
#please-close


Fix import ordering in greenpithumb.py.

Coverage remained the same at 80.277% when pulling c641f4f3e80870057c801a0a641ee62a4273289b on import_order into 462dc534270419428ab57fd7ba6acd95236b083a on master.


🐞 Strange error when querying core type without sub-selection

Reproduced in v0.9.8.
 Use "dagger call alpine --help" to see available sub-commands.
• Engine: e254c39a3421 (version devel ())
⧗ 15.50s ✔ 74

But using dagger query produces a very bizarre error:
❯ echo "{playground{alpine}}" | dagger query
✘ dagger query ERROR [2.30s]
├ [0.98s] loading module
✘ query ERROR [1.32s]
• Engine: e254c39a3421 (version devel ())
⧗ 2.69s ✔ 55 ∅ 9 ✘ 2
Error: make request: input: marshal: json: unsupported type: docker.RegistryHosts
input: json: unsupported type: docker.RegistryHosts

I remember this to give a more helpful graphql error (something like "must have sub-selection") - but it seems like we've lost this now? Maybe in the conversion to DagQL?

I remember this to give a more helpful graphql error (something like "must have sub-selection") - but it seems like we've lost this now? Maybe in the conversion to DagQL?

Not DagQL. That still happens but not on Container, Directory, File and Terminal which have a default sub-selection if none is given (sync for the first 3, websocketEndpoint for Terminal).
So dagger call alpine produces this query: query { playground { alpine { sync } } }.

The unsupported type: docker.RegistryHosts error though, yeah that is definitely a core issue, most likely related to DagQL. GraphQL should say it requires a sub-selection.
It's not just on Container:
$ echo '{container}' | dagger-dev query
Error: make request: input: marshal: json: unsupported type: docker.RegistryHosts

Tested in v0.12, no longer returns an error:
echo "{playground{alpine}}" | dagger -m playground query

{
    "playground": {
        "alpine": {
            "Class": {},
            "Constructor": "ChV4eGgzOmU3MTdiOWQ2Yzc3NmM3MWISSgoVeHhoMzo2OTM0ZjZlNTU4MDIzNzQ2EjESDQoJQ29udGFpbmVyGAEaCWNvbnRhaW5lckoVeHhoMzo2OTM0ZjZlNTU4MDIzNzQ2EngKFXh4aDM6ZTcxN2I5ZDZjNzc2YzcxYhJfChV4eGgzOjY5MzRmNmU1NTgwMjM3NDYSDQoJQ29udGFpbmVyGAEaBGZyb20iGgoHYWRkcmVzcxIPOg1hbHBpbmU6bGF0ZXN0ShV4eGgzOmU3MTdiOWQ2Yzc3NmM3MWI=",
            "Module": null,
            "Self": {
                "Query": {
                    "Pipeline": null,
                    "Server": {
                        "SolverCache": {
                            "CacheManager": {}
                        }
                    }
                },
                "cfg": {
                    "Cmd": [
                        "/bin/sh"
                    ],
                    "Env": [
                        "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
                    ]
                },
                "defaultTerminalCmd": {
                    "Args": null,
                    "ExperimentalPrivilegedNesting": null,
                    "InsecureRootCapabilities": null
                },
                "focused": false,
                "fs": {
                    "Source": {
                        "locations": {
                            "sha256:7396a15d717f67df454993a0167b71c3b01eb7ba2d049732cfca4d81717c6beb": {}
                        }
                    },
                    "def": [
                        "GngKdmRvY2tlci1pbWFnZTovL2RvY2tlci5pby9saWJyYXJ5L2FscGluZTpsYXRlc3RAc2hhMjU2OmI4OWQ5YzkzZTllZDM1OTc0NTVjOTBhMGI4OGE4YmJiNWNiNzE4ODQzOGY3MDk1M2ZlZGUyMTJhMGM0Mzk0ZTBSDgoFYXJtNjQSBWxpbnV4WgA=",
                        "CkkKR3NoYTI1Njo3Mzk2YTE1ZDcxN2Y2N2RmNDU0OTkzYTAxNjdiNzFjM2IwMWViN2JhMmQwNDk3MzJjZmNhNGQ4MTcxN2M2YmVi"
                    ],
                    "metadata": {
                        "sha256:0941019b66c7d4e218d331f86dbd45af5d42091354abf80d24695b6a56109df9": {
                            "caps": {
                                "constraints": true,
                                "meta.description": true,
                                "platform": true
                            }
                        },
                        "sha256:7396a15d717f67df454993a0167b71c3b01eb7ba2d049732cfca4d81717c6beb": {
                            "caps": {
                                "source.image": true
                            },
                            "description": {
                                "llb.customname": "pull docker.io/library/alpine:latest"
                            }
                        }
                    }
                },
                "image_ref": "docker.io/library/alpine:latest@sha256:b89d9c93e9ed3597455c90a0b88a8bbb5cb7188438f70953fede212a0c4394e0",
                "platform": "linux/arm64"
            }
        }
    }
}

There's no need for a module to reproduce, as per https://github.com/dagger/dagger/issues/6561#issuecomment-2110257997:
echo "{directory}" | dagger -m playground query

{
    "directory": {
        "Dir": "/",
        "LLB": null,
        "Platform": "linux/arm64",
        "Query": {
            "Pipeline": null,
            "Server": {
                "SolverCache": {
                    "CacheManager": {}
                }
            }
        },
        "Services": null
    }
}

Nice that we no longer get the error :tada:
But also, yes, the internal details leak... not great. Not quite sure how that's happening, will have a poke around.

@shykes getting bitten by this in:

https://github.com/dagger/dagger/pull/9097#issuecomment-2522423852

dagql should return an error since in GraphQL you can't have leafs to object types.


Register for Push Notifications always fails

I have compiled latest master, and "Register for Push Notifications" at step 1. always fails. What did I do wrong? I'm using microG framework, which actually works, but it seems this app refuses to cooperate. I had no problems with previous versions. Also, I did not test the official app from PlayStore (I have no ways of downloading it since I don't have Playstore on my phone).

I managed to find the v1.5 apk somewhere, and it works on my current configuration. So I must be doing something wrong when compiling.

Did you setup the server part?

I didn't know about that, sorry. Anyway, it's too complicated for me to setup the server part. Thanks.


try to fix the renovate bot from breaking milvus

Renovate bot keeps hitting a failure while attempting to update the pymilvus version. Checking to ensure that if we set this we will stop the bot from attempting to push new versions of that package and burning money on bad runs.

@cooktheryan Sign your commit, please.


Leon closing unexpectedly

Specs

Leon version: 1.0.0-beta.1
OS (or browser) version: Chrome (MacOS Mojave)
Node.js version: v11.10.0
Complete "npm run check" output:

λ npm rum check

><EMAIL_ADDRESS>check /Users/sobrinho/Developer/opensource/leon
> babel-node scripts/run-check.js

⠋
---

.: CHECKING :.

➡ /bin/sh -c node --version
✔ v11.10.0

➡ /bin/sh -c npm --version
✔ 6.7.0

➡ /bin/sh -c pipenv --version
✔ pipenv, version 2018.11.26

➡ /bin/sh -c pipenv --where
✔ /Users/sobrinho/Developer/opensource/leon/bridges/python

➡ /bin/sh -c pipenv run python --version
✔ Python 3.6.5

➡ /bin/sh -c pipenv run python bridges/python/main.py en leon randomnumber "Give me a random number"
✔ {"package": "leon", "module": "randomnumber", "lang": "en", "input": "Give me a random number", "output": {"type": "end", "code": "success", "speech": 61, "options": {}}}

➡ Classifier state
✔ Found and valid

➡ Amazon Polly TTS
✔ Configured

➡ Google Cloud TTS/STT
❗ Google Cloud TTS/STT is not yet configured

➡ Watson TTS
❗ Watson TTS is not yet configured

➡ Offline TTS
❗ Cannot find bin/flite/flite. You can setup the offline TTS by running: "npm run setup:offline-tts"

➡ Watson STT
❗ Watson STT is not yet configured

➡ Offline STT
✔ Found DeepSpeech language model at bin/deepspeech/lm.binary

---

.: REPORT :.

➡ Here is the diagnosis about your current setup
✔ Run
✔ Run modules
✔ Reply you by texting
✔ Amazon Polly text-to-speech
❗ Google Cloud text-to-speech
❗ Watson text-to-speech
❗ Offline text-to-speech
❗ Google Cloud speech-to-text
❗ Watson speech-to-text
✔ Offline speech-to-text

✔ Hooray! Leon can run correctly
➡ If you have some yellow warnings, it is all good. It means some entities are not yet configured

(optional) Leon package version:

Expected Behavior
If something fail, Leon must recover itself.
Actual Behavior
Something happened and Leon closed unexpectedly (nothing seemed to have failed in the interface).
How Do We Reproduce?
I have no idea but probably we can do that by manually throwing the error in the same spot to figure out.

Extra (like a sample repo to reproduce the issue, etc.)

Hello @sobrinho,
Thanks for reporting.
For such behaviors, I prefer to throw exceptions today (it might change in the future depending of the severity of the exception itself). Here it seems your AWS TTS is failing somehow. Are you sure you provided the right AWS settings? Maybe you can try it standalone on the AWS side.

I close this issue as an answer has been provided.


My dataset is a zipped metadata.csv and a wavs folder.
metadata.csv is UTF in this format:
00000|text to speak
00001|text ....
wavs folder contains:
00000.wav
00001.wav  ....
Comes the error from my dataset or from anything else ?
(win10, Voice-Cloning-App-1.1.1.exe with GPU)

metadata.csv 0000.wav|text... works. was missing .wav


qt56.qtwebengine: make it build

Motivation for this change
Currently qt5.qtwebengine can be installed, but the package is a dud. The build fails with exit code 0.
This patch provides the necessary packages to make qtwebengine build.
Things done

[ ] Tested using sandboxing
(nix.useSandbox on NixOS,
or option build-use-sandbox in nix.conf
on non-NixOS)
Built on platform(s)

[x] NixOS
[ ] OS X
[x] Linux

[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nox --run "nox-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[x] Fits CONTRIBUTING.md.

@ttuegel @FRidh
This is requirement for kdepim. I've tried to keep is short. Some improvements are possible. For example, the webengine version of 'icu` is used instead of the one from the system.

It seems that nix-env does not like this url:
http://download.qt.io/community_releases/5.6/5.6.1/.5.6.1-1/qtwebkit-opensource-src-5.6.1.tar.xz
might be because of the /.5.6.1-1 in there.

@vandenoever qtwebkit was added today by @abbradar https://github.com/NixOS/nixpkgs/commits/master/pkgs/development/libraries/qt-5/5.6/qtwebkit/default.nix

I do not currently have time to update this. Would be nice just before akademy/qtcon though. and 16.08 is coming

@vandenoever looks to me like all that is needed is a rebase that drops the qtwebkit patch. Is that correct? If you do not have time, I could do it for you.

@joachifm That would be great. I'm on a tight schedule with some conferences approaching.

Regrettably, I could not get this to work on my end, so this will have to linger for a while, unless somebody else decides to pick it up.

Please reopen when the PR has been updated.


diagnostics: implement cache size using file read

What problem does this PR solve?
Problem Summary:
This PR removes the dependency of cache-size by reading cache size from
file. It also resolves RUSTSEC-2021-0013.
Check List
Tests

Manual test

Release note

No release note.

/merge

/merge

/merge

/merge


Requesting for detailed documentation

name
about
title
labels
assignees

requesting for detailed documentation
Related to detailed documentation
not platform specific
documentation

Hi, i went through the usage documentation given in README, but i wanted to do some customizations to toolbar buttons and the order in which they appear, and wanted to upload the image / video to firebase storage when it is uploaded to quill.. I couldn't find any documentation related to this. I request to please share any information related to this in case you have detailed documentation in some other placeThank you.

I'm going to dump my notes. I've been digging hard into quill trying to learn and understand it. It's rough text it has to be polished. But it's better than nothing. I hope eventually to make a tutorial out of it. The maintainers don't seem to have time to deal with community requests.
Quill Overview
This document describes the most important files and classes in Quill.
=== QUILL EDITOR, RENDER EDITOR, HANDLERS ===

**editor.dart**
abstract EditorState -> extends State<RawEditor>
- RawEditorState can be reference from QuillEditorState. This interface details several methods that are available from the mixins added to the RawEditor class.
- These methods are defined in the inherited classes from Flutter. So this Class helps us keep in mind several useful methods such as:
- showToolbar()

++		- Triggers the mobile OS text selection toolbar.
- requestKeyboard()
++		- Triggers the mobile OS keyboard
- getSelectionOverlay()
abstract RenderAbstractEditor
- Base interface for editable render objects
- Defines which methods the RenderEditor must implement
- Seems to be defined for the sake of documenting the most important operations
Useful:
- selectWordAtPosition() selectLineAtPosition();
- getLocalRectForCaret() - Useful to enforce visibility of full caret at given position
- getPositionForOffset() getEndpointsForSelection()
- selectWordsInRange()

++	- selectPositionAt()
- Selects text between coordinates
- selectWord()
defaultEmbedBuilder()
BlockEmbed -> Image, video

++	- It could be replaced with a custom implementation that supports all sorts of embers (VS data types)
- I could get rid of the blocks layer this way
- Provided as argument in the QuillEditor instance
QuillEditor - Gets the init params
Almost all the props that QuillEditor receives are passed to RawEditor
Basically QuillEditor is a wrapper that handles gestures and styling for the RawEditor
- Controller has the document, Controller will be passed to the RawEditor
- customStyleBuilder - Can override the styles of each attribute type.

_QuillEditorState -> EditorTextSelectionGestureDetectorBuilderDelegate
QuillEditorState has a build method. This build method handles the assignment of styling depending on the current platform ios/android/web
QuillEditorState initialises a child named RawEditor

- init() it inits EditorTextSelectionGestureDetectorBuilder

	Keeps the delegate as a reference to _QuillEditorState
	From a global key we can get the current state (to read the state values, somewhat a counterpattern)
	EditorState? get editor => delegate.editableTextKey.currentState;

	Get the render editor from the state
	RenderEditor? get renderEditor => editor?.renderEditor;

- build()

++		- selectionColor -> Controls the color of the selection
- The local theme controls the selectionColor and the CursorColor
- In the end it returns the RawEditor wrapped in the gestureDetector
++	- getEditableTextKey() - Reference to the editor widget key
_QuillEditorSelectionGestureDetectorBuilder
- _onTapping() - Searches for the Line. Attempts to update the selection. If not possible it fallbacks to a few platform dependent scenarios. Invoked by onSingleTapUp()
- onSingleTapUp() - override

TextSelectionChangedHandler

**RenderEditor**

Contains some extremely useful methods for handling the coordinates of words inside of the rendered document.
There methods are pivotal for synchronising the position of inline reactions to the quill editor

	class RenderEditor extends RenderEditableContainerBox
	with RelayoutWhenSystemFontsChangeMixin
	implements RenderAbstractEditor {

- onSelectionChanged()
- ViewportOffset? offset
- _updateSelectionExtentsVisibility()

++		- React to selection changes
- startOffset, endOffset, _getOffsetForCaret()
++			- Selection coordinates
- _getOffsetForCaret()
- size - Dimensions of the render box from Flutter.
- setDocument() - Seems to be unused
- setSelection()
++	- getEndpointsForSelection() - Selection coordinates
- handleDragStart() handleDragEnd()
++	- selectWordsInRange() -> _handleSelectionChange()
- _paintHandleLayers - text selection handles on mobile
++	- getPositionForOffset() - Gets us the text position (chars) from offset
- getOffsetToRevealCursor() - Used to reveal the cursor if scrolled
++	- getWordBoundary() - Word boundary from click
**RenderEditableContainerBox** -> RenderBox (dimensions) -> RenderBoxContainerDefaultsMixin (HitTest) -> RenderBoxContainerDefaultsMixin (add remove children)
- performLayout() - builds the layout dimensions for the widget -> Called in many places
- childAtPosition() - Gets the child at TextPosition.

**controller.dart**
Embeds can be introduced as Embedabble via the controller, not only Quill. This method can be tracked to understand how to add topic from state store.

QuillController

++	- updateSelection()
++	- addListener() - START UPDATE
- These methods are used to inform many parts of Quill that the controller state has changed
- This means we don't use ChangeNotifierProvider
- 15 listeners in total
- 12 for the buttons, stuff outside of Quill
- 1 for scroll arrows (if to show them)
- RawEditorState init and update listen _didChangeTextEditingValue -> _onChangeTextEditingValue
- updateRemoteValueIfNeeded - When apps are sent into the background, the view ref is lost, when restoring the java code loses the state of the input.
- _showCaretOnScreen - Scrolls to show the carpet on screen
- start timer for blinking caret
- addPostFrameCallback - To be able to account for new lines of text when rendering the selection overlay
++				- _updateOrDisposeSelectionOverlayIfNeeded - Updates the mobile context menu. We can show here the text selection menu as well (ideally with middleware override).
EditorTextSelectionOverlay - An object that manages a pair of text selection handles.
- setState -> Build -> _Editor
NotifiesListers
- history change
- replace text
- format text
- update selection

- addListener, removeListener

**toolbar.dart**
Quill editors can have a Toolbar connected. The toolbar commands the controller which in turn commands the Document which commands the Renderer.
The toolbar can be customized to show all or part of the editing controls/buttons.
The Toolbar offers callbacks for reacting to adding images or videos.
For our own custom embeds we don't have to define extra callback here on the Toolbar context. We can host the logic in our own custom embeds (they are part of our own codebase).

**quill_icon_button.dart**

++	If we want to create more similar buttons for the Toolbar
**delegate.dart**
EditorTextSelectionGestureDetectorBuilderDelegate - Signatures for the methods that the EditableText (QuillEditor) must define to be able to run gesture detector
- getEditableTextKey()
	EditableText is the delegate.
	EditableText comes from Flutter
	The key is the editor widget key.
	The key is used to get the state.
	In the state we have RenderEditor.

=== RAW EDITOR ===

**raw_editor.dart**
- Displays a document as a vertical list of document segments (lines and blocks)
**RawEditorState** extends **EditorState**
	- Defines overrides and listener for all the exposed internal that were added by the mixing
	- Clipboard management, Keyboard management, Document changes management, Gestures Management
	- RawEditorState can be referenced from QuillEditorState.
	- EditorState interface details several methods that are available from the mixins added to the RawEditor class.

with
AutomaticKeepAliveClientMixin<RawEditor>,
	- Indicates that the subtree through which this notification bubbles must be kept alive even if it would normally be discarded as an optimization.
	- For example, a focused text field might fire this notification to indicate that it should not be disposed even if the user scrolls the field off screen.

WidgetsBindingObserver,
	- Notifies when new routes are pushed or poped such that the app can react accordingly (for ex if the app exits)

TickerProviderStateMixin<RawEditor>,
	- Sincronizes the animations of the widget with all other animations so that they can all complete before the new frame is to be rendered

RawEditorStateTextInputClientMixin,
	- Connector that links the editor to the Mobile keyboard

RawEditorStateSelectionDelegateMixin
	- A mixin that controls text insertion operations. It is a delegate for Flutter's TextSelection.

		- it can override the setter for textEditingValue()
			- It intercepts copy paste ops from the system, it commands the QuillEditor controller to run the necessary changes.
			- In other words, that's how Quill knows how to react to text editing ops coming from the system (user input).

		_getOffsetToRevealCaret()
			- Finds the closest scroll offset to the current scroll offset that fully reveals the given caret rect.
			- If the given rect's main axis extent is too large to be fully revealed in `renderEditable`, it will be centered along the main axis.

- build()
	- If no delta document is available an empty one will be created
	- If expanded true it builds an _Editor wrapped with Semantics and CompositedTransformTarget
		- Semantics is used for screen readers
		- CompositedTransformTarget - Hooks the custom widget into the mechanics of layout rendering and calculation of dimensions (Flutter).
		- Why CompositedTransformTarget? - Because Quill uses a custom renderer to render the document (for performance reasons)

	- If not expanded (meaning scrollable) it wraps the _editor with BaselineProxy QuillSingleChildScrollView and CompositedTransformTarget
		Since [SingleChildScrollView] does not implement `computeDistanceToActualBaseline` it prevents the editor from providing its baseline metrics.
		To address this issue we wrap the scroll view with [BaselineProxy] which mimics the editor's baseline.
		This implies that the first line has no styles applied to it.
		Why is computeDistanceToActualBaseline needed?
		If my intuition is right this is needed to scroll the page the right amount to offset the scroll to match the off screen selected text line when the carpet is moved.
		It computes the distance from top to the baseline of the first text. First text out of first editable text. I'll explain bellow, there are more lines of text in a Quill doc.

	- Nested in the _Editor we have the _buildChildren(_doc, context)
		This method loops trough the delta breaks it into text lines and text blocks and renders the corresponding children
		From here on the works of rendering the text starts

	- Finally the whole thing is wrapped in QuillStyles, Actions, Focus, QuillKeyboardListener and returned for the build()
		- Actions are callbacks registered to respond on Intents (Flutter alternative to callbacks)

++	- _updateOrDisposeSelectionOverlayIfNeeded()
- Triggers the selection context menu on mobiles
- _selectionOverlay = EditorTextSelectionOverlay()
- _handleSelectionChanged()
-> widget.controller.updateSelection() Updates the state of the selection in memory (no visual change)
-> _selectionOverlay?.handlesVisible
- _buildChildren()
- compiles the list of nodes to be render as TextLine or TextBlock from the controller.document
- This is where we pass the embedBuilder to the block
**_Editor** extends **MultiChildRenderObjectWidget**
After all these layers: Gesture detectors, mixins, scrolls, actions, etc we finally arrive at the layer that handles the edit operations.
_Render creates and updates the RenderEditor which is basically the custom RenderBox that handles the coordination between multiple line models.
For example the RenderEditor knows how to coordinate multiple lines to draw a selection of text between them. It commands their widgets to render the correct selections.
This is where we need to add our own code for rendering multiple highlights. It queries and coordinates both the models and the render boxes.
MultiChildRenderObjectWidget takes the duty of rendering the line and block widgets that were created by the _buildChildren()

Intents to Actions map
Flutter has a system of dispatching Intents when hotkeys are pressed and then Actions that react to these intents.
Actions can decide if they are enabled or not. This system is an alternative to callbacks.
https://docs.flutter.dev/development/ui/advanced/actions_and_shortcuts

Earlier I mentioned that the _Editor is wrapped in Actions. Well this is the map it uses.
All these actions receive TextSelection and react to it by commanding the Controller.

DoNothingAndStopPropagationTextIntent
ReplaceTextIntent
UpdateSelectionIntent
DirectionalFocusIntent

// Delete
DeleteCharacterIntent
DeleteToNextWordBoundaryIntent
DeleteToLineBreakIntent

// Extend/Move Selection
ExtendSelectionByCharacterIntent
ExtendSelectionToNextWordBoundaryIntent
ExtendSelectionToLineBreakIntent
ExtendSelectionVerticallyToAdjacentLineIntent
ExtendSelectionToDocumentBoundaryIntent
ExtendSelectionToNextWordBoundaryOrCaretLocationIntent

// Copy Paste
SelectAllTextIntent
CopySelectionTextIntent
PasteTextIntent

**quill_single_child_scroll_view.dart**
QuillSingleChildScrollView
Very similar to [SingleChildView] but with a [ViewportBuilder] argument instead of a [Widget] -> Meaning it can scroll over the CompositedTransformTarget instead of Widgets
A [ScrollController] serves several purposes.
It can be used to control the initial scroll position (see [ScrollController.initialScrollOffset]).
It can be used to control whether the scroll view should automatically save and restore its scroll position in the [PageStorage] (see [ScrollController.keepScrollOffset]).
It can be used to read the current scroll position (see [ScrollController.offset]), or change it (see [ScrollController.animateTo])

showOnScreen() -> The most important method here. It is invoked in several scenarios to expose the selected text on screen of off-page.
Now since our ArticlePage uses several stacked expanded editors (due to post topics) we don't use at all the scrolling behaviour.
If we wanted to use the scroll behaviour from Quill that means we would have to make the entire post topic together with the article topic.
Which means I could copy paste the post topics to the bottom of the article which makes absolutely no sense. So therefore we have to handle this part ourselves.
And since the Article and topics are scrolled together by a greater scroll controller we are force to render the article editor as well in the expanded mode.
That make our situation a bit harder because we might have to redo some of the work needed to bring the selected text back into view when moving the carpet.
This is a luxury item for the moment, we don't care of this feature missing in the MVP. So no panic if we don't use the QuillEditorScroll.

_Editor
- Seems to be a container with lifecycle calls create and update for RenderBoxes (RenderEditor)
- createRenderObject() updateRenderObject() -> RenderEditor

**text_line.dart**
Callstack: RawEditorState() -> _buildChildren() -> _getEditableTextLineFromNode() -> EditableTextLine() -> _TextLineElement() -> RenderEditableTextLine() -> TextLine() -> RichTextProxy() -> RenderParagraphProxy extends RenderProxyBox (we will talk proxy boxes separately)

When the rawEditor builds the children it uses 2 types of widgets: lines and blocks.
Bellow we will discuss how lines are renders. Blocks reuse lines.
Blocks are rendered for special graphical elements such as bullet lists.

TextLine
This is the actual line of text being rendered on screen. It uses editable text from flutter to render a basic text input.
Renders the proper text styling based on the delta text styling attributes. Contains lost of methods to accomplish this job.
This widget is rendered inside of an EditableTextLine as a child by the _getEditableTextLineFromNode() from RawEditor.
The widget itself renders a proxBox.
The EditableTextLine uses RenderEditableTextLine to render the highlight and caret on top of the raw text field.

EditableTextLine
- Creates and updates render objects base on the instructions received from the delta document.
- Passes the props to RenderEditableTextLine
createRenderObject() -> RenderEditableTextLine

RenderEditableTextLine
Creates new editable paragraph render box.
It contains many methods needed to coordinate imperatively how the text selection and caret sync with the document controller state.
This is where the hardwork of rendering and simulating the text interactions mechanics is happening.

Here's a list of methods to get a feeling of what happens in RenderEditableTextLine:
Most of these methods are wrappers over the TextLine (body) -> They get their coordinates by querying the underlying text input.
setCursorCont()
setDevicePixelRatio()
setEnableInteractiveSelection()
setColor()
setTextSelection()
setLine() - The actual delta text content
setPadding()
containsTextSelection()
containsCursor()
getLineBoundary()
getOffsetForCaret()
getPositionForOffset()
getWordBoundary()
attach(), detach() -> _onFloatingCursorChange
compute Min/Max Intrinsic Height/Width()
computeDistanceToActualBaseline()
performLayout() -> Flutter layouting

Drawing text selection
For rendering custom highlights we are most interested in these methods:
- paint()
	- Draws the one of text and it's decorations. Custom decorations can be added.
	- It uses the offset of the parent (based on layout constraints) and the ofset of the text selection
- _paintSelection()

++		- Handles the rendering of the selection
- Selection is rendered as new boxes in the paint area (RenderBox)- They can even have an offset
- Paints the _selectedRects
- draw cursor (above and bellow)
- By default, the cursor should be painted on top for iOS platforms and underneath for Android platforms.
- _selectedRects - The individual render boxes that compose a multiline selection
- getBoxesForSelection() -> local TextSelection - Converts TextSelection to boxes coordinates
- list of TextBox.fromLTRBD (Flutter class)
- localSelection() does some sort of a conversion
++	- setTextSelection() - Updates the text selection and clears the rect boxes
- if _attachedToCursorController it is marked for markNeedsLayout markNeedsPaint
- The cursor controller is defined for text fields, it is a change notifier and can be listened to
- When the text cursor changes position also the text selection will need to be repainted
_TextLineElement extends RenderObjectElement
contains methods needed to sync the renderObject in the widget tree

**proxy.dart**
All sorts of rendering proxies for the items that can be rendered in Quill.
A proxy box isn't useful on its own because you might as well just replace the proxy box with its child.
However, RenderProxyBox is a useful base class for render objects that wish to mimic most, but not all, of the properties of their child.

For render objects with children, there are four possible scenarios:
* A single [RenderBox] child. In this scenario, consider inheriting from
  [RenderProxyBox] (if the render object sizes itself to match the child) or
  [RenderShiftedBox] (if the child will be smaller than the box and the box
  will align the child inside itself).
* A single child, but it isn't a [RenderBox]. Use the
  [RenderObjectWithChildMixin] mixin.
* A single list of children. Use the [ContainerRenderObjectMixin] mixin.
* A more complicated child model.
https://programmer.group/the-operation-instruction-of-flutter-s-renderbox-principle-analysis.html

RenderBaselineProxy - Renders the scrollable input
RenderEmbedProxy - Renders embeds
RichTextProxy - rich text
RenderParagraphProxy - RenderProxyBox - Mimics it's children
- getBoxesForSelection() - This code is used from Flutter

**models/quill_delta.dart**
- Container various utils for handling delta text

++	- insert
- skip
- retain
++	- slice - This might be super useful for splitting docs
- concat
++	- diff
- delta.insert('\n' - used to add new character -> Could be used to split our deltas
- DeltaIterator(document)..skip(index) - Skips [length] characters in source delta.
- Delta()..retain - Retain [count] of characters from current position.
- _trimNewLine() - Removes trailing '\n'
**text_selection.dart**
EditorTextSelectionOverlay
- Represents the selection overlay object (the highlight)
- It seems it also renders the mobile actions menu and handles. I thought this is from the system.

**document.dart**
The Document contains the Delta which contains all the operations. Inside operations we can find attributes. The attributes are useful for examining the text.

- These methods are extremely useful

++	- insert --> Can insert embeddable, Can replace selected text
++	- delete
- replace
- format
- undo, hasUndo
- redo, hasRedo
- toPlainText
- isEmpty
- toDelta
- setCustomRules --> Could be extremely useful because we can edit the text editor each time something outstanding happens
**/rules**
- Seems to contain business logic for handling operations and delta modifications

++		- PreserveLineStyleOnSplitRule - Preserves the style to the split line
**node.dart**
An abstract node in a document tree.
Represents a segment of a Quill document with specified offset and length. The offset property is relative to parent.
See also documentOffset which provides absolute offset of this node within the document.

**text_selection.dart**

@adrian-moisa thanks a lot!

@SankethBK Glad to help! I've had a tough time myself to figure out Quill.
I've noticed that on the slack community nobody seems to be online and almost no answers are given (several months in). It's a pity, Quill is by far the best tool for rich text editing in the flutter ecosystem. However, all help request that I've wrote went unanswered by the maintainer(s?). I've wrote multiple times on their slack an no answers were given. Many other users seem to have the same issue. If I look at the github tickets many tickets get closed without answers or resolution.
I've made an unofficial discord server for keeping in touch with active developers on discord. I'm heavily invested in the quill repo and I've spent lots of hours into learning the code base. Maybe I can share a tip or two for your questions or maybe you can do the same for me. I'm available almost at all times on discord since I already maintain many communities there. If you have any Quill questions maybe I can help. Cheers!
Unofficial Discord
Please do share the link wherever you spot people in need of help for implementing rich text editing in Flutter. 🙏
https://discord.gg/XpGygmXde4
I've been diving into Quill source code for over 2-3 accumulated weeks. I've took notes of everything because I need to extend it with additional features for my own app. If you ever need to expand on the existing Quill codebase you'll find the notes in architecture-overview super handy. Quill already has 13K lines of code and it keeps on growing. The official docs are razor thin. So this breakdown, even if crude, will be a super handy resource for you.
At some point I plan to run a major refactoring of the files structure. The current layout is very difficult to follow, especially around the top of the hierarchy of classes. Hopefully the official maintainer will be open for such changes. If not I'll find myself in the difficult position of having to fork and start a standalone repo. I'll need to bolt on many more features onto Quill to achieve the results I'm looking for. At some point I'm chasing to enable full support for realtime colaborative editing. Tables are missing, no layouts, etc. A lot of stuff needs to be added. Hopefully by then the discord server will have more people in that are willing to coordinate and join forces.

Also feel free to correct me on any of the mistakes made in the notes. I highly appreciate the feedback. Cheers!

@adrian-moisa I was also having same issue, i needed to make some customisation but the docs weren't enough. I have been experimenting out various things by looking at source code, if you need any help with refactoring or writing additional docs i would be happy to help

To be honest, I'm trying to grab a solid on what is going on in the proxy.dart file. It's still a vague area for me. If you have any know how to share. I'd be happy to receive. Again, hope to see you on discord. I'd love to stay in touch with you. I'll be constantly working on Quill related tasks and it's good to bounce ideas with someone that knows the source code. Cheers!


Add s3CustomCABundle to migstorage crd schema

I missed this while working on https://github.com/fusor/mig-controller/pull/354, it should have been included there.

The CRD will need to be updated in the operator as well.


Integration Hangs when selecting "add sensors from station"

Core 2024.1.2
superv 2023.12.0
Installed through HACS " WeatherFlow Forecast and Sensor integration for Home Assistant"
then went to devices services installed "weatherflow forecast" as explained.
Added station ID and API. Solar so good.
When selecting "Add sensors from the Weather Station"
the integration Hangs.

It is hard to help you without log files. Please look in the log and let me know what that says.
Also, you did restart HA after the HACS installation?

I'm Sorry to say that I might have jumped the gun a bit.
Apparently my Tempest itself is not providing any info because of its battery drain. While it looked as if I wasn't getting any data I think that is the reason for not being able to work.
HACS has been installed for years so that's not the issue.
I'm using weatherflow2mqtt but switched that off while using the core integration.
Let me see first if I can get my Tempest charged and then try again.
For me its ok to either leave this open or close it and I could start a new issue incase.
Sorry again for jumping the gun.😇

If the station has not been providing data for some time the JSON that is returned contains a lot of empty data and that is the reason it fails. I live in the North also and had to buy the Power Bank to ensure my Station had power in the Winter.
I will close it for now, and then please reopen or crate a new issue if it still fails.


C is so strange.

2024/06/15 19:14:58 Сlient connected: <IP_ADDRESS>:64326
2024/06/15 19:15:19 Client disconnected: <IP_ADDRESS>:64326

Yep, it was Russian C. Thank you!

Fixed in v3.0.1 release