How to handle invalid server response?

Consider the following:
const net = require('net')

const socket = net.connect(80, 'feeds.bbci.co.uk')
  .on('data', buf => {
    process.stdout.write(buf)
  })

socket.write('GET /news/rss.xml HTTP/1.1\r\n')
socket.write('host: feeds.bbci.co.uk\r\n')
socket.write('connection: keep-alive\r\n')
socket.write('transfer-encoding: chunked\r\n\r\n')

socket.write('7\r\n')
socket.write('Mozilla\r\n')
socket.write('9\r\n')
socket.write('Developer\r\n')
socket.write('7\r\n')
socket.write('Network\r\n')
socket.write('0\r\n')
socket.write('\r\n')

Running this will give two (?!) replies from the server, one HTTP/1.1 200 OK followed by a HTTP/1.0 400 Bad Request.
Seems like the server for whatever reason is parsing the above as two request and provides two responses. This only happens with chunked transfer encoding against this specific (nginx + AkamaiGHost?) server.
I have no idea why it does this.
In undici this will cause either a hard crash if nothing is in the pipeline, or start replying to the next pipelined request, essentially corrupting state.
I'm not sure how to handle this. Any thoughts?

Do we know anyone that might have any good suggestion on this?

I think the server doesn't accept GET bodies and assumes the next data is the next request. And since it isn't, it replies with 400.

I see. So that's a server bug I guess. Not sure how to handle though.

No, that's not a server bug. The spec doesn't say whether it's allowed to have a GET body or not:

A payload within a GET request message has no defined semantics;
sending a payload body on a GET request might cause some existing
implementations to reject the request.

Unfortunately there's no way to tell us if the server acknowledged the body or not (or the 400 response is a mistake).
One workaround would be to require a content-length header when sending GET or HEAD.

One workaround would be to require a content-length header when sending GET or HEAD.

That's a pretty good idea. I think elasticsearch use a body for GET requests. But I guess chunked encoding would not be required there? @delvedor?

I think elasticsearch uses a body for GET requests.

They accept POST requests as well.

They accept POST requests as well.

Yes, what I mean is that we don't want to break them since they have GET with body as part of their API.

@ronag correct, Elasticsearch does accept GET request with bodies. But unless the user enforces the GET method, the client will send all of them via POST.
A good solution might be to set the content-length header only if a body is present.
From my experience having the content-length set to 0 in GET request without a body could cause rejections as well.

So content-length should not be included, at all, when 0? Including other methods? Or just for GET?

I would say it should not be included for all methods that might accept a body, but are not sending it in that case.
So GET, DELETE, OPTION (not sure about others!).

A user agent SHOULD NOT send a
Content-Length header field when the request message does not contain
a payload body and the method semantics do not anticipate such a
body.

@delvedor 4de85d4 (#249)

@szmarczak I'm still unsure how to handle this. I've made sure we don't send content-length: 0 for e.g. GET requests. However, it is this possible and valid for users to provide a body with a GET request and any such requests against that server will end up corrupting undici state.
The only "fix" I can think of is to not allow body with GET but that possibly breaks e.g. elasticsearch (@delvedor)... though I guess that's still better than corrupting undici state...
Thoughts?

IMO enforcing content-length should do the trick.

IMO enforcing content-length should do the trick.

What do you mean?

If we can’t find a workaround is totally fine for me disallowing body in GET requests :)

What do you mean? Even with content length the above example will fail with double responses.

Ah, I just have tested \r\n\r\n and you're right. Unfortunately I have no idea how to fix this. Maybe let's just ignore invalid responses? But then if an attacker takes over a server then he may flood us :thinking: Anyway I think it's almost 0% chance the attack would ever happen.


Add ESLint rule to cap the length of translation strings

Fixes

Fixes #3378 by @Presskopp
Description

This PR adds a new ESLint rule to cap the length of translation strings to 40 words.
It is a draft because there are 20 strings that need to be broken up for this rule to pass, and I want to make sure this is an acceptable approach before spending the time to do that (as it is quite tedious and careful work). I also need to add the documentation page for the new rule.
I also added a new utility, utilities/generate_test_locales, which generates strings for the test locales. It keeps existing strings and does not overwrite them, which means we can make manual changes to the automatically generated strings as we see fit, and they will be preserved. I have documented that and more in the i18n documentation page.
Testing Instructions

Check out the new ESLint rule. Run it locally with pnpm run eslint and confirm you see 20 strings failing to pass this in en.json5. Try to break the rule by adding new strings or testing any edge cases you can think of. If you come up with any edge cases, please note them in your review so that I can add them to the unit tests.
Please try the new utilitis/generate_test_locales script locally, following the instructions for use in the i18n documentation page.
Checklist

[x] My pull request has a descriptive title (not a vague title likeUpdate index.md).
[x] My pull request targets the default branch of the repository (main) or a parent feature branch.
[x] My commit messages follow best practices.
[x] My code follows the established code style of the repository.
[x] I added or updated tests for the changes I made (if applicable).
[ ] I added or updated documentation (if applicable).
[x] I tried running the project locally and verified that there are no visible errors.
[N/A] I ran the DAG documentation generator (if applicable).

Developer Certificate of Origin

Developer Certificate of Origin
Developer Certificate of Origin
Version 1.1

Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
1 Letterman Drive
Suite D4700
San Francisco, CA, 94129

Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.

Developer's Certificate of Origin 1.1

By making a contribution to this project, I certify that:

(a) The contribution was created in whole or in part by me and I
    have the right to submit it under the open source license
    indicated in the file; or

(b) The contribution is based upon previous work that, to the best
    of my knowledge, is covered under an appropriate open source
    license and I have the right under that license to submit that
    work with modifications, whether created in whole or in part
    by me, under the same open source license (unless I am
    permitted to submit under a different license), as indicated
    in the file; or

(c) The contribution was provided directly to me by some other
    person who certified (a), (b) or (c) and I have not modified
    it.

(d) I understand and agree that this project and the contribution
    are public and that a record of the contribution (including all
    personal information I submit with it, including my sign-off) is
    maintained indefinitely and may be redistributed consistent with
    this project or the open source license(s) involved.

Looking at the snapshot failures, and it looks like I've messed up a few converstions on the broken-up paragraphs. Redrafting and I'll address those failures tomorrow when I return to work.

@WordPress/openverse-frontend What is the process for updating the RTL testing locale? Do contributors need to manually enter strings into automated translation services or is there a process to generate them as needed (e.g., from a script)?

Is it possible to wrap $t (something like a new util, say $ti) to automatically iterate over a, b, c etc? That would make make this diff...

That's an interesting idea. I think the complexity there is that we don't know in the code how many parts there without reading the translation blob. Is it possible to do that? It sounds like a nice improvement but I'd prefer it in a separate PR, considering how significant this one already is.

@sarayourfriend, is there something blocking this PR from being merged, aside from the git conflicts?

The translations. It's honestly so tedious, I spent a couple hours last week trying to automate the translations locally using https://github.com/argosopentech/argos-translate, but of course the template strings make automated translations, even approximations impossible.
I was going to ping you today to ask how you deal with variables in strings when you run them through a translator? I don't know Arabic or Russian, so there's no way I can reliably guess where the template words should go.
If you don't worry about it, then I can push the code I wrote to automate it using Argos. There are a lot of outdated/non-existent strings in the testing translations, and hand maintaining these test translations is so tedious, I'm surprised we actually have them, particularly as the process and approach are undocumented.

@obulat I've re-requested a review because I added in the test locale generation script I mentioned to you during our chat earlier this week.
There is new documentation for the utility, and I will update the PR description now to include it in the review instructions. Let me know what you think.

I'm lost on why the translation banner tests fail... when I run them on my computer in the container, they fail there too. But when I run them locally to try to debug why the page isn't loading, it works fine :thinking: It feels like a configuration issue, maybe? I need to look into how the other test locales are handled, if there is anything special that makes them work correctly inside the containers.

I'm lost on why the translation banner tests fail... when I run them on my computer in the container, they fail there too. But when I run them locally to try to debug why the page isn't loading, it works fine 🤔 It feels like a configuration issue, maybe? I need to look into how the other test locales are handled, if there is anything special that makes them work correctly inside the containers.

We only use the translated value in the valid-locales.json to determine whether we should show the translation banner or not, we don't look into the locale's json file at all. So, for testing purposes, we can set the translated value to a number below 90 to force the banner to appear, even if the locale is fully-translated.

Ah! That's an interesting problem.
For those particular keys, we can put a manual translation there and the translation script will keep the previous value. We could, for example, keep the English language value for the translation banner on the Russian one. That should be an easy enough fix!

There is a problem with the current translation generation code: it leaves PLACEHOLDER text instead of converting it back to the original key

This is intention, by the way, because for some languages or strings, Argos will decide to translate the string "PLACEHOLDER" or "{openverse}" (for example) or other placeholders like "###" I tried. I originally had the script keeping track of each of these placeholders and then substituting them back into the original string in order. This actually did work for a great many strings. However, whenever Argos would decide it wanted to translate a particular placeholder (no matter what I tried) it would result in the script not finding enough placeholder values to pop the removed ones back in! There's also no guarantee that the order of the placeholders in the translated text matches that of the original English, for example adjective/noun ordering being opposite in Romance languages from Germanic ones.
So there were lots of issues with trying to maintain the placeholders while using an automated translation tool. I can put back the "kinda working" version, and then for keys that cause an issue in any language, we could output a log file of those and just require manual translations for that subset of keys (with the suggested mangled translation included). Because it always preserves the existing translation, we'd only have to fix it once for each problematic key, while still getting fully working automatic translations with "approximate" placeholders for the vast majority of instances.

I understand the problem with the placeholders, they are really fiddly :)

For those particular keys, we can put a manual translation there and the translation script will keep the previous value. We could, for example, keep the English language value for the translation banner on the Russian one. That should be an easy enough fix!

It's great that we have an escape hatch, I think this is a good enough solution for testing layouts in VR tests.
What do you think about removing the ru and es locales, and only leaving ar for all locale testing, @sarayourfriend ?

