Fix: App does not dynamically translate address options

Details
Fetch the list of places when the prop query object gets updated to get the latest places based on new query data.
Fixed Issues

$ https://github.com/Expensify/App/issues/21682
PROPOSAL: https://github.com/Expensify/App/issues/21682#issuecomment-1610130243
Tests

Goto any address input page(eg. Settings -> Profile -> Personal Details -> Home Address)
In Address Line 1 type any initial search (such as "123") and wait for the list of results to populate below
Keep it open and from the other device change the Language(Settings -> Preferences -> Language)
Verify the list items get updated with the newly selected language

[X] Verify that no errors appear in the JS console

Offline tests

N/A
QA Steps

Goto any address input page(eg. Settings -> Profile -> Personal Details -> Home Address)
In Address Line 1 type any initial search (such as "123") and wait for the list of results to populate below
Keep it open and from the other device change the Language(Settings -> Preferences -> Language)
Verify the list items get updated with the newly selected language

[X] Verify that no errors appear in the JS console

PR Author Checklist

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

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

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

[X] Android / native
[X] Android / Chrome
[X] iOS / native
[X] iOS / Safari
[X] MacOS / Chrome / Safari
[X] MacOS / Desktop

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

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

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

[X] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[X] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is approved by marketing by adding the Waiting for Copy label for a copy review on the original GH to get the correct copy.
[X] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[X] I verified the JSDocs style guidelines (in STYLE.md) were followed

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

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

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

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

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

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

[X] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[X] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[X] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[X] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[X] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.
[X] I have checked off every checkbox in the PR author checklist, including those that don't apply to this PR.

Screenshots/Videos

Web
https://github.com/Expensify/react-native-google-places-autocomplete/assets/14358475/caeeee3f-b84f-41b7-a706-9c1c13e75d67

Mobile Web - Chrome
ab.webm

Mobile Web - Safari
https://github.com/Expensify/react-native-google-places-autocomplete/assets/14358475/dcca3c2b-acbe-4681-a979-14bc20b21c5b

Desktop
https://github.com/Expensify/react-native-google-places-autocomplete/assets/14358475/1aed2851-1156-40c4-a737-d3a4c8b7feef

iOS
https://github.com/Expensify/react-native-google-places-autocomplete/assets/14358475/4e161bb8-c574-45a0-a6a3-962f79726ce1

Android
https://github.com/Expensify/react-native-google-places-autocomplete/assets/14358475/f4993b99-984f-46d3-b437-02bf8605ffe1

Huh not sure why this didn't autoassign me as a reviewer (not your fault @Pujan92, something with the code).

I think once C+ reviewer approved then only it gets assigned to the engineer(maybe due to the recent flow change). Saying bcoz that is the behavior I am seeing for other PR's.

I think once C+ reviewer approved then only it gets assigned to the engineer(maybe due to the recent flow change). Saying bcoz that is the behavior I am seeing for other PR's.

Oh, interesting! I guess that makes sense. Welp, I'll still review this now haha

Reviewer Checklist

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

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

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

[ ] Android / native
[ ] Android / Chrome
[ ] iOS / native
[ ] iOS / Safari
[ ] MacOS / Chrome / Safari
[ ] MacOS / Desktop

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

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

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

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

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

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

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

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

[x] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[x] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[x] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[x] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[x] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.
[x] I have checked off every checkbox in the PR reviewer checklist, including those that don't apply to this PR.

Screenshots/Videos

Web
https://github.com/Expensify/App/assets/3069065/9563764a-da47-4e43-ab71-9e923bc037a2

Mobile Web - Chrome
https://github.com/Expensify/App/assets/3069065/d2f80eca-a9d0-4bea-8410-03fa1e57b913

Mobile Web - Safari
https://github.com/Expensify/App/assets/3069065/372a800a-47a8-42c1-a779-ed3bbc796acf

Desktop
https://github.com/Expensify/App/assets/3069065/f0a173b0-7e3c-4dee-a104-1b3c5a0aeadf

iOS
https://github.com/Expensify/App/assets/3069065/f87a5041-5821-44df-983e-b197ec004205

Android
https://github.com/Expensify/App/assets/3069065/d8a5bbbd-6a1f-4b3d-b660-8cb28ddcb0f1

Thanks for the patience @Pujan92. @dangrous All yours.

Hey @mananjadhav the check noticed there are a couple unchecked boxes in your checklist. I see the screenshots so I think we're good, do you mind checking those when you have a sec and we can get this merged?
Thanks!

Thanks for the reminder @dangrous  I was pretty sure I updated, I see this happened with me for multiple PRs today 🤔. Anyway I've fixed it.

Yeah I've definitely had that happen too with checkboxes. For some reason it just doesn't work occasionally.

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

🚀 Deployed to staging by https://github.com/dangrous in version: 1.3.37-0 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

🚀 Deployed to production by https://github.com/Julesssss in version: 1.3.37-7 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
failure ❌

🕸 web 🕸
success ✅


sticky state not properly displayed when views contain resolve functions

I am using

angular 1.5.0
ui router 0.3.0
ui router extras 0.1.2

In my plunkr, checkout app.js line 29. When you use 100 ms for the $timeout inside the resolve function tab1 will be loaded properly and tab2 afterwards.
When you use instead 500 ms only tab2 will be loaded. Tab1 will be never displayed unless you hit the link tab1
The $timeout is just a placeholder for any promise. In my real world case that is a $http request were the response time differs.
http://plnkr.co/edit/lQ7acurykufGYnX28FrI?p=preview

First, there are some problems with your setup:

in main.tab1 state you are using named views. The controller and controllerAs properties belong to the VIEW, not the state.
in main.tab1 state you put the resolve on the view.  The resolve property belongs to the STATE not the view.

It looks like you want to activate both states when the app starts.

After 200ms go to tab1
After 500ms go to tab2

