Feature Request web based channel tuning

In Canada, Shaw was bought by Rogers and are now phasing out all the traditional cable boxes in favour of the Ignite tv platform using Comcast Xfinity type boxes (xione & xi6).  There seems to be no IR code used by the IR Blaster that can control the xione box, leaving no way to tune a channel change, that I am aware of, through SageTv. The learning mode won't work because the XR15 remote that comes with the xione is RF based, not IR.  However, Shaw has a web page that can change channels if the xr15 remote fails... So a web based option should be available.  The webpage is a simple graphic with the remote buttons on it. When you press a button on the web page it is transmitted to the xione box.
If a button on a webpage can change the channel, those commands should be possible on a software tuner, alternative to Hauppauge's IR Blaster.  Only the buttons 0 through 9, and the enter key, would need to be used (although the other buttons could also be taken).
The software tuner would be a selectable option in the tuner control box(where IRBlaster currently is), under the video source setup menu.
This would enable a lot of users to continue using SageTv when the traditional cable boxes are phased out.

You can do this with the gentuner plugin. I believe it is still included in the docker images that are available if you are using a docker install, so you might already have it.
After installing it you just need to write a simple shell script to send the commands to your STB. The details will be specific to your STB and might require a little testing/experimentation.
An example script that uses wget to send channel digits to a web based STB is gentuner.IPSTB
If you do get a script working and are willing to share it, I would appreciate it if you would open a Pull Request in the gentuner project and I can add it to the other examples that users have provided.

Thanks for the reply.
I don't know if I have a "docker" install.  I originally purchased the Sagetv v6 program (years ago), and just kept upgrading from there. I am now on the latest <IP_ADDRESS>6 (64 bit) version.
Is the gentuner plugin available from the Sage "get plugins" menu option? It's been more than a few years since I've been there.
As for the script, what language is it?
My programming skills started with Fortran and ended with Turbo Pascal, both needed compilers. Do I need for this script?
I will need to learn about this wget command...If you can direct me to a website where I can learn about this scripting language, and how to use it, I would be very grateful. Thanks
On Sat, 13 Jan 2024 12:13:05 -0800, John Wittkoski @.***> wrote:
You can do this with the gentuner plugin. I believe it is still included in the docker images that are available if you are using a docker install, so you might already have it.
After installing it you just need to write a simple shell script to send the commands to your STB. The details will be specific to your STB and might require a little testing/experimentation.
An example script that uses wget to send channel digits to a web based STB is gentuner.IPSTB
If you do get a script working and are willing to share it, I would appreciate it if you would open a Pull Request in the gentuner project and I can add it to the other examples that users have provided.
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you authored the thread.Message ID: @.***>

If you've been  upgrading since v6 then you likely aren't using docker. Most people use docker with a NAS like Synology or Unraid.
Unfortunately gentuner isn't available as Sage Plugin, you have to compile it yourself. It sounds like you may be running on Windows. gentuner should compile on Windows but I'm not familiar with the best way to do that and don't have a way to build or test it on Windows.
The script that gentuner calls to do the actual "tuning" can be written in whatever language you want, using whatever programs are available (wget and curl that I mentioned above are just programs that download web pages), it just needs to be executable. The examples are linked to in my earlier comment are Bash shell scripts intended to be run on Linux.

If Sage is running on Windows, you can use EXEMultiTuner, which is already built into Sage.  In short, Sage uses EXEMultiTuner to talk to a batch file that you'll need to create, which talks to the STB.    Try to find a topic in the old Sage forums titled "Need EXEMultiTuner install help".     I haven't been able to find any of the old posts.  Others here may have figured out how.
Your batch file (using wget) is the glue between EXEMultiTuner and the STB's web page.  That's the only programming needed.
You'll also need to create a Windows registry entry that tells Sage to send channel-change info to your batch file.  Name the file whatever you'd like, and place it in whatever folder you prefer.
If running the 32-bit version of Sage, the registry entry should be placed in Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Frey Technologies\Common
Else, if running the 64-bit version of Sage, the registry entry should be placed in Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Frey Technologies\Common
Correct registry entry (note location of double-quotes):