I think having as many different scripts as possible is a good idea, if we are exercising them, particularly non-latin scripts, but also locales that have accents and such, so that we exercise that (English won't, most of the time)...
I don't see those test locales as being much of a maintenance overhead at this point, if we have automatic generation. What would be the benefit to removing them?

@obulat if you have time to re-review this changes and merge them, please do. I would like a second set of eyes on this at least, before merging. @dhruvkb if you're able to do so as well, I'd appreciate it.

...although I would've liked the all scripting pertaining to translations to be centralised (not necessarily inside frontend/ but together) and co-located.

I was going to do that, but because it's a Python thing, I didn't want to muddy the waters too much.

Rebasing just to make sure VR tests pass on main.


Fix build on Linux

There are a few problems with Linux builds we need to solve:

On WSL there's a build error complaining about non-existent X11 libraries. We don't need to build GUI on some systems, so let's just add an option ACTIAS_BUILD_GUI that is turned off on Linux by default.
On Ubuntu VM with a graphical interface we can't build GLFW using clang, because of -Werror flag that is set globally via CMAKE_CXX_FLAGS. I did it because there seemed to be no other way to enable a flag just for C/C++ and not assembly, but with this global variable there's no way to enable the treating of warnings as errors just for our projects... So I decided to just disable the -Werror on Linux for now, until I find a solution.

@MaiNoTee let's check if this worked


SCM input box container wrong height

VSCode Version: 1.47 Insiders
OS: macOS

@rebornix Got steps? I have never seen this. 🤔


Requirements.txt needed

Currently missing a requirements.txt or environment.yml (if we go with conda)

@danjgale - That's very much needed. I'm not sure if it makes sense to go with requirements.txt instead of envrionment.yml. It might be too extreme to create a new conda environment (a few GBs), just for this toolbox.
But we could look into creating a PyPI project?

I think requirements.txt makes more sense than environment.yml because it can be used with either conda or pip

Yes, I'm also for requirements.txt file. Just asked @rmarkello  and he's agreeing.
@danjgale - do you want to set this up?


[MSL] Cryptodomex issues

https://pastebin.com/QhHSDWgF
Can't seem to find an answer to this problem. Tried 32/64bit 2.7.2-2.7.13 Python, still cannot get it to work for the life of me. It doesn't even launch, just instantly errors out.

I'm also getting errors related to Cryptodome, and installing pycryptodome through pip doesn't seem to resolve it.
https://pastebin.com/E2Kb1ygY

Hi, I have the same issue.
Error Contents: Cannot load native module 'Cryptodome.Cipher._raw_ecb'

We once had an issue similar to this: https://github.com/asciidisco/plugin.video.netflix/issues/36
@trummerjo You have initially created this, any further thoughts?

Hi again,
by using the Cryptodome distribution found here https://github.com/mchristopher/PokemonGo-DesktopMap/tree/master/app/pylibs/win32/Cryptodome and putting it inside "DRIVE:\Kodi\addons\script.module.pycryptodome\lib\Cryptodome" I do no longer have the error (But using the one which you can retrieve with pip install does not work.) and I can launch the plugin...
So I can browse the netflix library... but cannot play anything, now kodi complains with "Playback error, missing inputstream addon"... Inputstream adaptative is I think included with kodi 18, and I did install widevinecdm.dll and symlink ssd_wv.dll into %APPDATA%/Roaming/Kodi/cdm.
The log is not helpful, it contains: ERROR: Playlist Player: skipping unplayable item: 0, path [plugin://plugin.video.netflix/?action=play_video&infoLabels....
Any hint ?
Thank you

Well... I'm not so sure it's the fact that I changed Cryptodome from the package above that made it works....
It seems it's linked with the nightly build of kodi instead... With the nightly of 02/08 it works... (till the missing inputstream) but not with the one of 10/08.

doesnt work no matter what version i use of what. Kodi, cryptodome or whatever, cant get past "OSError: Cannot load native module 'Cryptodome.Cipher._raw_ecb'"

We need more information to track this down.
@allcolor @lehabibi @SimonDeRidder Could you please give me the following data from your systems:

Kodi version (the exact nightly you´re using - date)
Inputstream.adaptive version
Your OS and OS version
A full Kodi debug log

Ok.
I'm on windows 10 64 bits... with the latest patch installed.
with KodiSetup-20170702-32eca2db44-master-x86.exe in 32bits without having to add the scripts Kodi\addons\script.module.pycryptodome\lib\Cryptodome as it is present after installing Kodi to the contrary of any other nightly I have tried.
I've installed the repo and installed the plugin and then run it, it connects correctly to netflix, I can browse my library... but when trying to launch a video, I have "Playback error, missing inputstream addon".

kodi.txt

@allcolor Can you check if the inputstream.adaptive plugin is enabled in your plugin browser?

All nightly I've tried in x64 (from 30/07, 03/08, 09/08) are missing the lib/Cryptodome... if I take it from a python 2.7 x64 with pip and add it in Kodi\addons\script.module.pycryptodome\lib\Cryptodome I have then the error "OSError: Cannot load native module 'Cryptodome.Cipher._raw_ecb'".
For win32, the nightly of 02/08 works (till missing inputstream addon)  if I take it from a python 2.7 a x86 Cryptodome with pip... contrary to the nightly of 02/07, I have to add the Cryptodome lib, because the kodi nightly does not provide it. With the x86 nightly of the 09/08, i have  "OSError: Cannot load native module 'Cryptodome.Cipher._raw_ecb'"..
What version of kodi nightly does work till playing... I don't know ;)

Ok it was not enabled... but no luck, it still does not work. But no error message now...
Simply not playing.
kodi.txt

If I reclick on launch, I have an error message and in the log I have:
14:49:02.619 T:244652   ERROR: Playlist Player: skipping unplayable item: 0, path [plugin://plugin.video.netflix/?action=play_video&infoLabels=%7B%27plot%27%3A+u%22Effray%5Cxe9+par+le+comportement+des+habitants+du+village%2C+John+tente+en+vain+de+s%5Cu2019enfuir%2C+avant+de+faire+la+d%5Cxe9couverte+d%27un+passage+secret+dans+la+maison+de+sa+tante.%22%2C+%27episode%27%3A+2%2C+%27rating%27%3A+0%2C+%27mpaa%27%3A+u%27%27%2C+%27tvshowtitle%27%3A+%27Hero+Corp%27%2C+%27title%27%3A+u%27Le+Test%27%2C+%27mediatype%27%3A+u%27episode%27%2C+%27season%27%3A+1%2C+%27duration%27%3A+1478%2C+%27year%27%3A+2008%2C+%27genre%27%3A+u%27S%5Cxe9ries+fran%5Cxe7aises%27%7D&video_id=80136296&start_offset=1473]
14:49:02.621 T:244652  NOTICE: CVideoPlayer::CloseFile()
14:49:02.621 T:244652  NOTICE: VideoPlayer: waiting for threads to exit
14:49:02.621 T:244652  NOTICE: VideoPlayer: finished waiting
14:49:02.621 T:244652  NOTICE: CVideoPlayer::CloseFile()
14:49:02.621 T:244652  NOTICE: VideoPlayer: waiting for threads to exit
14:49:02.621 T:244652  NOTICE: VideoPlayer: finished waiting
14:49:05.085 T:244652 WARNING: CGUIWindowManager - CGUIWindowManager::OnAction - ignoring action 107, because topmost modal dialog closing animation is running

ERROR: AddOnLog: InputStream Adaptive: Unable to handle decryption. Unsupported!
I have this... I have a copied the "widevinecdm.dll" from my chrome install and make the symlink for ssd_wv.dll in %APPDATA%/kodi/cdm...
I'll try with another widevinecdm.dll

@allcolor You don't (and shouldn't) copy/symlink the ssd_wv.dll
This is now integrated in Kodi itself. It will only with the one that is bundled with the Kodi Nightly.
This is true for all future Kodi 18 versions. Basically all you need is the widevine.dll.

Well I've tried with the one here:
https://www.opendll.com/index.php?file-download=widevinecdm.dll&arch=32bit&version=#
And I got:
14:56:11.722 T:239828   ERROR: AddOnLog: InputStream Adaptive: Unable to handle decryption. Unsupported!
14:56:11.722 T:239828   ERROR: CVideoPlayer::OpenInputStream - error opening [http://localhost:50349/manifest?id=80136295]

(I've removed the symlink).

@allcolor Try downloading the latest chrome from here: http://www.slimjet.com/chrome/google-chrome-old-version.php & unzip it.
There should be a proper DLL in this folder: Chrome-bin\<Chrome Version Number>\WidevineCdm\_platform_specific\win_x86\

So I've taken the 59.0.3071.86 from the site above, copied the DLL into %APPDATA%/Kodi/cdm... still no luck.
15:08:30.436 T:250592  NOTICE: Creating InputStream
15:08:31.083 T:250592   ERROR: AddOnLog: InputStream Adaptive: Unable to handle decryption. Unsupported!
15:08:31.083 T:250592   ERROR: CVideoPlayer::OpenInputStream - error opening [http://localhost:55515/manifest?id=80136295]

I've also tested with the latest google chrome canary, same thing.

\o/ Success I've made it work...
I've installed the kodi nightly from 09/08 on top of the former of the 02/07 and now it works... And the lib/Cryptodome is present... don't know why when I did install it before, it was missing (or maybe it was missing only on the x64 ? or maybe the antivirus trashed it ?).
Anyway, I can play netflix now... I used the winedevinecdm from the google canary setup... (and also copied the cdmadapter.dll).

@allcolor Great \o/
Now that you've written 02/07, a bell rang that something in the early July 32bit versions was broken...
It's always good to give the latest version a try.
So, 1 out if 3 works. Lets tackle the others :D

I was also struggling for a few days with this issue. I downloaded the 32 bits nightly from 9th august and just had to copy the w'vine cdm and cdmadapter from latest chrome running in my computer to the cdm folder to get it working.nice. thanks for solving it.

For reference, duplicate issue: https://github.com/asciidisco/plugin.video.netflix/issues/94

I'm still experiencing the issue with Kodi Nightly Build from August 22. I'm on Windows 10 using 64 bit Kodi. The log file says this:
08:06:33.159 T:13580   ERROR: EXCEPTION Thrown (PythonToCppException) : -->Python callback/script returned the following error<--
- NOTE: IGNORING THIS CAN LEAD TO MEMORY LEAKS!
Error Type: <type 'exceptions.ImportError'>
Error Contents: No module named Cryptodome.PublicKey
Traceback (most recent call last):
File "C:\Users\GroundBreaking\AppData\Roaming\Kodi\addons\plugin.video.netflix\service.py", line 10, in
from resources.lib.KodiHelper import KodiHelper
File "C:\Users\GroundBreaking\AppData\Roaming\Kodi\addons\plugin.video.netflix\resources\lib\KodiHelper.py", line 11, in
from MSL import MSL
File "C:\Users\GroundBreaking\AppData\Roaming\Kodi\addons\plugin.video.netflix\resources\lib\MSL.py", line 19, in
from Cryptodome.PublicKey import RSA
ImportError: No module named Cryptodome.PublicKey
-->End of Python script error report<--

Use the 32bits version of the 09/08, it works... there is obviously a problem with the cryptodomex lib... even if you take it with pip, it doesn't work on those broken nightly... the problem is with kodi not the netflix plugin... so if you want to use it, use the 09/08 32 bits version.

OK so instead of reporting it here, it should really be reported to the Kodi developers?

Most probably, yes. But lets leave the issue open here as well, so people with the problem have a goto source & see that it´s not a problem on their system.

Thank you guys for all the guidelines. I've made a step by step Netflix installation tutorial (in French) with direct download links for people who use Kodi with Windows.
https://domtik.com/index.php/2017/09/03/addon-netflix-kodi/

Thank you for the guide @domtik , too bad that working Nightly build is no longer available now. Does anybody know of another version with working pycryptodome?

Instead, can someone just host the working copy on a cloud sharing service and link to it?
Just as a temporary solution of course.

I found a mirror with older nightlies.
http://ftp.igh.cnrs.fr/pub/xbmc/xbmc/nightlies/windows/win32/master/

Awesome thanks a lot @centralseven !

I didn't know it was that complicated.
trummerjo told me to install Cryptodome.
I was trying to download Cryptodome from the link allcolor posted.
"https://github.com/mchristopher/PokemonGo-DesktopMap/tree/master/app/pylibs/win32/Cryptodome"
I didn't found a way to download the Cryptodome there, so I have searched the net for another place and found this. Is this good?
https://pypi.python.org/packages/e2/2f/cba044f7558649da3525eb66104e25e038f6e2f2b88c3037e561e93c7a33/pycryptodomex-3.4.2-cp35-cp35m-win_amd64.whl#md5=c90bcbd62c2a1e31346cd2adcdd3af65
Here is my log if needed.
https://pastebin.com/1UH890Hx

Just install this nightly http://ftp.igh.cnrs.fr/pub/xbmc/xbmc/nightlies/windows/win32/master/KodiSetup-20170809-67137d6348-master-x86.exe and it will work.

Cryptodome should be installed with Kodi I believe.
Try this build:  http://ftp.igh.cnrs.fr/pub/xbmc/xbmc/nightlies/windows/win32/master/KodiSetup-20170809-67137d6348-master-x86.exe
Thank you so much @centralseven

@allcolor you beat me by seconds!

Yes, you must enabled the plugin inpustream adaptive, it is off by default.
If that doesn't solve it, then attach the log.

That was enabled already.
Either way, I JUST managed to fix it by manually installing the addon using the latest master.
Next I'm gonna test the video streaming.

is there any way to get netflix plugin workin android tv box (amlogic 905w) please? Installed Kodi master nightly from August 9th. Enabled inputstream adaptive. Created directory cdm under /.kodi and have put there libwidevinecdm.so. Installed Netflix plugin. When I look into plugin settings, then under dependencies I still see pycryptodome unavailable. Have no idea where to look further.

Thanks allcolor, but I'm using a 64bit Kodi because I have problems watching files that are coded in 265 with the 32bit.
I'm using this version
"18.0-ALPHA1 Git:20170811-69f283b"
Is it ok for that?
I also saw here that you said "inpustream" should be enabled.
Do I need to install this plugin from somewhere?

The plugin is installed but not enabled, just go in the extension configuration and enable it... As for a 64bits version, I did not found any that has worked for me...

I am using Kodi 18 x86 (9 September 2017) and is working. Haven't update yet to try if still works

Hello, for those who are looking for the working Nightly build you can download it in this post:
https://domtik.com/index.php/2017/09/03/addon-netflix-kodi/

On ubuntu plugins need to be installed explicitly with apt-get.
I managed to get netflix running perfectly on a nightly kodi build (installed latest as of today).
I had to pip install pycryptodomex by hand; as the netflix plugin didn't get to pulling it as a dependency.
After that it took me quite a while to figure out I had to sudo apt-get install kodi-inputstream-adaptive.
After that it was plain sailing.

Hello I am using the Netflix addon with kodi 18 on my android box (nvidia shield), it worked a week and now suddenly I have an error message when I launch Netflix... I don't know where I can find the description of this error message, and I see in the requested addon "script.module.pycryptodome" is missing. I tried to install several versions of kodi 18 and uninstall / reinstall the addon but the problem is always there. Someone could help me please ?

Cryptodomeex should be included in the current Nightlies for x64 devices.
If one of you could test it & give some feedback, it would be much appreciated.

asciidisco, how can I be sure before I install it that it has the "Cryptodomeex"?
http://mirrors.kodi.tv/nightlies/windows/win64/master/KodiSetup-20171007-bedc63fc8a-master-x64.exe

I have desactivated and reactivated the addon and Netflix works now... I don't know why but I must do that once a day to make him work correctly.
I have the last nightlies x64 for Android but look the screen :

Great! Last nightly for x64 seems to include cryptodomex, and the add-on seems to work fine.

@ymca11 Don't know if there´s a way, besides checking the output of the build server.
@Johunn I have no idea  why that´s the case, but I´m also not an Android user.
Don't think you can update it from within itself.

Now I can see my netflix account but not play.
I think it will work after I add a file.
Here domtik made a french help:
https://domtik.com/index.php/2017/09/03/addon-netflix-kodi/
I have seen that in the help there is a 32bit chrome and not 64.
Is there a 64bit version?

@ymca11 It´s not related to Cryptodome then (future remark, always include a debug.log).
I think you´re talking about widevine, there is a link in the readme of the repo with download links for all platforms (excluding ARM): https://hg.mozilla.org/mozilla-central/raw-file/31465a03c03d1eec31cd4dd5d6b803724dcb29cd/toolkit/content/gmp-sources/widevinecdm.json

I would appreciate if anything in regards to this would find its way into the Kodi Bugtracker (https://trac.kodi.tv).
I´ve looked for any reports there & no one has reported issues.
Here are some existing issues that are all related to the initial implementation, so if someone opens a bug in the tracker, the corresponding one should be linked: https://trac.kodi.tv/search?q=cryptodome
Closing this, as this is not related to the plugin, but to Kodi itself.

Thanks asciidisco. :)
That's exactly what I've needed.
https://redirector.gvt1.com/edgedl/widevine-cdm/970-win-x64.zip
And remembering where to put it :) "\AppData\Roaming\Kodi\cdm"
Now it's working 8)

I’m using Ubuntu and I have logged on but I get a playback error when I try to load any videos. Can anyone please point me in the right direction to get it working?


cudaPackages.cudnn: use libcublas if available

Additionally, perform the patching using hooks.
Note that cudatoolkit is no longer propagated. This may cause some
breakage.
Description of changes

Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
22.05 Release Notes (or backporting 21.11 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module
[ ] (Release notes changes) Ran nixos/doc/manual/md-to-db.sh to update generated release notes

[ ] Fits CONTRIBUTING.md.

Duplicate of https://github.com/NixOS/nixpkgs/pull/168748.

merged https://github.com/NixOS/nixpkgs/pull/168748


only init basestring in python2

python3  will load this module first and throw exception on basestring before loading re2.pyx

The re2.cpp file is generated via cython from the re2.pyx file. Check if regenerating the file with cython fixes your issue by running make.

I encountered this issue as well. This pull request fixes it.

The real problem is that src/re2.pyx was updated to support Python 3, but src/re2.cpp wasn't regenerated. #49 modifies an outdated auto-generated file.


Fix "Disable" button on Settings page

The Disable button on the settings page should stop sending any signals to all sites but right now it still follows the custom domainlist. The button should not send any Do Not Sell signals.
This was found in going through the checklist in #289 for Chrome.

This is resolved.


Support questions

I have two SQL servers that are not doing backups properly.
Both are SQL 2012, one has specific databases that don't back up, I get SQL severity 016 errors even though I can see *.bak files in the directory, the other one I can see *.bak files but hours later I see numerous 016 error messages.

Where do I find the 'application log' for backups??
Is it possible to download older versions of the maintenance script?? I think this all started after upgrading the script...
Is Github the official support request site??
Thank you, Tom

MaintenanceSolution.sql is creating the jobs with output - files. By default the output - files are located in the SQL Server error log directory. The output - files contains all the details about the errors. I would be very interested in what the error message is.

My website has the latest version of the scripts. GitHub has all versions since I started using GitHub.

The support channels are GitHub, Stack Exchange (tag ola-hallengren) and e-mail.


WIP MTL-1654 Support OverlayFS Rollbacks

Summary and Scope

Fixes MTL-1654

Issue Type

RFE Pull Request

This enables rollbacks to a previous SquashFS and its matching OverlayFS for NCNs. This also facilitates upgrades to a new SquashFS but removing the need to wipe the node, or reset the OverlayFS. The changes here create a symbolic link that dracut-dmsquash-live will read, this symbolic link will point to a directory. The directory that the symbolic link points to will be named after the rd.live.squashimg kernel argument, which is changed whenever we have a new squashFS image. Thus, changing that argument will create a new, coupled overlayFS for that squashFS image or in the case of an existing squashFS image it'll use that squashFS's old OverlayFS.
Specifically, if a new squashFS image named foo.squashfs is specified by rd.live.squashimg=foo.squashfs then a new OverlayFS will be created. For a rollback,
Prerequisites

[x] I have included documentation in my PR (or it is not required)
[ ] I tested this on internal system (x) (if yes, please include results or a description of the test)

Idempotency

Yes.
Risks and Mitigations
What is less risky, or more risky now - or if your mod fails is there a new risk?
This is low-risk, as the same deployment and reboot behavior will be observed by users. This PR adds features without hindering current behavior.

I unchecked the "this was tested" checkbox. I made a change and want to retest it.

We get this feature for free with the recent adoption of changing rd.live.dir from the upgrade change: https://github.com/Cray-HPE/docs-csm/pull/2061
This is because the overlayFS is created inside of a directory that's named after whatever rd.live.dir is equal too. That means that if filesystem.squashfs is saved into foo/ that it'll have an overlay in foo/, and if we change rd.live.dir to bar then the next downloaded squashFS and overlayFS will be in a bar/ directory. Rolling back would be as simple as changing rd.live.dir back to foo.


[Feature-7191][dolphinscheduler-api] support query authorized user list by project code

fix: #7191

Codecov Report

Merging #7194 (cc3b415) into dev (05aef27) will increase coverage by 0.02%.
The diff coverage is 100.00%.

@@             Coverage Diff              @@
##                dev    #7194      +/-   ##
============================================
+ Coverage     40.33%   40.35%   +0.02%
- Complexity     3675     3677       +2
============================================
  Files           653      653
  Lines         27048    27060      +12
  Branches       3031     3032       +1
============================================
+ Hits          10909    10920      +11
  Misses        15103    15103
- Partials       1036     1037       +1

Impacted Files
Coverage Δ

...hinscheduler/api/controller/ProjectController.java
68.00% <100.00%> (+2.78%)
:arrow_up:

.../org/apache/dolphinscheduler/api/enums/Status.java
100.00% <100.00%> (ø)

...scheduler/api/service/impl/ProjectServiceImpl.java
75.26% <100.00%> (+1.23%)
:arrow_up:

...dolphinscheduler/remote/future/ResponseFuture.java
81.96% <0.00%> (-1.64%)
:arrow_down:

Continue to review full report at Codecov.

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


cassandra22 2.2.7

[ Y ] Have you followed the guidelines in our Contributing document?
[ Y ] Have you checked to ensure there aren't other open Pull Requests for the same formula update/change?

[ Y ] Does your submission adhere to Versions "Acceptable Formulae" guidelines?
[ N ] Does your submission pass brew audit --strict --online <formula> (after doing brew install <formula>)?

No.  It does pass brew audit, but the strict mode returns depends_on` (line 13) should be put before `conflicts_with which is unrelated to the version change I am submitting.

The build appears to be failing for an unrelated reason:
==> FAILED
Error: /usr/local/Library/Taps/homebrew/homebrew-core/Formula/isync.rb:9: syntax error, unexpected <<, expecting keyword_end
<<<<<<< Updated upstream
  ^
/usr/local/Library/Taps/homebrew/homebrew-core/Formula/isync.rb:14: syntax error, unexpected ===, expecting keyword_end
=======
   ^
/usr/local/Library/Taps/homebrew/homebrew-core/Formula/isync.rb:16: syntax error, unexpected >>, expecting keyword_end
>>>>>>> Stashed changes

@tstone have requeued the build.

@MikeMcQuaid It looks like the build script is choking on a merge conflict in homebrew-core.
https://bot.brew.sh/job/Homebrew Versions Pull Requests/version=el_capitan/1553/console

Thanks for your contribution to Homebrew!  You rock!


Update Agreements.json

MSFT employees can try out our new experience at OpenAPI Hub  - one location for using our validation tools and finding your workflow.

Changelog
Add a changelog entry for this PR by answering the following questions:

What's the purpose of the update?

[ ] new service onboarding
[ ] new API version
[ ] update existing version for new feature
[ ] update existing version to fix swagger quality issue in s360
[ ] Other, please clarify

When are you targeting to deploy the new service/feature to public regions? Please provide the date or, if the date is not yet available, the month.
When do you expect to publish the swagger? Please provide date or, the the date is not yet available, the month.
If updating an existing version, please select the specific langauge SDKs and CLIs that must be refreshed after the swagger is published.

[ ] SDK of .NET (need service team to ensure code readiness)
[ ] SDK of Python
[ ] SDK of Java
[ ] SDK of Js
[ ] SDK of Go
[ ] PowerShell
[ ] CLI
[ ] Terraform
[ ] No refresh required for updates in this PR

Contribution checklist:

[ ] I commit to follow the Breaking Change Policy of "no breaking changes"
[ ] I have reviewed the documentation for the workflow.
[ ] Validation tools were run on swagger spec(s) and errors have all been fixed in this PR. How to fix?

If any further question about AME onboarding or validation tools, please view the FAQ.
ARM API Review Checklist

Applicability: :warning:
If your changes encompass only the following scenarios, you should SKIP this section, as these scenarios do not require ARM review.

Change to data plane APIs
Adding new properties
All removals

Otherwise your PR may be subject to ARM review requirements. Complete the following:

[ ] Check this box if any of the following apply to the PR so that label “WaitForARMFeedback” will be added automatically to begin ARM API Review. Failure to comply may result in delays to the manifest.

Adding a new service
Adding new API(s)
Adding a new API version
-[ ] To review changes efficiently, ensure you copy the existing version into the new directory structure for first commit and then push new changes, including version updates, in separate commits.

[ ] Ensure you've reviewed following guidelines including ARM resource provider contract and REST guidelines. Estimated time (4 hours). This is required before you can request review from ARM API Review board.

[ ] If you are blocked on ARM review and want to get the PR merged with urgency, please get the ARM oncall for reviews (RP Manifest Approvers team under Azure Resource Manager service) from IcM and reach out to them.

Breaking Change Review Checklist
If any of the following scenarios apply to the PR, request approval from the Breaking Change Review Board as defined in the Breaking Change Policy.

[ ] Removing API(s) in a stable version
[ ] Removing properties in a stable version
[ ] Removing API version(s) in a stable version
[ ] Updating API in a stable or public preview version with Breaking Change Validation errors
[ ] Updating API(s) in public preview over 1 year (refer to Retirement of Previews)

Action: to initiate an evaluation of the breaking change, create a new intake using the template for breaking changes. Addition details on the process and office hours are on the Breaking change Wiki.
Please follow the link to find more details on PR review process.

The changes I'm trying to do are in response to an S360 Alert that was triggered for the swagger.
One of the required checks that failed is "Swagger BreakingChange". I just add a "description" field to the new version, there aren't users that used it yet.

@weidongxu-microsoft
Can you add Jeffrey to this conversation?

Label added.

Hey Jeffry,
Can we get an exception to this PR?
I just add a "description" field to the new version, there aren't users that used it yet.

Hey @weidongxu-microsoft,
How do I proceed from here?

Follow https://github.com/Azure/azure-rest-api-specs/pull/15634#issuecomment-900005118

Please comment if you want to merge

Please comment if you want to merge

yes, please merge


Light2D inside Light Occluder lights it up

Godot version:

3.2.3 Stable Official
OS/device including version:

Windows 10, RTX 2070, for both GLES2 and GLES3
Issue description:

Light Occluders light up when there's a Light2D inside of it. It should stay in shadows since it's a closed shape, or have an option to disable it while inside an occluder shape.
Steps to reproduce:

Create a Tilemap
Create a tileset and a tile that has a light occlusion shape
Create a Light2D and put it inside the tile
Tile will light up

Minimal reproduction project:

hidden_tilemap_light_occlusion.zip

This may be intentionally used in some existing projects, so I wouldn't change the default behavior.
Consider opening a proposal if you still need this in a project.


fix types for fetching bot data

[!WARNING]
This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
Learn more

#47  👈
#46
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @techwithanirudh and the rest of your teammates on  Graphite


Added catch all to allow custom options for factorio

Closes #167

Why don't they use their config!

do you mean? server-settings.json
I prefer commands instead of config files, because i think files should only store private information and commands can be configured more easily.
And why shouldn't we support it?

We can support it. I just don't understand why they put some things on command line and others in config.


Document more methods of HfFileSystem

https://huggingface.co/docs/huggingface_hub/package_reference/hf_file_system does not contain doc for rm, find, glob, etc

Which methods should all be documented? I assume it would be the following:

__init__(self, *args, endpoint=None, token=None, **storage_options)
resolve_path(self, path, revision=None)
invalidate_cache(self, path=None)
rm(self, path, recursive=False, maxdepth=None, revision=None, **kwargs)
ls(self, path, detail=True, refresh=False, revision=None, **kwargs)
glob(self, path, **kwargs)
find(self, path, maxdepth=None, withdirs=False, detail=False, refresh=False, revision=None, **kwargs)
cp_file(self, path1, path2, revision=None, **kwargs)
modified(self, path, **kwargs)
info(self, path, refresh=False, revision=None, **kwargs)
exists(self, path, **kwargs)
isdir(self, path)
isfile(self, path)
url(self, path)
get_file(self, rpath, lpath, callback=_DEFAULT_CALLBACK, outfile=None, **kwargs)

Hi @lappemic, how did you find this list? It would be more or less this yes.
To be honest I would like to find a way to (semi-)automate the process and avoid maintaining the documentation manually. For most methods we would just need fsspec's docs but in some cases we will want to complete it with an additional paragraph (e.g. in document in get_file that it's more optimized than reading chunks).
Solutions I imagine:

list supported methods in a markdown-like file. For each method, redirect to fsspec docs + add a sentence or two to explain the specificities of HffileSystem. Pro: easy to maintain/no complex logic. Cons: search bar would not index all specs/extra clicks needed on user's side.
have a script to automatically generate docs based on fsspec + custom explanations. Pro: all info would be in our docs dircetly. Cons: more logic to maintain.

@severo @lhoestq @lappemic any opinion about this? Maybe we can start with 1., at least to have an idea of what we want and then think about 2. if we really need to. I'm open to other suggestions as well.

Hi @lappemic, how did you find this list? It would be more or less this yes.

It was just condensed from the fsspec docs.
Regarding the solution: same as @severo: Having something is better than nothing. If at some point there is need for a more sophisticated solution, it can still be implemented.

Absolutely! Will open one in the beginning of next week.

Hey @Wauplin here is a Proposal before first PR:

Using a python file which could be called and updates the hf_file_system.md file
This file would fetch all methods of the HfFileSystem, redirect to its corresponding fsspec docs (if available) and include the docstring of its function in hf_file_system.py (if available)

e.g. update_hf_file_system.py:
import inspect
from huggingface_hub import HfFileSystem
import fsspec

def update_hf_file_system_methods_doc():
    methods = inspect.getmembers(HfFileSystem, predicate=inspect.isfunction)

    with open('home/to/be/defined/hf_file_system_methods.md', 'w') as f:
        f.write("# Filesystem API\n")
        f.write("The `HfFileSystem` class provides a pythonic file interface to the Hugging Face Hub based on [`fsspec`](https://filesystem-spec.readthedocs.io/en/latest/).\n")
        f.write("## HfFileSystem\n")
        f.write("`HfFileSystem` is based on [fsspec](https://filesystem-spec.readthedocs.io/en/latest/), so it is compatible with most of the APIs that it offers. For more details, check out [our guide](../guides/hf_file_system) and fsspec's [API Reference](https://filesystem-spec.readthedocs.io/en/latest/api.html#fsspec.spec.AbstractFileSystem).\n\n")

        for name, method in methods:
            if name.startswith('_'):
                continue

            f.write(f"- {name}\n\n")

            # Get fsspec documentation link
            fsspec_method = getattr(fsspec.spec.AbstractFileSystem, name, None)
            if fsspec_method:
                f.write(f"[fsspec documentation for {name}](https://filesystem-spec.readthedocs.io/en/latest/api.html#fsspec.spec.AbstractFileSystem.{name})\n")

                # Add HuggingFace-specific note if it exists
                hf_doc = method.__doc__
                # Check if fsspec_method.__doc__ is not None before stripping and comparing
                if hf_doc and fsspec_method.__doc__ and hf_doc.strip() != fsspec_method.__doc__.strip():
                    f.write(f"**HuggingFace Note:** {hf_doc.strip()}\n\n")

            # Handle cases where the method is not in fsspec.spec.AbstractFileSystem
            else:
                hf_doc = method.__doc__
                if hf_doc:
                    f.write(f"**HuggingFace Documentation:** {hf_doc.strip()}\n\n")

            f.write("\n")

if __name__ == "__main__":
    update_hf_file_system_methods_doc()

This would lead to the following hf_file_system.md:
# Filesystem API
The `HfFileSystem` class provides a pythonic file interface to the Hugging Face Hub based on [`fsspec`](https://filesystem-spec.readthedocs.io/en/latest/).
## HfFileSystem
`HfFileSystem` is based on [fsspec](https://filesystem-spec.readthedocs.io/en/latest/), so it is compatible with most of the APIs that it offers. For more details, check out [our guide](../guides/hf_file_system) and fsspec's [API Reference](https://filesystem-spec.readthedocs.io/en/latest/api.html#fsspec.spec.AbstractFileSystem).

- cat

[fsspec documentation for cat](https://filesystem-spec.readthedocs.io/en/latest/api.html#fsspec.spec.AbstractFileSystem.cat)

- cat_file

[fsspec documentation for cat_file](https://filesystem-spec.readthedocs.io/en/latest/api.html#fsspec.spec.AbstractFileSystem.cat_file)

...

- get_file

[fsspec documentation for get_file](https://filesystem-spec.readthedocs.io/en/latest/api.html#fsspec.spec.AbstractFileSystem.get_file)
**HuggingFace Note:** Copy single remote file to local.

...

If this would be a viable solution:

I realised just 3 of the HfFileSystem methods have actually a docstring (get_file, ls and url)- I guess we would have to update the remaining ones as well?
Where would the update_hf_file_system.py live? I assume we would have to put it in ./utils?

Looking forward to your feedack and what you think on how to proceed!
Cc: @severo

Hi @lappemic, thanks for looking into it!
A question I'm wondering is when it's the most suitable way of doing it. The problem with having a script to generate the markdown is that we loose the nice rendering from the HF doc builder. Here is for example how it looks like for a properly documented method:

What we could do to counter that is to add the docstring to the method directly when defining the class in Python. You can do that by appending this snippet:
for name, function in inspect.getmembers(HfFileSystem, predicate=inspect.isfunction):
    parent = getattr(fsspec.AbstractFileSystem, name, None)
    if parent is not None and parent.__doc__ is not None:
        function.__doc__ = (
            "\n_Docstring taken from "
            f"[fsspec documentation](https://filesystem-spec.readthedocs.io/en/latest/api.html#fsspec.spec.AbstractFileSystem.{name})_"
        ) + "\n\n" + parent.__doc__

at the very bottom of hf_file_system.py. I quickly tried it and it takes ~0.2ms to execute so the extra overhead when importing the class is neglectable.

Once you have this, the doc-builder should automatically detect the methods with a docstring and format them in the official docs. This is happening in this file that gets generated here. All you need to do is to replace
[[autodoc]] HfFileSystem
    - __init__
    - resolve_path
    - ls

by
[[autodoc]] HfFileSystem
    - __init__
    - all

to tell the doc-builder to take all possible methods for you (now that they have a docstring).
I quickly checked and it looks like cp_file and resolve_path are the two only methods that don't end up with a docstring. Since we are defining them in huggingface_hub, it's a matter of adding a docstring to them.

Thanks a lot for the detailed feedback @Wauplin!
This makes a lot of sense on the first glance! I will try to implement this asap (probably beginning of next week).

Thanks! Have a great weekend in the meantime :hugs:


Creating fsspec mapper from ReferenceFileSystem using templates is slow

Hello,
I recently added the ability to create ReferenceFileSystem JSON files for TIFF files to the tifffile library.
I noticed that using fsspec.get_mapper with ReferenceFileSystem version 1 and templates is much slower than version 0 without templates. For the moderately sized file in below example, the difference is a few seconds. For files containing millions of chunks the time to read version 1 files with templates is minutes. Am I missing something?
Related to the efficiency of ReferenceFileSystem: the JSON files can get very large, more than 2 GB in some cases. Maybe a binary/database format (sqlite?) or a git repro/bundle could be more efficient than JSON?

For the speed of loading, there are certainly things that can be done, see https://github.com/intake/filesystem_spec/pull/611 .
The majority of the time for V1 is taken up by jinja2, which is a bit of a disappointment. I don't know enough about jinja to know how you can get >>10x speedups from such a simple template rendering.
On the file size: this was anticipated, and there is already discussion of the best binary format that we could use. I am thinking, because of the most likely usecase for these reference sets, is to store them using zarr itself - enabling chunking and parallel load. This will work very well for the integers and moderately well for the strings.
A move to support binary  could be coupled with a dataframe or xarray in-memory representation (the labels being the reference keys). Then we could choose various data formats like parquet, but would of course need many more deps.
Side note: I see that zarr/numcodec's VLenBytes encodes as size-string-size-string-... , which is far less efficient than size-size-...-string-string-... . Parquet also uses the former is almost all settings, but the latter is available.

I can confirm that parquet or zarr are fine storage options for this kind of data. I will implement methods in the existing code to choose how to output the dict-like references, and also make ReferenceFileSystem be able to read all three: json, parquet, zarr. For the latter two, the data will be held in memory as a dataframe, which should be a good deal more memory efficient and maybe faster at lookups. Later, I can address lazy loading of chunks, should it seem necessary.
cc @rabernat , you should find that idea appealing.

I think the current implementation, along with the non-json storage options solves this. We might optionally pick another json library (ujson or orjson) if that makes a difference.


Cannot read properties of undefined (reading 'opcode')

https://scratch.mit.edu/projects/1025698237/
I was trying to run this project on the website and in NodeJS. However, I keep receiving this error. The only extension it uses is pen and it runs on Scratch 3.0.

Thanks for reporting this! We've looked into the things that kept this project from loading and have figured out fixes in pull requests #145 and #146. Once those are both merged, the project should load correctly.
Unfortunately, it doesn't seem to be totally operational. The project runs and the HTML parser appears to be working correctly (probably?) but nothing ends up showing on the screen, except for the grey background. I don't know for sure, but I think the most likely cause is the pen text engine may be using special-characters in its costumes that sb-edit and Leopard don't handle super nicely yet. We are tracking this in #140 but haven't coded a fix yet. If you could write a simple script that tests the behavior of PixelMplus on its own, and doesn't interact with any other modules in your code, that would probably help tell for sure if the text engine is having trouble or if it's something else. (It could be both... But one thing at a time, with debugging... ^^;)


[Bug] Bad Performance and Slow Loading Times

Before Reporting

[X] I found no existing issues matching my bug
[X] My issue is not caused by a plugin or theme

Describe the Bug
When I installed Better Discord, the loading times and overall performance for my client had gotten slower than without BD installed. I looked into Task manager, and my CPU, Memory and GPU Utilization was at normal. I've even closed other programs in my OS, then set Discord.exe to high priority, and I still hadn't found improvement.
Expected Behavior
I expected that the performance and loading times would stay relatively the same between normal and BD Discord. In general, my browsing engines do not have long loading times, so I don't believe that my internet or RAM is the issue.
Steps To Reproduce

Open Discord
Change to any channel or server (The loading times worsen when changing to a channel/server with large amounts of uploaded files or .gif)

Operating System
Windows
Discord Version
Stable
BetterDiscord Version
v.1.9.3
Anything else?
Here are my specs:
CPU: i5-3570k
GPU: GTX 1070 Ti
RAM: 16GB RAM
OS Hard Drive: SSD
If you need any more information, please let me know.

I would try cleaning out your Discord folders and reinstalling Discord first.

Might be too late but I have the same issue

This is unfortunately very vague and unclear what is happening. I would recommend you use the most recent 64 bit clients if possible. I've personally found that Canary generally has better performance.


Windows CI

Note: this should probably be reviewed together with https://github.com/mfem/mfem/pull/2973

@adrienbernede, can you take another look?

Thanks @kanye-quest !


Missing OLE DB Driver requirement for Snapshot Agent to work

Important missing requirement for Snapshot Agent to work is that you need to download and install Microsoft OLE DB Driver for SQL Server if you don't already have it.
Download it from here: https://learn.microsoft.com/en-us/sql/connect/oledb/download-oledb-driver-for-sql-server?view=sql-server-ver15
You will after installing the OLE DB driver find file msoledbsqlr.rll in directory C:\Windows\SysWOW64\1033. Add this folder as a Windows PATH Environment Variable, so it can be found by snapshot.exe.

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

ID: 0086945e-a60b-31ed-9445-160fed6ea1f1
Version Independent ID: 2dcdbf33-d5af-b766-dd5c-f477c8b441b7
Content: Tutorial: Configure Transactional Replication - SQL Server
Content Source: docs/relational-databases/replication/tutorial-replicating-data-between-continuously-connected-servers.md
Product: sql
Technology: replication
GitHub Login: @MashaMSFT
Microsoft Alias: mathoma

@colruby -- thank you for your clear feedback.
@MashaMSFT -- please look into this issue.

Hi @colruby , thanks for contacting Microsoft! This sounds like an atypical scenario as normally, this step is not necessary. If this issue persists, please reach out to Microsoft support or engage the community to further investigate this requirement in your environment. I'll go ahead and close out this Git Issue but please feel free to comment should you need anything further.
Thanks again for reaching out and I hope you have a wonderful rest of your day!
Masha from the SQL Docs team
#please-close


Implement GUI of the MTZ file reader for changing the grid spacing of FFT to arbitrary number.

The current impl allows user to change the grid spacing only by two options (i.e., fine=0.25 and coarse=0.33). In addition to them, new UI to give the grid spacing by number is required.

Impl completed.


Circular navigation

How do you like the idea of “circular navigation”? We can use the front page as an example:

And let's pretend that we can only navigate by numbers or cursor keys. If I want to select 7, I either have to move my hand to the 7 button or I have to press cursor down 6 times.
What if moving off the top took me to the bottom, and moving off the bottom took me to the top, as if the numbers were placed on a ring?
I.e., when I want to move from 1 to 7, I can simply press ↑ once and I get to keep my fingers on the arrow keys.

Ohhh, I love it! Things are much more fluid now. 💧
I am pushing out 0.1.4 with this change! Thank you as always!

Thank you!


The pretrained model of YOLOX_PAI couldn't be downloaded.

When I click the any 'model' of the YOLOX-PAI that you privide, nothing happened. But the ViTDnet and others all could be downloaded.

Copy the website to Chrome could help.


[spec, possibly code] Rejecting excessive decimal places on amount

From the spec:

If the number of decimal places exceed what's supported for SOL (9) or the SPL token (mint specific), the wallet must reject the URL as malformed.

I noticed that the official @solana/pay JavaScript SDK will not reject a URL with more than the maximum decimal places in amount. It's not obvious from the spec, although it is totally understandable - it's impossible to implement this without on-chain data (at least in the SPL token case). Perhaps the spec should emphasize that this validation, both when generating and reading URLs, is the client's responsibility?
Still, regardless of the spec, there's no way for a downstream user of @solana/pay to detect the number of decimal places provided in the URL and thus reject any which are malformed. The amount field of ParsedURL is encoded as a BigNumber. That's an arbitrary-precision numerical representation, so it's possible to detect excessive nonzero digits. But as a parsing concern, these two URLs are indistinguishable:
solana:mvines9iiHiQTysrwkJjGf2gb9Ex9jXJX8ns3qwf2kN?amount=123.012
solana:mvines9iiHiQTysrwkJjGf2gb9Ex9jXJX8ns3qwf2kN?amount=123.01200000000000000000000000000000000000000
It is a reasonable interpretation of the current spec to only consider nonzero digits, but considering that clients are required to validate the number of decimal places anyways, my opinion is that the second case should be explicitly forbidden.

Hmm it's a valid question.
I guess it depends on whether we consider a trailing zero to be a decimal place? And it also depends on what you mean by the client here, but the validation is always the responsibility of the wallet in this case.
We do check for decimal places (probably after trailing zeros are omitted) in the reference implementation, e.g. https://github.com/solana-labs/solana-pay/blob/fb40bfc0a3a43824a4657b3d2a0ba67d3867c09f/core/src/createTransaction.ts#L96
But since this is up to wallets, I expect they will usually be looser than the spec. And it's still an open question of whether we need to explicitly disallow trailing zeros.
How these will be handled is probably specific to whatever language/numeric library the wallet is using, so I'm not sure it makes sense to be very strict?

Anyway, I'd be fine with saying

Trailing zero decimals must not be used.

or whatever you think makes sense. My guess is that most wallets won't check for this, but while we're creating reference implementations, it would be good to be consistent, and a stricter spec will help us do that.

We do check for decimal places (probably after trailing zeros are omitted) in the reference implementation

Ah, I see now that it's in createTransaction - we've only been looking at parseURL so far, which still creates the parsed representation successfully. I think that all makes sense then.

Anyway, I'd be fine with saying

Trailing zero decimals must not be used.

or whatever you think makes sense. My guess is that most wallets won't check for this, but while we're creating reference implementations, it would be good to be consistent, and a stricter spec will help us do that.

Yes, I think that makes a lot of sense!


Specification Zwift UDP/TCP protocol

Hi,
is there a specification Zwift UDP/TCP protocol available? I want to implement this feature (monitor UDP data) with Delphi XP.
Best regards Hrad-n-Soft

both UDP and TCP data is simple protobufs
https://github.com/ursoft/zwift-offline/tree/master/protobuf


Getting user via sudo doesn't work

Trying to get a Gitlab user doesn't seems to work properly:
GitlabUser user = gitLabAPI.getUserViaSudo("test");
java.io.FileNotFoundException: https://gitlab.example.com/api/v4/user?sudo=test is thrown.
With curl it works properly even if the user doesn't exist:
curl --header "PRIVATE-TOKEN: XXXXXXXXXXXXXXXXX" https://gitlab.example.com/api/v4/user?sudo=test
{"message":"404 No user id or username for: test Not Found"}

Forgot to mention that I'm using a master built (recent pull) and my gitlab version is 9.3.
Also, worth to note that it breaks on parse@GiltHTTPRequestor line 394.


export track data as csv file

Well this ran quickly, I didn't even get to see what the problem was, but good luck!
Let me know, how it has been of use to you!

Thanks a lot. The problem had been solved : ). The new version 1.2.2 can
work for Blender v2.91.
It's a very useful tool for our research project, we track the eyelid's
movement in the different light intensities to explore how light affects
human's sleep.
Yanlong HOU
CRNL 69500 France
Simon Reichel<EMAIL_ADDRESS>于2021年2月18日周四 下午5:10写道：

Well this ran quickly, I didn't even get to see what the problem was, but
good luck!
Let me know, how it has been of use to you!
—
You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHub
https://github.com/Amudtogal/blenderMotionExport/issues/5#issuecomment-781454089,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AS4XC4FTWLUYFOZWKJMHVVDS7U3WFANCNFSM4X2J5AYQ
.

Ah great! Looking forward to seeing the results. Happy researching!


Can I use async in event handler?

I want to use it to add the async in the onClick handler. But the compiler wants a unit return type.

let onClick = async _evt => {
  open Fetch
  open Promise

  let url = "https://jsonplaceholder.typicode.com/todos/1"

  let res = await fetch(url)->then(Response.json)
}

...

<button onClick> {"get todos"->React.string} </button>

This has type: JsxEvent.Mouse.t => promise<unit>
Somewhere wanted: JsxEvent.Mouse.t => unit

The incompatible parts:
  promise<unit> vs unit

So, I tried to change the return type unit type to promise<unit> in the ReactDom file in my local node_modules.
https://github.com/rescript-lang/rescript-react/blob/78893fbe9a49bb39a470b7431415ef6529858332/src/ReactDOM.res#L451-L453
    /* Mouse events */
    @optional
    onClick: ReactEvent.Mouse.t => promise<unit>,

But, It complains still.
I thought a simple workaround was just using Obj.magic like
<button onClick={Obj.magic(onClick)}> {"get todos"->React.string} </button>

and, it worked.
Is there any good workaround for this situation?
Use async event handler is not good or just not dealt with binding?

I made workaround
type asyncMouseHandler<'a> = JsxEvent.Mouse.t => promise<'a>
type noramlMouseHandler = JsxEvent.Mouse.t => unit

external makeNoramlMouseHandler: asyncMouseHandler<'a> => noramlMouseHandler = "%identity"

...

<button onClick={onClick->makeNoramlMouseHandler}> {"get todos"->React.string} </button>

it worked... But look not so good...

maybe wrap ignore looks good.
<button onClick={_=>onClick()->ignore}> {"get todos"->React.string} </button>

maybe wrap ignore looks good.
<button onClick={_=>onClick()->ignore}> {"get todos"->React.string} </button>

Thanks! At that time, I didn't recognize 😅


[Skype SMBA] Encountered error when used Adaptive Cards

Pre-flight checklist

[ ] I posted a question about this issue on Stack Overflow using the tag botframework.
[ ] I have searched the existing issues before logging a new one.

System Information (Required)

SDK Pletform:  Node?
SDK Version:   3.8.3
Development Environment: localhost

Issue Description
when I want to send a message container a adaptive card attachment, It appeared a error:
Error: Request to 'https://smba.trafficmanager.net/apac-client-ss.msg/v3/conversations/a%3A1bDvKvzkBsuUKhMFE7AyNGF2L5sX6_CTpKZ1pdfw6hbd9MIj0mdtONhSzxx3x8KAH5yYh2xF-kZxT71Y4dCXkbPMaI8JhXEYoDwXjkj_1TO9k_fcq3A8f0TQ38Fr3Wex4/activities/1495005732722' failed: [400] Bad Request
at Request._callback (d:\git_code\swat_oa_bot\node_modules\botbuilder\lib\bots\ChatConnector.js:452:46)
at Request.self.callback (d:\git_code\swat_oa_bot\node_modules\request\request.js:188:22)
at emitTwo (events.js:106:13)
at Request.emit (events.js:191:7)
at Request. (d:\git_code\swat_oa_bot\node_modules\request\request.js:1171:10)
at emitOne (events.js:96:13)
at Request.emit (events.js:188:7)
at IncomingMessage. (d:\git_code\swat_oa_bot\node_modules\request\request.js:1091:12)
at IncomingMessage.g (events.js:292:16)
at emitNone (events.js:91:20)
at IncomingMessage.emit (events.js:185:7)
at endReadableNT (_stream_readable.js:974:12)
at _combinedTickCallback (internal/process/next_tick.js:74:11)
at process._tickDomainCallback (internal/process/next_tick.js:122:9)
Example Code
bot.dialog('/', [
function (session, args) {
var msg = new builder.Message(session)
.addAttachment({
contentType: "application/vnd.microsoft.card.adaptive",
content: {
type: "AdaptiveCard",
body: [
{
"type": "TextBlock",
"text": "Adaptive Card design session",
"size": "large",
"weight": "bolder"
},
{
"type": "TextBlock",
"text": "Conf Room 112/3377 (10)"
},
{
"type": "TextBlock",
"text": "12:30 PM - 1:30 PM"
}
],
"actions": [
{
"type": "Action.Http",
"method": "POST",
"url": "http://foo.com",
"title": "Snooze"
}
]
}
});
session.send(msg);
}
]);
Expected Behavior
What you expected to happen.
Actual Results
What actually happened. Please give examples and support it with screenshots, copied output or error messages.

Unfortunately Skype apps don't yet support Adaptive cards - we're working on them for a future release.

ok.. thanks for you answer. But I have tried to use in ms teams, it is the same error above.

@nickcordrey
ok.. thanks for your answer. But I have tried to use in ms teams, it is the same error above.

MS Teams also does not support adaptive cards yet.

ok, I got it. I want to confirm that:

when ms teams support adaptive cards?
which channel support adaptive cards?

thanks!

@nwhitmont
ok, I got it, thanks for help. I want to confirm that:
1.when ms teams support adaptive cards?
2.which channel support adaptive cards?
thanks!

Recently Microsoft introduced Bot Framework Adaptive Cards. I want to know this is in preview stage or implemented.
Which channel supports Bot Framework Adaptive Cards like Skype,Facebook,Microsoft Teams,kik,Slack,Telegram.

@lweibin and @RaoVenka Please see answer here https://github.com/Microsoft/BotBuilder/issues/2803


PXP-503: [CLI] Implement the url-mode flag

Summary

Ticket: PXP-503
What's Changed

Added

[x] add url-mode flag for wukong application logs command

[APPROVALNOTIFIER] This PR is NOT APPROVED
This pull-request has been approved by: jk-gan
The full list of commands accepted by this bot can be found here.

Needs approval from an approver in each of these files:

OWNERS

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

[APPROVALNOTIFIER] This PR is NOT APPROVED
This pull-request has been approved by: jk-gan, onimsha
The full list of commands accepted by this bot can be found here.

Needs approval from an approver in each of these files:

OWNERS

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment


Menu Filter Icon

Hi Ceolter,
I am currently using this feature in my application. It enables user to use menu button as an indicator for filtering. I hope you like this feature too!
SDQ

hi SoftwareDevQ, thanks for the PR. i had a look and it looks good. i can't accept it though, as i'm going to 'vamp up' the menu soon, to make it more than just filtering. when this is done, then maybe another option for 'filter only' menu - combining the filter icon and the menu icon (the filter menu).
by the way, i've moved over the typescript, so when you rebase your going to get conflicts, the type which you don't be able to merge easily :(


chore: add 10.x nestjs peer dependencies

Thanks for the work you've done!
I have tested with NestJS 10 version, add peer dependencies.
All seems to work fine, no problems detected

Thank you for the PR!

@kazu728 can you publish a latest version to npm ? thank you :pray:


Capacity unstake changes for Staking Rewards

Story
As an AccountId holder who is Staking, if I am Staking for Rewards / Provider Boost, I will need my unclaimed rewards to be paid out first, otherwise there is no way to get them.
Solution
Some of this logic is still TBD - this is a first pass.
I.  If StakingType is RewardsType
    A. If payout_eligible,
        i.  check whether their last payout era is recent enough to pay out all rewards at once.
        ii.  if so,
              a. pay out all rewards
              b. then continue with rest of unstaking code as is
        iii. if not, emit error "MustFirstClaimUnclaimedRewards", "UnclaimedRewardsOverTooManyEras"
             or something like that
    B.  If not payout eligible,
         i. check whether the last payout era is the current one.
         ii. if so, all rewards have been claimed, so continue with rest of unstaking code as is,
         iii. otherwise, they have too many unlocking chunks so they'll have to wait. - the
              unstaking code will catch this anyway and emit `MaxUnlockingChunksExceeded`
II. Otherwise continue as before

Blocked by

Staking Rewards-related structs, storage, Enums, Errors
Reward pool logic #1566
Rewards claiming functionality #1571

I'm closing this because my duplicated version (whoops) is written better.


Error run fastapi-mqtt using gunicorn

First Check

[X] I added a very descriptive title to this issue.
[X] I used the GitHub search to find a similar issue and didn't find it.
[X] I searched the FastAPI documentation, with the integrated search.
[X] I already searched in Google "How to X in FastAPI" and didn't find any information.
[X] I already read and followed all the tutorial in the docs and didn't find an answer.
[X] I already checked if it is not related to FastAPI but to Pydantic.
[X] I already checked if it is not related to FastAPI but to Swagger UI.
[X] I already checked if it is not related to FastAPI but to ReDoc.

Commit to Help

[X] I commit to help with one of those options 👆

Example Code
from fastapi_mqtt.fastmqtt import FastMQTT
from fastapi import FastAPI
from fastapi_mqtt.config import MQQTConfig

mqtt_config = MQQTConfig()

fast_mqtt = FastMQTT(
    config=mqtt_config
)

app = FastAPI()

fast_mqtt.init_app(app)

@fast_mqtt.on_connect()
def connect(client, flags, rc, properties):
    fast_mqtt.client.subscribe("/mqtt") #subscribing mqtt topic
    print("Connected: ", client, flags, rc, properties)

@fast_mqtt.subscribe("mqtt/+/temperature", "mqtt/+/humidity")
async def home_message(client, topic, payload, qos, properties):
    print("temperature/humidity: ", topic, payload.decode(), qos, properties)
    return 0

@fast_mqtt.on_message()
async def message(client, topic, payload, qos, properties):
    print("Received message: ",topic, payload.decode(), qos, properties)
    return 0

@fast_mqtt.on_disconnect()
def disconnect(client, packet, exc=None):
    print("Disconnected")

@fast_mqtt.on_subscribe()
def subscribe(client, mid, qos, properties):
    print("subscribed", client, mid, qos, properties)

@app.get("/")
async def func():
    fast_mqtt.publish("/mqtt", "Hello from Fastapi") #publishing mqtt topic

    return {"result": True,"message":"Published" }

Description
I use fastapi-mqtt==0.3.0, python==3.9.7, fastapi==0.68.1
I run example application in fastapi-mqtt: https://github.com/sabuhish/fastapi-mqtt/blob/master/examples/app.py
When I run the app using uvicorn : uvicorn app:app --host <IP_ADDRESS> --port 7000 --reload
Everything is ok -> app run
But:
I run example application using command :
gunicorn app:app -k uvicorn.workers.UvicornWorker --workers=9 -b <IP_ADDRESS>:7000
Error :
File "/home/hoanganh/smarthome-server/venv/lib/python3.9/site-packages/gmqtt/client.py", line 230, in connect
await self._connected.wait()
File "/usr/lib/python3.9/asyncio/locks.py", line 226, in wait
await fut
RuntimeError: Task <Task pending name='Task-3' coro=<LifespanOn.main() running at /home/hoanganh/smarthome-server/venv/lib/python3.9/site-packages/uvicorn/lifespan/on.py:84>> got Future attached to a different loop
[2021-09-21 20:42:13 +0700] [10419] [ERROR] Application startup failed. Exiting.
[2021-09-21 20:42:13 +0700] [10419] [INFO] Worker exiting (pid: 10419)
Task was destroyed but it is pending!
task: <Task pending name='Task-1' coro=<Client._resend_qos_messages() running at /home/hoanganh/smarthome-server/venv/lib/python3.9/site-packages/gmqtt/client.py:176>>
sys:1: RuntimeWarning: coroutine 'Client._resend_qos_messages' was never awaited
[2021-09-21 20:42:14 +0700] [10418] [INFO] Shutting down: Master
[2021-09-21 20:42:14 +0700] [10418] [INFO] Reason: Worker failed to boot.
Operating System
Linux
Operating System Details
No response
FastAPI Version
0.68.1
Python Version
3.9.7
Additional Context
No response

This is both gmqtt and fastapi-mqtt fault. It's the same issue we have with motor.
Step by step:

The example initializes FastMQTT.
On FastMQTT, they initialize the MQTTClient.
MQTTClient is a class that inherits some other classes on the gmqtt project, and one of those classes is EventCallback.
EventCallback runs asyncio.Event().
asyncio.Event() tries to get the current event loop internally and then the event is created on this event loop.
gunicorn runs and uvicorn creates its own event loop.
MQTTClient runs await self._connected.wait() at some point, and this is operation runs on a different loop than the one uvicorn created.

In any case, possible solutions:

Add FastMQTT initialization on a startup event.
Ask for the fastapi-mqtt maintainer to change the place where 2 is done (it should be on their startup event).

@Kludex I tcreated start.sh:
#!/bin/bash
Start Gunicorn processes
echo Starting Gunicorn.
exec gunicorn --reload server:app   -k uvicorn.workers.UvicornWorker  --bind <IP_ADDRESS>:8000 --workers=9
And created run.py:
import subprocess
if name == 'main':
subprocess.call(['sh', './start.sh'])
But it 's failed


Update scalafmt-core to 3.0.6

Updates org.scalameta:scalafmt-core from 3.0.5 to 3.0.6.
GitHub Release Notes - Version Diff
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

Ignore future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "org.scalameta", artifactId = "scalafmt-core" } ]

labels: library-update, semver-patch

Codecov Report

Merging #262 (13f030c) into master (b9f5e3b) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master     #262   +/-   ##
=======================================
  Coverage   95.31%   95.31%
=======================================
  Files           6        6
  Lines          64       64
=======================================
  Hits           61       61
  Misses          3        3

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 b9f5e3b...13f030c. Read the comment docs.


Fix data migration generator

the api had changed in Rails 4.
In rails/rails@9541434 a new method create_migration had been added to the
Rails::Generators::Migration module which this uses. That new method
clashed with out one, so we just need to rename it.

:+1:
The addition of the string interpolation around file_name can be traced to here: https://github.com/rails/rails/blob/master/railties/lib/rails/generators/named_base.rb#L157-L161


Flatten predicate failures

Recent simplification that was introduced in input-output-hk/cardano-ledger-specs#2374 requires this minor fixup.

Ah, the CI failure is due to the cabal.project update. I recently faced this on a local branch.
There are other alterations that cardano-ledger-specs made to their cabal.project in order to accommodate plutus that your commit upgrade means that our cabal.project needs to also do.
Here's the diff from my local commit -- I think it'll work for you, but please review it and then add it to this PR. All the new lines in this diff were copy-pasted from the cardano-ledger-specs cabal.project file -- except I did fixup the wording in one of the comments (it was wording that would make sense in the Plutus repo but was copy-pasted to c-l-s without rephrasing).
Thanks.
diff --git a/cabal.project b/cabal.project
index 1e751eef6..6ccc7f255 100644
--- a/cabal.project
+++ b/cabal.project
@@ -152,8 +152,17 @@ package prettyprinter-configurable

 allow-newer:
   monoidal-containers:aeson,
-  size-based:template-haskell
+  size-based:template-haskell,

+  -- TODO: This is only needed until index-state is updated to 2021-02-17 or later.
+  test-framework:random,
+  test-framework-quickcheck2:random
+
+constraints:
+  -- bizarre issue: in earlier versions they define their own 'GEq', in newer
+  -- ones they reuse the one from 'some', but there isn't e.g. a proper version
+  -- constraint from dependent-sum-template (which is the library we actually use).
+  , dependent-sum > <IP_ADDRESS>

 -- ---------------------------------------------------------
 -- The "cabal" wrapper script provided by nix-shell will cut off / restore the remainder of this file
@@ -199,8 +208,8 @@ source-repository-package
 source-repository-package
   type: git
   location: https://github.com/input-output-hk/cardano-ledger-specs
-  tag: ec9c77edbf5700a4b2ece8f97a1e313df06abc97
-  --sha256: 1ia8x9dnw36y0xazg7xg263ax9mamw9w4sg460cmibj3wv49im4w
+  tag: 08d7780655509d5cee33d7c73016a40c19b3635c
+  --sha256: 1lnf7fdb1c7ysric1jj3w29h7svr4fzw2c9xkqsdvj7lvgs3xi59
   subdir:
     alonzo/impl
     alonzo/test
@@ -222,13 +231,14 @@ source-repository-package
 source-repository-package
   type: git
   location: https://github.com/input-output-hk/plutus
-  tag: c89e13e66c5bef628a1f7ea3a3732951be8be8ba
-  --sha256: 0hdck39i4yv656phxjy5ppqgzrq7x3q4b5rf8vj7hrzcs0aggl8r
+  tag: c5288007b091760631764e860ad3bf7e4933f932
+  --sha256: 13incb43h8vb6vpc97wkzhj1iimisf7vsa6dvm1qgx3kla0b90a1
   subdir:
     plutus-ledger-api
     plutus-tx
     plutus-core
     prettyprinter-configurable
+    word-array

 source-repository-package
   type: git
@@ -241,3 +251,11 @@ source-repository-package
   location: https://github.com/input-output-hk/cardano-crypto
   tag: f73079303f663e028288f9f4a9e08bcca39a923e
   --sha256: 1n87i15x54s0cjkh3nsxs4r1x016cdw1fypwmr68936n3xxsjn6q
+
+-- Drops an instance breaking the Plutus code. Should be released to Hackage
+-- eventually.
+source-repository-package
+  type: git
+  location: https://github.com/Quid2/flat.git
+  tag: 95e5d7488451e43062ca84d5376b3adcc465f1cd
+  --sha256: 06l31x3y93rjpryvlxnpsyq2zyxvb0z6lik6yq2fvh36i5zwvwa3

@nfrisby Thank you. I applied the diff.

Looks like block serialization for Alonzo has changed, golden tests are failing. I'll give it a shot and try to figure what has changed.

@nfrisby While debugging golden test failures @redxaxder suggested to print diff as a CBOR tree using Codec.CBOR.Term, rather than as a flat term structure. After implementing this change it proved to be very helpful in figuring out where the discrepancy is coming from. Two other minor things I thought might be good things to add:

print ByteStrings as a list of 64bit hex words with the total size. Could be helpful in blob diffs
enabled unicode support for test suite. New diff has tuples and toExpr prints a funky x character for tuples.

Here is a comparison of test failure with improvements in this PR on the left and before this PR on the right:

The actual golden test failure seems to be coming from different binary representation of Plutus scripts. I'll confirm it in a bit and accept new binary version for failing golden tests, since that should be acceptable for Alonzo, right?

I was able to confirm that all test failures where due to change in PlutusScript serialization in plutus, thus new version of golden tests where accepted.

Belated: welcome to the team, Alexey!

Thank you :smiley:

This is your first Consensus PR, which means it's the first time you're asked to follow our style.

Cool, I didn't realize the style was formalized in a document. I tried to infer the style and follow it by example, but now since I know about the document I'll try my best to adhere to it in the future. Please, let me know if I miss anything, I am just very much used to not think about style too much since I usually rely on automatic formatters (i.e. hindent, ormolu...) FYI there was a couple of broken links in the StyleGuide, because the syntax for markdown reference style links was either incorrect or maybe github just doesn't know about it. Fixed it in https://github.com/input-output-hk/ouroboros-network/pull/3268/commits/100dbb2e371d250245b214ec2ec7dbc7db7778a7

bors merge


models during enumeration omitted

The following program run with queens.aspif.gz sometimes omits models. Unfortunately, it's a bit hard to reproduce. It happens quite frequently in my Ubuntu 20.04 virtual machine with 2 cores. I managed to trigger the problem using between 3 and 64 threads. The higher the number of threads the higher the chance that solutions are omitted.
I'll try to dig a bit deeper. Just wanted to put the example somewhere safe.
#include <clasp/clasp_facade.h>
#include <clasp/solver.h>

#include <iostream>
#include <fstream>

int main() {
	while (true) {
		Clasp::ClaspConfig config;
		config.solve.numModels = 0;
		config.solve.setSolvers(64);
		Clasp::ClaspFacade libclasp;

		std::ifstream input("queens.aspif");
		libclasp.start(config, input);

		size_t num_models[] = { 1, 0, 0, 2, 10, 4, 40, 92, 352, 724 };
		for (size_t i = 0; libclasp.read(); ++i) {
			libclasp.prepare();
			libclasp.solve();
			size_t n = libclasp.summary().numEnum;
			if (num_models[i] != n) {
				std::cerr
					<< "error expected " << num_models[i]
					<< " models in call " << (i + 1)
					<< " but got " << n << std::endl;
			}
			assert(num_models[i] == n);
		}
	}
}

The problem seems to be somehow related to splitting. For example, competition + recording works. Splitting with either backtracking or recording fails randomly. This happens in configs using splitting right from the start or ones that switch from competition to splitting for enumeration. One gets relatively short failing runs using
#include <clasp/clasp_facade.h>
#include <clasp/solver.h>

#include <iostream>
#include <fstream>

int main() {
    while (true) {
        Clasp::ClaspConfig config;
        config.solve.enumMode = Clasp::EnumOptions::enum_record;
        config.solve.numModels = 0;
        config.solve.setSolvers(4);
        config.solve.algorithm.mode = Clasp::mt::ParallelSolveOptions::Algorithm::mode_split;
        Clasp::ClaspFacade libclasp;

        std::ifstream input("queens.aspif");
        libclasp.start(config, input);

        size_t num_models[] = { 1, 0, 0, 2, 10, 4, 40, 92, 352, 724 };
        for (size_t i = 0; libclasp.read() && i < 6; ++i) {
            libclasp.prepare();
            for (size_t j = 0; j < 1; ++j) {
                libclasp.solve();
                size_t n = libclasp.summary().numEnum;
                if (num_models[i] != n) {
                    std::cerr
                        << "error expected " << num_models[i]
                        << " models in call " << (i + 1)
                        << " but got " << n << std::endl;
                }
                assert(num_models[i] == n);
            }
        }
    }
}

I added a few tracing commands and it seems like there is a terminate event send even though there are still solvers not having exhausted their search:
  thread[1]: basic solve!!!
  thread[1]: splitting work from solver!
  thread[1]: split off/continuing to work on:  123 87 ~5 ~38 ~18 ~4 6 39/~39
  thread[0]: got work of size:  123 87 ~5 ~38 ~18 ~4 6 39
  thread[1]: finished with result false
  thread[3]: no work left
  thread[1]: no work left
  thread[0]: got a terminate event
  thread[4]: stopping
  thread[2]: splitting work from solver!
  thread[2]: split off/continuing to work on:  123 87 ~5 ~38 ~18 ~58 ~4 ~6 ~2 ~17 20/~20
  thread[2]: got a terminate event
  thread[2]: finished with result false

Let's see if I can find the reason. :smile:

@rkaminsk Thanks for looking into this. Unfortunately, I don't have time this and next week to investigate further :(
But I'll look into this asap.

@rkaminsk Thanks for looking into this. Unfortunately, I don't have time this and next week to investigate further :( But I'll look into this asap.

No worries. I'll continue looking a bit. And post here if I find something.

Many thanks for you help. Hopefully fixed in https://github.com/potassco/clasp/tree/dev


The QED \square isn't placed properly

See e.g. tag 02M4, or 0BEL, and probably many many others. Should be easy to fix, it's pure CSS.

This is resolved by commit d1b36a4 together with commit 35d00d9 on the plastex repository.


[Feature] support simple cursor operations

Background
One of the frequently asked features of Pinot is the ability to retrieve the query result in small batches. For example,

users may perform resource-intense computations on the result on a row-by-row base; and materializing the entire result set in memory is wasteful.
support for some other systems like sql-alchemy (in https://github.com/python-pinot-dbapi/pinot-dbapi/) requires an engine to implement fetch-one and fetch-many (which are considered cursor operations)

Challenge
currently, Pinot executes these subset-of-result executions via the 2 argument limit clause; for example
SELECT * FROM myTbl limit 200,100

returns 100 rows of the SQL result, starting from the 200th row.
This poses a problem

it doesn't guarantee that the results are stable as the underlying data could've changed / or early termination of the limit kicks in and we have no idea which server returns the result set first.
it does the entire query execution again for each subset, e.g. limit 0, 100 then limit 100, 100 doesn't retain the previous execution result.

Proposal
Support a simple cursor operation by enabling data caching in Pinot broker before serving back to the users.

Return results with the cursor-support turned on should associate the result with the requestID being executed.
Subsequence cursor operation can reuse the same requestID to seek for the next subset.
Pinot broker caches the cursor result set until it times out.

Alternative Solution(s)?
Please comment below for any additional alternative solution

As discussed, I will taking a shot at this.
@Jackie-Jiang Any thoughts/inputs to share, please?

I gave a comment regarding this on a related issue - https://github.com/apache/pinot/issues/5246
PTAL. cc @jackjlli

Hi all,
The proposed design doc on pagination support has been linked to this issue: https://github.com/apache/pinot/issues/5246.
Please review it and feel free to put any comments. Thanks!
Best,
Jack


Add Crontab Guru, Stackblitz and Spotify Objective-C coding style

Update readme.md in General Tools and Coding Style section

Hey please only one or two links per PR. You can go ahead a remove the others and just leave crontab site

@sdmg15  Sure thing, updated the PR and leaving just the crontab guru site, Thank you.
Also, I think it's will be helpful to state the 1 or 2 links per PR rule in contributing.md, so future contributors can aware about this. 😀

Yes for sure that's something I'll do


Publish performance sensor metrics.

Signed-off-by: Franco Cipollone<EMAIL_ADDRESS>🎉 New feature
Related to https://github.com/ignitionrobotics/ign-gazebo/issues/557
Summary

ignition::sensors::Sensor publishes a performance metric message (ignition::msgs::PeformanceSensorMetrics)
for each Update() call. The message is published at <sensor_topic_name>/performance_metrics

This message is being added to the ignition-msgs in PR: https://github.com/ignitionrobotics/ign-msgs/pull/172

Publishing performance metrics can be disabled trough sdf: https://github.com/ignitionrobotics/sdformat/pull/665

message PerformanceSensorMetrics
{
  /// \brief Sensor name
  string name                 = 1;

  /// \brief The update rate of the sensor in real time.
  double real_update_rate     = 2;

  /// \brief The update rate of the sensor in simulation time.
  double sim_update_rate      = 3;

  /// \brief The nominal update rate defined to the sensor.
  double nominal_update_rate  = 4;

  /// \brief If the sensor is a camera then this field should be filled
  /// with average fps in real time.
  Double fps                  = 5;
}

ignition::sensors::Sensor provides an API to let the subclasses to publish a custom message or change the way the metrics are computed. For example, CameraSensor's PublishMetrics implementation should also fill the fps field of the message.

Test it
It can be tested using an ignition simulation:
the sensors in the .sdf must enable this behavior by doing:
<enable_metrics>true</enable_metrics>
Then we can do:
ign gazebo sensors.sdf

and then verify the messages being published:
ign topic --list

/air_pressure
/air_pressure/performance_metrics
/altimeter
/altimeter/performance_metrics
/clock
/gazebo/resource_paths
/gui/camera/pose
/gui/record_video/stats
/imu
/imu/performance_metrics
/magnetometer
/magnetometer/performance_metrics
...

Checklist

[x] Signed all commits for DCO
[x] Added tests
[ ] Added example and/or tutorial
[ ] Updated documentation (as needed)
[ ] Updated migration guide (as needed)
[x] codecheck passed (See contributing)
[x] All tests passed (See test coverage)
[ ] While waiting for a review on your PR, please help review another open pull request to support the maintainers

Note to maintainers: Remember to use Squash-Merge

It is ready for review @chapulina :smiley: !, let me know if I should ask someone else for a review.

This pull request has been mentioned on Gazebo Community. There might be relevant details there:
https://community.gazebosim.org/t/new-ignition-releases-2022-01-10/1228/1


Shift+tab only opens accessible buffer for first terminal

Create a terminal, Shift+tab to focus the accessible buffer
Create a split terminal, Shift+tab 🐛 doesn't focus the accessible buffer

🤔 it works once I have run Terminal: focus accessible buffer though
https://user-images.githubusercontent.com/29464607/224368643-b869db27-283c-4794-94ee-083fcddbcf75.mov

When I press Shift+tab, true is returned here with just the Shift key event


Initialize repo with some core code

Story
As a developer I want to have a working code to start designing and testing new features.
Details
This will be done once we have tooling for logs with friendly output and access to echonet lite library in a useful state.
Perhaps we should start with the example on finding devices available on echonet-lite-rs.

note: created this to back track; this is done.