ENH: Add Support for Multiply–accumulate Operation

Is your feature request related to a problem? Please describe.
When we calculate the native $\ a\leftarrow a+(b\times c)$, we still using the normal multiple and add in the floating point precision, which might have limited mathematical precision. Wikie Page for Multiply–accumulate Operation
Supporting the FMA/FMAC operation can greatly improve our the computation precision in floating point number operation
Describe the solution you'd like.
Have some function like scipy.fma(a,b,c) that calculate $\ a\leftarrow a+(b\times c)$
Describe alternatives you've considered.
No response
Additional context (e.g. screenshots, GIFs)
No response

scipy.special, maybe?  Not sure this belongs to scipy.signal.

@seberg Does this sort of thing happen under the hood in NumPy matmul, or does rounding occur after every multiplication and division?

I am not sure what blas implementers do, likely depends on the platform in practice, but I would expect FMA is normally mostly used; for things like einsum, I am also not sure what you end up with.  (There are also dot-product instructions, which I am sure BLAS would use and for which I am not sure what their rounding is.)
Creating a ufunc for it is probably easy enough, fma is a common operation, but it would be nice to invent a submodule/home for it.

Cross-referencing https://github.com/nschloe/pyfma

Another cross-reference: This stackoverflow answer compares the speed of different implementations.

special maintainers, please feel free to revive, but I'm not sure if special is even the right place for this.
Seems like linalg if anything, since it's in BLAS territory. If BLAS has it, it's probably exposed in scipy.linalg.blas already.
Indeed, it looks like BLAS axpy (y = a*x + y) is doing exactly what you have in mind.
It seems to be more accurate and faster than separate multiplication and addition:
import numpy as np
from scipy.linalg.blas import daxpy
from mpmath import mp
mp.dps = 100

@np.vectorize
def axpy(x, y, a):
    x, y, a = mp.mpf(x), mp.mpf(y), mp.mpf(a)
    return float(a*x + y)

rng = np.random.default_rng(234823498234)
n = 1000000
a = rng.random()
x, y = rng.random(size=(2, n))

ref = axpy(x, y, a)
res1 = a*x + y
res2 = daxpy(x, y, a=a)
np.sum(res1 == ref), np.sum(res2 == ref)
# (846650, 1000000)

%timeit a*x + y
# 1.98 ms ± 151 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

%timeit daxpy(x, y, a=a)
# 1.14 ms ± 679 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

Perhaps @ilayn can confirm?
In the meantime, I'll go ahead and close.


Which pins should used or I2C?

Which pins should be used for I2C , is there any pre-defined ?

It depends.  You can use the onboard JST connector as a Stemma/Qwiic connection.  If you choose to do so, the pins are:
GND = GND
3V = 3V
GPIO 44 = SCL
GPIO 43 = SDA
If you don't use this connector and solder it yourself, you can use any of the available GPIO pins for SCL and SDA.

Is there a 10K or equivalent pull up resistor mounted on the board on the SCL and SDA pins? if not do I need to add them externally?

It is not necessary to use a sensor module, which is generally integrated on the module. If a separate sensor is used, it is necessary

It seems that on https://github.com/Xinyuan-LilyGO/T-QT/blob/main/image/pinmap_en.jpg the texts "IO44" and "IO43" should be exchanged.

@icubex
I found out the same thing by just trying.
@icubex @mrudick1 I have opened #37 to address this
u.


[Gally]: master <- dev

Automatically created by Git-Ally

:tada: This PR is included in version 2.11.2 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


v2.0: Live TV not appearing in inputs list

In the previous version I had "Live TV" in the inputs list
In version 2.0, Live TV no longer appears
my config:
   {
        "devices": [
            {
                "name": "TV",
                "ip": "<IP_ADDRESS>",
                "mac": "xx:xx:xx:xx:xx:xx",
                "pollingInterval": 5,
                "volumeLimit": 100,
                "volumeControl": "none",
                "channelControl": false,
                "mediaControl": false,
                "ccRemoteRemap": {
                    "back": "HOME",
                    "information": "MUTE"
                },
                "appButtons": [
                    {
                        "appId": "com.webos.app.hdmi1",
                        "name": "Apple TV Box"
                    }
                ]
            }
        ],
        "platform": "webostv"
    }

Can you post a debug log?

Hi merdok
I deleted the tv from the Home app and then used the "Unpair Bridges / Cameras / TVs / External Accessories" function within Homebridge UI as well, so these logs/screenshots are for a "newly added" tv.
The (large) debug log is here: https://pastebin.com/8ZffaY9E
And screenshots of inputs when adding TV to HomeKit, plus the input spinner: https://imgur.com/a/cWMvakL
(note no Live TV in either the initial input selector when adding the tv, or the spinner)

Thanks for the log! Helps a lot.
So you are owning a 2020 oled and it seems that something changed there, since live tv and external inputs are missing from the standard list delivered from the tv.
Does live tv work when you add it as an appButton?

Got same issue (LG E9). LiveTV works as external app but doesn't show on inputs list.
PS: Also inputs list is missing HDMI inputs (like PS4).

Hi merdok,
Yes, Live TV does work as an appButton
Log:
[9/10/2020, 6:29:56 PM] [webostv] [TV] com.webos.applicationManager service - launch requested. AppId: com.webos.app.livetv, Params: {}
[9/10/2020, 6:29:56 PM] [webostv] [TV] {
"returnValue": true
}
[9/10/2020, 6:29:56 PM] [webostv] [TV] {
"subscribed": true,
"appId": "com.webos.app.livetv",
"returnValue": true,
"windowId": "",
"processId": ""
}
[9/10/2020, 6:29:56 PM] [webostv] [TV] App launched, current appId: com.webos.app.livetv
[9/10/2020, 6:29:56 PM] [webostv] [TV] {
"returnValue": true,
"state": "Active"
}
[9/10/2020, 6:29:56 PM] [webostv] [TV] TV power status changed, status:  state: Active,
[9/10/2020, 6:29:56 PM] [webostv] [TV] TV turned on!

Interesting, I am not sure right now if it had something to do with the tv itself. Since @kfalkiewicz has the same issue and he has basically the same TV as me, I think that this might be a configuration thing on the TV. Do you both have all the necessary options in the tv preferences enabled? There are a few which need to be set to on.

@merdok This is How my config looks right now:
{
            "platform": "webostv",
            "plugin_map": {
                "plugin_name": "homebridge-webos-tv"
            },
            "devices": [
                {
                    "name": "LG E9",
                    "ip": "XXX.XXX.XXX.XXX",
                    "mac": "XXX.XXX.XXX.XXX",
                    "keyFile": "/home/hoobs/.hoobs/lg3tvKeyFile",
                    "deepDebugLog": true,
                    "volumeControl": false,
                    "channelControl": false,
                    "channelButtons": [
                        {
                            "channelNumber": 1,
                            "channelName": "TVN"
                        },
                        {
                            "channelNumber": 6,
                            "channelName": "TVN24"
                        },
                        {
                            "channelNumber": 90,
                            "channelName": "Mini Mini"
                        }
                    ],
                    "ccRemoteRemap": {
                        "arrowup": "VOLUMEUP",
                        "arrowdown": "VOLUMEDOWN",
                        "arrowleft": "CHANNELDOWN",
                        "arrowright": "CHANNELUP",
                        "select": "PROGRAM",
                        "back": "BACK",
                        "playpause": "PAUSE",
                        "information": "TELETEXT"
                    }
                }
            ]
        },

Same for me; have not updated the settings on the tv itself

Config looks ok and it should not be a cause of the issue.
It was working previously because you had to manually add the inputs to the spinner, now the spinner is populated automatically based on what the tv delivers. For some reason in your cases the tv does not include the live tv and external inputs. We would need to find out why is that the case, especially since I also have a 9 series oled and my tv delivers all the data. For this reason I suspect that maybe this is a configuration issues with the tv itself. It would be nice if you could play around with the settings a little and see if something changes.

Hmm will look at this.

Hi, and thanks again for your hard work.
Yes, there are a few issues
Pros: Config worked without change.
Cons: No inputs. Settings button doesn't work.

@marioPS Open settings of TV device (not group as all) and post a screenshot of list of inputs you see there.
At the start no input is selected, so that's why this list is empty.

Hi @merdok
What do you think about a new optional 'additionalInputs' config option?
This could be used to append any user-defined inputs to the input spinner if they were not returned by the TV
eg.
"additionalInputs": [
{
"appId": "com.webos.app.livetv",
"name": "Live TV"
},
{
"appId": "com.webos.app.hdmi1",
"name": "PS4"
},
{
"appId": "com.webos.app.hdmi2",
"name": "Switch"
}
]

@marioPS you need to first enable some inputs under the preferences. Does pressing the setting throw an error?
@mikebatnz that would be a solution. I am also thinking of checking if live tv and external inputs are in the list from the tv and if not then add them.
Anyway, I would still like to know why those are missing in the inputs retrieved from the tv.
Can you guys confirm that it is only live tv and the external inputs which are missing or are there any other apps which are missing in the spinner which you have on the tv? You can check all your apps in the Home Screen on your tv.
Also @marioPS and @kfalkiewicz could you also please post a debug log like @mikebatnz did so i can compare and try to spot any differences...

@kfalkiewicz That is exactly what I did ... I manually added inputs, but they still did not appear.

Hi @merdok
I've confirmed that all of the apps in the home bar do appear in the input spinner.
Also downloaded a new app from the LG store and it appeared immediately in the Home app

@mikebatnz that at least sounds and is the correct behavior.
Do you also have a live tv app at the Home Screen on your tv? Or any apps for your external Inputs?

@merdok

