Model card design

I would like to suggest that we go back to the drawing board to discuss the model cards feature. Below you can find my opinions but of course feel free to disagree.
User
What does the user of this feature want to achieve?
As a user...

I want to have a convenient way of creating a model card of my trained sklearn model (or sklearn-compatible model).
I don't want to make big changes to my existing code to be able to use model cards.
I don't want to be required to learn new concepts for creating a model card.
I want to output different model card formats (perhaps?).
I want to have arbitrary sections/figures/tables etc. in the model card (perhaps?).

Supported metrics
Ideally, we want to be able to use as much as possible of what sklearn already provides. These things come to my mind:

Scalar metrics (accuracy, f1, r2, etc.). Do we want to support used-defined scalar metrics?
Confusion matrix.
CV results (hyper param search, cross_validate)
classification_report
Some kind of feature importance.
Model visualizations?

Note that it's absolutely possible to start with a subset of those features and add more later on.
API
Here I believe adoption will be better if users can use their existing code bases/scripts and only need to add a few lines to be able to create model cards.
Below are some suggestions I collected:
clf = SVC(random_state=0)
clf.fit(X_train, y_train)

predictions = clf.predict(X_test)
cm = confusion_matrix(y_test, predictions, labels=clf.classes_)
disp = ConfusionMatrixDisplay(confusion_matrix=cm,
                              display_labels=clf.classes_)
card.add_inspection('Confusion Matrix', disp)

model.fit(X, y)
y_pred = model.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
clf_report = classification_report(y_test, y_pred)
conf_matrix = confusion_matrix(y_test, y_pred)

# everything above is just vanilla sklearn, below comes model card stuff
model_card = skops.card.create_model_card(accuracy=accuracy, clf_report=clf_report, conf_matrix=conf_matrix, description=...)
model_card.save(...)

Implementation
It could be advantageous if we use a more generic representation of a "card". This will allow us to more easily change:

the card format (if there is no fixed specification)
the storage back end (disk, remote)
formats (markdown, rst, json/yaml?)

On the other hand, we could make things easier by directly relying on Nate's model card library, making this feature a thin wrapper around it. This will result in less work here but tightly couples this feature to that specific implementation.

Opening discussion for https://github.com/skops-dev/skops/pull/26#pullrequestreview-1038568847 by @adrinjalali.
As with the current implementation in modelcards library, it’s not really possible to inject values to jinja template after the card creation (I also talked to @nateraw and he told me it’s made to be this way).
I looked at jinja’s own docs and saw the rendering takes place once with a dictionary you pass in (it takes place when we initialize the RepoCard) so below is how modelcards library uses render as well like below:
content = jinja2.Template(Path(template_path).read_text()).render(
            card_data=card_data.to_yaml(), **template_kwargs
        )

so technically you can’t inject anything after you initialize the model card. as of currently implementation we have in skops, it’s not really possible to inject things after creation as well.
So I thought of having a separate card class made for skops and separate initialization and letting user pass attributes and at the end, get these attributes and pass as a dict to RepoCard template when the user calls save().
so the UX is a bit like this (which doesn't change anything except for adding variables during creation)
#below card class is our card class
model_card = card.create_model_card(
    model,
    card_data=card_data,
    template_path=“./skops/skops/card/default_template.md”,
    limitations=limitations,
    model_description=model_description,
)
card.metrics = some_metrics
card.save(path) # this method will initialize `RepoCard` class of modelcards, pass the class attributes as dictionary to that, renders (which is done in `modelcards`), and save the card

Maybe we can let user add things as they wish to the template, meaning they can add as many plots as they wish by simply editing the markdown, like below:
card.roc_plot = roc_plot # this normally doesn't exist in template, we'll add it at the end with attribute setting
card.save(path)

(above was my previous comment)
As told by @BenjaminBossan it might be better to let user not set things as they wish so having a method to do this might be better like what @adrinjalali suggests (see below)
card.add_inspection('Confusion Matrix', disp)

I agree with all you say @BenjaminBossan , but here are some points:

I want to output different model card formats (perhaps?).

I personally agree with you, but for now we're focusing on what the huggingface hub requires and that's a README.md file which has some metadata on top of it, used by the hub's backend.

I want to have arbitrary sections/figures/tables etc. in the model card (perhaps?).

Yes, but we don't have to add this from the beginning I'd say. We can certainly add this as a future feature.

Scalar metrics (accuracy, f1, r2, etc.). Do we want to support used-defined scalar metrics?

If we accept a scorer, then we support user defined functions, and we should.

Confusion matrix.

Yes, but this is "classification" specific, other tasks might have very different types of metrics.

Some kind of feature importance.

More like inspections/interpretations which can go beyond importances of features, but yes.

It could be advantageous if we use a more generic representation of a "card". This will allow us to more easily change:
the card format (if there is no fixed specification)
the storage back end (disk, remote)
formats (markdown, rst, json/yaml?)

On the other hand, we could make things easier by directly relying on Nate's model card library, making this feature a thin wrapper around it. This will result in less work here but tightly couples this feature to that specific implementation.

At least to start with, the idea is to support the requirements of the HF hub (especially when it comes to metadata), and I rather not duplicate that part of the code. As for the format, we have decided to stick to README.md on the hub since the model is initially generated by programmers, but might be edited by other non-programmer people on sections where they can contribute (a product owner for instance). But we should always be able to generate a printable form, from the rendered version on the hub, or the md files.
I'm happy to support more diverse formats/outputs/backend storage in the future if there is need, but there are quite a few modelcard libraries and projects already out there that I'm not sure if we want to compete in that space.

As with the current implementation in modelcards library, it’s not really possible to inject values to jinja template after the card creation (I also talked to @nateraw and he told me it’s made to be this way).

Basically, since we want to allow users to edit the .md files from the frontend, if we store the modelcard in a different format in the users' repo, the two files: the README.md and the card.myfancyformat would go out of sync quite easily, unless we do significant work on the backend side to edit the card object instead of the md file. Therefore for now, we're only storing the README.md file, and that means we can't parse it back into a format which we can use for jinja stuff

so technically you can’t inject anything after you initialize the model card. as of currently implementation we have in skops, it’s not really possible to inject things after creation as well.
So I thought of having a separate card class made for skops and separate initialization and letting user pass attributes and at the end, get these attributes and pass as a dict to RepoCard template when the user calls save().
so the UX is a bit like this (which doesn't change anything except for adding variables during creation)

100% on the concept of an intermediate object type to store everything needed, but with the card.add_inspection API kinda thing.
Hope this makes sense, please let me know if there are parts of my mumbling incoherent lol

That sounds good to me :)

So I changed the UX a little like below:
#below card class is our card class
model_card = Card(
    model,
    card_data=card_data,
    template_path=“./skops/skops/card/default_template.md”,
    limitations=limitations,
    model_description=model_description,
)
card.add_inspection(some_plot)
card.save(path)

I thought of something like this so create() sounds a bit redundant now next to __init__, WDYT?
class Card:

    def __init__():
        pass

    def add_inspection():
        pass

    def save():
        pass

Anything else you want to add?  @adrinjalali

I must have missed it then, where did we decide not to set things?

(follow-up from Slack) So what saving does is that it’s where the modelcards format is initialized and jinja template is rendered and saved to a target repository, thus we can actually pass the things set by user (like metadata or sections of model card).
other option is to pass them during initialization of the intermediate class (Card) that I’m writing.
so in one, sections of jinja template/MD file are passed during saving and in another, sections are passed during initialization.

I remember somewhere that we decided not to define setter methods that user would interact. We can surely do that, but +1 on @BenjaminBossan's comment on not to call them set.

Testing ping on @meg-huggingface

The main points remaining (for me) are:

I want to have arbitrary sections/figures/tables etc. in the model card (perhaps?).

but this is covered by #72.

classification_report

This is kinda covered with the output_dict=True argument + add_table, so we can consider it done (though an example would be nice to have for users).

Some kind of feature importance.

This doesn't seem to be covered yet. Apart from that, I don't see anything that needs a separate issue, do you?


camel-webcam component

Would be cool to have a webcam, for one thing, the spy-machine #209 will need a spycam. :)
Other use cases that come to mind include motion detection which can trigger storing the image or uploading to the cloudlet, or you could use it for barcode scanning and a host of other things.
I tried the laptop webcam as well as an old EyeToy I have lying around.
The component supports polling the webcam for an image, ie producer, or scheduled for timelapse images, or waits for motion.
There's WebcamVerticle which uses the default scheduled consumer taking a frame per second.
Examples:
Take a single pic
from("jms:cam").to("webcam:cam")
Scheduled (take a pic every 5 seconds)
from("webcam:cam?scheduled=true&consumer.delay=5000").to("mock:foo")
Motion (take a pic every half-second and compare for change/motion.
from("webcam:motion").to("mock:foo")
The library is from http://webcam-capture.sarxos.pl/  and the licence looks ok to a non-lawyer.

Will this component also support the official camera module? (https://www.raspberrypi.org/products/camera-module)

Good point! @levackt, do you know something about it?

It will indeed, and might already, but I'll wait for the hardware to confirm.
If I'm lucky I have it tomorrow, more likely next week.
While I'm here let me update with where I'm at with this;

barcode demo is done, thanks to camel-barcode it's as simple as ".unmarshal(barcode)" and you have a barcode scanner, enrich with gps coords for logistics bliss.

live streaming with camel-websocket, in progress.
This already works great in my test project even at max framerate and multiple browsers, on my local network of course, but I'm having classpath trouble in Rhiot with Jetty, same camel version so it's weird.
I took a stab at upgrading Rhiot to Camel 2.16 but that turned out to be too much of a side-mission at the moment so I chickened out for now.

webcam cloudlet
I'm still thinking about what we want from the cloudlet, eg same as GPS where we write to file on the device and forward to the cloudlet if enabled, cloudlet will then save to mongodb for later review and push to websocket subscribers.
That sound about right? Do we want the mongodb stuff at all, what do you guys have in mind for a cloudlet?

video is on the backburner but will also be supported, for instance to start recording video in max resolution for some predetermined time when motion is detected.

we could create an  tested webcam list,
stay tuned ;-)

Hi @hekonsek  and @gautric,
that sounds very good. I already have that Pi Camera Module at home. Also the use cases you mention sound very reasonable to me. Especially starting a route when motion is detected. So I guess I can give it a try by building a route like in your examples above using the latest rhiot master?
Best

@thberger please take a look to my last post here
http://gautric.github.io/blog/2015/10/22/rhiot-0.1.2-camel-webcam-macos-x.html

Nice one, relieved it worked for you :)
Thomas you're welcome to try the mod and if there's a driver error please let me know, I'm getting around to the driver stuff but if needed I'll push it forward.
It works on my Pi too but I don't have the mod yet, so it's possible it only works for USB devices on the Pi, and could appear to hang while it looks for your device, might need a timeout there, I'll check it out.
My mod arrives soon, along with Bright Pi which is a lighting mod, oh and a sense hat so I can join in the sense hat adventure coming soon :)
The component will support multiple cameras next time I push, its not that unusual to have different types of cameras, anyway it's in the pipeline along with some refactoring and whatnot.
I figure the cloudlet can then get notified of webcams available and also status changes, you may want to respond to an offline camera somehow, perhaps with a recipient list / dynamic toD in the route.
Cheers!