Incorrect registry entry (don't double-quote anything but the batch-file path & name):

checked to make sure EXEMuliTurner was in the SageTVx64\common folder
Added the 64 bit key- Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Frey Technologies\Common\EXEMultiTunerPlugin
Added the string command- cmd.exe /c "notepad.exe" %channel%
Basically followed the forum post:
https://forums.sagetv.com/forums/showthread_t_43947.html?t=43947
Removed, and added, the hauppauge video source with the EXEMultiTuner tuner control. All good there.
Verified sagetvx64 service allowed to interact with the desktop.

If I paste the string command onto the command line notepad starts fine, but for some reason it won't start from sagetv when I change the channel
Not sure where I went wrong, but out of time for now, will try more in next few days.
On Mon, 15 Jan 2024 15:23:37 -0800, Keith Fischer @.***> wrote:
If Sage is running on Windows, you can use EXEMultiTuner, which is already built into Sage. In short, Sage uses EXEMultiTuner to talk to a batch file that you'll need to create, which talks to the STB. Try to find a topic in the old Sage forums titled "Need EXEMultiTuner install help". I haven't been able to find any of the old posts. Others here may have figured out how.
Your batch file (using wget) is the glue between EXEMultiTuner and the STB's web page. That's the only programming needed.
You'll also need to create a Windows registry entry that tells Sage to send channel-change info to your batch file. Name the file whatever you'd like, and place it in whatever folder you prefer.
If running the 32-bit version of Sage, the registry entry should be placed in Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Frey Technologies\Common
Else, if running the 64-bit version of Sage, the registry entry should be placed in Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Frey Technologies\Common
Correct registry entry (note location of double-quotes):
Registry.entry.-.right.jpg (view on web)
Incorrect registry entry (don't double-quote anything but the batch-file path & name):
Registry.entry.-.wrong.jpg (view on web)
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you authored the thread.Message ID: @.***>

I now have EXEMultiTuner passing on %DEVICE% and %CHANNEL% to my batch file, and logging results to another text file, so that part is working.
Now I need to learn how to change the channel on the Xfinity set top box.
When I open the webremote webpage in a browser, inspect, then go to the console, I can use a defined function called submitTextCommand to change the channel.  But i'm afraid tracing where this command comes from to see what parameters I need to use this from my SageTv batch file, is overwhelming me.
Using VsCode I downloaded the resources from the website as a zip file.  Can anyone help me go through the code and tell me what I need to do?
On Mon, 15 Jan 2024 15:23:37 -0800, Keith Fischer @.***> wrote:
If Sage is running on Windows, you can use EXEMultiTuner, which is already built into Sage. In short, Sage uses EXEMultiTuner to talk to a batch file that you'll need to create, which talks to the STB. Try to find a topic in the old Sage forums titled "Need EXEMultiTuner install help". I haven't been able to find any of the old posts. Others here may have figured out how.
Your batch file (using wget) is the glue between EXEMultiTuner and the STB's web page. That's the only programming needed.
You'll also need to create a Windows registry entry that tells Sage to send channel-change info to your batch file. Name the file whatever you'd like, and place it in whatever folder you prefer.
If running the 32-bit version of Sage, the registry entry should be placed in Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Frey Technologies\Common
Else, if running the 64-bit version of Sage, the registry entry should be placed in Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Frey Technologies\Common
Correct registry entry (note location of double-quotes):
Registry.entry.-.right.jpg (view on web)
Incorrect registry entry (don't double-quote anything but the batch-file path & name):
Registry.entry.-.wrong.jpg (view on web)
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you authored the thread.Message ID: @.***>

Please post the zip file of the webpage so we can have a look.

Sure. Guess it didn't work as an email attachement.
webremote.shaw.ca.zip

Thank you for looking at this JustFred51.  Yes, I also saw in the Shaw support forum where people had success using the Harmony universal remote on the Xione. So, I went and bought an inexpensive universal remote (IR) and also had success using it on the Xione.  Then used the universal remote to learn the new ir codes for the ir blaster.  Tried it more than a dozen times, successfully learned the code, but it won't work on the xione.  When I look in the HCWBlast.ini file, the code changes everytime I successfully learn the code, but the code does nothing for the xione. Guessing it is something to do with the "learning process"?   My next step is to buy an external ir blaster and try it again.... is usb-uirt still the way to go?

The fact that the codestream (in HCWBlast.ini) changes with each 'learn' cycle indicates it's not faithfully learning the IR stream.  I never had a lot of success with the Hauppage blaster, but have been using usb-uirt with a pair of STBs for over 5 years; great product.  Sage does a good job of learning IR codes for it.  In general, it's preferable to learn from the STB manufacturer's remote, rather than learning from a remote that had learned from the mfgr's.  For various reasons, learning from subsequent copies isn't always reliable.
If you decide to install usb-uirt, it needs a driver that links it to Sage.  Be aware that there was a minor issue when installing on Win-x64, sometimes incorrectly installing the x86 driver on an x64 OS.  I can't recall which installer had the issue: Was it the one packaged with SageTv-x64, or was it the one from the usb-uirt website?


A lot of code compiled on a small change (local variable name change)

steps
I am afraid I need help to reproduce the issue in a smaller project. My project is SBT based, Scala 3, several modules, JS + JVM, with about 500 Scala source files.
problem
When I make a small change in my project, like renaming a local variable in a function, a lot of files (>400) is compiled.
expectation
On any change which is internal to a single function and does not affect its interface (parameters or return value) only one file should be compiled.
notes
It is possible something in my sources is contributing to the problem, but given current tools, it is quite hard to learn what exactly is the issue. The complete build log obtained using Level.Debug has over 50 000 lines.
I attach an excerpt obtained using ThisBuild / logLevel := Level.Debug from my sbt build which was triggered after I renamed a local variable from add to toAdd :
[debug] compilation cycle 1
[info] compiling 2 Scala sources to C:\Dev\tempi\jvmCommon\target\scala-3.5.0\classes ...

[debug] compilation cycle 2
[info] compiling 36 Scala sources to C:\Dev\tempi\jvmCommon\target\scala-3.5.0\classes ...

[debug] compilation cycle 3
[info] compiling 50 Scala sources to C:\Dev\tempi\jvmCommon\target\scala-3.5.0\classes ...

[debug] compilation cycle 4
[info] compiling 481 Scala sources and 9 Java sources to C:\Dev\tempi\jvmCommon\target\scala-3.5.0\classes ...

If that is the case, chances are the 2 files are always the same 2 files.

Yes, it always starts this way. The issue is 100% reproducible. For me the logs contain too much information, it is hard for me to digest it and to learn what is going on from it.
I can share you the log privately, if you suggest a suitable means to do so. As for the project, I would be very reluctant to share it, unless there is some NDA about it.

If that is the case, chances are the 2 files are always the same 2 files.

Yes, it always starts this way. The issue is 100% reproducible. For me the logs contain too much information, it is hard for me to digest it and to learn what is going on from it.
I can share you the log privately, if you suggest a suitable means to do so. As for the project, I would be very reluctant to share it, unless there is some NDA about it.

I see. For the log, if you use discord my discord ID is vertex1003. You can send a google drive link containing the log via discord DM, and after I downloaded the log I will reply to you and you can then immediately disable the google drive link.
If you use other messaging app, tell me the app name and your ID and I will register an account and add you there.
Btw may I share segment of the log relevant to the issue to other Scala tooling contributors for sake of debugging this issue?

@OndrejSpanel Could you try:
Compile / incOptions ~= { _.withTransitiveSteps(10) }

I noticed that you ran out of transitive steps (default is 3 I think), which explains cycle 4 is super big.

@OndrejSpanel Could you try:
Compile / incOptions ~= { _.withTransitiveSteps(10) }

I noticed that you ran out of transitive steps (default is 3 I think), which explains cycle 4 is super big.

Going slightly offtopic but should we consider raising the default transitive step to something higher than 3? I was reading source code of Intellij Scala Plugin and noticed their Scala Language Server sets transitive step to 6.

At the rate that it expanded from 2 to 36 files, I am still guessing it's something to do with macro invalidation, but if this fixes the problem maybe we could consider upping to 6.

I have added Compile / incOptions ~= { _.withTransitiveStep(10) }. With this setting I get:
[debug] compilation cycle 1
[info] compiling 2 Scala sources to C:\Dev\tempi\jvmCommon\target\scala-3.5.0\classes ...
[debug] compilation cycle 2
[info] compiling 1 Scala source to C:\Dev\tempi\jvmCommon\target\scala-3.5.0\classes ...
[debug] compilation cycle 3
[info] compiling 15 Scala sources to C:\Dev\tempi\jvmCommon\target\scala-3.5.0\classes ...

This is much better, but still quite a lot for a renamed local variable.

For the log, if you use discord

I have the logs prepared, discord friendship request sent (username ospanel).

With { _.withTransitiveStep(30) } I got:
[debug] compilation cycle 1
[info] compiling 2 Scala sources to C:\Dev\tempi\jvmCommon\target\scala-3.5.0\classes ...
[debug] compilation cycle 2
[info] compiling 36 Scala sources to C:\Dev\tempi\jvmCommon\target\scala-3.5.0\classes ...
[debug] compilation cycle 3
[info] compiling 50 Scala sources to C:\Dev\tempi\jvmCommon\target\scala-3.5.0\classes ...

As for macros, I use several libraries which use them quite extensively, namely borer, circe, quicklens and airframe.surface.

With { _.withTransitiveStep(10).withRelationsDebug(true).withApiDebug(true) } there is:
Detected API change because net.gamatron.json.Schema contains a macro definition

This object uses airframe.surface, namely my "light" fork of it (https://github.com/OpenGrabeso/light-surface/).

I am trying to create a repro using surface. Can someone help me what to look for, when I see this in the SBT debug output:
[debug] [diff] Detected API change because net.gamatron.json.Schema contains a macro definition.
[debug] [inv]
[debug] [inv] Changes:
[debug] [inv] API Changes: Set(APIChangeDueToMacroDefinition(net.gamatron.json.Schema))
[debug] Invalidating (transitively) by inheritance from net.gamatron.json.Schema...
[debug] Initial set of included nodes: net.gamatron.json.Schema
[debug] Invalidated by transitive inheritance dependency: Set(net.gamatron.json.Schema)
[debug] The following member ref dependencies of net.gamatron.json.Schema are invalidated:
[debug] 	aaa.bbb.ccc.Ccccc
[debug] 	aaa.bbb.ccc.Dddd
[debug] 	aaa.bbb.ccc.ddd.EEEE
I am trying to include various constructs those classes use from Schema, but do not see the issue in my repro so far.
Some things Schema includes, which the classes mentioned as "member ref dependencies" use:
  // macro declaration
  def enumerateSubclassesImpl[T: Type](using Quotes): Expr[List[Surface]] = ???

  inline def enumerateSubclasses[T]: List[Surface] = ${ enumerateSubclassesImpl[T] }

  inline def listDerivedClasses[T]: List[TypeDesc] = enumerateSubclasses[T].map(TypeDesc.apply(_))

  // annotation declaration
  type hiddenType = hidden

  // type declarations
  case class TypeDesc(surface: Surface)

What are "member ref dependencies" and when are they invalidated? I am not even sure why is net.gamatron.json.Schema invalidated on my change, as it does not seem to be used in the file I am changing.
Almost all classes listed in the first step as "by member reference" use listDerivedClasses macro, but not all - some are just simple sealed trait, with no references to Schema at all.

What are "member ref dependencies" and when are they invalidated?

Member ref dependencies are basically direct reference from a class to another.
class A

class B {
   val a = new A;
}

Then B has a member ref dependency to A as B refers to A.
As for why they are invalidated, there's lots of ways they can be invalidated. One common way is that if a class has macros (either contains a macro call site or macro implementation), then all of its member ref dependents are invalidated.

I am not even sure why is net.gamatron.json.Schema invalidated on my change, as it does not seem to be used in the file I am changing.

I am looking into it. The debug log should contain the reason.

If you think there is any experiment I could run on my project or any other information you want, just ask. I am very glad you care about the issue and work on solving it. Thanks a lot.

I noticed that you ran out of transitive steps (default is 3 I think), which explains cycle 4 is super big.

Going slightly offtopic but should we consider raising the default transitive step to something higher than 3? I was reading source code of Intellij Scala Plugin and noticed their Scala Language Server sets transitive step to 5.

I confirm _.withTransitiveStep(5) is enough for my project to avoid ~500 files being compiled in the compilation cycle 3, I see only 15-50, same as with _.withTransitiveStep(10).

If the package object gets shaken, it's game over. So my suggestion would be to split the source code as much possible for anything that might invalidate the package object, or maybe just avoid package object altogether.
I think Scala 3 was trying to deprecate it at some point? - https://docs.scala-lang.org/scala3/reference/dropped-features/package-objects.html

When I replaced my most prominent package object by expanding it to top-level definitions instead, the result is even worse, on a comment change I get:
[debug] compilation cycle 1
[info] compiling 19 Scala sources to C:\Dev\tempi\jvmCommon\target\scala-3.5.0\classes ...
[debug] compilation cycle 2
[info] compiling 46 Scala sources to C:\Dev\tempi\jvmCommon\target\scala-3.5.0\classes ...
[debug] compilation cycle 3
[info] compiling 56 Scala sources to C:\Dev\tempi\jvmCommon\target\scala-3.5.0\classes ...

Thanks for the tip. I will check what package objects could be involved, I certainly have some present. (Or if the logs tell more about what package object in particular is involved, it will certainly help me).

When changing a local variable name in a file contains macro (either definition or call site), zinc performs very aggressive invalidation since macro expands at callsite.
I still need to think more about what is going on. I believe that Zinc's macro invalidation is that a when a source file containing macro is invalidated, all downstream files (all member ref dependents of the macro containing file) would be invalidated. But I would assume that net.gamatron.json.Schema is an upstream class. It is probably not supposed to be invalidated yet it is somehow invalidated...

And to be sure I understand: by "shaked" you mean "invalidated"? Still I do not understand why changing a comment or a local variable name shakes anything at all.

Shake means invalidated.

to split the source code as much possible for anything that might invalidate the package object,

Can you give me some examples of what to avoid?

upstream class.

Downstream / upstream - I am afraid I am not sure yet what it means. In this case Schema is a utility class containing a macro and other things. It should not depend on anything else other than surface library, I think.

Downstream / upstream - I am afraid I am not sure yet what it means.

Upstream means the class is relatively higher in the dependency tree. Like if class A depends on class B, then B is upstream relative to A.

In this case Schema is a utility class containing a macro and other things. It should not depend on anything else other than surface library, I think.

Thanks for the info! This is really important information that helps to narrow down possibilities.

In this repo I try to replicate how is it used in the real project - https://github.com/OndrejSpanel/incremental-repro - so far I was not able to reproduce the issue, though. I will continue to add more code, but any hints on what might be the problematic construct would be helpful.

I will try to see if I can talk to Scala 3 compiler devs. I don't have any idea on what might be the problematic construct but they might have an idea on what constructs may cause the issue.

I have created a standalone repro. It is about 15 scala source files, referencing each other in various ways, sometimes using unused imports, with some package objects present.
To see the issue:

compile
change comment located in object WC
compile again

The output I see after the second compile:
[IJ]compile
[info] compiling 1 Scala source to C:\Dev\inc-repro\target\scala-3.5.0\classes ...
[info] done compiling
[info] compiling 1 Scala source to C:\Dev\inc-repro\target\scala-3.5.0\classes ...
[info] done compiling
[info] compiling 2 Scala sources to C:\Dev\inc-repro\target\scala-3.5.0\classes ...
[info] done compiling
[success] Total time: 1 s, completed 19. 9. 2024 1:18:44

(I hope it will be useful, I spent more than 10 hours reducing it to this shape.)

If there is any progress with this issue, please let me know. Even if it is not resolved, just knowing what kinds of constructs trigger this would immensely help me, as I could refactor my sources accordingly. The long compile times on trivial changes are killing me.

If there is any progress with this issue, please let me know. Even if it is not resolved, just knowing what kinds of constructs trigger this would immensely help me, as I could refactor my sources accordingly. The long compile times on trivial changes are killing me.

Sorry for lack of communication in the last few days. I plan to spend this entire weekend looking into this issue and will share any intel found as comment.

Didn't find the root cause yet but did some narrowing down the issue and found out that
https://github.com/sbt/zinc/blob/59505ce7fe42d4bcaec82036df84802a614044f6/internal/zinc-core/src/main/scala/sbt/internal/inc/IncrementalCommon.scala#L398-L408
has incorrect result. Just by changing a comment, removedProducts returned 17 entries causing mass invalidation.

More specifically previous.allProducts.toVector contains 43 entries, and for 17 of them, !equivS.equiv(previous.product(p), stamps.product(p)) returns true.

Sorry for lack of communication in the last few days. I plan to spend this entire weekend looking into this issue and will share any intel found as comment.

ok. Reminder to everyone that

Zinc is an open source software with no warrantees. This means that it's a free sandwich, and any additional ham and cheese should ideally be added by their own user, or purchased via some consultancy who can.
Friendseeker is a student who is studying Computer Science.

If working on Zinc is fun, please by all means keep doing what you're doing, but please do not feel obligated on anything.

[info] compiling 15 Scala sources

I see this when I modify the project using IntelliJ IDE with Compiler based error highlighting. In this mode the IDE interacts with the build system and skews results very much. I have learned hard way that to learn anything useful about the SBT build process, the IDE should not be open, or at least be in Built-in highlighting mode.
When I use notepad to edit the files, I consistently get the results I have shown:
PS C:\Dev\inc-repro> sbt compile
[info] welcome to sbt 1.10.1 (Eclipse Adoptium Java 21.0.3)
[info] loading global plugins from C:\Users\Ondra.sbt\1.0\plugins
[info] loading project definition from C:\Dev\inc-repro\project
[info] loading settings for project inc-repro from build.sbt ...
[info] set current project to IncRepro (in build file:/C:/Dev/inc-repro/)
[info] Executing in batch mode. For better performance use sbt's shell
[info] compiling 1 Scala source to C:\Dev\inc-repro\target\scala-3.5.0\classes ...
[info] compiling 1 Scala source to C:\Dev\inc-repro\target\scala-3.5.0\classes ...
[info] compiling 2 Scala sources to C:\Dev\inc-repro\target\scala-3.5.0\classes ...
[success] Total time: 4 s, completed 29. 9. 2024 0:56:23
I running this on Win11 x64, Java 21.

Sorry for lack of communication in the last few days. I plan to spend this entire weekend looking into this issue and will share any intel found as comment.

ok. Reminder to everyone that

Zinc is an open source software with no warrantees. This means that it's a free sandwich, and any additional ham and cheese should ideally be added by their own user, or purchased via some consultancy who can.
Friendseeker is a student who is studying Computer Science.

If working on Zinc is fun, please by all means keep doing what you're doing, but please do not feel obligated on anything.

Thanks Eugene for reminding me the facts. While Ondrej is being extremely helpful in terms of investigating the issue and being very nice in general, indeed it does not mean I have an obligation to resolve this ticket by doing a weekend crunch.
I will keep investigate this ticket, but I shall prioritize playing with my cats during the long weekend instead of directing all my energy towards this issue.

[info] compiling 15 Scala sources

I see this when I modify the project using IntelliJ IDE with Compiler based error highlighting. In this mode the IDE interacts with the build system and skews results very much. I have learned hard way that to learn anything useful about the SBT build process, the IDE should not be open, or at least be in Built-in highlighting mode.
When I use notepad to edit the files, I consistently get the results I have shown:
PS C:\Dev\inc-repro> sbt compile [info] welcome to sbt 1.10.1 (Eclipse Adoptium Java 21.0.3) [info] loading global plugins from C:\Users\Ondra.sbt\1.0\plugins [info] loading project definition from C:\Dev\inc-repro\project [info] loading settings for project inc-repro from build.sbt ... [info] set current project to IncRepro (in build file:/C:/Dev/inc-repro/) [info] Executing in batch mode. For better performance use sbt's shell [info] compiling 1 Scala source to C:\Dev\inc-repro\target\scala-3.5.0\classes ... [info] compiling 1 Scala source to C:\Dev\inc-repro\target\scala-3.5.0\classes ... [info] compiling 2 Scala sources to C:\Dev\inc-repro\target\scala-3.5.0\classes ... [success] Total time: 4 s, completed 29. 9. 2024 0:56:23
I running this on Win11 x64, Java 21.

Thanks. Oh yeah there are a lot of holes. One is that Compiler based error highlighting ruins class file reproducibility. I used an online file hash generator and found out the file hashes indeed are different....
I shall try using Built-in highlighting mode and see if I can reproduce the same logs.

any additional ham and cheese should ideally be added by their own user, or purchased via some consultancy who can.

For information: I have create a post about this on scala-users.

I had figured out what caused net.gamatron.json.Schema to be invalidated. Here's the invalidation chain.
net.opengrabeso.json.Schema -> net.opengrabeso.json.ASchema
net.opengrabeso.json.ASchema -> net.opengrabeso.engine.tx
net.opengrabeso.engine.tx -> net.opengrabeso.engine.MTTx,
net.opengrabeso.engine.MT -> net.opengrabeso.engine.MTOpaque,
net.opengrabeso.engine.MTOpaque -> net.opengrabeso.p.OM,
net.opengrabeso.p.OM -> net.opengrabeso.p.OMShaders,
net.opengrabeso.p.OMShaders -> net.opengrabeso.p.state.HM,
net.opengrabeso.p.state.HM -> net.opengrabeso.p.World,
net.opengrabeso.p.World -> net.opengrabeso.p.s.SLog$.HDesc,
net.opengrabeso.p.s.SLog$.HDesc -> net.opengrabeso.p.state.package,
net.opengrabeso.p.state.package -> net.opengrabeso.p.State,
net.opengrabeso.p.State -> net.opengrabeso.p.state.WC,

Basically Zinc has a mechanism called "third order invalidation" introduced by Dale in https://github.com/sbt/zinc/pull/1282. Zinc tracks list of all (transitive) classes for which a macro net.opengrabeso.json.Schema depends on in a crude manner, and if any of these changes, Zinc invalidates the macro net.opengrabeso.json.Schema as any change to any of these classes may affect the behaviour of the macro.
@OndrejSpanel I don't have access to your entire project, but if possible, breaking any part of the chain should ease the issue.
In long term, we need a better macro invalidation mechanism. Bytecode based call graph analysis is one promising candidate. The issue with bytecode based analysis is that it takes significant effort to implement it.
Btw welcomes any other idea that third order invalidation can be improved. The best case scenario is if we can come up with some macro invalidation strategy that is almost as good as bytecode but takes significantly less effort to implement. Although no one had ever came up with such strategy, few people were looking into this issue anyways.

if possible, breaking any part of the chain should ease the issue

And it really does. When I move the macro enumerateSubclasses into a separate object SchemaMacros with minimal dependencies, I no longer see the issue.
Thanks for the analysis—I really appreciate it! (I hope you had a great time with your cat.) I'd like to express my gratitude in a more tangible way. I've sent you an invite, so you'll be able to find my contact information if you're interested.

I had figured out what caused net.gamatron.json.Schema to be invalidated. Here's the invalidation chain.

Can you describe how can I analyze logs so that I am able to find such invalidation chain on my own? While breaking this chain helps in the repro, there must be some other quite different type of chain in the real project, as even without any macros at all I get following behaviour on trivial code changes:
[IJ]jvmCommon/compile
[info] compiling 2 Scala sources to C:\Dev\tempi\jvmCommon\target\scala-3.5.1\classes ...
[info] compiling 35 Scala sources and 9 Java sources to C:\Dev\tempi\jvmCommon\target\scala-3.5.1\classes ...
[info] compiling 70 Scala sources and 9 Java sources to C:\Dev\tempi\jvmCommon\target\scala-3.5.1\classes ...

This is indeed a peculiar issue as changes such as “after I renamed a local variable from add to toAdd” should not have any impact at all

Even without a macro I can see in the real project that even trivial changes (changing comment, renaming local variable) cause compilation of at least two Scala source files. Now I could spend another day creating another repro, but perhaps understanding logs and being able to identify the invalidation chains would be more productive?
What makes understanding logs hard for me is that there is a lot of information dumped by sbt / zinc about files / classes which I assume were checked for invalidation, but not invalidated eventually. I consider creating some tool which would parse the logs and show just the invalidation information from them.

Can you describe how can I analyze logs so that I am able to find such invalidation chain on my own?

When withRelationsDebug(true) is set, Zinc prints the relations between classes, for which we can extract the chain from.

While breaking this chain helps in the repro, there must be some other quite different type of chain in the real project, as even without any macros at all I get following behaviour on trivial code changes

Eugene suggested package object might be causing mass invalidation. Here's the relevant log
[debug] [inv] Package object invalidations: net.gamatron.procas.game.state.package

Try to remove net.gamatron.procas.game.state package object if possible (e.g. replacing it with regular object). This might address the issue.

Part of the issue in the real project is https://github.com/sbt/zinc/issues/867#issuecomment-667700482:

My experience seems to be that name hashing does not prevent the invalidation from spreading though. In the example I described above in the sbt project, it did two cycles even though only Foo.scala actually changed and no other file depended on Foo.scala.

My Java files are annotations only (because of RetentionPolicy.RUNTIME). Once any of it is invalidated (which always happens at the moment), they seem to invalidate all classes they are used with.
Once I disabled pipelining, the behavior is much more reasonable. I am not sure why any of the Java files was invalidated in the first place, and so far I am unable to examine the invalidation chains, therefore I cannot really tell.

My Java files are annotations only (because of RetentionPolicy.RUNTIME). Once any of it is invalidated (which always happens at the moment), they seem to invalidate all classes they are used with.

I believe this is due to https://github.com/sbt/zinc/issues/630

Once I disabled pipelining, the behavior is much more reasonable, I usually get only 2 compilation cycles, not 3 or more. (Even 2 are too many on a trivial change, I am working on a reproducer, but the progress is slow).

Yeah unfortunately pipelining can have some surprising interaction with incremental compilation.
https://github.com/sbt/zinc/blob/63e2ade4fcb37a54817dda1953543b52ad24c889/internal/zinc-core/src/main/scala/sbt/internal/inc/IncrementalCommon.scala#L120-L140

I am not sure why any of the Java files was invalidated in the first place, and so far I am unable to examine the invalidation chains, therefore I cannot really tell.

The best thing we can do is to come up with a minimal reproduction right now. Even if we can examine the chain, it can be likely that the chain does not reveal very much. Frequently Zinc's invalidation is not quite as orthodox as explicitly following a chain due to name hashing optimization & various special cases to override name hashing.


i am getting a weired issue while using the script tag of tensorflow

indexnew.js:726 Error in main function:  TypeError: Failed to fetch
at e.fetch (tfjs-core:17:94486)
at e. (tfjs-core:17:243405)
at tfjs-core:17:2217
at Object.next (tfjs-core:17:2322)
at tfjs-core:17:1259
at new Promise ()
at a (tfjs-core:17:1004)
at e.loadModelJSON (tfjs-core:17:243294)
at e. (tfjs-core:17:244682)
at tfjs-core:17:2217
Please see above issue what is causing it ?

Hi @viniith21 ,
Is this related to Tensorflow JS? If so please report it at tfjs repo here.

Hi @SuryanarayanaY i fixed this issue please close this issue

Hi @SuryanarayanaY i fixed this issue please close this issue

Closing the issue as per user confirmation.


Save and restore the game state when the app is backgrounded / foregrounded

It would be great if it were possible to save game state when the application is backgrounded and then restore this when foregrounded. Historically this has been impossible due to limitations Mobile Safari on iOS. We should explore whether this has changed.

Camille Kander suggests on twitter that the visibilitychange event might now work:

@insevenlimited ‘visibilitychange’ seems to work fine. Would it do the job?

(See https://twitter.com/Xzoky/status/704819724874416128).

Is there currently a way to save the game state then reload it? If that exists I could work on this feature

Thanks @Shawnjoseph2001. Just to clarify for others it's actually alpha.gameplaycolor.com and it has save and restore implemented. The source for save and restore is available on the jbm-master-save-restore branch.

The proposed solution by Camille will not work because there is a bug with the Page Visibility API on iOS

[4] From iOS 11.0.2 onwards, the values are not correct in standalone mode (when you press "Add to Homescreen") and when the screen is locked (you pressed the power button). The value for hidden is false and visibilityState is visible.

see MDN
I'll see if I can come up with another solution


Command line instructions are incorrect

The block:
mountvol X: /s
copy %WINDIR%\System32\SecConfig.efi X:\EFI\Microsoft\Boot\SecConfig.efi /Y
bcdedit /create {0cb3b571-2f2e-4343-a879-d86a476d7215} /d "DebugTool" /application osloader
bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} path "\EFI\Microsoft\Boot\SecConfig.efi"
bcdedit /set {bootmgr} bootsequence {0cb3b571-2f2e-4343-a879-d86a476d7215}
bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} loadoptions DISABLE-LSA-ISO,DISABLE-VBS
bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} device partition=X:
bcdedit /set hypervisorlaunchtype off
mountvol X: /d
is incorrect - it results in the following output:
C:\WINDOWS\system32>mountvol X: /s
The parameter is incorrect.
C:\WINDOWS\system32>copy %WINDIR%\System32\SecConfig.efi X:\EFI\Microsoft\Boot\SecConfig.efi /Y
The system cannot find the drive specified.
C:\WINDOWS\system32>bcdedit /create {0cb3b571-2f2e-4343-a879-d86a476d7215} /d "DebugTool" /application osloader
The entry {0cb3b571-2f2e-4343-a879-d86a476d7215} was successfully created.
C:\WINDOWS\system32>bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} path "\EFI\Microsoft\Boot\SecConfig.efi"
The operation completed successfully.
C:\WINDOWS\system32>bcdedit /set {bootmgr} bootsequence {0cb3b571-2f2e-4343-a879-d86a476d7215}
The operation completed successfully.
C:\WINDOWS\system32>bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} loadoptions DISABLE-LSA-ISO,DISABLE-VBS
The operation completed successfully.
C:\WINDOWS\system32>bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} device partition=X:
The device is not valid as specified.
Run "bcdedit /?" for command line assistance.
A device attached to the system is not functioning.
C:\WINDOWS\system32>bcdedit /set hypervisorlaunchtype off
The operation completed successfully.
C:\WINDOWS\system32>mountvol X: /d
The system cannot find the file specified.
The help for mountvol doesn't show a /s parameter.
Please fix.

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