However, it takes 500ms to activate tab1
Then, the second transition (to tab2) starts, and SUPERSEDES the original transition (to tab1).  A superseded transition is cancelled (this is normal UI-Router stuff).
You should activate tab1, wait for the transition to complete, and THEN activate tab2.
.run(function($timeout, $state, $rootScope) {
  $rootScope.$state = $state;
  function goto(state) {
    return function() { return $state.go(state); }
  }

  $timeout(goto('main.tab1'), 200)
    .then(goto('main.tab2'));

http://plnkr.co/edit/zAUa1hVHPwu4nkBg72Xm?p=preview


clean up / standardize codebase with Flake

all done, except there seems to be an issue with reference data (probably introduced during batching changes)

fixed in #14


Move FTUE video resources to CDN

Videos in use from this PR: https://github.com/google/web-stories-wp/pull/6167  (located at assets/images/editor/helpCenter) need to be moved to the CDN and source replaced in src/edit-story/components/helpCenter/constants.
If the infra pod can ready the CDN and then pass the rest of it to Peapod?

@BrittanyIRL FWIW, adding assets to the CDN is super simple and documented in docs/cdn.md. I'll do it now, but there's no reason for this to be blocked by this pod in the future

I had no idea that was documented, apologies!


ARROW-13874: [R] Implement TrimOptions

I'm not entirely convinced the tests should be included, but I have added them for now to demonstrate that the changes I made work, and to start a discussion on whether to include them or not.

I'm not entirely convinced the tests should be included, but I have added them for now to demonstrate that the changes I made work, and to start a discussion on whether to include them or not.

The tests are testing the code you added to make_compute_options, so I think they're good.


Add find_fastest_DDtheta_mocks_bin_refs() function to Corrfunc/mocks/DDtheta_mocks

Addresses #97 partially. As the title would suggest, to add the find_fastest_wp_bin_refs() function from Corrfunc/theory/wp.py#L17 to Corrfunc/mocks/DDtheta_mocks.py.

 Here is an overview of what got changed by this pull request:

Clones added
============
- Corrfunc/mocks/DDtheta_mocks.py  1

See the complete overview on Codacy

Encountered an error while testing, and am not sure why.
When running the code as follows, L534 of Corrfunc/mocks/DDtheta_mocks.py with the snippet
isa=integer_isa

in the argument, locally I get the error
TypeError: cannot unpack non-iterable NoneType object

Here is what I have done:
from Corrfunc.mocks.DDtheta_mocks import find_fastest_wp_bin_refs
from Corrfunc.io import read_catalog

X, Y, Z = read_catalog()

boxsize = 420.0
nthreads = 2
pimax = 40.0
binfile = np.logspace(np.log10(0.1), np.log10(10.0), 15)

find_fastest_wp_bin_refs(boxsize, pimax, mthreads, binfile, X, Y, Z)

Any suggestions as to why and how I should debug? I have checked by default isa has been set, and is isa=r'fastest'.

Looks like this PR passes the Travis CI tests. I could continue copying and pasting to relevant modules if everything is okay.

Hi @kakirastern - thanks for taking a stab. From what I can tell, you have simply copy-pasted the code from the wp script into the DDtheta_mocks script. The idea here is to create a similar function (but replace wp with DDtheta_mocks in the function name) but adapt the interface to match that of DDtheta_mocks here. For instance, there should be only RA/DEC in this new function and no mention of X/Y/Z
(I am on parental leave for the next week and responses will continue to be slow. Thanks for your patience)

Hi @manodeep Thanks for the reply! Sorry I took the hint in the original issue to "copy and paste" a bit too literally. I will give it another try soon before the end of the coming weekend.

Hello @kakirastern! Thanks for updating this PR. We checked the lines you've touched for PEP 8 issues, and found:

In the file Corrfunc/mocks/DDtheta_mocks.py:

Line 455:80: E501 line too long (86 > 79 characters)
Line 469:80: E501 line too long (84 > 79 characters)
Line 497:80: E501 line too long (92 > 79 characters)
Line 536:80: E501 line too long (93 > 79 characters)
Line 575:45: E128 continuation line under-indented for visual indent
Line 576:45: E128 continuation line under-indented for visual indent
Line 577:45: E128 continuation line under-indented for visual indent
Line 578:45: E128 continuation line under-indented for visual indent
Line 579:45: E128 continuation line under-indented for visual indent
Line 580:45: E128 continuation line under-indented for visual indent
Line 580:80: E501 line too long (80 > 79 characters)
Line 581:45: E128 continuation line under-indented for visual indent

Hi @manodeep I have made the changes as suggested. It seemed to have worked, at least on the surface. I have been able to compile and install then test the code successfully. Though I am not sure it is 100% correct. Any feedback would be greatly appreciated.

 Here is an overview of what got changed by this pull request:

Issues
======
- Added 2

Complexity increasing per file
==============================
- Corrfunc/mocks/DDtheta_mocks.py  2

Clones added
============
- Corrfunc/mocks/DDtheta_mocks.py  2

See the complete overview on Codacy

 Here is an overview of what got changed by this pull request:

Issues
======
- Added 1

Complexity increasing per file
==============================
- Corrfunc/mocks/DDtheta_mocks.py  2

Clones added
============
- Corrfunc/mocks/DDtheta_mocks.py  2

See the complete overview on Codacy

 Here is an overview of what got changed by this pull request:

Issues
======
- Added 1

Complexity increasing per file
==============================
- Corrfunc/mocks/DDtheta_mocks.py  2

Clones added
============
- Corrfunc/mocks/DDtheta_mocks.py  2

See the complete overview on Codacy

 Here is an overview of what got changed by this pull request:

Complexity increasing per file
==============================
- Corrfunc/mocks/DDtheta_mocks.py  1

Clones added
============
- Corrfunc/mocks/DDtheta_mocks.py  4

See the complete overview on Codacy

Fixed code to pass Codacy/PR Quality Review.

Thanks - good work! :)
I have a couple of suggestions - ideally, the find_fastest* should be accept all of the parameters to the underlying function (DDtheta_mocks). For instance, have a think about how to pass the RA2, DEC2 parameters; and how to test for link_in_ra=False (i.e., only linking in declination), or link_in_dec=False (i.e., a brute-force calculation).
Also, you should add your name to the "author" list in the file.

 Here is an overview of what got changed by this pull request:

Complexity increasing per file
==============================
- Corrfunc/mocks/DDtheta_mocks.py  4

See the complete overview on Codacy

Interesting, am seeing the An error occurred while generating the build script. error output for the clang CI tests... But the gcc CI tests are fine and are passing.

Just added my name to the authors' list of the Corrfunc/mocks/DDtheta_mocks file as well, plus re-triggering the Travis CI checks.

 Here is an overview of what got changed by this pull request:

Complexity increasing per file
==============================
- Corrfunc/mocks/DDtheta_mocks.py  4

Clones added
============
- Corrfunc/mocks/DDtheta_mocks.py  5
- Corrfunc/theory/wp.py  1

See the complete overview on Codacy

@kakirastern Could you please re-trigger that sub-build that failed? Must have been a transient issue

Hi @manodeep Sure, have just re-triggered the build.

 Here is an overview of what got changed by this pull request:

Issues
======
- Added 1

Complexity increasing per file
==============================
- Corrfunc/mocks/DDtheta_mocks.py  4

Clones added
============
- Corrfunc/mocks/DDtheta_mocks.py  5
- Corrfunc/theory/wp.py  1

See the complete overview on Codacy

 Here is an overview of what got changed by this pull request:

Complexity increasing per file
==============================
- Corrfunc/mocks/DDtheta_mocks.py  4

Clones added
============
- Corrfunc/mocks/DDtheta_mocks.py  5
- Corrfunc/theory/wp.py  1

See the complete overview on Codacy

I have checked the Travis CI checks are indeed all passing, but for some reason that fact has not been reflected on this page as of now...

 Here is an overview of what got changed by this pull request:

Issues
======
- Added 1

Complexity increasing per file
==============================
- Corrfunc/mocks/DDtheta_mocks.py  5

Clones added
============
- Corrfunc/mocks/DDtheta_mocks.py  5
- Corrfunc/theory/wp.py  1

See the complete overview on Codacy

Just tested more thoroughly again and fixed the bug in the now L555 to print out some info statement for Case 2: (link_in_dec=True, link_in_ra=False). Previously was combining the two conditional if statements with the & logical operator (should have been the and logical operator in Python, but & worked nonetheless). But after separating the logic into layers like the following:
    if link_in_dec is True:
        if link_in_ra is False:
            msg3 = "Info: Gridding in the declination only, as link_in_dec " \
                   "is set to True while link_in_ra is set to False." \
                   "Thus looping is only needed over the range of " \
                   "(min, max) bin, with refinements in the declination."
            print(msg3)

The condition was able to be satisfied when met and the print statement was successfully outputted. For consistency's sake have changed & into and as the Python logical operator.

 Here is an overview of what got changed by this pull request:

Issues
======
- Added 1

Complexity increasing per file
==============================
- Corrfunc/mocks/DDtheta_mocks.py  6

Clones added
============
- Corrfunc/mocks/DDtheta_mocks.py  5
- Corrfunc/theory/wp.py  1

See the complete overview on Codacy

 Here is an overview of what got changed by this pull request:

Complexity increasing per file
==============================
- Corrfunc/mocks/DDtheta_mocks.py  6

Clones added
============
- Corrfunc/mocks/DDtheta_mocks.py  5
- Corrfunc/theory/wp.py  1

See the complete overview on Codacy

Thanks @kakirastern.
What I meant for the link_in_dec=True case was that (rather than returning an error) we should be able to provide an implementation that loops and returns the fastest dec_bin_ref (possibly None for ra_bin_ref)

What I meant for the link_in_dec=True case was that (rather than returning an error) we should be able to provide an implementation that loops and returns the fastest dec_bin_ref (possibly None for ra_bin_ref)

Hi @manodeep Understood. Currently for the link_in_dec=True case both some additional info and an implementation that loops through and outputs the fastest dec_bin_ref are provided. (But currently I have set link_in_ra=False as the second checking condition in addition to link_in_dec=True.) I can certainly make the appropriate changes using None for ra_bin_ref soon to render the code self-consistent.

I have tried for the (link_in_dec=True, link_in_ra=False) case to setra_bin_ref=0, I did get an output but also the warning "Warning: bin refine factor along axis = 0 *must* be >=1. Instead found bin refine factor =0". I have also tried setting ra_bin_ref=1 for this case which makes a bit more sense intuitively, and that worked fine it seemed to my untrained eyes.
I might have misunderstood something, if that's the case please let me know.
In summary, I did something like the following:
>>> from __future__ import print_function
>>> import numpy as np
>>> import time
>>> from math import pi
>>> from os.path import dirname, abspath, join as pjoin
>>> import Corrfunc
>>> from Corrfunc.mocks.DDtheta_mocks import find_fastest_DDtheta_mocks_bin_refs
>>> binfile = pjoin(dirname(abspath(Corrfunc.__file__)), "../mocks/tests/", "angular_bins")
>>> N = 100000
>>> nthreads = 4
>>> seed = 42
>>> np.random.seed(seed)
>>> RA1 = np.random.uniform(0.0, 2.0*pi, N)*180.0/pi
>>> cos_theta = np.random.uniform(-1.0, 1.0, N)
>>> DEC1 = 90.0 - np.arccos(cos_theta)*180.0/pi
>>> autocorr = 1
>>> find_fastest_DDtheta_mocks_bin_refs(autocorr, nthreads, binfile, RA1, DEC1, link_in_dec=True, link_in_ra=False, return_runtimes=False)
Info: Gridding in the declination only, as link_in_dec is set to True while link_in_ra is set to False. Thus looping is only needed over the range of (min, max) bin, with refinements in the declination.
Out: (1, 3)

 Here is an overview of what got changed by this pull request:

Complexity increasing per file
==============================
- Corrfunc/mocks/DDtheta_mocks.py  18

Clones added
============
- Corrfunc/mocks/DDtheta_mocks.py  13
- Corrfunc/theory/wp.py  1

See the complete overview on Codacy

 Here is an overview of what got changed by this pull request:

Complexity increasing per file
==============================
- Corrfunc/mocks/DDtheta_mocks.py  13

Clones added
============
- Corrfunc/mocks/DDtheta_mocks.py  9
- Corrfunc/theory/wp.py  1

See the complete overview on Codacy

 Here is an overview of what got changed by this pull request:

Complexity increasing per file
==============================
- Corrfunc/mocks/DDtheta_mocks.py  13

Clones added
============
- Corrfunc/mocks/DDtheta_mocks.py  9
- Corrfunc/theory/wp.py  1

See the complete overview on Codacy

@kakirastern Btw, since we dropped the nmatcher project from OpenAstronomy GSoC, it is totally fine if you do not resources to commit to this PR. If so, please let me know - I will merge this PR into a separate branch and make the necessary changes. That way, the PR is merged in, and you still get credit for the time and effort you have already committed.

@kakirastern Btw, since we dropped the nmatcher project from OpenAstronomy GSoC, it is totally fine if you do not resources to commit to this PR. If so, please let me know - I will merge this PR into a separate branch and make the necessary changes. That way, the PR is merged in, and you still get credit for the time and effort you have already committed.

Not a problem! I would like to continue my work on this PR until it is merged, since I am enjoying the process and am learning a lot from the experience. I will work on it a bit more soon according to your suggestions and get back to you soon.

Thank you - your continued efforts on this PR are appreciated!

 Here is an overview of what got changed by this pull request:

Complexity increasing per file
==============================
- Corrfunc/mocks/DDtheta_mocks.py  9

Clones added
============
- Corrfunc/mocks/DDtheta_mocks.py  5
- Corrfunc/theory/wp.py  1

See the complete overview on Codacy

 Here is an overview of what got changed by this pull request:

Complexity increasing per file
==============================
- Corrfunc/mocks/DDtheta_mocks.py  8

Clones added
============
- Corrfunc/mocks/DDtheta_mocks.py  5
- Corrfunc/theory/wp.py  1

See the complete overview on Codacy

Added changelog entry for PR.

 Here is an overview of what got changed by this pull request:

Complexity increasing per file
==============================
- Corrfunc/mocks/DDtheta_mocks.py  8

Clones added
============
- Corrfunc/mocks/DDtheta_mocks.py  5
- Corrfunc/theory/wp.py  1

See the complete overview on Codacy

 Here is an overview of what got changed by this pull request:

Complexity increasing per file
==============================
- Corrfunc/mocks/DDtheta_mocks.py  7

Clones added
============
- Corrfunc/mocks/DDtheta_mocks.py  5
- Corrfunc/theory/wp.py  1

See the complete overview on Codacy

@kakirastern I requested one final change, but I am approving the PR regardless. Thank you so much for all your efforts!
@lgarrison Did you want to check if I have missed anything?

@manodeep You are more than welcome!

 Here is an overview of what got changed by this pull request:

Complexity increasing per file
==============================
- Corrfunc/mocks/DDtheta_mocks.py  7

Clones added
============
- Corrfunc/mocks/DDtheta_mocks.py  6

See the complete overview on Codacy

 Here is an overview of what got changed by this pull request:

Complexity increasing per file
==============================
- Corrfunc/mocks/DDtheta_mocks.py  7

Clones added
============
- Corrfunc/mocks/DDtheta_mocks.py  4

See the complete overview on Codacy

@kakirastern Thank you for your updates. I have made a couple of changes, and once the tests pass, I will merge this PR in.
@kakirastern Thanks again for all your efforts on this PR. You are very welcome to look at other sections of the code-base that you might want to contribute to. This PR highlighted that we need a proper contributing guideline. A related (but somewhat advanced) idea would be to create a decorator function that can be applied on individual pair-counters to automagically generates this helper routine to return the faster combination. This decorator would load the pair-counting function source, and create a nested triple loop over x/y/z-binref, and call the "decorated" function (passing all the parameters through), and finally return the runtimes as requested. Such a decorator could be immediately applied to all remaining clustering statistics within Corrfunc (even the void probability functions, see #97)
Regardless of your choice, thank you again for your contribution!

@kakirastern Thanks again for all your efforts on this PR. You are very welcome to look at other sections of the code-base that you might want to contribute to. This PR highlighted that we need a proper contributing guideline. A related (but somewhat advanced) idea would be to create a decorator function that can be applied on individual pair-counters to automagically generates this helper routine to return the faster combination. This decorator would load the pair-counting function source, and create a nested triple loop over x/y/z-binref, and call the "decorated" function (passing all the parameters through), and finally return the runtimes as requested. Such a decorator could be immediately applied to all remaining clustering statistics within Corrfunc (even the void probability functions, see #97)
Regardless of your choice, thank you again for your contribution!

@manodeep You are welcome! Yeah, I would be interested in helping out making such a decorator function, but may need some guidance.


[BUG] macro 'dbt_macro__pit' takes no keyword argument 'stage_tables'

Describe the bug
A clear and concise description of what the bug is.
When I try to use the pit macro (per the documentation), I get the error

macro 'dbt_macro__pit' takes no keyword argument 'stage_tables'

Environment
dbt version: 1.5.1
automate_dv version: 0.9.6
Database/Platform:  Snowflake
To Reproduce
Steps to reproduce the behavior:

Go to '...'
Click on '....'
Scroll down to '....'
See error

Please see here, we updated this in 0.9.0:
https://automate-dv.readthedocs.io/en/latest/migration_guides/

Got it! Would be great to update these docs as well https://automate-dv.readthedocs.io/en/latest/metadata/#point-in-time-pit-tables

Thanks for pointing that out! We'll update that right away

Thanks for pointing that out! We'll update that right away


42 config new

changed config class, this allows to define multiple payment specific config options

Coverage remained the same at 100.0% when pulling eee6be980f9ba5c8be069ced7b241efcb0926928 on 42-config-new into 140fe77983a55eb9e6cfe7b5785c786c22b12307 on 42-redesign.

Coverage remained the same at 100.0% when pulling eee6be980f9ba5c8be069ced7b241efcb0926928 on 42-config-new into 140fe77983a55eb9e6cfe7b5785c786c22b12307 on 42-redesign.


Update README.md

fix runtime configuration example to use customKey
standardize warning callouts to use a block quote and bold "Warning:" text. Previously there were different ways a warning was mentioned on the docs page:

A warning emoji. The warning emoji didn't render in the actual site.

Italicized "Warning" text. Imo, does not stand out on the page.

Thank you! 🙏


Make IncomingDocument.AddAttachmentFromStream External

Plear make Procedure AddAttachmentFromStream in table 130 (Incoming Document) available to AL Extension development.

Moving to AllAppExtensions


Address Validation API doesn't have a Java client library.

Is your feature request related to a problem? Please describe.
The Google Address Validation API doesn't have a client library for Java, only for C#. I am trying to use it to validate if an address a user enters is within the United States, as my clients cannot ship their products outside of the US. If there is already a Google service that could take care of this, please let me know! I looked and couldn't find anything as robust as the Validation API. The Node.js library isn't ideal for me as I only interact with Google Cloud APIs on my Java server, where my gcloud credentials are securely stored and automatically injected wherever gcloud requires them.
Describe the solution you'd like
I would like to create the Java library myself and open a pull request for it.
Describe alternatives you've considered
Writing the raw rest api call myself in Java, which is annoying.

Why have you opened this issue in the .NET repo instead of in the Java repo?


Troubleshooting steps should document use of IOTEDGE_LOG=debug (or expand on edgelet=debug)

Trying to provision a device with DPS was returning this cryptic error message, which none of the troubleshooting instructions helped with:
<4>2021-03-03T19:48:53Z [WARN] - Could not provision device
<4>2021-03-03T19:48:53Z [WARN] - 	caused by: DPS registration failed because the DPS operation is not assigned
<3>2021-03-03T19:48:53Z [ERR!] - The daemon could not start up successfully: Could not initialize DPS provisioning client
<3>2021-03-03T19:48:53Z [ERR!] - 	caused by: Could not restore previous provisioning result
<3>2021-03-03T19:48:53Z [ERR!] - 	caused by: No such file or directory (os error 2)

Only after searching the Rust source code and finding a reference to IOTEDGE_LOG and setting it to debug (instead of edgelet=debug) did it finally reveal the true error:
<7>2021-03-03T19:46:24Z [DBUG] - [dps::registration] Device Registration Result: device None, hub None, status Some("failed")
<7>2021-03-03T19:46:24Z [DBUG] - [dps::registration] <...> error_message: Some("Custom allocation failed with status code: 404") <...>

These log messages are not produced when configured as edgelet=debug, so this setting as recommended in the docs is not sufficient to troubleshoot edge security daemon issues.

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

ID: 014b28e4-afcd-a151-1819-1eccd31d3715
Version Independent ID: 032a4694-18d7-67eb-56bb-64078d79d6ae
Content: Troubleshoot - Azure IoT Edge
Content Source: articles/iot-edge/troubleshoot.md
Service: iot-edge
GitHub Login: @kgremban
Microsoft Alias: kgremban

Hello @stewartadam
I have assigned the issue to the content author for further review.

@stewartadam Thank you for sharing your experiences with us. To verify the steps that you took, it sounds like you were following these steps:

But you got more informative logs by setting Environment=IOTEDGE_LOG=dubug instead of Environment=IOTEDGE_LOG=edgelet=debug?
@veyalla what do you think of this proposed change?

Well, need to dev team to weigh in - can you please open an issue or transfer this one to the azure/iotedge repo?


Added mkl version check to better handle WAs

This should bring performance improvement and is rather straightforward.

@rothpc could you please take a look?


rename name builtin to probe

Hope this covers all. The string name is quite common in the code base.

Thanks!


Communication over Serial Port

I want to use MBusMaster with Serial port, From current code it looks like it is not possible. Would be a useful feature when using UART MBus receivers.

If you want to send a pull request I would be happy to include it.
Cheers,
Martin

Serial capability has been added.


Feature/meeting mediator a11y

Summary
This pull request copies the accessibility improvements made to the meeting mediator in riff-rtc. Specifically, in riff-rtc, PR #'s 120, 123, and 124. Each PR's changes are reflected here in a separate commit.
Ticket Link
https://app.zenhub.com/workspaces/riff-projects-5cb6029b4103d93ceadf001b/issues/rifflearning/zenhub/64
Checklist

[x] Ran make check-style to check for style errors (required for all pull requests)
[x] Ran make test to ensure unit and component tests passed
[x] Has UI changes(https://github.com/mattermost/mattermost-webapp/blob/master/i18n/en.json)) updates

some of the prop-types were writing errors to the console (PeerVideo videoEl isn't an element? it thinks it's just an object, and TextChat badge can currently be either a bool OR a number) so I squashed those changes into the fix style commit and force pushed.


HTTP 403: AppId: "32613fc5-e7ac-4894-ac94-fbc39c9f3e4a" is not allowed.

I was able to run this back in June without issue, but now I am getting this error when running:
python retriever.py --user<EMAIL_ADDRESS>--output activities.csv --token
toke was generated from account that has fullaccess permissions to victim mailbox.

Unfortunately, Microsoft has revoked public access to the API. The tool will no longer function. Thanks for commenting.


bad interpreter

When i run the cmd i`m getting this
-bash: /usr/local/bin/dryrun: /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby: bad interpreter: No such file or directory

There's seem to be an issue with your ruby https://www.google.co.uk/search?q=ruby%3A+bad+interpreter%3A+No+such+file+or+directory&oq=ruby%3A+bad+interpreter%3A+No+such+file+or+directory&aqs=chrome..69i57j69i58.174j0j1&sourceid=chrome&ie=UTF-8

@athulcek Do you solve the problem? I have the same problem with you.


How to position initIndex item in center of the screen?

I am developing a feature that allows users to search for items and click on a search result. When the results are displayed on the screen, I use initIndex to position the selected item within the view.
@override
  Widget build(BuildContext context) {
    return FlutterListView(
      key: listKey,
      controller:listViewController,
      reverse: true,
      delegate: FlutterListViewDelegate(
        _listItem,
        childCount: items.length,
        onItemKey: (index) {
          return items.itemAt(index).id;
        },
        initIndex: initialScrollIndex,
        keepPosition: true,
      ),
    );
  }

Currently the initIndex is being displayed at bottom of screen. How to position initIndex item at center?
Thank you!

The widget has initOffset and initOffsetBasedOnBottom two properties.
I have not implemented showing the item in the center of the list view. But you can adjust initOffset to implement it.
The item will show top if reverse = true and initOffsetBasedOnBottom=true. You can adjust initOffset to a distance from the top.
If you search in flutter list view, you can invoke controller.sliverController.jumpToIndex
void jumpToIndex(int index,
      {double offset = 0, bool offsetBasedOnBottom = false}

Thank you @robert-luoqing, Let me try this.


Add first basic e2e tests

towards https://github.com/giantswarm/giantswarm/issues/30175

/run app-test-suites-single PROVIDER=capa

/run app-test-suites

Retrying so I can debug...
/run app-test-suites

Ok, I think this should now work...
/run app-test-suites

/run app-test-suites

/run app-test-suites-single PROVIDER=capa


FEAT: Add nickname helper function

I have a nice recipe for comparing first names and I'm wondering if you would like to have it added to splink. I think it would be useful for a lot of people, but I'm not sure if you'd like to pollute the core library with these specialized functions, or if this helper should go in some splink-contrib package, or if you want nothing to do with it!
The problem this solves is that with first names, you want "bob" and "robert" to compare very well, since they are nicknames of each other. levenshtein and other metrics don't work very well for this problem. I've been using a hand-curated lookup table to do this comparison.
This is what I'm using, but it would have to be adjusted of course. For example, I'm relying upon the CREATE MACRO ability of duckdb, but probably this could be done in a sql-dialect-agnostic way.
Also, it's a bit weirder than other comparison levels because this requires executing some SQL in the database at initialization time (in order to create the lookup tables and macro). This is weird because this state isn't saved via the linker.save_settings_to_json(): If you reload the linker from these settings and run stuff, the database complains (as it should) that it can't find the are_aliases() macro. You have to manually run the init_db_sql(). Not sure what to do about this.
from splink.duckdb.duckdb_linker import DuckDBLinker
import splink.comparison_library as cl
import splink.comparison_level_library as cll
import pandas as pd
from duckdb import DuckDBPyConnection

def create_nicknames_table_sql(
    *,
    table_name="nicknames",
    canonical_column_name="canonical",
    nickname_column_name="nickname",
    overwrite=False,
) -> str:
    """Returns a SQL statement to create a table of nicknames.

    The table will have two columns,
    one for canonical names and one for nicknames.

    You can think of this as a edge list of a directed graph,
    where names are nodes and there is an edge a->b if b is a nickname of a.
    Note that this is not a symmetric graph, so a->b does not imply b->a
    (though b->a might also exist).

    Each entry is lowercase and whitespace is stripped from both ends.
    """
    p = Path(__file__).parent / "nicknames.sql"
    sql = p.read_text()
    if overwrite:
        sql = sql.replace("create table", "create or replace table")
    sql = sql.replace("nicknames_normalized", table_name)
    sql = sql.replace("canonical_name", canonical_column_name)
    sql = sql.replace("nickname", nickname_column_name)
    return sql

def init_db_sql() -> str:
    """Creates an are_aliases() macro in the database, so you can use
    the are_aliases_sql() as a comparison level condition.
    """

    nicknames_table = "__nicknames_temp"
    aliases_table = "__aliases"
    create_nicknames_sql = create_nicknames_table_sql(
        table_name=nicknames_table, overwrite=True
    )
    return f"""
        -- The nicknames table is the raw canonical -> nickname directed edge list.
        -- "bob" is a nickname of "robert"the table would contain a row
        -- with nickname="bob" and canonical="robert".
        -- It is not symmetric, so "robert" is not a nickname of "bob".
        -- Some pairs are symmetric though, like "mary" and "marie", so
        -- the table would contain both orderings for this pair.
        {create_nicknames_sql}

        -- Now convert to aliases table.
        -- The aliases table is the undirected version of this that represents if two
        -- names are interchangeable. This table would contain a row
        -- with a="bob" and b="robert", where the ordering of a and b does not matter.
        --
        -- The nicknames table would contain ("mary", "marie") and ("marie", "mary"),
        -- but we want the aliases table to contain only ("mary", "marie").
        -- This is important because in the JOIN below, if there were both orderings
        -- in the aliases table, then the JOIN would return a row for each ordering,
        -- and the result would be larger than the input, when we really want a
        -- one-to-one mapping.
        --
        -- Use trick from https://stackoverflow.com/a/63715959/5156887
        CREATE OR REPLACE TABLE {aliases_table} AS (
            SELECT DISTINCT
                CASE WHEN canonical < nickname THEN canonical ELSE nickname  END AS a,
                CASE WHEN canonical < nickname THEN nickname  ELSE canonical END AS b
            FROM {nicknames_table}
        );
        DROP TABLE {nicknames_table};

        -- Now that we have the aliases table, we can define the are_aliases() macro.
        CREATE TEMP SEQUENCE IF NOT EXISTS __input_row_id_seq;
        DROP MACRO IF EXISTS are_aliases;
        CREATE MACRO are_aliases(left_col, right_col) AS (
            WITH inp AS
            (
                SELECT
                    lower(trim(left_col)) as a,
                    lower(trim(right_col)) as b,
                    nextval('__input_row_id_seq') as row_id
            )
                SELECT
                    (aliases.a IS NOT NULL) as are_aliases
                FROM
                    inp LEFT JOIN {aliases_table} AS aliases ON
                    (
                        (inp.a=aliases.a AND inp.b=aliases.b)
                        OR
                        (inp.a=aliases.b AND inp.b=aliases.a)
                    )
            ORDER BY inp.row_id
        )
        """

def are_aliases_sql(col_name: str) -> str:
    """Given two column names, return a SQL expression that is true if the
    corresponding pairs from each column are aliases of each other.

    You must execute `init_db_sql()` on the connection before calling this method.
    """
    return f"are_aliases({col_name}_l, {col_name}_r)"

def first_name_comparison() -> dict:
    return {
        "output_column_name": "first_name",
        "comparison_description": "First Name comparison (using nicknames)",
        "comparison_levels": [
            cll.null_level("first_name"),
            cll.exact_match_level("first_name", term_frequency_adjustments=True),
            {
                "sql_condition": are_aliases_sql("first_name"),
                "label_for_charts": "Match via nicknames",
            },
            cll.else_level(),
        ],
    }

linker = DuckDBLinker(receipts)
linker._con.execute(init_db_sql())
settings = {
    "link_type": "dedupe_only",
    "blocking_rules_to_generate_predictions": [
        "l.first_name = r.first_name and l.state = r.state",
        "l.last_name = r.last_name and l.state = r.state",
        "l.first_name = r.first_name and l.last_name = r.last_name",
    ],
    "comparisons": [
        first_name_comparison(linker),
        cl.levenshtein_at_thresholds("last_name"),
    ],
    # Both of these set to true in order to use waterfall chart for records
    "retain_matching_columns": True,
    "retain_intermediate_calculation_columns": True,
}
linker.initialise_settings(settings)

Thanks very much for this and sorry for the delay in responding.
This is a very interesting area.  The use of a list of aliases/nicknames/alternatives is common problem and one to which it would be good to provide a generic solution.
Three challenges come to mind here:

Splink is backend-agnostic, and we try as much as possible to offer the same functionality across SQL dialects.
Related, we try to ensure high performance of core algorithms, including on big data
There are some implementation choices that I haven't thought about in enough detail, but i think may be quite tricky.

I'll try to fill out some more thoughts about each of these areas, and how they may relate to a generalisable solution, when I have a moment.   I'm a bit busier than usual, hence the delay in responding

Just to add some more detail on one of these points, in any implementation we need to be careful
Consider the following:
name_l, name_r
Robin, Robert --> Not an alias match
Rob, Robert --> Alias match
Robin, Rob --> Alias match
This means that a simple strategy that attempts to 'reduce' each name to its 'lowest common denominator' fails.  i.e. we can't have a simple lookup that turns Robin and Robert into Rob.
Instead, for each name, we need an alias list:
Robin, [Rob, Robyn]
Robert [Rob, Bobby]
And then perform the following test:
name_r in alisas_name_l or name_l in alias_name_r

name_l
alias_name_l
name_r
alias_name_r

Robin
[Rob, Robyn]
Robert
[Rob, Bobby]

Rob
[]
Robert
[Rob, Bobby]

Robin
[Rob, Robyn]
Rob
[]

Yeah, I figured this was a common problem :) if it gets standardized then I benefit too :)
Did you look at the actual SQL above? I think it should actually be fairly performant as is.
First generate an aliases table, which is an "exploded" version of your table with alias lists. Note that order between the two columns doesn't matter.

a
b

Robin
Rob

Robin
Robyn

Robert
Rob

Bobby
Robert

Then, given as input a pair of names Robin and Robert we need to check if (Robin, Robert) or (Robert, Robin) is in the aliases table:
                SELECT
                    (aliases.a IS NOT NULL) as are_aliases
                FROM
                    inp LEFT JOIN {aliases_table} AS aliases ON
                    (
                        (inp.a=aliases.a AND inp.b=aliases.b)
                        OR
                        (inp.a=aliases.b AND inp.b=aliases.a)
                    )

I figured that this would actually happen with an efficient hash join, but I never EXPLAINed it in duckdb to see what the execution plan was.
That part is backend agnostic. Then, I actually think this would be very easy to edit the above SQL just so we don't use a CREATE MACRO and instead just inline the contents of the macro.

Also, to solve the "must execute some SQL at initializtion time" issue that I mentioned in the initial post, here is what I currently am doing (this also implements "definite-yes" criteria in the vein as https://github.com/moj-analytical-services/splink/issues/806, I just am too lazy to edit out those bits of the code.)
code
from __future__ import annotations

import json
import os

from splink.duckdb.duckdb_linker import DuckDBLinker
from splink.linker import Linker
from splink.splink_dataframe import SplinkDataFrame

class MyLinkerMixin(Linker):

    on_load_sql = None
    definite_match_sql = None

    # Override so we return the dict so we can modify it before saving.
    def save_settings_to_json(
        self, out_path: str | None = None, overwrite: bool = False
    ) -> dict:
        """Save the configuration and parameters of the linkage model to a `.json` file.

        The model can later be loaded back in using `linker.load_settings_from_json()`.
        The settings dict is also returned in case you want to save it a different way.

        Examples:
            >>> linker.save_settings_to_json("my_settings.json", overwrite=True)

        Args:
            out_path (str, optional): File path for json file. If None, don't save to
                file. Defaults to None.
            overwrite (bool, optional): Overwrite if already exists? Defaults to False.

        Returns:
            dict: The settings as a dictionary.
        """
        model_dict = self._settings_obj.as_dict()
        if self.on_load_sql:
            model_dict["on_load_sql"] = self.on_load_sql
        if self.definite_match_sql:
            model_dict["definite_match_sql"] = self.definite_match_sql
        if out_path:
            if os.path.isfile(out_path) and not overwrite:
                raise ValueError(
                    f"The path {out_path} already exists. Please provide a different "
                    "path or set overwrite=True"
                )
            with open(out_path, "w", encoding="utf-8") as f:
                json.dump(model_dict, f, indent=4)
        return model_dict

    def initialise_settings(self, settings_dict: dict):
        on_load_sql = settings_dict.pop("on_load_sql", None)
        definite_match_sql = settings_dict.pop("definite_match_sql", None)
        super().initialise_settings(settings_dict)
        if on_load_sql:
            self.on_load_sql = on_load_sql
            self._con.execute(self.on_load_sql)
        if definite_match_sql:
            self.definite_match_sql = definite_match_sql

    def update_link_table(self):
        if self.definite_match_sql is None:
            return
        df_pred = super().predict()
        sql = f"""UPDATE {df_pred.physical_name}
            SET match_probability = 1, match_weight = 30
            WHERE {self.definite_match_sql}"""
        self._con.execute(sql)

    def predict(
        self,
        threshold_match_probability: float = None,
        threshold_match_weight: float = None,
    ) -> SplinkDataFrame:
        self.update_link_table()
        return super().predict(
            threshold_match_probability=threshold_match_probability,
            threshold_match_weight=threshold_match_weight,
        )

class MyDuckDBLinker(MyLinkerMixin, DuckDBLinker):
    pass

Hi Nick,
I've just spent a bit of time understanding this in a bit more detail and running some actual code.  (I must admit, I hadn't used macros before, but since they seem effectively be functions that interpolate ('expand out') prebaked-SQL, then it's not too difficult.  And as you say, it means there's not reason it shouldn't work across SQL backends).
I'm going to think on it a bit more, but here's what's going through my head at the moment:

Ultimately, to work out what's likely to perform best, we'd probably just want to test different approaches.  This can be a bit time consuming because we need to do it against multiple backends, and ideally with linkage jobs of various specs/sizes.  At a minimum i'd want to do some experiments in spark and duckdb

I agree there's a bit of complexity in the 'initialisation time' problem, but i'm sure it's surmountable.

The SQL that's generated by Splink can be quite long, and some engines can struggle with optimising such long statements.  We recently had an issue with Spark.  So less SQL is often better

I'm a little wary of the additional joins in your implementation, partly for this reason.  But they might be fine, I haven't done any tests to see how well it works in practice.

The use of arrays would result in SQL which is (arguably) easier to understand, or at least possibly more consistent with other parts of the codebase (e.g. here

One heuristic we often use to think about performance is splitting out data processing that has to be done on the original table(s) of nodes, and data processing that has to be done on the table of edges.  Generally the table of edges is quite a lot larger than nodes.  That was why my intuition here was to create arrays on the table of nodes.  But I appreciate that these then need to be joined, creating edges with arrays, which may be most costly than your approach.

Sorry - these are quite quick notes!  I'm quite tied up at the moment because we have a new baby :-)
p.s. For testing, to understand what's going on, I used the following script (which is just expanding out the SQL from the macro):
code
```python
from splink.duckdb.duckdb_linker import DuckDBLinker
import splink.comparison_library as cl
import splink.comparison_level_library as cll
import duckdb
from pathlib import Path
def create_nicknames_table_sql(
*,
table_name="nicknames",
canonical_column_name="canonical",
nickname_column_name="nickname",
overwrite=False,
) -> str:
"""Returns a SQL statement to create a table of nicknames.
The table will have two columns,
one for canonical names and one for nicknames.

You can think of this as a edge list of a directed graph,
where names are nodes and there is an edge a->b if b is a nickname of a.
Note that this is not a symmetric graph, so a->b does not imply b->a
(though b->a might also exist).

Each entry is lowercase and whitespace is stripped from both ends.
"""
p = Path(__file__).parent / "nicknames.sql"
sql = p.read_text()
if overwrite:
    sql = sql.replace("create table", "create or replace table")
sql = sql.replace("nicknames_normalized", table_name)
sql = sql.replace("canonical_name", canonical_column_name)
sql = sql.replace("nickname", nickname_column_name)
return sql

def init_db_sql() -> str:
"""Creates an are_aliases() macro in the database, so you can use
the are_aliases_sql() as a comparison level condition.
"""
nicknames_table = "__nicknames_temp"
aliases_table = "__aliases"
create_nicknames_sql = create_nicknames_table_sql(
    table_name=nicknames_table, overwrite=True
)
return f"""
    -- The nicknames table is the raw canonical -> nickname directed edge list.
    -- "bob" is a nickname of "robert"the table would contain a row
    -- with nickname="bob" and canonical="robert".
    -- It is not symmetric, so "robert" is not a nickname of "bob".
    -- Some pairs are symmetric though, like "mary" and "marie", so
    -- the table would contain both orderings for this pair.
    {create_nicknames_sql}

    -- Now convert to aliases table.
    -- The aliases table is the undirected version of this that represents if two
    -- names are interchangeable. This table would contain a row
    -- with a="bob" and b="robert", where the ordering of a and b does not matter.
    --
    -- The nicknames table would contain ("mary", "marie") and ("marie", "mary"),
    -- but we want the aliases table to contain only ("mary", "marie").
    -- This is important because in the JOIN below, if there were both orderings
    -- in the aliases table, then the JOIN would return a row for each ordering,
    -- and the result would be larger than the input, when we really want a
    -- one-to-one mapping.
    --
    -- Use trick from https://stackoverflow.com/a/63715959/5156887
    CREATE OR REPLACE TABLE {aliases_table} AS (
        SELECT DISTINCT
            CASE WHEN canonical < nickname THEN canonical ELSE nickname  END AS a,
            CASE WHEN canonical < nickname THEN nickname  ELSE canonical END AS b
        FROM {nicknames_table}
    );
    DROP TABLE {nicknames_table};

    -- Now that we have the aliases table, we can define the are_aliases() macro.
    CREATE TEMP SEQUENCE IF NOT EXISTS __input_row_id_seq;
    DROP MACRO IF EXISTS are_aliases;
    CREATE MACRO are_aliases(left_col, right_col) AS (
        WITH inp AS
        (
            SELECT
                lower(trim(left_col)) as a,
                lower(trim(right_col)) as b,
                nextval('__input_row_id_seq') as row_id
        )
            SELECT
                (aliases.a IS NOT NULL) as are_aliases
            FROM
                inp LEFT JOIN {aliases_table} AS aliases ON
                (
                    (inp.a=aliases.a AND inp.b=aliases.b)
                    OR
                    (inp.a=aliases.b AND inp.b=aliases.a)
                )
        ORDER BY inp.row_id
    )
    """

def are_aliases_sql(col_name: str) -> str:
"""Given two column names, return a SQL expression that is true if the
corresponding pairs from each column are aliases of each other.
You must execute `init_db_sql()` on the connection before calling this method.
"""
return f"are_aliases({col_name}_l, {col_name}_r)"

def first_name_comparison() -> dict:
return {
"output_column_name": "first_name",
"comparison_description": "First Name comparison (using nicknames)",
"comparison_levels": [
cll.null_level("first_name"),
cll.exact_match_level("first_name", term_frequency_adjustments=True),
{
"sql_condition": are_aliases_sql("first_name"),
"label_for_charts": "Match via nicknames",
},
cll.else_level(),
],
}
import pandas as pd
data = [
{"unique_id": 1, "forename": "robin", "age": 20, "surname": "smith"},
{"unique_id": 2, "forename": "rob", "age": 21, "surname": "smith"},
{"unique_id": 3, "forename": "robyn", "age": 20, "surname": "smith"},
{"unique_id": 4, "forename": "robert", "age": 21, "surname": "smith"},
]
df = pd.DataFrame(data)
con = duckdb.connect()
init_sql = init_db_sql()
con.execute(init_sql)
sql = """
select *
from __aliases
"""
con.execute(sql).df()
sql = """
create or replace table edges as
(select
l.unique_id as unique_id_l,
r.unique_id as unique_id_r,
l.forename as forename_l,
r.forename as forename_r,
l.surname as surname_l,
r.surname as surname_r,
l.age as age_l,
r.age as age_r,
from df as l
cross join df as r
where l.unique_id < r.unique_id)
"""
con.execute(sql)
sql = """
CREATE TEMP SEQUENCE IF NOT EXISTS __input_row_id_seq;
"""
con.execute(sql)
sql = """
select (
WITH inp AS
(
SELECT
lower(trim(forename_l)) as a,
lower(trim(forename_r)) as b,
nextval('__input_row_id_seq') as row_id
)
SELECT
(aliases.a IS NOT NULL) as are_aliases
FROM
inp LEFT JOIN __aliases AS aliases ON
(
(inp.a=aliases.a AND inp.b=aliases.b)
OR
(inp.a=aliases.b AND inp.b=aliases.a)
)
ORDER BY inp.row_id
) as is_alias, *
from edges
"""
con.execute(sql).df()
</details>


Errors with usage of the words "highlight" and "highlighter".

Isns't this a problem how you have setup the highlighting in irssi/IRC client?

Not sure what the point of this issue is.


ChannelInitializer#initChannel not firing

Expected behavior
The initChannel() event to fire whenever a client attempts to connect, and log it to console. It might just be me not knowing how Netty works but from what I know initChannel() should be firing when the server is pinged or has any data sent to it.
Actual behavior
Nothing is printed to console when I ping the server
Steps to reproduce
Run the code that creates my ServerConnection
Ping the server in the Minecraft server list (I'm creating a completely custom server software from Minecraft, but to be honest you can probably ping it from anything to test it. This is also why I haven't provided any client code)
Minimal yet complete reproducer code (or URL to code)
My code that creates my ServerConnection: https://www.toptal.com/developers/hastebin/ajufisituy.java
The code for the ServerConnection: https://www.toptal.com/developers/hastebin/kitisoqayi.java
Netty version
4.0.0.Final
JVM version
17
OS version
Microsoft Windows [Version 10.0.19042.1415]

The Netty version which you're using is very old and reached EOL. Please upgrade to the latest version of Netty and try again.

Oh okay. What's the latest version?

Cool thanks

I've updated the Netty version but it's still not working, any ideas?

Why new NioEventLoopGroup(0, new ThreadFactoryBuilder().setNameFormat("Netty Default IO #%d").setDaemon(true).build()); is set to 0?
The code looks fine. Can you show client-side code?

Not sure why it's 0, just what I was told to do.
As I said I don't have client-side code. I'm making a custom server for Minecraft from scratch.

Minecraft uses netty, their protocol page is https://wiki.vg/Protocol if you want to take a look

The code works fine.

What are you pinging that with?

I used Packet Sender. However, you can use any TCP client and it should work just fine.

I just tried that and I didn't get anything in console. This is really strange

Use this.
import io.netty.bootstrap.ServerBootstrap;
import io.netty.channel.Channel;
import io.netty.channel.ChannelException;
import io.netty.channel.ChannelInitializer;
import io.netty.channel.ChannelOption;
import io.netty.channel.EventLoopGroup;
import io.netty.channel.ServerChannel;
import io.netty.channel.nio.NioEventLoopGroup;
import io.netty.channel.socket.nio.NioServerSocketChannel;

public class Main {

    public static void main(String[] args) {
        Class<? extends ServerChannel> serverChannel;   // The channel that listens for new connections
        EventLoopGroup loopGroup;   // The "new connection polling loop"?

        serverChannel = NioServerSocketChannel.class;
        loopGroup = new NioEventLoopGroup(0);

        new ServerBootstrap().channel(serverChannel).childHandler(new ChannelInitializer<Channel>() {
            @Override
            protected void initChannel(Channel channel) throws Exception {
                try {
                    channel.config().setOption(ChannelOption.TCP_NODELAY, true);
                } catch (ChannelException channelException) {
                    System.out.println(channelException);
                }

                System.out.println("Channel at " + channel.remoteAddress().toString() + " initialized");
            }
        }).group(loopGroup).localAddress("<IP_ADDRESS>", 9110).bind().syncUninterruptibly();

    }
}

:D

Do you know why InetAddress.getLocalhost() didn't work?

Because:
System.out.println(InetAddress.getLocalHost());       // Workstation/<IP_ADDRESS>
System.out.println(InetAddress.getLoopbackAddress()); // localhost/<IP_ADDRESS>

Localhost and Loopback are different addresses.

Interesting. Thanks for the information. I'll close this now as I don't have any more problems currently :D


[Modal] has inline styles instead of classes. Breaks support of classes API

[x] This is not a v0.x issue.
[x] I have searched the issues of this repository and believe that this is not a duplicate.

Expected Behavior 🤔
Overriding a Dialog's style class worked in version 3.x, I expected this to continue working. I didn't see anything about this mentioned in the migration guide, under Dialogs.
I do see the following. Is it related? That's not clear.

[Modal] Remove the classes customization API for the Modal component (-74% bundle size reduction when used standalone).

Current Behavior 😯
The dialog's root div is assigned the class MuiDialog-root, but this class has no CSS styles defined.
The class I assigned via the class API has no effect, since the inline styles have higher specificity.
Steps to Reproduce 🕹

Link: https://codesandbox.io/s/material-ui-dialog-issue-16442-srl0e

Click the button to open two dialogs. The 'important' dialog should have higher z-index.
If you switch the version of material-ui/core to 3.9.3 and repeat you will see the expected behavior

Context 🔦

In my app, I may have more than a single open dialog (yeah, I know it's bad UX, sorry). So this method is what we use to ensure the dialogs are in a certain order.
Your Environment 🌎

Tech
Version

Material-UI
v4.1.3

React
16.9

Browser
Chrome 75.0.3770.100

TypeScript
3.6.0

@burtyish Correct, you have to use !important for overriding the inline style. Your problem is very close to #16441.

I do see the following. Is it related? That's not clear.

Yes, removing the imports to JSS has yielded a significant bundle size reduction. We were at 24 kB gzipped before #15466, we are at 5 kB gzipped now for a single import of the Modal.

We were at 24 kB gzipped before #15466, we are at 5 kB gzipped now for a single import of the Modal.

Just to be clear: You didn't save 19kB in a bundle using material-ui. Only if the Modal was the only component you used.

@eps1lon Yes, this statement is accurate.

@oliviertassinari Are there any AI going forward here - i.e. is this something that's going to be changed (ideally), or is the inline-style going to be kept, making it hard to override (force the need to use !important)? It wasn't clear from the thread so far.

@bengry Whitch property do you need to override? We might be able to revert by pushing @material-ui/unstyled the package forward.

@oliviertassinari I wanted to override the z-index, similar to what @burtyish mentioned in the OP.

I believe I am having a similar issue trying to change the root backgroundColor on the backdrop. Seems like BackdropProps={{ classes: { root: classes.backdropRoot }}} no longer works. Instead have to use className property + !important.
https://codesandbox.io/s/material-demo-vm0qu
This previously worked in 3.x and matches the documentation that I see for Backdrop. Is this the new way going forward for modifying the Backdrop style?

@jsheetzati Correct.

It is not clearly pointed here and my issue is closed (https://github.com/mui-org/material-ui/issues/16605) - It's not only about overriding styles API but also about using theme's default props override feature. See more in the issue.

I've used styled-components on this one
import { Popover as MenuPopover } from '@material-ui/core'
const OptionPopover = styled(MenuPopover)`

.MuiPopover-paper {
padding: 7px 0;
width: 121px;
p {
cursor: pointer;
font-size: 11px;
margin: 0;
color: ${({ theme }) => theme.optionPopover.text.normal.TEXT_COLOR};
&:hover {
background-color: ${({ theme }) => theme.optionPopover.box.hover?.BG_COLOR};
}
span {
display: block;
padding: 6px 7px;
width: 100%;
height: 100%;
}
a {
display: block;
width: 100%;
text-decoration: none;
color: ${({ theme }) => theme.optionPopover.text.normal.TEXT_COLOR};
}
}
`;

It works on the PopOver but on other part of application - Select Components and like, this will not work anymore... or i think someone could help us out

@mnajdova This one might require a tricky tradeoff for the unstyled components. We might want to keep the inline style for simplicity. It seems to be what react-modal does without any major downsides. However, if we do, we make overrides harder, so better be sure the styles rarely need to be overridden.

@mnajdova This one might require a tricky tradeoff for the unstyled components. We might want to keep the inline style for simplicity. It seems to be what react-modal does without any major downsides. However, if we do, we make overrides harder, so better be sure the styles rarely need to be overridden.

I agree. I will dig more into it tomorrow and try to prototype how it would look like. Also just good for thought, if the unstyled component uses style for some portion of the styles it has, is it wrong if developers also use style for overriding it? (This will not be common of course, but if we document it correctly it may help people understand better why that tradeoff was made for some component) If the unstyled component uses className for some styles, then we shouldn't have problem with overriding it anyway..

Once we have the separation of unstyled and core versions of the component, I think we will have the best from both worlds ( unstyled version with minimal bundle size) and the styled version with the default styles using emotion/styled-components based on the setup.


[WIP] Install polymer-cli locally, set code coverage threshold to 98

Trying to get the build green...

This change is

Review status: 0 of 3 files reviewed, 1 unresolved discussion (waiting on @limonte)

.travis.yml, line 15 at r1 (raw file):

before_script:
  - npm install -g bower polymer-cli@next

what is the main reason of this ?

Comments from Reviewable

Review status: 0 of 2 files reviewed, 2 unresolved discussions (waiting on @limonte)

.travis.yml, line 15 at r2 (raw file):

before_script:
  - npm install bower polymer-cli@next

you need to ad --no-save in all npm calls so as P3 modulizer does not fail

Comments from Reviewable

Review status: 0 of 2 files reviewed, 2 unresolved discussions (waiting on @limonte)

.travis.yml, line 15 at r2 (raw file):
Previously, manolo (Manuel Carrasco Moñino) wrote…
you need to ad --no-save in all npm calls so as P3 modulizer does not fail

I think for this component you might take the .travis.yml from a p3-preview of any element, for instance vaadin-item

Comments from Reviewable

Closed as changes were applied on master and https://github.com/vaadin/vaadin-time-picker/pull/62.


[Improvement] Add some HttpClient options for EngineUIProxyServlet

Code of Conduct

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

Search before asking

[X] I have searched in the issues and found no similar issues.

What would you like to be improved?
HttpClient of EngineUIProxyServlet has only 4k request buffer for default setting. So if there are too many headers, it cannot make a request with DEBUG message:
2024-03-07 11:23:57.401 KyuubiRestFrontendService-1637 DEBUG org.eclipse.jetty.client.HttpSender: Generated headers (4096 bytes), chunk (-1 bytes), content (0 bytes) - HEADER_OVERFLOW/HttpGenerator@48e4e170{s=START}
2024-03-07 11:23:57.401 KyuubiRestFrontendService-1637 DEBUG org.eclipse.jetty.client.HttpSender: Request failure HttpRequest[GET /jobs/ HTTP/1.1]@52519fe9
org.eclipse.jetty.http.BadMessageException: 500: Request header too large
	at org.eclipse.jetty.client.http.HttpSenderOverHTTP$HeadersCallback.process(HttpSenderOverHTTP.java:235) [jetty-client-9.4.52.v20230823.jar:9.4.52.v20230823]
	at org.eclipse.jetty.util.IteratingCallback.processing(IteratingCallback.java:248) [jetty-util-9.4.52.v20230823.jar:9.4.52.v20230823]
	at org.eclipse.jetty.util.IteratingCallback.iterate(IteratingCallback.java:229) [jetty-util-9.4.52.v20230823.jar:9.4.52.v20230823]
	at org.eclipse.jetty.client.http.HttpSenderOverHTTP.sendHeaders(HttpSenderOverHTTP.java:65) [jetty-client-9.4.52.v20230823.jar:9.4.52.v20230823]
	at org.eclipse.jetty.client.HttpSender.send(HttpSender.java:212) [jetty-client-9.4.52.v20230823.jar:9.4.52.v20230823]
	at org.eclipse.jetty.client.http.HttpChannelOverHTTP.send(HttpChannelOverHTTP.java:84) [jetty-client-9.4.52.v20230823.jar:9.4.52.v20230823]

Then return to 500 http status code to user.
How should we improve?
Add some configs for HttpClient in EngineUIProxyServlet. These configs are used in here: https://eclipse.dev/jetty/javadoc/jetty-9/org/eclipse/jetty/proxy/AbstractProxyServlet.html#createHttpClient()

config
default
description

maxThreads
256
The max number of threads of HttpClient's Executor. If not set, or set to the value of "-", then the Jetty server thread pool will be used.

maxConnections
32768
The max number of connections per destination, see HttpClient.setMaxConnectionsPerDestination(int)

idleTimeout
30000
The idle timeout in milliseconds, see HttpClient.setIdleTimeout(long)

timeout
60000
The total timeout in milliseconds, see Request.timeout(long, java.util.concurrent.TimeUnit)

requestBufferSize
HttpClient's default
The request buffer size, see HttpClient.setRequestBufferSize(int)

responseBufferSize
HttpClient's default
The response buffer size, see HttpClient.setResponseBufferSize(int)

We can use kyuubi.frontend.rest.jetty.engine-ui-proxy.httpclient is the prefix of above configs.
Are you willing to submit PR?

[X] Yes. I would be willing to submit a PR with guidance from the Kyuubi community to improve.
[ ] No. I cannot submit a PR at this time.

the proposal makes sense, how about using kyuubi.frontend.rest.proxy.jetty.client.* as the configuration prefix?
Regarding the configuration name policy, let us use a common namespace that is independent of the implementation (in this case, jetty), so the common part should be kyuubi.frontend.rest.proxy., then <impl>.<subnamespace>.<impl-key>, e.g.
kyuubi.frontend.rest.proxy.jetty.xxx
kyuubi.frontend.rest.proxy.tomcat.client.xxx

@pan3793 that makes sense. Thank you for your suggestion.


Support more then 1 controller before_filter and 1 after_filter

I would like to have a before_filter for :create and :update, and another for only :update. So, I would like to have define multiple before_filters in the do controller block.

@smpallen99 Are you sure that filters is the best idea? Usually it results to complicated and tangled code. I would prefer an ability to override entire action if necessary.
Indeed it's already possible thanks to Phoenix router, but it could be improved to avoid actions code duplication.

Its done and I have a product in production using the feature. So, we can deprecate it the future if we find a better solution. With that said, I don’t see much difference between the before filters and plugs. Accept a conn and params, and turn conn and params. Furthermore, if we override complete action, then they are either going to have to duplicate the active admin action, or call it at the end of the override one.

On Jun 18, 2016, at 3:25 PM, Roman Smirnov<EMAIL_ADDRESS>wrote:
@smpallen99 https://github.com/smpallen99 Are you sure that filters is the best idea? Usually it results to complicated and tangled code. I would prefer an ability to override entire action if necessary.
Indeed it's already possible thanks to Phoenix router, but it could be improved to avoid actions code duplication.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub https://github.com/smpallen99/ex_admin/issues/145#issuecomment-226960532, or mute the thread https://github.com/notifications/unsubscribe/AA2YpYnZfh1PZ9X4Z3ZMeqV6gCzz1ezTks5qNEYkgaJpZM4I3bfD.

if we override complete action, then they are either going to have to duplicate the active admin action

Yes, exactly! It's why these actions should be as simple as possible and be composed from helpful functions. My point - it's imminent need for complex cases. Attempts to avoid this complicate the simple cases. Therefore, I propose to think about how to provide the most convenient ability to overload actions.
For example, create action could look like:
  def create(conn, defn, resource, params) do
    model = defn.__struct__
    changeset = ExAdmin.Repo.changeset(model.changeset_fn, resource, params[defn.resource_name])

    case ExAdmin.Repo.insert(changeset) do
      {:error, changeset} ->
        handle_changeset_error(conn, changeset, params)
      resource ->
        conn
        |> handle_after_filters(:create)
        |> put_flash(:notice, "#{base_name model} was successfully created.")
        |> redirect(to: admin_resource_path(resource, :show))
    end
  end


ERR_QUIC_PROTOCOL_ERROR on tamilblasters.art

@adguard-bot commented on Tue Sep 14 2021
Issue URL (Incorrect Blocking)
https://tamilblasters.art/
Comment
Username: @iamthelara

Screenshots

Screenshot 1

Screenshot 2

System configuration

Information
value

Platform:
Android 11

AdGuard product:
AdGuard for Android v3.6.3 (31)

Browser:
Chrome

AdGuard mode:
VPN

Filtering quality:
High-quality

HTTPS filtering:
enabled

Stealth mode:
disabled

DNS filtering:
server: https://dns.adguard.com/dns-queryfilters: https://filters.adtidy.org/android/filters/15_optimized.txt, DnsUserRules

Filters:
Ad Blocking:AdGuard Mobile Ads, AdGuard Base, Peter Lowe's BlocklistPrivacy:AdGuard Tracking Protection, Fanboy's Enhanced Tracking List, Legitimate URL Shortener, AdGuard URL Tracking, EasyPrivacySocial Widgets:AdGuard Social MediaAnnoyances:I don't care about cookies, Web Annoyances Ultralist, Dandelion Sprout's Annoyances List, Adblock Warning Removal List, Fanboy's Annoyances, AdGuard AnnoyancesSecurity:Online Malicious URL BlocklistOther:AdGuard DNS, Filter unblocking search ads and self-promotion

Userscripts:
https://userscripts.adtidy.org/release/adguard-extra/1.0/adguard-extra.meta.js

Other extensions used:
no

@Alex-302 commented on Wed Sep 15 2021
Hi. Not reproduced.
Please write to<EMAIL_ADDRESS>or to https://github.com/AdguardTeam/CoreLibs/issues

@Alex-302 commented on Wed Sep 15 2021
Or try the latest "nightly" build:
https://agrd.io/android_nightly

@iamthelara commented on Wed Sep 15 2021
Yeah, tried with nightly but Same result.
Now trying to get back to release version without uninstalling.
On Wed, Sep 15, 2021, 17:43 Alex @.***> wrote:

Or try the latest "nightly" build:
https://agrd.io/android_nightly
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/AdguardTeam/AdguardFilters/issues/94745#issuecomment-919964770,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AMCQCF3OYW25K5MU2W2YI43UCCEWXANCNFSM5EAYFNJA
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

@adguard-bot commented on Wed Sep 15 2021

Not reproduced on Android 11.

To troubleshoot this issue, we need to get additional logs.
Here's what we need you to do:

Collect the debug log as it's explained here;
Remember the exact time when the issue was reproduced. We will need it to find the corresponding records in the log file;
Send a received file to<EMAIL_ADDRESS>Mention the Github issue number and the exact time when the issue was reproduced.

I have already sent this to @.***
And 2nd thing is this site has been blocked in my country and they have
changed the domain to https://tamilblasters.mx/. It works fine. TY
On Thu, Sep 23, 2021, 16:01 Konstantin @.***> wrote:

To troubleshoot this issue, we need to get additional logs.
Here's what we need you to do:

Collect the debug log as it's explained here
https://kb.adguard.com/en/android/solving-problems/log#debug;
Remember the exact time when the issue was reproduced. We will need
it to find the corresponding records in the log file;
Send a received file to @.*** Mention the Github
issue number and the exact time when the issue was reproduced.

—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/AdguardTeam/CoreLibs/issues/1520#issuecomment-925690484,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AMCQCF5ZLIIGUO4UDKEC5LDUDL6YLANCNFSM5EQ7AHTQ
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.


Expose a save method to persist changed settings

For #7

Sorry, I just realized this is not working, the problem being that the @record instance is not updated with the hash content, so saving is useless.


[$500] IOU-Editing distance request, new message is not shown but for request money, new message shown

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

Action Performed:

Go to https://staging.new.expensify.com/
Tap fab
Tap request money
Tap distance
Enter start and finish points
Tap next and select a workspace
Tap show more and enter all fields
Tap request amount
Tap on distance request and open report page
Change amount/date/category and note the changes made message shown below
Navigate back to LHN
Tap fab-manual
Tap request money
Enter an amount
Select any user
Tap request amount
Tap IOU transaction to open report page
Change merchant/amount /description and save it.
Note the changes made messages shown below

Expected Result:
In changes made messages shown below, the "new message" green line display must be consistent for both request and distance request
Actual Result:
For editing distance request, "new message" green line is not shown but for request money, "new message" green line is shown
Workaround:
Unknown
Platforms:

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

[ ] Android / native
[x] Android / Chrome
[ ] iOS / native
[ ] iOS / Safari
[ ] MacOS / Chrome / Safari
[ ] MacOS / Desktop

Version Number: 1.3.75-0
Reproducible in staging?: Yes
Reproducible in production?: No
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos: Any additional supporting documentation
https://github.com/Expensify/App/assets/78819774/da1fcb5a-c60a-4c44-af72-8f8c587f2bdf
Expensify/Expensify Issue URL:
Issue reported by: Applause - Internal Team
Slack conversation:
View all open jobs on GitHub
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~0162a10f4c446abf35
Upwork Job ID:<PHONE_NUMBER>164470272
Last Price Increase: 2023-11-28

:wave: Friendly reminder that deploy blockers are time-sensitive ⏱ issues! Check out the open StagingDeployCash deploy checklist to see the list of PRs included in this release, then work quickly to do one of the following:

Identify the pull request that introduced this issue and revert it.
Find someone who can quickly fix the issue.
Fix the issue yourself.

Reproduced on build <IP_ADDRESS>
https://github.com/Expensify/App/assets/93399543/bb42adac-0330-4433-9d65-6bd5f3b63c42

I dont think this needs to be deploy blocker but still something to look at, by the look of things it might be backend issue actually but both edit money request and update distance request modify the expenses in a same way so I am not sure why this shoul dbe different or whether it is reliably reproducible
Making this external so people can look into this

Update: Waiting for proposals here

Update: Waiting for proposals here

Update: Waiting for proposals here but will most likely start asking partners at the end of the week if no movement.

Issue not reproducible during KI retests. (First week)

@mvtglobally I'm confused by your last reply, are you suggesting to close this GH?

@alexpensify - Can you reproduce? If not let's close.

Tomorrow, I'll run one more test.

I tested and can't replicate -- closing!

I haven't had time to test but will review when I'm back from OOO.

@aimane-chnaif bumping this question again to prepare for proposals, thanks!

@aimane-chnaif any update here?

Issue not reproducible during KI retests. (Second week)

Daily Update: Still waiting for feedback if we fix this one

Since this has not been reproducible in the latest tests, I'm going to close it out.


Siad should handle logoff/shutdown events in Windows to prevent data loss

If 'siad' is in the middle of a critical operation, implementing a handler can prevent the shutdown from occurring. 'Ctrl-C' is being handled properly, but not sure how 'Go' actually implements it. I've provided some Win32 API links for reference.
References
Console Applications
https://msdn.microsoft.com/en-us/library/windows/desktop/ms685049(v=vs.85).aspx
Window Applications
https://msdn.microsoft.com/en-us/library/windows/desktop/aa376890(v=vs.85).aspx

Our current signal handling code is here:
// stop the server if a kill signal is caught
sigChan := make(chan os.Signal, 1)
signal.Notify(sigChan, os.Interrupt, os.Kill)

Are there more signals we need to handle? Also, siad can take a while to shutdown gracefully. We've made strides towards faster shutdown but it can still take up to a few minutes.

It looks like Go can also handle CTRL_CLOSE_EVENT which occurs when someone tries to close the console window without Ctrl-C here.
The more daunting task is handling logoff and shutdown events. The most reliable way is to create a hidden window which processes the WM_QUERYENDSESSION message. This post describes it pretty well: here

Too much work required for this right now


Add examples for value langlib documentation

Purpose
$subject
Fixes #38918
Check List

[x] Read the Contributing Guide
[ ] Updated Change Log
[ ] Checked Tooling Support (#)
[ ] Added necessary tests

[ ] Unit Tests
[ ] Spec Conformance Tests
[ ] Integration Tests
[ ] Ballerina By Example Tests

[ ] Increased Test Coverage
[x] Added necessary documentation

[x] API documentation
[ ] Module documentation in Module.md files
[ ] Ballerina By Examples

Changes of this PR has been added in #39085 and #39086 PRs. Hence closing this PR.


API versioning

How do you suggest that we handle versioning if we use this boilerplate?

Maybe passing version key through HTTP Header

May I jump in and suggest taking a look at https://github.com/lirantal/express-version-route ?
It is designed in a way that it has a sister module as well at express-version-request to de-couple the version definition logic from the route dispatching.
It's really simple and flexible, and we use it fairly well at Nielsen in our Node.js stack.


Structured logging support - Java SDK

This enables logging data in the SLF4J MDC to the Fn Logging API by default.
This is safe:

No measurable change in performance (see below).
FnAPI changes are only in a new field (custom_data), which should be ignored by older implementations.

Benchmark
--logMdc
Mode
Cnt
Score (avg)
Error (CI 99.9%)
Units

BeamFnLoggingClientBenchmark.testLogging
FALSE
thrpt
15
250797.094
± 6472.762
ops/s

BeamFnLoggingClientBenchmark.testLoggingWithAllOptionalParameters
FALSE
thrpt
15
248842.826
± 7465.302
ops/s

BeamFnLoggingClientBenchmark.testLoggingWithCustomData
FALSE
thrpt
15
240627.748
± 11956.723
ops/s

BeamFnLoggingClientBenchmark.testLogging
TRUE
thrpt
15
259780.715
± 2568.376
ops/s

BeamFnLoggingClientBenchmark.testLoggingWithAllOptionalParameters
TRUE
thrpt
15
258343.644
± 3613.817
ops/s

BeamFnLoggingClientBenchmark.testLoggingWithCustomData
TRUE
thrpt
15
253175.462
± 19008.712
ops/s

Benchmark command: ./gradlew :sdks:java:harness:jmh:jmh -Pbenchmark=BeamFnLoggingClientBenchmark
--logMdc set by changing the default value in SdkHarnessOption

Thank you for your contribution! Follow this checklist to help us incorporate your contribution quickly and easily:

[ ] Mention the appropriate issue in your description (for example: addresses #123), if applicable. This will automatically add a link to the pull request in the issue. If you would like the issue to automatically close on merging the pull request, comment fixes #<ISSUE NUMBER> instead.
[ ] Update CHANGES.md with noteworthy changes.
[ ] If this contribution is large, please file an Apache Individual Contributor License Agreement.

See the Contributor Guide for more tips on how to make review process smoother.
To check the build health, please visit https://github.com/apache/beam/blob/master/.test-infra/BUILD_STATUS.md
GitHub Actions Tests Status (on master branch)

See CI.md for more information about GitHub Actions CI.

Run Java_Pulsar_IO_Direct PreCommit

@Abacn ping for review

Run Java PreCommit

Run Java PreCommit


Stabilize Iterator Naming

We have multiple types of "special" iterators, that don't just forward to the underlying map types, including (non-exhaustive):

Iterating over all (&K, &V) mappings in a MultiMap
Iterating over all (&K, &Set<V>) mappings in a MultiMap
Like the above, but for ranges in a sorted MultiMap
Iterating over counts of elements in a MultiSet
Iterating over duplicate elements in a MultiSet

Let's take "Iterating over all (&K, &V) mappings in a MultiMap" as our working example.
We could call it:

flat_iter()
iter_flat()
flattened()
Something else

We should try our best to follow these guidelines:

Make it obvious from the method name what is being iterated
Follow the example of the stdlib, or popular libraries if those aren't working out
Be consistent across all methods and types

I'm leaning towards avoiding the word iter when it isn't clear what is being iterated over. This is primarily an issue in MultiMap, related to #1.

The standard library uses names like keys(), values(), intersection(), etc. By that logic, we should use names like value_sets(), mappings, and item_counts.
Perhaps iter() is too confusing to use for MultiMap, but I don't think it would be controversial that MultiSet::iter() would iterate over duplicate elements.
For range methods, I'm leaning towards *_in_range. For example, keys_in_range, mappings_in_range, etc.

Just pushed these rules to 0.2.0. Let's see how they feel moving forward


Figma - Mobile version webpages

We are gonna make mobile version of our webdesign in figma.
sketch for webpages to be made:

Homepage
Product page
About us
Cart
Checkout details
Order Complete
Account page
Login
Login (reset password)
Login (Password resetted)

Sketches are created for each of the individual mobile pages. Waiting for approval of @Dardnos and @eirilovi before closing

I approve this

I approve this!


I'm following 80 people, nostros only shows 24

I'd like to use this as my android client, but it isn't following all the people I'm following, it has very few of the messages I follow, and I haven't been able to figure out how to get it to load all the messages from all the people I follow.  I don't dare edit anything in nostros like my follow list until I'm sure it's not going to delete all my followers.

the list of contacts stores on a single event so that means you got all or none. Is it possible you are not connected to a relay with the latest state of your contacts so Nostros just found an old one?

I'm connected to at least two relays with my latest data.  I don't know how to tell it to subscribe to my contact list, or refetch, or whatever. Killing and restarting doesn't change it. Still says I'm following 24 people.
I can't seem to add relays (I type them in and press add but they don't show up in the list).

Yep adding releases were broke with the UI refactor, on the next release should be fixed, can you share you pubkey and the list or relays?

npub1acg6thl5psv62405rljzkj8spesceyfz2c32udakc2ak0dmvfeyse9p35c
wss://nostr-pub.wellorder.net
wss://nostr-relay.untethr.me
wss://nostr-relay.wlvs.space
wss://nostr.mikedilger.com
wss://nostr.oxtr.dev
wss://nostr.zebedee.cloud
wss://relay.snort.social

I'm on the main version with the fix for relays, added your list of relays and I actually see you 80 contacts, probably the latest update is is stored in one you cannot add, the release with the fix for the relays page will be out probably tomorrow so you can test it then 🙂

I'll investigate more on this then, I'll let you know my findings

I found an specific situation where contacts where not being stored, the fix to that will be in the nest release

The release is out, please let me know if it works for you now 🙂

It is working now.


alternative domain provider

now everything is handled by vercel, but there are much more domain/dns providers.

cloudflare (best)
namecheap
godaddy
...

as of the moment, Nextacular is leveraging Vercel technologies and API to do the magic with custom domain management.
we can set a discussion around alternative domains and see what can be for improvement.
people are also asking if Nextacular supports DNS providers and servers.