Backbone widgets

@gibiansky A lot of changes for you to review.

There is some code-duplication, which I'll fix with the formatting.

This still requires some work.

@gibiansky It's an environment problem, just like you said.
Some debug print statements print to the notebook, while other print to the ipython log.

I've taken a brief look at the code and didn't find anything that jumped out immediately.
For dealing with environment issues, it's important to remember that the things run by the notebook aren't the things of the main IHaskell codebase, and in fact things like global variables may not be shared. So when you have a NOINLINE'd TChan, that TChan is not necessarily shared between the two environments.
The way the displayFromChan works is that from within the IHaskell environment, you can put stuff into the channel; then, when IHaskell wants to display it, it runs the unfoldM in the IHaskell environment to get out all the values, then packages them up, and then transfers them to the compiled environment via displayFromChan. It looks like relayMessages has been implemented the same way so it seems like the right way to go ahead.
Let me know if this ends up being particularly blocking, and I am happy to take a deeper look and actually play with the code.

I compared the sequence of messages for the old and new implementation. The sequences differ slightly, as follows
Both

KernelInfoReply
PublishStatus (Busy)
PublishInput

Old implementation only

PublishDisplayData

{
    "source": "haskell",
    "metadata": null,
    "data": null
}

Both

CommOpen

UpdateState

Display

PublishStatus (Idle)

Different in both implementations

ExecuteReply (Old one shown below)

{
  "payload": [ // Empty in the new implementation
    {
      "source": "page",
      "line": 0,
      "data": {
        "text\/plain": ""
      }
    }
  ],
  "execution_count": 1,
  "user_variables": null,
  "user_expressions": null,
  "status": "ok"
}

@gibiansky You wouldn't believe what the issue was. An empty label doesn't display the button, and the label was empty be default.

@sumitsahrawat Wow, after all that debugging and digging around in internals... Well hopefully it was educational at least.
Does it work now?

Yeah, it works great. I'll push an update in a couple of minutes :smile:.

@gibiansky It works really great now.
Inviting @miguelnegrao to be a beta user
I also created a minimal working example.

A remaining issue still is that the click handler is run in the Ghc monad, thus any print output goes into the ipython log. This might require some more nasty hacks.

@sumitsahrawat Great, looks awesome. The remaining issue definitely needs to be dealt with, though. Have you tried this?
ref <- newIORef 0
onClicked b $ const $ do
  modifyIORef' ref (+1)
  readIORef ref >>= (setButtonLabel b . show)

Does that work?
Also, can you change the order of parameters, so that b goes first, e.g.:
setButtonLabel :: Button -> String -> IO ()

This mirrors a lot of common interfaces (see Data.IORef, for example) and allows currying as used in the small snippet above.
Anyway those are minor things. Great work! Once the click handler runs properly in the interpreted environment, I can do a full code review, nitpick a bunch of things, then merge it!
If your work continues at this pace you're going to get a ton more done this summer than I expected :)

And yes, dealing with environments in IHaskell has pretty much always needed incredibly nasty hacks, so if that's what it ends up needing, go ahead. Just be very sure to document the nastiness and hackiness of the code in comments – multiparagraph comments explaining why hacks are necessary are perfectly ok if the hacks need that sort of explanation.

Also, can you change the order of parameters, so that b goes first

I agree completely. I found myself confused sometimes, and this seems better.

Does that work?

The example works, even though it requires explicit packing from String to Text. Shall I switch to using String by default?

If your work continues at this pace you're going to get a ton more done this summer than I expected :)

I hope so :smile:

I'm not sure about String vs Text, actually. I was debating that as well when writing it.
The main issue with Text is that it requires users to turn on OverloadedStrings to use easily, but that's not really a big deal.
For now leave it as Text if that's what it is; and let's default to Text for other similar things in the future in the widgets API. After a few months of usage we can see whether it gets in the way, and if necessary, change it to String.

Still some minor issues.

[ ] Prevent kernel crash on on_click causing exceptions/error.
[ ] Add functions to close buttons.
[ ] Change getButtonText to getButtonLabel

Will get to these asap.

@gibiansky It still freezes if the widget demands console input. IPython crashes if a button demands input (in python).
We might be able to do better, but I'll leave it for later.

So the previous issues with putStrLn and so on were dealt with? Awesome! Can you describe what you did and why it worked? (I haven't read the code but if there are confusing hacky sections make sure to document them. But this will come up during code review anyways.)
The todos are good; make sure also that Travis CI is building properly. If possible I would like to do the code review and merge once the button widget is complete (rather than wait for other widgets). After that it will be easier to merge new widgets as they involve less changes to core IHaskell.
Also it'd be great if you could file a bug in IPython about the failing on stdin (but make sure that one hasn't been filed already, of course).

I did file an issue ipython/ipywidgets#44.
I'll have to look more closely to determine why this worked. I tried it in many different ways (this was the third branch), and this one worked.
Should I catch more exceptions in IHaskell.Eval.Evaluate.capturedIO? I have currently set up catch for ErrorCall which handles both error and undefined within click handlers.

Ah, alright.
The fundamental rule is that no Haskell code you write in IHaskell should be able to crash IHaskell. So all exceptions thrown by widget event handlers should be caught somehow – they should never crash the kernel. Use SomeException would be my suggestion, I think. In what cases would you not want them to be handled as such?
What happens right now if you enter error "XYZ" as the button handler? Does the error message appear anywhere, and, if so, where?

It goes to the notebook using displayError.
I didn't want to use SomeException because its use is discouraged, even more when the user can hit Ctrl-C to cause an exception anytime.

Switched to using SomeException

@gibiansky I'd recommend making a new release for #495 before merging this.

Agreed. Is this ready to code review / merge?

Yes. :+1:

Not quite done, but have to go for now. Will continue code review later.

I'll fix all the issues you point out tomorrow. All in one go.
All the widgets have elements from the same set of properties, most of which are common for all widgets. I'll refactor the button implementation so that the widget agnostic parts live in one place.

@gibiansky Take a look at this notebook, where I experimented with all the properties the button widget has.
It would be better to provide all the possible properties separately, and define a widget as a collection of those properties. This way, ToJSON coulld be defined separately for all properties, which would make it easier to combine update and modify as seen above.

@gibiansky I'm trying to implement a WidgetModel, which will correspond with the generic model from IPython frontend. There is a lot of repitition, which I'm trying to solve using template haskell.
When it's done, it'll make it very easy to implement other widgets. Once I have a scheme which I'm sure won't see many changes, I'll make this ready to merge.

I've generally tried to avoid template haskell when possible. Why do you need it here?
Can you instead just have two data types, composed into one, via something like this?
data Widget a = Widget { ... , getWidget :: a }
data ButtonData = ButtonData { description :: String, ... }
type Button = Widget ButtonData

Or something along this path, rather than generating code via TH?

I'm trying to generalize the widget representation, so that all widgets use the same data structure. The following is a rough sketch:
module Attributes where

class Attribute a where
  pairs :: a -> [Pair]

-- Requires UndecidableInstances, but can be fixed using a newtype
instance Attribute a => ToJSON a where
  toJSON = object . pairs

-- Some attributes. All attributes can be converted to Pairs,
-- which can then be made into a big object using `object . concat`,
-- while also providing toJSON functionality individually.

-- For example:

data ViewName = ViewName String

instance Attribute ViewName where
  pairs (ViewName name) = ["_view_name" .= str name]

-------------------------

module WidgetModel where

data WidgetModel = WidgetModel UUID MutableAttributes

-- All possible attributes.
data MutableAttributes = MutableAttributes { _attr :: Maybe (<some attribute>) }

-- Skip widget attributes with `Nothing` values
widgetAttributeToPairs :: WidgetAttribute -> [Pair]
widgetAttributeToPairs (WidgetAttribute m) = maybe [] pairs m

I needed template haskell to generate small functions like these:
viewName = WidgetAttribute . _viewName

Perhaps the widget can instead be represented by some sort of Map? Instead of as a record.
In particular I am somewhat hesitant to do template haskell immediately. It seems like overarchitecting. Let's make 2-3 widgets first, and then try to generalize everything.
I'll continue to code review this so we can merge it soon. Will also make a release soon.

Yeah. I'll keep experimenting in the meantime.
Also, I'm thinking of working on a selection widget next, maybe dropdown menus.

Good plan.

Alright, reviewed the rest of the code. Looks pretty clean and solid; only minor comments all-around. Once those are addressed and the Travis CI build passes I think it'll be ready for merge. Woohoo!

Thanks, I'll get to it now. Expect it to be done in a couple of hours max.

@gibiansky Does it make sense to call it ButtonWidget instead of Button. IPython has dropped the Widget suffix, whereas we will have to use it atleast for TextWidget.

@sumitsahrawat Is this ready to merge (other than the refactoring we'll discuss after it's merged)?

Yes, it looks ready to merge. :+1:

@gibiansky Adding ImageWidget, which is also ready.

@gibiansky The OutputWidget is coming :smile:

Ran into some issues with OutputWidget. It allows appending of outputs, but sadly, clearing output doesn't work as expected. Will have to investigate further.
Feel free to merge this in the meantime.

@sumitsahrawat Great, will merge as soon as last commit is verified on Travis!

Made a mistake while separating output-widget and widget branches. Fixed.

It's late here right now so I'm off to sleep. I'll merge this tomorrow morning and will give some ideas on how to refactor it as well.
The main idea I have in mind is to change from this
data Button =
       Button
         { uuid :: U.UUID       -- ^ The UUID for the comm
         , description :: IORef Text -- ^ The label displayed on the button
         , tooltip :: IORef Text     -- ^ The tooltip shown on mouseover
         , disabled :: IORef Bool    -- ^ Whether the button is disabled
         , buttonStyle :: IORef ButtonStyle -- ^ The button_style
         , clickHandler :: IORef (Button -> IO ()) -- ^ Function executed when button is clicked
         }

-- | Mechanism for updating the actual in-memory widget.
modify :: IHaskellWidget a => a -> (a -> IORef b) -> b -> IO ()

-- | Mechanism for updating the frontend by sending a JSON blob.
update :: IHaskellWidget a => a -> [Pair] -> IO ()

to perhaps using a heterogenous typed list slash record from Vinyl, using their rough idea of a lens for accessing/setting:
import Data.Vinyl

-- Possible widget fields declared as Vinyl record fields...
description = Field ::: "description" ::: IORef Text
clickHandler = Field ::: "click_handler" ::: IORef (Button -> IO ())

-- Fields for a button
type ButtonFields = [description, clickHandler]

-- | ADT for *any* widget
data Widget f = Widget { uuid :: UUID, fields :: f }

-- | Type for a button
type Button = Widget ButtonFields

-- | modify and update combined
change :: Widget f -> sing r -> r -> IO ()
change = use rput?

(Will investigate more later.) If this proves to be too complex, then we can just deal with code duplication.

@gibiansky The OutputWidget is coming :smile:

Unfortunately I don't have time at the moment to test any of this, but I'm really looking forward for the final result ! :-) If you take requests, a slider widget would be very useful for all sorts of things, such as math and graph visualizations, since it basically represents a range of real numbers.