ID: 41c2cb44-269d-3334-019a-726eb5432f1c
Version Independent ID: 251024cc-b818-18c6-a112-4ac0276cb4b1
Content: Manage Windows Defender Credential Guard (Windows 10)
Content Source: windows/security/identity-protection/credential-guard/credential-guard-manage.md
Product: w10
Technology: windows
GitHub Login: @DaniHalfin
Microsoft Alias: daniha

Example output to demonstrate what happens and why /S is an invalid parameter:
Microsoft Windows [Version 10.0.17763.437]
(c) 2018 Microsoft Corporation. All rights reserved.

C:\WINDOWS\system32>mountvol X: /s
The parameter is incorrect.

C:\WINDOWS\system32>mountvol /?
Creates, deletes, or lists a volume mount point.

MOUNTVOL [drive:]path VolumeName
MOUNTVOL [drive:]path /D
MOUNTVOL [drive:]path /L
MOUNTVOL [drive:]path /P
MOUNTVOL /R
MOUNTVOL /N
MOUNTVOL /E

    path        Specifies the existing NTFS directory where the mount
                point will reside.
    VolumeName  Specifies the volume name that is the target of the mount
                point.
    /D          Removes the volume mount point from the specified directory.
    /L          Lists the mounted volume name for the specified directory.
    /P          Removes the volume mount point from the specified directory,
                dismounts the volume, and makes the volume not mountable.
                You can make the volume mountable again by creating a volume
                mount point.
    /R          Removes volume mount point directories and registry settings
                for volumes that are no longer in the system.
    /N          Disables automatic mounting of new volumes.
    /E          Re-enables automatic mounting of new volumes.

