Add Rule Logger

Opps .. tests need logger now...

@joelittlejohn
It looks like the Gradle version (1.6) it builds the code does not match the version (2.3) that is run on the build server.  Which version of Gradle should we target?  Both versions are ancient.

Strange, I have no idea why it says that this zip file was empty:
org.gradle.tooling.GradleConnectionException: Could not install Gradle distribution from 'http://services.gradle.org/distributions/gradle-2.3-bin.zip'.

When I download this using the same link I don't get an empty.

I think the stack trace above it gives more hint at what is going on but still not sure how to fix it.
Are you open to updating the groovy, Gradle, groovy maven plugin to resolve this issue? Or I could just not support logging under the Gradle plugin.

The gradle plugin project failing is a weird problem because it fails only on the Travis CI server and not a local maven execution of it.

@joelittlejohn Since #1041 is also failing I believe this failure is not a result of my changes.  Something is broken with the build.
This is a far reach but @ben-manes do you have any insight into this problem?

I believe it is due to not following a redirect. They enforce HTTPS now and their http client probably doesn't have redirect enabled. So maybe a 1 character fix! 😄
$ curl -I http://services.gradle.org/distributions/gradle-2.3-bin.zip
HTTP/1.1 301 Moved Permanently
Date: Wed, 06 Nov 2019 18:58:00 GMT
Connection: keep-alive
Cache-Control: max-age=3600
Expires: Wed, 06 Nov 2019 19:58:00 GMT
Location: http://downloads.gradle-dn.com/distributions/gradle-2.3-bin.zip
Server: cloudflare
CF-RAY: 53194be1fed592c8-SJC

ben: lucene-solr $ wget -v http://services.gradle.org/distributions/gradle-2.3-bin.zip
--2019-11-06 10:58:10--  http://services.gradle.org/distributions/gradle-2.3-bin.zip
Resolving services.gradle.org (services.gradle.org)... <IP_ADDRESS>, <IP_ADDRESS>
Connecting to services.gradle.org (services.gradle.org)|<IP_ADDRESS>|:80... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: http://downloads.gradle-dn.com/distributions/gradle-2.3-bin.zip [following]
--2019-11-06 10:58:10--  http://downloads.gradle-dn.com/distributions/gradle-2.3-bin.zip
Resolving downloads.gradle-dn.com (downloads.gradle-dn.com)... <IP_ADDRESS>, <IP_ADDRESS>
Connecting to downloads.gradle-dn.com (downloads.gradle-dn.com)|<IP_ADDRESS>|:80... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: https://downloads.gradle-dn.com/distributions/gradle-2.3-bin.zip [following]
--2019-11-06 10:58:10--  https://downloads.gradle-dn.com/distributions/gradle-2.3-bin.zip
Connecting to downloads.gradle-dn.com (downloads.gradle-dn.com)|<IP_ADDRESS>|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 42475057 (41M) [application/zip]
Saving to: ‘gradle-2.3-bin.zip’

gradle-2.3-bin.zip                       100%[==================================================================================>]  40.51M  20.2MB/s    in 2.0s

2019-11-06 10:58:12 (20.2 MB/s) - ‘gradle-2.3-bin.zip’ saved [42475057/42475057]

I literally asked you then though to do that myself. Lets see if it works.

@ben-manes I also switch back to the groovy-eclipse-compiler, these days which groovy plugin should you use?
I have read lots of write-ups on "which maven plugin/compiler for groovy should I use" but not being a groovy developer I am still not sure what this project should be using. I changed it because I thought it might fix my build/execution issues but it seems like it might of been unrelated now.

I can't answer at that detail. I simply hacked together a few plugins for my needs and contributed them upstream (flyway, js2p, jooq, dependencyUpdates). I learned enough Groovy to write simple build scripts and plugins, but this was Gradle 1.x world (2012). I don't use Groovy otherwise and tried to handoff the plugins since this isn't my area of expertise. I'm happy to be a sounding board but my knowledge is fairly limited and outdated.

I read that the gmaven(plus) plugins had more features and may support more things but I believe thease are things we don't require, so since the eclipse plugin is an official plugin should leave it switched to that.
I believe there is other improvements to the jsonschema2pojo-gradle-plugin and maybe it should actually be build with gradle (embedded in our maven) instead but that is out of scope with something I am willing to do right now.

@joelittlejohn I believe I have responded and/or addressed to all your comments and the build looks good now.

Great, thanks for looking at the Gradle build issues. I think we still have a few changes we need to make here, in particular any change that removes ../lib from CLI scripts needs to be reverted. I've added some follow-up comments and unresolved a few conversations.
Also, is there any reason the CLI logger needs to use SLF4J rather than just System.out and System.err? This will never be part of a wider system with its own logging configuration.

Also, is there any reason the CLI logger needs to use SLF4J rather than just System.out and System.err? This will never be part of a wider system with its own logging configuration.

I guess if this was jsonschema2-pojo-embedded (a fictional module) that would be integrated in another application/system then it should use SLF4J but I agree.  Although there would be no way to turn off loggers for CLI if people started using info/debug/trace and it could get quit noisy.

@joelittlejohn I am ready for you to take another pass of seeing if this pull request is ready to merge.

@joelittlejohn I would like to wrap up this pull request and possibly #1041.  I would like to write a RuleFactory with a custom EnumRule for my project that has the name fallback resolution as described in #999 and I want it to extend EnumRule instead of re-implementing it.


README.md: Replace secio with noise

secion is deprecated. Let's reference noise here.
https://github.com/libp2p/specs/pull/308

Closing here. There is a lot more outdated in docs/libp2p/README.md. I don't think opening up a new pull request for each section is very efficient.
@walkerlj0 what is the current  state of these docs? Are they ready for review?
Given that the libp2p section duplicates lots of our existing documentation, how do we make sure it stays up-to-date?


Medium Severity Vulnerability on node-fetch-2.6.1.tgz

Vulnerable Library - node-fetch-2.6.1.tgz
A light-weight module that brings window.fetch to node.js
Library home page: https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz
Path to dependency file: /package.json
Path to vulnerable library: /node_modules/node-fetch/package.json
Dependency Hierarchy:
firebase-admin-10.0.2.tgz (Root Library)
storage-5.3.0.tgz
gaxios-3.2.0.tgz
❌ node-fetch-2.6.1.tgz (Vulnerable Library)
Vulnerability Details
node-fetch is vulnerable to Exposure of Sensitive Information to an Unauthorized Actor

The Admin SDK has no direct dependencies to node-fetch. I think node-fetch is a transient dependency of @google-cloud/storage. Please update your @google-cloud/storage module to 5.18.3. #1625 also updates the package.json and will be included in the next release. Thanks!

We are not using @google-cloud/storage in our package.json. Can you provide me an estimate date of next release so I can cross check then?


404 error when sending messages

It appears FB has changed their API. This module no longer works as expected.

@kjellberg Same issue. Should I close this?

Hi,
I am too facing this issue. Please help

@someshmishra it is fixed with @Mini-Geek 's pull request. Please reinstall and it should work

@someshmishra follow theses steps :+1:
 cd node_modules  rm -rf facebook-chat-api  git clone https://github.com/Schmavery/facebook-chat-api.git  cd facebook-chat-api  npm install

@Theblood @someshmishra I have already pushed the changes to npm so just update to 1.2.0 please.  No need to sync to master.


Water Splash Sound (out of water)

Water Splash on Footsteps are played if you leave through a fire exit whilst in water.

Thanks for the report :)

Thanks for the report :)

You're welcome :3 Do you know if the Apparatus working with Meltdown? I know MoreInteriors had issues with syncing it all etc, just curios if you had same issue or not?

Thanks for the report :)

You're welcome :3 Do you know if the Apparatus working with Meltdown? I know MoreInteriors had issues with syncing it all etc, just curios if you had same issue or not?

Are you talking about https://thunderstore.io/c/lethal-company/p/loaforc/FacilityMeltdown/ ?
I haven't tried it. I meticulously set up the apparatus the same way Zeekers set it up for the facility levels. It works the way I think it should work (kills all the lights). Maybe the mod is very specific to looking for facility prefabs so it doesn't work everywhere generally? Worth a test since it will always spawn in the pool rooms interior. :)

Also these duplicates intended? and no worries will find out if it works! <3 :D

 Also these duplicates intended? and no worries will find out if it works! <3 :D

Hey so those errors are caused by LethalLevelLoader trying to add my dummy prefabs to the network prefab list. I use the dummies to know which prefabs to replace with zeekers real ones. Hopefully we get a way to prevent this from happening, but the error seems benign since it's basically saying "tried to add non-networked prefab to the networked prefabs list". Nothing bad seems to occur from this, Unity just ignores adding them as it should but complains about it as it should. :)

Ah okay, this might be resolved in tomorrows update! Batby said they'll try and get an update out tomorrow!
You in the discord yet?

Can confirm Meltdown works in SIngleplayer, will test in Multiplayer as soon as I can ^^

Yep, I am on the discords. Maybe I should make a mod release post? haha

Yeah go for it! haha get some more eyes on this! Also Meltdown works in both Singleplayer and Multiplayer for me! <3

Fixed in 0.1.7. I will keep this open while we ensure it is truly fixed, but I think I got it. All local clients get the update to clear the water footsteps so it should all be covered.


feat(kademlia): protected nodes

Add configuration for adding protected nodes on the bootnodes. This change will prevent kicking out of the protected nodes to ensure better connectivity.

This change is

cmd/bee/cmd/start.go, line 141 at r1 (raw file):
Previously, acud (acud) wrote…
we might want to apply this for other nodes too

In the current flow, the kicking-out behavior is only applicable for bootnodes. Which is why I added the check. This then becomes wrong configuration from user which is why I am returning error.

also, test is flaking:
=== RUN   TestBootnodeProtectedNodes
    kademlia_test.go:1336: expected error oversaturated , got empty bin
--- FAIL: TestBootnodeProtectedNodes (0.08s)

pkg/topology/kademlia/kademlia.go, line 1356 at r2 (raw file):
Previously, acud (acud) wrote…
not sure how this plays along with the fact you're inside the for loop that iterates over the same slice you're modifying, but this is about the implementation of the range statement. You might want to for ..., i<len(peers), i++ {}  manually to make this clearer, but then you'll have to i++ only in case you did not remove an element (since once you remove an element, you basically need to inspect the same index next time you iterate)

Yes, you are right, this can definitely cause issues. Fixed.

pkg/topology/kademlia/kademlia.go, line 896 at r3 (raw file):
Previously, acud (acud) wrote…
also, it is misleading that an error of oversaturation is being returned here...

We enter this loop only if the bin is overSaturated. The only reason why randomPeer would return empty bin error is if all the nodes are protected. This still means the bin is oversaturated, which is why I dont use the emptyBin error. Actually I was not sure why we would get empty bin here in the first place?