@miguel-negrao Sliders have a big hierarchy in IPython. I actually started the implementation with sliders, but switched to buttons due to their simplicity.
I'll implement them next, but after some refactoring of the current widgets. Will be sure to ping you then. Thanks for chiming in.


Docs: Fixed Typo

Changed 'Gudes' to 'Guides'

Gudes enough for me

You've Gudes to be kidding ;P

He that brings the gudes hath surely a right to dispose of the gear.

Gudes god...enough already :P

Will merge once the tests pass...

Gudes to go @tractorcow


[Data Factory]Add property prefix to Azure Blob source

Data factory SDK update:
Add property 'prefix' to Azure Blob source
spec review PR:
https://github.com/Azure/azure-rest-api-specs/pull/7633

@erich-wang Could you please help review it? Thanks


[Q] Can I use a Technisat skystar S2 board? TSdvb does not see it in wes7.

I am running win7 embedded and trying to extract Himawarri cast HRIT data stream. on Jsat 2b at 154E.
The downlink carries multicast UDP packets which are wrapped in DVB-MPE and need to be unwrapped. As I understand it not all demod chips will give this base level data.
The card is a Technisat skystar S2 board it appears to work with the Technisat software for it and the current DVBdeam version on normal tv dvbs2 signals from another sat.
DVBdream  reports  the deice as B2C2 - direct on driver v Device #1
The board uses an flexcop2b.
I am trying to execute this line: but it returns no device.
tsp -I dvb --adapter 0 --delivery-system "DVB-S2" --lnb "5150000000" --frequency<PHONE_NUMBER> --modulation QPSK --symbol-rate 2586148 --fec-inner "3/5" --roll-off 0.2 --polarity "horizontal" -P mpe --pid 0x03E9 --udp-forward --log -O drop
tslsdvb -e outputs as follows:
=== Device category CAPTURE
device "VIA HD Audio Input"
Some supported interfaces:
interface IAMDeviceRemoval
interface IAMFilterMiscFlags
interface IAMovieSetup
interface IBaseFilter
interface IKsControl
interface IKsPropertySet
interface IKsTopologyInfo
interface IMediaFilter
interface IMediaSeeking
IKsPropertySet properties support:
IKsControl properties support:
IKsTopologyInfo:
Categories: AM_KSCATEGORY_AUDIO AM_KSCATEGORY_CAPTURE {EB115FFC-10C8-4964-831D-6DCB02E6F23F}
Node 0, type {4D837FE0-C555-11D0-8A2B-00A0C9255AC1}

Pin "Recording Control", direction: output
Some supported interfaces:
interface IAMBufferNegotiation
interface IAMStreamConfig
interface IAMStreamControl
interface IKsControl
interface IKsPin
interface IKsPropertySet
interface IMediaSeeking
interface IPin
interface IQualityControl
IKsPropertySet properties support:
IKsControl properties support:

Pin "Input1", direction: input
Some supported interfaces:
interface IKsControl
interface IKsPin
interface IKsPropertySet
interface IMemInputPin
interface IPin
interface IQualityControl
interface IStreamBuilder
IKsPropertySet properties support:
IKsControl properties support:

=== Device category SPLITTER
=== Device category TVTUNER
=== Device category BDA_NETWORK_PROVIDER
=== Device category BDA_TRANSPORT_INFORMATION
=== Device category BDA_RECEIVER_COMPONENT
=== Device category BDA_NETWORK_TUNER
=== Tuning spaces
tslsdvb: CoCreateInstance : class not registered
It seems these cards are a better proposition in linux, Unfortunately I don't have one to hand with a pci slot, so I am stuck with the windows box and I am in no way familiar with DVB or or much else inside MS. So I assume its running through some kind of windows construct called BDA. Windows device manager shows the board as a network card.
The question is there a way to get to this stream from this card, and is it possible in a windows box?
Alternatively I can change the OS in the machine to Debian if it will work there.

The downlink carries multicast UDP packets which are wrapped in DVB-MPE and need to be unwrapped. As I understand it not all demod chips will give this base level data.

 The UDP stream is MPE-encapsulated into one PID of this transport stream. If you can receive this TS using TSDuck, then its mpe plugin will let you extract the UDP stream from the TS.

The card is a Technisat skystar S2 board it appears to work with the Technisat software for it and the current DVBdeam version on normal tv dvbs2 signals from another sat.
It seems these cards are a better proposition in linux, Unfortunately I don't have one to hand with a pci slot, so I am stuck with the windows box and I am in no way familiar with DVB or or much else inside MS. So I assume its running through some kind of windows construct called BDA. Windows device manager shows the board as a network card.

You got the point. Each OS, Windows or Linux, provides a more (Linux) or less (Windows) common API to access tuners, provided that some appropriate driver software for this tuner is available and presents the right API. On Windows, there are two levels of such software: BDA drivers and DirectShow filters. There is no common userland API to BDA drivers. Each vendor implements its own undocumented API. On top of the BDA driver, the tuner vendor provides a DirectShow filter. At this level, the user API is more or less standard and tuner-agnostic applications such as TSDuck can interact with the driver using DirectShow.
Most tuner vendors provide both a BDA driver and a DirectShow filter and their tuners can be used by TSDuck. The TSDuck user's guide provides a list of tested tuners in section 7.1.4, based on the feedback of various users. And you can see that, unfortunately, TechniSat is the only tuner vendor which does not provide a DirectShow filter and which, consequently, cannot be used with tuner-agnostic applications such as TSDuck on Windows.
The tested tuner which is mentioned in the user's guide is a USB one, not a PCIe one. But usually each tuner vendor has a consistent software architecture across all its devices. I tested this device myself, from the large tuner collection of one of may colleagues. So, I can confirm there is no way to use it on Windows. I assume that the TechniSat proprietary software to watch TV uses the proprietary interface of its tuner driver. But this interface is specific to TechniSat and not documented.

The question is there a way to get to this stream from this card, and is it possible in a windows box?
Alternatively I can change the OS in the machine to Debian if it will work there.

As you may realize, reading some discussions in this forum, including recent ones, using tuners on Windows is a pain. It works (except with TechniSat devices) but the DirectShow framework is no longer actively maintained by Microsoft. Recent modulations such as ISDB are poorly supported. The performances are no very good. DirectShow is overly and uselessly complicated. Etc, etc.
As a rule of thumb, if you need a stable and reliable reception, I always recommend Linux. The LinuxTV API is simple, fast and reliable. It is maintained by the community and new modulations are smoothly integrated. Then you need to check the quality of the driver for each tuner. I cannot tell for the TechniSat one.
Currently, the only DVB-S2 tuner I own is a DVBsky S960 which is pretty good and reliable. But this is a USB one. I also have a PCTV DVB-S2 461e (USB as well) but it does not work well and I do not recommend it. In the past, I used very reliable Hauppauge PCI tuners but I no longer have them.
Concerning the distro, well, Linux is Linux and you choose the one you like. However, to get stock drivers for recent devices, you need a recent kernel. So, in the Debian family, I would recommend Ubuntu over Debian. The Debian kernels are old and do not integrate recent drivers. If you are familiar with the Linux kernel, you can always rebuild recent drivers from sources on older kernels. But if you do not want to struggle with driver compilation, better use Ubuntu (I would similarly recommend Fedora over RedHat/CentOS for the same reasons).

The downlink carries multicast UDP packets which are wrapped in DVB-MPE and need to be unwrapped. As I understand it not all demod chips will give this base level data.

 The UDP stream is MPE-encapsulated into one PID of this transport stream. If you can receive this TS using TSDuck, then its mpe plugin will let you extract the UDP stream from the TS.

The card is a Technisat skystar S2 board it appears to work with the Technisat software for it and the current DVBdeam version on normal tv dvbs2 signals from another sat.
It seems these cards are a better proposition in linux, Unfortunately I don't have one to hand with a pci slot, so I am stuck with the windows box and I am in no way familiar with DVB or or much else inside MS. So I assume its running through some kind of windows construct called BDA. Windows device manager shows the board as a network card.

You got the point. Each OS, Windows or Linux, provides a more (Linux) or less (Windows) common API to access tuners, provided that some appropriate driver software for this tuner is available and presents the right API. On Windows, there are two levels of such software: BDA drivers and DirectShow filters. There is no common userland API to BDA drivers. Each vendor implements its own undocumented API. On top of the BDA driver, the tuner vendor provides a DirectShow filter. At this level, the user API is more or less standard and tuner-agnostic applications such as TSDuck can interact with the driver using DirectShow.
Most tuner vendors provide both a BDA driver and a DirectShow filter and their tuners can be used by TSDuck. The TSDuck user's guide provides a list of tested tuners in section 7.1.4, based on the feedback of various users. And you can see that, unfortunately, TechniSat is the only tuner vendor which does not provide a DirectShow filter and which, consequently, cannot be used with tuner-agnostic applications such as TSDuck on Windows.
The tested tuner which is mentioned in the user's guide is a USB one, not a PCIe one. But usually each tuner vendor has a consistent software architecture across all its devices. I tested this device myself, from the large tuner collection of one of may colleagues. So, I can confirm there is no way to use it on Windows. I assume that the TechniSat proprietary software to watch TV uses the proprietary interface of its tuner driver. But this interface is specific to TechniSat and not documented.

The question is there a way to get to this stream from this card, and is it possible in a windows box?
Alternatively I can change the OS in the machine to Debian if it will work there.

As you may realize, reading some discussions in this forum, including recent ones, using tuners on Windows is a pain. It works (except with TechniSat devices) but the DirectShow framework is no longer actively maintained by Microsoft. Recent modulations such as ISDB are poorly supported. The performances are no very good. DirectShow is overly and uselessly complicated. Etc, etc.
As a rule of thumb, if you need a stable and reliable reception, I always recommend Linux. The LinuxTV API is simple, fast and reliable. It is maintained by the community and new modulations are smoothly integrated. Then you need to check the quality of the driver for each tuner. I cannot tell for the TechniSat one.
Currently, the only DVB-S2 tuner I own is a DVBsky S960 which is pretty good and reliable. But this is a USB one. I also have a PCTV DVB-S2 461e (USB as well) but it does not work well and I do not recommend it. In the past, I used very reliable Hauppauge PCI tuners but I no longer have them.
Concerning the distro, well, Linux is Linux and you choose the one you like. However, to get stock drivers for recent devices, you need a recent kernel. So, in the Debian family, I would recommend Ubuntu over Debian. The Debian kernels are old and do not integrate recent drivers. If you are familiar with the Linux kernel, you can always rebuild recent drivers from sources on older kernels. But if you do not want to struggle with driver compilation, better use Ubuntu (I would similarly recommend Fedora over RedHat/CentOS for the same reasons).

OK Lelegrad, thank very much for the response, you have confirmed what I have figured from the last couple of days messing about with it.
I have seen mentions of a Linux Driver for it working this card with Centos for processing GEOS cast streams in South America and it being in more recent Kernels. So I will try Debian first as I have the installer ready on a stick.  I keep it near the MS box, threat being "next time you foul yourself your of here forever" Being embedded saves its skin till now. I used Ubuntu a lot about 15 years ago but  felt later revisions lost their way and bloated where as Debian just works with everything I have thrown at it so I will try it first.
SO I will  change OS and report back the results.   If this card cant provide the stream, I would go to a USB TBS5520SE which would avoid the PCI slot requirement.  I will leave the issue open till I have a result on the card with TSDuck either way in the next few days.

