Separate file for marshaling functions

The library has no packages, so it's easier to keep everything related to it's functionality. Marshal/Unmarshal is the function of preparing information sent from/to to the API. Whereas individual files (message.go, components.go) serve a function of the Discord API. The latter is already implemented, so this pull request simply enforces that organization structure.

I think that the idea behind putting the marshal functions beside the structures themselves is to better navigate through all of that.

I'll consider it however.

Just wanted to point out, this might be an interesting idea, but it would require rethinking library structure as whole


👑 [exercise] - Sonar Scanning

Quality Gates Exercise

Module: Sonar-scanning

📝 Description
Add sonar scanning for the application code quality. This should run independently of any other Quality Gate module in order to maintain executing the exercise in any order.
🥤 placeholder
https://github.com/rht-labs/tech-exercise/blob/main/docs/3-revenge-of-the-automated-testing/1-sonar-scanning.md
✅ A/Cs

[x] Big Picture Updated (if applicable)
[ ] Exercise peer reviewed / tested with one other region member
[x] Addition of new exercise does not affect previous exercise (maintain modularity)

Reviewing Tekton pipeline to analyze the code I found the next error:
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  18.111 s
[INFO] Finished at: 2021-11-23T10:23:18Z
[INFO] ------------------------------------------------------------------------
[ERROR] No plugin found for prefix 'sonar' in the current project and in the plugin groups [org.apache.maven.plugins, org.codehaus.mojo] available from the repositories [local (/workspace/maven-m2/.m2/repository), maven-public (http://nexus:8081/repository/maven-public/)] -> [Help 1]
[ERROR]

The root cause of this issue is because sonar-maven-plugin is not in the pom.xml file of pet-battle-api project. In that case if you want to execute the plugin you need to use the full path to the goal org.sonarsource.scanner.maven:sonar-maven-plugin:sonar in the maven-pipeline.yaml file:
      params:
        - name: WORK_DIRECTORY
          value: "$(params.APPLICATION_NAME)/$(params.GIT_BRANCH)"
        - name: GOALS
          value: "test org.sonarsource.scanner.maven:sonar-maven-plugin:sonar"  # - org.owasp:dependency-check-maven:check
        - name: MAVEN_BUILD_OPTS
          value: "-Dsonar.host.url=http://sonarqube-sonarqube:9000 -Dsonar.userHome=/tmp/sonar"

With that value it works. Other option could be add the maven plugin sonar in the pom.xml file:
      <plugin>
        <groupId>org.sonarsource.scanner.maven</groupId>
        <artifactId>sonar-maven-plugin</artifactId>
        <version><IP_ADDRESS>6</version>
      </plugin>

Reference: https://docs.sonarqube.org/latest/analysis/scan/sonarscanner-for-maven/

@rmarting have you got some details on how this is running ?
it has not been a problem for the mvn sonar:sonar target to date. maven will use the latest version of the plugin if it is not specified and pull that via nexus from maven central.
here is a screenshot of it working:

Sorry @eformat you are right but it seems that my issue was related with other thing ... Nexus is not working successfully, with many restarts that do not allow to download all the artifacts on time.
After some retries it worked successfully with the same ouput.
Reverted my PR with that change.


health-Endpoint: Does not return 503 when Status is DOWN

I have the following minimal example:
from dataclasses import dataclass

from fastapi import FastAPI
from pyctuator.health.health_provider import HealthDetails, HealthProvider, HealthStatus, Status
from pyctuator.pyctuator import Pyctuator

@dataclass
class AppSpecificHealthDetails(HealthDetails):
    my_dependency_connectivity: str

class MyHealthProvider(HealthProvider):
    def is_supported(self) -> bool:
        return True

    def get_name(self) -> str:
        return "my-dependency-health"

    def get_health(self) -> HealthStatus:
        return HealthStatus(
            status=Status.DOWN,
            details=AppSpecificHealthDetails(my_dependency_connectivity="is down")
        )

app = FastAPI()

@app.get("/")
async def hello_world():
    return {"message": "hello world"}

pyctuator = Pyctuator(
    app,
    app_name="my_app",
    app_url="http://<IP_ADDRESS>:8000/",
    pyctuator_endpoint_url="http://<IP_ADDRESS>:8000/pyctuator",
    registration_url=None
)

pyctuator.register_health_provider(MyHealthProvider())

As expected the Status of the Subcomponent is DOWN, and subsequently the status of the whole application is also DOWN. However the status_code is still 200. I would expect to receive 503 for Status codes DOWN, just like in a Spring Boot Application.
$ curl -vs http://localhost:8000/pyctuator/health
{"status":"DOWN","details":{"my-dependency-health":{"status":"DOWN","details":{"my_dependency_connectivity":"is down"}}}}*   Trying <IP_ADDRESS>:8000...
* Connected to localhost (<IP_ADDRESS>) port 8000 (#0)
> GET /pyctuator/health HTTP/1.1
> Host: localhost:8000
> User-Agent: curl/7.81.0
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< date: Fri, 02 Sep 2022 08:51:27 GMT
< server: uvicorn
< content-length: 121
< content-type: application/vnd.spring-boot.actuator.v2+json;charset=UTF-8
<
{ [121 bytes data]
* Connection #0 to host localhost left intact

Will look into this and will also upgrade the dependencies to latest.

Hi @thurse93, the fix is small - see the changes in #83
However, note that this PR is based on a complete dependencies refresh (I had hard times going back to the old python even when using pyenv).

Hey @michaelyaakoby looks good to me, just made a small code comment.

Hi @thurse93 , can you point to your code comment? I can't find it...
Thanks

@michaelyaakoby my bad, I didn't commit it: https://github.com/SolarEdgeTech/pyctuator/pull/83#discussion_r968026885


Update README.md

fix mistyping and improved one sentense

Changes Unknown when pulling 0599b093d62d38a9ca5e605a853457dc884a1104 on marabesi:master into ** on datasciencebr:master**.

Many thanks, @marabesi 🎊


[BUGFIX] - Reverting readOnly for two fields

In this already-merged PR (#1429), Ben made some object-refactoring changes - one of them being to make all the fields in USqlJobProperties read-only as a good design decision.  However, by making the fields statistics and debugData read-only, this caused some conflicts in the Powershell code.  We need to pan out the design more carefully for these two fields with respect to their associated APIs ("/Jobs/{jobIdentity}/GetDebugDataPath" for the debugData field and "/Jobs/{jobIdentity}/GetStatistics" for the statistics field) before making them read-only.  If I do not make the change proposed here, I would have to create two new cmdlets: one for getting the JobDataPath object and another for getting the JobStatistics object, which we do not want to do until we have a better understanding of their designs as a whole.  Hence, the reverting change proposed here.

This checklist is used to make sure that common issues in a pull request are addressed. This will expedite the process of getting your pull request merged and avoid extra work on your part to fix issues discovered during the review process.
PR information

[ ] The title of the PR is clear and informative.
[ ] There are a small number of commits, each of which have an informative message. This means that previously merged commits do not appear in the history of the PR. For information on cleaning up the commits in your pull request, see this page.
[ ] Except for special cases involving multiple contributors, the PR is started from a fork of the main repository, not a branch.
[ ] If applicable, the PR references the bug/issue that it fixes.
[ ] Swagger files are correctly named (e.g. the api-version in the path should match the api-version in the spec).

Quality of Swagger

[ ] I have read the contribution guidelines.
[ ] My spec meets the review criteria:

[ ] The spec conforms to the Swagger 2.0 specification.
[ ] The spec follows the guidelines described in the Swagger checklist document.
[ ] Validation tools were run on swagger spec(s) and have all been fixed in this PR.

@ro-joowan,
Thanks for your contribution as a Microsoft full-time employee or intern. You do not need to sign a CLA.
Thanks,
Microsoft Pull Request Bot

Was not aware of this note: "Except for special cases involving multiple contributors, the PR is started from a fork of the main repository, not a branch."
I thought it was a good practice to submit PRs from separate branches.  Let me merge this unto my fork/current branch and resubmit the PR.


Provide a tutorial to replicate the viz with a more detailed dataset

Some operations could be interested to replicate the same dataset visualization with more details (extracting for instance from their registration data):

Adding Level1 admin countries
showing details by month
showing additional details (family size, occupation, education, sp.needs, age&sex breakdown...)

Building on this viz, it could be interesting to have a replicable example with some documentation.
See for instance: https://zanmat.github.io/IDPDisplacement/

An interesting proposition!


Header filters

Checklist

[X] npm run format:check && npm run lint && npm run build && npm run test all pass on my machine
[X] I have followed the commit message guidelines, with messages suitable for appearing in the changelog

Description

PR to conditionally exclude headers from being serialised into pact contracts, from captured msw interactions.

@IJuanI @mefellows FYI

Published as<EMAIL_ADDRESS>for testing

lodash might be an overkill for this use case, but it's already a dependency of msw anyways, so it should be fine

I could use
const omit = (keysToOmit: string[], originalObj = {}) =>
  Object.fromEntries(
    Object.entries(originalObj)
      .filter(([key]) => !keysToOmit.includes(key))
)

But Typescript complains

Property 'fromEntries' does not exist on type 'ObjectConstructor'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2019' or later.ts(2550)

which when setting the lib compiler to es2019 throws up another set of compiler errors.
Happy for advice :)


chore: return request id (UUID) with response

Can be used to track the request info when we enable storing per request data.

LGTM

Should this also take a request_id on request, and if that exists use that instead as a pass through?

Can do this

Using higher enum value for request_id to keep it consistent.


Instead of requiring git be installed, use curl/wget to grab the latest release or master.zip?

If they can curl https://pyenv.run | bash then we know they can grab files via curl, and on almost all systems (minus Git Bash on Windows), even if they don't have the zip package or the unzip command they likely have python or python3 which includes a ZipFile.extract() function in the standard library. For safety you could try ZipFile.testzip() to see if the zip was corrupted during the download.

Please no, this is not a good way to install software:

http://tserong.github.io/sudo-wget/
https://www.seancassidy.me/dont-pipe-to-your-shell.html
https://www.reddit.com/r/programming/comments/1pqtcb/curltoshell_russian_roulette/

@espoelstra Pyenv is a developer tool. If they don't use git, they probably aren't going to need Pyenv to manage multiple Python versions.
@aspiers Here is a counter-argument: https://sandstorm.io/news/2015-09-24-is-curl-bash-insecure-pgp-verified-install
Pyenv is distributed and updated via git, which is curl-bash by another name. The installer could be made more robust, for sure, but pip, npm, brew, etc. could use some work, too.

@robnagler Thanks for the URL but that is not really a counter-argument, it's effectively an argument for the need for PGP signing, and IMHO a poorly constructed one at that.  For example, they say:

Realistically, downloading and installing software while relying on HTTPS for integrity is a widely-used practice. The web sites for Firefox, Rust, Google Chrome, and many others offer an HTTPS download as the primary installation mechanism.

... but conveniently omit that any software distribution sites (including the Linux distros which they are not so subtly attacking here) worth their salt will provide digest hashes and signatures alongside the binary files so that anyone who wants to verify them can.  HTTPS is only useful for protecting content in transit, not for proving that it was trustworthy in the first place.  They also neglect to mention that when you use a distro's native package installer that it can automatically do GPG verification for you without any extra effort required.

Pyenv is distributed and updated via git, which is curl-bash by another name.

I'm not sure how you can draw equivalence between git and curl|bash.  At least git is hash-based and hence has some basic verification built in by design.  curl|bash has none.
@tserong, you want to chime in here?  Did I miss anything?

@tserong, you want to chime in here? Did I miss anything?

I think you've pretty much covered it :-)

I think you guys all missed an important point, the README.md here already tells users to install in this manner.... I'm was just suggesting you could possibly remove the git pre-requirement, I strongly agree with doing the whole pgp/md5/etc validation on files downloaded with curl if you went that route.
https://github.com/pyenv/pyenv-installer#prerequisites

I think you guys all missed an important point, the README.md here already tells users to install in this manner....

Sorry, you lost me - which manner are you referring to?  I don't see anything in the README.md about signatures or any kind of verification.

@aspiers your assertion that curl|bash has no verification is incorrect. Consider that when you type commands into bash over ssh, every key stroke is verified. That same verification happens when you run curl|bash (over TLS as is the case here). All web transactions rely on this same validation. Your bank's Javascript app doesn't sign the data it transmits to the web server. It relies on the underlying transport, which is more reliable than simple GPG signing, because it is fully encrypted.
Here are the verification steps to ensure the output of curl|bash is correct:

The disk has ECC on every block
The file system likely has integrity checks
The memory likely has ECC
The CPU has internal integrity checks
The ethernet frames that leave your computer have a 32-bit CRC
The IPv4/6 header has a 16-bit checksum
TCP ensures the bytes are transmitted in order
TLS ensures authenticity of the sender through public key validation
TLS further ensures integrity and secrecy of the data
HTTP ensures the syntax and header are valid
Bash parses the input before executing each command
The script will only execute if the entire file is read (discussed below)

You also said that "HTTPS [does not prove the content] was trustworthy in the first place". That is correct, and neither does GPG signing. It could be argued that TLS (not HTTPS) is stronger authentication, because the public key is signed by a certificate authority. GPG public keys are not signed by anybody so anybody can create a key that looks like a distro's key. The key itself is unlikely to be verified by you independently, and even if it was, the signature of that key would come over TLS from a website whose authenticity you would verify only by going to a website whose authenticity you would verify by, you guessed it, TLS. Now maybe you are one of those people who writes a letter or fax to the folks at Fedora to have them send you a key. How do you know that letter or fax wasn't intercepted? You don't. Quis custodiet ipsos custodes?
See Ken Thompson's excellent 1984 Turing Award Lecture on this subject.
As to point (12) above, I will agree that the pyenv-installer should be wrapped in a bash function like the one returned by https://pyenv.run, but that's what I meant when I said it could be more robust.
I do not deny that curl|bash is not package management. But, most package managers are written very poorly and have many flaws that have been exploited by nefarious folks over the years. Containerization has eliminated much of the need for classical package managers for most applications.
However, I digress. The text above explains how curl|bash verifies the integrity of the data and the authenticity of the sender. It is not perfect, but no installer (or software) is perfect.
I'll also add that pyenv is a userland utility. We don't install or run it as root (per the sudo-wget link in your original post). We deploy with Docker images built as an ordinary user so that the vast majority of untrusted software we install (over curl|bash btw) has no access to root either via the installer or installed setuid programs. That's an advantage over classical package managers, most of which default to run as root.

Closing as per

https://github.com/pyenv/pyenv-installer/issues/89#issuecomment-537543099,
Pyenv-Instlaler installs installs the Pyenv-Update plugin which requires the installation to be via Git to be able to update.


Update following June 2021 Showcase

Description

Remove references to Discourse, introduce Discord and GitHub Discussions
Add slides to repo

Checklist

[x] Opened this PR as a 'Draft Pull Request' if it is work-in-progress
[x] Assigned myself to the PR
[x] Added tests to cover my changes

Notice

[x] I acknowledge and agree that, by checking this box and clicking “Submit Pull Request”:

I submit this contribution under the Apache 2.0 license and represent that I am entitled to do so on behalf of myself, my employer, or relevant third parties, as applicable.

I certify that (a) this contribution is my original creation and / or (b) to the extent it is not my original creation, I am authorised to submit this contribution on behalf of the original creator(s) or their licensees.

I certify that the use of this contribution as authorised by the Apache 2.0 license does not violate the intellectual property rights of anyone else.

Also added this table + @yetudada 's PyCon talk


The IDF websocket server does not handle multiple simultaneous connections (at least the example doesn't) (IDFGH-7162)

Environment

Development Kit:      Random ESP32 board
Module or chip used:  ESP32-DOWDQ6
IDF version (run git describe --tags to find it):
v4.4-beta1-284-gd83021a6e8
Build System:         idf.py
Compiler version (run xtensa-esp32-elf-gcc --version to find it):
xtensa-esp32-elf-gcc (crosstool-NG esp-2021r2) 8.4.0
Operating System:     Linux
(Windows only) environment type: [MSYS2 mingw32|ESP Command Prompt|Plain Command Prompt|PowerShell].
Using an IDE?: No
Power Supply:         USB

Problem Description
I'm running the IDF4.4 (commit d83021a6e8) and running the unmodified example examples/protocols/http_server/ws_echo_server.
To test it, I'm using websocat (from https://github.com/vi/websocat ) to make a connection to the websocket server and interact with it. In particular, I have this script (called dosend -- and this particular board is at <IP_ADDRESS>)
#!/bin/bash

(echo foo; sleep 1; echo bardsfsdkfsdflskf; sleep 1; echo djfsldkjfskljfslkjfsdlkjfsldkjfklsjfslkf) | websocat ws://<IP_ADDRESS>/ws

This script works fine provided that I only run one copy at a time. If I run four copies at the same time, then I get log messages from the ESP32 like:
W (34089) httpd_ws: httpd_ws_recv_frame: WS frame is not properly masked.
E (34089) ws_echo_server: httpd_ws_recv_frame failed to get frame len with 259

I launch four copies with the command (on my linux laptop)
./dosend & ./dosend & ./dosend & ./dosend &

I originally found this in an application that I was building, but the issue reproduces in the provided echo example.
Other items if possible
Since this is just your sample code, I'm not providing any other information here

Thanks for reporting.

Just to be clear, are you saying that the example is broken and that the IDF core code is correct?

As far as i know it works perfectly fine, just example is simplified and does not show how to use multi connection.Similar ble examples does not show all use cases etc. Of course i may be wrong.
My suggestion is to add log after this line to see value of resp_arg->fd:
https://github.com/espressif/esp-idf/blob/master/examples/protocols/http_server/ws_echo_server/main/ws_echo_server.c#L59

@pjsg Could you please try this patch. I test it with your tool and it is ok.
ws_server.zip

Thanks for this. I'll try and test it over the next couple of days.

I'm sorry that it took me so long -- but that patch works great and fixes my problem (the Lua nodemcu firmware).
When will it get merged?

Thanks for sharing the updates, we have a fix under internal reviewing, and the issue will close automatically once the fix is available on GitHub, thanks.

Thanks for reporting and sorry for slow turnaround, fix is available at https://github.com/espressif/esp-idf/commit/b3ab2c64d42483d4d8cda2684f62b482d4108f3d. Feel free to reopen.

Even I am trying to handle diff channels thru idf ws server, it does not work

@AnkDhage Do your problem is the same as the issue mentioned? Could you give a detailed description about it?


Feat: add segmentation algorithm

Related issue: #129
This is a breakdown from this PR #130.
@fermadeiral ready for review.

LGTM. Thank you, @henry-lp!


When disabling OTGFS, linker errors

Hi all! So, I was trying to use as GPIO the pins that are right now for OTGFS (PA11 and PA12, namely), in a fmu-v5 target. For that, I first wanted to disable OTGFS, since that interface is taking those pins and configuring them. However, when I disable OTGFS, I get this linking problem:

Is it a bug or I am missing something in the configuration?

Apparently OTGFS cannot be disabled without disabling the entire USB device in all layers. Closing here!


Test Authentication with Current Annotator Store Backend

At the moment not sure Authentication is working with Annotator Store backend. Therefore need to:

Deploy latest Annotator Store (locally)
Check this works with Annotator js
If it does not create tests to reflect failure and fix

Fixed in annotator-store/feature/es+sql.

@nickstenning Brilliant!


Added issues and pull requests templates

Those files were created through -
https://www.talater.com/open-source-templates/

Thank you @shayl2 !
Awesome stuff!


error

I have a error in this line
mFirebaseRef = new Firebase(FIREBASE_URL).child("chat");

Did you specify your own database in FIREBASE_URL? If so: what error are you getting?


Date Format Question

Excellent work, thank you for sharing!
Is there any way to format the date within simplyCountdown so that standard date pickers can be used? Example: I have input form and users pick a date using https://cdnjs.com/libraries/bootstrap-datetimepicker
Since most date / time pickers can use formats like "2018-12-31 23:55:21", is there way to use this format with simplyCountdown?
Thanks!

My bad, should have closed this long ago.
Thank you for info.


Design: should Kui display sidecar content inline with other terminal content?

Kui employs a Sidecar to show detailed information about a selected resource. This is a conventional approach, and as such is well understood and appreciated by a large audience. It may also be a desirable presentation modality, for packagers targeting Kui for inclusion into an existing UI that also employs this sidecar metaphor.
On the other hand, we have found that having a sidecar is problematic for two reasons: lack of linear narratives, and inflexibility of layout.
Lack of Linear Narratives
It is difficult to tell stories when there is no linear narrative. The Sidecar, as a global construct, is not related to historical flow of command execution in a terminal. To teach the story: "If you execute this command, you should see this sidecar" is not possible, without additional annotations that draw arrows from the former to the latter. Otherwise, there is no clear relationship between the spatially linear narrative of the terminal, and the ephemeral/temporal history of showing one or more resources in the sidecar.
This ephemeral quality to the sidecar is a consequence of a global sidecar design. This design can only show one resource at a time. To capture a history of showing one resource after the other requires introducing a separate navigational context, distinct from the Terminal. In a Terminal, time flows vertically. In a global sidecar, how would time flow? With back buttons? This is what we do, but results in two disjoint ways to navigate time.
There are some benefits of establishing disjoint domains of time: sometimes I truly want to pull a resource off to the side, so that I can view it, independent of what I do subsequently. This is a powerful use case, but one that Kui forces on the user. A more flexible answer would be to let the user decide when they want to "pin" a resource versus have it kept inline with the normal Terminal flow.
Inflexibility of Layout
Consider three varieties of content to place in the viewport: normal Terminals, Sidecar content, and panes aimed at Watching your system. I think a reasonable goal would be to have a viewport with at least one Terminal (after all, that's the whole point of this exercise). Also, for clarity, I suggest that we also introduce the constraint that Watchers should always be smaller than Terminals. Finally, the Sidecar should always lay along one side of the viewport. So: three constraints. Let me denote the three varieties as T, S, and W, and illustrate what I think are most of the possible combinations here:

The lower right ("three terminals below a sidecar" is the familiar IDE viewport pattern). A Terminal/Sidecar split is what most browser-based applications use.
With these three constraints, it is difficult to construct a layout that accommodates watchers, terminals, and a sidecar. We would either have to give up on dedicated Watch panes, or use very small Terminal panes.
A global/singleton sidecar is a degenerate case of terminal splitting, where the user may only have two ways to lay out the viewport: sidecar open, sidecar closed. One of the splits can only be a sidecar, and the other can only be a terminal. Once we introduce the ability for the user to split their viewport into multiple terminals, the command-to-sidecar correspondence problem grows combinatorially: it is now a command-in-split/to-sidecar problem.
Proposal
The proposal on the table is to linearize the sidecar, so that it is displayed as a part of the normal Terminal flow.

With this design, we can construct linear narratives, where the relationship between command and view is clear. We also can support the use case of establishing disjoint-but-concurrent linear narratives: this is precisely what Terminal splits can do for us. In the screenshot, you can see how I have split the viewport in two. I now have established two concurrent narratives. If i want to "pin" a resource, while I continue work, I am in control: e.g. I do my work on the left, which lets the resource views on the right remain as glass pane elements in the viewport.

Another example:


docs: optimize verb for updating the button element

Since the button element is already present in the code, one doesn't have to add a new button element but update the existing one.

thanks — looks like this was updated elsewhere, closing


Playnite fails to authenticate Epic library after successful login

Describe the bug
When configuring the Epic library and trying to login, I'm able to go through the Epic login window, and log in just fine, then the window closes after logging in, Playnite seems to lock up for a minute or so (whole window is completely unresponsive) and eventually fails with a generic "Failed to authenticate" error. From the extensions.log file all that seems related to this is the following:
23-10 18:10:00.825|ERROR|EpicLibrary#EpicLibrarySettingsViewModel:Failed to authenticate user.
System.Threading.Tasks.TaskCanceledException: A task was canceled.
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at EpicLibrary.Services.EpicAccountClient.getExcahngeToken(String sid) in E:\Devel\PlayniteExtensions\source\Libraries\EpicLibrary\Services\EpicAccountClient.cs:line 318
   at EpicLibrary.Services.EpicAccountClient.Login() in E:\Devel\PlayniteExtensions\source\Libraries\EpicLibrary\Services\EpicAccountClient.cs:line 120
   at EpicLibrary.EpicLibrarySettingsViewModel.Login() in E:\Devel\PlayniteExtensions\source\Libraries\EpicLibrary\EpicLibrarySettingsViewModel.cs:line 73

To Reproduce
I'm not sure how to replicate it. I tried deleting the program/user data and reinstalling Playnite and running on safe mode and I still have this issue. My Epic account uses an email/password and 2FA.
Screenshots
Playnite locking up and being unresponsive:

Failing after a while with generic error:

Diagnostics ID
a3b95450-2cc4-42ae-aafd-fb85f457206b

看来你是对的。我刚刚在Windows VM上尝试过，没有超时。日志正常，Playnite识别登录并获取游戏。这很奇怪，因为我在同一台计算机上运行该VM，然后有超时问题，所以我怀疑这是由于某些防火墙/网络配置（我也不记得除了更改DNS之外配置有关网络或防火墙的任何内容）。
所以我想我只需要在某个时候重新安装Windows，就可以解决它的任何问题。感谢您帮助找到问题。

it's same for me, and i don't know if it's because in China?
but i can login in brower or client

It looks like it's timing out when getting tokens from https://www.epicgames.com/id/api/, so either some network issue (try restarting router or something) or FW/AV blocking Playnite process from accessing it.

it's same for me, and i don't know if it's because in China?
but i can login in brower or client

I have the same problem, is there any solution?

+1
No solution found so far. My client works fine, but Playnite fails with the same error "Failed to Authenticate User" after entering the Authentication code successfully.


Optimize incremental builds and local build cache usage

Optimize incremental builds

Replace copyJavadocDocFiles workaround by javadoc sourcepath
Specify output dir in generateManpageAsciiDoc task
Specify output file in generateVersionTxt task

Optimize local build cache usage

Add normalization for manifest.mf to ignore Bnd-LastModified attribute
Add normalization for version.txt in 'picocli-examplesto ignoreBuildtime` property

@runningcode FYI

Thanks very much for the review, I've removed gradle.properties as shouldn't have been committed in the first place

Merged. Thank you for the pull request!


Compatibility Issue with paho-mqtt Version 2.0.0 in WOL-proxy

Title
Compatibility Issue with paho-mqtt Version 2.0.0 in WOL-proxy
Body
Description:
After updating to paho-mqtt version 2.0.0, the WOL-proxy application fails to start due to breaking changes introduced in the paho-mqtt library. Specifically, the new requirement for a callback_api_version argument in the Client class constructor causes the application to exit with a TypeError.
Steps to Reproduce:

Run the Docker container for WOL-proxy using the latest python:3-slim-buster image, which installs the latest version of paho-mqtt by default.
Observe the application failing to start, logging a TypeError related to the Client object initialization.

Expected Behavior:
The WOL-proxy application starts successfully and operates as intended without exiting due to errors related to library dependencies.
Actual Behavior:
The application exits immediately after starting, with the logs indicating a TypeError due to a missing callback_api_version argument in the Client constructor, as required by paho-mqtt version 2.0.0.
Environment:

Docker Image Base: python:3-slim-buster
paho-mqtt Version: 2.0.0

Possible Solutions:

Update the WOL-proxy Application: Modify the Client object initialization in the WOL-proxy.py script to include the callback_api_version argument as per the new requirements of paho-mqtt version 2.0.0.
Specify a Compatible paho-mqtt Version: Adjust the Dockerfile to install a specific version of paho-mqtt that is known to be compatible with WOL-proxy, e.g., paho-mqtt==1.6.1. This can be achieved by modifying the RUN pip install command as follows:RUN pip install paho-mqtt==1.6.1 wakeonlan

Hello, the code has been updated for paho-mqtt version 2 and new docker images have been built and tested working.


Variable Execution Time for face_recognition_model

##Specifications
hardware - Odroid XU4
OS - Armbian
testing_image - Any image with a face in it.(i am using picture with my face)
Expected Behavior
face_recognition_model.compute_face_descriptor should get executed in fixed time.
Current Behavior
while True:
    if c>50:
        break

    t_dets1 = time.time()
    dets = detector(myface_gray_short,0)
    t_dets2 = time.time()
    print('_______________c = _________________ {}'.format(c))
    print('____dets__time___taken__{}'.format(t_dets2 - t_dets1))
    spp = sp(myface_gray_short,dets[0])
    t_spp2 = time.time()
    print('____68shape predict__time___taken__{}'.format(t_spp2 - t_dets2))
    feat = facerec.compute_face_descriptor(myface_short,spp)
    t_feat2 = time.time()
    print('____faceerec__time___taken__{}'.format(t_feat2 - t_spp2))
    c+=1
    gc.collect()

The result is that the facerec.compute_face_descriptors() sometimes gets executed with .30 -+ .05 and after some iterations the execution time is 3.35 +- 0.05 seconds. Sometimes the execution time goes high just after 2-3 iterations.This is a very strange behaviour. I even cleared the values of variables(dets, spp, feat) from memory and garbage too.
Steps to Reproduce
Required - Odroid xu4
simply install armbian in Odroid xu4 and then install dlib.

Version:  Tried 19.9.0, 19.10.0
Where did you get dlib: 19.9.0 installed via pip, 19.10.0 installed via cmake
Platform: armbian (Ubuntu 16.04 LTS)

Update: I tried running the sample code on my Raspberry Pi B+.
import os,sys,dlib,cv2
import time
detector = cv2.get_frontal_face_detector()
sp = dlib.shape_predictor("shape_predictor_68_face_landmarks.dat")
facerec = dlib.face_recognition_model_v1("dlib_face_recognition_resnet_model_v1.dat")

myface = cv2.imread('./myface.png')
GrayImg = cv2.cvtColor(myface,cv2.COLOR_BGR2GRAY)
while True:
    t1 = time.time()
    dets = detector(GrayImg,0)
    t2 = time.time()
    print('time taken for detection - {}'.format(t2 - t1))
    shape = sp(myface,dets[0])
    t3 = time.time()
    print('time taken for shape prediction - {}'.format(t3 - t2))
    face_features = facerec.compute_face_descriptors(myface,shape)
    t4 = time.time()
    print('time taken for computing features - {}'.format(t4 - t3))

After 5-8 iterations , the program gets stuck at face_features statement.
I think there is something terribly wrong with the dlib's SIMD implementation or maybe something else.
@davisking can you have a look or point me in some direction please??

You are probably just running out of ram and expecting a lot of disk swapping.

That might be the case with Raspberry Pi, but Odroid has got 2 GB RAM so i am pretty sure its not getting out of RAM.


Toggle sunrise/sunset theme on resume

Right now it works on create, but it might be useful if TS was in the background and reopened later in the day. This should only be done if it doesn't affect performance / is buggy or is annoying to users.
Only when the sunrise/sunset theme is enabled.

I tried to implement this, but I think (in the way I implemented it) it could be annoying. See the GIF below.

Yeah, that wouldn't be a fun user experience

I'm going to close this in favor of using the system options for day/night theme. I don't think I'm going to switch Trail Sense to Jetpack Compose - too much work for that.


Support manufacturing date VPD in IPMI FRU inventory

Backport of functionality from master branch (P9) to master-p8.
Original commits:
3d0fd427668ae9418f50d1432cceee3c95e794d6
1be038e7e43d6583bfdf145adfc0eef697e83c5d
by Matt Ploetz<EMAIL_ADDRESS>Signed-off-by: Artem Senichev<EMAIL_ADDRESS>

We have to many differences between p8 and master branches, so it's not possible to simply 'cherry pick' these commits. I have squashed and adapt them for master-p8.

Running through our local CI tests and reviews now

Thanks!


feat(template): Improve CI

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Add coverage shield

Coverage is quite high, we should show it off. Also monitor change.

Actually too much hassle to set up. Coverage can be verified by running
pytest --cov=dicomtrolley
from the project root.
At the time of writing this is:
----------- coverage: platform linux, python 3.8.8-final-0 -----------
Name                            Stmts   Miss Branch BrPart  Cover
-----------------------------------------------------------------
dicomtrolley/__init__.py            0      0      0      0   100%
dicomtrolley/auth.py               35      4      8      1    88%
dicomtrolley/core.py              144      2     48      0    98%
dicomtrolley/dicom_qr.py           92      2     38      4    95%
dicomtrolley/exceptions.py          2      0      2      0   100%
dicomtrolley/fields.py              8      0      8      0   100%
dicomtrolley/mint.py              133      1     58      3    98%
dicomtrolley/parsing.py           100      3     48      4    95%
dicomtrolley/rad69.py             175      5     68      8    95%
dicomtrolley/servers.py            35      4      8      0    91%
dicomtrolley/storage.py            27      0      8      0   100%
dicomtrolley/trolley.py            71      5     28      4    91%
dicomtrolley/wado.py               36      0      8      0   100%
dicomtrolley/xml_templates.py       6      0      0      0   100%
-----------------------------------------------------------------
TOTAL                             864     26    330     24    96%


OpenFonts()

I'm tired of making for path in glob.glob(pattern): font = OpenFont(path, showInterface=False) over and over. Would it be a bad idea to add something like this to world:
import os
import glob
from fontParts.ui import GetFileOrFolder
from fontParts.world import OpenFont

def BaseOpenFonts(globPatterns=None, showInterface=True, fileExtensions=[".ufo"]):
    if isinstance(globPatterns, str):
        globPatterns = [globPatterns]
    elif globPatterns is None:
        directories = GetFileOrFolder(allowsMultipleSelection=True)
        if directories is not None:
            globPatterns = []
            for directory in directories:
                if os.path.splitext(directory)[-1] in fileExtensions:
                    globPatterns.append(directory)
                elif not os.path.isdir(directory):
                    pass
                else:
                    for ext in fileExtensions:
                        globPatterns.append(os.path.join(directory, "*" + ext))
    paths = []
    for pattern in globPatterns:
        paths.extend(glob.glob(pattern))
    for path in paths:
        yield OpenFont(path, showInterface=showInterface)

Environments would implement their own version with the appropriate file extensions and register it in world:
def RoboFontOpenFonts(globPatterns=None, showInterface=True, fileExtensions=[".ufo", ".otf", ".ttf"]):
    return BaseOpenFonts(
        globPatterns,
        showInterface=showInterface,
        fileExtensions=fileExtensions
    )

Finally, this would allow scripts to do this:
for font in OpenFonts(showInterface=False):
    font.doSomething()
    font.close()

And we'll all live happily ever after.

cc @typemytype, @benkiel

I'm in favor.

Closed with https://github.com/robotools/fontParts/pull/651.


sinkv2(ticdc): activite sinkv2 mysql sink

What problem does this PR solve?
Issue Number: ref #5928
What is changed and how it works?
Use sinkv2 mysql sink.
Check List
Tests

Unit test

Questions
Will it cause performance regression or break compatibility?
Do you need to update user documentation, design documentation or monitoring documentation?
Release note
None

/run-integration-test

/run-all-tests

/run-all-tests

/run-all-tests

/run-all-tests

/run-all-tests

/run-all-tests

/run-all-tests

/run-all-tests

/run-all-tests

/run-kafka-integration-test

/run-all-tests

/run-integration-test

/run-kafka-integration-test

/run-all-tests

/run-all-tests

@hicqu The github actions failed.

/run-all-tests

/run-all-tests

/run-all-tests

Codecov Report

Merging #6816 (053d4af) into master (7c5032c) will increase coverage by 0.0367%.
The diff coverage is 58.4856%.

Flag
Coverage Δ

cdc
67.3487% <68.2926%> (-0.0282%)
:arrow_down:

dm
52.0523% <52.4822%> (+0.0537%)
:arrow_up:

engine
62.6812% <54.6184%> (+0.0458%)
:arrow_up:

Flags with carried forward coverage won't be shown. Click here to find out more.
@@               Coverage Diff                @@
##             master      #6816        +/-   ##
================================================
+ Coverage   59.9224%   59.9592%   +0.0367%
================================================
  Files           783        788         +5
  Lines         89519      89781       +262
================================================
+ Hits          53642      53832       +190
- Misses        31168      31237        +69
- Partials       4709       4712         +3

/run-all-tests

/run-all-tests

/run-all-tests

/run-all-tests

/merge

/hold

/run-all-tests

/run-engine-integration-test

/unhold

/merge

/run-engine-integration-test

/run-dm-integration-test

/run-engine-integration-test


API for deleting repository and tag

1)Please initialize the registry client via handler instance, instead of creating Newxxxx functions
2)Please consider making Standard handler abstract, such that we can use different strategy to prepare the request (basic auth, secret ......).


user-guide/01-blueprint-reference: improve chromium look and feel

emoji characters like the "ℹ" are not using nice fonts in chromium based browsers (chrome, brave …) . This change improves the look and feel slightly without introducing more fancy changes like an explicit font change…

LGTM!
Would have been nice to see a screenshot of the after (I looked at the before) but I trust that it'll be an improvement overall