On 22 Oct 2015, at 19:11, Greg. A<EMAIL_ADDRESS>wrote:
@thberger please take a look to my last post here
http://gautric.github.io/blog/2015/10/22/rhiot-0.1.2-camel-webcam-macos-x.html
—
Reply to this email directly or view it on GitHub.

@thberger the webcam component made it into 0.1.2 release, so you can use it or the master.
@levackt I will come back to you soon with some ideas regarding the image cloudlet.

Hi guys,
good news: The webcam-component basically works with the Raspberry Pi Camera Module. But I had to do some extra work:

It is important that a specific kernel module for the v4l2 driver is loaded on the Pi. By default, this is not the case, but sudo modprobe bcm2835-v4l2 works.

I had to add com.github.sarxos:v4l4j to the classpath. It is not declared as Maven dependendy of the webcam module, is there a reason for that? I also need this library when I tried with my MacBook's iSight camera.

If this is done, I am able to capture images with the route. However, I have problems to start the application again, then it fails with an exception:
au.edu.jcu.v4l4j.exceptions.V4L4JException: Error starting the capture
This problem can only be solved if I hard-reboot the Pi, sudo reboot doesn't work properly anymore.
Maybe I can solve some issues, I'll keep you updated!
Thomas

You might notice the build is broken, sorry about that, I've now disabled
the guilty tests temporarily, related to this driver issue.
After configuring as you noted as well, I get 0.1.2 as well as master to
work, I expected 0.1.2 to fail due to that missing jar as well but I'm
surprised it worked.
The modprobe won't survive restarts, I put a comment to that effect in the
readme, you should edit rc.local
Thanks for jumping in :)
On Fri, Oct 23, 2015 at 12:36 PM, Thomas Berger<EMAIL_ADDRESS>wrote:

Hi guys,
good news: The webcam-component basically works with the Raspberry Pi
Camera Module. But I had to do some extra work:

It is important that a specific kernel module for the v4l2 driver is
loaded on the Pi. By default, this is not the case, but sudo modprobe
bcm2835-v4l2 works.
2.
I had to add com.github.sarxos:v4l4j to the classpath. It is not
declared as Maven dependendy of the webcam module, is there a reason for
that? I also need this library when I tried with my MacBook's iSight camera.
If this is done, I am able to capture images with the route. However, I
have problems to start the application again, then it fails with an
exception:
au.edu.jcu.v4l4j.exceptions.V4L4JException: Error starting the capture
This problem can only be solved if I hard-reboot the Pi, sudo reboot
doesn't work properly anymore.
Maybe I can solve some issues, I'll keep you updated!
Thomas
—
Reply to this email directly or view it on GitHub
https://github.com/rhiot/rhiot/issues/239#issuecomment-150539570.

Good news, I got the camera mod and tested it on master and 0.1.2 release.
Note that I added a section on configuring/troubleshooting the pi mod to the docs, will think more about improving that, but it's not likely something we can handle in the component unless we edit the rc.local on deploy.
The webcam listener idea went bust, the discovery service doesn't work for some drivers so it won't be reliable,  I don't think it would have been too useful from a cloudlet point of view anyway.
Some other changes;

changed body to type BufferedInputStream
made component more testable by injecting webcam
camera can be selected by name and defaults to the first (I still need the producer to return list of cameras so you know which name to use)
support setting custom driver or composite driver on the component.
nix detection in the component to try to load the "video for linux" driver, will likely rework this some more.

I see what you mean Thomas, the driver eventually stops working and only
the hard restart fixes it.
I updated the docs to reflect that, and here's the link to the bug;
https://github.com/sarxos/webcam-capture/issues/382
Good to be in the same boat with you again :)
On Fri, Oct 23, 2015 at 1:44 PM, Taariq Levack<EMAIL_ADDRESS>wrote:

You might notice the build is broken, sorry about that, I've now disabled
the guilty tests temporarily, related to this driver issue.
After configuring as you noted as well, I get 0.1.2 as well as master to
work, I expected 0.1.2 to fail due to that missing jar as well but I'm
surprised it worked.
The modprobe won't survive restarts, I put a comment to that effect in the
readme, you should edit rc.local
Thanks for jumping in :)
On Fri, Oct 23, 2015 at 12:36 PM, Thomas Berger<EMAIL_ADDRESS>wrote:

Hi guys,
good news: The webcam-component basically works with the Raspberry Pi
Camera Module. But I had to do some extra work:

It is important that a specific kernel module for the v4l2 driver is
loaded on the Pi. By default, this is not the case, but sudo modprobe
bcm2835-v4l2 works.
2.
I had to add com.github.sarxos:v4l4j to the classpath. It is not
declared as Maven dependendy of the webcam module, is there a reason for
that? I also need this library when I tried with my MacBook's iSight camera.
If this is done, I am able to capture images with the route. However, I
have problems to start the application again, then it fails with an
exception:
au.edu.jcu.v4l4j.exceptions.V4L4JException: Error starting the capture
This problem can only be solved if I hard-reboot the Pi, sudo reboot
doesn't work properly anymore.
Maybe I can solve some issues, I'll keep you updated!
Thomas
—
Reply to this email directly or view it on GitHub
https://github.com/rhiot/rhiot/issues/239#issuecomment-150539570.

As far as modprobe is concerned. We can make the webcam component to load that module on the component startup using ProcessManager and executing an appriopriate system modprobe command.
I also propose to add com.github.sarxos:v4l4j to the webcam component if it is required by the RPi webcam.
@levackt Do you agree?

Agreed with both.
5 minutes ago I thought of item 1 again so we're syncing up, and item 2 is already fixed :)

On 24 Oct 2015, at 18:18, Henryk Konsek<EMAIL_ADDRESS>wrote:
As far as modprobe is concerned. We can make the webcam component to load that module on the component startup using ProcessManager and executing an appriopriate system modprobe command.
I also propose to add com.github.sarxos:v4l4j to the webcam component if it is required by the RPi webcam.
@levackt Do you agree?
—
Reply to this email directly or view it on GitHub.

Hi,
Taariq, good to hear that we experience the same problem with the restart. So I guess the problem is related to the driver itself and is not influenced on the used OS or Pi model? Just for information: I tested the on a Pi 1 Model B with Raspian Wheezy.
@hekonsek : Yeah, it's good if the component loads the kernel module via ProcessManger. For me as a Java developer making first steps in the IoT world, a major criteria for the choice of the framework is the independence from too many system specifics or the need to execute shell scripts up front for the solution to work.

Yeah for sure.
I just pushed the process manager fix and removed the modprobe from the
docs.
I'm testing the Pi2 Model B+ at the moment, I now have no trouble
restarting the gateway, or the OS with gateway running.
I first edited my rc.local to remove the modprobe on startup to make sure
it works, please see if it works for you too on the Pi 1.
On Sun, Oct 25, 2015 at 2:00 PM, Thomas Berger<EMAIL_ADDRESS>wrote:

Hi,
Taariq, good to hear that we experience the same problem with the restart.
So I guess the problem is related to the driver itself and is not
influenced on the used OS or Pi model? Just for information: I tested the
on a Pi 1 Model B with Raspian Wheezy.
@hekonsek https://github.com/hekonsek : Yeah, it's good if the
component loads the kernel module via ProcessManger. For me as a Java
developer making first steps in the IoT world, a major criteria for the
choice of the framework is the independence from too many system specifics
or the need to execute shell scripts up front for the solution to work.
—
Reply to this email directly or view it on GitHub
https://github.com/rhiot/rhiot/issues/239#issuecomment-150917447.

BTW Thomas, I've still got the error in the logs about skipping the H264
format but it doesn't stop the webcam from working, if that's the case for
you too then I'll remove the other note from the docs as well.
If it's not the case I'll dive back in and hopefully reproduce it again, or
hopefully not :)
On Sun, Oct 25, 2015 at 3:51 PM, Taariq Levack<EMAIL_ADDRESS>wrote:

Yeah for sure.
I just pushed the process manager fix and removed the modprobe from the
docs.
I'm testing the Pi2 Model B+ at the moment, I now have no trouble
restarting the gateway, or the OS with gateway running.
I first edited my rc.local to remove the modprobe on startup to make sure
it works, please see if it works for you too on the Pi 1.
On Sun, Oct 25, 2015 at 2:00 PM, Thomas Berger<EMAIL_ADDRESS>wrote:

Hi,
Taariq, good to hear that we experience the same problem with the
restart. So I guess the problem is related to the driver itself and is not
influenced on the used OS or Pi model? Just for information: I tested the
on a Pi 1 Model B with Raspian Wheezy.
@hekonsek https://github.com/hekonsek : Yeah, it's good if the
component loads the kernel module via ProcessManger. For me as a Java
developer making first steps in the IoT world, a major criteria for the
choice of the framework is the independence from too many system specifics
or the need to execute shell scripts up front for the solution to work.
—
Reply to this email directly or view it on GitHub
https://github.com/rhiot/rhiot/issues/239#issuecomment-150917447.

Sorry Thomas, it only works when I have 2 cameras attached, when it's only
the mod the error persists so just the modprobe issue is fixed.
The hard reboot still applies for now.
On Sun, Oct 25, 2015 at 3:57 PM, Taariq Levack<EMAIL_ADDRESS>wrote:

BTW Thomas, I've still got the error in the logs about skipping the H264
format but it doesn't stop the webcam from working, if that's the case for
you too then I'll remove the other note from the docs as well.
If it's not the case I'll dive back in and hopefully reproduce it again,
or hopefully not :)
On Sun, Oct 25, 2015 at 3:51 PM, Taariq Levack<EMAIL_ADDRESS>wrote:

Yeah for sure.
I just pushed the process manager fix and removed the modprobe from the
docs.
I'm testing the Pi2 Model B+ at the moment, I now have no trouble
restarting the gateway, or the OS with gateway running.
I first edited my rc.local to remove the modprobe on startup to make sure
it works, please see if it works for you too on the Pi 1.
On Sun, Oct 25, 2015 at 2:00 PM, Thomas Berger<EMAIL_ADDRESS>wrote:

Hi,
Taariq, good to hear that we experience the same problem with the
restart. So I guess the problem is related to the driver itself and is not
influenced on the used OS or Pi model? Just for information: I tested the
on a Pi 1 Model B with Raspian Wheezy.
@hekonsek https://github.com/hekonsek : Yeah, it's good if the
component loads the kernel module via ProcessManger. For me as a Java
developer making first steps in the IoT world, a major criteria for the
choice of the framework is the independence from too many system specifics
or the need to execute shell scripts up front for the solution to work.
—
Reply to this email directly or view it on GitHub
https://github.com/rhiot/rhiot/issues/239#issuecomment-150917447.

Seems like I should reconfigure the driver in the process manager as well after the modprobe, as the allowed resolution and/or format is changing between restarts which might be related to the bug. I don't know much else yet but I'll try a few more things. Hang tight :)

On 25 Oct 2015, at 14:00, Thomas Berger<EMAIL_ADDRESS>wrote:
Hi,
Taariq, good to hear that we experience the same problem with the restart. So I guess the problem is related to the driver itself and is not influenced on the used OS or Pi model? Just for information: I tested the on a Pi 1 Model B with Raspian Wheezy.
@hekonsek : Yeah, it's good if the component loads the kernel module via ProcessManger. For me as a Java developer making first steps in the IoT world, a major criteria for the choice of the framework is the independence from too many system specifics or the need to execute shell scripts up front for the solution to work.
—
Reply to this email directly or view it on GitHub.

I've hopefully worked around the hard reboot in the process manager, will do some more testing and refactoring in the coming days but it's shaping up.
Give it a try whenever you get a chance please.

On 25 Oct 2015, at 14:00, Thomas Berger<EMAIL_ADDRESS>wrote:
Hi,
Taariq, good to hear that we experience the same problem with the restart. So I guess the problem is related to the driver itself and is not influenced on the used OS or Pi model? Just for information: I tested the on a Pi 1 Model B with Raspian Wheezy.
@hekonsek : Yeah, it's good if the component loads the kernel module via ProcessManger. For me as a Java developer making first steps in the IoT world, a major criteria for the choice of the framework is the independence from too many system specifics or the need to execute shell scripts up front for the solution to work.
—
Reply to this email directly or view it on GitHub.

HI Taariq,
thanks for all your work. I quickly tested your code (including commit cfdb904) in my application, it does work with some limititations: First, I haveto run the camel application with root permission (e.g. sudo). Otherwise the modprobe execution will not work and loadWebcamDriver will hang forever in the while-loop. Additionally, a second start of the app still doesn't work for me. Caused by: au.edu.jcu.v4l4j.exceptions.V4L4JException: Error starting the capture and then the hard reboot problem. May I have missed something?
Best
PS: The application I used for testing can be found here: https://github.com/thberger/camelcam.

Hi Thomas
Due to ticket #256 the pi user is assumed to be able to run modprobe
without sudo, can your user do this on command line?
We can probably detect that and report the error, I'll take a look.
On Wed, Oct 28, 2015 at 12:53 AM, Thomas Berger<EMAIL_ADDRESS>wrote:

HI Taariq,
thanks for all your work. I quickly tested your code (including commit
cfdb904
https://github.com/rhiot/rhiot/commit/cfdb904f94dc36236902353e8a5dc1db822ca061)
in my application, it does work with some limititations: First, I haveto
run the camel application with root permission (e.g. sudo). Otherwise the
modprobe execution will not work and loadWebcamDriver will hang forever
in the while-loop. Additionally, a second start of the app still doesn't
work for me. Caused by: au.edu.jcu.v4l4j.exceptions.V4L4JException: Error
starting the capture and then the hard reboot problem. May I have missed
something?
Best
PS: The application I used for testing can be found here:
https://github.com/thberger/camelcam.
—
Reply to this email directly or view it on GitHub
https://github.com/rhiot/rhiot/issues/239#issuecomment-151668303.

While we think of something better I took a few actions;

partially reverted the modprobe command to what works for the Pi/debian,
"/bin/sh", "-c", "modprobe bcm2835-v4l2"
Still without sudo, @hekonsek please let me know if you can still build
Fail fast if modprobe permissions are insufficient to load v4l2 or no
devices are found by v4l2
Submitted PR to the test project to workaround the modprobe by prefixing
sudo in a custom process manager, think twice about it, it's just a
possible workaround in the meantime.
I also considered adding a component option to specify that you want
modprobe loaded as sudo, but reverted, if this is viable I'm happy to put
it back with default to false of course.

Cheers!
On Wed, Oct 28, 2015 at 7:06 AM, Taariq Levack<EMAIL_ADDRESS>wrote:

Hi Thomas
Due to ticket #256 the pi user is assumed to be able to run modprobe
without sudo, can your user do this on command line?
We can probably detect that and report the error, I'll take a look.
On Wed, Oct 28, 2015 at 12:53 AM, Thomas Berger<EMAIL_ADDRESS>wrote:

HI Taariq,
thanks for all your work. I quickly tested your code (including commit
cfdb904
https://github.com/rhiot/rhiot/commit/cfdb904f94dc36236902353e8a5dc1db822ca061)
in my application, it does work with some limititations: First, I haveto
run the camel application with root permission (e.g. sudo). Otherwise the
modprobe execution will not work and loadWebcamDriver will hang forever
in the while-loop. Additionally, a second start of the app still doesn't
work for me. Caused by: au.edu.jcu.v4l4j.exceptions.V4L4JException:
Error starting the capture and then the hard reboot problem. May I have
missed something?
Best
PS: The application I used for testing can be found here:
https://github.com/thberger/camelcam.
—
Reply to this email directly or view it on GitHub
https://github.com/rhiot/rhiot/issues/239#issuecomment-151668303.

Do you run your RPi app as root? For now I would assume that we do so to make integration simpler. Ecipse Kura assumes the same.
BTW Ideally I'd like our components to be smart enough to even install missing packages. For example GPSD component should install GPSD server is the latter is not present.

@levackt I can build project now. So  /bin/sh -c modprobe bcm2835-v4l2 would work for both Rpi and Ubuntu?
BTW You might consider making this command configurable on the component level. So I could do:
WebcamComponent webcamComponent = new WebcamComponent();
webcamComponent.setRpiWebcamLoadingCommand("modprobe myFancyModule");

Yeah then it works for Raspbian/Debian and Ubuntu.
I use the default pi user on Raspian which by default has passwordless sudo, so adding that command to the component will make it easier for Pi users to just use sudo, as well as use another module.
This is much more convenient than the custom process manager.

Hmmm, Can you run /bin/sh -c modprobe bcm2835-v4l2 as user pi? Without sudo?

Nope, permissions error which I also use to report and break out of the loop.

On 29 Oct 2015, at 13:20, Henryk Konsek<EMAIL_ADDRESS>wrote:
Hmmm, Can you run /bin/sh -c modprobe bcm2835-v4l2 as user pi? Without sudo?
—
Reply to this email directly or view it on GitHub.

Can we close this one? I believe that base version of webcam component is ready.

Yeah +1, closing


connecting my Xamarin IoS app to MY azure backend

OK, so I deployed the back end using the scripts, thank you for that.
After obtaining my APPLE DEVELOPER account, I managed to compile and deploy the IOS application in XAMARIN to my IPHONE, the application works well, connects to my OBD device, and tracks my trips.
How do I connect my IOS application to my Azure backend?
What steps do I follow, where in the code do I enter the connection strings?
I have read all the GITHUB and Reference architecture docs, I can't find that info anywhere. In many places in the doc it says "go here for that info", but it is not there...
I undertand that I will have to re-compile my app with the hardocoded info about the connection to the back end, once I find out where to enter that info, but need guidance on this.
The more details, the better.
Thanks in advanced
AQ

DefaultMobileServiceUrl
https://github.com/Azure-Samples/MyDriving/blob/master/src/MobileApps/MyDriving/MyDriving.AzureClient/AzureClient.cs
DefaultHostName
https://github.com/Azure-Samples/MyDriving/blob/master/src/MobileApps/MyDriving/MyDriving.AzureClient/DeviceProvisionHandler.cs

Thanks you, I had found the first reference on my own,  and modified it, and it seemed to work...
I will follow your advice and modify both places.
Thank you so much.
BTW, you have al done  a superb job with this solution......iMHO the documentation should have this little tidbit reflected in it, also the piece about enabling the sign in options of the mobile app.

Alina, thank you. I have made the two changes you indicated above...I am making progress....
Now, the IoS device registers in the Azure IoT HUB, and I can see data in the Azure DB (dbo.trips table), but no messages make it to the Azure IoT HUB,
Azure IoT hub indicates 1 device is registered (my IPhone) but no messages, is there anything else I need to change?
Thanks.

Try debugging the mobile app to see if data is uploaded successfully to IoT Hub. You can put breakpoints in the following places:
CurrentTripViewModel.cs
obdDataProcessor.SendTripPointToIOTHub(CurrentTrip.Id, CurrentTrip.UserId, point);
OBDDataProcessor.cs
try
{
await iotHub.SendEvent(packagedBlob);
}
catch (Exception e)
{
//An exception will be thrown if the data isn't received by the IOT Hub; store data in buffer and try again
Logger.Instance.Track("Unable to send data to IOT Hub: " + e.Message);
AddTripPointToBuffer(packagedBlob);
}

Hi - I replaced the strings as mentioned, but when I deployed and installed on Android device via HockeyApp, I got the following errors from adb log:
( I had already creatde keystores and certificate followed from here)
https://developer.xamarin.com/guides/android/deployment,_testing,_and_metrics/publishing_an_application/part_2_-_signing_the_android_application_package/
Any clues? Thanks
09-16 10:28:32.240: W/ActivityManager(755): No content provider found for permission revoke: file:///storage/emulated/0/Download/com.abb.mydriving.apk
09-16 10:28:32.240: I/PackageManager(755): Copying native libraries to /data/app-lib/vmdl1368652558
09-16 10:28:32.420: E/PackageParser(755): Package com.abb.mydriving has no certificates at entry AndroidManifest.xml; ignoring!


cst will throw for the case like ({true : 1})

See https://github.com/babel/babylon/issues/18, we will throw for this case

/cc @mdevils, @hzoo


Add param to uploadDir to avoid uploading some files

@andrewrk can you aprove this pull request? Very useful feature.

I'm not related to this package but I believe you are searching for getS3Params on client.uploadDir(params).
(optional) getS3Params - function which will be called for every file that needs to be uploaded. You can use this to skip some files. See below.

Would that solve your problem?


Update footer section with Chimoney Products

👋 Welcome!
Welcome to Chimoney's open-source community! This issue is specifically designed for first-time contributors, so if you're new to open source or haven't contributed to our codebase before, you're in the right place. We're here to help you take your first steps and guide you through the process of making your first contribution.
What You'll Need to Know
You don't need any prior knowledge or experience to work on this issue. We're here to support you every step of the way, so don't hesitate to ask questions if you're unsure about anything.
Problem
Currently, we only have 2 Chimoney products on the footer section and we need to update it to the 4 products.
📋 Step by Step

Claim this issue: Comment below to claim this issue. If someone else has already claimed it, feel free to ask if they've started working on it or if they need any help.

Update the code: In the products section of the code add 2 more products; Wallet as a Service and Payment Requests.

Commit your changes: Once you've made the necessary updates, commit your changes and then submit a pull request so we can review your changes and merge them into the main codebase.

💬 Keep Us Updated
We encourage you to keep us updated on your progress. If you encounter any challenges or need assistance, don't hesitate to ask for help. We're here to support you throughout the process.
👥 Collaboration
If you see someone else working on this issue or if you'd like to collaborate with others, feel free to reach out and offer your assistance. Collaboration is key to our success as a community!
❓ Questions?
If you have any questions or need clarification on anything, please leave a comment below. We're here to help!

Hello @phyleria, I am a new developer looking for first contributions. Can I be assigned to this task?

Hi @RahalBhupathi
Unfortunately this issue is reserved. Please feel free to work on any other issue without the reserved tag.

Hi @phyleria @Khadeeejah
am requesting to work on this

hello! can i solve this issue


Bulk Copy cannot handle inserts with subset or differently ordered columns

Driver version
9.2.1.jre15
SQL Server version
Microsoft SQL Server 2016 (SP2) (KB4052908) - 13.0.5026.0 (X64)
Client Operating System
Windows 10
JAVA/JVM version
openjdk-15.0.2
Table schema
Any table
Problem description
When using useBulkCopyForBatchInsert=true a SQLServerPreparedStatement seems to expect any insert statements to contain all columns in the exact order returned from sp_executesql N'SET FMTONLY ON SELECT * FROM " (line 1990), as this is the order the column metadata is added.
The problem with this is that any insert statement only specifying a subset of columns or columns in the wrong order can have the wrong column metadata mapped. The consequence of this seems to be that some columns will be set to null when inserted. Ideally the executeBatch will look at the column list and derive the right metadata from the colum name instead of the coumn index.
Workaround is to make sure that the SQLServerBulkBatchInsertRecord has the columnList, valueList and columnMetadata with the same number of elements in the same order.

Expected behaviour: Should insert all values and behave equivalent to when useBulkCopyForBatchInsert=false
Actual behaviour: Some columns are null (depending on the ordering or columns)
Error message/stack trace: None

Reproduction code
Have not tested this simplified version
public class Repro {
    public static void main(String[] args) throws Throwable {
        SQLServerDataSource ds = new SQLServerDataSource();
        ds.setUser("<user>");
        ds.setPassword("<password>");
        ds.setURL("<db-host>;useBulkCopyForBatchInsert=true");

        Date time = new Date();
        Connection c = ds.getConnection();
        PreparedStatement ps;
        ResultSet rs;
        try {
            c.setAutoCommit(false);
            String sql = "INSERT INTO MyTable (id, a, b) VALUES (?,?,?)";
            ps = c.prepareStatement(sql);
            try {
                ps.setLong(1, 1);
                ps.setLong(2, 123);
                ps.setLong(3, 456);
                ps.addBatch();
                ps.executeBatch();
                c.commit();
            } finally {
                ps.close();
            }
        } catch (Throwable t) {
            throw t;
        }
    }
}

Hi @peterbae. Thanks for the speedy reply. I think this should be at least documented and throw an error in the case a subset of columns is provided (and if possible, even when a different order is provided). I think however that ideally it would figure out the right metadata by column name provided and support any subset in any order. Would that be a big change?

Currently the team is busy with higher priority items. It would be a non-trivial change to support subset of data / any order, but I agree that we should document this and throw an error. I'll let you know when we have an update on this item.

Thanks!

I encountered the same issue.
Even if I use the same order as returned by sp_executesql N'SET FMTONLY ON SELECT * FROM <table>' the inserted data is null.

@peterbae - any update on a fix version ?


Update README to recommend canvas-prebuilt

I'm just getting started with this awesome library, so take my suggestion with a huge grain of salt.
I'm using this for SSR and I wasted a lot of time trying to get canvas installed on my Windows 10 box.  Then I discovered canvas-prebuilt and my problems magically went away.   It might be a good idea to recommend canvas-prebuilt as the easiest way to get started using jsbarcode on nodejs.

Hello @sullivanpt.
Sorry for the late response. It would be great to not have the compile requirement as you mention. But it would also need to be able to do it for most popular platforms, so jimp does indeed seem like a good solution if you could get it to work well. Right now, with node-canvas, the barcodes are rendered pixel perfect compared to browsers which a replacement (almost) has to fulfill.
I would really appreciate if you manage to do that and would gladly change the recommended library in that case :)

There is another way to solve canvas issue > using Docker.
Create 3 files in project folder (for example):
.dockerignore:
**/node_modules

Dockerfile:
FROM node:8

RUN apt-get update && apt-get install -qq libcairo2-dev libjpeg-dev libpango1.0-dev libgif-dev build-essential g++

RUN mkdir -p /frontend
WORKDIR /frontend
COPY ./ ./

RUN npm install

CMD npm test

EXPOSE 3000

docker-compose.yml
version: '2'
services:
  jsbarcode:
    build:
      context: ./
    volumes:
      - ./src:/frontend/src
    ports:
      - 3000:3000

Then run:
npm install --ignore-scripts
docker-compose up

@SanichKotikov just to be clear, you are using Docker to spin up a newer version of the OS (e.g. CentOS 7) hosted on an older OS; and then running your entire node server stack inside that VM, yes?  That's pretty clever.   You could use canvas-prebuilt with this idea and save some additional headache.  On the other hand, it appears even Docker itself doesn't support a CentOS 6 box as host https://success.docker.com/article/Compatibility_Matrix, so I think it doesn't help my use case.  It should work well for Win10 though, thank you.
I am still using the jimp-canvas solution for my CODE128 renders, but as Lindell points out it's not flexible, nor pixel perfect.


Please remove the demo route.

Latest laravel 5.3 (though I am also using laravel annotation service) is not supporting routes with closure function.
Thank you

Remove this route, or convert it to class. We can't cache our routes, because closure based routes cannot be cached

Can you provide me the working example of custom routes in laravel v5.3
It would be nice

Will do this in v1.6.3 .

#157 This PR should fix route caching problem

@pderiy Thank you for this PR.


Can't configure new skill? Device offline?

Your OS (including version) where you are running AlexaPi:
Raspbian 4.4
Your hardware platform and model you are running on:
RPi 2
Python release (python2 --version):
2.7.9
Description of problem:
alexa.amazon.co.uk shows the device as offline.
Installed Plex skill, and then linked it to Plex account on alexa.amazon.co.uk. Alexa still says I need to link/configure the skill... but I have.
Expected:
Plex skill should work?
The device should show up as Online on alexa.amazon.co.uk?
Is this normal or should this work? Thanks a lot for any help and for this great project!

Reported as working at gitter -> closing.

In the end it was actually because I was using a UK account. And the Alexa was set up on a US account or something
Anyway created a new account, works now

Device shows up as offline because https://github.com/alexa-pi/AlexaPi/wiki/Q&A-(FAQ)#why-do-i-see-the-alexapi-device-offline-in-the-alexa-app--why-do-i-get-timers-and-alarms-are-not-currently-supported-on-this-device

Sorry to bring up a closed question, but the above issue was reported as fixed due to some issue with UK/US accounts? I am having the same issue (skills not being available on Pi after setup alex.amazon.com), could you clarify what the issue actually was here and how you addressed it. I can't feasibly create a new Amazon account if that is the suggestion as my account is tied to Prime etc.
Thanks.

I have that issue too... any hints would be great!

Same here, i setup my skills and can see in the apps but it seem the AlexaPI on my raspberry pi can't seem to find my skills.  I have test the skills in the website and it works fine.  Is there any plan to fix this issue?

Same for me


How to read base64 image from multipart

Hello, Could you please guide me how to extract base64 image from multipart.
In My code is below uploadToCloud function is responsible to upload files in cloud. It needs one variable mainly from multipart i.e base64 image. Now I am passing just passing  key, imageType because I could not extract base64 image from field.file.
I am looking forward to get replies against my below queries:-
1.If I could read the buffer from field.file then I could encode it to base64. Could you tell me I could read the buffer.
2.How can I reproduce the error FILES_LIMIT_REACHED. Not mentioned in docs.
3. What is the advantage of multipart over normal method where hyper-express router receives a base64 image string as body from the client. On the other hand, in multipart I am sending the image from client as formdata.
 let image_file;
  let image_type;
  try {
    await request.multipart(async (field) => {
      if (field.file && field.mime_type.startsWith('image/')) {
        image_file = field.file.name
        image_type = field.mime_type

        //passing only jpeg, jpg & png type image
        if (field.mime_type === 'image/jpeg' || field.mime_type === 'image/jpg' || field.mime_type === 'image/png') {
          await field.write(image_file)
        }
      }
    })

  } catch (error) {
    console.log(error);
    if (typeof error === 'FILES_LIMIT_REACHED') {
      return response.status(403).send('You sent too many files! Try again.')
    } else {
      return response.status(500).send('Oops! An uncaught error occured on our end.')
    }
  }

  if (image_file) {
    const { file } = await uploadToCloud({ key: image_file, imageType: image_type })
    console.log(file);
    return response.send("Successfully uploaded")
  } else {
    return response.status(400).send('No profile image was received. Please try again.');
  }

Hi, I found the base64 image from the stream. Now I can use it. Above issue is resolved
I have another issue as described below
I need to put a 3sec delay middleware in this hyper-express upload route.
In hyper-express do you have any middleware limiter which will slow down the hyper express  router response.
I can create a setTimeout delay middleware function , but that would not be the right way.
So I would like to know, What is the best way to slowdown this response for 3sec.


[WIP] Fix for strange toolbar behavior when flash message appears in the URL

After conversion of the toolbars to angular, a strange behavior/bug has been introduced where the toolbar does not react to the first user click if the URL in the browser address bar contains a flash message with +'s. What happens instead is, the first user click “auto-corrects” the browser url by encoding the + signs in the url after which the toolbar becomes functional.
Example of a flash message(with +'s )which will make the issue visible -
"Edit+of+Cloud+Provider+"Amazon"+was+cancelled+by+the+user"
Although this bug is not exactly a show-stopper, it hampers the user experience to some extent and hence should not be overlooked.
Things to note for this PR:

The current fix in the PR is to encode the query parameters in the URL
Chances are that a fix on the JS side might be needed and most likely in the new Toolbar UI component itself (https://github.com/ManageIQ/ui-components), but hard to say at this point.
The current fix, however, could be considered an interim fix until we know more

Fixes #11394

@miq-bot add_label wip

@martinpovolny @himdel please review

@martinpovolny @himdel I can fix the specs if the fix looks acceptable.
In general, it's not a bad idea to have our URL query strings encoded.

@AparnaKarve : the string with "+" signs is already encoded. So we are fixing an issue that is elsewhere by double encoding the string here.
The concept of this fix looks wrong.

@AparnaKarve : the string with "+" signs is already encoded. So we are fixing an issue that is elsewhere by double encoding the string here.

Agree. But the "+" encoding does not seem to work. Had it been encoded with %20 instead, it would have worked with the toolbars.

@martinpovolny I did a little bit of reading on this subject matter and it looks like the '+' type of encoding for spaces is called application/x-www-form-urlencoded and is used by languages like Ruby and Java.
I don't think we have much of a say over the encoding format -- meaning, this is how it is.
If our URL query strings in Ruby have a space, they will be encoded with a +.
So in light of the above info, how do we go about encoding the spaces with %20 instead of +?
Check out some of the %20 Vs  '+' related discussion here - https://github.com/angular/angular.js/issues/3042
Not everything is applicable to us of course, but it's interesting to see what other people think about this issue.
In some articles, I've also seen some developers recommend this (slightly ugly) approach to replace all '+' characters with %20 -- replaceAll("\\+","%20")

@martinpovolny ping.
Any idea how we want to proceed on this one?

@AparnaKarve I've looked at it too, and I think there's a better way..
diff --git a/app/assets/javascripts/angular_modules/module_toolbar.js b/app/assets/javascripts/angular_modules/module_toolbar.js
index ba84278..fe24241 100644
--- a/app/assets/javascripts/angular_modules/module_toolbar.js
+++ b/app/assets/javascripts/angular_modules/module_toolbar.js
@@ -4,8 +4,8 @@ miqHttpInject(
   ])
   .config(['$locationProvider', function ($locationProvider) {
     $locationProvider.html5Mode({
-      enabled: true,
-      requireBase: false
-    })
+      enabled: false,
+      requireBase: false,
+    });
   }])
 );