OK Lelegrad, thank very much for the response, you have confirmed what I have figured from the last couple of days messing about with it.
I have seen mentions of a Linux Driver for it working this card with Centos for processing GEOS cast streams in South America and it being in more recent Kernels. So I will try Debian first as I have the installer ready on a stick.  I keep it near the MS box, threat being "next time you foul yourself your of here forever" Being embedded saves its skin till now. I used Ubuntu a lot about 15 years ago but  felt later revisions lost their way and bloated where as Debian just works with everything I have thrown at it so I will try it first.
SO I will  change OS and report back the results.   If this card cant provide the stream, I would go to a USB TBS5520SE which would avoid the PCI slot requirement.  I will leave the issue open till I have a result on the card with TSDuck either way in the next few days.

Now I have written over windows with linux which always feels good.  On Debian buster, all installs ok without issue, and it has /dev/dvb/adapter0.
The machine is an Intel not AMD and Debian was not happy about the AMD requirement in the deb but TSDuck built fine from source without any warnings or error with the only extra requirement was curl.
hca@wx:~$ tslsdvb
0: /dev/dvb/adapter0 ("Conexant CX24120/CX24118", DVB-S, DVB-S2)
and further
hca@wx:~$ tslsdvb --verbose
0: /dev/dvb/adapter0 ("Conexant CX24120/CX24118", DVB-S, DVB-S2)
Device: /dev/dvb/adapter0/frontend0
Delivery system ............................ DVB-S
Frequencies:
Min ................................ 950,000,000 Hz
Max .............................. 2,150,000,000 Hz
Step ................................. 1,011,000 Hz
Tolerance ............................ 5,000,000 Hz
Symbol rates:
Min .................................. 1,000,000 sym/s
Max ................................. 45,000,000 sym/s
Tolerance .................................... 0 sym/s
Spectral inversion ........................... off
FEC(inner) .................................. auto
Modulation .................................. QPSK
Capabilities: inversion auto, FEC 1/2, FEC 2/3, FEC 3/4, FEC 4/5, FEC 5/6,
FEC 6/7, FEC 7/8, FEC auto, QPSK, 2nd generation, recover
However the command I need to run is failing as a wrong input option. I think it was intended to be used in a win box but the linux format  tsp -I dvb --/dev/dvb/adapter0......  device gives the same result.
I tried -d for debug output in the command but I cant get any change in the output response? just tsp -d shows as below
hca@wx:~$ tsp -d
ID   State      Output               E-Level  Times(r/u/s)   Command [run=0/1]
0    finished   /tmp/ts-out.nLrT9T   -1       0.00/0.00/0.00 H
1    finished   /tmp/ts-out.a7gKgI   -1       0.00/0.00/0.00 H
2    finished   /tmp/ts-out.dER38R   -1       0.00/0.00/0.00 H
3    skipped    (no output)                                  [2]&& 4
4    skipped    (no output)                                  [3]&& 2
hca@wx:~$ tsp -I dvb --adapter 0 --delivery-system "DVB-S2" --lnb "5150000000" --frequency<PHONE_NUMBER> --modulation QPSK --symbol-rate 2586148 --fec-inner "3/5" --roll-off 0.2 --polarity "horizontal" -P mpe --pid 0x03E9 --udp-forward --log -O drop
Wrong option I.
Looking at the documentation I think the command is ok, but how to i determine what is wrong with option I,

Now I have written over windows with linux which always feels good.  On Debian buster, all installs ok without issue, and it has /dev/dvb/adapter0.
The machine is an Intel not AMD and Debian was not happy about the AMD requirement in the deb but TSDuck built fine from source without any warnings or error with the only extra requirement was curl.
hca@wx:~$ tslsdvb
0: /dev/dvb/adapter0 ("Conexant CX24120/CX24118", DVB-S, DVB-S2)
and further
hca@wx:~$ tslsdvb --verbose
0: /dev/dvb/adapter0 ("Conexant CX24120/CX24118", DVB-S, DVB-S2)
Device: /dev/dvb/adapter0/frontend0
Delivery system ............................ DVB-S
Frequencies:
Min ................................ 950,000,000 Hz
Max .............................. 2,150,000,000 Hz
Step ................................. 1,011,000 Hz
Tolerance ............................ 5,000,000 Hz
Symbol rates:
Min .................................. 1,000,000 sym/s
Max ................................. 45,000,000 sym/s
Tolerance .................................... 0 sym/s
Spectral inversion ........................... off
FEC(inner) .................................. auto
Modulation .................................. QPSK
Capabilities: inversion auto, FEC 1/2, FEC 2/3, FEC 3/4, FEC 4/5, FEC 5/6,
FEC 6/7, FEC 7/8, FEC auto, QPSK, 2nd generation, recover
However the command I need to run is failing as a wrong input option. I think it was intended to be used in a win box but the linux format  tsp -I dvb --/dev/dvb/adapter0......  device gives the same result.
I tried -d for debug output in the command but I cant get any change in the output response? just tsp -d shows as below
hca@wx:~$ tsp -d
ID   State      Output               E-Level  Times(r/u/s)   Command [run=0/1]
0    finished   /tmp/ts-out.nLrT9T   -1       0.00/0.00/0.00 H
1    finished   /tmp/ts-out.a7gKgI   -1       0.00/0.00/0.00 H
2    finished   /tmp/ts-out.dER38R   -1       0.00/0.00/0.00 H
3    skipped    (no output)                                  [2]&& 4
4    skipped    (no output)                                  [3]&& 2
hca@wx:~$ tsp -I dvb --adapter 0 --delivery-system "DVB-S2" --lnb "5150000000" --frequency<PHONE_NUMBER> --modulation QPSK --symbol-rate 2586148 --fec-inner "3/5" --roll-off 0.2 --polarity "horizontal" -P mpe --pid 0x03E9 --udp-forward --log -O drop
Wrong option I.
Looking at the documentation I think the command is ok, but how to i determine what is wrong with option I,

The machine is an Intel not AMD and Debian was not happy about the AMD requirement in the deb but TSDuck built fine from source without any warnings or error

"amd64" is the generic Debian name for x64 architecture, for both AMD and Intel CPU. It also works on 64-bit Intel CPU. Maybe you use a 32-bit distro. What does name -a say?

with the only extra requirement was curl.

The script build/install-prerequisites.sh installs all required dependencies on Linux and macOS. See the build instructions here.

However the command I need to run is failing as a wrong input option.

Your post is unclear about the command and option. Could you please copy/paste the exact command and its output?

The machine is an Intel not AMD and Debian was not happy about the AMD requirement in the deb but TSDuck built fine from source without any warnings or error

"amd64" is the generic Debian name for x64 architecture, for both AMD and Intel CPU. It also works on 64-bit Intel CPU. Maybe you use a 32-bit distro. What does name -a say?

with the only extra requirement was curl.

The script build/install-prerequisites.sh installs all required dependencies on Linux and macOS. See the build instructions here.

However the command I need to run is failing as a wrong input option.

Your post is unclear about the command and option. Could you please copy/paste the exact command and its output?

Yes I also thought "amd64" is the generic Debian name and was not sure why the issue with the deb file, but having used both Debian and Centos over they years I know both are are bit pedantic but both are rock solid.  In the early days were never had nice things like RPM and DEB installers, so I immediately went for the building with source option which had no apparent issues at all.
Here is step by step what I have done so far.

I have this install of Debian on couple of machines here but they are nuc's with no pci slots, so its a fresh install .

I got the gziped sourced from here   wget https://github.com/tsduck/tsduck/archive/v3.24-2109.tar.gz and decompressed it.

I followed the instruction on the build page here   https://tsduck.io/doxy/building.html

I chose the "Building without specialized dependencies" option from that page with
"make NOPCSC=1 NOCURL=1 NODTAPI=1"   because I have no CA, need for html or a deteck device.
however there were warnings about missing curl.

so I installed curl and curl dev, issued "make clean", then "make NOPCSC=1 NOCURL=1 NODTAPI=1" again.
this time I watched the compile run with no error or warnings. so I ran " make install". I did not edit the make files.

Perfect, commands all appear to work, as I posted above TSDuck finds and reports the card details with tslsdvb --verbose

I did not install TSDuck dev as I did not expect to need it for this task. Also I did not run build/install-prerequisites.sh.

Since your response I ran "build/install-prerequisites.sh" and it completed installing the requirements without warning or error. Since then I have not rebuilt TSDuck. Maybe I should? There is no apparent change after the install of these additional items.
Here are answers to your questions in last post.
Here is uname output:
uname -a
Linux wx 4.19.0-13-686-pae #1 SMP Debian 4.19.160-2 (2020-11-28) i686 GNU/Linux
Here is the command and output supposed to be used to process the stream.  I think this was as used in a windows machine.
tsp -I dvb --adapter 0 --delivery-system "DVB-S2" --lnb "5150000000" --frequency<PHONE_NUMBER> --modulation QPSK --symbol-rate 2586148 --fec-inner "3/5" --roll-off 0.2 --polarity "horizontal" -P mpe --pid 0x03E9 --udp-forward --log -O drop
Wrong option I.
And here is the same command and output were I changed it for linux device.  eg /dev/dvb/adapter0
tsp -I dvb --/dev/dvb/adapter0 --delivery-system "DVB-S2" --lnb "5150000000" --frequency<PHONE_NUMBER> --modulation QPSK --symbol-rate 2586148 --fec-inner "3/5" --roll-off 0.2 --polarity "horizontal" -P mpe --pid 0x03E9 --udp-forward --log -O drop
Wrong option I.
I am not sure if there is some thing wrong in the command, or is it trying to set an unsupported option in the card? I tried to add options for debug and verbose with no success the output remains "Wrong option I".
The card is running with signal, and as I said before worked with normal DVB-s2 tv in windows.
Out of interest this is the weather satellite project using TSDuck and the source of the command line I am using https://github.com/sam210723/himawari-rx
Thank again for your help on this.

Yes I also thought "amd64" is the generic Debian name and was not sure why the issue with the deb file, but having used both Debian and Centos over they years I know both are are bit pedantic but both are rock solid.  In the early days were never had nice things like RPM and DEB installers, so I immediately went for the building with source option which had no apparent issues at all.
Here is step by step what I have done so far.

I have this install of Debian on couple of machines here but they are nuc's with no pci slots, so its a fresh install .

I got the gziped sourced from here   wget https://github.com/tsduck/tsduck/archive/v3.24-2109.tar.gz and decompressed it.

I followed the instruction on the build page here   https://tsduck.io/doxy/building.html

I chose the "Building without specialized dependencies" option from that page with
"make NOPCSC=1 NOCURL=1 NODTAPI=1"   because I have no CA, need for html or a deteck device.
however there were warnings about missing curl.

so I installed curl and curl dev, issued "make clean", then "make NOPCSC=1 NOCURL=1 NODTAPI=1" again.
this time I watched the compile run with no error or warnings. so I ran " make install". I did not edit the make files.

Perfect, commands all appear to work, as I posted above TSDuck finds and reports the card details with tslsdvb --verbose

I did not install TSDuck dev as I did not expect to need it for this task. Also I did not run build/install-prerequisites.sh.