pkg/topology/kademlia/kademlia.go, line 896 at r3 (raw file):
Previously, acud (acud) wrote…
so... i am trying to think about some edge cases... imagine we have by coincidence few static nodes in one bin, it could be (even in the test) that you end up with no peers to remove. it is a bit of an edge case (it would require that the bin is oversaturated with static nodes). not completely unlikely but would require us to have a lot of bootnodes

but then even in this case, I think returning oversaturated error makes more sense as randomPeer would fail with empty bin when we have saturated bin with protected nodes right?


Update frontConfirmationExaminers.tex

Hi Dr, Jafhate here from the UiTM online workshop. Here are the changes, but Im not sure about the \apply function.

It does not solve the problem.


Implement a global process informantion discovery mechanism

Currently, Parca Agent doesn't have a discreet process discovery mechanism. The CPU profiler consumes all the received perf_events and parses necessary process maps and perf maps (or unwind tables) to utilize them on the fly (and caches them for future use).
On top of this, to enrich the collected profiles with metadata, the agent crawls /proc, and the available service discovery mechanism after the profile round finishes. The resulting metadata is also heavily cached.
We want to move on to a discreet discovery mechanism to discover all the processes on the host beforehand. And handle all the necessary metadata discovery and auxiliary files (perf maps, process maps) separate from the profiling loop. In the long run, the plan is also for this component to handle all the updates of the auxiliary files.
TODO

[ ] Add a public RFC for the proposed design.

needed by: #1
probably will handle: #984
cc @javierhonduco

Done by #1507


HTML decoration is broken by escaping

HTML produced by HTML decorator is then escaped, producing output like
<text class="black">HELLO</text>

instead of
<text class="black">HELLO</text>

Reproducer added in PR #102

This can be seen in production on Testing Farm, for example https://artifacts.dev.testing-farm.io/6fb6fac2-c922-424b-a937-95c7e07ee636/


Compute the real size of indexes

When returning the size used by an index, instead of returning the size on disk we return the real size used by meilisearch without the cached pages contained in heed

@irevoire can we close this?


Remove Unused Code

Noticed we've created two event listener for the control y axis limit. I've removed one of them.
For the update functions, I've removed them cause they are not needed since when we create graph we begin by selecting the graph elements and  remove them after which we update the graph

Merged conflicts


cast strings

Description

Pipeline Reference

Pipeline

Type of Change

[ ] Update to CI Environment or utlities (Non-module effecting changes)
[ ] Azure Verified Module updates:

[ ] Bugfix containing backwards compatible bug fixes, and I have NOT bumped the MAJOR or MINOR version in version.json:

[ ] Someone has opened a bug report issue, and I have included "Closes #{bug_report_issue_number}" in the PR description.
[ ] The bug was found by the module author, and no one has opened an issue to report it yet.

[ ] Feature update backwards compatible feature updates, and I have bumped the MINOR version in version.json.
[ ] Breaking changes and I have bumped the MAJOR version in version.json.
[ ] Update to documentation

Checklist

[ ] I'm sure there are no other open Pull Requests for the same update/change
[ ] I have run Set-AVMModule locally to generate the supporting module files.
[ ] My corresponding pipelines / checks run clean and green without any errors or warnings

Looks good to me @ahmadabdalla, what are your thoughts?

@AlexanderSehr yeah I am happy with the current implementation but I am getting some deployment failures that I need to diagnose. Essentially the failures are all due to references to nonexistent resources although they are specified properly like "networkManager.id".. I am thinking to implement an explicit depends on. Something tells me we have seen these problems in the past

@AlexanderSehr yeah I am happy with the current implementation but I am getting some deployment failures that I need to diagnose. Essentially the failures are all due to references to nonexistent resources although they are specified properly like "networkManager.id".. I am thinking to implement an explicit depends on. Something tells me we have seen these problems in the past

That rather sounds like an ICM issue I opened a while back. Feel free to add your observations here: https://github.com/Azure/bicep/issues/13457


How to define an asynchronous callback?

I'm not clear on how to define asynchronous callbacks. I tried the function (gotData) below but that doesn't work (never gets invoked).
(d3.csv CSV gotData)

(var gotData
  (function (err data)
    (if err
      (throw err)
      (console.log data))))

Thanks in advance.

Try
    (d3.csv CSV
      (function (err data)
        (if err
          (throw err)
          (console.log data))))

It works! Correct me if I'm wrong but does that imply that only anonymous functions can be used for callbacks, i.e., there is no way to declare the hander separately, as a function definition?

I just spotted in your docs a section on callback sequencing. The answer may lie there. Don't close this issue yet please. I'll try and expand my test and repost shortly.


[TASK] Move the coverage generation to a separate CI workflow

This makes the CI configuration easier to understand.

Also, we are now not getting a 'Code coverage' on push, it seems.


Fix 'NoneType' object has no attribute when querying during Session not available retry

Description
When Session Retry, Timeout Failover, and Endpoint Discovery retry policies are triggered and do no successfully retry during a Query, a bug occurs that raises a 'NoneType' object has no attribute from a request object. This was caused from the request to fetch the queried items returning back to the base request to start the query. Instead of returning the Cosmos Exception from not successfully retrying, the retry would happen again for the base query request, but the base query request does not have a reference to the Request Object (This is where the 'NoneType' object has no attribute error comes from). This is fixed by allowing the cosmos exception to surface by not retrying at the base request since we already used up the retry attempts while fetching the items during the query.

/azp run python - cosmos - ci

API change check
API changes are not detected in this pull request.

/azp run python - cosmos - tests

/azp run python - cosmos - tests

/azp run python - cosmos - tests


Unpin libvirt-python

http://tracker.ceph.com/issues/24168
Signed-off-by: Zack Cerza<EMAIL_ADDRESS>