That's all that's needed to fix the issue...
Basically, the problem is not in how angular parses the url, but that it tries to change it. But the only reason it tries to change it is to support routing and the html5 mode, which the toolbar has no business touching anyway. So disabling html5 mode in the toolbar makes angular stop mangling the url => win ;).

So disabling html5 mode in the toolbar makes angular stop mangling the url => win ;).

Nice, great find!
Can you go ahead and make a PR for that in that case? (with enabled: false,)
And I'll close this one.
Thanks.

No problem, created https://github.com/ManageIQ/manageiq/pull/11915 :)

Fixed in https://github.com/ManageIQ/manageiq/pull/11915
Hence closing this one.


Remove ts-ignore in sparlview

Depends on https://github.com/BlueBrain/nexus/issues/753
Once the issue above is fixed, get ride of the @ts-ignore rule
https://github.com/BlueBrain/nexus-web/blob/master/src/shared/views/SparqlQueryView.tsx#L32-L34

Implemented by BlueBrain/nexus-web#320


Can't implement AnyClientState validation and execution Use  Generics Context

Bug Summary
Currently I am using the latest ibc version to upgrade substrate-ibc to implement the ibc protocol. During the implementation process, I am implementing the validation and Exection attributes for AnyClientState. It cannot support Context with generics very well.
Details
https://github.com/octopus-network/substrate-ibc/blob/81786952f83478606a5dc0136fbfe2601cba981a/core/src/client/mod.rs#L80
#[derive(Debug, Clone, From, PartialEq, ClientState)]
#[validation(Context<T: Config>)]
#[execution(Context<T: Config>)]
pub enum AnyClientState {
	Tendermint(TmClientState),
}

Version

ibc version 0.50

Hey @DaviRain-Su, Would you mind sharing the compiler error? Appreciate that.

Hey @DaviRain-Su, Would you mind sharing the compiler error? Appreciate that.

here.
warning: use of deprecated struct `pallet::_::Store`:
                 Use of `#[pallet::generate_store(pub(super) trait Store)]` will be removed after July 2023.
                 Check https://github.com/paritytech/substrate/pull/13535 for more details.
  --> core/src/lib.rs:97:3
   |
97 |     #[pallet::generate_store(pub(super) trait Store)]
   |      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   |
   = note: `#[warn(deprecated)]` on by default

warning: use of deprecated constant `pallet::warnings::ConstantWeight_0::_w`:
                 It is deprecated to use hard-coded constant as call weight.
                 Please instead benchmark all calls or put the pallet into `dev` mode.

                 For more info see:
                     <https://github.com/paritytech/substrate/pull/13798>
   --> core/src/lib.rs:296:20
    |
296 |         #[pallet::weight(0)]
    |                          ^

error[E0277]: the trait bound `u64: std::convert::From<<T as pallet_timestamp::Config>::Moment>` is not satisfied
  --> core/src/client/mod.rs:84:13
   |
84 |     Tendermint(TmClientState),
   |                ^^^^^^^^^^^^^ the trait `std::convert::From<<T as pallet_timestamp::Config>::Moment>` is not implemented for `u64`
   |
note: required for `context::Context<T>` to implement `CommonContext`
  --> core/src/client/mod.rs:21:17
   |
21 | impl<T: Config> ibc::clients::tendermint::context::CommonContext for Context<T>
   |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^     ^^^^^^^^^^
22 | where
23 |     u64: std::convert::From<<T as pallet_timestamp::Config>::Moment>,
   |          ----------------------------------------------------------- unsatisfied trait bound introduced here
   = note: required for `ibc::clients::tendermint::client_state::ClientState` to implement `ClientStateValidation<context::Context<T>>`
help: consider extending the `where` clause, but there might be an alternative better way to express this requirement
   |
80 | #[derive(Debug, Clone, From, PartialEq, ClientState, u64: std::convert::From<<T as pallet_timestamp::Config>::Moment>)]
   |                                                    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

error[E0277]: the trait bound `u64: std::convert::From<<<<T as frame_system::Config>::Block as frame_support::sp_runtime::traits::Block>::Header as frame_support::sp_runtime::traits::Header>::Number>` is not satisfied
  --> core/src/client/mod.rs:84:13
   |
84 |     Tendermint(TmClientState),
   |                ^^^^^^^^^^^^^ the trait `std::convert::From<<<<T as frame_system::Config>::Block as frame_support::sp_runtime::traits::Block>::Header as frame_support::sp_runtime::traits::Header>::Number>` is not implemented for `u64`
   |
note: required for `context::Context<T>` to implement `CommonContext`
  --> core/src/client/mod.rs:21:17
   |
21 | ...: Config> ibc::clients::tendermint::context::CommonContext for Context<T>
   |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^     ^^^^^^^^^^
...
24 | ...4: std::convert::From<<<<T as frame_system::Config>::Block as frame_support::sp_runtime::traits::Block>::Header as frame_support::sp_runtime::traits::Header>::Number>
   |       ------------------------------------------------------------------------------------------------------------------------------------------------------------------- unsatisfied trait bound introduced here
   = note: required for `ibc::clients::tendermint::client_state::ClientState` to implement `ClientStateValidation<context::Context<T>>`
help: consider extending the `where` clause, but there might be an alternative better way to express this requirement
   |
80 | #[derive(Debug, Clone, From, PartialEq, ClientState, u64: std::convert::From<<<<T as frame_system::Config>::Block as frame_support::sp_runtime::traits::Block>::Header as frame_support::sp_runtime::traits::Header>::Number>)]
   |                                                    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

error[E0277]: the trait bound `u64: std::convert::From<<T as pallet_timestamp::Config>::Moment>` is not satisfied
   --> core/src/client/mod.rs:84:13
    |
84  |     Tendermint(TmClientState),
    |                ^^^^^^^^^^^^^ the trait `std::convert::From<<T as pallet_timestamp::Config>::Moment>` is not implemented for `u64`
    |
note: required for `context::Context<T>` to implement `ibc::core::host::ExecutionContext`
   --> core/src/context.rs:409:17
    |
409 | impl<T: Config> ExecutionContext for Context<T>
    |                 ^^^^^^^^^^^^^^^^     ^^^^^^^^^^
410 | where
411 |     u64: From<<T as pallet_timestamp::Config>::Moment> + From<BlockNumberFor<T>>,
    |          --------------------------------------------- unsatisfied trait bound introduced here
    = note: required for `ibc::clients::tendermint::client_state::ClientState` to implement `ClientStateExecution<context::Context<T>>`
help: consider extending the `where` clause, but there might be an alternative better way to express this requirement
    |
80  | #[derive(Debug, Clone, From, PartialEq, ClientState, u64: std::convert::From<<T as pallet_timestamp::Config>::Moment>)]
    |                                                    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

error[E0277]: the trait bound `u64: std::convert::From<<<<T as frame_system::Config>::Block as frame_support::sp_runtime::traits::Block>::Header as frame_support::sp_runtime::traits::Header>::Number>` is not satisfied
   --> core/src/client/mod.rs:84:13
    |
84  |     Tendermint(TmClientState),
    |                ^^^^^^^^^^^^^ the trait `std::convert::From<<<<T as frame_system::Config>::Block as frame_support::sp_runtime::traits::Block>::Header as frame_support::sp_runtime::traits::Header>::Number>` is not implemented for `u64`
    |
note: required for `context::Context<T>` to implement `ibc::core::host::ExecutionContext`
   --> core/src/context.rs:409:17
    |
409 | impl<T: Config> ExecutionContext for Context<T>
    |                 ^^^^^^^^^^^^^^^^     ^^^^^^^^^^
410 | where
411 |     u64: From<<T as pallet_timestamp::Config>::Moment> + From<BlockNumberFor<T>>,
    |                                                          ----------------------- unsatisfied trait bound introduced here
    = note: required for `ibc::clients::tendermint::client_state::ClientState` to implement `ClientStateExecution<context::Context<T>>`
help: consider extending the `where` clause, but there might be an alternative better way to express this requirement
    |
80  | #[derive(Debug, Clone, From, PartialEq, ClientState, u64: std::convert::From<<<<T as frame_system::Config>::Block as frame_support::sp_runtime::traits::Block>::Header as frame_support::sp_runtime::traits::Header>::Number>)]
    |                                                    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

error[E0061]: this function takes 3 arguments but 2 arguments were supplied
   --> core/src/lib.rs:306:11
    |