Since your response I ran "build/install-prerequisites.sh" and it completed installing the requirements without warning or error. Since then I have not rebuilt TSDuck. Maybe I should? There is no apparent change after the install of these additional items.
Here are answers to your questions in last post.
Here is uname output:
uname -a
Linux wx 4.19.0-13-686-pae #1 SMP Debian 4.19.160-2 (2020-11-28) i686 GNU/Linux
Here is the command and output supposed to be used to process the stream.  I think this was as used in a windows machine.
tsp -I dvb --adapter 0 --delivery-system "DVB-S2" --lnb "5150000000" --frequency<PHONE_NUMBER> --modulation QPSK --symbol-rate 2586148 --fec-inner "3/5" --roll-off 0.2 --polarity "horizontal" -P mpe --pid 0x03E9 --udp-forward --log -O drop
Wrong option I.
And here is the same command and output were I changed it for linux device.  eg /dev/dvb/adapter0
tsp -I dvb --/dev/dvb/adapter0 --delivery-system "DVB-S2" --lnb "5150000000" --frequency<PHONE_NUMBER> --modulation QPSK --symbol-rate 2586148 --fec-inner "3/5" --roll-off 0.2 --polarity "horizontal" -P mpe --pid 0x03E9 --udp-forward --log -O drop
Wrong option I.
I am not sure if there is some thing wrong in the command, or is it trying to set an unsupported option in the card? I tried to add options for debug and verbose with no success the output remains "Wrong option I".
The card is running with signal, and as I said before worked with normal DVB-s2 tv in windows.
Out of interest this is the weather satellite project using TSDuck and the source of the command line I am using https://github.com/sam210723/himawari-rx
Thank again for your help on this.

uname -a
Linux wx 4.19.0-13-686-pae #1 SMP Debian 4.19.160-2 (2020-11-28) i686 GNU/Linux

This is a 32-bit distro. This is why the 64-bit (amd64 in Debian parlance) package could not be installed. Installing a 32-bit distro in 2021 is a bit a pity. You should use 64-bit distros. Some distros (not Debian) not even longer provide 32-bit binaries. I don't provide 32-bit prebuilt binaries for TSDuck on Linux.

tsp -I dvb --adapter 0 --delivery-system "DVB-S2" --lnb "5150000000" --frequency<PHONE_NUMBER> --modulation QPSK --symbol-rate 2586148 --fec-inner "3/5" --roll-off 0.2 --polarity "horizontal" -P mpe --pid 0x03E9 --udp-forward --log -O drop
Wrong option I.

"Wrong option I" is not a TSDuck message. There must be some other command in your path which is named tsp but has nothing to do with TSDuck. Try which tsp and tsp --version to help characterise which kind of executable it is.
Your command is otherwise syntactically correct. Just done a copy/paste on my machine and the options are accepted.

uname -a
Linux wx 4.19.0-13-686-pae #1 SMP Debian 4.19.160-2 (2020-11-28) i686 GNU/Linux

This is a 32-bit distro. This is why the 64-bit (amd64 in Debian parlance) package could not be installed. Installing a 32-bit distro in 2021 is a bit a pity. You should use 64-bit distros. Some distros (not Debian) not even longer provide 32-bit binaries. I don't provide 32-bit prebuilt binaries for TSDuck on Linux.

tsp -I dvb --adapter 0 --delivery-system "DVB-S2" --lnb "5150000000" --frequency<PHONE_NUMBER> --modulation QPSK --symbol-rate 2586148 --fec-inner "3/5" --roll-off 0.2 --polarity "horizontal" -P mpe --pid 0x03E9 --udp-forward --log -O drop
Wrong option I.

"Wrong option I" is not a TSDuck message. There must be some other command in your path which is named tsp but has nothing to do with TSDuck. Try which tsp and tsp --version to help characterise which kind of executable it is.
Your command is otherwise syntactically correct. Just done a copy/paste on my machine and the options are accepted.

Ok thanks for that, that is a bit strange, I don't remember ever having a 32bit Debian install, I thought it was the same thumb drive I used on the nuc. which reports as below.
hca@nuk2:~$ uname -a
Linux nuk2 4.19.0-6-amd64 #1 SMP Debian 4.19.67-2+deb10u1 (2019-09-20) x86_64 GNU/Linux
hca@nuk2:~$
Bear with me, there's about 6 install sticks of various things from over the years, maybe I used the wrong one or its related to the processor in the MB, although its supposed to be 64 bit spec.
Intel® Atom™ Processor D410 (1.6 GHz)
Data width	64 bit
The number of CPU cores	1
The number of threads	2

Microsoft® Windows® 7 / 7 64-bit / Vista™ / Vista™ 64-bit / XP / XP 64-bit compliant

Thanks for the confirmation on the input command, thats found the first issue.
Aside from that tsp --version returned a number that increased every time, correct its not TSDuck!
tsp -V
Task Spooler v1.0 - a task queue system for the unix user.
So I removed it and now I get the following
hca@wx:~/tsduck-3.24-2109$ tsp --version
tsp: TSDuck - The MPEG Transport Stream Toolkit - version 3.24-2109
Now the command line out puts :
hca@wx:~/tsduck-3.24-2109$ tsp --verbose -I dvb  -d /dev/dvb/adapter0 --delivery-system "DVB-S2" --lnb "5150000000" --frequency<PHONE_NUMBER> --modulation QPSK --symbol-rate 2586148 --fec-inner "3/5" --roll-off 0.2 --polarity "horizontal" -P mpe --pid 0x03E9 --udp-forward --log -O drop

dvb: using /dev/dvb/adapter0 (DVB-S, DVB-S2)
Error: dvb: DVB frontend FE_SET_TONE error: Remote I/O error

which is a kernel ioctl response. Now in this particular case there is I have need for 22khz or for that matter diseq so I could rebuild with out the call, but its unlikely driver dos not support 22khz for KU universal lnbs.
Here is dump of loaded modules,
hca@wx:~/tsduck-3.24-2109$ lsmod
Module                  Size  Used by
fuse                      90112  3
appletalk              28672  0
psnap                  16384  1 appletalk
llc                        16384  1 psnap
ax25                    49152  0
isl6421                16384  1
cx24120              28672  1
mt312                 20480  0
stv0297               16384  0
bcm3510             20480  0
lgdt330x             20480  0
nxt200x              20480  0
snd_hda_codec_via      20480  1
mt352                  16384  0
snd_hda_codec_generic    65536  1 snd_hda_codec_via
snd_hda_intel          32768  4
stv0299                20480  0
snd_hda_codec          94208  3 snd_hda_intel,snd_hda_codec_generic,snd_hda_codec_via
b2c2_flexcop_pci       16384  0
snd_hda_core           57344  4 snd_hda_intel,snd_hda_codec,snd_hda_codec_generic,snd_hda_codec_via
b2c2_flexcop           28672  1 b2c2_flexcop_pci
snd_hwdep              16384  1 snd_hda_codec
joydev                 20480  0
s5h1420                20480  1 b2c2_flexcop
snd_pcm                81920  3 snd_hda_intel,snd_hda_codec,snd_hda_core
cx24113                20480  1 b2c2_flexcop
cx24123                20480  1 b2c2_flexcop
snd_timer              28672  1 snd_pcm
dvb_core              102400  3 b2c2_flexcop,stv0299,lgdt330x
snd                    61440  15 snd_hda_intel,snd_hwdep,snd_hda_codec,snd_timer,snd_hda_codec_generic,snd_pcm,snd_hda_codec_via
soundcore              16384  1 snd
coretemp               16384  0
sg                     28672  0
pcspkr                 16384  0
iTCO_wdt               16384  0
iTCO_vendor_support    16384  1 iTCO_wdt
serio_raw              16384  0
evdev                  20480  10
parport_pc             28672  1
ppdev                  20480  0
lp                     20480  0
parport                40960  3 lp,parport_pc,ppdev
ip_tables              20480  0
x_tables               24576  1 ip_tables
autofs4                36864  2
ext4                  532480  1
crc16                  16384  1 ext4
mbcache                16384  1 ext4
jbd2                   86016  1 ext4
crc32c_generic         16384  2
fscrypto               24576  1 ext4
ecb                    16384  0
crypto_simd            16384  0
cryptd                 20480  1 crypto_simd
aes_i586               20480  0
hid_generic            16384  0
usbhid                 45056  0
hid                   102400  2 hid_generic,usbhid
sd_mod                 49152  3
ata_generic            16384  0
i915                 1331200  2
ata_piix               32768  2
video                  40960  1 i915
libata                192512  2 ata_piix,ata_generic
i2c_algo_bit           16384  1 i915
psmouse               126976  0
drm_kms_helper        135168  1 i915
scsi_mod              172032  3 sd_mod,libata,sg
ehci_pci               16384  0
uhci_hcd               40960  0
r8169                  73728  0
ehci_hcd               65536  1 ehci_pci
i2c_i801               24576  0
lpc_ich                24576  0
drm                   323584  4 i915,drm_kms_helper
usbcore               188416  4 usbhid,ehci_hcd,uhci_hcd,ehci_pci
realtek                16384  1
mfd_core               16384  1 lpc_ich
libphy                 45056  2 r8169,realtek
usb_common             16384  1 usbcore
button                 16384  0
Firstly I should try and figure how I ended up with a 32 bit install and change it to 64 bit because its a waste but as I have built from source, not the deb, I assume everything should still work for now?
Possibly I should put a screen/kyb etc on the machine and install some thing like linux tv to verify these things first?

Ok thanks for that, that is a bit strange, I don't remember ever having a 32bit Debian install, I thought it was the same thumb drive I used on the nuc. which reports as below.
hca@nuk2:~$ uname -a
Linux nuk2 4.19.0-6-amd64 #1 SMP Debian 4.19.67-2+deb10u1 (2019-09-20) x86_64 GNU/Linux
hca@nuk2:~$
Bear with me, there's about 6 install sticks of various things from over the years, maybe I used the wrong one or its related to the processor in the MB, although its supposed to be 64 bit spec.
Intel® Atom™ Processor D410 (1.6 GHz)
Data width	64 bit
The number of CPU cores	1
The number of threads	2

Microsoft® Windows® 7 / 7 64-bit / Vista™ / Vista™ 64-bit / XP / XP 64-bit compliant

Thanks for the confirmation on the input command, thats found the first issue.
Aside from that tsp --version returned a number that increased every time, correct its not TSDuck!
tsp -V
Task Spooler v1.0 - a task queue system for the unix user.
So I removed it and now I get the following
hca@wx:~/tsduck-3.24-2109$ tsp --version
tsp: TSDuck - The MPEG Transport Stream Toolkit - version 3.24-2109
Now the command line out puts :
hca@wx:~/tsduck-3.24-2109$ tsp --verbose -I dvb  -d /dev/dvb/adapter0 --delivery-system "DVB-S2" --lnb "5150000000" --frequency<PHONE_NUMBER> --modulation QPSK --symbol-rate 2586148 --fec-inner "3/5" --roll-off 0.2 --polarity "horizontal" -P mpe --pid 0x03E9 --udp-forward --log -O drop

dvb: using /dev/dvb/adapter0 (DVB-S, DVB-S2)
Error: dvb: DVB frontend FE_SET_TONE error: Remote I/O error