Possible values for VolumeName along with current mount points are:

    \\?\Volume{b83c8944-a6b3-11e5-82ad-806e6f6e6963}\
        *** NO MOUNT POINTS ***

    \\?\Volume{b83c8945-a6b3-11e5-82ad-806e6f6e6963}\
        C:\

    \\?\Volume{518ec613-0000-0000-0000-0080e2000000}\
        *** NO MOUNT POINTS ***

    \\?\Volume{7f54e24e-a6bc-11e5-b7cd-806e6f6e6963}\
        E:\

C:\WINDOWS\system32>

Sorry, my bad. I deleted my previous comment because I realized there is a real difference between Windows Server versions of Windows and Desktop/Laptop versions of Windows.
The command mountvol looks like this (see below) on a Windows 2016 Server:
C:\Users\Administrator>mountvol /?
Creates, deletes, or lists a volume mount point.

MOUNTVOL [drive:]path VolumeName
MOUNTVOL [drive:]path /D
MOUNTVOL [drive:]path /L
MOUNTVOL [drive:]path /P
MOUNTVOL /R
MOUNTVOL /N
MOUNTVOL /E
MOUNTVOL drive: /S

    path        Specifies the existing NTFS directory where the mount
                point will reside.
    VolumeName  Specifies the volume name that is the target of the mount
                point.
    /D          Removes the volume mount point from the specified directory.
    /L          Lists the mounted volume name for the specified directory.
    /P          Removes the volume mount point from the specified directory,
                dismounts the volume, and makes the volume not mountable.
                You can make the volume mountable again by creating a volume
                mount point.
    /R          Removes volume mount point directories and registry settings
                for volumes that are no longer in the system.
    /N          Disables automatic mounting of new volumes.
    /E          Re-enables automatic mounting of new volumes.
    /S          Mount the EFI System Partition on the given drive.

Possible values for VolumeName along with current mount points are:

    \\?\Volume{cbb8e626-be0b-45de-b7c9-63e997ddf667}\
        C:\

    \\?\Volume{e9f09030-2bf1-4812-a09a-fc537d1e16a1}\
        E:\

    \\?\Volume{a317323c-5890-490c-8306-7dcc627050c7}\
        *** NO MOUNT POINTS ***

    \\?\Volume{99f58b42-ade6-11e7-965d-806e6f6e6963}\
        D:\

C:\Users\Administrator>_

@RichardRanft : Did you perhaps test the script on a Windows 10 computer instead of Windows Server ?

@illfated That would be exactly why.
So, complete and correct instructions for dealing with this on all platforms where such is relevant would be the ideal documentation outcome.
The operation succeeded (disabling of Device Guard) but I thought it would be good to point out that this is a "mistake" in the instructions since it doesn't address all platforms where this annoying bit of "helpful" software is deployed (silently and well-hidden, I might add).

Thank you for the feedback & reply. To me, it looks like there is a common issue with some users testing the script on non-UEFI computers (even if the OS could be the correct one), ending up with scenarios where it may not work as expected or intended. I will leave this question open to the Microsoft Docs team members to check & verify if the current documentation needs more clarification.
Looking at the Feedback section (https://docs.microsoft.com/en-us/windows/security/identity-protection/credential-guard/credential-guard-manage#feedback) and seeing the 10 currently open issues, it is certainly plausible that multiple users have trouble finding out what the requirements are for this script to work properly.

BTW, the section in question is Disable Windows Defender Credential Guard

https://docs.microsoft.com/en-us/windows/security/identity-protection/credential-guard/credential-guard-manage#disable-windows-defender-credential-guard

and the contents of the script block:
mountvol X: /s
copy %WINDIR%\System32\SecConfig.efi X:\EFI\Microsoft\Boot\SecConfig.efi /Y
bcdedit /create {0cb3b571-2f2e-4343-a879-d86a476d7215} /d "DebugTool" /application osloader
bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} path "\EFI\Microsoft\Boot\SecConfig.efi"
bcdedit /set {bootmgr} bootsequence {0cb3b571-2f2e-4343-a879-d86a476d7215}
bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} loadoptions DISABLE-LSA-ISO,DISABLE-VBS
bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} device partition=X:
bcdedit /set hypervisorlaunchtype off
mountvol X: /d

To clarify - the desired outcome was achieved.  I was able to disable the feature as intended.  However, the version of mountvol on my computer (Win10 pro) did not have a /s switch.  Since Windows Defender Credential Guard was installed either as part of the initial setup or as part of Windows Update on this platform it would be nice to have instructions for each platform upon which this "feature" can be installed, notes for optional/alternative steps, or at least notes on possible errors and their causes/impact.

I agree, even if I don't have access to a scenario where implementing and removing this feature will be practical (I only have got 1 production server running at my workplace, and most of the other computers are unavailable for testing).
From my point of view, it would be practical with added clarification, although I would also like to hear from the MS Docs team members and other IT professionals, whether this documentation is intended for users who already are aware of the difference between Windows 10 and Windows Server versions of the mountvol command/program.

@officedocsbot assign @e0i

@RichardRanft, @illfated Thank you all for valuable feedback and discussion.
The issue is under investigation and you will be notified with any changes on the way.

@RichardRanft : You may want to revisit the page from time to time and see what changes are made to it.
The list of added changes can be found here:

https://github.com/MicrosoftDocs/windows-itpro-docs/commits/master/windows/security/identity-protection/credential-guard/credential-guard-manage.md

@RichardRanft: This issue commonly occurs when you do not have a UEFI system or there is no UEFI partition for the mountvol to find. Could you please output your partition list.
@illfated @e0i: I was thinking of adding a Powershell script as well in addition to the one for cmd. Do you think this would help people in the future or make things more confusing?

Disk 5 is optical.
Disk ###  Status         Size     Free     Dyn  Gpt

Disk 0    Online          931 GB      0 B   *    *
Disk 1    Online          931 GB      0 B
Disk 2    Online         3726 GB  2048 KB        *
Disk 3    Online          931 GB   464 MB   *
Disk 4    Online         3725 GB      0 B        *
Disk 5    No Media           0 B      0 B
0
Partition ###  Type              Size     Offset

Partition 1    Recovery           300 MB  1024 KB
Partition 2    Dynamic Reserved  1024 KB   400 MB
Partition 3    Reserved           127 MB   401 MB
Partition 4    Dynamic Data       930 GB   528 MB
1
Partition ###  Type              Size     Offset

Partition 1    Primary            931 GB  1024 KB
2
Partition ###  Type              Size     Offset

Partition 1    Reserved           128 MB  1024 KB
Partition 2    Primary            999 GB   129 MB
Partition 3    Primary           1047 GB  1000 GB
Partition 4    Primary           1678 GB  2048 GB
3
Partition ###  Type              Size     Offset