@dmick Jenkins tested it on trusty, and I retested on trusty manually (as well as MacOS, because that's ever-so-relevant ;)


Can't resolve timers/promises

import {setTimeout} from "timers/promises"

Resolve error: typescript with invalid interface loaded as resolver eslint(import/no-duplicates)

I'm also unable to disable the error with // eslint-disable-line

Please provide a runnable reproduction.

I'm having some trouble reproducing it from scratch. I did find a clue:
module.exports = {
    [...]
    settings: {
        "import/resolver": {
            node: {
                extensions: [".js", ".ts"],
            },
            typescript: {},
        },
    },
}

If I comment out typescript: {}, the error goes away. Somehow, when the value is set to an empty hash, it trips up the resolver.

Without a runnable reproduction, I can't imagine what is going on, sorry.

Duplicate with https://github.com/alexgorbatchev/eslint-import-resolver-typescript/issues/93
See also https://github.com/inspect-js/is-core-module/blob/main/core.json#L117


Latest release 0.1.17 breaks dependent modules

I use copy-webpack-plugin, and it started to throw errors. I have found that only node-dir npm have been updated recently to 0.1.17. Installing 0.1.16 explicitly solves the problem with copy-webpack-plugin

I use<EMAIL_ADDRESS>

truffle breaks as well with
TypeError: path must be a string
    at TypeError (native)
    at Object.fs.stat (fs.js:830:11)
    at Object.files (/opt/circleci/nodejs/v4.8.3/lib/node_modules/truffle/node_modules/node-dir/lib/paths.js:164:8)

Confirmed. I use<EMAIL_ADDRESS>as well and the<EMAIL_ADDRESS>build brakes the plugin. Implicitly installing 0.1.16 fixed the issue.

The issue occurs when using node version < 6 as Buffer.from introduced in b40a44a74ecd8b582643088a08dab8d10c4919f6 is not compatible with node < 6.
I guess the bug is that package json of node-dir claims compatibility with
"engines": {
"node": ">= 0.10.5"
},

I opened another issue prior to seeing this one. Here's my 2 cents from that other issue.
TLDR: Rollback 0.1.17 and make a 0.1.18 that matches 0.1.16, then release a 1.0.0 with breaking changes since people seem to think ^ is safe...
In the latest release published ('0.1.17': '2017-05-30T11:07:09.749Z') it seems to have broken compatibility with node.js 4.X. The module make use of Buffer.from, but this is not supported in node.js v4.
Would you be open to making a new patch release of 0.1.18 that removes reliance on Buffer.from, and perhaps is simply 0.1.16 code all over again to fix peoples builds? After this then publish a 1.0.0? The reason I suggest a 1.0.0 is because copy-webpack-plugin relies on this module as a ^ dependency, so even if you release 0.2.0 with Buffer.from it will still cause issues for many people making builds with node.js 4.X. In a 1.0.0 it would make sense to set "engines" in package.json to `>=5.x too.

We are using node 4.2.4 and copy-webpack-plugin version 1.1.1 and seems like copy has stopped working.Curious what can be done to unblock us atm.

@fshost ?

You can add "node-dir": "0.1.16" to your own package.json as a workaround for now at least - might only work if you use a slightly newer npm, but we're good.

I forked this project long ago and it's in use by many. I just published to npm. Give it a try
https://www.npmjs.com/package/path-reader

Can confirm that path-reader supplies a compatible API that just worked for my use case.

I like the terminology of "drop-in replacement". Going to start using that in my republish of forks. Way better than plug-n-play replacement or other cheesy variant.


Change font path

Hello,
I am trying to integrate with an existing Grunt build system to change the font path within dist/css/lumx.css. is the ../fonts/ path configurable in the scss files? Ultimately the build requires that all fonts and images reference 'assets/fonts/' etc. instead of ../fonts/. Alternatively can you recommend an appropriate grunt task to perform such a change?
Thanks in advance.
Nolan

Hi!
By importing lumx into your sass file, you can just override the paths with this:
$roboto-font-path: "assets/fonts/roboto";
$md-icons-font-path: "assets/fonts/md-icons";

@import 'bower_components/lumx/dist/scss/main/_lumx.scss';

Without sass, as I don't use grunt, I'm not familiar with tasks to do this. I think grunt-text-replace might be what you're looking for, but there may be better solutions.

As there is nor more font to include in the project, I close the issue.


Update calendar on manual date entry or Tab

With a form input where you allow manual entry, I think there should at least be a setting where if a user enters a date and then either clicks away or hits Tab, flatpickr updates its value.
Right now, you have to hit Enter for the calendar to update.  Also, I think upon hitting either Enter or Tab, the calendar should automatically close (right now it stays open).
Whaddya think?

I think we should try to parse the input as a date on every key press and update the shown calendar accordingly, not just on enter/tab/blur.

There are problems with the implementation.
This only works when the date format is exactly the same as the input date.
In any other case, the cursor position is lost/wrong

Also, I think upon hitting either Enter or Tab, the calendar should automatically close (right now it stays open)

This I will likely implement by next release.

Thanks chmln im waiting this implementation :) love your plug-in.

I like @getup8 suggestion. I'm assuming that

This only works when the date format is exactly the same as the input date.

is referring to @emilv suggestion?
Another option would be to include an onBlur: handleBlur option from which a user could call flatpickr.setDate(date) if that's the behavior they want. For example:
handleBlur (dateStr, flatpickr) {
  flatpickr.setDate(dateStr)
}

I guess there could be other use cases where a user would like to perform some actions during onFocus or onBlur events?

I like @mikeskaug's suggestion, having the option to handle onBlur() in a way of our own choosing would be extremely helpful. Right now in my application the user can manually change the date/time text to a valid value, but then has to press enter AND click apply in order for that change to propagate. It's very misleading that they can enter a valid date, then click apply, but the changes in the form don't actually take place.

This is trivial to accomplish with a couple of hooks.
See https://jsfiddle.net/chmln/qf2b5yLa/2/

This is still not fixed. See #1551, #639
@chmln your snippet does not work. Answers like "Fix it yourself, we don't care" are completely disrespectful, especially when we're talking about such a basic calendar behavior thing which everyone expects from calendar widget. This is for sure a bug in flatpickr. I'm really disappointed that it's 3+ years since the issue was reported and it's still not implemented.

Answers like "Fix it yourself, we don't care" are completely disrespectful

It is not disrespectful. This is how free and open source software development work. We share code with each other to be nice. If you need a fix you can offer to pay someone to do your fix, or you can do it yourself. It is completely normal, and it is the reason that companies like Red Hat, Google and IBM have people employed to contribute code to the Linux kernel.
You don't get to decide what other people do with their time. But you can control how you use your own.

@emilv you didn't get what I meant. Of course the maintainers of the tool don't have to fix all the incoming requests. However if there is an issue which affects all users of the software, then it should not be closed "just because". I understand lack of resources and other priorities but I do not understand behavior like "we don't care, fix it yourself, closing the issue". Issue is still here, people are still observing it, there are bunch of duplicates around already. This bug should have been kept open.
And I do think that it's very visible and affecting naturally everyone using "manual input" feature. To make it clear - proper title would be "Manual input is broken". If it's not supported - fine, then just remove corresponding option from the documentation and let everyone know that that's not the right tool for it. But it is there, it is claimed as "supported", but in fact it's just broken. And it's broken for 3 years already. That's the problem here.

This is trivial to accomplish with a couple of hooks. See https://jsfiddle.net/chmln/qf2b5yLa/2/

'_' attributes are private and should not be accessed publicly.
If it is so trivial why it is not already implemented in flatpickr ?


ValueError: [CamGear:ERROR] :: Stream Mode is enabled but Input URL is invalid! [Bug]:

Description
When I try to read YouTube video I am getting following errors even with valid YouTube video links.
Traceback (most recent call last):
  File "D:\github codes\deepds\test_file.py", line 25, in <module>
    stream = CamGear(
  File "D:\github codes\deepds\make_dataset\lib\site-packages\vidgear\gears\camgear.py", line 310, in __init__
    raise ValueError(
ValueError: [CamGear:ERROR] :: Stream Mode is enabled but Input URL is invalid!

My code looks like following
from vidgear.gears import CamGear
import cv2
stream = CamGear(
    source="https://www.youtube.com/watch?v=7lDpCPsLcQg",
    stream_mode=True,
    logging=True,
).start()

while True:
    frame = stream.read()
    if frame is None:
        break

    cv2.imshow("Output", frame)

    # check for 'q' key if pressed
    key = cv2.waitKey(1) & 0xFF
    if key == ord("q"):
        break

cv2.destroyAllWindows()
stream.stop()

I previously used this amazing library in my cli script to download frames from YouTube. This Code was working fine. Now its not working anymore. I am using this library in one of my open source projects but Invalid URL error is appearing every time I try with new URLS (although URLs are valid). I can not track the origin of this error.
Issue Checklist

[X] I have searched open or closed issues for my problem and found nothing related or helpful.
[X] I have read the Documentation and found nothing related to my problem.
[X] I've read the Issue Guidelines and wholeheartedly agree.

Expected behaviour
The code should display the YouTube video captures using VidGear and display using OpenCV
Actual behaviour
The program thinks the URLs are invalid. Although I am providing valid URLs for displaying the YouTube videos. When the URL is valid so the code should display the frames but it is not executing as expected so I think this is an internal bug in CamGear.
Steps to reproduce

After installation of OpenCV and VidGear run following code

from vidgear.gears import CamGear
import cv2
stream = CamGear(
    source="https://www.youtube.com/watch?v=7lDpCPsLcQg",
    stream_mode=True,
    logging=True,
).start()

while True:
    frame = stream.read()
    if frame is None:
        break

    cv2.imshow("Output", frame)

    # check for 'q' key if pressed
    key = cv2.waitKey(1) & 0xFF
    if key == ord("q"):
        break

cv2.destroyAllWindows()
stream.stop()

Terminal log output
(make_dataset) PS D:\github codes\deepds> python .\test_file.py
08:02:22 ::    Helper     ::   INFO   :: Running VidGear Version: 0.3.0
08:02:22 ::    Helper     :: WARNING  :: GStreamer not found!
08:02:22 ::    Helper     ::  DEBUG   :: Selecting `best` resolution for streams.
08:02:22 ::    CamGear    ::   INFO   :: Verifying Streaming URL using yt-dlp backend. Please wait...
ERROR: [youtube] WX7bNiLofIA: Unable to extract uploader id; please report this issue on  https://github.com/yt-dlp/yt-dlp/issues?q= , filling out the appropriate issue template. Confirm you are on the latest version using  yt-dlp -U
Traceback (most recent call last):
  File "D:\github codes\deepds\make_dataset\lib\site-packages\yt_dlp\YoutubeDL.py", line 1502, in wrapper
    return func(self, *args, **kwargs)
  File "D:\github codes\deepds\make_dataset\lib\site-packages\yt_dlp\YoutubeDL.py", line 1578, in __extract_info
    ie_result = ie.extract(url)
  File "D:\github codes\deepds\make_dataset\lib\site-packages\yt_dlp\extractor\common.py", line 680, in extract
    ie_result = self._real_extract(url)
  File "D:\github codes\deepds\make_dataset\lib\site-packages\yt_dlp\extractor\youtube.py", line 4049, in _real_extract
    'uploader_id': self._search_regex(r'/(?:channel|user)/([^/?&#]+)', owner_profile_url, 'uploader id') if owner_profile_url else None,
  File "D:\github codes\deepds\make_dataset\lib\site-packages\yt_dlp\extractor\common.py", line 1228, in _search_regex
    raise RegexNotFoundError('Unable to extract %s' % _name)
yt_dlp.utils.RegexNotFoundError: [youtube] WX7bNiLofIA: Unable to extract uploader id; please report this issue on  https://github.com/yt-dlp/yt-dlp/issues?q= , filling out the appropriate issue template. Confirm you are on the latest version using  yt-dlp -U

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "D:\github codes\deepds\make_dataset\lib\site-packages\vidgear\gears\camgear.py", line 146, in __extract_meta
    extracted_data = ydl.extract_info(self.source_url, download=False)
  File "D:\github codes\deepds\make_dataset\lib\site-packages\yt_dlp\YoutubeDL.py", line 1491, in extract_info
    return self.__extract_info(url, self.get_info_extractor(key), download, extra_info, process)
  File "D:\github codes\deepds\make_dataset\lib\site-packages\yt_dlp\YoutubeDL.py", line 1520, in wrapper
    self.report_error(str(e), e.format_traceback())
  File "D:\github codes\deepds\make_dataset\lib\site-packages\yt_dlp\YoutubeDL.py", line 1012, in report_error
    self.trouble(f'{self._format_err("ERROR:", self.Styles.ERROR)} {message}', *args, **kwargs)
  File "D:\github codes\deepds\make_dataset\lib\site-packages\yt_dlp\YoutubeDL.py", line 952, in trouble
    raise DownloadError(message, exc_info)
yt_dlp.utils.DownloadError: ERROR: [youtube] WX7bNiLofIA: Unable to extract uploader id; please report this issue on  https://github.com/yt-dlp/yt-dlp/issues?q= , filling out the appropriate issue template. Confirm you are on the latest version using  yt-dlp -U

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "D:\github codes\deepds\make_dataset\lib\site-packages\vidgear\gears\camgear.py", line 270, in __init__
    ytbackend = YT_backend(
  File "D:\github codes\deepds\make_dataset\lib\site-packages\vidgear\gears\camgear.py", line 108, in __init__
    self.meta_data = self.__extract_meta()
  File "D:\github codes\deepds\make_dataset\lib\site-packages\vidgear\gears\camgear.py", line 149, in __extract_meta
    raise RuntimeError(" [Backend] : " + str(e))
RuntimeError:  [Backend] : ERROR: [youtube] WX7bNiLofIA: Unable to extract uploader id; please report this issue on  https://github.com/yt-dlp/yt-dlp/issues?q= , filling out the appropriate issue template. Confirm you are on the latest version using  yt-dlp -U

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "D:\github codes\deepds\test_file.py", line 25, in <module>
    stream = CamGear(
  File "D:\github codes\deepds\make_dataset\lib\site-packages\vidgear\gears\camgear.py", line 310, in __init__
    raise ValueError(
ValueError: [CamGear:ERROR] :: Stream Mode is enabled but Input URL is invalid!

### Python Code(Optional)

```python
from vidgear.gears import CamGear
import cv2
stream = CamGear(
    source="https://www.youtube.com/watch?v=7lDpCPsLcQg",
    stream_mode=True,
    logging=True,
).start()

while True:
    frame = stream.read()
    if frame is None:
        break

    cv2.imshow("Output", frame)

    # check for 'q' key if pressed
    key = cv2.waitKey(1) & 0xFF
    if key == ord("q"):
        break

cv2.destroyAllWindows()
stream.stop()

VidGear Version
0.3.0
Python version
3.9.0
OpenCV version
<IP_ADDRESS>
Operating System version
Windows 11 Pro with OS Build 21996.1
Any other Relevant Information?
#133 suggests to use different backend but I think the issue is not with the backend as the error suggests that URL is invalid.

@qaixerabbas this is a old bug https://github.com/yt-dlp/yt-dlp/issues/6247#issue-1587580332 and already fixed. Kindly update your yt-dlp installation.
pip install -U yt-dlp

@abhiTronix thanks for the comment. I was previously trying to upgrade but it was not working. I upgraded it yt-dlp installation and it works fine now. Thanks.


Avro schema evolution

Per @chadmott note in #165

if your schemes are designed to be fully compatible, which ours are, we have the services poll the registry every five minutes and take latest schema. This works for us, but we are small team and have tight control over the schemas and services.

That said the better way to do it would be to use a schemaAtVersion/N, and have an endpoint in each service that accepts that call and updates it’s schema reference to a version number. Update the schema and then execute the REST call to the microservice to use it.

We have to also support schema evolution for Avro in some way.

Some observations from the docs:

A schema has a unique ID and a version, but when a schema is updated, it is assigned a new unique ID (and a version)

=> For our purposes, we can ignore "version"
Relevant to the implementation:

fetching a schema by subject: Schemex.latest/2
fetching a schema by ID: Schemex.schema/2

Schema evolution is done according to compatibility types; they define what can change and whether consumer or producers need to be upgraded first.

By example, assuming a schema should be upgraded and there is a frontend that supports the current version:

what changed
compatibility type
what is updated first
effect
versions RIG must support

A new optional field is added.
BACKWARD
consumers
Even if the old frontend wouldn't be updated first, as a tolerant reader the frontend would simply ignore the additional field.
latest

A (non-optional) field is removed.
BACKWARD
consumers
The old frontend needs to be upgraded first, so it no longer depends on the deprecated field.
latest

A new (non-optional) field is added.
FORWARD
producers
The old frontend doesn't use the new field, so it'll simply ignore it.
latest

An optional field is removed.
FORWARD
producers
The old frontend might have relied on the optional field - it's optional when encoded in Avro, but translated to schema-less JSON any optional field becomes effectively mandatory. In other words, to a frontend this is a breaking change. Naturally, backend developers might not know that or forget about it as the Confluent docs clearly state they should upgrade producers first.
latest, if the frontend team keeps track which fields are considered optional; or any, if the frontend team doesn't know about the schema that underlies the JSON event they see.

Delete the whole thing and start over.
NONE
?
?
any

If we're gonna support the NONE type, there's not really a lot we can do other than supporting all versions there are.


Initial commit for move to flask-ask.

This is a big update and the precursor to v2.5!
I have moved to flask-ask to help make the skill as clean as possible. This move allows the skill easier compatibility, and I believe it will make translation work very trivial since everything is in a template file now. Using something like babel should allow easy translation going forward (German first. We'll see what other languages Amazon will expand to soon).
I have moved the necessary code from wsgi.py to alexa.py and the main application method is now just app. So there will be some changes needed to upgrade current versions.
This is not ready for a merge into master yet due to documentation needing to be updated. However it is ready for testing.
Please let me know if you have any questions.

You have been busy :)
Could this also be a good time refactor the code into smaller modules?
The language issue is definitely something that we need to make sure is able to be addressed and if possible get it working for the initial release.
I will have a test and make some suggestions (I had a look at a flask-ask conversion a little while ago also).
How does the new .env file work in regards to timezones?

How does the new .env file work in regards to timezones?
Timezones shouldn't be needed anymore since we're not verifiying the timestamp. According to this https://alexatutorial.com/flask-ask/configuration.html we shouldn't be at least. I guess if you want to enable it, it'd still figure it out without the timezone data.

Could this also be a good time refactor the code into smaller modules?
I actually don't mind how it is now that the WSGI and Lambda still is ripped out of alexa.py. It's just intents in there now which is how it should be.

The language issue is definitely something that we need to make sure is able to be addressed and if possible get it working for the initial release.
Yeah, it's been something I keep getting emails about and I'm excited to get some good stuff going for our German speaking friends.

Time zone is used to determine the local end time of the currently playing item.

Okay, that's my bad. We can add that back in no problem then.

Trying to check this out, but.. how do you call a Flask-Ask app from mod_wsgi?
The Flask documentation says to just import it as application:
from alexa import app as application
But that is giving me nothing at all.  I tried importing the Ask object, but it says that object is not callable.

Digging a bit further, it seems it's kind of working.. but I'm getting this odd routing exception:
FormDataRoutingRedirect: A request was sent to this URL (https://mydomain/kodi-alexa/) but a redirect was issued automatically by the routing system to "https://mydomain/kodi-alexa/".  Make sure to directly send your POST-request to this URL since we can't make browsers or HTTP clients redirect with form data reliably or without user interaction.
I don't really understand Flask well enough yet to know why, though.

Digging a bit further, it seems it's kind of working.. but I'm getting this odd routing exception:
FormDataRoutingRedirect: A request was sent to this URL (https://mydomain/kodi-alexa/) but a redirect was issued automatically by the routing system to "https://mydomain/kodi-alexa/".  Make sure to directly send your POST-request to this URL since we can't make browsers or HTTP clients redirect with form data reliably or without user interaction.
I don't really understand Flask well enough yet to know why, though.

Went through every Intent systematically and things are mostly working.  Only encountered a failure on the WhatNewAlbums intent:
[Sat Dec 31 20:34:02.575985 2016] [wsgi:error] [pid 15066] [client <IP_ADDRESS>:29336] UnicodeEncodeError: 'ascii' codec can't encode character u'\\xef' in position 33: ordinal not in range(128)
Haven't looked into it really, but it seems we might need to sanitize the responses some.

Went through every Intent systematically and things are mostly working.  Only encountered a failure on the WhatNewAlbums intent:
[Sat Dec 31 20:34:02.575985 2016] [wsgi:error] [pid 15066] [client <IP_ADDRESS>:29336] UnicodeEncodeError: 'ascii' codec can't encode character u'\\xef' in position 33: ordinal not in range(128)
Haven't looked into it really, but it seems we might need to sanitize the responses some.

Sorry to hear that. I'm hoping the switch will ultimately be worth the initial hassle though. The lambda process is a bit different too.

Went through every Intent systematically and things are mostly working.

Thanks for doing that. I haven't made it through every single one myself.

Haven't looked into it really, but it seems we might need to sanitize the responses some.

That doesn't surprise me that much. This is as good of a time to do it as ever.

Yeah, it's a positive change. The Flask documentation's just not the greatest to be honest and am a bit worried about debugging issues when they arise for others.
Mostly it'd be nice if it provided output for at least errors by default without having to enable debug mode.  I might have missed that in the documentation, though.
As for the responses, it seems something just got converted to ASCII along the way that should have remained unicode.  If you don't spot it within the week, I'll have a look.  Have to go back to the real job tomorrow though and am likely to be kept busy there for a little while.

As for the responses, it seems something just got converted to ASCII along the way that should have remained unicode.

I think I fixed this in my last commit.

As for the responses, it seems something just got converted to ASCII along the way that should have remained unicode.

I think I fixed this in my last commit.

On my list of things to check when I get off work.

I think we may have hit a limit with regard to how big the Intent model can be.  I can't be sure, of course, but I think every time you reference a slot in the Intent model, it creates a copy of it and there's some overall limit that (at least to my knowledge) Amazon hasn't exposed.  Probably because they thought no one would hit it :)
If I try to save the current Intent model, it appears to succeed, though it takes a really long time to do so.  However, when using the simulator, I get:
Error: No intent model has been built for this skill
If I remove my songs from the MUSICSONGS slot (simply because it's the largest list, sitting at 26000 entries), everything works again.
Not really sure what to do about this, since users' libraries are lopsided in different ways; i.e., mine has many more songs, but others might have a crazy number of shows, or movies, etc.

The WhatNewAlbums Intent still produces the same encoding error as before.  I suspect any other Intent with non-ASCII characters in the response will too.
Sending request to http://localhost:8080/jsonrpc
[2017-01-03 18:02:53,799] ERROR in app: Exception on / [POST]
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/flask/app.py", line 1982, in wsgi_app
    response = self.full_dispatch_request()
  File "/usr/lib/python2.7/dist-packages/flask/app.py", line 1614, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/usr/lib/python2.7/dist-packages/flask/app.py", line 1517, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/usr/lib/python2.7/dist-packages/flask/app.py", line 1612, in full_dispatch_request
    rv = self.dispatch_request()
  File "/usr/lib/python2.7/dist-packages/flask/app.py", line 1598, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/usr/local/lib/python2.7/dist-packages/flask_ask/core.py", line 516, in _flask_view_func
    result = self._map_intent_to_view_func(self.request.intent)()
  File "/var/www/ha/echo/kodi-alexa/alexa.py", line 1746, in alexa_what_new_albums
    return statement(response_text).simple_card(card_title, response_text)
  File "/usr/local/lib/python2.7/dist-packages/flask_ask/models.py", line 106, in __init__
    super(statement, self).__init__(speech)
  File "/usr/local/lib/python2.7/dist-packages/flask_ask/models.py", line 53, in __init__
    'outputSpeech': _output_speech(speech)
  File "/usr/local/lib/python2.7/dist-packages/flask_ask/models.py", line 244, in _output_speech
    xmldoc = ElementTree.fromstring(speech)
  File "/usr/lib/python2.7/xml/etree/ElementTree.py", line 1311, in XML
    parser.feed(text)
  File "/usr/lib/python2.7/xml/etree/ElementTree.py", line 1651, in feed
    self._parser.Parse(data, 0)
UnicodeEncodeError: 'ascii' codec can't encode character u'\\xed' in position 51: ordinal not in range(128)```

Not really sure what to do about this, since users' libraries are lopsided in different ways; i.e., mine has many more songs, but others might have a crazy number of shows, or movies, etc.

Might just need to limit the Slot Generator to 10k or something and see if that works. It's not ideal, but it'll give us a decent idea about how many they allow.

The WhatNewAlbums Intent still produces the same encoding error as before. I suspect any other Intent with non-ASCII characters in the response will too.

Try it again after the commit I just made. I think it's a special case on this intent.

Okay, I added German translations for card and voice responses (just used Google Translate, so I'm sure it's awful), but it's working and automatically translates if it's configured as a German skill.
Also, last night I pushed up some new intents that handle streaming party mode and all music by an artist to your Echo/Dot/Tap. This requires a bit of setup. You have to configure a mongoDB server and add information about it to the .env file as well as accept a warning I put in there about passwords being sent over the wire in plaintext.
One of the biggest hassles with steaming music is that Amazon won't allow non HTTPS urls, and if it has an SSL cert, it can't be self-signed. For a lot of people this is too complex, so I wrote a little HTTPS proxy that'll work (again, if they accept the warning message). It's configured so that you can run your own proxy (mine is just here on Github), or you can just have a Let's Encrypt cert on your local machine if you are running an reverse-proxy for Kodi already.

Not really sure what to do about this, since users' libraries are lopsided in different ways; i.e., mine has many more songs, but others might have a crazy number of shows, or movies, etc.
Might just need to limit the Slot Generator to 10k or something and see if that works. It's not ideal, but it'll give us a decent idea about how many they allow.

The problem is that I don't believe it's a limit on any given slot, or even the total of all slots.  I think it's the cumulative number of entries in the slot references by the Intent model.  That is, I think simply referencing slots increases some counter (or maybe it's just an overflow, who knows) that has a ceiling on it that Amazon has not disclosed.
I think this because I tested it pretty thoroughly a little while ago while I was writing the generic search/play code.  The 50k items in slots limit is published by Amazon, but I don't have 50k items in my slots in total.  However, adding a new Intent that referenced existing slots caused it to fail, just as what you added makes it fail in the same manor on my installation.

The WhatNewAlbums Intent still produces the same encoding error as before. I suspect any other Intent with non-ASCII characters in the response will too.

Try it again after the commit I just made. I think it's a special case on this intent.

It is indeed fixed, though it adds 'and' in between every item:
You have Storm by Vanessa Mae, and  Ölürüm Sana by Tarkan, and  She Was a Boy by Yael Naïm, and  Peace And Love, Inc. by Information Society, and  Love In The Time Of Science by Emilíana Torrini, and more

I saw that. It's just a logic issue. Should be a pretty easy fix.

Give it a shot now.

Yup, that's good now.

Also, last night I pushed up some new intents that handle streaming party mode and all music by an artist to your Echo/Dot/Tap.

It'd be good to factor out the generic code for this so we don't duplicate all of the existing music playback methods.  But it'd probably be better to close out the Flask-Ask changes before doing so, because I've already got code ready for more generic playback that already refactors some of it.
I was holding off on releasing the generic search/play code because of the Intent model size issue though.  I think before we can merge this branch we need to figure out how to properly solve that.

Okay, I added German translations for card and voice responses (just used Google Translate, so I'm sure it's awful), but it's working and automatically translates if it's configured as a German skill.

@ausweider provided some initial effort for German here: https://github.com/ausweider/kodi-alexa/commit/03e131329ea85700baf7ecda45a9039a5da09d2d
Could have a look at how he/she chose to translate the strings since he/she is a native speaker.  It's a bit outdated, but could provide some direction.

Re Slots and dealing with 20k of them.
The ASK documentation is vague, I might have the wrong end of the stick completely, I would be interested to discuss...
From what I have read it is my understanding that the purpose of a slot is to help identify and extract particular parts from the entire sentence. A number as a number, a name as a name, a song as a song etc. And to help identify what you are looking for you provide examples for what each slot might contain. Alexa uses the examples to "intelligently" match similar patterns.
A simple example is you have a slot of 10 song titles that were all exactly five words long, and a slot of 10 artists that were all exactly two words long. When you tell the Skill to "play radio gaga", chances are it will identify "radio gaga" as an artist and send the "search artists" request to Kodi and end up playing Lady Gaga.
If you swapped one of the five word song titles with a two word title (so 1x two-word and 9x five-word), then it would (I assume) still identify "radio gaga" as an artist. Alexa could see that there is a small percentage of two word songs but based on what she knows (100% of artists contain two words, 90% of song titles five words and only 10% of song titles are two words) she would have to treat it as an artist.
This is not the best example as the problem (as I am sure you know) with songs, artists and films as they are all super varied and you could easily swap a list of songs with a list of films and not spot the differences.
@jingai have you tried (can you try?) using a curated slot list of 200 songs/artists/albums that covered a broad spectrum of each and then tested it with examples that were not in the slot lists?

The problem is I wouldn't really know how to curate it without fully understanding how Amazon uses them.  Their descriptions of how it matches things to slots is vague at best.
I was thinking of modifying the slot generator to choose N (200, 1000, 5000, whatever works; bigger is better in my experience, so it'd be matter of choosing N where the skill doesn't break) random items for each slot.  But I need to set aside a decent chunk of time to test it.
If string length is also a factor, we could distribute the random choices so we get a roughly equal distribution of samples at varying lengths too.

The other thing to think about is if a user doesn't have enough of a given media type in their library for the Slot to turn "generic".
Might need the Slot generator to spit out some canned entries in that case.

Hopefully the new built-in intents will help when they arrive.
When the UK didn't have IFTTT integration with our Echos, we used a workaround where we could send any phrase to the Maker Channel (webhooks) on IFTTT. I used to use a list of phrases for the sample utterances which would allow me to pass any phrase to the channel.
hello
hi there
it's cold here
my name is Alexa
the weather outside is frightful
the meaning of life is forty-two
what is the weather in Miami Beach
you get nothing you lose good day sir
the quick brown fox jumps over the lazy dog
we are the music makers we are the dreamers of dreams

Yes, but we need to do something in the meantime so those with large libraries aren't faced with an odd failure case like this (Amazon telling the user the Intent model was built just fine, then failing at runtime).
Simply choosing, say, 2500 random items from the library for each slot would probably work for now.  Just need to test it.

I could whip something like that up pretty quickly

Go for it.  It'd be a few days before I could get to it, and I think it'd be a release-stopper for this branch unless you felt like dealing with the storm on the forum lol

Excellent job on the move to Flask-Ask btw.  It'll likely bring a whole new set of issues to deal with on the forums, but it was sorely needed and will be worth it in the long run.
I'll refactor my generic search/play stuff as soon as this is all merged into master.

When we go to actually release 2.5, it might be prudent to put a note in the README and a post on the forum that users should re-generate their slots since I'm sure I'm not the only one with a ton of songs in their library.

Is there anything in particular I should know if I wanted to set up MongoDB on my own server to test out the streaming stuff?  I'll try it out tomorrow night too if I get a chance.

Is there anything in particular I should know if I wanted to set up MongoDB on my own server to test out the streaming stuff? I'll try it out tomorrow night too if I get a chance.

I didn't run it off of my own server, but on mLab, you have to have a username/pass for the database itself, and not just the overall server credentials. Also, the MONGODB_URL variable is just the domain, no HTTP or anything. If that makes sense.

When we go to actually release 2.5, it might be prudent to put a note in the README and a post on the forum that users should re-generate their slots since I'm sure I'm not the only one with a ton of songs in their library.

Good call

Don't think there's any outstanding issues at this point.. I'll run through all of the Intents again tomorrow night and report any issues.

I appreciate it.

Excellent job on the move to Flask-Ask btw. It'll likely bring a whole new set of issues to deal with on the forums, but it was sorely needed and will be worth it in the long run.

I sure hope so. It's been on my mind to do for at least 6 months.

We honestly should have a general section in the README too for upgrading.  I'll make an Issue for it.

Awesome. I'll (He, as female would be Ausweiderin) hopefully get a chance to look at this over the weekend and do some german refining :)

I get the Service Response:
The remote endpoint could not be called, or the response it returned was invalid.

As a test, could you try running your server from something like ngrok (You'll have to update the endpoint in your skills settings as well). I'd be curious to see the exact error.
You can run the server locally by doing something like this: gunicorn alexa:app -b <IP_ADDRESS>:8001 and then in another console window: ngrok http 8001.

Sorry I'm a little late with this, but I checked every Intent again and all seems well.  Only found a minor typo on volume_set in templates.yaml, which I've already fixed and pushed up.

That's great. Thanks for doing that. Did you by chance try out the streaming?

Oh, sorry, I forgot to mention that.  I have not yet set up streaming.

Regardless of #90 , it is becoming clear there are too many different intents using similar phrases for "playback control". There are also custom intents and built-in intents that will cause problems.
"intent": "AMAZON.StopIntent"
"intent": "AMAZON.NextIntent"
"intent": "AMAZON.PauseIntent"
"intent": "AMAZON.PreviousIntent"
"intent": "AMAZON.ResumeIntent"
"intent": "AMAZON.StartOverIntent"

"intent": "PlayPause"
"intent": "Prev"
"intent": "Skip"
"intent": "StartOver"
"intent": "SubtitlesNext"
"intent": "SubtitlesPrevious"
"intent": "AudioStreamNext"
"intent": "AudioStreamPrevious"

From a discussion about the removal of the single word utterance example "previous"

"Alexa, ask kodi to next"
"Alexa, tell kodi previous"
Testing all the prev and skip intents does highlight some clashes with the audio stream controls.
"to previous" = AudioStreamPrevious
"to next" = Skip
"previous" = AMAZON.PreviousIntent
"next" = AMAZON.NextIntent
"next track" = Skip

Does it actually clash with AMAZON.PauseIntent, AMAZON.ResumeIntent, AMAZON.StartOverIntent, AMAZON.NextIntent, and AMAZON.PreviousIntent specifically? I know some of the utterances overlap, but these intents specifically are used only when the stream is playing (or paused), and don't use the Kodi skill invocation.

Yes, it does when I test it. Does it not when you test using the same phrases I tested with above?

@m0ngr31, is there any way to set up streaming so it's not passing the username and password on the URL?  That's not something I really want to do.

I couldn't think of a way to not include the user/pass combo, so let me know if you found a way.

Been trying to make this work for a while now.  I have it to the point where the Echo requests the stream, but for some reason it can't actually get at the file via the VFS path.  Kodi sees the request, but it's not actually sending over the file.
In Kodi 17b6 on my Linux box, the URL it's trying to request returns "File not found" from Kodi.  On one of my Macs with Kodi 17rc3, the response body is empty.
I've tried accessing the URL via curl on both boxes too and get the same results.  I've done this both through the proxy I set up and straight to Kodi.
I'll play with it some more tomorrow, but if you have any ideas, I'd appreciate it.

@m0ngr31, are you able to request a file via your web browser from Kodi?
Like:
http://user:pass@kodihost:8080/vfs/songfilepath
Does it return the file?

Yeah, it always returns a file.

The only thing I can think of right off the bat is that maybe your password has some symbols that need to be escaped or something?

I can't figure out what I am missing then.. none of my Kodi installations return a file to me.  17b6 gives me an empty page with "File not found" in the body.. both of my 17rc3 clients give me empty bodies.
I've url encoded the path, too.

The only thing I can think of right off the bat is that maybe your password has some symbols that need to be escaped or something?

My password is long, but it is alphanumeric [A-z][0-9].

How is your media stored? Locally or on a different computer?

Ahh, it appears the first slash in the path was stripped out somewhere.
I'm guessing maybe you use URIs in your sources like smb:// or whatever.  Mine are just paths on the disk.
So, for me, it was trying to play:
/vfs/Volumes%2Fdata%2FMusic%2FAudio%2FAdult%2FTool%2FUndertow%2F03%20-%20Sober.m4a
which is a relative path, and doesn't work.
But this does:
/vfs/%2FVolumes%2Fdata%2FMusic%2FAudio%2FAdult%2FTool%2FUndertow%2F03%20-%20Sober.m4a
curl -u kodi:password "http://rakka:8080/vfs/%2FVolumes%2Fdata%2FMusic%2FAudio%2FAdult%2FTool%2FUndertow%2F03%20-%20Sober.m4a"
It's also possible that mod_wsgi is stripping the second slash.. IIRC, it does do that.  So I'll probably have to work around it in the proxy.

Ok, I'm munging the URL in the proxy now and it's sending the correct URL to Kodi.  Now just to make the proxy actually work... Node is a PITA to get working with Apache, so I'm trying to get one going via mod_wsgi/Flask.. if you happen to have a link to one, let me know please :)

I just updated the virtual path function if you want to try it again.

This results in a valid path, and I can see the Echo requesting the URL.

Although, if you want one for flask, look at this: http://flask.pocoo.org/snippets/118/

I saw that, but for some reason it isn't working.  Kodi reports that it sees the request, but it loses the connection:
14:20:53.879 T:140581728679680   DEBUG: CWebServer[8080]: request received for /vfs/%2FVolumes%2Fdata%2FMusic%2FAudio%2F
Adult%2FTool%2FLateralus%2F08%20-%20Ticks%20%26%20Leeches.m4a
14:20:53.917 T:140581728679680   DEBUG: CWebServer [MHD]: Failed to send data: Connection reset by peer

I'll get it figured out.. was just hoping I could find something pre-made so I didn't have to write it myself :P

Another language based issue comes up. Sentence construction is vastly different from one language to the other. It's really important to be able to change the order of {VAR} either in a language based .yaml or later on in the .po. I suppose it works for now, but should be adressed at some point.

Another language based issue comes up. Sentence construction is vastly different from one language to the other. It's really important to be able to change the order of {VAR} either in a language based .yaml or later on in the .po. I suppose it works for now, but should be adressed at some point.

@ausweider Hi, just a thought, is there any value in just translating the template file per language rather than translating at init using Babel?
The automatic translation is nice, but considering each user will have to set up the skill themselves, they are able to upload the relevant templates.yaml file depending on their language.
For my local install I have removed all the Babel bits and only use the translated templates.yaml file.
The Babel package is 20mb, I don't know if performance takes a hit when it imports in alexa.py. The function size certainly does. I have also removed pycountry as that was another 10mb package. My lambda function has gone from 26mb to 8.7mb.

Got it, finally :)
I had to sent 'Content-Type' to 'audio' in the headers.  "Alexa, ask Kodi to stream music by artist" is now working.
At some point we should factor out the code in all of the Listen* intents though so we're not duplicating everything.  But it's a good first step!

Where'd you have to add content headers, on the flask proxy?

Yeah, in the flask proxy.  I made the request from there to Kodi, but the headers that came back didn't include the content-type field.  I added it in before passing it all back to the Echo and it works now.
Without the content-type set, the Echo would just close the connection.

Interesting

All of my music is .m4a, which may have something to do with it.

@m0ngr31, the next thing I have on my list to work on is extending the streaming support to work with all of the same variations that the ListenTo* intents currently do.
Just so we don't overlap work though, could you please let me know if you decide to start work on this?

Sometimes when trying to resume an audio stream I get the following:
[2017-01-15 17:17:43,664] ERROR in app: Exception on / [POST]
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/flask/app.py", line 1982, in wsgi_app
    response = self.full_dispatch_request()
  File "/usr/lib/python2.7/dist-packages/flask/app.py", line 1614, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/usr/lib/python2.7/dist-packages/flask/app.py", line 1517, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/usr/lib/python2.7/dist-packages/flask/app.py", line 1612, in full_dispatch_request
    rv = self.dispatch_request()
  File "/usr/lib/python2.7/dist-packages/flask/app.py", line 1598, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/usr/local/lib/python2.7/dist-packages/flask_ask/core.py", line 544, in _flask_view_func
    self._update_stream()
  File "/usr/local/lib/python2.7/dist-packages/flask_ask/core.py", line 513, in _update_stream
    fresh_stream.__dict__.update(self._from_context())
TypeError: 'NoneType' object is not iterable

It looks like an issue with Flask-Ask, but I figured I'd let you know anyway.
If I keep repeating the command, it will eventually work.

That's the "ifs" sorted :)
but we should also add the various "is" and "do" examples

It'll happen.  Just trying to establish a baseline and push up as few changes as possible to get this branch mergeable.

Without the content-type set, the Echo would just close the connection.

Can you share the code for your proxy?

The automatic translation is nice, but considering each user will have to set up the skill themselves, they are able to upload the relevant templates.yaml file depending on their language.

That's a good point. It might be easier to maintain going forward instead of having weird translation issues like we are going to be running into shortly from having variable names in strange places.

I have also removed pycountry as that was another 10mb package. My lambda function has gone from 26mb to 8.7mb.

If we have separate templates.yaml files, we can definitely rip out pybabel.  It just looks like it's being used on 2 intents that probably aren't used much.

I'll share the proxy code tomorrow.
As for pycountry, I do use it, so I'd prefer it if we retained the functionality.
pycountry itself is literally just a few lines of python.  On Debian, the pycountry package is 15KB (including README, changelogs, etc).  The language database isn't huge either, but it comes as part of the iso-codes package, which includes a lot of stuff we don't use.
I suppose you could just take pycountry's code as well as the ISO 3166-1 alpha-3 codes and include it in the skill.
The sizes we're talking about here are all pretty small these days.. I'm not sure you'll see any noticeable performance gains just by ripping out 17MB.  I'd personally rather import it and let others maintain it, though it probably isn't likely to change much over time.

re pycountry, I am not sure if the numbers are the same, but I did test the difference with and without (though it was many many commits ago). "With pycountry" was adding around a second onto the response time on AWS Lambda.
From what I can tell the current use is to convert the three character country code into the full language name i.e. eng to English, fre to French, dan to Danish. This is so when you switch subtitles Alexa can respond with the more comprehensible  "English" rather than "eng".
I didn't want to PR just yet as it can perhaps wait until the new Flask version is up.  But I have put together a lightweight alternative if you want a look to see if it is suitable: https://github.com/digiltd/kodi-alexa/tree/flask-ask-remove-pycountry

If it does indeed slow things down for Lambda/etc users to use pycountry and your replacement is functionally the same, it's fine with me.

I'm fine moving away from pycountry and babel. I think having a dedicated templates file for other languages will be simpler in the long run. I have just a couple of issues with your branch @digiltd, I'll try to make a PR for it in the next couple of days.

There is a small issue regarding using the current .env method for environment variables when deploying with Zappa that might want to be addressed at some point. The solution would probably overcomplicate setup for users to a point where the benefit is just not worth it (especially given the current level of users having trouble understanding the concept of a .env file).
I am aware that the sky is not falling, but I would feel happier knowing that others were at least aware of the issue.
It is about environment variables and Zappa. The .env approach is not ideal with this method of deployment as the .env is uploaded as a regular plain text file that gets referenced by the populate_env functions. This wasn't a problem <2.5 as env variables were set at deployment and the .env file left behind.
For Zappa the recommended way to use remote environment variables is by putting a json file in a remote S3 Bucket and then the app pulls the variables in from that using IAM.
https://github.com/Miserlou/Zappa#remote-environment-variables
For my local dev version I am using the S3 Bucket method, and if it is of interest, here is a branch showing what that involves https://github.com/digiltd/kodi-alexa/tree/flask-ask-zappa-remote-env-vars
tbh I really don't think having the .env file in the function folder is the worst thing in the world. I also am not sure people would really care. Especially when users are excitedly opening up http ports to their local network without fully knowing what they are doing :)
I also don't know how this affects local or Heroku installs. It certainly would be a pain having to have (and support) different deployment methods for each.

I also don't know how this affects local or Heroku installs. It certainly would be a pain having to have (and support) different deployment methods for each.

Have to use a different method on Heroku already. Zappa already allows you to enter the env variables in the the zappa file as well, which would be easier than trying to setup an S3 account and document that.

any updates on 2.5?

There is a little I still need to do with music streaming and translation. But hopefully I can finish it up soon. I haven't had any free time lately.

The copying of templates.XX.yaml to templates.yaml is causing me some grief.  My web server's user doesn't have write access to the directory (intentionally), so the bit of code that tries to copy it over unconditionally just fails here.
Maybe it would be better to do this in the deployment script instead?

I just noticed that I'm running into the same issue with Lambda as well. What do you think the best option would be?

My first thought would be to do it in a prep/deployment script, a la deploy-to-lambda.py.  Or just add to the README that the user has to copy the file before deployment.

Hmm.. yeah, honestly I'd:
templates.en.yaml -> templates.yaml
and just add documentation for users of other locales to copy the correct one in.

I thought about that as well, but was trying to figure out how it'd work when they need to do a git pull. Maybe I'll work on a deployment and upgrade script.

Could just document it as part of the upgrade procedure.
Either way, it's an extra step for users.  It could at least be one less step for English users.

I made a PR over on the Flask-Ask project (https://github.com/johnwheeler/flask-ask/pull/112) so that we can keep the separate files & not have to worry about moving stuff around on a git pull when someone wants to update.

Oh, good on you for going upstream :)

Wait.. did we lose the German translations for responses?

Yes, they will have to be done again. But it'll be better in the long run so that the dynamic parts of the sentence will need to be in a different order depending on the language.

We shouldn't pull over what we already had?
If not.. @ausweider, if you're still around.. help please :)

It's still in the git history if he need it, but I'm guessing it's going to be enough different that it won't help much.

Oh, I thought it was relatively up-to-date before this point.  I gotcha.

Posted on the Kodi forum asking for a translator.

Commenting here to bump the flaskask version to whatever version will include the custom template names.

@sveni-lee and @ausweider, some new strings were added for music streaming intents, and they're currently in English only.  If you want to see them in German for the 2.5 release, please translate and submit a PR :)

Rebased onto current master in preparation for merge.  If you have a local copy of this branch, you'll need to delete and re-pull.

All that's left is:

Testing (touched a lot recently by stripping out streaming music)
Update flask ask version in requirements.txt once it's packaged
CHANGELOG

Unfortunately I won't be available till after April 24th. @sveni-lee


Attempting to uninstall a specific version of a package doesn't work

Brief description of your issue
I tried to uninstall a specific version of a package, and it didn't appear to work. I have multiple versions of "Windows PC Health Check" and have been in the upgrade loop. I tried to uninstall the oldest version, and it didn't do what I expected
Steps to reproduce
More than one version of "Windows PC Health Check" are installed.
Try to remove the "oldest" version that shows an upgrade is available.
winget uninstall Microsoft.WindowsPCHealthCheck -v 2.5.2107.27001
Expected behavior
I expected the version specified to be removed.
Actual behavior
A different version of the package is removed.
Environment
Windows Package Manager Version: v1.2.10271
App Installer Version: v1.17.10271.0

We've been working on the side-by-side scenarios. You could try the latest release and enable the experimental feature on:

https://github.com/microsoft/winget-cli/releases/tag/v1.8.924-preview

Please provide feedback at:

https://github.com/microsoft/winget-cli/discussions/4281


Get subsample

This function is basically a phyloseq::rarefy_even_depth for TSE/SE objects. A minor difference being the removal of features (OTUs) by default instead of an optional trimOTUs in phyloseq::rarefy_even_depth. This is because there is hardly any use of keeping the features (OTUs) that are not present in any of the samples after sub-sampling. I choose the name because subsample is more generic and can be applicable to non-microbiome data as well. Suggestions are welcome regarding naming.  In this implementation, the tree is not pruned to keep features that are remaining. Should we return pruned tree?

If there are no other comments, should I will merge this PR?

Ok to me but might be good to wait for @FelixErnst view

See my comment on the issue. I don't like the concept, but it might be necessary.
For what workflow dou you need it? Can it be kept internal?

Yes highly debated aspect. At the moment we are supporting traditional diversity measures and workflow in mia and OMA. For this, we many need to have support for subsampling. Else we direct users to use DivNet instead of mia for diversity estimations.

Okay. Where the min_size is above the total reads in some samples, these will be dropped. Having altExp when they are not dropped and new TreeSE, when they are dropped, can be confusing. Therefore I think only one option i.e. new giving TreeSE is convenient.

Samples are dropped when their read count is below the rarification depth. This is relatively common thing that happens in rarification that a few samples become discarded this way. But they often have remarkably lower (10x, 100x) read counts than other samples which may also indicate other quality issues.

The option is to either return a new TreeSE, or a MAE object that includes both old and new data.

New TreeSE is better. MAE can be left up to the user. We can demonstrate this in the OMA
library(mia)
library(MultiAssayExperiment)
data("GlobalPatterns")
tse <- GlobalPatterns
tse.subsampled <- subsampleCounts(tse, min_size = 60000, name = "subsampled")
mae <- MultiAssayExperiment::MultiAssayExperiment(c("originalTreeSE" = tse,
                                                    "subsampledTreeSE" = tse.subsampled))
mae

Output
A MultiAssayExperiment object of 2 listed
 experiments with user-defined names and respective classes.
 Containing an ExperimentList class object of length 2:
 [1] originalTreeSE: TreeSummarizedExperiment with 19216 rows and 26 columns
 [2] subsampledTreeSE: TreeSummarizedExperiment with 12459 rows and 25 columns
Functionality:
 experiments() - obtain the ExperimentList instance
 colData() - the primary/phenotype DataFrame
 sampleMap() - the sample coordination DataFrame
 `$`, `[`, `[[` - extract colData columns, subset, or experiment
 *Format() - convert into a long or wide DataFrame
 assays() - convert ExperimentList to a SimpleList of matrices
 exportClass() - save all data to files

The user then for e.g. calculate diversity like this.
estimateDiversity(experiments(mae)$subsampledTreeSE,
                  abund_values = "subsampled",
                  index = "shannon")

Gives the user the freedom to use specific TreeSE for specific analysis.
Originally posted by @microsud in https://github.com/microbiome/mia/issues/112#issuecomment-928900367

I think there should be a switch to allow the user to choose, what happens. Depending on that either return a TSE or MAE

Okay then should modified TreeSE be the default with option return_mae=FALSE? Including this switch will also lead to the addition of MultiAssayExperiment to imports. I guess this should not be an issue.

MAE can be added to imports I think.
The argument could be also return_type="TreeSummarizedExperiment" or something like that, in case we like to include something else in the future besides TreeSE and MAE?


Minor wording fixes.

Simplifies wording in the "Customizing basic execution parameters" section.

/hold

@sergetron This looks good...would you mind squashing up the commits?

I'd have to do a new PR... is it unmergable right now?

Hey just wanted to pop in here and say that it makes life much harder when we come to perform releases if commits aren't squashed together.  This pain is recent for me as I've been doing the beta release candidates.
Building release notes is very time-consuming work and it's made more difficult when multiple commits refer to the exact same fix / feature / documentation issue because the release author has to go through them and de-dupe.
I'm happy to walk you through the squashing process when you've got time, let me know!

Understood :) I'll take care of it!
On Wed, Mar 18, 2020 at 2:17 PM Scott<EMAIL_ADDRESS>wrote:

Hey just wanted to pop in here and say that it makes life much harder when
we come to perform releases if commits aren't squashed together. This pain
is recent for me as I've been doing the beta release candidates.
Building release notes is very time-consuming work and it's made more
difficult when multiple commits refer to the exact same fix / feature /
documentation issue because the release author has to go through them and
de-dupe.
I'm happy to walk you through the squashing process when you've got time,
let me know!
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/tektoncd/pipeline/pull/2196#issuecomment-600786580,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AG3UR4VFOFBWRQ6OM3EJTL3RIEF3DANCNFSM4LEQKWOA
.

Closing as this is not essential during RC time.


fix: only export StorageClient

removing the change we added for backward compatibility here https://github.com/supabase/storage-js/issues/46

:tada: This PR is included in version 1.8.0-next.4 :tada:
The release is available on:

GitHub release
npm package (@next dist-tag)

Your semantic-release bot :package::rocket:


M2MConnectionHandlerPimpl::eventloop_event_handler is called after object instance is deleted

Running mbedos 5.15.4 with mbed cloud client 4.5.0
Application running is succesfully connecting to the cloud. Then, when it disconnects, I observe following logs:
[DBG ][mClt]: M2MNsdlInterface::remove_object() 0x20030e18
[DBG ][mClt]: M2MBase::free_resources()
[DBG ][mClt]: M2MBase::~M2MBase() 0x20030e18
[DBG ][mClt]: M2MNsdlInterface::~M2MNsdlInterface() - OUT
[DBG ][mClt]: ~M2MConnectionHandlerPimpl()
[DBG ][mClt]: M2MConnectionHandlerPimpl::eventloop_event_handler 2
[DBG ][mClt]: M2MConnectionHandlerPimpl::socket_connect_handler - _socket_state = 0
[DBG ][mClt]: ~M2MConnectionHandlerPimpl() - OUT
[INFO][TRANSMISSION]: NSAPI_STATUS_DISCONNECTED
[DBG ][mClt]: M2MConnectionHandlerPimpl::eventloop_event_handler 66
[INFO][mClt]: M2MInterfaceImpl::network_interface_status_change - disconnected
The [INFO][TRANSMISSION]: NSAPI_STATUS_DISCONNECTED is printed from the application code, a status update listener:
  std::atomic<int> net_up{false};

  auto const status_update_listener = [&net_up](nsapi_event_t status, intptr_t param) {
    if(status == NSAPI_EVENT_CONNECTION_STATUS_CHANGE) {
      switch(param) {
        case NSAPI_STATUS_GLOBAL_UP:
          tr_info("NSAPI_STATUS_GLOBAL_UP");
          net_up = NSAPI_STATUS_GLOBAL_UP;
          break;
        case NSAPI_STATUS_LOCAL_UP:
          tr_info("NSAPI_STATUS_LOCAL_UP");
          break;
        case NSAPI_STATUS_DISCONNECTED:
          tr_info("NSAPI_STATUS_DISCONNECTED");
          net_up = NSAPI_STATUS_DISCONNECTED;
          break;
        case NSAPI_STATUS_CONNECTING:
          tr_info("NSAPI_STATUS_CONNECTING");
          net_up = NSAPI_STATUS_CONNECTING;
          break;
        case NSAPI_STATUS_ERROR_UNSUPPORTED:
        default:
          tr_info("NSAPI_STATUS_ERROR_UNSUPPORTED");
          net_up = NSAPI_STATUS_DISCONNECTED;
          break;
      }
    }
  };

  auto net_iface = m_device->get_network_interface();
  net_iface->add_event_listener(status_update_listener);

This method is registering the callback on the interface disconnect event, passing "this" as event argument.
Later PAL generates the event with passed 'this' address.
https://github.com/ARMmbed/mbed-cloud-client/blob/f72a23e0dc21de4c82ee53fe947153341419a5b9/mbed-client/mbed-client-classic/source/m2mconnectionhandlerpimpl.cpp#L665
The logs marked in bold suggest that the eventloop_event_handler is called after M2MConnectionHandlerPimpl instance have been deleted. If that is the case, then this call https://github.com/ARMmbed/mbed-cloud-client/blob/f72a23e0dc21de4c82ee53fe947153341419a5b9/mbed-client/mbed-client-classic/source/m2mconnectionhandlerpimpl.cpp#L64
I haven't observed any crashes related to this yet, however the logs suggest an undefined behavior.
To verify my observation I added a simple address logging to the destructor and the event handler.
extern "C" void eventloop_event_handler(arm_event_s *event)
{
    tr_debug("M2MConnectionHandlerPimpl::eventloop_event_handler %d", event->event_type);

    if (event->event_type != M2MConnectionHandlerPimpl::ESocketIdle) {
        if(!event->data_ptr) {
            tr_error("M2MConnectionHandlerPimpl::eventloop_event_handler event->data_ptr=NULL !!!!");
            assert(event->data_ptr);
        }
        M2MConnectionHandlerPimpl* instance = (M2MConnectionHandlerPimpl*)event->data_ptr;
        tr_debug("instance address: %p", instance);
        instance->event_handler(event);
    }
}

M2MConnectionHandlerPimpl::~M2MConnectionHandlerPimpl()
{
    tr_debug("~M2MConnectionHandlerPimpl()");
    tr_debug("instance address: %p", this);
#if (PAL_DNS_API_VERSION == 2)
    if ( _handler_async_DNS > 0) {
        pal_cancelAddressInfoAsync(_handler_async_DNS);
    }
#endif

    close_socket();
    delete _security_impl;
    _security_impl = NULL;
    pal_destroy();
    tr_debug("~M2MConnectionHandlerPimpl() - OUT");
}

The this pointer in the destructor is the same one as in the instance inside event handler. Logs:
[DBG ][mClt]: ~M2MConnectionHandlerPimpl()
[DBG ][mClt]: instance address: 0x20029d90
[DBG ][mClt]: ~M2MConnectionHandlerPimpl() - OUT
[DBG ][mClt]: M2MConnectionHandlerPimpl::eventloop_event_handler 2
[DBG ][mClt]: instance address: 0x20029d90
[DBG ][mClt]: M2MConnectionHandlerPimpl::socket_connect_handler - _socket_state = 0
[INFO][TRANSMISSION]: NSAPI_STATUS_DISCONNECTED
[DBG ][mClt]: M2MConnectionHandlerPimpl::eventloop_event_handler 66
[DBG ][mClt]: instance address: 0x20029d90
[INFO][mClt]: M2MInterfaceImpl::network_interface_status_change - disconnected

Hi @mstarzyk-mobica thanks for the report. We'll check this.

This was fixed in 4.8.0 release version.


CudaUVM

Is there a reason for us to care about UVM? Why do we run benchmark in it, and do testing with it too?

I can confirm that the benchmarks run with Kokkos::CudaSpace as well.


Errors tagui update and always opening headless - may be running from wrong folder

hi Ken
we are having two errors with TagUI

the tagui update command is not being recognized
and when running a script, the browser is always being opened in headless mode
and when we open with python
it opens normally

we use the installation from here
https://tagui.readthedocs.io/en/latest/setup.html
thanks

Hi Marcelo, double check that you have followed the steps in https://tagui.readthedocs.io/en/latest/setup.html and running the command at the right tagui folder where you installed. For RPA for Python, it will install to ~/.tagui folder.
The behaviour you describe is running the RPA for Python version. I maintain a fork of TagUI optimised for the RPA package. That one does not have tagui update command and will always run headless using PhantomJS by default. That one not meant to be run directly from command prompt.
To confirm you can type ./tagui command without parameters. TagUI now is at > v6.46 while the Python's TagUI is at v5.27.

hi Ken, I deleted the contents of the folder created by Python and downloaded the latest version of TagUI and put it in the folder

hi Ken, can't Python use the latest version of TagUI ?

Oh nope, they went on separate development paths already, there are changes in TagUI human language that doesn't make sense and is bad for Python context.
However, for features relevant, I'll sync and add to Python version. But there will be some delay because I maintain the Python version in my personal time when I get some time.

thanks for the explanation Ken, I'll try to put the two together then, use Python as the API server and pool with a single worker, and call TagUI to run the automations.  thanks.

I see, sure Marcelo! Let me know if you run into any problems.


ly starts at wrong resolution and gives me an error if i login too fast

every time i boot my system ly starts at a wrong (smaller) resolution than my native one. some seconds after it tries to resize itself, more often than not with no success and ends up completely distorted. it fixes itself after i start to type the password.
another problem is that if type my password too fast (before the backlight config is loaded) X gives me an error "no screens found"

every time i boot my system ly starts at a wrong (smaller) resolution
Sadly I don't think we can fix that universally, as t here is no global way to control the TTY in that way. Also, do you have 2 or more monitors?

every time i boot my system ly starts at a wrong (smaller) resolution
Hmm... I'd like to see how that looks like.

another problem is that if type my password too fast (before the backlight config is loaded) X gives me an error "no screens found"
The backlight config? What do you mean by that?

Sadly I don't think we can fix that universally, as t here is no global way to control the TTY in that way. Also, do you have 2 or more monitors?

nope, just one, its a laptop.

Hmm... I'd like to see how that looks like.

here's a video

The backlight config? What do you mean by that?

you can see at the end of the video the screen brightness lowering. if i try to login before that i get a "no screens found" error by X
i tried adding After="systemd-backlight@backlight:radeon_bl0.service" to /etc/systemd/system/display-manager.service but it didn't do anything

nope, just one, its a laptop.

Then forget what I said, it should resize itself automatically.

here's a video

Oh dear. I don't know what is happening, that's extremely weird for sure.

but it didn't do anything

Yeah, well with how broken ly looks, I'm not surprised. Just to confirm, can you test going to a regular TTY and see if everything shows correctly?

yes, it works fine when i go to another tty. also, i forgot to show it in the video, but once i start typing the password ly fixes itself

is there a way to delay ly so i don't get the "no screens found" error by X? looking at systemd-backlight@backlight:radeon_bl0.service description it seems to be the service that load the screen brightness but  adding After="systemd-backlight@backlight:radeon_bl0.service" to /etc/systemd/system/display-manager.service didn't achieve anything.

I'm not sure, sorry. Maybe @nullgemm or someone else could help on that.

I have a very similar issue - if run on a single laptop internal display, ly input window is displayed in the top left corner. After you hit the first character of the password, it jumps to the center. Not the end of any particular worlds, but a bit annoying. With multiple monitors it's always in the center.
My guess would be that it has something to do with video driver initialization, but what do I know.


Generate Code of Conduct

This one is a good starting point I think: https://github.com/WorldBrain/START-HERE/blob/master/CODE_OF_CONDUCT.md

Seee https://mozillascience.github.io/working-open-workshop/personas_pathways/

See https://mozillascience.github.io/working-open-workshop/contributing/

See https://mozillascience.github.io/working-open-workshop/code_of_conduct/

Generated CODE_OF_CONDUCT.md so that I could add the link to it from Contributing.md

The WorldBrain CoD sadly is CC-BY-SA, thus I couldn't just copy/paste with some minor edits (all our material should be CC0). However, found the Chromium CC0 CoD (https://www.chromium.org/conduct), which I used mostly and supplemented with some own stuff and some from WorldBrain.


'MSBuildExtensionsPath' appends a '' backslash in .NET Core mode.

Steps to reproduce
Set to any simple project in a directory and execute msbuild and dotnet msbuild
:: .NET Framework edition
msbuild /bl /t:Restore

:: .NET Core edition
dotnet msbuild /bl /t:Restore

Examine the .binlog file using MSBuild Structured Log Viewer.
.NET Core mode:

.NET Framework mode:

Expected  behavior
MSBuildExtensionsPath should not have \ backslash at the end!
Actual behavior
MSBuildExtensionsPath has \ backslash at the end only when run in .NET Core mode!
Environment data
dotnet msbuild /version:
Microsoft (R) Build Engine version <IP_ADDRESS>428 for .NET Core
Copyright (C) Microsoft Corporation. All rights reserved.

<IP_ADDRESS>428

msbuild /version:
Microsoft (R) Build Engine version <IP_ADDRESS>428 for .NET Framework
Copyright (C) Microsoft Corporation. All rights reserved.

<IP_ADDRESS>428

OS info:
dotnet --info
.NET Command Line Tools (2.1.4)

Product Information:
 Version:            2.1.4
 Commit SHA-1 hash:  5e8add2190

Runtime Environment:
 OS Name:     Windows
 OS Version:  10.0.16299
 OS Platform: Windows
 RID:         win10-x64
 Base Path:   C:\Program Files\dotnet\sdk\2.1.4\

Microsoft .NET Core Shared Framework Host

  Version  : 2.0.5
  Build    : 17373eb129b3b05aa18ece963f8795d65ef8ea54

cc @rainersigwald According to the docs it shouldn't happen, so is it a bug on just .NET Core side?

v15.9, it's still there...

v16.1, It's still there...

Can you elaborate on what problem you're observing as a result of this?

For my scenarios, I use custom sdks in many of my projects. When authoring some of them I found that, in the docs, MSBuildExtensionsPath should not have \ backslash at the end. So, my and possibly others' targets use it like this: $(MSBuildExtensionsPath)SomeFolder\SomeBuildProcess.targets.
When those targets gets shared, let's say, by using msbuild.exe instead of dotnet (ms)build it breaks the build process, since the path becomes like this: C:\Program Files\MSBuildSomeFolder\SomeBuildProcess.targets.
Basically, this a huge behavioral change, sure people are not directly using MSBuildExtensionsPath anymore, but I've seen code in wild, that leads to many build problems, especially for new people familiarizing with dotnet msbuild and authoring custom sdks!

I remain confused, thanks for being patient with me.
If the spec is that it does not have a trailing slash, wouldn't you need to always call it with a slash? To use your example $(MSBuildExtensionsPath)\SomeFolder\SomeBuildProcess.targets?

It's because .NET Core version don't have the slash. And most people are not looking at the docs, they are learning these from the tools they installed, so if they learn from the tool (.NET Core SDK) that's displaying wrong value, instead of what's in the spec, they write incompatible code, inturn makes the build break!

I fixed the issue, in my local build. Can I open a PR?


Search and download custom subtitles for anime

i found some sites http://kitsunekko.net/ http://thesubdb.com/

SubDB seems the best choice for this feature.

I don't think this is still relevant to this day, next release will allow the user to look for torrents on nyaa freely so they already have a lot of subs availables.


Extension causes high cpu load

Issue Type: Performance
Extension Name: vscode-mysql-client
Extension Version: 1.7.22
OS Version: Linux x64 5.6.2-050602-generic
VSCode version: 1.44.2

:warning: Make sure to attach this file from your home-directory:
:warning:/home/don/cweijan.vscode-mysql-client-unresponsive.cpuprofile.txt
cweijan.vscode-mysql-client-unresponsive.cpuprofile.txt
Find more details here: https://github.com/microsoft/vscode/wiki/Explain-extension-causes-high-cpu-load

Since 2.1.5, open setting in vscode to enable lazy mode.
{
 // Load database meta info when connected, If your machine's performance is low, turn it off.
  "vscode-mysql.fullQueryScreen":true,
}


Increase process monitor test timeouts

We are relying on external processes that sometimes get
scheduled oddly by our test environment. I don't want to
make these incredibly long but, this should help remove
some spurious failures.

This had an error for 1 process monitor tasks where the error message was that "cat" doesn't exist. Restarted. Don't want to even imagine what I might find if I flip that rock over. Too tired at to contemplate right now.

Let's at least create an issue for that so we can collect information and track it down. Do you know what config this issue appeared with?

@mfelsche i dont remember. it shouldnt be related to config. except maybe OS. it was a MacOS machine.


Add an output which maps the name of subnets to the regions and self-links within

Found while replacing a similar VPC creation stanza in another of my projects; need a way to output subnets keyed by name with values for region and self-link,

Closed


exclude various intermittent failures

affected projects:

kafka
scalatest-tests
cats
akka / akka-stream
scalikejdbc
finagle
http4s

fyi @ennru note that I stopped running the tests in entire subprojects, excluding individual tests wasn't working, even after endless cycles, intermittent failures remained
fyi @kailuowang on the cats exclusion, I've seen this fail many times
fyi @rossabaker on the http4s exclusion
fyi @seratch on scalikejdbc
fyi @billvenners on scalatest-tests (I'm on the verge of just giving up and only compiling your tests and not running them; perhaps you could put all of the asynchronous tests in a different subproject, since those are the ones that seem to fail?)
fyi @patriknw note that I stopping running any remote tests at all, the failures were too many/various

queued: https://scala-ci.typesafe.com/view/scala-2.12.x/job/scala-2.12.x-integrate-community-build/5028/

@SethTisue We'll try and tag the flickering ones and then you can exclude those when you run.

@bvenners another possibility would be to wait until ScalaTest 3.1 ships, then revisit. right now the community build is still on 3.0.x


[KFNBC]: Notebook control panel - wrong title for requests

Is there an existing issue for this?

[X] I have searched the existing issues

Current Behavior
Once a notebook is launched, the control panel displays this information:
Deployment size
Container size
Small
Limits
2 CPU, 8Gi Memory
Memory Requests
1 CPU, 8Gi Memory
Number of GPUs
0
The requests title should read "Requests" instead of "Memory requests" as it also shows CPU info.
Expected Behavior
Title for requests reads "Requests"
Steps To Reproduce
No response
Workaround (if any)
No response
OpenShift Infrastructure Version
AWS
Openshift Version
No response
What browsers are you seeing the problem on?
No response
Open Data Hub Version
RHODS 1.17.1-1

Relevant log output
No response

Hah, I noticed this in the new features as well -- must be a reoccurring typo. Thanks for catching that @guimou !

/assign