which is a kernel ioctl response. Now in this particular case there is I have need for 22khz or for that matter diseq so I could rebuild with out the call, but its unlikely driver dos not support 22khz for KU universal lnbs.
Here is dump of loaded modules,
hca@wx:~/tsduck-3.24-2109$ lsmod
Module                  Size  Used by
fuse                      90112  3
appletalk              28672  0
psnap                  16384  1 appletalk
llc                        16384  1 psnap
ax25                    49152  0
isl6421                16384  1
cx24120              28672  1
mt312                 20480  0
stv0297               16384  0
bcm3510             20480  0
lgdt330x             20480  0
nxt200x              20480  0
snd_hda_codec_via      20480  1
mt352                  16384  0
snd_hda_codec_generic    65536  1 snd_hda_codec_via
snd_hda_intel          32768  4
stv0299                20480  0
snd_hda_codec          94208  3 snd_hda_intel,snd_hda_codec_generic,snd_hda_codec_via
b2c2_flexcop_pci       16384  0
snd_hda_core           57344  4 snd_hda_intel,snd_hda_codec,snd_hda_codec_generic,snd_hda_codec_via
b2c2_flexcop           28672  1 b2c2_flexcop_pci
snd_hwdep              16384  1 snd_hda_codec
joydev                 20480  0
s5h1420                20480  1 b2c2_flexcop
snd_pcm                81920  3 snd_hda_intel,snd_hda_codec,snd_hda_core
cx24113                20480  1 b2c2_flexcop
cx24123                20480  1 b2c2_flexcop
snd_timer              28672  1 snd_pcm
dvb_core              102400  3 b2c2_flexcop,stv0299,lgdt330x
snd                    61440  15 snd_hda_intel,snd_hwdep,snd_hda_codec,snd_timer,snd_hda_codec_generic,snd_pcm,snd_hda_codec_via
soundcore              16384  1 snd
coretemp               16384  0
sg                     28672  0
pcspkr                 16384  0
iTCO_wdt               16384  0
iTCO_vendor_support    16384  1 iTCO_wdt
serio_raw              16384  0
evdev                  20480  10
parport_pc             28672  1
ppdev                  20480  0
lp                     20480  0
parport                40960  3 lp,parport_pc,ppdev
ip_tables              20480  0
x_tables               24576  1 ip_tables
autofs4                36864  2
ext4                  532480  1
crc16                  16384  1 ext4
mbcache                16384  1 ext4
jbd2                   86016  1 ext4
crc32c_generic         16384  2
fscrypto               24576  1 ext4
ecb                    16384  0
crypto_simd            16384  0
cryptd                 20480  1 crypto_simd
aes_i586               20480  0
hid_generic            16384  0
usbhid                 45056  0
hid                   102400  2 hid_generic,usbhid
sd_mod                 49152  3
ata_generic            16384  0
i915                 1331200  2
ata_piix               32768  2
video                  40960  1 i915
libata                192512  2 ata_piix,ata_generic
i2c_algo_bit           16384  1 i915
psmouse               126976  0
drm_kms_helper        135168  1 i915
scsi_mod              172032  3 sd_mod,libata,sg
ehci_pci               16384  0
uhci_hcd               40960  0
r8169                  73728  0
ehci_hcd               65536  1 ehci_pci
i2c_i801               24576  0
lpc_ich                24576  0
drm                   323584  4 i915,drm_kms_helper
usbcore               188416  4 usbhid,ehci_hcd,uhci_hcd,ehci_pci
realtek                16384  1
mfd_core               16384  1 lpc_ich
libphy                 45056  2 r8169,realtek
usb_common             16384  1 usbcore
button                 16384  0
Firstly I should try and figure how I ended up with a 32 bit install and change it to 64 bit because its a waste but as I have built from source, not the deb, I assume everything should still work for now?
Possibly I should put a screen/kyb etc on the machine and install some thing like linux tv to verify these things first?

Prebuilt packages are always built on the latest version of each distro, 64-bit except Raspian which is built on ARM 32. For Debian, it is version 10.x (buster).
To rebuild a Debian package from sources, this is trivial:
build/install-prerequisites.sh
make deb

You get the .deb packages in the installers directory.
Tuner issues on Linux are usually due to driver or firmware error. Since the tuner is recognised as a DVB tuner, the driver should be ok. Maybe it requires a firmware which is not installed. Use the command dmesg to inspect kernel message and look for any error when initialising the device on boot and then on first use by tsp. Missing firmware messages can be found here.
To install most needed DVB firmare, use:
sudo build/install-openelec-dvb-firmware.sh

It it still does not work (this is another firmware from somewhere else), google for it....

Prebuilt packages are always built on the latest version of each distro, 64-bit except Raspian which is built on ARM 32. For Debian, it is version 10.x (buster).
To rebuild a Debian package from sources, this is trivial:
build/install-prerequisites.sh
make deb

You get the .deb packages in the installers directory.
Tuner issues on Linux are usually due to driver or firmware error. Since the tuner is recognised as a DVB tuner, the driver should be ok. Maybe it requires a firmware which is not installed. Use the command dmesg to inspect kernel message and look for any error when initialising the device on boot and then on first use by tsp. Missing firmware messages can be found here.
To install most needed DVB firmare, use:
sudo build/install-openelec-dvb-firmware.sh

It it still does not work (this is another firmware from somewhere else), google for it....

I think for now best close this issue with the assessment that the Technisat skystar S2 PCI board will not work in windows WES7.
I have located the correct stick and installing Debian 64bit now.
I have had a look about and see there are lots of tools and software for these cards from the dvb TV community. That sort of thing has no appeal to me but I will work through drivers etc with these provided tools to get it up as a tv card first then try for TSDuck like I did with wes7 windows.
Thank you so much for your time and comments till now. Hopefully after that I can come back and report you if the cards works or not.

I think for now best close this issue with the assessment that the Technisat skystar S2 PCI board will not work in windows WES7.
I have located the correct stick and installing Debian 64bit now.
I have had a look about and see there are lots of tools and software for these cards from the dvb TV community. That sort of thing has no appeal to me but I will work through drivers etc with these provided tools to get it up as a tv card first then try for TSDuck like I did with wes7 windows.
Thank you so much for your time and comments till now. Hopefully after that I can come back and report you if the cards works or not.


Force counter to zero for power only kWh sensor

Domoticz requires a two values sValue with power and energy.. This change forces counter to zero on power only counter (without energy)

Thanks!


SHT-30 alert functionality

Hello,
Thank you for this library.
SHT30 sesnor comes with built-in alert pin which can be activated ex. if humidity is higher then set.
Details 3.5 (page 9) of datasheet:
https://www.mouser.com/datasheet/2/682/Sensirion_Humidity_Sensors_SHT3x_Datasheet_digital-971521.pdf
Could you be so kind to add this functionality, to set the temp or humidity alert?
I mean something like function writeAlertData in this Arduino library:
https://github.com/closedcube/ClosedCube_SHT31D_Arduino/blob/master/src/ClosedCube_SHT31D.cpp

Hi - great module - I'm sure a lot of folks are using it!  Can I suggest some improvements?  It's very easy to abstract out the I2C module and Pins and make this module more adaptable to other hardware:

remove the import machine line
abstract I2C to a bus:
 def __init__(self, **bus**, delta_temp = 0, delta_hum = 0, i2c_address=DEFAULT_I2C_ADDRESS):      self.i2c = bus      self.i2c_addr = i2c_address      self.set_delta(delta_temp, delta_hum)      time.sleep_ms(50)
remove the I2C init function and let the app developer handle his/her own I2C stuff.
Doing the above will also fix the deprecated I2C function which has been replaced by SoftI2C.

I've made the above changes to your code and it's working great on the newer Wemos/Lolin E32S2 Mini and Pico.


release 1.4.0-alpha.1

Release  1.4.0-alpha.1 with following CRs:

https://github.com/CartoDB/carto-react/pull/451

Done at #453


Fx accumulate

Pushing my super simple but stable calibration.

Oops, meant to merge to FX-accumulate.

Created correct pull request https://github.com/nithyanandan/MOFF/pull/3
Locking this down.


scp and rsync cannot handle filenames with glob characters

This is related to the noremoteglob function.
Description
When trying to scp a file containing glob characters (I've had specific trouble with ( and )), scp will fail with an error like the following: noremoteglob:4: no matches found: ./filename (here).txt
This happens for both quoted and escaped filenames.
Steps to Reproduce

touch 'test (filename).txt'
scp './test (filename).txt' remote-server

Versions

Prezto commit: c7dcd21c9e557ca243bc213a711a18a7f38d5d56
ZSH version: zsh 5.4.2 (x86_64-apple-darwin17.0.0)
OS information: MacOS High Sierra

This is a dupe


Create a Table Row Type and expose as a Vector on In-Memory Table with .rows property

Pull Request Description
Implements https://www.pivotaltracker.com/story/show/182307026
Important Notes

Checklist
Please include the following checklist in your PR:

[x] The documentation has been updated if necessary.
[x] All code conforms to the
Scala,
Java,
and
Rust
style guides.
All code has been tested:

[x] Unit tests have been written where possible.
[ ] If GUI codebase was changed: Enso GUI was tested when built using BOTH
./run ide build and ./run ide watch.

I added the benchmarks as requested, for comparison I added the AbstractList benchmark @JaroslavTulach created too.
The results on my machine are following:

 Benchmark
     Time [μs/op]

 averageAbstractList
	 119.85

 averageOverArrayProxy
	 46.87

 averageOverArray
	 18.24

 averageOverPolyglotArray
	 18.05

 averageOverPolyglotVector
	 16.74

 averageOverSlice
	 17.25

So the proxy is roughly 2x slower than direct access (probably due to the additional layer of indirection), but still almost 3x slower than the polyglot AbstractList.

averageOverArrayProxy 	46.87
averageOverArray 	18.24
So the proxy is roughly 2.5x slower than direct access

That is very slow. It should be on par with direct access. I'd try the benchmark without the bounds check. E.g. after removing:
    if (index >= length || index < 0) {
      throw InvalidArrayIndexException.create(index);
    }


Kindly share checkpoint

Hi! Great work! Many thanks for sharing the code!
Could you kindly share the MemSAM trained weights, please?
My email<EMAIL_ADDRESS>

Could you kindly share the trained weights? Thanks.

We will publish the training weights together after reorganizing the training and testing code.

I have seen the training and testing code as well as the initialization of weights. May I ask if the trained weights have been open-sourced for testing and usage?


Using include for children in the same table does not work

For example table 'stocks' contains the parents AND the children, where column 'parent_id' is NULL for parent items.
@Cached
@BelongsTo(parent = Stock.class, foreignKeyName = "parent_id")
public class Stock extends Model { }

Now the call
Stock parent = (Stock) Stock.where("id = ?", 4).include(Stock.class).get(0);

leads to log entries
[pool-1-thread-1] INFO org.javalite.activejdbc.cache.QueryCache - MISS, "SELECT * FROM stocks WHERE id = ?", with parameters: <4>
[pool-1-thread-1] INFO org.javalite.activejdbc.LazyList - Query: "SELECT * FROM stocks WHERE id = ?", with parameters: <4>, took: 21 milliseconds
[pool-1-thread-1] INFO org.javalite.activejdbc.cache.QueryCache - MISS, "SELECT * FROM stocks WHERE id IN (null)"
[pool-1-thread-1] INFO org.javalite.activejdbc.LazyList - Query: "SELECT * FROM stocks WHERE id IN (null)", took: 2 milliseconds

Is this a bug or just not meant to be possible ?

This should be possible and work. I'll add unit tests for this.
There was a discussion before about multiple many-to-many relationships to the same table, which seems to be more complex, at https://github.com/javalite/activejdbc/issues/199.

Ok, if your unit tests work can you please tell me what i am doing wrong ?

Actually, we already have a test for this case.  :- )
To get the parent of a model, you use the parent() method.
Stock stock4 = (Stock) Stock.where("id = ?", 4).include(Stock.class).get(0);
Stock parentOf4 = stock4.parent(Stock.class);