306 |                 match ibc::core::handler::entrypoint::dispatch(&mut ctx, envelope) {
    |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^           -------- an argument of type `&mut _` is missing
    |
note: function defined here
   --> /Users/davirian/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ibc-core-handler-0.50.0/src/entrypoint.rs:25:8
    |
25  | pub fn dispatch(
    |        ^^^^^^^^
help: provide the argument
    |
306 |                 match ibc::core::handler::entrypoint::dispatch(&mut ctx, /* router */, envelope) {
    |                                                               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

error[E0308]: mismatched types
    --> core/src/lib.rs:308:28
     |
308  |                     Err(e) => errors.push(e),
     |                                      ---- ^ expected `RouterError`, found `ContextError`
     |                                      |
     |                                      arguments to this method are incorrect
     |
note: method defined here
    --> /Users/davirian/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/src/rust/library/alloc/src/vec/mod.rs:1880:12
     |
1880 |     pub fn push(&mut self, value: T) {
     |            ^^^^

Some errors have detailed explanations: E0061, E0277, E0308.
For more information about an error, try `rustc --explain E0061`.
warning: `pallet-ibc` (lib) generated 2 warnings
error: could not compile `pallet-ibc` (lib) due to 16 previous errors; 2 warnings emitted
warning: build failed, waiting for other jobs to finish...

Hmm. Apparently, the macro couldn't handle the following "where" clause:
where
	u64: std::convert::From<<T as pallet_timestamp::Config>::Moment>,
	u64: std::convert::From<<<<T as frame_system::Config>::Block as frame_support::sp_runtime::traits::Block>::Header as frame_support::sp_runtime::traits::Header>::Number


x/mobile/event/touch: cancellation and gestures

As mentioned on golang.org/cl/18180:
iOS cancels a touch when a gesture is detected. We don't currently report touch cancellation, nor do we report gestures.
Is a portable iOS/Android API for gestures possible? If not, should gestures be turned off? If they are, are there any cancelled events any more?

Is a portable iOS/Android API for gestures possible?

I don't know if it is, but it'd be great news if it were.


Use tox-min-req for min-req tests

Fixes/Closes

Closes #
Description

This PR switch from using custom min-req script that modifies setup.cfg file to use tox-min-req tox plugin. Exposing this way of running min-req test should simplify run such test locally to debug test failure.
References

Type of change

[x] Maintenance

How has this been tested?

[ ] example: the test suite for my feature covers cases x, y, and z
[ ] example: all tests pass with my change
[ ] example: I check if my changes works with both PySide and PyQt backends
as there are small differences between the two Qt bindings.

Final checklist:

[ ] My PR is the minimum possible work for the desired functionality
[ ] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[ ] I have added tests that prove my fix is effective or that my feature works
[ ] If I included new strings, I have used trans. to make them localizable.
For more information see our translations guide.

Rendered docs are visible here, thanks @Czaki !

The current workflow for testing min req requires a rewrite setup.cfg for pin dependencies. It is problematic when adding any setup.cfg changes. It also provides a risk of committing such files to a branch. So many contributors may depend on CI for min req test.

Do you want to paste that into the PR description?

it si ok now?

@Czaki I copy edited the OP and title. What do you think?


Feature request: multi-line indent using the Tab key

If the user has a selection that spans more than 1 line and presses the Tab key, those lines are indented by 1 TAB (or a number of spaces, depending on how the editor is configured). And Shift+Tab un-indents them.

Ye, I guess it will be fine to have this feature. I'll implement it!

And Shift+Tab for single line unindenting works incorrectly now, if the tab is not typed in the editor but loaded from the file.

Already implemented in https://github.com/ouuan/QCodeEditor
You can cherry pick commits from his repository to include them here.


console does not start

Description
What steps will reproduce the problem?

What is the expected output? What do you see instead?
Please provide any additional information below
File "C:\portable\WinPython-64bit-<IP_ADDRESS>Qt5\python-3.5.4.amd64\lib\site-packages\spyder\plugins\ipythonconsole.py", line 1290, in close_client
self.create_new_client()
File "C:\portable\WinPython-64bit-<IP_ADDRESS>Qt5\python-3.5.4.amd64\lib\site-packages\spyder\plugins\ipythonconsole.py", line 1009, in create_new_client
self.connect_client_to_kernel(client)
File "C:\portable\WinPython-64bit-<IP_ADDRESS>Qt5\python-3.5.4.amd64\lib\site-packages\spyder\plugins\ipythonconsole.py", line 1035, in connect_client_to_kernel
stderr_file)
File "C:\portable\WinPython-64bit-<IP_ADDRESS>Qt5\python-3.5.4.amd64\lib\site-packages\spyder\plugins\ipythonconsole.py", line 1440, in create_kernel_manager_and_kernel_client
kernel_manager.start_kernel(stderr=stderr)
File "C:\portable\WinPython-64bit-<IP_ADDRESS>Qt5\python-3.5.4.amd64\lib\site-packages\jupyter_client\manager.py", line 234, in start_kernel
"Currently valid addresses are: %s" % local_ips()
RuntimeError: Can only launch a kernel on a local interface. Make sure that the '*_address' attributes are configured properly. Currently valid addresses are: ['<IP_ADDRESS>', '<IP_ADDRESS>', '']
Version and main components

Spyder Version: 3.2.4
Python Version: 3.5.4
Qt Versions: 5.9.1, PyQt5 5.9 on Windows

Depen

This has been fixed in the latest WinPython release. Please update to it.


[1.13.1] package-solution task changed so custom configuration doesn't work anymore - how to migrate from 1.12.1?

What type of issue is this?
Question
What SharePoint development model, framework, SDK or API is this about?
💥 SharePoint Framework
Target SharePoint environment
SharePoint Online
What browser(s) / client(s) have you tested

[ ] 💥 Internet Explorer
[ ] 💥 Microsoft Edge
[ ] 💥 Google Chrome
[ ] 💥 FireFox
[ ] 💥 Safari
[ ] mobile (iOS/iPadOS)
[ ] mobile (Android)
[X] not applicable
[ ] other (enter in the "Additional environment details" area below)

Additional environment details

browser version
SPFx version
Node.js version
etc

Issue description
We have been developing a solution containing multiple webpart/extension solutions, which are packaged as an NPM package.
For our customers, we gather these NPM package into a single SPFx package, referencing those packages, joined together in a yarn workspaces project.
One of these packages contains an application customizer.
In order to include the elements.xml  file from the NPM package in the containing solution, we made some configuration changes to the gulp` config:
build.packageSolution._hasPrependedPaths = true;
build.packageSolution.taskConfig.paths.debugDir = path.join("sharepoint", "solution", "debug");
build.packageSolution.taskConfig.paths.sharepointAssetDir = ".";

This allows us to reference the elements.xml from the NPM package in package-solution.json:
"features": [
	{
		"title": "My Feature",
		"description": "Enables the client side components.",
		"id": "68c51136-4fbe-4849-afaa-8dc91989e493",
		"version": "<IP_ADDRESS>",
		"assets": {
			"elementManifests"<EMAIL_ADDRESS>		}
	}
]

However, in SPFx 1.13.1 the build.packageSolution configuration part doesn't work anymore. The build tasks seem to have changed internally.
So my question: is there another way of configuring the same settings with the new build tasks in place?

Hi @NickSevens,
There were some changes in the configuration and tasks.
First thing to mention, _hasPrependedPaths is a private field. It is not supposed to be directly reassigned.
For the paths configuration - why don't you use the package-solution.json file itself?


Autogen latency v2

📥 Pull Request
📘 Description
Briefly describe the changes you've made.
🧪 Testing
Describe the tests you performed to validate your changes.

 Entelligence AI Bot v4
Summary
Purpose:
Integrate AI21 and Mistral providers, improve session management, error handling, and logging, and update documentation and examples.
Key Changes:

New Feature: Support for AI21 and Mistral providers, introduction of class-level session object for HTTP requests, and new Jupyter notebooks for AI21 and Mistral integrations.
Refactor: Refactored session initialization and logging configuration, replaced http.client with requests for HTTP requests, and updated project version to 0.3.15rc1.
Documentation: Updated social media and documentation links with badge-style images, added new documentation for AI21 integration, and added new images and updated existing ones for documentation.
Test: Added new test cases for AI21 and Mistral providers, and updated existing tests for compatibility with new changes.

Impact:
Enhanced AgentOps project with new provider support, improved performance and reliability for HTTP requests, and provided comprehensive documentation and examples for users.


CARDS-2189 - PROMs PHQ9: non-zero responses to question 9 should trigger immediate display of helpful information

DRAFT until the final content of the "helpful information" to display is provided to us.
Please test the interaction with this placeholder text for now.

This fails in the patient portal, selecting an answer for the phq9_9 answer triggers a JS error:

Warning: value prop on input should not be null. Consider using an empty string to clear the component or undefined for uncontrolled components.

Something seems to be happening, selecting on option other the first one increases the space to the next question, so at least the section is correctly conditionally enabled, but the alert is not displayed.

It's amazing what consequences a rushed copy-paste can have...
The @name of the information node was phq9_intro because I forgot to change it after copying over and adapting the other cards:Information node in this form. But patient and guest-patient users are denied access to phq9_intro because it's information for physicians' eyes only.
Fixed by amending the commit so we'll have a cleaner history when we merge.

Closing without merge. The client now decided this might make the patient change their answers and end up not respond truthfully to the question.
But at least now we have info cards with colorful backgrounds since this depended on #1459 !

I didn't get a chance to post my review before closing, but it could be a real bug that may show up in the future: selecting the first option for the trigger question (the one that doesn't show the error message) in the patient UI triggers a JS warning about an undefined value.

I didn't get a chance to post my review before closing, but it could be a real bug that may show up in the future: selecting the first option for the trigger question (the one that doesn't show the error message) in the patient UI triggers a JS warning about an undefined value.

Was this before or after my latest changes?

I didn't get a chance to post my review before closing, but it could be a real bug that may show up in the future: selecting the first option for the trigger question (the one that doesn't show the error message) in the patient UI triggers a JS warning about an undefined value.

Was this before or after my latest changes?

After.

I didn't get a chance to post my review before closing, but it could be a real bug that may show up in the future: selecting the first option for the trigger question (the one that doesn't show the error message) in the patient UI triggers a JS warning about an undefined value.

Was this before or after my latest changes?

After.

Replicated. It puzzles me that it only happens in the patient ui.


PhotoFrame sample application

You don't need to do this, but take note of this commit: https://github.com/pauldotknopf/Qml.Net/commit/09687fd24b69c16a7c357eea257782658f4104fe
This handles the edge case of Windows Visual Studio working differently than anything anywhere else.

Yup, I saw that. I'm just thinking about Qml debugger, since the file actually loaded is in a transient directory. Not a big issue though regardless, just thought I'd mention it.

Any other change you want to make? Otherwise, I'm merging.

no, when it now runs out of the box without fiddling around for Linux and Mac than I'm happy :)

Ok, I'll check it when I get home.


Cannot import or export files

I used this addon years ago and I know that it was super robust, and also functioned more or less out of the box.
When I downloaded it today, however, apparently import/export features are "coming soon" and none of the profiles have any changes applied to them? I can understand the latter, but have import/export features become disabled for some reason? I can find absolutely no one having this problem anywhere I look

Hello, the DynamicCam situations have undergone a complete overhaul which is why the import/export still needs to undergo the same transformation. Sorry for that.

It's been almost a year since this feature has been removed, do you still have plans to re-implement it eventually?

Yeah, I can understand your frustration. Re-working the profile import/export and presets is just such a big chunk of coding, that I have never seen a time window in which I would be able to tackle it. I know that it is most wanted by lots of DynamicCam users, but my real-life (kids, family and job) only leave me very little time for my hobby.

That's ok, I didn't mean to pressure you, sorry if it seemed that way. I was just asking in order to understand if I should install the addon and try to figure it out myself, or wait for the import feature to be readded and use Kraken Latte's import string for it.
I completely understand real life having priority over everything, especially with so much on your plate. Best of luck!


Correction for raw affiliation AGIR Research Unit, EA 4294, Jules Verne University of Picardie, Amiens, France; Department of Virology, Amiens University Medical Center, Amiens, France

Correction needed for raw affiliation AGIR Research Unit, EA 4294, Jules Verne University of Picardie, Amiens, France; Department of Virology, Amiens University Medical Center, Amiens, France
raw_affiliation_name: AGIR Research Unit, EA 4294, Jules Verne University of Picardie, Amiens, France; Department of Virology, Amiens University Medical Center, Amiens, France
new_rors: 01gyxrk03
previous_rors: 01sjmsj73;01gyxrk03
works_examples: W2897174558
contact: 1e0d0cee3c989a35b916973957e69996:4eeaad33ba0a534a289d21e3be270c91 @ u-picardie.fr

This issue was accepted and ingested by the OpenAlex team on 2024-10-10. The new affiliations should be visible within the next 7 days.


wip: grpc documentation

What type of PR is this?
/kind content
Any specific area of the project related to this PR?
/area documentation
What this PR does / why we need it:
Which issue(s) this PR fixes:
Fixes #
Special notes for your reviewer:
WIP

[APPROVALNOTIFIER] This PR is NOT APPROVED
This pull-request has been approved by:
To fully approve this pull request, please assign additional approvers.
We suggest the following additional approver: leodido
If they are not already assigned, you can assign the PR to them by writing /assign @leodido in a comment when ready.
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS

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

@leodido: PR needs rebase.

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

Thanks for your pull request. Before we can look at it, you'll need to add a 'DCO signoff' to your commits.
:memo: Please follow instructions in the contributing guide to update your commits with the DCO
Full details of the Developer Certificate of Origin can be found at developercertificate.org.
The list of commits missing DCO signoff:

6679a42 fix(themes/falco-fresh): ensure article's column max width
5b1bcbd docs(content/en/docs/grpc): client-go

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

Thanks for your pull request. Before we can look at it, you'll need to add a 'DCO signoff' to your commits.
:memo: Please follow instructions in the contributing guide to update your commits with the DCO
Full details of the Developer Certificate of Origin can be found at developercertificate.org.
The list of commits missing DCO signoff:

6679a42 fix(themes/falco-fresh): ensure article's column max width
5b1bcbd docs(content/en/docs/grpc): client-go

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

/cc @fntlnz

LGTM label has been added.  Git tree hash: a31c3a8688fb776b9751a5a961bf04ac88e3c8c3

[APPROVALNOTIFIER] This PR is NOT APPROVED
This pull-request has been approved by: Issif
To fully approve this pull request, please assign additional approvers.
We suggest the following additional approver: leodido
If they are not already assigned, you can assign the PR to them by writing /assign @leodido in a comment when ready.
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS

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

[APPROVALNOTIFIER] This PR is APPROVED
This pull-request has been approved by: fntlnz, Issif
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS [fntlnz]

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


HLS Input Plugin stop hls: HLS playlist completed

Hi
First of all, thank you for this amazing tool.
I have noticed that the hls input plugin stops after a while. Is this an expected behavior?, because I have seen this on 3 different servers receiving the same hls stream.
This is the stream I am testing:
tsp --debug -v -I hls --connection-timeout 3600000 --receive-timeout 3600000  https://59c3c7bda15f4.streamlock.net:444/maxtvonline/smil:maxtvonline.smil/playlist.m3u8 -P regulate --pcr-synchronous --pid-pcr 256 -O ip <IP_ADDRESS>:1385
.
.
.
hls: HLS playlist completed
tsversion 3.24-2004
Is there a way for the plugin to restart automatically?
I checked this case: HLS input problem #175
Thanks!
(Sorry for my bad English)

We get "403 Forbidden" when trying this link. So we cannot analyze the issue.

Ohh ok, could you try this: https://streamingwowza.com:1936/maxtvonline/smil:maxtvonline.smil/chunklist_w1534291786_b2108000_sleng.m3u8
This is a Ecuadorian  online channel (free)
https://maxtvonline.com/canal-online/

Same result:
$ curl -L 'https://streamingwowza.com:1936/maxtvonline/smil:maxtvonline.smil/chunklist_w1534291786_b2108000_sleng.m3u8' -D /dev/stdout
HTTP/1.1 403 Forbidden
Accept-Ranges: bytes
Access-Control-Expose-Headers: Date, Server, Content-Type, Content-Length
Server: WowzaStreamingEngine/4.8.5
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true
Access-Control-Allow-Methods: OPTIONS, GET, POST, HEAD
Connection: Keep-Alive
Access-Control-Allow-Headers: Content-Type, User-Agent, If-Modified-Since, Cache-Control, Range
Content-Length: 0

oh.. It works for me, maybe a geolock.. which is weird since their slogan is: De Ecuador para el mundo!!! (From Ecuador to the world !!!) :D
PS C:\Users\JuanCarlos\Desktop> tsp --debug -v -I hls --connection-timeout 3600000 --receive-timeout 3600000 https://streamingwowza.com:1936/maxtvonline/smil:maxtvonline.smil/chunklist_w1534291786_b2108000_sleng.m3u8 -P regulate --pcr-synchronous --pid-pcr 256 -O drop
tsp: Debug: debug level set to 1
tsp: Debug: ====> tsp --debug -v

Debug: debug level set to 1
Debug: hls: debug level set to 1
Debug: hls: ====> tsp -I hls --connection-timeout 3600000 --receive-timeout 3600000 https://streamingwowza.com:1936/maxtvonline/smil:maxtvonline.smil/chunklist_w1534291786_b2108000_sleng.m3u8
Debug: drop: debug level set to 1
Debug: drop: ====> tsp -O drop
Debug: trying to load "C:\Program Files\TSDuck\bin\tsplugin_regulate.dll"
Debug: registering processor plugin "regulate", status: ok
Debug: regulate: debug level set to 1
Debug: regulate: ====> tsp -P regulate --pcr-synchronous --pid-pcr 256
Debug: tsp: buffer size: 89,240 TS packets, 16,777,120 bytes
regulate: minimum wait: 2,000,000 nano-seconds, using 50,000,000 ns
Debug: hls: downloading https://streamingwowza.com:1936/maxtvonline/smil:maxtvonline.smil/chunklist_w1534291786_b2108000_sleng.m3u8
Debug: hls: HTTP header: HTTP/1.1 200 OK
Debug: hls: HTTP header: Accept-Ranges: bytes
Debug: hls: HTTP header: Access-Control-Expose-Headers: Date, Server, Content-Type, Content-Length
Debug: hls: HTTP header: Server: WowzaStreamingEngine/4.8.5
Debug: hls: HTTP header: Cache-Control: no-cache
Debug: hls: HTTP header: Access-Control-Allow-Origin: *
Debug: hls: HTTP header: Access-Control-Allow-Credentials: true
Debug: hls: HTTP header: Access-Control-Allow-Methods: OPTIONS, GET, POST, HEAD
Debug: hls: HTTP header: Connection: Keep-Alive
Debug: hls: HTTP header: Access-Control-Allow-Headers: Content-Type, User-Agent, If-Modified-Since, Cache-Control, Range
Debug: hls: HTTP header: Date: Fri, 23 Oct 2020 22:27:27 GMT
Debug: hls: HTTP header: Content-Type: application/vnd.apple.mpegurl
Debug: hls: HTTP header: Content-Length: 274
Debug: hls: announced content size: 274 bytes
Debug: hls: MIME type: application/vnd.apple.mpegurl
hls: downloaded chunklist_w1534291786_b2108000_sleng.m3u8, media playlist, updatable (live), 3 segments, 11 seconds/segment
Debug: hls: internal push-input thread started
Debug: hls: downloading segment https://streamingwowza.com:1936/maxtvonline/smil:maxtvonline.smil/media_w1534291786_b2108000_sleng_3339.ts
Debug: hls: HTTP header: HTTP/1.1 200 OK
Debug: hls: HTTP header: Accept-Ranges: bytes
Debug: hls: HTTP header: Access-Control-Expose-Headers: Date, Server, Content-Type, Content-Length
Debug: hls: HTTP header: Server: WowzaStreamingEngine/4.8.5
Debug: hls: HTTP header: Cache-Control: no-cache
Debug: hls: HTTP header: Access-Control-Allow-Origin: *
Debug: hls: HTTP header: Access-Control-Allow-Credentials: true
Debug: hls: HTTP header: Access-Control-Allow-Methods: OPTIONS, GET, POST, HEAD
Debug: hls: HTTP header: Connection: Keep-Alive
Debug: hls: HTTP header: Access-Control-Allow-Headers: Content-Type, User-Agent, If-Modified-Since, Cache-Control, Range
Debug: hls: HTTP header: Date: Fri, 23 Oct 2020 22:27:27 GMT
Debug: hls: HTTP header: Content-Type: video/MP2T
Debug: hls: HTTP header: Content-Length: 1916096
Debug: hls: announced content size: 1916096 bytes
hls: downloading from https://streamingwowza.com:1936/maxtvonline/smil:maxtvonline.smil/media_w1534291786_b2108000_sleng_3339.ts
hls: MIME type: video/mp2t, expected size: 1916096 bytes
Debug: hls: initial buffer load: 5 packets, 940 bytes
hls: unknown initial input bitrate
Debug: control commands: found 1 packet processor plugins
.
.
.

maybe a geolock..

Most probably.

which is weird since their slogan is: De Ecuador para el mundo!!! (From Ecuador to the world !!!) :D

This is just marketing BS. All TV channels have legal agreements with content rights holders, especially sports leagues and studios. They purchase the rights to broadcast a given content within a given geographical area, usually their home country, sometimes extended to the neighbouring countries. So, TV channels must implement technical means to limit the reception of their content to the commercially agreed area. This is very important for FTA channels. PayTV channels with expatriate subscribers abroad may have different clauses in their contracts with content owners. Only illegal pirated content can be received anywhere :)
We need more information on the technical issue. What are the last messages, debug included, at the end of the execution, just before the execution stops? Use option --save-file to keep the media playlists and media segments and post here the content on the last playlist, the .m3u8 text file.
Additionally, if you want to relay a live channel, use option --live to avoid a useless time shift.

Hi @lelegard
Thanks for your help.
I've been doing some tests over the weekend, and I was able to get the requested information on 2 different machines (Win 10 and Ubuntu Server) after the plugin stopped. The plugin stopped at the same time on both machines.
HLS Ubuntu Server.zip
HLS WIN 10.zip
I hope it is helpful and once again thank you very much for your help.
Best regards

Hi @juanki182 ,
Thanks for the logs and files. The problem is identified. At some point the server fails to return the playlists. So, this is a broadcaster's server error.
In the Window logs:
* Debug: hls: no new segment in playlist
* Debug: hls: downloading https://streamingwowza.com:1936/maxtvonline/smil:maxtvonline.smil/chunklist_w1534291786_b2108000_sleng.m3u8
* Debug: hls: HTTP header: HTTP/1.1 404 Not Found

In the Ubuntu logs:
* Debug: hls: downloading https://59c3c7bda15f4.streamlock.net:444/maxtvonline/smil:maxtvonline.smil/chunklist_w1272084643_b2108000_sleng.m3u8
* Debug: hls: HTTP header: HTTP/1.1 404 Not Found

The principle of HLS is simple. For live streams, the playlist file .m3u8 contains a list of a few segments. The playlist file is regularly updated with new segments. Here, each segment lasts about 10 seconds and there are 3 segments in the playlist. So, the current playlist references 30 seconds of live content. The playlist is downloaded again and again to get new segments.
In your case, at some point, the server no longer serves the playlist. It returns the famous "404 Not Found" when the hls plugin tries to download it.
In the last successfully downloaded playlists, the "media sequence" of the segments are 20501, 20502, 20503 with the Windows client and 20502, 20503, 20504 with the Linux client. So, it is clear that this is the server which fails to serve all requests at some point and both clients fail to continue to play the stream.
Maybe, if the server error is transient, the hls could implement some retry strategy.

Hi @lelegard
Thank you very much for the analysis and explanation. I will close the issue since it is definitely an origin server problem, I have done tests with up to 4 machines and they all stop at the same time..
Best Regards
Juan.


Welcome to Discussions! Please continue to use "Issues" for bugs.

Discussed in https://github.com/dahall/TaskScheduler/discussions/864

Originally posted by dahall December  8, 2020
We’re using Discussions as a place to connect with other members of our community. We hope that you:

Ask questions you’re wondering about that aren't bug related.
Ask for help on how to use the library to accomplish certain tasks.
Share ideas about the project's direction or enhancements.
Engage with other community members. Remember that this is a community we build together.

Slightly embarrassing but I'm not able to figure out how to submit a question.  I am signed into my GitHub account ...


Automated cherry pick of #10637: fix(region): guest associate eip checking fix

Cherry pick of #10637 on release/3.5.
#10637: fix(region): guest associate eip checking fix

/lgtm
/approve


Ability to use SPDX identifiers to quickly add licenses to FOSS software

Description of the new feature/enhancement
Ability to add SPDX identifiers (https://spdx.org/licenses/) similar to how scoop handles licenses, to add info on the licenses a package uses. See https://github.com/lukesampson/scoop-extras/blob/master/bucket/geany.json#L5 for one example.

Proposed technical implementation details (optional)

Personally, I think it would suffice to document (after establishing consensus) that it's best-practice to use an SPDX identifier in the License field of manifests, if the license is in the SPDX License List. There is currently very little guidance regarding values of those fields.


[LP] Permissions data could not be loaded.

Hill, i have an error, that doesn't allow me to enter to the server .
It tested different versions of the plugin and it says the same error.
I tested to host on my pc (Windows) but i also created a VM of Ubuntu server and the problem remains.
I just read (https://github.com/lucko/LuckPerms/issues/674) but my server its in online-mode=true (i also tested to make from 0 the server.propierties) But nothing.
I don't know where is the problem.
I am using SportPaper for 1.8.8.
https://pastebin.com/f3yyUqn8
Any idea that where it can be the error?
The last thing that i done is to connect it an mysql server....
Ty.

This problem is solved thanks to the branch of @Electroid
https://github.com/lucko/LuckPerms/pull/2091


No way to set choice screen background

I could not find a way to set a background of the choice screen. It seems it does not inherit a background of the MaterialApp like:
ThemeData(
        brightness: Brightness.dark,
        scaffoldBackgroundColor: background,
        backgroundColor: background,
),

so even though the whole material app background is set to dark, the Direct Select Flutter Widget uses white somehow.

Just fixed it in 1.0.4 .  Now choice screen background is the same as scaffoldBackgroundColor

@dvorapa  Just fixed it in 1.0.4 . Now choice screen background is the same as scaffoldBackgroundColor

+1 Thank you!


Jest error

Describe the bug
I get a  "Jest encountered an unexpected token" error when I try to run jest.
Did you try recovering your dependencies?
Yes
Which terms did you search for in User Guide?
Jest, testing, create-react-app
Environment
current version of create-react-app: 3.3.1
 running from /Users/too_tall_komugi/.npm/_npx/94992/lib/node_modules/create-react-app

 System:
   OS: macOS Mojave 10.14.6
   CPU: (4) x64 Intel(R) Core(TM) i5-4258U CPU @ 2.40GHz
 Binaries:
   Node: 11.4.0 - /usr/local/bin/node
   Yarn: Not Found
   npm: 6.13.7 - /usr/local/bin/npm
 Browsers:
   Chrome: 79.0.3945.130
   Firefox: Not Found
   Safari: 13.0.5
 npmPackages:
   react: ^16.12.0 => 16.12.0
   react-dom: ^16.12.0 => 16.12.0
   react-scripts: 3.3.1 => 3.3.1
 npmGlobalPackages:
   create-react-app: Not Found

Steps to reproduce

npx create-react-app my-app
cd my-app
npm install
jest

Expected behavior
Jest runs tests
Actual behavior
Jest error: Jest encountered an unexpected token

Reproducible demo
https://github.com/facebook/create-react-app
I followed the Option 1 and 2 steps here: https://create-react-app.dev/docs/running-tests
And I tried almost everything from here: https://github.com/facebook/jest/issues/6933
I added babel.config.js but still get an error about the svg import.
I understand that running npm test works and passes the test, but I think it's terrible that the project is missing babel config files and other dependencies that you need to run Jest!
Ultimately a problem because I cannot run jest -u to update the snapshot.
I read through these as well but still couldnt get it to work.
https://jestjs.io/docs/en/snapshot-testing
https://jestjs.io/blog/2016/07/27/jest-14.html
Could you please update create-react-app to have Jest working by default? Or at least update your docs to explain clearly how to make this work?
Thank you

Can confirm this for my CRA TypeScript project as well.
@ksaraie: workaround for updating test snapshots: npm test -- -u

@Snaptags thanks for the work around!! At the very least, the docs should mention that work around!


Create workflow to remove a list of samples from a VCF

Feature request: Create a standalone workflow that takes in a file listing sample IDs to be removed from a VCF, along with their unique variants.
Motivation: This would be useful for custom outlier filtration at many points in the pipeline, as well as to be able to remove samples when consent is revoked.
Details:

Make a standalone workflow for the existing task ExcludeOutliers in FilterOutlierSamples: https://github.com/broadinstitute/gatk-sv/blob/af2b36c621ecfaf2b959055b714b3de2d6377cab/wdl/FilterOutlierSamples.wdl#L80. The WDL should just be a wrapper for this single task, with some edits detailed below.
Rename ExcludeOutliers to ExcludeSamples to be more general
Edit the ExcludeSamples task to take in a File of sample IDs rather than an Array[String] in order to save on cromwell metadata space. Edit the inputs accordingly in the workflows that use this task (FilterOutlierSamples, FilterBatchSamples).
Edit the command block of the ExcludeSamples task to use bcftools rather than vcftools. Probably something like this should take care of the whole operation: bcftools view --samples-file ^~{samples_to_remove_file} --min-ac 1 --no-update --output-type z -o ~{output_prefix}.samples_removed.vcf.gz

We may want to make the --min-ac 1 flag optional (ie. when removing samples right before MakeCohortVcf, we shouldn't drop any records)

Edit the command block of the ExcludeSamples task to index the output VCF with tabix ~{output_prefix}.samples_removed.vcf.gz, and edit the outputs section of the task to output the VCF index
Edit imports in workflows that called the ExcludeOutliers task as needed
Use the new ExcludeSamples task in FilterOutlierSamplesPostMinGQ.wdl instead of the existing task.

Addressed in #437


Reset External Roles

Simplifies the process of resetting the external roles.

The hole PR may or may not be helpful. Maybe a document update or a ansible task is more appropriate?

Is there any interest in this or should we close this?


NGP to AY8910 generates strange VGM files

It seems that all chips are turned on, and most players cannot play converted files.
NGP to ay.zip

This cauese the same reason with #32. vgm-conv >=0.8.12 can convert the file.


Switch to UnitWeights

StatsBase v0.32.1 is out with UnitWeights so we can now switch to that for our default.

Sure, why not.


When is the scheduled release for the major version?

When is the scheduled release for the major version?

Hi, there is no scheduled release date.
The primitives are already used in production apps, but we are investigating if we can make the api a little better, especially for helm.
Because of that, breaking changes can happen, and thats why it is still alpha.
So alpha does not mean, that no primitive is finished.
When we publish the first major verision was not discussed by now, but there are some important primitives missing. (calendar & datepicker, slider).

@elite-benni when is the next release? accordion, table and select helm components can't be build.

@elite-benni
I comprehend your point. Could you kindly publish a release? I'm eager to utilize this library, but my managers are hesitant because it's in alpha stage. They fail to see its potential and argue that it's not yet production-ready. If it's released, perhaps they will be more inclined to accept it.

Do you plan to add the New York theme?

@jon9090 what if we moved to a different way where some components who we are confident won't change much anymore will move to a beta version or even v1 and the new components stay in alpha for now?
The biggest reason we're still in alpha is that changes that require both updates to helm and brain are so disruptive. You need to manually adjust the files and often the way you use them in a template.
I hope this helps a little

Do you plan to add the New York theme?

There's an enhancement for the New York style. I'm open to adding it at some point. Currently the bottleneck is just time to commit to the project. But maybe we can at least think of ways of getting started with it

Keeping this issue alive... 4 months since last comment!


followed w3 tutorial to make canvas clock

Your pull request needs further work because of the following reason(s):

Your main.css file was not found, it is a requirement (even if empty)

Once you have resolved the issues, comment on this request to be re-judged
This is an automated response, beep boop.
if you think there is a mistake, contact a maintainer

c8658add39de7dd942e3d3d0e0b724e678541234

There are 2 commits. The main.css is there. Check again.