Checked LG settings. All things related to external control is enabled as before.
My webOS version is 04.80
Yes all "normal apps" are visible on Inputs list. Only thing missing is LiveTV (with isn't treated as app maybe) and external inputs (like HDMI 3 with is configured as PS4 console in LG settings).
Live TV and external Inputs doesn't show in LG Home App selection (never was there)

Hi @merdok
Here's a pic of the home bar on mine - TV is a separate thing to the left of the other apps
https://imgur.com/EOJfj5m

Same as @mikebatnz (external HDMI is hidden behind 2nd icon if I remember correctly)

Oh, now we are getting closer. So I just noticed my tv is an oled 8 series, so it seems like since the 9 series something changed. It seems like that live tv and external inputs are not dedicated apps anymore. I noticed from @mikebatnz log that the live tv app is hidden. I guess lg made this separate bar there on the left side to hold those things. What does the other buttons do?
Besides that, can you open the inputs app on your tv(you can use the remote), can you configure the inputs there to appear on the Home Screen?

No you cannot show inputs on home screen.
Screenshots:

Hi @merdok
The 4 apps locked to the left of my Home Screen are:

Search (com.webos.app.recommend)
Home Dashboard (com.webos.app.homeconnect)
TV (com.webos.app.livetv)
Recent

@mikebatnz and @kfalkiewicz thanks for the infos. I guess this is a change which lg made since webos 4.5
The fix should be straight forward, I simply do a check if those apps are missing in the list from the tv and will add them if they are not there. Live Tv and external inputs should be always there.
How about the home dashboard app, it seems that this also has no app tile so it is missing on the spinner. Is that something you would also like to have in the spinner?

Not really 😜. I dont use this feature (home dashboard).

@merdok thank you.
I am not sure about the Home Dashboard, it is not really an input
If the livetv and/or inputs are going to be added to the spinner, would it be possible to see if there is a custom name set up for them on the TV?
For example, my HDMI 1 input was renamed to "Lounge ATVHD" and this appears in the log as "osdName"
   {     "id": "HDMI_1",     "appId": "com.webos.app.hdmi1",     "name": "Apple TV HD",     "subList": [       {         "id": "SIMPLINK",         "portId": 1,         "uniqueId": 4,         "vendorId": 4346,         "physicalAddress": 4096,         "depth": 1,         "osdName": "Lounge ATVHD",         "cecpDevType": 4,         "cecpNewType": 9       },

Well, this is already included, but in the case of a subList (which you show) this is a little bit complicated. In the case above the name "Apple TV HD" will be used because this is the actual name of the input. As i only can set one name, i always use the input name. As you can see a subList item has no appId so you cannot directly navigate to it hence it would be not a good ideas to use that name.
BTW, you can also rename the inputs in the Home app, this will only take effect in the home app and will be preserved in a config file so it will stay as you name it 😉

Please check version 2.0.1. That should make the missing appear now.

Could you provide a new debug log?

Hi @merdok
Sorry, yes :)
Here we are: https://pastebin.com/uZ99hPGQ
I also filtered just the first lines of each log entry here: https://pastebin.com/8zmSYqsX
In this, I can see the new lines to add the missing livetv and inputs...
[9/11/2020, 3:07:16 PM] [webostv] [TV] Input com.webos.app.externalinput.av1 is missing in the launch points list, adding it manually!
[9/11/2020, 3:07:16 PM] [webostv] [TV] Input com.webos.app.hdmi1 is missing in the launch points list, adding it manually!
[9/11/2020, 3:07:16 PM] [webostv] [TV] Input com.webos.app.externalinput.component is missing in the launch points list, adding it manually!
[9/11/2020, 3:07:16 PM] [webostv] [TV] Input com.webos.app.hdmi3 is missing in the launch points list, adding it manually!
[9/11/2020, 3:07:16 PM] [webostv] [TV] Input com.webos.app.hdmi4 is missing in the launch points list, adding it manually!
[9/11/2020, 3:07:16 PM] [webostv] [TV] Input com.webos.app.hdmi2 is missing in the launch points list, adding it manually!````

...but then there is a subsequent "got new launch points" log entry, without subsequent adding of livetv, inputs..?

````[9/11/2020, 3:07:18 PM] [webostv] [TV] Got new launch points list from tv!````

Thanks! First off, nice job with the log 👍 if everyone would provide log like that then it would be easier to debug stuff😅
Anyway, from the log I do not see anything wrong. Maybe this is simply a caching issue? Can you try force kill the home app since it sometimes gets stuck. Also try to remove the webos config files. They should be under .webosTv

Hi @merdok
No problem, thank you for making a great plugin and for helping so quickly with this.
I'm afraid that this didn't resolve it :-(
I did the following:

killed the Home app
removed the TV from Home
removed the .webosTv directory
used Unpair Bridges / Cameras / TVs / External Accessories in Homebridge UI X
restarted Homebridge
re-added the TV in the Home app

I can see that the plugin has recreated the .webosTv directory, with 2 files within:
-rw-r--r-- 1 pi pi   773 Sep 11 17:14 inputsAvailable_64956cbdca35
-rw-r--r-- 1 pi pi   891 Sep 11 17:15 inputsConfg_64956cbdca35```

Unfortunately, within **inputsAvailable_64956cbdca35** I can see that LiveTV and the inputs are still missing :-(

```json
[{"appId":"com.swm.7plus","name":"7plus"},
{"appId":"abc","name":"ABC iview"},
{"appId":"amazon.alexapr","name":"Amazon Alexa"},
{"appId":"com.apple.appletv","name":"Apple TV"},
{"appId":"com.webos.app.igallery","name":"Art Gallery"},
{"appId":"com.disney.disneyplu
s-prod","name":"Disney+"},
{"appId":"com.webos.app.discovery","name":"LG Content Store"},
{"appId":"com.webos.app.music","name":"Music"},
{"appId":"netflix","name":"Netflix"},
{"appId":"com.webos.app.photovideo","name":"Photo & Video"},
{"appId":"cdp-30","name":"Plex"},
{"appId":"sbs","name":"SBS on Demand"},
{"appId":"com.webos.app.sportsteamsettings","name":"Sports Alert"},
{"appId":"stan.webos2","name":"Stan"},
{"appId":"com.webos.app.browser","name":"Web Browser"},
{"appId":"youtube.leanback.v4","name":"YouTube"}]

Did you force kill the home app after the setup? Also did you configure your I put spinner with apps from the accessory preferences?

Hi @merdok
I hope you don't mind but I dug around in the lib/LgTvController.js file on my local rpi to see if I could see what was happening
I saw that you added checkBasicInputs() in setupTvConnection(), which adds the missing livetv and inputs:
  setupTvConnection() {
    this.getTvInformation().then(() => {
      this.logInfo('Got TV information');
      this.checkBasicInputs(); // webos 4.5 is mising some basic inputs so make sure that they are present

The trouble is, after the initial connection, my TV sends an 'updated' launchpoints list (which is actually the same as the initial list, but that is irrelevant 😄 )
This triggers subscribeToLaunchPointsListChange(), and in this, checkBasicInputs() is not called:
  async subscribeToLaunchPointsListChange() {
    return this.tvSubscribe(WEBOS_URI_LAUNCH_POINTS, null, (err, res) => {
      if (res && res.launchPoints && Array.isArray(res.launchPoints)) {
        this.launchPointsList = this.parseLaunchPoints(res.launchPoints);
        this.logDebug(`Got new launch points list from tv!`);

So as an experiment, I added checkBasicInputs() function to subscribeToLaunchPointsListChange(), just after parseLaunchPoints, ie.
  async subscribeToLaunchPointsListChange() {
    return this.tvSubscribe(WEBOS_URI_LAUNCH_POINTS, null, (err, res) => {
      if (res && res.launchPoints && Array.isArray(res.launchPoints)) {
        this.launchPointsList = this.parseLaunchPoints(res.launchPoints);
        this.checkBasicInputs(); //ADDED THIS
        this.logDebug(`Got new launch points list from tv!`);

and now I am getting the full list of apps+livetv+inputs in the input spinner

Oh, you are right! I missed that place😅 Thanks for debugging that and finding the right place. I will add that and submit an update. But it will take 1 week till I can release the update because I have currently no access to a PC.

Thanks for the tip @mikebatnz !
I performed the same mod (from root /usr/local/lib/node_modules/homebridge-webos-tv/lib/LgTvController.js on my mac)o
Now all the inputs are all in Home:

Next, to work out what all the other bits do: I can't get "Control Centre Remote" to do anything despite it being configured, and Siri will only change the volume after I've changed channels ...
@merdok - looking forward to the adventure!
-- marioPS

@marioPS what is wrong with the control center remote for you?

Hi @merdok, and thanks for your reply.
I have no idea of what the "control centre remote" is: I've had a big search in the Home app (macOS & iOS), and the Hombridge web interface.
Maybe I've gone covid-crazy, but I have no idea what it is or where to find it.
Can you please send screenshots/directions on how to get there?
BTW: I added the settings to my config, but did not detect ant change.
Thanks for the help so far, and this amazing plug in.
MarioPS

Hi @marioPS
It's this button in the iOS control centre

@marioPS
You can add it to Control Center (iOS). See screenshots below:

Wow! Thanks for the fast tutorial! It had never occurred to me that the TV would present as an Apple TV to the remote app (via the control center).
I have a new toy to play with.
BTW: In this mode, the volume buttons work, making the code example in the wiki redundant ...
Tanks again - you people are legends!
marioPS

The code example is used to created extra switches for volume, it has nothing to do with the cc remote.

That's good to know - but when the device is selected in CC (either via the swipe down, or accessing the remote via Home app), one can use the iPhones hardware buttons to control the LG TV's volume.
Either way, that's pretty cool!

Hi guys,
Fun reading this :)
I’ve got the same issue I guess. The spinner only gets 4 random inputs and I was going mad until I found this. Very reassuring and happy to read I’m not the only one. Very cool you guys came together and found the solution. Looking forward to the update/fix.
And many thanks to the creator, you rule!
Greetings Mike

I will include the fix most probably tomorrow, finally i have access to my PC again and can do some coding :)

That’s great. Thanks for the update.
On Fri, 18 Sep 2020 at 22:29, Marcin<EMAIL_ADDRESS>wrote:

I will include the fix most probably tomorrow, finally i have access to my
PC again and can do some coding :)
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/merdok/homebridge-webos-tv/issues/281#issuecomment-695070929,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AA4IFRACIVV2KO6N74AHI5DSGO7JXANCNFSM4RDWH6UA
.

Should be fixed in version 2.0.2. Can you guys please confirm?

Yes, the inputs are back. They appeared after update and then turning on the TV. Thank you!

Can confirm the inputs now appear :) thank you @merdok!!

I still got only 4 inputs. Maybe I need to reset something? Or maybe I
should not enter inputs in the config as it overwrites the generated inputs?
On Fri, 18 Sep 2020 at 23:07, Marcin<EMAIL_ADDRESS>wrote:

Should be fixed in version 2.0.2. Can you guys please confirm?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/merdok/homebridge-webos-tv/issues/281#issuecomment-695086557,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AA4IFRBGVIWTTEZKBKZJHM3SGPDYJANCNFSM4RDWH6UA
.

Scratch that. Sorry I missed I had to go into the tv settings in home app
to mark all the inputs I wanted to show.
Very nice work on the plug-in man! We use it every day with pleasure.
On Sat, 19 Sep 2020 at 07:11, Mike Saft<EMAIL_ADDRESS>wrote:

I still got only 4 inputs. Maybe I need to reset something? Or maybe I
should not enter inputs in the config as it overwrites the generated inputs?
On Fri, 18 Sep 2020 at 23:07, Marcin<EMAIL_ADDRESS>wrote:

Should be fixed in version 2.0.2. Can you guys please confirm?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/merdok/homebridge-webos-tv/issues/281#issuecomment-695086557,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AA4IFRBGVIWTTEZKBKZJHM3SGPDYJANCNFSM4RDWH6UA
.

@microsaft82 heh yeah, you can configure yourself the input spinner from the tv settings now. All the inputs should be there, per default only live tv and external inputs are selected.
@mikebatnz ans @vahov thanks for confirming, glad that now all works also on the newer TVs😀
BTW, what do you guys think about showing only the basic inputs per default? Maybe it would be better to simply show all the inputs per default in the input spinner? I didn't want to put everything there at start since it could be to much so I just decided to put the basic inputs which everyone should have as default.

Maybe not all inputs by default, but maybe a little more?
Like Netflix, Amazon prime and YouTube are probably used by most of the
users?
Gr Mike
On Sat, 19 Sep 2020 at 07:48, Marcin<EMAIL_ADDRESS>wrote:

@microsaft82 https://github.com/microsaft82 heh yeah, you can configure
yourself the input spinner from the tv settings now. All the inputs should
be there, per default only live tv and external inputs are selected.
@mikebatnz https://github.com/mikebatnz ans @vahov
https://github.com/vahov thanks for confirming, glad that now all works
also on the newer TVs😀
BTW, what do you guys think about showing only the basic inputs per
default? Maybe it would be better to simply show all the inputs per default
in the input spinner? I didn't want to put everything there at start since
it could be to much so I just decided to put the basic inputs which
everyone should have as default.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/merdok/homebridge-webos-tv/issues/281#issuecomment-695169237,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AA4IFRBUXDJXJOBUBN4YVYDSGRA2TANCNFSM4RDWH6UA
.

Not sure about Netflix, Amazon prime, Disney+ or AppleTV+. I mean not all people use them so i do not want to force them to have those apps preconfigured. On the other side also not all people use Live TV...

My vote: "Live TV" and each of the HDMI inputs as per the users naming scheme.
That's the minimum one would expect segueing from a normal remote to HomeKit.

@marioPS so basically as it is right now?

So far so good for me.
Are there any procedures you’d like me to test?
Just let me know!

On 20 Sep 2020, at 8:35 PM, Marcin<EMAIL_ADDRESS>wrote:
@marioPS https://github.com/marioPS so basically as it is right now?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub https://github.com/merdok/homebridge-webos-tv/issues/281#issuecomment-695771280, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACW2T7BZZSHPOPXO5CHQLWDSGXLGVANCNFSM4RDWH6UA.

Okay 👍
You could try to install or remove an app on the TV and see if the added/removed app shows up/ or gets removed from the input list. This should actually happen without the need to restart homebridge.

Hi @merdok - I can confirm adding and deleting apps is dynamic and does not require rebooting either homebridge, homekit app (iOS) or device (LGTV):
• Added Spotify
• Added Twitch
• Checked iOS Home app LG TV inputs - both added
• Removed Twitch app
• Checked iOS Home app LG TV inputs - Twitch removed.
I hope this helps!
BTW: LG's own iOS app did not dynamically update - adding inputs breaks it until reboot …

That sounds good! Thanks for testing that😀


Should code be refactored to more separate the Delivery, CM API and common parts?

The current implementation is quite condensed in the ClassCodeGenerator .
What are your opinions on refactoring the code to more cleanly separate the above three parts? Is it worth it at the moment?

Nice to have. Could you pls be more specific about what should be extracted and how/where?

Originally, this question was placed by @huluvu21 and @sutrkiller who have implemented the current version. I'll try to get the details from them and do an in-depth review eventually (if guys don't have more specific opinions about how to refactor).

No requests have been made to do the refactoring, apart from the original one.


Testing travis after migration

Travis needs some work

I am removing travis. It uses examples that is not maintained. I'll take that separately how to resolve (it would be additional work to bring the example up to date and add tests). I initially thought the example is usable still but not (using old mbed-os 5.3).


testnet server moved

Testnet server moved from <IP_ADDRESS> to <IP_ADDRESS>

Closed with PR:  #97

Closed with PR:  #97


Add big-endian support for LMDB-related tests

The test cases //tensorflow/python/kernel_tests:reader_ops_test and //tensorflow/contrib/data/python/kernel_tests:lmdb_dataset_op_test have been failing in our s390x (System Z) builds due to a byte order issue.
The LMDB database library supports both big- and little-endian architectures, but the library uses different on-disk formats depending on the byte order of the host machine. I took a look through the source code, and this difference appears to be deliberate.
This pull request adds a big-endian version of the binary input file used by both failing test cases. To generate this file, I first wrote a Python script that generates a byte-for-byte identical version of the original file when run on an x86_64 machine. Then I ran this script on an s390x machine.
I also updated the comments in tensorflow/core/BUILD with a more complete description of the process that produced lib/lmdb/testdata/data.mdb.
I have added code in both test cases that chooses an appropriate input file based on the byte order of the host machine.

Can one of the admins verify this patch?


gas snapshot diff - do not exit with error code 1 when new test added

Component
Forge
Describe the feature you would like
Would be nice to have forge snapshot --diff not exit with error code 1 in case there's a new test added but just ignore the fact there's no matching entry (as it already does when a test is removed). This can be useful in CI environments where gas snapshots are taken each run and compared on new commits.
Additional context
No response

that makes sense, nothing to diff in this case


[Fix-10730][UI] fix bug about the environment name display

Purpose of the pull request
close #10730
Brief change log

When selecting the workGroup just empty the environment code.
Delete the environmentCode operation in use-environment-name.ts. So just pure trigger from workGroup can change the default environmentCode.
not that good: The environmentCode will not has default.

Verify this pull request
This pull request is code cleanup without any test coverage.

Codecov Report

Merging #10796 (0065918) into dev (d2fe16d) will not change coverage.
The diff coverage is n/a.

@@            Coverage Diff            @@
##                dev   #10796   +/-   ##
=========================================
  Coverage     40.61%   40.61%
  Complexity     4817     4817
=========================================
  Files           902      902
  Lines         36221    36221
  Branches       3999     3999
=========================================
  Hits          14711    14711
  Misses        20045    20045
  Partials       1465     1465

Continue to review full report at Codecov.

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


Browse wfs layers

hey @tschie, here's the final WFS sample for U5, Browse WFS Layers. Can you review please? Thanks!

@tschie thanks for the constructive review: I've addressed your comments. Please can you take another look?

@tschie I've removed the checkbox from the sample, Lucas was in agreement it just adds confusion. Can this be merged now?


Add check-links

Please add a yarn check-links that connects to every homepage_url, prints a period if is a 200, but prints the URL and the status code if it is not. I just noticed that https://cobe.io/ is not returning anything, and I'm interested in 301/302 to change the URL.
I think responding to it can remain manual for now.

Closed with https://github.com/cncf/landscape/commit/891906baa7af19b47a3b47adb38b8f17d76a1b6e


man.py: support for non-command help

The man command can now show general help (=help for non-commands).
New man command usage:

if no arguments are given, show all commands
if one argument is given:

check if a command with that name exists in $STASH_ROOT/bin/:

If it does exists, print the docstring
Otherwis, print an error message and exit

otherwise, check wether a dir or a file with that name exists in $STASH_ROOT/man/.

if a dir  exists with that name:

if ( and ) are in the name (they are ignored in the check for a file in $STASH_ROOT/man/), read the number between them, otherwise set that number to one, then repeat step 2 with a file named page_NUMBER.XXX from this dir.

if a file with that name exists:
1. check file extension
2. if file extension is .txt or unknown, print content (but pause after 100 lines)
3. if file extension is .html, open the file in quicklook
4. if file extension is .url:
- if file content startswith stash://, repeat step 2 with a file named like the rest of the content in $STASH_ROOT
- otherwise, open the address in the content in webviewer

I already added a few help pages:
- .url files redirecting to the CHANGES.md, LICENSE and readme.md files
- a .url file opening the git-tutorial @jsbain made for StaSh
- a .txt file containing the simplified shell grammar from system/shparser.py

I had some brief play with the new man command and it works great. Thanks!


Fix detection logic for the Android sdk path

The previous logic used the tools directory within the Android sdk to validate it. That directory was recently deprecated and removed from the Android sdk folder (https://developer.android.com/studio/releases/sdk-tools)

Thanks!

Cherry-picked for 3.2.2.


RFC: button.type should default to button, not submit?

HTML spec says that a <button> element without an explicitly specified type attribute should be interpreted to have type=submit.
This makes some amount of sense for applications that consist of HTML forms that are submitted with such buttons, but Laminar is primarily designed for SPA applications, where most buttons do not submit any html forms.
Forgetting to specify type=button leads to buttons that do the wrong thing – submit the html form they're in – instead of performing the onClick or other action that we expect of them. And the way we're building our apps, the helper function in which the button is defined may not know whether it will be rendered in a form or not, so if type=button is not specified, it may work initially if rendered outside of the form, but fail when the button is moved to inside a form.
Correctly specifying type=button results in a bit of extra boilerplate for the majority use case.

High-level web component libraries such as Shoelace generally default to type=button in their button components. Lower level libraries like React.js generally stick to the native HTML behaviour, i.e. have type=submit as a default.
I'm wondering if Laminar should also default to type=button, even if it's decidedly a low level library. The type=submit default just seems to be so counter-productive. I'm well aware of this default, and yet I still often forget to specify type=button.
For me personally, building SPAs, type=submit is a rare use case, so I always specify it explicitly. I don't make use of the default in the spec, and personally would be happy to not need to type out type=button on 90% of the buttons I create.
Yet at the same time, adding a special type=button default to Laminar could confuse people. While the various HTML docs and tutorials including MDN generally specify type=submit attribute explicitly when it's intended to submit a form, if you do follow some tutorial that omits type=submit and relies on it being the default, you would need to look at Laminar docs to find why your form is not submitting, which goes against Laminar's general advice that you should look at html docs because Laminar behaves the way html behaves.
Normally we could hope for the standard / spec to improve eventually, but this is HTML – it will never change such a fundamental default, no matter how broken it is.

I haven't yet decided one way or another, except that whatever we choose, will be the only default available in Laminar, with no conditions and no configuration.
I would like to hear your opinion – regardless of whether you're experienced in Laminar / frontend / DOM / HTML or not.

Would having type=button as default improve Laminar ergonomics for you?
Do you often use button without specifying its type, relying on the default?
How surprised and frustrated would you be to encounter this non-standard default in Laminar, if you didn't know it was there?

Personally, I've only used buttons with the type set to button; I'm in favour of this propsoal

I believe it's best to follow the spec, otherwise what are we basing it on really. Maybe add another shorthand for button which is type=button
Are there ANY other applications where it would also make sense to deviate from HTML standard?

We could also use submitButton name for the HTML-spec button, and some other name that is not button for "normal" buttons (but again, we would need to find a good name for that). On the plus side, that would avoid giving preference to one or the other, but on the other hand, users would be puzzled when they don't find the obvious button name.
For some precedent – we already do this naming pattern with style. The <style> tag is named styleTag, and the style attribute is named styleAttr, because we need a way to avoid naming collision, and because both of those are rarely used in Laminar, so we don't have a reason to give either of them a preference. And also because we want to use the style name available for any custom styling solutions.
Of course, button is way more popular than style, so it's a much harder sell to not use that name for anything.

Btw here's another example of how following HTML spec can produce undesired results: https://github.com/raquo/Laminar/discussions/180 – that issue keeps tripping people, so we will eventually need a better way to set the value property of select elements, which will not be spec-compliant. Whether we'll special-case our implementation to make it "just work", or create a new custom API for that purpose, I don't know yet. There are pros and cons to either approach.


Run migrations for database schema

Hello, what is canonical way to run migrations for db schema with werf?

Hi!
There are 2 known possible ways.
pre-upgrade helm hook
https://github.com/helm/helm/blob/master/docs/charts_hooks.md#the-available-hooks
Suitable for the migrations, not suitable for the initial database bootstrap when installing release.
Simple Job
Use simple Job (not helm hook) with a random name for each rollout. Werf will by default track all jobs of the release till ready. For example Job may look like this:
{{ $jobId := randAlpha 5 | lower  }}

apiVersion: batch/v1
kind: Job
metadata:
  name: migrate-{{ $jobId }}
spec:
  activeDeadlineSeconds: 6000
  template:
    metadata:
      name: migrate-{{ $jobId }}
    spec:
      restartPolicy: OnFailure
      containers:
      - name: migrate
        image: ubuntu:18.04
        command: [ '/bin/bash', '-l', '-c', 'for i in {1..20} ; do date; sleep 1 ; done' ]

On each rollout helm will create a new Job with a random name. And also helm will detect, that previous Job have gone from the release and will cleanup resource from kubernetes automatically.
Some resource (e.g. Deployment) may need migrated database state to start up properly. In this case werf resources tracker should ignore errors from this resource until migrate Job is done. To specify werf to ignore errors from some resource use "werf.io/fail-mode": HopeUntilEndOfDeployProcess  annotation:
apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: mydeploy22
  annotations:
    "werf.io/fail-mode": HopeUntilEndOfDeployProcess
  labels:
    service: mydeploy22
spec:
  replicas: 1
  template:
    metadata:
      labels:
        service: mydeploy22
    spec:
      containers:
      - name: main
        command: [ "/bin/bash", "-c", "while true; do date ; sleep 1 ; done" ]
        image: ubuntu:18.04

In the future we will add arbitrary deploy stages to control rollout process.

Also there are some articles:

https://habr.com/ru/company/flant/blog/476320/ ;
https://medium.com/flant-com/custom-commands-deploying-in-kubernetes-df4ea4487f18 .


Istio metrics returns grpc_response_status "2" (UNKNOWN) instead of actual response status code while using GRPC-WEB libraries

Is this the right place to submit this?

[X] This is not a security vulnerability or a crashing bug
[X] This is not a question about how to use Istio

Bug Description
When a client uses GRPC-WEB library reaches a destination_service via ingress gateway, the metrics do not show the actual response status code received and instead raises the count of response_status_code "2".
The query im using is: sum(rate(istio_requests_total{destination_canonical_service="[[service_name]]", request_protocol="grpc"}[2m])) by (grpc_response_status)
It is only happening with GRPC-WEB. when I tested it with grpcurl the metric worked as expected.
Information:
Client - angular using<EMAIL_ADDRESS>(also tried with<EMAIL_ADDRESS>Server - nodejs 16.x using nice-grpc@1.2.2(happens on scala/rust as well)
Would appreciate your help.
Version
client version: 1.16.1
control plane version: 1.16.2
data plane version: 1.16.2 (20 proxies)
Client Version: v1.26.1
Kustomize Version: v4.5.7
Server Version: v1.23.8

Additional Information
No response
Affected product area

[ ] Ambient
[ ] Docs
[ ] Installation
[ ] Networking
[ ] Performance and Scalability
[ ] Extensions and Telemetry
[ ] Security
[ ] Test and Release
[ ] User Experience
[ ] Developer Infrastructure
[ ] Upgrade
[ ] Multi Cluster
[ ] Virtual Machine
[ ] Control Plane Revisions

maybe related to https://github.com/envoyproxy/envoy/issues/27201?

But maybe not, that seems scoped to logs. But sounds similar

Hey, thank you for your response.
I have checked the access logs and added the GRPC_STATUS_NUMBER, still I only see response status (2).
Also tried it with proxyv2:1.18.2 (envoy - 1.26.4-dev) and got the same result.
any other suggestions or insights?

please reopen


Create translate - cs.json

Czech translation
Types of changes

[ ] 🐛 Bug fix (non-breaking change which fixes an issue)
[ ] 🚀 New feature (non-breaking change which adds functionality)
[x] 🌎 Translation (addition or update a translation)
[ ] ⚠ Breaking change (fix or feature that would cause existing functionality to change)

Checklist

[ ] My code follows the code style of this project.
[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.
[ ] I have tested the change locally.

Hello, thank you for the contribution 🙂
Don't forget to follow all the steps to add a new language. https://github.com/piitaya/lovelace-mushroom#maintainer-steps-to-add-a-new-language


Shop not saving on restart [Fixed]

After using the new latest version with multicurrency support, the signs do not save after a server stop. This error comes up whenever I create a sign shop. I've tried it with the 1.14 and 1.14 + 1.14 hotfix.

Have you tried forcing a default currency with /cs config currency ?
I'll fix this bug asap

That seemed to fix it, thank you!

Fixed by https://github.com/TheoKah/CarrotShop/commit/ef491679adfa95694758a49c4fd800fac37feda5
I'll publish this in a few. Adding 3 new signs

Here you go: https://github.com/TheoKah/CarrotShop/releases/tag/1.15

Thanks! Also, what is the difference between the "i" signs and "a" signs?

Check the wiki :p
i is for infinite: will create items
a is for admin: still need a chest with items but not linked to a player so infinite money


Error when deploy WASM web - FlutterLoader could not find a build compatible with configuration and environment

Steps to reproduce
Here's my test repo (sorry, it's GitLab): https://gitlab.com/kjm0202/wasm_test
It's exactly same Counter Example App except web/index.html.
Here's my index.html:

Fold/Unfold
<!DOCTYPE html>

  <base href="$FLUTTER_BASE_HREF">

  <meta charset="UTF-8">
  <meta content="IE=Edge" http-equiv="X-UA-Compatible">
  <meta name="description" content="A new Flutter project.">

  <meta name="mobile-web-app-capable" content="yes">
  <meta name="apple-mobile-web-app-status-bar-style" content="black">
  <meta name="apple-mobile-web-app-title" content="wasm_test">
  <link rel="apple-touch-icon" href="icons/Icon-192.png">

  <link rel="icon" type="image/png" href="favicon.png"/>

  <title>wasm_test</title>
  <link rel="manifest" href="manifest.json">

Loading...

git clone & upload to your repo (or fork?)
Deploy it to GitLab Pages (I've already uploaded .gitlab-ci.yml for deploy in git. It uses flutter build web --wasm)
After complete, check your GitLab Page.
You can also check my (already) deployed GitLab Page in here:
https://wasm-test-24d608.gitlab.io/

! ATTENTION !
It will not be reproduced in local environment.
It only happens when it is deployed.
Expected results
Little loading time, then goes to counter app.
Actual results
Error while loading.
Code sample
Please check example app code in this git: https://gitlab.com/kjm0202/wasm_test
You can also check my already deployed site in here: https://wasm-test-24d608.gitlab.io/
Screenshots or Video

Screenshots / Video demonstration

Logs
Logs
(index):90 Uncaught (in promise) FlutterLoader could not find a build compatible with configuration and environment.

Flutter Doctor output
Doctor output
Doctor summary (to see all details, run flutter doctor -v):
[√] Flutter (Channel stable, 3.27.1, on Microsoft Windows [Version 10.0.26100.2605], locale ko-KR)
[√] Windows Version (Installed version of Windows is version 10 or higher)
[√] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
[√] Chrome - develop for the web
[√] Visual Studio - develop Windows apps (Visual Studio Community 2022 17.11.6)
[√] Android Studio (version 2024.1)
[√] IntelliJ IDEA Ultimate Edition (version 2024.3)
[√] VS Code (version 1.96.1)
[√] Connected device (3 available)
[√] Network resources

• No issues found!

@kjm0202
Please check if this helps in your case or not.

@darshankawar
The error is same with mine, but the case seems to be different.
That case is something with --web-renderer=auto, and mine is something with `--wasm'
Also, I have no idea how to apply that solution into my case.

Keeping the issue open for team's tracking.

OK, I found what is the problem.
The problem was either GitHub Pages / GitLab Pages doesn't support COOP / COEP headers.
Related Flutter docs
Here are 2 solutions that I found:

Use another static web hosting services which supports custom headers: Netlify or Cloudflare Pages
If you want to stick with GitHub / GitLab Pages with WASM support, then use coi-serviceworker for workaround.

Download coi-serviceworker.min.js file and put it in web folder
Add  in your  of index.html.

I tested 2nd solution and it worked today. Hope it would work for long time...
You can close this issue, or give new / better solution for this issue. Thanks.

Closing as resolved based on above comment.


feat: enable to choose twitter card type

Purpose
Enable to choose twitter card type by config.toml
If use summary_large_image(default now in this theme),
the image is enlarged, and the content of the icon is difficult to understand.
cf. https://github.com/gcushen/hugo-academic/pull/358
Screenshots
before

after

Documentation
Sorry, I cloud not found any documentation.
Only found in bellow.
https://sourcethemes.com/academic/updates/v2.1.0/

The config has an option to specify the sharing image, perhaps this can satisfactorily resolve your query?
  # Default image for social sharing and search engines. Place image in `static/img/` folder and specify image name here.
  sharing_image = ""

Feel free to submit PR for #813 instead. Thanks.

@gcushen
"sharing_image" config resolve my problem :)
Thanks your reply!

Is there a way to have the sharing_image tag work at the individual post level?

@JosiahParry the Featured Image or Header Image will be used if they are set. Refer to the docs on how to set them.


java.util.NoSuchElementException: key not found: null in optimizing

while compiling Akka.js bindings I got a NoSuchElementException
A repro could be found here: https://github.com/akka-js/akka.js_bindings/tree/bugInCompiling
both fast and full are failing with the very same error

I cannot make a minimal repro but  the bug resides in https://github.com/akka-js/akka.js_bindings/blob/bugInCompiling/bindings.scala#L134 as far as I can understand ...

Thanks, I will have a look tomorrow.

If I enable IR checking in the project, with
.settings(
  ...
  scalaJSOptimizerOptions ~= { _.withCheckScalaJSIR(true) }
)

then I get 13 IR checking errors coming from Akka.js:
[error] .../akka.js/akka-js-actor-ir-patches/src/main/scala/ActorIrPatch.scala(10:16:Select): Cannot select context$1 of non-class Lakka_actor_Actor
[error] .../akka.js/akka-js-actor-ir-patches/src/main/scala/ActorIrPatch.scala(11:22:Select): Cannot select self$1 of non-class Lakka_actor_Actor
[error] .../akka.js/akka-js-actor/shared/src/main/scala/akka/actor/dungeon/Children.scala(134:45:VarRef): Variable _$this of type ClassType(Lakka_actor_dungeon_Children) typed as ClassType(Lakka_actor_ActorCell)
[error] .../akka.js/akka-js-actor/shared/src/main/scala/akka/actor/dungeon/Children.scala(139:47:VarRef): Variable _$this of type ClassType(Lakka_actor_dungeon_Children) typed as ClassType(Lakka_actor_ActorCell)
[error] .../akka.js/akka-js-actor/shared/src/main/scala/akka/actor/dungeon/Children.scala(149:69:VarRef): Variable _$this of type ClassType(Lakka_actor_dungeon_Children) typed as ClassType(Lakka_actor_ActorCell)
[error] .../akka.js/akka-js-actor/shared/src/main/scala/akka/actor/dungeon/Children.scala(157:57:VarRef): Variable _$this of type ClassType(Lakka_actor_dungeon_Children) typed as ClassType(Lakka_actor_ActorCell)
[error] .../akka.js/akka-js-actor/shared/src/main/scala/akka/actor/dungeon/Children.scala(115:49:VarRef): Variable _$this of type ClassType(Lakka_actor_dungeon_Children) typed as ClassType(Lakka_actor_ActorCell)
[error] .../akka.js/akka-js-actor/shared/src/main/scala/akka/actor/dungeon/Children.scala(215:42:VarRef): Variable _$this of type ClassType(Lakka_actor_dungeon_Children) typed as ClassType(Lakka_actor_ActorCell)
[error] .../akka.js/akka-js-actor/js/src/main/scala/akka/dispatch/Mailbox.scala(462:13:VarDef): ClassType(Lakka_dispatch_DefaultSystemMessageQueue) expected but ClassType(Lakka_dispatch_Mailbox) found for tree of type org.scalajs.core.ir.Trees$AsInstanceOf
[error] .../akka.js/akka-js-actor/js/src/main/scala/akka/dispatch/Mailbox.scala(471:9:VarRef): Variable _$this of type ClassType(Lakka_dispatch_DefaultSystemMessageQueue) typed as ClassType(Lakka_dispatch_Mailbox)
[error] .../akka.js/akka-js-actor/js/src/main/scala/akka/dispatch/Mailbox.scala(477:13:VarDef): ClassType(Lakka_dispatch_DefaultSystemMessageQueue) expected but ClassType(Lakka_dispatch_Mailbox) found for tree of type org.scalajs.core.ir.Trees$AsInstanceOf
[error] .../akka.js/akka-js-actor/js/src/main/scala/akka/dispatch/Mailbox.scala(481:10:VarRef): Variable _$this of type ClassType(Lakka_dispatch_DefaultSystemMessageQueue) typed as ClassType(Lakka_dispatch_Mailbox)
[error] .../akka.js/akka-js-actor/shared/src/main/scala/akka/actor/dungeon/Dispatch.scala(31:111:VarRef): Variable _$this of type ClassType(Lakka_actor_dungeon_Dispatch) typed as ClassType(Lakka_actor_ActorCell)

It seems your IR patcher is doing something wrong.  You're leaking invalid IR in your published artifacts, which can burn anyone at any time.
It might not be the cause of the current issue, but it could be. I will keep investigating a bit, but if it comes down to the published IR being broken, there's nothing we can do (or should do).

The above was on master on the mentioned repo. On the bugInCompiling branch, I get two additional iR checking errors, which seems to be our fault:
[error] /akkajs-bindings/bindings.scala(56:7:Closure): Closure parameter Ident(arg$rest,Some(arg$rest)) cannot be a rest parameter
[error] /akkajs-bindings/bindings.scala(56:7:JSSuperBracketCall): JS class type expected but ClassType(Lorg_akkajs_bindings_Actor$$anon$1) found

thanks a lot for the IR checking tip, I will do that, but from a first look they looks all "safe" typecast that simply cannot be checked properly by JSIR, but I will take a second look later of course!

specifically:
first two are there to be consistent on instances of that trait and not on the trait itself and akka-js-actor-ir-patches is not shipped,
everything regarding Children is ok since there is this in akka sources trait Children { this: ActorCell
on Mailbox of course DefaultSystemMessageQueue is a subclass of Mailbox itself
on Dispatch again is safe since trait Dispatch { this: ActorCell ⇒ in Akka sources
I do not know how I can turn these "errors" of ... any hint?

from a first look they looks all "safe" typecast that simply cannot be checked properly by JSIR

There is no such thing as a "safe" typecast that cannot be IR-checked. An IR checker error is like a VerifyError on the JVM. It means the bytecode (IR) is invalid. If there is a safe typecast that would fix the IR checker error, you have to add it explicitly as an AsInstanceOf node in the IR.

akka-js-actor-ir-patches is not shipped

The fact that I see IR checker errors in that part of the code, in an independent codebase, is proof that is shipped, and reachable to boot.

OK the bug is that an anonymous JS class that needs to generate run-time overloading dispatch with several possible argument counts (i.e., that needs a ...rest parameter in the MethodDef) creates broken IR, because it creates a Closure with that ...rest parameter, and that is not allowed.
Workaround: rewrite newAR to used a named JS class rather than an anonymous class:
  private def newAR(_ar: akkaactor.ActorRef) = {
    @ScalaJSDefined
    class MyActorRef extends ActorRef(_ar) {
      override def tell(msg: Any) = actorRef.tell(msg, ar)
    }
    new MyActorRef
  }

Dependency-free minimization:
@ScalaJSDefined
class Foo extends js.Object {
  def bar(msg: Any): Unit = this.bar(msg, 0)

  def bar(msg: Any, sender: Int): Unit =
    println("bar(" + msg + ", " + sender + ")")
}

object HelloWorld extends js.JSApp {
  def main(): Unit = {
    val ar = new Foo {
      override def bar(msg: Any): Unit = this.bar(msg, 1)
    }
    ar.bar("foobar")
  }
}

Which, in turn, can be decomposed in two independent issues:
First, the Closure with ...rest problem:
@ScalaJSDefined
trait Bar extends js.Object {
  def babar(msg: String): Unit
  def babar(msg: String, sender: Int): Unit
}

object HelloWorld extends js.JSApp {
  def main(): Unit = {
    val bar = new Bar {
      def babar(msg: String): Unit = println(s"babar($msg)")
      def babar(msg: String, sender: Int): Unit = println(s"babar($msg, $sender)")
    }
    bar.babar("foobabar")
  }
}

and then, another problem that calling super from an anonymous JS class also produces invalid IR (invalid JSSuperBracketCall node):
@ScalaJSDefined
class Foo extends js.Object {
  def bar(msg: String): Unit = println(msg)
}

object HelloWorld extends js.JSApp {
  def main(): Unit = {
    val foo = new Foo {
      override def bar(msg: String): Unit = super.bar("foo: " + msg)
    }
    foo.bar("foobar")
  }
}

Extracted in two separate issues:

[ ] #3054 for the overloading issue
[ ] #3055 for the super call issue

Hahahaha, I guess I'm to blame for these :)

ok, got it, I will address the IR checks asap, and also I will try to avoid the copy pos from one IR to the other.
Really useful as always @sjrd thanks.

Fixed in<PHONE_NUMBER>ea5b29f9d2aabb3cc84af8dc8a7221 + ec1489927e47a2e4701bea68fbf21052aefc59ac


Support relations with @Relation annotation

the library can be support relation ship?

This is planned for a future release of the library. Unluckily, I can't tell when it's going to be.

Any updates @vitusortner

Hi there!
Is there any support to one-to-many relation? How can i get stored in db complex object (not just simple strings and ints but also list)?

If you guys ever used Room (the library this is based), and checked out the generated code, you may write the boilerplate yourself and get the relations.
In my case I have the entities Article, Author and ArticleAuthor (that assigns a article to an author).
I started playing with flutter/dart this week, so you might see some improvements in the code:
https://gist.github.com/ForceTower/1d9acd12e772fe352bedcd5e640de7e2
In this case, AuthorArticleId is a DatabaseView, since this library at this time doesn't support @Embedded or map the database query to any model class.
The query code of the DatabaseView can be anything, it just exists so the code generator knows how to map the query result to the model I want.
The line https://gist.github.com/ForceTower/1d9acd12e772fe352bedcd5e640de7e2#file-article_dao-dart-L15 is horrible, Room fetches the results and places them into a HashMap based on the pivot table id (in my case, articleId) to increase performance, since findWhere is a O(N) and there might be a lot of models to go through.

@ForceTower
This is not a complete implementation. Here you only listen Article table (one stream), and after changing Article, you grab the data from Authors. But what if the data in Authors is mutable, and you need to listen changes from Articles and Authors at the same time (equivalent to listening two streams)?

@proninyaroslav The implementation I shared does indeed has a flaw, if the author itself changes, the changes of it are not propagated into the stream.
I believe the desired behavior would be achievable by listening to a second stream (of authors) and publishing snapshots of both in the result stream. But that seems like a code smell :(
Or maybe to create and dependency on the first query to both tables, this way one single stream would do the job correctly.

@ForceTower
Android Room uses Observable to listen selected tables. I think we can use FloorDatabase.changeListener for this purpose.

If you guys ever used Room (the library this is based), and checked out the generated code, you may write the boilerplate yourself and get the relations.
In my case I have the entities Article, Author and ArticleAuthor (that assigns a article to an author).
I started playing with flutter/dart this week, so you might see some improvements in the code:
https://gist.github.com/ForceTower/1d9acd12e772fe352bedcd5e640de7e2
In this case, AuthorArticleId is a DatabaseView, since this library at this time doesn't support @Embedded or map the database query to any model class.
The query code of the DatabaseView can be anything, it just exists so the code generator knows how to map the query result to the model I want.
The line https://gist.github.com/ForceTower/1d9acd12e772fe352bedcd5e640de7e2#file-article_dao-dart-L15 is horrible, Room fetches the results and places them into a HashMap based on the pivot table id (in my case, articleId) to increase performance, since findWhere is a O(N) and there might be a lot of models to go through.

Hi @ForceTower  I saw the SQL statement used supports one to one relationship how would I manage a one to many kind of relationship. In this case, you have an author with many articles. I would as a result get a List of authors with lists of articles for each of them.
Any help would be amazing

Hi @ForceTower I saw the SQL statement used supports one to one relationship how would I manage a one to many kind of relationship. In this case, you have an author with many articles. I would as a result get a List of authors with lists of articles for each of them.
Any help would be amazing

Hey there, in the example I shared, I believe the tables were set up to a N..N relationship, So... lets assume you have a proper 1..N relation, like a movie and it's posters :D
class MoviePoster {
  final int id;
  final String image;
  final int movieId;
  MoviePoster(this.id, this.image, this.movieId);
}

If I remember correctly to implement a 1..N room does something like:
1 - Fetch the movies
2 - Map the movie list where for each movie, you select from poster table based on the movie id (this will give you a list of posters) and create an object with the movie and the posters list.
3 - Return the mapped list
The secret behind the N..N relationship is the line https://gist.github.com/ForceTower/1d9acd12e772fe352bedcd5e640de7e2#file-article_dao-dart-L15 there I did a firstWhere which returns a single author, if you just do a where , you'd have a List<Author> for an Article.
To do what you asked basically invert the 2 tables used in the example.
But... Be aware of the error @proninyaroslav pointed out in this example

Thanks alot man will consider the error
On Fri, 9 Jul 2021, 2:38 pm João Sena, @.***> wrote:

Hi @ForceTower https://github.com/ForceTower I saw the SQL statement
used supports one to one relationship how would I manage a one to many kind
of relationship. In this case, you have an author with many articles. I
would as a result get a List of authors with lists of articles for each of
them.
Any help would be amazing
Hey there, in the example I shared, I believe the tables were set up to a
N..N relationship, So... lets assume you have a proper 1..N relation, like
a movie and it's posters :D
class MoviePoster {
final int id;
final String image;
final int movieId;
MoviePoster(this.id, this.image, this.movieId);
}
If I remember correctly to implement a 1..N room does something like:
1 - Fetch the movies
2 - Map the movie list where for each movie, you select from poster table
based on the movie id (this will give you a list of posters) and create an
object with the movie and the posters list.
3 - Return the mapped list
The secret behind the N..N relationship is the line
https://gist.github.com/ForceTower/1d9acd12e772fe352bedcd5e640de7e2#file-article_dao-dart-L15
there I did a firstWhere which returns a single author, if you just do a
where , you'd have a List for an Article.
To do what you asked basically invert the 2 tables used in the example.
But... Be aware of the error @proninyaroslav
https://github.com/proninyaroslav pointed out in this example
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/vitusortner/floor/issues/47#issuecomment-877123539,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AKHG7KFZAMLNFMNNCFHI4PLTW3NSPANCNFSM4GXDOEEA
.

Any updates on the @Relation? It makes data retrieval so much easier.
This is very important to me. I will settle with the first decent ORM I find that supports this feature.

Any updates?

Any updates?

Any updates ?

Any Updates?

Any updates?

Any updates?

Any updates ?

Any updates ?


:bar_chart: migrate JSON data page for living planet index

Migrate JSON-based Data page to ETL-based Data page by adding metadata to its grapher step. I tried to match the original Data page as closely as possible, which means some metadata fields might not adhere to our guidelines. I moved FAQs to its GDoc and used official topic tags names.
@spoonerf could you please check the Data Page for any issues? You are also encouraged to update metadata in the YAML file according to guidelines. Commented lines are metadata from the ETL dataset, you should delete them if they're not helpful. Add commits to this PR as you wish!
You can test it by running
ENV=.env.mojmir etl living_planet_index --grapher

and visiting the data page.
Known issues

Only central estimate is shown (there's currently no way how to add other indicators)

Parent issue https://github.com/owid/etl/issues/1666

Thanks for migrating this @Marigold!
Is it the case we cannot quite have the same formatting at the moment? I'm just wondering about the formatting for the section: "How does the producer of this data - WWF and Zoological Society of London - describe this data?"
I seemed to be able to add italics locally but not line-breaks. Just curious what the convention is at the moment. I'll add a commit to make it a bit clearer what I've tried!

@spoonerf sorry for the late reply. As far as I know, italics should be done automatically (and line breaks fix) on the data page, but it's not ready yet. So I wouldn't worry about that. Just let me know if the metadata looks about right (it doesn't have to be perfect) and we'll get this merged.

@spoonerf just give me green light when you think it's ok 🙏

@Marigold - sorry for the delay, it looks good to me!


Cannot GET /index.html

Hi
Im trying to start via the herokaupp link. It returns the overview page but none of the links work and when trying dashboard it returns  blank page Cannot GET /index.html
Would be nice to try this one.
Cheers
Daniel

Hi @myztx, Thanks for your interest.
I'm actually working on releasing a new version within the next couple of days that actually contains a decent amount of functionality. Stay tuned!

Check out the new README

lame


Fix scalacOptions

-optimize behaves differently (more agressive) for scala >=2.12 and we were applying it for 2.13 builds.
inline optimization is still kept for >=2.12 but it's only from algebird packages.

Codecov Report

Merging #818 into develop will increase coverage by 0.15%.
The diff coverage is n/a.

@@             Coverage Diff             @@
##           develop     #818      +/-   ##
===========================================
+ Coverage    89.33%   89.49%   +0.15%
===========================================
  Files          116      116
  Lines         9164     9164
  Branches       383      383
===========================================
+ Hits          8187     8201      +14
+ Misses         977      963      -14

Impacted Files
Coverage Δ

...scala/com/twitter/algebird/HyperLogLogSeries.scala
95.16% <0.00%> (-4.84%)
:arrow_down:

.../main/scala/com/twitter/algebird/Successible.scala
87.50% <0.00%> (-4.17%)
:arrow_down:

.../main/scala/com/twitter/algebird/BloomFilter.scala
95.57% <0.00%> (+1.76%)
:arrow_up:

...src/main/scala/com/twitter/algebird/Interval.scala
83.47% <0.00%> (+6.08%)
:arrow_up:

...ala/com/twitter/algebird/ApproximateProperty.scala
82.00% <0.00%> (+10.00%)
:arrow_up:

...n/scala/com/twitter/algebird/SuccessibleLaws.scala
92.30% <0.00%> (+15.38%)
:arrow_up:

Continue to review full report at Codecov.

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

Hi @johnynek, would you have time to make a release and also include #818? Thanks!

oh man... good catch... yeah, I will do a release tomorrow.

Thanks @johnynek 🙏

I just spent some time on trying to publish.... after churning for quite a while it failed saying this machine has no GPG key. I thought I had published from this machine before.... now I'll go back into debug mode... I hope to have it solved today.

https://github.com/twitter/algebird/releases/tag/v0.13.7
seems to have worked with a machine that had an existing gpg key (I wish the plugin could test that before doing a ton of work). Just did sbt release and everything seemed to work.
Thanks to you and @nevillelyh fixing up the sbt release script.

Ahah that's good news! 👍 glad you got it working. Don't know if it's of interest but i have a simple Github Actions workflow that allow to publish a release on tag vX.X.X. It only requires adding a few secrets in the repo settings. If this is something you would want to explore let me know 👍
We can have it publish signed snapshots on merge to master as well ... that way we also now that signing always works.

yeah, that sounds interesting for sure, then anyone who can push to master/merge can effectively publish (so, that would include you guys right?)
It would also be probably worth it to migrate CI wholesale to github actions...

yeah, that sounds interesting for sure, then anyone who can push to master/merge can effectively publish (so, that would include you guys right?)

correct. Ok I'll propose something soon.


Refactor vertical layout of function definition with options

This PR

removes an extra blank line from function definition when fn_args_layout = "Block" and fn_args_paren_newline = false are used (Please take a look at #1624 and https://github.com/rust-lang-nursery/fmt-rfcs/issues/39).
allows the opening ( of args to stay after the closing > of multi line generic.

Thank you!


[FEATURE REQ] ServiceBusActiveMessagesAvailableWithNoListenersEventData Event Grid Data Model is missing SessionId

Library or service name.
Azure Service Bus and Microsoft.Azure.EventGrid.Models
Is your feature request related to a problem? Please describe.
Service Bus can be configured to publish an event to Event Grid when a message arrives on a subscription but no receivers are connected and waiting to receive messages. This event contains data of type ServiceBusActiveMessagesAvailableWithNoListenersEventData, which contains the Topic and Subscription that received the message.
This event data model does not contain the SessionId of the message. Thus, if sessions are enabled on the Topic, there is no way to specifically request messages from the correct session (such as with SessionClient.AcceptMessageSessionAsync). In this case, the only way to handle the event is to register a session handler and process messages in all sessions. This can be very inefficient if there are many concurrent sessions and most do not currently need to be processed.
I assume that in addition to updating the data model, this change will require input from the Azure Service Bus service team to update the event payload.

//fyi: @ellismg, @JoshLove-msft, @kerri-lee

@mikemarmar  Thanks for raising this issue. the Event Grid notification here is to behave as a shoulder tap indicating that messages are available.
Unfortunately, it's not straightforward to add the session id to the EG event. This is due to the fact that the entire queue (or subscription) would have to be scanned.
Could you elaborate the end to end scenario you are looking to enable ? Perhaps we can provide an alternate solution for the same.

@mikemarmar closing this issue for now. Please feel free to open a new issue if this is still an open question.


Gulp Bundle shows many warnings

For more than 2 years we have used package which includes several web parts in it.
We have decided to update one of the web part and use @pnp/sp module. When we used gulp bundle we got a lot warnings similar to below one. Code itself is working and we are getting proper results. Should we ignore those warnings?
<EMAIL_ADDRESS>Module Warning (from ./node_modules/source-map-loader/index.js): (Emitted value instead of an instance of Error) Cannot find source file '../../../../../packages/sp/items/index.ts': Error: Can't resolve '../../../../../packages/sp/items/index.ts' in 'C:\Projects\OmersDev\SP%20OMERS\WebParts\SPEnterprise\node_modules\@pnp\sp\items' NonErrorEmittedError: (Emitted value instead of an instance of Error) Cannot find source file '../../../../../packages/sp/items/index.ts': Error: Can't resolve '../../../../../packages/sp/items/index.ts' in 'C:\Projects\OmersDev\SP%20OMERS\WebParts\SPEnterprise\node_modules\@pnp\sp\items'     at emitWarning (C:\Projects\OmersDev\SP%20OMERS\WebParts\SPEnterprise\node_modules\webpack\lib\NormalModule.js:154:16)     at C:\Projects\OmersDev\SP%20OMERS\WebParts\SPEnterprise\node_modules\source-map-loader\index.js:80:7     at doResolve (C:\Projects\OmersDev\SP%20OMERS\WebParts\SPEnterprise\node_modules\webpack\node_modules\enhanced-resolve\lib\Resolver.js:184:12)     at hook.callAsync (C:\Projects\OmersDev\SP%20OMERS\WebParts\SPEnterprise\node_modules\webpack\node_modules\enhanced-resolve\lib\Resolver.js:238:5)     at _fn0 (eval at create (C:\Projects\OmersDev\SP%20OMERS\WebParts\SPEnterprise\node_modules\webpack\node_modules\tapable\lib\HookCodeFactory.js:33:10), <anonymous>:15:1)     at resolver.doResolve (C:\Projects\OmersDev\SP%20OMERS\WebParts\SPEnterprise\node_modules\webpack\node_modules\enhanced-resolve\lib\UnsafeCachePlugin.js:37:5)     at hook.callAsync (C:\Projects\OmersDev\SP%20OMERS\WebParts\SPEnterprise\node_modules\webpack\node_modules\enhanced-resolve\lib\Resolver.js:238:5)     at _fn0 (eval at create (C:\Projects\OmersDev\SP%20OMERS\WebParts\SPEnterprise\node_modules\webpack\node_modules\tapable\lib\HookCodeFactory.js:33:10), <anonymous>:15:1)     at hook.callAsync (C:\Projects\OmersDev\SP%20OMERS\WebParts\SPEnterprise\node_modules\webpack\node_modules\enhanced-resolve\lib\Resolver.js:238:5)     at _fn0 (eval at create (C:\Projects\OmersDev\SP%20OMERS\WebParts\SPEnterprise\node_modules\webpack\node_modules\tapable\lib\HookCodeFactory.js:33:10), <anonymous>:27:1)     at resolver.doResolve (C:\Projects\OmersDev\SP%20OMERS\WebParts\SPEnterprise\node_modules\webpack\node_modules\enhanced-resolve\lib\DescriptionFilePlugin.js:42:38)     at hook.callAsync (C:\Projects\OmersDev\SP%20OMERS\WebParts\SPEnterprise\node_modules\webpack\node_modules\enhanced-resolve\lib\Resolver.js:238:5)     at _fn42 (eval at create (C:\Projects\OmersDev\SP%20OMERS\WebParts\SPEnterprise\node_modules\webpack\node_modules\tapable\lib\HookCodeFactory.js:33:10), <anonymous>:16:1)     at hook.callAsync (C:\Projects\OmersDev\SP%20OMERS\WebParts\SPEnterprise\node_modules\webpack\node_modules\enhanced-resolve\lib\Resolver.js:238:5)     at _fn1 (eval at create (C:\Projects\OmersDev\SP%20OMERS\WebParts\SPEnterprise\node_modules\webpack\node_modules\tapable\lib\HookCodeFactory.js:33:10), <anonymous>:16:1)     at hook.callAsync (C:\Projects\OmersDev\SP%20OMERS\WebParts\SPEnterprise\node_modules\webpack\node_modules\enhanced-resolve\lib\Resolver.js:238:5)  @ ./lib/webparts/webPartContentEditor/components/ScriptEditor.js 58:0-23  @ ./lib/webparts/webPartContentEditor/WebPartContentEditorWebPart.js<EMAIL_ADDRESS>Module Warning (from ./node_modules/source-map-loader/index.js): (Emitted value instead of an instance of Error) Cannot find source file '../../../../../packages/sp/items/list.ts': Error: Can't resolve '../../../../../packages/sp/items/list.ts' in 'C:\Projects\OmersDev\SP%20OMERS\WebParts\SPEnterprise\node_modules\@pnp\sp\items' NonErrorEmittedError: (Emitted value instead of an instance of Error) Cannot find source file '../../../../../packages/sp/items/list.ts': Error: Can't resolve '../../../../../packages/sp/items/list.ts' in 'C:\Projects\OmersDev\SP%20OMERS\WebParts\SPEnterprise\node_modules\@pnp\sp\items'     at emitWarning (C:\Projects\OmersDev\SP%20OMERS\WebParts\SPEnterprise\node_modules\webpack\lib\NormalModule.js:154:16)     at C:\Projects\OmersDev\SP%20OMERS\WebParts\SPEnterprise\node_modules\source-map-loader\index.js:80:7
Category
[ ] Enhancement
[X] Bug
[nodX] Question
Version
v10.22.0
PS C:\Projects\OmersDev\SP%20OMERS\WebParts\SPEnterprise> npm -- version
{ 'sp-enterprise': '0.0.1',
npm: '6.14.6',
ares: '1.15.0',
brotli: '1.0.7',
cldr: '35.1',
http_parser: '2.9.3',
icu: '64.2',
modules: '64',
napi: '6',
nghttp2: '1.41.0',
node: '10.22.0',
openssl: '1.1.1g',
tz: '2019c',
unicode: '12.1',
uv: '1.34.2',
v8: '6.8.275.32-node.58',
zlib: '1.2.11' }
PS C:\Projects\OmersDev\SP%20OMERS\WebParts\SPEnterprise> npm ls -g --depth=0 @microsoft/generator-sharepoint
C:\Users\pbrokhman\AppData\Roaming\npm
`--<EMAIL_ADDRESS>Observed Behavior
When I have created new web part and used @pnp/sp logic with similar functionality as the updated web part, there was no such warnings.
Steps to Reproduce
No idea.

Hello @PavelBrokhman,
Seems like you're having issue with PnPJS, not PnP Reusable Controls.
PnPJS has it's own repo.
It also has a Transition Guide documentation on how to update from v1 to v2. Maybe, it is your case.
If not - please, submit a new issue in the PnPJS repo.
Thanks!

Hello @PavelBrokhman,
Seems like you're having issue with PnPJS, not PnP Reusable Controls.
PnPJS has it's own repo.
It also has a Transition Guide documentation on how to update from v1 to v2. Maybe, it is your case.
If not - please, submit a new issue in the PnPJS repo.
Thanks!


design: logo for envoy gateway

What type of PR is this?

What this PR does / why we need it:
Which issue(s) this PR fixes:

Fixes #2147

CNCF Service Desk requested above infos for logo design, before sending to the artwork team, let us discuss it a little bit.
cc @envoyproxy/gateway

/retest

Should we suggest using Envoy logo as the base of the EG logo? For example, using the same color or similar shape?


Android 6.0 delete mail ui jumpy

After upgrading to android 6.0 the mail list jumps up and down (stutters)  when I delete an email

See #747

No, that does not fix it on Android 6.0

I'm sorry. This doesn't seem to be a widespread issue. I don't see anyone spending time on gathering the necessary information to reproduce and fix this bug.
But it's likely the problem will disappear when we get to the UI overhaul.


TabContainer doesn't layout its children when first added

Godot 3.1 alpha 2
Reproduction steps:

Create a TabContainer, give it some default size
Add a TextEdit as child in order to have one page: notice the page is created, but the TextEdit is not occupying that page properly.

Note: if you launch the game at this point, the page will be laid out properly, so it seems the issue only exists in the editor.
Try to resize the TabContainer: notice the content of the page resizes in weird ways, even disappearing sometimes

Now add another page by adding another control child
In the TabContainer properties, switch from page 0 to page 1
Switch back to page 0: notice the TextEdit now fits the page correctly

Have noticed this as well, but haven't had a chance to write it up.
As you say, it resolves to normal behavior when another tab is added.

It also resolves to normal behavior when you reload the scene.

Any updates on this problem?


Create Users on password reset requests

We have people who for whatever reason had a Person record with no User record created decades ago, usually because they were a co-author on a draft. Now when they want to interact with the datatracker (using the same email that was associated with that Person decades ago), the password reset link says it sent something, but it didn't send anything because there was no User.
Instead, create a User in this situation. Tie in the logic that looks for possible duplicate persons and send the warning message to the secretariat (that code already exists).
The security posture of the result should be the same as a password reset for a Person that already has a User - proof of control of the email address.
(If that turns out to be problematic, change this issue to tell the person that they need to contact the secretariat to establish a new password instead).

Currently, the behavior drives people, particularly during NomCom season, to create a new account with a different email address, making work for the secratariat/nomcom later to merge the Person records.

The current code that creates Person records on draft submission is not creating corresponding User records.

I think this may still be happening with new draft co-authors who don't already have datatracker accounts when their I-Ds are published.
I'm a co-author on https://www.ietf.org/archive/id/draft-parecki-oauth-client-id-metadata-document-00.html and data tracker is telling me I already have an account (I'm currently trying to register for Vancouver 120), when I try to reset password, I receive no email.
So I can't register because I already have an account and I can't reset the password.

If I understand correctly, it'd be correct to modify both https://github.com/ietf-tools/datatracker/blob/main/ietf/ietfauth/views.py#L494-L495 and https://github.com/ietf-tools/datatracker/blob/main/ietf/submit/utils.py#L579 to fix this issue?
So in the reset handler (view?) if there's an email and there's a person, but there's no user record, create a user record for the user before sending reset; and in the submission process, when the Person is created also create a User record?

For now I've gone with creating an account on a separate email for registration to IETF 120 instead.

We'll need to correct what happened with your two datatracker accounts (and merge them back into one). Could you please send the usernames to<EMAIL_ADDRESS>(don't post them here).
For addressing the code issue, yes, you're looking in the right places in the code. If you're attending in person, consider joining the codesprint on Saturday.

Alrighty. Whilst it's possible I could write a patch for this, my python skills are quite rusty, so it may be better fixed by someone with more knowledge.

I've just started to look at working on this, and I've a question:

Instead, create a User in this situation. Tie in the logic that looks for possible duplicate persons and send the warning message to the secretariat (that code already exists).

Is the goal here to show an error message like the one in create_account?
i.e.,
                # Either a User or an Email matching new_account_email is in the system but we do not have a
                # "good" email to use to contact its owner. Fail so the user can contact the secretariat to sort
                # things out.
                form.add_error(
                    "email",
                    ValidationError(
                        f"Unable to create account for {new_account_email}. Please contact "
                        f"the Secretariat at {settings.SECRETARIAT_SUPPORT_EMAIL} for assistance."
                    ),
                )

Or is the goal to actually create a User record for that known Email, and then to send a password reset to that freshly created User?
I think the latter would be more user friendly?

I've done up a PR for the latter option described above: https://github.com/ietf-tools/datatracker/pull/7729

Or is the goal to actually create a User record for that known Email, and then to send a password reset to that freshly created User?

Yes, that's the goal. And:

Tie in the logic that looks for possible duplicate persons and send the warning message to the secretariat (that code already exists)

Isn't about the error message you pointed to, but rather about a message to the secretariat asking them to inspect things when it looks like there might be a duplicate Person problem. See https://github.com/ietf-tools/datatracker/blob/aa36f481e13c99bc0865282a9e890e6b049cdb98/ietf/person/models.py#L233-L239 (which is in Person.save()).

Ah, okay; I'm not sure exactly where I should tie in the duplicate person check logic?

Let's split that part out into separate work

huh - I didn't intend to close this, reopening until the PR lands - sorry if that was confusing.


[WIP] Fix problem with wrong chunksizes when using rolling_window on dask.array

[ ] Closes #2514
[ ] Closes #2531
[ ] Tests added (for all bug fixes or enhancements)
[ ] Fully documented, including whats-new.rst for all changes

Short summary
The two rolling-window functions for dask.array

dask_rolling_wrapper
rolling_window

will be fixed to preserve dask.array chunksizes.
Long summary
The specific initial problem with chunksizes and interpolate_na() in #2514 is caused by the padding done in
https://github.com/pydata/xarray/blob/5940100761478604080523ebb1291ecff90e779e/xarray/core/dask_array_ops.py#L74-L85
which adds a small array with a small chunk to the initial array.
There is another related problem where DataArray.rolling() changes the size and distribution of dask.array chunks which stems from this code
https://github.com/pydata/xarray/blob/b622c5e7da928524ef949d9e389f6c7f38644494/xarray/core/dask_array_ops.py#L23
For some (historic) reason there are these two rolling-window functions for dask. Both need to be fixed to preserve chunksize of a dask.array in all cases.

Hello @cchwala! Thanks for submitting the PR.

There are no PEP8 issues in the file xarray/core/dask_array_ops.py !

There are no PEP8 issues in the file xarray/tests/test_dataarray.py !

There are no PEP8 issues in the file xarray/tests/test_missing.py !

Yes. Test are still failing. The PR is WIP. I just wanted to open the PR now to have the discussion here instead of in the issues.
I will work on fixing the code to pass all current test. I will also check how the rechunking affects performance.


Fix home screen content scrolling

This PR fixes scrolling in home screen content.
How to test?

Verify the home screen can scroll normally in both landscape and portrait.
Verify accessibility in home screen works.

@smcmurtry please review

@timarney Feel free to merge after you have a look 🙇

Here is another before and after on Android, after scrolling all the way down.
Before:

After:

Android EN framework off:
After:

Looks like landscape mode text is getting cut off on many screens in master, and this PR fixes that.
Before, scrolled all the way down:

After:


New floor message doesn't appear on lower difficulty dungeons

Currently checking if pulled into a portal or 20 paintings remaining to determine this.   Lower difficulty dungeons don't have 20 paintings per floor.

Although it would be nice, nobody is using this to farm lower difficulty dungeons. Closing this.


IndexError: tuple index out of range

Hello,
I am following the the example for "Molecule generation pretraining procedure". first step "python get_vocab.py --ncpu 16 < data/chembl/all.txt > vocab.txt" is done with no error, but I am getting the "IndexError: tuple index out of range" for the second step
python preprocess.py --train data/chembl/all.txt --vocab data/chembl/all.txt --ncpu 16 --mode single
can you please let me know what could be the problem.
Best,
Amir

https://github.com/wengong-jin/hgraph2graph/issues/34 should answer your question. I had same also. Then, I did according to that tread and viola....it worked.
Run this first:
python preprocess.py --train data/chembl/all.txt --vocab data/chembl/all.txt --ncpu 16 --mode single
After completion,
then, this:
mkdir train_processed
After,
then this
mv tensor* train_processed/

Thanks for your response.
I have a set of smiles which I am working on, extracting the substructures is done successfully but the second step is giving the following error:
do you have any idea what could be problem?
Thanks for your help.
python preprocess.py --train Inforna_correct_for_ML.txt --vocab inforna_vocab.txt --ncpu 16 --mode single
File "preprocess.py", line 109, in
le = (len(all_data) + num_splits - 1) // num_splits
ZeroDivisionError: integer division or modulo by zero

I will suggest you adjust the number of split formular:
num_splits = len(all_data) // 1000
if your len(data) is < 1000, num_split = 0 because of the floor division.
So my advice is you use  a denominator that can give your num_split >= 1. maybe you use 100 or 10 or 5.

Thanks a lot for your help.
Now I am at the third step "Train graph generation model" and I am getting the following error. I googled the error but couldnt find a solution.
Thanks,
here is the pytorch version I am using, if it helps:
Name                    Version                   Build  Channel
pytorch                   1.11.0          py3.7_cuda11.1_cudnn8.0.5_0    pytorch
Traceback (most recent call last):
File "train_generator.py", line 96, in
meters = meters + np.array([kl_div, loss.item(), wacc * 100, iacc * 100, tacc * 100, sacc * 100])
File "/home/amir/anaconda3/envs/sampledock/lib/python3.7/site-packages/torch/_tensor.py", line 732, in array
return self.numpy()
TypeError: can't convert cuda:0 device type tensor to numpy. Use Tensor.cpu() to copy the tensor to host memory first.

The error is due to lack of nvidia gpu that enable cuda on your machine.

but I have the nvidia gpu?
NVIDIA-SMI 470.129.06   Driver Version: 470.129.06   CUDA Version: 11.4     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  Quadro P2200        Off  | 00000000:65:00.0  On |                  N/A |
| 44%   30C    P5     9W /  75W |   1842MiB /  5050MiB |     68%      Default |
|                               |                      |                  N/A

Perhaps, the driver is not properly installed. Something must be wrong somewhere.!

maybe this can help: https://github.com/wengong-jin/hgraph2graph/pull/35/commits/2e56392b747d3af1b3ed51086a01e857e03deb97

Thanks, I finally figured out what was wrong and now it is working.
Now I have a problem with finetune_generator.py
I have used the chemprop_train on  my dataset and got the following in the save_dir:
args.json, fold_0, verbose.log, test_scores.csv, quiet.log
after running the finetune_generator.py I get the following error, can you please let me know how can I trace the problem.
Thanks for your help.

Traceback (most recent call last):
File "/apps/hgraph2graph/20210428/hgraph2graph/finetune_generator.py", line 124, in
score_func = Chemprop(args.chemprop_model)
File "/apps/hgraph2graph/20210428/hgraph2graph/finetune_generator.py", line 37, in init
scaler, features_scaler = load_scalers(fname)
ValueError: too many values to unpack (expected 2)

Hi muammar,
Thanks for the solution.
I am using the train_translator.py for lead optimization and I am getting the following error. ahve you seen this error before? do you know how to solve it.
Thanks,
Traceback (most recent call last):
File "/apps/hgraph2graph/20210428/hgraph2graph/train_translator.py", line 86, in
loss, kl_div, wacc, iacc, tacc, sacc = model(*batch)
File "/apps/hgraph2graph/20210428/lib/python3.7/site-packages/torch/nn/modules/module.py", line 1110, in _call_impl
return forward_call(*input, **kwargs)
TypeError: forward() missing 2 required positional arguments: 'y_orders' and 'beta'


Make it possible to reconcile RootSyncs without cluster-admin

We've recently started working on slimming down the permissions we grant to RootSyncs that target repositories we are not in control of, but realized whatever permissions we grant are going to be effectively ignored, as reconciler-manager is hard-coded to grant cluster-admin to root reconcilers.
I could think of a few options for how to configure that would work for us, so would like to hear your thoughts on what you'd prefer before I submit a design proposal and/or PR:

A boolean property, defaulting to false, which just turns off creating the ClusterRoleBinding entirely. If a user turns this on, they are responsible for creating a ClusterRole and binding it to the KSA.
Example: .spec.overrides.manuallyManagePermissions: true (name very much pending)

A string property denoting which role to grant to the KSA. If provided reconciler-manager then creates a ClusterRoleBinding to that role instead of cluster-admin.
Example: .spec.overrides.reconcilerClusterRole: my-config-sync-role

A string property denoting a different KSA to use rather than the one currently created by the reconciler-manager. If provided, neither the KSA nor the ClusterRoleBinding would be created (i.e. these lines would be skipped); the onus to do that would be on the user instead. (In addition, these lines would have to be made aware of the override).
Example: .spec.overrides.serviceAccountName: my-own-ksa

Would you accept a feature contribution that makes this configurable? If so, is there one of the approaches above (or something else entirely) you prefer?

@tomasaschan Thank you for filing this issue - this seems like a reasonable feature request IMO. We would gladly accept a feature contribution to make this configurable - and after some offline discussion we are leaning towards the second option you proposed (configurable ClusterRole).
My reasoning is that this provides a more user friendly UX compared to the first and third options. The first and third option require for the user to manage the creation/lifecycle of the ClusterRoleBindings for every reconciler/KSA. With the second option, the user just needs to create the ClusterRole and Config Sync will manage the creation/lifecycle of the ClusterRoleBindings. This approach also can easily be backwards compatible by defaulting to cluster-admin.
I think the next step would be to go a bit more into detail with a design doc. Would you be open to contributing a design doc for this feature?


New language implementation example: Rust?

Implement at least one service in Rust. Include a Dockerfile for running the service in a container.

Hello,
As we enter 2022 Q1, we are trimming our OSS backlog. We will be closing this issue as it is a low priority for us to fix. It is unlikely that we'll ever get to it, and so we'd like to set expectations accordingly.
If this issue is important to you, please feel free to ping here and we can discuss/re-open.