I assume you did that looking at your log output. If parentOf4 is null, it means stock4 has a null parent_id, in other words, it means stock4 has no parent.

well, the idea for include() is to reduce a number of trips to the DB. Not sure what is the best way to test this, other than to capture log and test correct statements in the log?

@ipolevoy, the tests are fine! I was answering @rivella50, because I said I was going to add unit tests for this issue...

@ericbn , you are correct. However, the line:
[pool-1-thread-1] INFO org.javalite.activejdbc.LazyList - Query: "SELECT * FROM stocks WHERE id IN (null)", took: 2 milliseconds

has a null in it, and I do not understand why would it. Include tests do exist but we do not have a test for a case like this, where you build a tree of objects from the same table. I think we can add that to simulate this condition. At the same time, I did use this same structure on a project at Groupon, and it worked as expected.

@rivella50 , I think you should not be using the include(), since the parent_id is null for some records. The idea for include() is to improve performance by reducing a number of trips to the DB. However since your models is cached, you will reduce number of trips anyway.

@ipolevoy, I also thought we didn't have a test for this, but I found the Node test model and the IncludesTest.shouldFixDefect163NeedsToIncludeChildrenAndParentsInTreeStructure() test.
The output of our test is

[main] INFO org.javalite.activejdbc.LazyList - Query: "SELECT * FROM nodes WHERE name = ?", with parameters: <Sedan>, took: 0 milliseconds
[main] INFO org.javalite.activejdbc.LazyList - Query: "SELECT * FROM nodes WHERE id IN (?)", with parameters: <1>, took: 1 milliseconds

The row with name = "Sedan" has id = 2 and parent_id = 1. The second query is using the parent_id in the WHERE clause. That's why I assumed the parent_id was null in the issue above.

Ok this could be the problem: I'm loading the parent first (with id=4 and of course parent_id = NULL) and with the include i ask for the children (which have parent_id=4), therefore it seems that the include doesn't work in this way.
Is there an alternative with ActiveJDBC or do i have to load the children in a separate query ?
Thanks for your help!

@rivella50, looks like @ericbn is correct. This issue is a duplicate of #163, and the test for it is here: https://github.com/javalite/activejdbc/blob/c26b181b176120a3d1be4e3943c4277e3b2f2965/activejdbc/src/test/java/org/javalite/activejdbc/IncludesTest.java#L147
Please, take a look at code of the model: https://github.com/javalite/activejdbc/blob/c26b181b176120a3d1be4e3943c4277e3b2f2965/activejdbc/src/test/java/org/javalite/activejdbc/test_models/Node.java
and DDL: https://github.com/javalite/activejdbc/blob/c26b181b176120a3d1be4e3943c4277e3b2f2965/activejdbc/src/test/resources/mysql_schema.sql#L154
it seems to be exactly  your case, right?

The code is the same, but the intention is different: As mentioned i'm trying to get the children of a parent with the include statement, i.e. the @hasMany case. #163 had a child (with a parent_id set) and needed the parent.
Since the parent_id in my parent row is NULL the include of children doesn't work for here.
It seems that the not supported @HasMany annotation is missing here, where the parent_id column is checked in other table rows (the children rows) than the one which is asking (the parent row).

@rivella50, if you want to get the children, you must use the getAll() method.
So
Stock stock4 = (Stock) Stock.where("id = ?", 4).include(Stock.class).get(0);
List<Stock> childrenOf4 = stock4.getAll(Stock.class); // that's what you want to do!

@ericbn, it looks like i have to do it this way.
In this single parent case it's of course no problem. I just thought that the include way would make more sense for e.g. this case:
List<Stock> parents = Stock.where("parent_id IS NULL").include(Stock.class);

This would implicitely load the children as well. With the getAll() call i have to iterate over each parent separately. But yeah, caching helps here of course.

@rivella50, loading and accessing the children are two different things. The include() will load all the children, and is more effective than loading the children of each parent separately, yeah! But then you have to get the (already loaded) children to do something with them at some point... this is where you use the getAll(). Since the children were already loaded with include(), the getAll() will just return them to you.

I agree, but in my case the include statement in line
List<Stock> parents = Stock.where("parent_id IS NULL").include(Stock.class);

can be omitted, since it performs a non-making sense query to the database:
Query: "SELECT  * FROM stocks WHERE  id IN (null)"

It should cache the parents and the children with include(), but it is only caching the parents in this case. Now we have some issues!  :- )
@ipolevoy, there are two things here worth thinking about here:

Should it look for parents when the parent_id is null? Does it make sense to query "SELECT * FROM stocks WHERE id IN (null)" to look for parents? My opinion: no.
When we have a tree-like structure, should include() also cache the children (besides the parents)? My suggestion: yes.

@ericbn , agree. Original implementation of include ... did not include tree-like structures :)

@rivella50, this is corrected in the 1.4.11-SNAPSHOT of activejdbc. Remember this SNAPSHOT version should be used together with the 1.4.11-SNAPSHOT versions of activejdbc-instrumentation and javalite-common. Now it

Does not look for parents when the parent_id is null.
Caches parents and children when calling include() with tree-like structure.

Cool, thank you very much for changing this so fast!
I will test this asap in my application.

Btw. don't you think that @BelongsTo could be misleading since it actually now implicitely also covers the @HasMany case when having parents and children in the same db table ?
I don't know why you decided not to support @HasMany, but i guess here it would make sense to add this annotation to the framework by giving the user the decision what he actually needs when using .include(Stock.class).
If both directions (parent -> children and child -> parent) are wanted then the user would have to add both annotations to the model.

Btw. don't you think that @BelongsTo could be misleading since it actually now implicitely also covers the @HasMany case when having parents and children in the same db table ?
I don't know why you decided not to support @HasMany, but i guess here it would make sense to add this annotation to the framework by giving the user the decision what he actually needs when using .include(Stock.class).
If both directions (parent -> children and child -> parent) are wanted then the user would have to add both annotations to the model.

The @HasMany annotation was not added to avoid redundancy. For instance, ActiveRecord http://guides.rubyonrails.org/association_basics.html requires using has_many and belongs_to annotations on both parent and child. We feel this is not DRY so, we only have @BelongsTo. It could have been  @HasMany, but we chose  @BelongsTo back in a day. Six of one or half of dozen of one other. For 99% of cases, this is a one-to-many annotation designed not for tree structures, but for standard things, like Person has many Addresses. The fact that you can also build tree structures with it is a nice side effect. In any case, this bug was fixed, so closing this issue.
tx


Functional improvements and fixes for redeferral.

Re-use existing FunctionBody/ParseableFunctionInfo's in the case where we re-compile a function that encloses already-compiled functions. This is necessary to avoid having multiple FunctionInfo structures around for a single FunctionBody, not all of which get updated when things change. It also reduces the cost of re-compiling. 2) Change the FunctionBody's nested function array to hold FunctionInfo's instead of FunctionProxy's. This fixes a class of functional issues involving the need to update the nested array as nested functions are un-deferred and re-deferred. The FunctionInfo pointers don't change and thus don't need updating. 3) Eliminate the m_referenceInParentFunction member of FunctionProxy, which was there to enable the nested array updates that we no longer need. 4) Re-use ScopeInfo in the case where a parent of the current function has been re-deferred.

Out-of-date PR, incorporated into https://github.com/Microsoft/ChakraCore/pull/1585.


many nodes do queue_free(),cause lag.

In platform2d demo,if there are many coins(for me,if number>=5 on my compute) in the same position. When the player eat them at the same time,there will appear a pause.

i would make a Elimination game,but when there are many blocks to queue_free,this will cause a problem.

freeing should be quick, but honestly, never checked or particularly
optimized this path. Can you make a small test of doing many queue_free()s
in a situation similar to your game? this way I can give it a check and
make sure it can be properly optimized.
On Fri, Sep 11, 2015 at 1:09 PM, zhagsenkk<EMAIL_ADDRESS>wrote:

i would make a Elimination game,but when there are many blocks to
queue_free,this will cause a problem.
—
Reply to this email directly or view it on GitHub
https://github.com/okamstudio/godot/issues/2463#issuecomment-139587416.

just duplicate the coin in the same position in platform2d demo.Eat it.
I think it is caused by  "Call Func Track" of animation.I imitate this in the elimination game,and lag happens.


Do you see that as an interpolation node?

https://openaccess.thecvf.com/content/ICCV2023/papers/Siyao_Deep_Geometrized_Cartoon_Line_Inbetweening_ICCV_2023_paper.pdf

Yes ofc 👍. But here is the problem. Their implementation doesn't release the script to preprocess raster lineart images to "vector graphs" (including vertex location and connection). That means it currently can only run on their dataset so it is impossible to make a node.
I know some detail about vector graphs tho. It is just another way of saying "vectorization" (convert raster lineart image into svg, but you save the result in their json format). In the paper, they use https://github.com/MarkMoHR/virtual_sketching to vectorize frames. I don't have enough interest or time irl to implement the preprocessor. If you can make it, please share the script to https://github.com/lisiyao21/AnimeInbet/issues/7

Okey, thanks! ill find a way to try to code that!


Reworked how channels work

Pull Request Etiquette

[x] I have checked the PRs for upcoming features/bug fixes.
[x] I have read the code of conduct.

Changes

[x] Internal code
[x] Library interface (affecting end-user code)
[ ] Documentation
[ ] Other: _____

Codecov Report
Base: 3.63% // Head: 3.56% // Decreases project coverage by -0.07% :warning:

Coverage data is based on head (4574c51) compared to base (241e175).
Patch coverage: 2.35% of modified lines in pull request are covered.

Additional details and impacted files
@@            Coverage Diff             @@
##             voice     #80      +/-   ##
==========================================
- Coverage     3.63%   3.56%   -0.08%
  Complexity      58      58
==========================================
  Files          320     324       +4
  Lines         5559    5447     -112
  Branches       500     493       -7
==========================================
- Hits           202     194       -8
+ Misses        5326    5222     -104
  Partials        31      31

Impacted Files
Coverage Δ

src/main/kotlin/io/github/ydwk/ydwk/YDWK.kt
0.00% <0.00%> (ø)

...ain/kotlin/io/github/ydwk/ydwk/entities/Channel.kt
0.00% <0.00%> (ø)

.../main/kotlin/io/github/ydwk/ydwk/entities/Guild.kt
0.00% <0.00%> (ø)