Partition 1    Dynamic Data       992 KB    31 KB
Partition 2    Dynamic Data       931 GB  1024 KB
Partition 3    Dynamic Data       464 MB   931 GB
4
Partition ###  Type              Size     Offset

Partition 1    Primary           3725 GB  1024 KB
On Fri, May 10, 2019 at 3:35 PM botmoto<EMAIL_ADDRESS>wrote:

@RichardRanft https://github.com/RichardRanft: This issue commonly
occurs when you do not have a UEFI system or there is no UEFI partition for
the mountvol to find. Could you please output your partition list.
@illfated https://github.com/illfated @e0i https://github.com/e0i: I
was thinking of adding a Powershell script as well in addition to the one
for cmd. Do you think this would help people in the future or make things
more confusing?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/MicrosoftDocs/windows-itpro-docs/issues/3234#issuecomment-491448793,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAW2HR6LOSJZ4HYZYABCATTPUX2DVANCNFSM4HFBY7KA
.

@illfated @e0i: I was thinking of adding a PowerShell script as well in addition to the one for cmd. Do you think this would help people in the future or make things more confusing?

I would like to see a PowerShell script added to the documentation, because there seems to be some confusion floating out there already (like in issue #1924 "DOES NOTHING").

On a Windows 10 Pro 64-bit, I ran into issues with /s switch, which was apparently not supported. It turned out that this is because someone installed Windows without using UEFI boot so it did not have the UEFI partition. Reinstalling Windows with UEFI turned on fixed the issue for me.

Didnt work on my local German 1903 - Build 18362.239.
Had to change the strings:
-- Microsoft-Hyper-V-Online
++ Microsoft-Hyper-V
--    $OSArch = $(gwmi win32_operatingsystem).OSArchitecture
++    $OSArch = $((gwmi win32_operatingsystem).OSArchitecture).tolower()
Which got me a step further.
Then I also learned from https://www.ivobeerens.nl/2013/12/16/running-hyper-v-and-vmware-workstation-on-windows-8-x/
That it was necessary to also deactivate the Role.
bcdedit /set hypervisorlaunchtype off
patch.diff.txt
Now works like charm. Thanks to all previous Commenters.
-Thorsten

Good point. $OSArch = $((gwmi win32_operatingsystem).OSArchitecture).tolower() has been corrected in a different page.
For the .tolower() part, see issue https://github.com/MicrosoftDocs/windows-itpro-docs/issues/3869
and its resolving Pull Request https://github.com/MicrosoftDocs/windows-itpro-docs/pull/3881
For the $OSAch typo correction to $OSArch , see PR https://github.com/MicrosoftDocs/windows-itpro-docs/pull/4436

OK. In short I do think the Script has the following general issues:

ErrorHandlingPrevention: EG Check for RegKeys / File Existance and Cope with Errors.
Check if the DISM /disable-Feature succesfuly removed the HyperVisor Role.
Mention Logfiles location. / Option for cleanup.
regards, Thorsten

Related issue: #4679


Joining the club

Please add holdenclarke.com to the list. 181.6kb uncompressed

Welcome to the 250kb club. Your page entry will be https://250kb.club/holdenclarke-com/


Current git folder is not the one I am pushing up stream to

Issue Type: Bug
I use ADO with a TON of repos. I want to individually edit each with VSCode. BUT if I open a folder with VSCode (using the right click context menu), i use git status, things look okay, make a new branch, replace some files, git add -> git commit -> git push -> and this pushes to a different repo. Not the one I was working in.
I am furious now, this is the second time where files are being overwritten in a new branch that gets pushed to a completely different ADO repo.
This is unusable for ADO pipeline development :( I can't push anything to any new repo. Just the very first repo I ever synced with VSCode.
 They literally put the first pipeline in the .git folder when downloading from ADO with VSCode. This is their problem, not VSCodes.


Build test

Closes #24

 @Test
+//    public void testArgParse() {
+//        String[] args = {"search",  "testdata/data/test.fasta", "--db", "testdata/solr/"};
+//        Seqr.main(args);
+//
+//        }

Looks this was commented out, Perhaps this test failed on travis?

@lianyi, The test actually passes, however I removed it because Travis was taking longer than ten minutes to build. Unfortunately that did not work.
Travis runs fine if I do not specify before_script or script or anything like that, but if I do, I get errors like org.apache.solr.common.SolrException: No such core: sequence, like here.
I am not sure what is wrong, but I think there is a difference between what travis does by default and what I am doing, or else maybe travis is trying to run things concurrently when it shouldn't.

I see, I suspect it's the default heap size for the maven test. Perhaps the heap size can be configured  to 1G in travis?  Or perhaps just skip this testing unit in travis...

Yay, finally, I was able to get this working, although I don't quite understand The depth of the problem.
Now the robot tests I added (which test the build after the jar is created to avoid problems like #24) are run within the maven test phase, using www.github.com/robotframework/MavenPlugin
So this is ready to merge, you can review if you like, @lianyi, or go ahead and merge.

I'm working on the merging and it looks great!  Good job on getting "robotframework" works!


Reference to deprecated link on ../configuring-custom-plugins

This link is broken and can be found at http://docs.appgyver.com/tooling/build-service/plugins/configuring-custom-plugins/
Link should point to http://docs.appgyver.com/tooling/build-service/plugins/default-plugins/

Thanks for reporting! It's fixed now.


FR: Enable blackbricks to use most of sqlparse options

Relates to:

Metadata-Version: 2.1
Name: blackbricks
Version: 1.0.1

AS-IS: (in blackbricks.py)
sqlparse.format(
                "\n".join(sql_lines), reindent=True, keyword_case=sql_keyword_case

reindent

is set to True always when sqlparse is called by blackbricks

keyword_case

defaults to keyword_case=upper, and can be influenced using --no-sql-upper … in this case keyword_case=lower will be used

TO-BE: (requested feature)

Improve blackbricks to be able to set/use (nearly) all sqlparse options. For this, please:

implement additional sqlparse-options which can be used in blackbricks
pass them to sqlparse
add default value(s) for these sqlparse options (similar to: --sql-upper is default (upper(KEYWORDS), but one can optionally overwrite this using --no-sql-upper (lower(KEYWORDS)) in order to ensure downwards comaptibility

so ... nobody using blackricks already would need to change anything, because blackbricks would set DEFAULT sqlparse options by default!
BTW, I've already checked sqlparse for DEFAULT values ... and I've put them into the list beneath as <DEFAULT_VALUE> is DEFAULT in sqlparse

Here's the list of desired/commonly-used options when formatting SQL source code:

--sql-identifier-case

Allow: upper, lower, capitalize
default = n/a

None is DEFAULT in sqlparse?!?

--sql-strip_comments

Allow: True, False
default = False

False is DEFAULT in sqlparse

--sql-reindent

Allow: True, False
default = False

False is DEFAULT in sqlparse

--sql-reindent_aligned

Allow: True, False
default = False

False is DEFAULT in sqlparse

--sql-use_space_around_operators

Allow: True, False
default = False

False is DEFAULT in sqlparse

--sql-indent_tabs

Allow: True, False
default = False

False is DEFAULT in sqlparse

--sql-indent_width

Allow: smallint or 1..8 or 1..256
default = 2

2 is DEFAULT in sqlparse

--sql-wrap_after

Allow: smallint or 1..8 or 1..256
default = 0

0 is DEFAULT in sqlparse

--sql-comma_first

Allow: True, False
default = False

False is DEFAULT in sqlparse

Dejan Hrubenja<EMAIL_ADDRESS>Mercedes-Benz Tech Innovation GmbH
https://github.com/mercedes-benz/foss/blob/master/PROVIDER_INFORMATION.md

@bsamseth Would you appreciate it, if I would implement my FR in a fork and add a PR?

This is certainly a possibility, and if it was to be added, I think you've outlined a good approach that ensures the defaults retain the existing functionality.
I am, however, a bit hesitant to add all these options. I think blackbricks ought to keep the spirit of black, which purposefully remains mostly non-configurable. There is a lot of value in taking away even the option to consider how formatting is done, and just have the tools do it for you, and I think this is the absolute best part of black.
Of course, SQL is not Python, and to my knowledge there is not a comparable de-facto standard way to format SQL. But for this project specifically, I think a good reference would be to try to replicate the formatting you get when you use the "Format SQL" option in the Databricks notebook UI. Since blackbricks is specific to Databricks, using them as the canonical reference for how to format SQL could be a good idea. The benefit is that you could use the built in formatter while developing without causing large reformats.
TLDR; My suggestion is to not add any additional formatting options, but rather to change the default format options such that we replicate the formatting produced by the built in "Format SQL" option in Databricks. It remains to be seen if this is possible to do perfectly with sqlparse, but I'm hopeful. We should keep the UPPERCASE/lowercase switch.
Is that something you'd be willing to take a stab at? If so, that would be great! :)

[...] but rather to change the default format options such that we replicate the formatting produced by the built in "Format SQL" option in Databricks. It remains to be seen if this is possible to do perfectly with sqlparse, but I'm hopeful.

Some ugly SQL code:

Result with the built in "Format SQL" option in Databricks
I don't like the way how Databricks UI formats SQL code. Most of my colleagues don't like it too.

pay attention to keyword formatting with the built in "Format SQL" option in Databricks

Result with the blackbricks/sqlparse - current options

[...] there is not a comparable de-facto standard way to format SQL.

I totally agree with you.

[...] to try to replicate the formatting you get when you use the "Format SQL" option in the Databricks notebook UI. Since blackbricks is specific to Databricks, using them as the canonical reference for how to format SQL could be a good idea. The benefit is that you could use the built in formatter while developing without causing large reformats.

As far as I can see, we cannot see which formatting rules Databricks UI uses. And they might change it from time to time.
Normally, we never use the built-in "Format SQL" function in the Databricks UI. We use some "external" formatting tools after we have completed the implementation:

copy SQL code from Databricks & paste it into an "external" formatter
re-format there
copy&paste back to Databricks

IMHO more people/projects would use blackbricks if SQL formatting options would be a bit more influenceable.
Right now we can not influence:

indent_type ==> TABs or SPACEs in indentation (indent_tabs [False|True]
indent_width
comma_first

So, in sqlparse you can influence these things, but blackbricks "defines" SQL formatting standards, which can not be changed/influenced.
In my previous projects we agreed on "project-own formatting defaults", put them into a config filed, shared this within the project, and the code was well formatted. And there were no changes caused by formatting options. For this we could focus on "real" changes in the code when reviewing PRs.

Nvm, I spoke too soon. sqlparse does not allow config via pyproject.toml, instead they just switched to using it within their repo.


Auto assign EKP-Ending depending on need

I've think about assigning the last 4 digits of the EKP automaticly depending on which Product is used (and if a Return-Lebel is needed)...
But I'm a bit unsure if this is a good idea, feel free to tell me what you think about it!

Adding a fixed "0101" to the EPK is not going to work for international shipments, so a more flexible solution would be appreciated. Thanks for the awesome LIB by the way...  I wish I could improve it, but I don't have a head at the moment to code after work...
Anyway I will try to implement it then, thanks for the Answer^^

It would be awesome to predefine different EKP and then let it automatically choose the right one.
Something like
$credentials->setNationalShipmentEkp('EKP account number for national shipment');
$credentials->setInternationalShipmentEkp('EKP account number for international shipment');
$credentials->setReturnShipmentEkp('EKP account number for return shipment');

and the service chooses the EKP to use depending on which product is used.
By the way .. it's EKP and not EPK =)

It would be super helpful if I know, in which case which Number should be set. I don't want to create a bad automatic-function
It's a good idea to create these functions like you mentioned @Morgy93

Hi
Isn't the accountNumber in Version 3.0 (and lower versions) just a concatenated string of the EKP + Procedure + Participant?
So the Procedure will be the second and third character in the appropriate DHL product.
Like '01' in 'V01PAK' for a 'DHL PAKET'
So the accountNumber could be something like
//VALIDATION of $product agains possible products is not implemented here. This is just an example!!
function getProcedure(string $product){
return strlen($product) ? substr($product,1,2) : '';
}
$procedure = $this->getProcedure($this->product);
['accountNumber'] = $this->ekp.$procedure.$this->participant;


ci(Mergify): configuration update

This change has been made by @CnTeng from Mergify config editor.

@Mergifyio queue default


Add more other types

reference boringavatars

Thank you @uwenayoallain!
We surely plan to do so, we are trying to make it as professional as we can so you can make it an avatar for anyone regardless of his/her position or something.


Fix for issue 9 (boolean false breaks de_dot)

This fixes issue #9 by making the existence check actually check for existence, rather than just truthiness.

Hi @tombrown52, we have found your signature in our records, but it seems like you have signed with a different e-mail than the one used in yout Git commit. Can you please add both of these e-mails into your Github profile (they can be hidden), so we can match your e-mails to your Github profile?

Sorry about that @karmi. I rewrote my commit with the proper email, and we should be good as soon as the CI is complete.

Please merge the PR or comment as to why it cannot/will not be merged. Thanks!

@tombrown52 I apologize for the slow response.  One of the reasons this isn't as pressing as it could be is that the anticipated future release of Elasticsearch will allow dotted field names again.  We will still get to this when we can review it completely and respond.

Please rebase this on the current master branch.  The API changes have different requirements.

Also, please increment the version number and the Changelog

merged in fc6018b772d470c552b202080a709f560c3cc41a


Optionally request access to email addresses on GitHub

With request_email=true a Trac instance can request access to all email addresses of the authenticated GitHub user. From these, either the primary email address will be used for the session, or a specific address can be selected with preferred_email_regex.

Right, seems like that mistake was made before and reported before in #86. Thanks for catching that. I'll update my branch.

Just tell me if you rather want me to squash the commits in the pull request to avoid unnecessary history.

At a glance, this looks fairly reasonable to me.
I think I would have just given an option for "preferred email domain" as that's the 99% use case and I don't believe the additional flexibility given by the regex is worth the extra complexity, but I don't care very much.
@rjollos Feel free to merge this PR (perhaps after requesting other changes) if it resolves #94 for you.
@raimue No strong preference about multiple commits vs. squashing. Not much activity here anyway :-)

I'll test it out and merge within the next day or so.

I think we should add some test coverage for the new features. #104 adds some mocks that may be useful toward improving test coverage.
@raimue if you'd like to add the tests this could be merged sooner rather than later. Otherwise, it may be a few weeks before I can spend time on it. You may want to wait until #104 is merged and rebase the changes before adding tests.

Superseded by #105 because that way I don't have to ask @raimue to update his branch with my changes.


Enum.to_sym for regular enums.

It's useful to write expressions like that:
value = Color::Red

case value.to_sym
  when :red
     "wine"
  when :green
     "absinthe"
end

I wanted it to simplify expressions like
when Cldr::Core::CalendarSystem::Lunisolar
   "oh no"
end

P.S.: There is no easy way to apply this to flags.

Simply use: (code here)
enum Color
  Red
  Green
end

value = Color::Red

case value
when .red?
  puts "wine"
when .green?
  puts "absinthe"
end

Using symbols sacrifices type safety: you can easily misspell a symbol, but methods are always looked up and checked.

@Arcovion wow, thanks. Doesn't know about this when syntax :)


Create rust-clippy.yml

Results: https://github.com/Chia-Network/clvm_rs/security/code-scanning?query=is%3Aopen+pr%3A73


Loss exploded on multi-speakers training

Hi, I am using the LPCNet to train vocoder on multiple speakers.
The procedure is training one model on 1st speaker for 5 epochs, and then use the "adaptation" in the code to train on the 2nd speaker for 5 epochs. Everything is good when I train the 1st speaker, loss goes to 2.7; but when I save the model and load it for next speaker (the 2nd speaker), the loss shows > 5.4 after the second epoch, and stay constant afterward.
I modify the code a little bit to incorporate the Keras "multi_gpu_model" function:
raw_model, _, _ = lpcnet.new_lpcnet_model(training=True)
if not adaptation: raw_model.summary()
if gpu_num >1:
    model = multi_gpu_model(raw_model, gpus=gpu_num)
else: model = raw_model

model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['sparse_categorical_accuracy'])

Could anyone tell me what is wrong with my training? Thank you very much!

If you read the README file, you'll see you can just concatenate all your speech from all speakers and train on the result. Don't train one epoch on one speaker and the next epoch on a different speaker. It's a lot of effort to achieve worse results.


(performance) Iterating over hash loop join should be done concurrently (single-threaded async) with futures::join

Is your feature request related to a problem? Please describe.
Currently, we are doing the following:
lookup cache -> await lookup s3 -> process hash entry -> lookup cache -> await lookup s3  -> process hash entry
Describe the solution you'd like
We should do the following:
lookup cache -> await lookup s3                                              ->  yield: process hash entry
           yield: lookup cache -> await lookup s3                                       ->  yield: process hash entry
                               yield: lookup cache -> await lookup s3-> yield: process hash entry

To better take advantage of async.
Issues:

currently, the outer body probably takes hold of a mutable references. It may be challenging to share such resources amongst loop body iterations concurrently. The solution may be mutexes but trying not to hold mutex locks across await boundaries.
Since we can guarantee that the hash keys are mutually exclusive over iterations, one way is to use a sharded hashmap e.g. https://docs.rs/dashmap/latest/dashmap/ (but we need async, in particular, tokio-compatible RwLock)

This might be over optimization if the batch-sizes are generally small and we don't have a large number of iterations. Else, its potentially very bad for large amount of cache misses.
With this optimization, we should generally process a batch in every 1 RTT for arbitrary number of cache misses.
Describe alternatives you've considered
NIL
Additional context
Related: https://github.com/singularity-data/risingwave/issues/1870

Good catch! FYI, we've previously also applied this idea in #568.

Yes, I agree with the approach of fetching all unique keys in advanced first. This can help us to avoid complicated concurrent async logic in the loop body.

+1 for this! One thing special about join is that it process one chunk at a time, while HashAgg process one barrier at a time. We can first improve next function to fetch all join states for a chunk, and later optimize it to be applied to all chunks in one barrier.
https://github.com/singularity-data/risingwave/pull/568 should also be a good example. As everything is done in a single thread, we can use Option::take to transfer ownership. Therefore, we won't use dashmap. I previously found several soundness issues in dashmap, I'm not sure if it is fully fixed for now.

Another difference between agg and join is 1 group key in agg produce corresponds to 1 row while 1 hash key corresponds to multiple rows. Anyway, would you like to give it a try? You can assign this issue to yourself if so.

Ok, but I'll wait for https://github.com/singularity-data/risingwave/pull/2357 to be merged first.

Cache locality is probably better as well if we have no awaits in the loop body.


Question about X-DFE-Encoded-Targets

Hello,
I really enjoyed this project, and was just wondering about this header.
I've noticed I can still query the api without it, however there are some apps that I cannot find in "details" requests without it.
Is there some explanation for what it is/how it is generated?
Thanks for the project!

It's a list of supported experiments, where experiments mean feature toggles (so Google can A/B test some stuff, for example a new design, or a new service, or a new feature). I'm pretty sure you can get list of most of the supported experiments along with their names if you decompile the Google Play Store (at least you used to be able to).
If I had to guess why it fails, it's probably because Google made some of the experiments mandatory to display the details page. Another guess is that they might have broken the details page when an experiment is missing due to an internal server error.


Is Angular 8 Ivy render engine going to effectively replace this project?

Apparently, Angular's new render engine, to be released within the next 3 months, will be based on incremental dom (the approach, not this library). Given that this project is not really being updated, and that there is no official template supporting for it because it cannot be built outside of the internal Google repo (https://github.com/google/closure-templates/issues/169#issuecomment-459789312), would this mean that future projects in Google who would want to use the incremental dom approach would choose Angular 8+, leaving this project obsolete?
If Angular 8+ comes with everything that incremental-dom library can do, and it is lightweight enough, I do not see why not.

?

Lol no


Add image links to the qcow2ova help

Sometimes, it is difficult to find the links for downloading the qcow2 images, this task is for documenting the qcow2 image locations to the help message as a reference.
CentOS images: https://cloud.centos.org/centos/8/ppc64le/images/
RHEL image:
RHCOS images:
/bug
/assign
/priority important-longterm

/kind feature


Silence shadow warnings

per $subject.

This looks ok to me. Out of curiosity what compiler and flags are you using?

-Wshadow
resp. -Wall -Wextra  -Wshadow -Wwrite-strings -Wundef -Wstrict-prototypes -Wunused -Wunused-parameter -Wunused-function -Wunused-value -Wmissing-prototypes -Wmissing-declarations -Wold-style-definition

there are some sign-comparison warnings left, among a few others after this, both with gcc as well as with clang. But one step at a time..

Hmmm, what's the value of these warnings?
Particularly -Wshadow and -Wunused-parameter seem counterproductive as -Wunused-parameter discourages naming parameters and shadowing variables is generally useful for keeping the scope of variables tight.

well unused function parameters should usually be removed since they are bloat, except when they are needed only in certain circumstances like in the test-template where you'd ACK that by flagging it attribute((used)).

What about cases such as lfs_file_tell and lfs_file_size, where the parameter may be used in the future?
https://github.com/geky/littlefs/blob/fd04ed4f254d9e21114d1068b39894248fccd68a/lfs.c#L1718-L1720

attribute((unused)) on a parameter just silences the warning.
The same thing holds true for attribute((used)) on e.g. a static function, it only suppresses the warning. That was my reasoning for flagging those test-template static functions accordingly, to make the intention clear.
Especially on public functions no compiler can optimize away unused arguments AFAIK.

My concern is more that function parameters are not bloat just because they are unused, since the parameters define the API and the API itself has value. A parameter can bloat an API independently of if it's used or not.

Well, even if we disagree on the value of these warnings, I'm not opposed to merging in the work you've done. Though you may want to add the warnings to the CI or I may forget about them in future modifications. :)
https://github.com/geky/littlefs/blob/master/.travis.yml#L2

For a library the API itself indeed has value.
I was just silencing the test-template so folks aren't distracted by mere noise and have a chance to actually see potentially useful warnings.
I do not dare to suggest to add -Wextra to the default travis cflags. I suppose they'd be there already if you would see value in 'em :)

On 4 February 2018 02:34:45 CET, Christopher Haster<EMAIL_ADDRESS>wrote:

geky commented on this pull request.

@@ -37,7 +37,8 @@ void test_assert(const char *file, unsigned line,

// utility functions for traversals
-int test_count(void *p, lfs_block_t b) {{
+static int attribute((used)) test_count(void *p,

lfs_block_t b attribute((unused))) {{

Thoughts on using a (void)b; statement instead? Would be portable
across compilers. (Though I realize this file is already gcc specific).
I can update it in a bit if you're not opposed.

Sure, please go ahead!
thanks,

Was able to knock out the rest of the warnings too. Will merge once the tests pass.
Thanks for the pr!

Hi @aldot, we're looking at changing the license to BSD for better compatibility with GPL v2
https://github.com/ARMmbed/littlefs/issues/59
Since you're a contributor, would you be able to let us know it's ok for us to relicense your contributions? You should have an email about this from your commit email, let me know if you didn't get it.

On Tue, 12 Jun 2018 at 04:40, Christopher Haster
<EMAIL_ADDRESS>wrote:

Hi @aldot, we're looking at changing the license to BSD for better compatibility with GPL v2
#59
Since you're a contributor, would you be able to let us know it's ok for us to relicense your contributions? You should have an email about this from your commit email, let me know if you didn't get it.

I'm fine with relicensing my previous and future contributions to
littlefs under a BSD license.
Let me state, though, that it's a pity that littlefs is not licensed
under (L)GPL.
kind regards,
Bernhard

—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.

Oh btw, did you think about supporting XIP (eXecute in place)?
Just curious..

@aldot - can I ask you to confirm the re-licensing via the email I sent? That would be really helpful!
thanks!


ValueBuffer does not release memory as expected.

It seems that Microsoft.EntityFrameworkCore.Storage.ValueBuffer does not release references to the queried models after the scope is exited when using .Include() on a referenced entity.
E.g. DbContext with ServiceLifetime.Scoped is loaded after a web api request and reads 2 models from db and each model has 2 referenced models, these 6 models will be read into the ValueBuffer.
When the second identical request occurs, the valuebuffer is still populated with these 6 models and will append 6 new identical models to the buffer.
This is clearly seen in the memory trace afer first request:

after second request:

The memory will be reclaimed when GC occurs but since the DbContext is scoped per request I believe this buffer should be retained between requests. With this behaviour when running in cloud provider with multiple .net core services with ef core the available memory will easily be consumed.
If this is expected behaviour, it would be nice with some way to disable this cache.
Sourcecode with example provided:
efcore.memory.zip
Further technical details
EF Core version: 2.2.1
Database Provider: InMemory / Pomelo.EntityFrameworkCore.MySql
Operating system: Windows 10 Pro
IDE: (e.g. Visual Studio 2017 15.9.5)

@ajcvickers Ok, I think I understand now, thank you for your time.

We are facing the same problem. What is the fix?


ValueError: mutable default <class 'alpyne.outputs._Statistics'> for field statistics is not allowed: use default_factory

Problematic Behavior
Hi!
Using the latest Alpyne, there is a problem running the StockManagementGame example. I'm guessing that there's a problem with this code in the src.zip where the image is displayed.
Models + Scripts used
src.zip
Log files
console.zip
Environment
- OS: Windows 11
- Python: 3.11
- Environment:
AnyLogic: 8.8.6

It would appear that this is a change from Python 3.11 (python.org docs) and my tests were using 3.10. I'll make a note to include the relevant change in the next bug fixes, thanks!

It works, thanks!

This problem occurs when I run my model:
alpyne.errors.ModelError: ModelError[path=, status=The underlying application failed to start. Check the logs., error=None, msg=''].
And all log files are empty. I use gis in my anylogic model, could this be the cause? Looking forward to your reply.

 Pathfinder and StockManagementGame can run normally, I build the model also appeared alpyne errors. The ModelError: ModelError[path=, status=The underlying application failed to start. Check the logs., error=None, msg= "], some on different computers can succeed. For some reason, the exported model zip file does not delete lib can solve this problem, but only partially, now I still can not run my model,

Apologies for the delay, but but it seems this issue is separate from the current one. Assuming it's still relevant, please post a new issue and attach both log files and the source/scripts if you can too.

Was getting same error, but got resolved using
in alpyne\outputs.py
class HistogramSmartData(_AnalysisObject):
count: int = 0
lowerBound: float = 0.0
intervalWidth: float = 0.1
hits: list[int] = field(default_factory=list)
statistics: _Statistics = field(default_factory=_Statistics) # new line


Feature Request: Option to show example code in all examples in the Flutter Gallery App

I browse the Flutter Gallery app to find working examples of code I would like to use. It would be nice to be able to see what code created the example, minus the boilerplate if possible, right from the app. I've seen a few places where that was there, but it allows learning on the go and quicker development.

Perhaps a link to GitHub would do. This would open Chrome and show the directory that contains the source.

Works for me!

On Jul 12, 2018, at 10:58 AM, Günter Zöchbauer<EMAIL_ADDRESS>wrote:
Perhaps a link to GitHub would do. This would open Chrome and show the directory that contains the source.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub https://github.com/flutter/flutter/issues/19315#issuecomment-404597575, or mute the thread https://github.com/notifications/unsubscribe-auth/AV-HfeHgeXea1XzoN6ImQEBJDKQbs-g8ks5uF45BgaJpZM4VNdCC.

Hi @zoechi
You can now see code examples in new gallery https://gallery.flutter.dev/#/demo/bottom-navigation
if you disagree please write in the comments and I will reopen it
Thank you


Configure unique_id() so entities can be edited in HA UI

Replace entity_id with unique_id so that the entities can be renamed and configured in the Home Assistant UI.
Additionally, add device_info in case this is ever migrated from using configuration.yaml for credentials (async_setup_platform()) to using config_flow (async_setup_entry()). This would allow a parent "device" to contain both sensor and fan entities.

Any ideas how to preserve the previous entity id.

Any ideas how to preserve the previous entity id.

It should already be doing that: When you set the unique id, HA will default the entity id to the same value as the unique id  (but now allow you to change it in the UI should you want the entity id to be something different).

I too expected that but that does not seem to be happening. My previously added devices now appearing with the Entity id of something like "fan.winix_basement" instead of the id based on mac address.

That usually happens if you have a duplicate "unique" id, for example if your fan and sensor had the exact same id, or if you're manually adding the entity via a .yaml file with that id.
Perhaps as a test, append something different/unique to strings in fan.py and sensor.py and see if you get the correct entity names on restart?
It's working ok for me:

I appended to _unique_id
self._unique_id = f"{DOMAIN}.{WINIX_DOMAIN}_{wrapper.info.mac.lower()}_dd"
and got new ids but based on name

What is your HomeAssistant version?

I’m running 2021.3.4.
You have different ids for the fan and the sensor right?

Yes, this is from core.entity_registry.

I will try the changes in another clean installation. This is definitely an improvement; I just wanted to avoid a breaking change.

entity_platform._async_add_entity eventually adds the entity and it uses name as the suggested_object_id if entity_id is None.
This explains why I kept seeing entity_id based on name.
entity_id is defined as None
So if we can set self.entity_id = self._unique_id
I did some testing in a Docker image with just Winix integration.

Using your changes
I commented Winix configuration, started HA, deleted Winix devices, restarted HA and got.

2021-03-23 10:25:48 INFO (MainThread) [homeassistant.helpers.entity_registry] Registered new fan.winix entity: fan.winix_basement
2021-03-23 10:25:48 INFO (MainThread) [homeassistant.helpers.entity_registry] Registered new fan.winix entity: fan.winix_living_room
2021-03-23 10:25:48 INFO (MainThread) [homeassistant.helpers.entity_registry] Registered new sensor.winix entity: sensor.winix_basement
2021-03-23 10:25:48 INFO (MainThread) [homeassistant.helpers.entity_registry] Registered new sensor.winix entity: sensor.winix_living_room

Commented Winix configuration, started HA, deleted Winix devices to get a clean start.
Adjusted fan and sensor to set entity_id
Restarting HA now gave this

2021-03-23 10:30:06 INFO (MainThread) [homeassistant.helpers.entity_registry] Registered new fan.winix entity: fan.winix_847207352ce0
2021-03-23 10:30:06 INFO (MainThread) [homeassistant.helpers.entity_registry] Registered new fan.winix entity: fan.winix_8472073580df
2021-03-23 10:30:06 INFO (MainThread) [homeassistant.helpers.entity_registry] Registered new sensor.winix entity: sensor.winix_qvalue_847207352ce0
2021-03-23 10:30:06 INFO (MainThread) [homeassistant.helpers.entity_registry] Registered new sensor.winix entity: sensor.winix_qvalue_8472073580df

Ah, that explains why it worked for me I guess (because I first had the existing version, which set the entity_ids, and then once I modified them to set unique_id instead it retained them).
Should mean the change is safe/not a breaking change at least I think? For new installs, they'll use the "name based" ids without the MAC address; for existing installs they should retain the existing IDs when upgrading.

This is a breaking change. I could only retain my previous entities if I included self.entity_id = self._unique_id.

Can we resolve the outstanding issues in this merge?

Apologies, just seeing your last reply. What issues are outstanding? I think this is ok to merge as is, especially if we make a note that the entity names may change on upgrade.

Apologies, just seeing your last reply. What issues are outstanding? I think this is ok to merge as is, especially if we make a note that the entity names may change on upgrade.

I would like to avoid change in entity id.
My last suggestion was to set entity_id to the same value as _unique_id ..
        self._unique_id = f"{DOMAIN}.{WINIX_DOMAIN}_{wrapper.info.mac.lower()}"
        self.entity_id = self._unique_id


Replace netstandard1.0 and netstandard1.3 with netstandard2.0

Description
Target .netstandard2.0 instead of netstandard1.0/netstandard1.3
Related issue
Fixes AB#1585589

@nohwnd there's UWP discussion open I think, what to ship in the nuget.

For the record, the problem wouldn't be on TP side as it's not injected onto UWP but problem will happen for Test Frameworks. For example, we won't be able to ship new versions of MSTest still supporting these old versions of UWP as we will no longer have the correct netstandard for ObjectModel and related objects.
@Haplois to correct me if I misunderstood your concern.

Said versions are already retired in general access branches

what does it meam?Can you elaborate?

Said versions are already retired in general access branches

what does it mean?Can you elaborate?

They are already retired in consumer and enterprise editions, only supported channel is LTSC.

We discussed the issue in a team meeting and decided to move forward with this change.
@Haplois @MarcoRossignoli @nohwnd I'd like to have 3 approvals on this one if you have some time.


Fixed recursive send bug. Now files can be sent even if they are smaller then the FILE_CHUNK_SIZE

from err = send(); to err = _response->send();

@hitecSmartHome : if @hoeken agrees with, I would also be in favour for drastically reducing the FILE_CHUNK_SIZE (to 1024 maybe ?) - but in another PR.
8K is very high especially if serving requests concurrently. I think it is best to keep a low number by default that will work most of the cases and leave the opportunity to users to increase it if they have the ability to do so.

Also, i've changed the target branch to v2 ;-)

Yeah, I have also changed it in my version to
#ifndef FILE_CHUNK_SIZE
  #define FILE_CHUNK_SIZE 1 * 1024
#endif

Also, i've changed the target branch to v2 ;-)

Sorry, I didn't see that I was creating the pull against the V1


Citadel 1.20.4

This is one that will probably require some review as there are several new ways things can interact with reinforcements. I think I caught them all but obviously testing is a good idea.

I'm not really reviewing the 1.20 PRs right now, we will test them all together later anyway, I just want to get them in one place. Would you be able to resolve the merge conflicts?

Thanks


Switch reviews to using data-hub docmaps

reworking any assumptions about docmap parsing

The author-response part has been added to the Data Hub Docmaps API response, so if that was the only thing blocking this ticket, it should be resolved now. If there is anything else I can do for you, please let me know.

The author-response part has been added to the Data Hub Docmaps API response, so if that was the only thing blocking this ticket, it should be resolved now. If there is anything else I can do for you, please let me know.

@HazalCiplak
Actually, this ticket was the biggest blocker I had noticed: https://github.com/elifesciences/data-hub-issues/issues/612
If you're able to take a look at that one at some point soon, that would be great. Please let me know if not though, Thanks!

Actually, this ticket was the biggest blocker I had noticed: https://github.com/elifesciences/data-hub-issues/issues/612

I wasn’t aware of this issue, I've added it into Data Hub board and will try to have look into this today

This ticket was in review but moved to backlog so we can focus on clearing other work which will free up the team to support this task.

Blocked while DataHub resolve missing data (WIP)


store start time before running tests

Should fix the issue of output being ignored because the output was modified before the start time

closing in favor of #94


added sources jar

if this is properly working we should add it to the template and may apply this for all market product (task for team octopus).

it's just for the artifacts which are plain "JARs" generated out of ivyprojects:iar types.
So we can't add it to the general template

if this is properly working we should add it to the template and may apply this for all market product (task for team octopus).

@alexsuter it's just for the artifacts which are plain "JARs" generated out of ivyprojects:iar types. So we can't add it to the general template

@ivy-rew I am not sure, but it looks that it also worked for the mail connector:


lifecycle-operator v0.4.0 missing

docker pull ghcr.io/keptn/keptn-lifecycle-operator:v0.4.0 is missing and doesn't work.

docker pull ghcr.io/keptn/keptn-lifecycle-operator:v0.4.0 is missing and doesn't work.

Hello Adam!
Did you use the provided manifest?

Indeed. Don't just change the version number :) Sorry


(DOCS-4573) Update create an integrations docs

What does this PR do?
Updates the setup instructions for creating an integration
Motivation
DOCS-4573
Preview
You can preview the docs changes here.
Review checklist (to be filled by reviewers)

[ ] Feature or bugfix MUST have appropriate tests (unit, integration, e2e)
[ ] PR title must be written as a CHANGELOG entry (see why)
[ ] Files changes must correspond to the primary purpose of the PR as described in the title (small unrelated changes should have their own PR)
[ ] PR must have changelog/ and integration/ labels attached
[ ] If the PR doesn't need to be tested during QA, please add a qa/skip-qa label.

I just realized I need to make some changes here. Rework incoming

This is ready for review again


Appending existing arrays in npz-files

Right now, if one opens a npz-file in "append"-mode and saves an array into it, it is always added as a new array - even if an array with the same name already exists - rather than appending an existing array. It would be cool if cnpy could support appending already existing arrays within an npz-file (just as it is currently supported for npy-files).

I believe the main hurdle is that the npz file saves its arrays 'packed' in memory, for instance a file is laid out      | HDR | A | B | C | FTR |
Appending to A would require either moving A to the end and appending, or shifting B,C, and FTR to make space for the append on to A.


Allow additional props to topmost component on server render

Added the ability to send additional properties to react components
rendered on the server.  They are added via the req.additionalProps
object and accessed via this.props on the top most component

This is a pretty much dead project and when it does get used, the uses cases are pretty specific. So I'm just going to close this out.


Resizing psudotiled window only affects it's "tilied" size

One common usecase of resizing pseudotiled windows for me is making a single window narrower on ultrawide screen, without making it floating. It's something that I used a lot on bspwm, and, sadly, it seems to be impossible on Hyprland.
It looks like on hyprland in dwindle layout resizewindow for tiled windows controls window's borders relative to other windows, and only in the direction it was split. So it resizes like a tiled window, but actual window size depends on the size of it in floating mode, making it impossible to change, at least with a mouse.
However, in bspwm, window size for pseudotiled windows actually controlled "floating" size, and instead it's "tiled" size was impossible to change directly. However, you could still force the pseudotiled window into a smaller window or give it more space if you resize other windows, so both were possible.
Sorry If I'm vague, it's kinda hard to explain. If my explanation is not good enough, just play around with pseudotiled windows in bspwm and in Hyprland and you'll see what I mean.
What I'm getting at: would it be possible to change the behavior of resizewindow for pseudotiled windows, so it would change window's "floating" size? Or add another, specific mouse bind to specifically only interact with floating size of windows?
I could try to make a PR if that's a desirable feature, but I don't know if I'm capable.

if I understand this correctly this has been long fixed


Multiple Application Links on Bitbucket Server override one another

Hello,
We've got multiple drone deployments pointing to the same Bitbucket Server.
The issue is that these application links seem to override one another. Creating / Updating one seems to alter/squash the other.
Is there a workaround here? Can we change the name of the Application Link and the name of the Service Provider maybe?

Worked around this error by changing the value of DRONE_STASH_CONSUMER_KEY to something unique


Crash

crash-2022-08-25_13.23.49-client.txt
crash-2022-08-25_13.23.32-client.txt

Sorry, I added the 1.19+ version, because filenames were not the same.


Prompt dialog text not showing up in the activity logs

System Information

SDK language - C#
SDK version - 3.0
Development environment - localhost

Issue Description
I have setup TableLogger to log all activities to the Table Store. I get all text messages that represent the conversation fine, but the one where a prompt was involved, I am getting an empty string from the logs (the prompt in this case is supposed to show a spelling corrected response). I have used the following snippet:
PromptDialog.Confirm(                             context,                             OnConfirm,                             $" Did you mean - {tuple.Item1}?");
The root dialog is a LuisDialog

Hello, Have you resolved this issue on your own or do you still need help?

No, I haven't yet found a way to address this. This is particularly needed in proactive dialogs where the prompt text is dynamic and it would important to log/analyze that offline.

Thanks for the update @ManojG1978
Can you provide an example?

This is the snippet I am using. Here I am using Azure Table Storage as the conversation activity/audit log. The logs are generated by registering the TableLogger (in Microsoft.Bot.Builder.Azure namespace) as a provider for IActivityLogger.  My  limitation is using AsMessageActivity() to get the conversation text and it does not work for Prompts. Any alternative/work around would be appreciated. Thanks for responding.
`const string partitionKey = "<>;
        var storageAccount = CloudStorageAccount.Parse(
            CloudConfigurationManager.GetSetting("StorageConnectionString"));

        var tableClient = storageAccount.CreateCloudTableClient();

        var table = tableClient.GetTableReference("activitylogs");

        var query = new TableQuery<TableLogger.ActivityEntity>()
            .Where(TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, $"emulator|{partitionKey}"));

        foreach (var entity in table.ExecuteQuery(query))
        {

            Console.WriteLine("{0}, {1}\t{2}", entity.From, entity.Recipient,
                entity.Activity.Type);
            if (entity.Activity.Type == "message")
            {
                Console.WriteLine(entity.Activity.AsMessageActivity().Text);
            }
        }`

Hoping that issue has been resolved and closing it. Feel free to reopen for any questions.

So where is the solution?

Struggling with the same issue here

I think, the PromptDialog renders an Activity using a hero card, so it's prompt text doesn't appear in Activity.Text property, but in Activity.Attachments, which contains a card. You'll have to either add special logic to find its prompt text in the card for such activity, or use ReplayTranscript like this:
var source = Conversation.Container.Resolve<IActivitySource>();
var replay = new ReplayTranscript(context);
await source.WalkActivitiesAsync(replay.Replay,
    "telegram" /*or other channel id, or null*/,
    conversatinId /* or null */,
    oldest: showAll ?
        DateTime.MinValue :
        DateTime.UtcNow.AddDays(-lastDays));


Mounted resource persistance

I was pleased to see mounted resources persist through a re-boot (provided at least the password was available in the saved logon). Then to discover they would not survive the device simply being put to sleep and waking back up?

Looks like Chrome 70 has fixed this (even though WiFi still disconnects when sleeping).
Need the Display Name addition even more now as while Native SMB Shares may be working(?) it says "This share isn't supported(?)" for a Linksys EA9300 used as an Ethernet to USB adapter.

Chrome OS Version 74.0.3729.159. Mounted resource still not persistent after reboot. I select the "Keep" option and settings are saved as long as I don't log out or restart the Chromebook. The Chromebook is a member of GSuite, does this make a difference.?


mudTable, How to set default/Initial sort field

I want when load server side data default order by Id desc. but I don't like this id field shown in the table .

If im understand true, you want to sort by id but you dont want to show id numbers.
You can look at his tryMudBlazor:
https://try.mudblazor.com/snippet/wYGFaBbbRNLwFlPw
If you delete the id column an row definition and only add a sortLabel the to the end of header content (be sure to make SortIcon to null, so nothing is visible), table will sorted default by id desc, but id section is not visible also.

it's OK, thanks

Always welcome.