...ain/kotlin/io/github/ydwk/ydwk/entities/Message.kt
0.00% <ø> (ø)

.../github/ydwk/ydwk/entities/channel/GuildChannel.kt
0.00% <ø> (ø)

...ub/ydwk/ydwk/entities/channel/enums/ChannelType.kt
0.00% <0.00%> (ø)

...ydwk/ydwk/entities/channel/getter/ChannelGetter.kt
0.00% <0.00%> (ø)

...ntities/channel/getter/guild/GuildChannelGetter.kt
0.00% <0.00%> (ø)

.../channel/getter/guild/GuildMessageChannelGetter.kt
0.00% <0.00%> (ø)

.../ydwk/ydwk/entities/channel/guild/GuildCategory.kt
0.00% <ø> (ø)

... and 41 more

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


Call for Content: ES6

The webdevs have been screaming for some ES6 content.
Form a small team or do it alone. Volunteer here!
See templates and readme for instructions.

https://github.com/domenic/count-to-6 is really good.
https://github.com/yosuke-furukawa/tower-of-babel may be helpful as well

Those look awesome. thanks for the links!

We've decided to make ES6 a micro-badge under the V2 JS Journeyman Badge. This way, it can scale for each new year of features more easily, and the set for ES6 isn't big enough for it's own category, anyway.


eid as attribute

Proposes to make an entity reference's EID a pseudo-attribute $id.
Rendered
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

Is there a potential drawback / anti-pattern where Cedar policies will use $id and String values where before they used Entities?  For example, this policy has owner as an Entity
permit (principal is PhotoApp::User, action, resource is PhotoApp::Photo)
when { resource.owner == principal };

example slice that would be passed in using __entity
  {
    "uid": { "type": "PhotoApp::Photo", "id": "JaneDoe.jpg" },
    "parents": [],
    "attrs": {
      "owner": {
        "__entity": { "type": "PhotoApp::User", "id": "JaneDoe" }
      }
    }
  }

This RFC would enable policies where owner is an String matching the id
permit (principal is PhotoApp::User, action, resource is PhotoApp::Photo)
when { resource.owner == principal.$id };

  {
    "uid": { "type": "PhotoApp::Photo", "id": "JaneDoe.jpg" },
    "parents": [],
    "attrs": {
      "owner": "JaneDoe"
    }
  }

The owner attribute as String may seem more obvious to early policy authors, but using an Entity in the schema enables future conditions to use other attributes of that Entity beyond the id.  I'm not apposed to the RFC, just thinking about future best practices documentation, as this might affect backwards compatible Cedar schema authoring.

Cedar policies will use $id and String values where before they used Entities?

Yes, I could imagine this happening. Put another way, we are setting resource.owner to be an entity's EID and not the entity itself, which means that different-typed "entities" (one of which is stored as just its string EID) could be deemed equal, e.g., User::"a9edd19b-46f3-486b-887d-4c378aced880".$id == Admin::"a9edd19b-46f3-486b-887d-4c378aced880".$id while User::"a9edd19b-46f3-486b-887d-4c378aced880" != Admin::"a9edd19b-46f3-486b-887d-4c378aced880".
I'm not sure how tempting this would be to do, though, if users follow our advice of using unique IDs for EIDs of entities like users, resources, etc. The EID is going to be non-sensical (like a9edd19b-46f3-486b-887d-4c378aced880 above), so you won't be tempted to store it in an attribute directly. The $id attribute is useful only when the EID is meaningful, which should be the case for enums and Action entities.

I feel like this would encourage bad practices. For Actions, I think policies should check action in MyActionGroup instead of action.$id like "prefix*", so in my understanding this RFC would only be useful for enumerated entities.
If enough people ask for a feature like this, I'd rather implement alternative C of https://github.com/cedar-policy/rfcs/pull/53 than add this.

Agree with @andrewmwells-amazon's comment above. Also see @D-McAdams's post on why not to allow wildcard matching for Entity Ids: https://cedarland.blog/design/why-no-entity-wildcards/content.html.

Agree with @andrewmwells-amazon's comment above. Also see @D-McAdams's post on why not to allow wildcard matching for Entity Ids: https://cedarland.blog/design/why-no-entity-wildcards/content.html.

Agree with the above (as well as Andrew’s and Kevin’s points) and would vote against adding this feature.


i'm confusing about the text feature  with prompt_avg�

Thanks for your great work!  I'm wondering could you release the  generation process of text prompt_avg  feature ?
For example prompt template ?

We follow https://github.com/salesforce/ULIP/blob/main/data/templates.json, to convert each category name to 64 sentences, and calculate the CLIP embedding for each sentence and then take their average as the embedding for the category name.

I got it. Thanks for your reply!


how to drop some factors(columns) after DatasetH or DataHandler?

❓ Questions and Help
how to drop some factors(columns) after DatasetH or DataHandler?
or we must change the configs of DataHandler and rerun it?

As far as I know, there is currently no way to drop factors after DatasetH/DataHandler.Perhaps you could provide your use case and we can see if there are other methods that can meet your current needs.

As far as I know, there is currently no way to drop factors after DatasetH/DataHandler.Perhaps you could provide your use case and we can see if there are other methods that can meet your current needs.

well，thanks for response，if we cant drop factors after DatasetH or DataHandler, then we have to rerun DataHandler, but datahandler with fliter is quit slow， for my instance，it takes about 300s, which primarily costs in  filter_pipe.
and the output of DatasetH and DataHandler are basticly combination of dataframes，drop columns from a dataframe should be convenient


added homework-2

Metric
Value

alert_status
:white_check_mark: OK

bugs
0

code_smells
9

reliability_rating
A (0 Bugs)Note: A being best, E being worst

security_rating
E (at least 1 Blocker Vulnerability)Note: A being best, E being worst

vulnerabilities
2

Metric
Value

alert_status
:x: ERROR

bugs
0

code_smells
9

reliability_rating
A (0 Bugs)Note: A being best, E being worst

security_rating
E (at least 1 Blocker Vulnerability)Note: A being best, E being worst

vulnerabilities
2


[Cherry-pick][Branch-2.3][BugFix]: Use PrimaryIndex in memory when key columns contains variable length column

(#7251)
What type of PR is this：

[x] bug
[ ] feature
[ ] enhancement
[ ] refactor
[ ] others

Which issues of this PR fixes ：

Fixes #7252
Problem Summary(Required) ：

PersistentIndex doesn't support variable-length columns(varchar/char) as key column for now. If we enable PersitentIndex and the key columns contain varchar type, all load will fail. Use PrimaryIndex in memory when key columns contain variable-length columns.

run starrocks_clang-format

run starrocks_be_unittest


Remote release file is empty or corrupted

Was wondering why GPMDP was not updating and checked my Squirrel log file:
2018-02-10 01:41:17> FileDownloader: Downloading url: https://update.gpmdp.xyz/update/win/4.5.0/RELEASES?id=GPMDP_3&localVersion=4.5.0&arch=amd64
2018-02-10 01:41:18> Unhandled exception: System.AggregateException: One or more errors occurred. ---> System.Exception: Remote release File is empty or corrupted
   at Squirrel.UpdateManager.CheckForUpdateImpl.<CheckForUpdate>d__2.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Squirrel.UpdateManager.<CheckForUpdate>d__7.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Squirrel.Update.Program.<CheckForUpdate>d__8.MoveNext()
   --- End of inner exception stack trace ---
   at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
   at System.Threading.Tasks.Task`1.GetResultCore(Boolean waitCompletionNotification)
   at System.Threading.Tasks.Task`1.get_Result()
   at Squirrel.Update.Program.executeCommandLine(String[] args)
   at Squirrel.Update.Program.main(String[] args)
---> (Inner Exception #0) System.Exception: Remote release File is empty or corrupted
   at Squirrel.UpdateManager.CheckForUpdateImpl.<CheckForUpdate>d__2.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Squirrel.UpdateManager.<CheckForUpdate>d__7.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Squirrel.Update.Program.<CheckForUpdate>d__8.MoveNext()<---

There has been an intermittent outage of the update server over the last few days, everything should still be working fine though 👍

Well that was from just now, so it is still happening?

@Stanzilla What happens when you go to https://update.gpmdp.xyz/update/win/4.5.0/RELEASES?id=GPMDP_3&localVersion=4.5.0&arch=amd64 in your browser?

@MarshallOfSound downloads a releases file with this content
33601A715D088E1C77158702E5DE966E22AC27DE http://update.gpmdp.xyz/download/4.1.1/GPMDP_3-4.1.1-delta.nupkg 1855310
8785F729C6C696231230427BA64A3F1298906EA1 http://update.gpmdp.xyz/download/4.1.1/GPMDP_3-4.1.1-full.nupkg 54936818
50EA6E6A6EB7D6275BEDAB4043FC190155AD5572 http://update.gpmdp.xyz/download/4.2.0/GPMDP_3-4.2.0-delta.nupkg 27471424
B66357E5CD448A46C6C0303EBBE07494338A2CB7 http://update.gpmdp.xyz/download/4.2.0/GPMDP_3-4.2.0-full.nupkg 55433556
ED866230066BD29920E9C7BA9C480D8C0138668C http://update.gpmdp.xyz/download/4.3.0/GPMDP_3-4.3.0-delta.nupkg 7658256
1A3191EB8E959B6E74367D1FD380E95C31113FB4 http://update.gpmdp.xyz/download/4.3.0/GPMDP_3-4.3.0-full.nupkg 63518065
4F34C6D4D34805FEC63FCC2D31169EF72CA275E7 http://update.gpmdp.xyz/download/4.4.0/GPMDP_3-4.4.0-delta.nupkg 13266354
2069F8869189D9ACD15F915830F26E5CEB345847 http://update.gpmdp.xyz/download/4.4.0/GPMDP_3-4.4.0-full.nupkg 56268075
30C5EC297E4888E6DF291FB606A3DA3F5E6ACFEE http://update.gpmdp.xyz/download/4.4.1/GPMDP_3-4.4.1-delta.nupkg 229245
9CB82CA73B6B292B310536BB7F872A778FF6C341 http://update.gpmdp.xyz/download/4.4.1/GPMDP_3-4.4.1-full.nupkg 56085556
50FA7661206AC3CB1F5356A1040AA95E826341B6 http://update.gpmdp.xyz/download/4.5.0/GPMDP_3-4.5.0-delta.nupkg 19912566
A23A912C1F86979D0ACDC1A2B030F7814A9DA733 http://update.gpmdp.xyz/download/4.5.0/GPMDP_3-4.5.0-full.nupkg 59124589

maybe I hit the cache before


Replace handlebars with custom templates

Hello! Appreciate your library share :)
I noticed the use of handlebars in your code, which poses an issue when integrating with Next.js due to Webpack's lack of support for handlebars. To address this, I've made adjustments by replacing handlebars with template functions that generate template strings.
If you're interested, I've created a modified version that you can consider merging. Nevertheless, I'm planning to create a separate npm package with these changes for my Next.js project in the meantime. Let me know your thoughts! :)

Thank you for contribution.


New pull request to add diagram

Hello @PedroDiez @alabajnaid @SylMOREL
FYI I added the diagram sequence shared yesterday #11
Thanks

PR merged to have the info as reference material


license: Rename license for Github to detect it

Rename license for Github to detect it, similar to Leshan. #491

I'm not sure it works to use EDL-1 suffix :thinking:,  did you check on your personal forked repository ?
It works if you can see : BSD-3-Clause, EPL-2.0 licenses found  on the right of the github home page under tags.
Like in Leshan : https://github.com/eclipse-leshan/leshan
Note that EDL-1 license is exactly a BSD-3-Clause. (Leshan is also licensed under epl 2 and edl 1)
Why edl-1 is not supported ? I asked about it long time ago : https://lists.spdx.org/g/Spdx-legal/topic/22080928#2105
So it's expected that GitHub see edl1 as BSD-3 license.

I'm not sure it works to use EDL-1 suffix 🤔, did you check on your personal forked repository ?

The licenses will show up in Github as "Unknown, EPL-2.0 licenses found ". At least the EDL-1 is recognized as a license file, even though unknown.

Note that EDL-1 license is exactly a BSD-3-Clause.

Not sure I understand you correctly. Can we just replace EDL-1 with BSD-3 in Wakaama (same as with Leshan), or should we keep EDL-1 and accept that Github does not show it correctly? Both would be fine for me.

Not sure I understand you correctly. Can we just replace EDL-1 with BSD-3 in Wakaama

I think you can replace EDL-1 with BSD-3.
@waynebeaton could you confirm that it's OK to replace EDL-1 suffix by BSD-3 suffix and so github is able to show BSD-3-Clause instance of Unknown ?

I think you can replace EDL-1 with BSD-3.

At least that was the advice for Californium.

Yes. In fact, the documentation generator recommends exactly this.
Use BSD-3-Clause  if you can. While there's all kinds of standards, I find that there is a strong preference to using the SPDX code for the name of the file with an extension that describes the format, e.g., BSD-3-Clause.md or similar. This is not a requirement... just an observation.
FWIW, the BSD licenses are referred to as "template" licenses. When you use them, you change certain parts of the text, but they're basically still just the BSD license. So the EDL is just our appliaction of the BSD. From a license management perspective, it's way easier for everybody if we treat all of the various applications of the BSD uniformly.


Unit test for CNOT, H and Phase gate Verification

Gate update rule implementations have to be verified. For this, unit tests can be used to check for input and output.

using: https://docs.python.org/3/library/unittest.html


Great Britain cannot be chosen as a country...

Subject: Great Britain cannot be chosen as a country...
Description:
I wanted to add a place that I visited. Great Britain (or England, Scotland, Wales) wasn't offered in the list.
Results:
You should be able to pick Great Britain as a country that you have visited or lived in.
Backend version: develop-7c33e18d
Frontend version:
User Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Firefox/102.0
Page: https://couchers.org/profile/about
User: korbling (17340)

This is covered by selecting "United Kingdom"


Scala Kinesis Enrich: fix checkpointing

See @kazjote's explanation here: #1418

The Amazon Kinesis Connector Library configures the Kinesis client to call processRecords even if the list of records to process is empty (i.e. no records have appeared in the stream since the last batch were processed). This enables it to flush the buffer at regular intervals without needing to create a new thread to schedule the flush.
Our planned approach has the flaw that if the input stream dries up, processRecords stops getting called and the buffered enriched events never get flushed (since the maximum time between flushes only gets checked whenever processRecords is called). callProcessRecordsEvenForEmptyList provides a solution to this problem: once the incoming stream dries up, we can still keep checking whether the maximum time between flushes has been exceeded.

Sounds good Fred - what is the status/origin of callProcessRecordsEvenForEmptyList?

It's a setting for the KinesisClientLibConfiguration class from the Kinesis Client Library.

This comment suggests checkpointing about every 5 minutes, which is a lot less frequently than Scala Kinesis Enrich does. But I haven't encountered any ThrottlingExceptions and the Amazon Kinesis Connector Library makes no attempt to prevent them by checkpointing infrequently, so it may not be an issue.

I think we should be okay - checkpointing is against DynamoDB which is pretty responsive...


Adding a sanity check that the cached makefile variables aren't committed.

The sanity tests passed, and that's the important thing.


From std::string to QString

It is bad to have two kinds of strings

Possible bug with chained calls c_str

Actually, it is not that easy and not needed

If #201


Push new version to PyPI

Hey Love the work
I saw that the latest changes regarding platform fees are not yet publicly pushed into the PyPI repo.
KR
Jerome

Also noticed. This, would love to me able to use platform fees. Kindly update.

Please do this. Transactions won't work for those who installed through pip


Allow mixed whitespace in certain test and external directories

Work in progress. Not ready for review

I believe this is now ready for review. I've allowed mixed whitespace in test sources for all languages (including the JavaScript extractor tests). I've also allowed mixed whitespace for all files in the javascript/lib directory, which appear to be from external sources.
With these changes, the PR check for mixed whitespace passes across the entire repo.

@hvitved, are you happy for this PR to be merged?


Foreign Key Constraint Error in Shipping Method Migration for Availability Rule ID column

I've installed shopware/platform using the shopware/development repository locally on my mac through Valet+
Steps to reproduce

.psh.phar install

Expected Result
Install command completes successfully
Actual Result
(7/28) Starting
> bin/console database:migrate --all Shopware\\
	Get collection from directories
	migrate Migrations
	   0/199 [░░░░░░░░░░░░░░░░░░░░░░░░░░░░]   0%
	  19/199 [▓▓░░░░░░░░░░░░░░░░░░░░░░░░░░]   9%
	  38/199 [▓▓▓▓▓░░░░░░░░░░░░░░░░░░░░░░░]  19%
	  57/199 [▓▓▓▓▓▓▓▓░░░░░░░░░░░░░░░░░░░░]  28%
	  76/199 [▓▓▓▓▓▓▓▓▓▓░░░░░░░░░░░░░░░░░░]  38%
	  95/199 [▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░░░░░░░░░]  47%
	 114/199 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░░░░░░]  57%
	 133/199 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░░░░]  66%14:25:55 ERROR     [app] Migration: "Shopware\Core\Migration\Migration1553593164ShippingAvailabilityRule" failed: "An exception occurred while executing 'ALTER TABLE `shipping_method`
	                           MODIFY COLUMN `availability_rule_id` BINARY(16) NOT NULL':

	SQLSTATE[HY000]: General error: 1832 Cannot change column 'availability_rule_id': used in a foreign key constraint 'fk.shipping_method.availability_rule_id'"
	 ---------- ----------------------
	  Action     Number of migrations
	 ---------- ----------------------
	  Migrated   150 from 199
	 ---------- ----------------------

	In MigrationCommand.php line 106:

	  Migration error: An exception occurred while executing 'ALTER TABLE `shippi
	  ng_method`
	                             MODIFY COLUMN `availability_rule_id` BINARY(16)
	  NOT NULL':

	  SQLSTATE[HY000]: General error: 1832 Cannot change column 'availability_rul
	  e_id': used in a foreign key constraint 'fk.shipping_method.availability_ru
	  le_id'

	database:migrate [-all|--all] [-l|--limit [LIMIT]] [-h|--help] [-q|--quiet] [-v|vv|vvv|--verbose] [-V|--version] [--ansi] [--no-ansi] [-n|--no-interaction] [-e|--env ENV] [--no-debug] [--] <command> [<identifier> [<until>]]

Execution aborted, a subcommand failed!

Looking into the migration that failed. It seems that at the start of the migration, the foreign key constraint is added and then on the following line referenced, the column type is changed. I think this is guaranteed to fail if it's done in this order. Should the foreign key constraight line be moved to the end?
https://github.com/shopware/platform/blob/91afedb017c5ecd7b4279cd4ade85c6d6db0eee1/src/Core/Migration/Migration1553593164ShippingAvailabilityRule.php#L32

This may be the "bad" commit https://github.com/shopware/platform/commit/7ac5ecfa9a2f52496820e26e0d776662ecbd7bdb

We squashed all migrations and thereby fixed the issue.
If you still having trouble reach out to us.


p3-ex4 does not compile on llvm/clang 16.05

I am using the apt installed llvm 16 version on ubuntu 22.04
-- Found supported version: LLVM 16.0.5
-- Using LLVMConfig.cmake in: /usr/lib/llvm-16/cmake
-- Found supported version: Clang 16.0.5
-- Using ClangConfig.cmake in: /usr/lib/cmake/clang-16

the following functions are not found.
[  0%] Built target intrinsics_gen
[ 16%] Building CXX object examples/p3-ex1/CMakeFiles/p3-ex1.dir/p3-ex1.cpp.o
[ 33%] Linking CXX executable ../../bin/p3-ex1
[ 33%] Built target p3-ex1
[ 50%] Building CXX object examples/p3-ex4/CMakeFiles/p3-ex4-lib.dir/p3-ex4-lib.cpp.o
/home/kevin/Code/thirdparty/pldi-tutorials-2023/examples/p3-ex4/p3-ex4-lib.cpp: In function ‘std::unique_ptr<clang::Interpreter> CreateInterpreter()’:
/home/kevin/Code/thirdparty/pldi-tutorials-2023/examples/p3-ex4/p3-ex4-lib.cpp:49:6: error: ‘class clang::IncrementalCompilerBuilder’ has no member named ‘SetCompilerArgs’
   49 |   CB.SetCompilerArgs({"-resource-dir", ResourceDir.c_str(), "-std=c++20"});
      |      ^~~~~~~~~~~~~~~
/home/kevin/Code/thirdparty/pldi-tutorials-2023/examples/p3-ex4/p3-ex4-lib.cpp:53:21: error: ‘class clang::IncrementalCompilerBuilder’ has no member named ‘CreateCpp’; did you mean ‘create’?
   53 |   CI = ExitOnErr(CB.CreateCpp());
      |                     ^~~~~~~~~
      |                     create
/home/kevin/Code/thirdparty/pldi-tutorials-2023/examples/p3-ex4/p3-ex4-lib.cpp: In function ‘FnAddr_t Clang_GetFunctionAddress(Decl_t)’:
/home/kevin/Code/thirdparty/pldi-tutorials-2023/examples/p3-ex4/p3-ex4-lib.cpp:96:16: error: request for member ‘getValue’ in ‘* Addr.llvm::Expected<long unsigned int>::operator->()’, which is of non-class type ‘std::remove_reference_t<long unsigned int>’ {aka ‘long unsigned int’}
   96 |   return Addr->getValue();
      |                ^~~~~~~~
make[2]: *** [examples/p3-ex4/CMakeFiles/p3-ex4-lib.dir/build.make:76: examples/p3-ex4/CMakeFiles/p3-ex4-lib.dir/p3-ex4-lib.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:351: examples/p3-ex4/CMakeFiles/p3-ex4-lib.dir/all] Error 2
make: *** [Makefile:136: all] Error 2

these seem to have been added 2 weeks ago in clang/Interpreter/Interpreter.h

Yes, unfortunately most examples we don’t support llvm 16 or any llvm older than two weeks :(

no problem, will try out the apt development branch of llvm17 later today.


Add cpplint.py to vendor.yml

cpplint.py is Google's Python script used for linting C++ files.
I have a small C++ project with cpplint.py included mistakenly making
Python the main language of my project.

:+1: makes sense. Thanks @philix.
It'll be another week or so before this change is live on GitHub.