Update service domains for xiaomi_miio from base domains to xiaomi_miio domain

Breaking Change:
This change breaks existing service call references to the services defined in the xiaomi_miio integration by moving the services out of the base domains into the integration domain.
Description:
Update the domain and service name for xiaomi_miio services. See this comment for context: https://github.com/home-assistant/home-assistant/pull/28890#issuecomment-558485691
Related issue (if applicable): Related to #27289
Pull request with documentation for home-assistant.io (if applicable): 11330
Checklist:

[x] The code change is tested and works locally.
[x] Local tests pass with tox. Your PR cannot be merged unless tests pass
[x] There is no commented out code in this PR.
[x] I have followed the development checklist

If user exposed functionality or configuration variables are added/changed:

[x] Documentation added/updated in home-assistant.io

If the code communicates with devices, web services, or third-party tools:

[x] The manifest file has all fields filled out correctly. Update and include derived files by running python3 -m script.hassfest.
[x] New or updated dependencies have been added to requirements_all.txt by running python3 -m script.gen_requirements_all.
[x] Untested files have been added to .coveragerc.

resolved conflicts, this is due to me changing this file in multiple branches and another PR that came in for this component

This is great, thanks for doing the work! In case no one else appears to test these, I'll try to do so over the weekend and get this merged then.

@rytilahti please review/test if you haven't already. I made a lot of service changes across a significant number of integrations and this is the only one remaining. I think it would be best to release all of the breaking changes in one release so that users only feel the pain once, and I don't want this one to miss the cutoff.
CC @balloob


Can the pagination buttons be removed from the horizontal scroll bar table container?

When the ajax_datatable's columns cannot fit onto the screen, a horizontal scroll bar appears to scroll to the right-most table columns. However, the pagination buttons are in that container as well. Is there a way to move the pagination out of the table container, below?

usure how it looks like on your device, I have hide my scrollbar in the main CSS for other reasons with   ::-webkit-scrollbar{     display: none !important;   } so I don't see any disruption with wide tables.. Also my table is in <div class="container-fluid py-5">


Fix DL1 EventSource

Small changes to tools and bugfixes in order to work with the DL1EventSource

Fix #1545 adding a new method to SubarrayDescription
Fix event generation in the DL1EventSource: Every second event was skipped, because the iterator was advanced twice. That's a huge bug if it didn't work for some random other reason before
Rename dl1eventsource.mc_headers to dl1eventsource.simulation_config in line with the changes to the SimtelEventSource and container structure changes. To make this behave the same way the SimtelEventSource does when using e.g. the stage-1 tool, this returns a single container if the file contains only one simulation run. This makes it somewhat inconsistent for merged files, but I think there a a lot of things to clean up anyway for us to fully support merged dl1 files consistently.
Add tests using the stage1 and muon reconstruction tools on dl1 files

This is marked for 0.10.1, but also says "API change". I see only that the mc_header attribute changed to simulation_config (as it should, this was missed in the previous release).  I think that is less of an  API change than a API bugfix, since the API for EventSources already had that attribute (it was just missed in the last version of DL1EventSource).  Are there other larger API changes here? Or can we remove that tag, so it can go in 0.10.1 vs 0.11.0?

This is marked for 0.10.1, but also says "API change". I see only that the mc_header attribute changed to simulation_config (as it should, this was missed in the previous release). I think that is less of an API change than a API bugfix, since the API for EventSources already had that attribute. Are there other larger API changes here? Or can we remove that tag, so it can go in 0.10.1 vs 0.11.0?

I think thats all, so API bugfix might be more accurate


why

why my g_loss is still very high and d_loss is very low after 300 epochs
my dataset photo is car like this

but the generate photo like this

Do I need to manually modify the code to make the model converge


Stricter Qt/GUI separation of files

🧰 Task
Although I think currently we have separated files/functions that directly import Qt, there are functions that do not make sense headless (e.g., _viewer_key_bindings) that are still being imported in headless mode. Also files that do not make sense without a GUI (e.g., napari/components/_viewer_mouse_bindings.py) live with the non-GUI files.
This was noticed because in https://github.com/napari/napari/pull/4991#issuecomment-1811769245 that in headless CI's the following import trace caused an import error:
  napari/conftest.py:61: in <module>
      from napari.components import LayerList
  .tox/py39-linux-headless-no_cov/lib/python3.9/site-packages/_pytest/assertion/rewrite.py:186: in exec_module
      exec(co, module.__dict__)
  napari/components/__init__.py:24: in <module>
      from napari.components import _viewer_key_bindings  # isort:skip
  .tox/py39-linux-headless-no_cov/lib/python3.9/site-packages/_pytest/assertion/rewrite.py:186: in exec_module
      exec(co, module.__dict__)
  napari/components/_viewer_key_bindings.py:5: in <module>
      from napari.components.viewer_model import ViewerModel
  .tox/py39-linux-headless-no_cov/lib/python3.9/site-packages/_pytest/assertion/rewrite.py:186: in exec_module
      exec(co, module.__dict__)
  napari/components/viewer_model.py:66: in <module>
      from napari.plugins.utils import get_potential_readers, get_preferred_reader
  .tox/py39-linux-headless-no_cov/lib/python3.9/site-packages/_pytest/assertion/rewrite.py:186: in exec_module
      exec(co, module.__dict__)
  napari/plugins/__init__.py:7: in <module>
      from napari.plugins import _npe2
  .tox/py39-linux-headless-no_cov/lib/python3.9/site-packages/_pytest/assertion/rewrite.py:186: in exec_module
      exec(co, module.__dict__)
  napari/plugins/_npe2.py:27: in <module>
      from qtpy.QtWidgets import QWidget

Should we be stricter in separating GUI related functions?
cc @DragaDoncila

Also files that do not make sense without a GUI (e.g., napari/components/_viewer_mouse_bindings.py) live with the non-GUI files.

These files do not have sense without GUI, but have sense with a different backend than Qt. For example, Jupyter one that is on our target list.
But may some thing need to be moved

These files do not have sense without GUI, but have sense with a different backend than Qt.

Yes good point. Maybe the aim is to avoid importing files/functions not required in headless mode, which I think is reasonable. It may be difficult to achieve though. Potentially we could have 3 part separation:

common files
GUI specific
Qt specific

I don't know the code base enough, how achievable is this?

Jupyter one that is on our target list.

Maybe such separation would also aid file structure/clean-ness if/when we were to add another backend?

We have import-linter configuration
https://github.com/napari/napari/blob/596d74d00beff2b9ca5ed7bdc07c1e987dff76ca/setup.cfg#L200-L232
But I do not see when it was removed from CI.

I agree it would be really good to ensure that there are no Qt imports other than in the base namespace (napari/) and in napari/_qt/.

I think this is mostly being achieved. This issue is more about GUI specific functions that do not import Qt. E.g., it seems _viewer_key_bindings would not be needed in headless mode but it does not directly import Qt so it is being imported in headless mode.

But I do not see when it was removed from CI.

@Czaki I think you did add it to CI in: #2878 and I think it is still there?

No Talley removed it in #3717
And no reviewer noticed that not all steps are executed on pre-commit ci.

Pre commit.ci runs only steps that are executed when create commit. It does not run check that are in manual step.
And we decide to not run lint check always as the errors may be not readable for all


Fix the expand icon calculation logic in Button.

Fix the expand icon calculation logic in Button. Partially resolves #59202, it works well, as the texture is well centered in the vertical direction when the text is not empty.

The texture can not be centered when the height value is too small and the text is empty, probably due to loss of precision when converting float to int. But I'm not sure where it happens.
The last thing worth noting is that the minimum achievable scale size is highly correlated with the font size, even if the text is empty. So, if you want a small texture size, you need to make the font size small enough. I'm not sure the specific design requirements, just adjusted some logic.
Should we make the texture keep aspect, or follow other rules?

Maybe you should explain what this PR does and how it works (for example by providing some video to show)?

Is this fixing an existing issue? #59202 Perhaps? You can indicate that a PR will close a certain issue by writing, for example.

Fixes #

There are a number of these keywords, see here: https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue
Explaining a bit about what you did in the PR and perhaps an image or GIF showing the fixed behaviour also goes a long way, as Chaosus said.

@Chaosus @EricEzaM Yes, the video pictures can make the description more intuitive. Do you have any good tools to recommend on the linux platform.

Do you have any good tools to recommend on the Linux platform.

Probably one of the recorders listed in here: https://itsfoss.com/best-gif-recorder-linux. On Windows (which I'm using), the screentogif serves me the best.

Do you have any good tools to recommend on the Linux platform.

Probably one of the recorders listed in here: https://itsfoss.com/best-gif-recorder-linux. On Windows (which I'm using), the screentogif serves me the best.

Thanks, I will try it.

Thanks again to @Chaosus  for the recommended tool, peek. Now it behaves like in the GIF image above.

@Chaosus @EricEzaM OK, now I think it would illustrate the main purpose of this patch. Please review. I feel like I found the cause of the problem in #59202 . Should I fix it in this PR, or open a new one?

Before:

After:

When the size is the smallest, modifying the properties, now the arrow icon will not appear outside the button.

Now, it fixes #59202 by adding a callback method.
The method will return the width caused by the properties beside those in button.

Superseded by #64351.


docs(whitepaper): add a section of APIs and communication protocols

This pull-request is mainly modified from PR#160 , but slightly changed from that PR (newly adding an API table of Verifier and Validator)
Signed-off-by: Takuma TAKEUCHI<EMAIL_ADDRESS>

Note that this pull-request is linked with the issue-list https://github.com/hyperledger/cactus/issues/178

Thanks for your comment, Peter! I made a new pull-reflect reflecting your comment #179
Then I close this old pull-request.

@takeutak Thank you! Did you see my other comments though? There were maybe 5 or 6, can't remember the exact number, not just the one about the table of contents.

Thanks for your comment, Peter!  I fixed not only the contents table number but the section numbers.
If there is another formal problem, I would like to push my another pull-request after this pull request is approved.

Thanks for your comment, Peter! I fixed not only the contents table number but the section numbers.
If there is another formal problem, I would like to push my another pull-request after this pull request is approved.

@takeutak These are the comments I meant during the call, they are visible if you navigate to the old #160  PR and scroll down a bit.
This is how it looks when I go to #160 but it may be presented in some different format on your side because you are the PR author, but I'm not sure to be honest.
For reference, see screenshot below:

I fixed the whitepaper changing /v1/... to /bl-api/vi/... reflecting your advice, Peter.
"bl-api" means "business logic plugin's api" since only "api" does not specify what type of API.
If you had written other comments on my old pull-request #160 , would you mind if you paste them in the new pull-request?
I cannot see your comments on my old pull-request #160 .

I fixed the whitepaper changing /v1/... to /bl-api/vi/... reflecting your advice, Peter.
"bl-api" means "business logic plugin's api" since only "api" does not specify what type of API.

Any chance that it could be /api/v1/bl/.../ instead?
Reasoning: I'm advocating for using the greater to smaller hierarchical organization of the path elements so that what's on the left is a super-set of what's on the right when comparing any adjacent path elements. In other words: All APIs are APIs, some of them might be bl or some-other-type-of-api but they are both APIs anyway so the /api/ is the super-set for both either way.
In practice all this boils down to the fact that calling it /bl-api/... breaks the path matching logic that assumes that all APIs are APIs by doing a runtime check on an HTTP requests path such as req.path.startsWith("/api/").
I know this doesn't seem like a big deal because you could just say that now we check it like
const isApiReq = req.path.startsWith("/api/") || req.path.startsWith("/bl-api/");

Which would of course work, but it is increasing the number of if conditions (implicit or explicit, doesn't matter) in the code linearly scaling up with the number of different APIs that we will invent in the future (which I expect to be unbounded given our design principles strongly favoring extensibility/flexibility/pluggability/etc.)
In general, I'm always out on a quest to eliminate if conditions in code when possible because they are slippery slopes leading to arrow programming in it's worst, but even when used moderately they are increasing the number of valid execution paths the code can take exponentially since if conditions open up separate branches of the decision tree as the code execution if progressing. (of course there are justified uses of if conditions since without them most software would be pretty useless, but you get the point)
It's impossible either way to prove correctness of any non-trivial software because of the combinatoric explosion, but that doesn't mean we shouldn't strive to keep the number of possible states/branches to a minimum because it also makes it much easier for humans to digest the code and what it does.
One of my beliefs is that every non-trivial code-base that is actively being worked is constantly on the edge of a cliff above the canyon of unmaintainable code (some call this technical debt, but I don't like finance terminology creeping into software engineering which I consider to be closer to a form of art than economic sciences)
I know this is getting super abstract and kinda off-topic, but I wanted to make sure I explain my thoughts on this in detail because whenever I talk about things like this I'm always self-conscious about it looking like dumb hair splitting/preaching dogmas (like who cares about two extra characters in the request path, right?).

If you had written other comments on my old pull-request #160 , would you mind if you paste them in the new pull-request?
I cannot see your comments on my old pull-request #160 .

Yeah I had like 5 or 6 of them.
That's pretty annoying that reviews just disintegrate when a PR is closed, especially because some PRs I've seen were re-opened 3-4 times so shoveling over all reviews every time to each new PR that gets opened is going to be a pain and something that will scale very poorly as the community/PR count grows.
So, I opened a support request with Github, hoping they'll say something that's helpful in providing you with the review comments without me having to re-do all of them.
In the meantime, here are all the comments of mine from the previous PR (Github support might take a while, their auto response said they de-prioritize tickets because of the virus and their reduced staff).

As Peter's comment on Cactus meeting, I fixed my pull-request (from /bl-api/v1/ to /api/v1/bl/ )

Oops, there's a conflict in the table of contents because of the other whitepaper PR I just merged in a minute ago.
@takeutak I'll update the TOC and push a change with that onto your branch (just the TOC, rest of the content won't be touched)


fixes for EXTERNAL, launch failures

Correctly failing the Trike-dev deploy: https://github.com/mbta/trike/actions/runs/5269734970

Tagged v1 and v1.22.


DGCBarcodeDecoder fails to decode a valid 1.0.0 test result

DGCBarcodeDecoder fails to decode a valid test result which is created using "1.0.0" schema. In particular, field "dr" (Date/Time of Test Result) was valid, but optional field in schema "1.0.0", it is removed in schema "1.3.0". As a result, the decoder now fails. Would it be possible/feasible to support older schemas in addition to "1.3.0"?
Exception
se.digg.dgc.payload.v1.DGCSchemaException: Failed to decode DCC from CBOR encoding
at se.digg.dgc.payload.v1.DigitalCovidCertificate.decode(DigitalCovidCertificate.java:258) ~[dgc-schema-1.0.1.jar:na]
at se.digg.dgc.service.impl.DefaultDGCDecoder.decode(DefaultDGCDecoder.java:71) ~[dgc-create-validate-1.0.1.jar:na]
UnrecognizedPropertyException: Unrecognized field "dr" (class se.digg.dgc.payload.v1.TestEntry), not marked as ignorable (10 known properties: "tt", "tg", "ma", "ci", "is", "co", "tr", "nm", "sc", "tc"])"
Test data
https://github.com/eu-digital-green-certificates/dgc-testdata/blob/main/BG/2DCode/raw/5.json
Schemas
1.0.0: https://github.com/ehn-dcc-development/ehn-dcc-schema/blob/release/1.0.0/DGC.combined-schema.json
1.3.0 (dr is missing): https://github.com/ehn-dcc-development/ehn-dcc-schema/blob/release/1.3.0/DCC.combined-schema.json

We'll try to add some sort of "ignore" flag for attributes that have been removed from older versions.

Hi Martin,
Would configuring CBOR mapper inside DigitalCovidCertificate to cborMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); do the trick in this case?


[VL] Daily Update Velox Version (2024_06_01)

Upstream Velox's New Commits:
e99972bb9 by Bikramjeet Vig, Consolidate all sites that can hash a value inside a vector (9963)
d071c031c by Ke, Verify data written by TableWriter (9987)
0b4f3e27a by yingsu00, Fix Parquet V2 page reading when max def/rep levels are 0 (9939)
05c2925e0 by Jimmy Lu, Fix crash when select count(*) from table with delta delete (9984)
76424c0de by Masha Basmanova, Pre-allocate error vector in TRY (9986)

Closing as it is covered by 06/03 update.


Resx generator generate bad assemblies for release configuration

Repro is in attachment with build artifacts if needed.
Expected: debug and release configurations print Hello from text file
Bug.zip
> dotnet --info
.NET Command Line Tools (1.0.1)

Product Information:
 Version:            1.0.1
 Commit SHA-1 hash:  005db40cd1

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

> dotnet run --project ResxTextFiles\ResxTextFiles.csproj
Hello from text file

> dotnet run -c Release --project ResxTextFiles\ResxTextFiles.csproj
TextFile1.txt;System.String, mscorlib, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8

Fixed with #4420.


[22.11] ruby: 2.7.7 -> 2.7.8, 3.0.5 -> 3.0.6, 3.1.3 -> 3.1.4

Description of changes
Incomplete backport of https://github.com/NixOS/nixpkgs/pull/223916
Unsure about how to backport the patch section yet
Things done

Built on platform(s)

[ ] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
23.05 Release Notes (or backporting 22.11 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[ ] Fits CONTRIBUTING.md.

ruby and ruby_3_0 seem to build now, but for ruby_3_1 I'm getting this build error:
...
shrinking /nix/store/n3v18kybab49hxfyz06y45gy0xirjhr8-ruby-3.1.4/lib/ruby/gems/3.1.0/extensions/x86_64-linux/3.1.0/debug-1.6.3/debug/debug.so
shrinking /nix/store/n3v18kybab49hxfyz06y45gy0xirjhr8-ruby-3.1.4/lib/ruby/gems/3.1.0/extensions/x86_64-linux/3.1.0/rbs-2.7.0/rbs_extension.so
shrinking /nix/store/n3v18kybab49hxfyz06y45gy0xirjhr8-ruby-3.1.4/lib/ruby/gems/3.1.0/gems/debug-1.6.3/lib/debug/debug.so
shrinking /nix/store/n3v18kybab49hxfyz06y45gy0xirjhr8-ruby-3.1.4/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/lib/rbs_extension.so
gzipping man pages under /nix/store/n3v18kybab49hxfyz06y45gy0xirjhr8-ruby-3.1.4/share/man/
strip is /nix/store/9nj6qjqp0d25giirzj9f0k35g2s58g0h-gcc-wrapper-11.3.0/bin/strip
stripping (with command strip and flags -S) in  /nix/store/n3v18kybab49hxfyz06y45gy0xirjhr8-ruby-3.1.4/lib /nix/store/n3v18kybab49hxfyz06y45gy0xirjhr8-ruby-3.1.4/bin
patching script interpreter paths in /nix/store/n3v18kybab49hxfyz06y45gy0xirjhr8-ruby-3.1.4
checking for references to /build/ in /nix/store/n3v18kybab49hxfyz06y45gy0xirjhr8-ruby-3.1.4...
RPATH of binary /nix/store/n3v18kybab49hxfyz06y45gy0xirjhr8-ruby-3.1.4/lib/ruby/3.1.0/x86_64-linux/enc/trans/transdb.so contains a forbidden reference to /build/

Unfortunately NixOS 22.11 has reached its end-of-life status on 2023-06-30, one month after the release of NixOS 23.05.
I'm closing this pull request, since we do not accept any changes to its branches anymore.


Fixed spelling error in Opened Editors - #233282

I think this use of edt is intentional. It is a special prefix you enter in Command Center to access a set of editor-related commands.


Support for rotation with 2 trackers on each end of DIY controller with no IMU

I was wondering if doing that would at all be possible, I kind of only have one move controller, I can somewhat do the position with a coloured ping pong ball on a flashlight, but lack the IMU, surely a 2 ended controller would be able to make rotation work with no IMU, it would surely make making DIY virtual controllers way easier

2 bulb orientation tracking is planed for the future. But an IMU is always required due to optical tracking being slow.
You can add your own IMU very easily:

Use a Phone with owoTrack.
Use ESP and IMU using SlimeVR firmware (follow the DIY SlimeVR setup, but use OpticalSlimeVR firmware here.

The best option would be another PSMove controller, they are very cheap on ebay. I recommend getting PSMove Gen1 with magnetometer because you dont have to re-center them everytime.
Check Compatible Devices for more information.
As for other 3rd party controllers or devices (JoyCons, Wiimotes etc.) people can add plugins for VDM when VDM gets a plugin system in the future. VDM itself right now is in very early stages so expect things to change.

Also VDM only supports PSMoves button inputs for now, this will change in the future as well.

In order to support rotation with 3 degrees of freedom rotation, you'd need 3 trackers not 2 because a triangle has an orientation, but a line segment doesn't.
I was planning on making some DIY trackers with no IMU & 3 bulbs & using this service, but also my own code.
Do you know why the optical tracking is slow? I.E. where in the tech stack the lag is?

You can do 2-bulb tracking which allows only 2-DoF (depending on the setup). Which can still be useful, with, and without IMU. 3-Bulbs create 3-DoF of course.
The reason why optical tracking is slow is because of varying frame rates. The max you can possibly do is 60Hz with PSEyes at 480p. In addition, the tracking is very noisy so low pass filters are applied which adds latency on top of that. Of course, you can crank up prediction settings to reduce the latency but it will add over-prediction and quick movement.
Im planning to add an Optical+Accelerometer feature to eliminate optical input lag in the future.

Do you have any update on when the Optical+Accelerometer filter will be implemented?

Its done when its done.


HMAC signature cannot be verified

Hello,
I'm trying to configure hmac-auth and wrote some script :
#!/usr/bin/perl

use strict;
use warnings;

use HTTP::Date;
use MIME::Base64;
use Digest::SHA qw(sha1 sha1_hex sha1_base64 hmac_sha1_base64);

my $date = time2str();
my $key = 'hmactest';

#my $hmac = Digest::HMAC_SHA1->new($key);
#$hmac->add($date);
#my $digest = $hmac->digest;

my $hmac = hmac_sha1_base64("date: $date\n",$key);
system( "curl --url http://localhost:8000/ --header 'date: $date' --header 'Host: example.com' --header 'Authorization:  hmac usename=\"user1\", algorithm=\"hmac-sha1\", headers=\"X-Date \", signature=\"$hmac\"'\n"");

but got error :
{"message":"HMAC signature cannot be verified"}
What I'm doing wrong ?

Please check for similar issues on Kong repo, https://github.com/Mashape/kong/issues?utf8=✓&q=is%3Aissue hmac or open a new one there if you don't find the solution.


cufft c2r issue still persists with CUDA 11.7

“Fixes” is a strong word, but I suppose this can close #180. I'm just updating the warnings and exclusion of the c2r tests for CUDA 11.7, which were reported therein. @jaycedowell, I guess it would need an autoconf rerun before merge.

Lol that configure update was a quick response, are you a bot? Add 34957 to 70764.

My understanding of this problem is that c2r transforms in CUDA 10.1+ are allowed to change the input array.  That causes problems for Bifrost when fftshift=True since the transform rearranges the input while Bifrost is trying to rearrange the input.  It would be great if we could actually fix this problem.  "Fix" in this case could be either:

we don't support c2r with fftshift=True or
we catch this case and pre-shift the inputs before calling the transform.

I would prefer (2) but I'd have to think about how to do that.  Only changing the bifrost.fft module leaves people in C/C++ out of luck.  Changing fft.cu is a better option but more involved.  Before starting down either road we should verify that fftshift=True is the only problem and that it isn't a general c2r thing.

Codecov Report

Merging #181 (8b88dbb) into master (eb5a8c5) will not change coverage.
The diff coverage is n/a.

:exclamation: Current head 8b88dbb differs from pull request most recent head be639c0. Consider uploading reports for the commit be639c0 to get more accurate results

@@           Coverage Diff           @@
##           master     #181   +/-   ##
=======================================
  Coverage   66.81%   66.81%
=======================================
  Files          69       69
  Lines        7410     7410
=======================================
  Hits         4951     4951
  Misses       2459     2459

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update eb5a8c5...be639c0. Read the comment docs.

I've started a new fft-c2r-fix branch to fix the underlying issue.  My goal is to catch c2r transforms on CUDA 10.1+ and  shift the input data before the cuFFT call rather than relying on the pre_fftshift function in the callback during the cuFFT call.


Post-processing  in this test case is so slow

https://github.com/DevashishPrasad/CascadeTabNet/blob/7147b41edb6a7b75bfcb498921b2c7b678f391a6/Table Structure Recognition/main.py#L43-L53
test image:https://raw.githubusercontent.com/cndplab-founder/ICDAR2019_cTDaR/master/test/TRACKB2/cTDaR_t10080.jpg

Post-processing for borderless tables depends on the cell mask given by the model. If the model doesn't give accurate results we are trying to make it accurate in post-processing. This may be the case which is making it slow.
Also, our research was focused on getting accuracy and we haven't focused on the time complexity.


create 0.4.2 tag

I guess openeo-api and openeo-processes grow and live in synchronicity but there is no 0.4.2 tag for openeo-processes at the moment:

(also, minor issue: on openeo-api the v0.4.2 tag starts with v while the others do not, do we follow a convention for tagging?)

Oh, thanks for spotting the missing release. Seems I missed that. I guess the releases here should start also with a v although we don't have a convention. Is it important for anything you are working on?
A note on versioning: The processes and the API versions are not necessarily aligned, i.e. there may be a 0.4.3 on any side without a parallel version on the other repository.

Is it important for anything you are working on?
not really at the moment, it just looks inconsistent

The processes and the API versions are not necessarily aligned
Aren't they tied implicitly because proceses is a submodule in api and the way the documentation is built?

Yes, still somewhat tied, but looking for ways to improve that and have them less coupled.


Slow Query Logger (JAVA-646)

#305 needs to be merged before this one.

We should also consider modifying LatencyAwarePolicy to take advantage of the new exception parameter. Some errors like client timeouts should still count towards a hosts' estimated "responsiveness", but others probably shouldn't (see also JAVA-698).

Agreed. Do you want me to amend this PR or should I open a separate ticket? We need to decide which exceptions should be taken into account and which of them shouldn't.

Let's do it on the same branch.

Excellent test coverage!  I had a few comments about comments and added a few tests of my own, but this is looking pretty good!

@tolbertam I had to do a rebase today and want to make sure I didn't miss any of your additions: I saw a new test in LatencyAwarePolicyTest so far. Is there anything else?

Hi @adutra, the other test was QueryLoggerTest#should_log_counter_batch_statements.  It looks like that shows up in the commits, so that's good :)

Looks good to me!  Would you mind amending the last commit to fit within the text restriction for the first line of the commit?  (I think it's around 72 characters).  Other than that everything looks great and I would say it's good to merge from my perspective! :+1:


Running filter on Windows gives ERROR [WinError 193] "%1 is not a valid Win32 application"

On Windows (10 x64), trying to run python filters on dot-panzer always gives me ERROR [WinError 193] %1 is not a valid Win32 application. For instance, for a filter named smallcaps and output type set to html5, the following lines return:
[1/3] smallcaps html5
ERROR:     [WinError 193] %1 is not a valid Win32 application

I guess %1, in this case, is html5. All python filters result in the same error. The location of each filter, printed in command line, is correct. I tried these things, all unsuccessful:

run chmod +x on filter (using Git Bash on Windows)
change first line of filter, from #!/usr/bin/env python3 to #!c:\users\netot\appdata\local\programs\python\python36-32\python.exe
change filter name to ./<filter>:

move filter to current directory
run chmod +x on filter
change first line as above
change filter name to ./<filter> on styles.yaml

My styles.yaml is like following (for filter named smallcaps.py:
Base:
  all:
    filter:
      - run: ./smallcaps.py

I think I'm doing something wrong here... Python is on the path, and I can run a postflight bat script (similar to bash script on Linux) successfully (though I have to write path separators as \\ in styles.yaml for this bat file).

I'm not entirely sure what is going on here as I don't have a Windows
machine to test. The first thing is to check if this is an issue
specific to the filter or to panzer. Can you try invoking the filter
using just vanilla pandoc (i.e. using pandoc's --filter command line
option)?

Vanilla pandoc works fine with the filter: no error at all, and the filter behaviour is as expected. I'm using Python 3.6.4, 32 bits, in Windows 10, 64 bits. Do you think it could be related with 32/64 mix?

The 64/32 bit mix could be causing the issue. There is a report that Python on Windows doesn’t like this:
https://stackoverflow.com/questions/5538671/python-call-to-external-program-results-in-error-193-1-is-not-a-valid-win32-a
Can you try a pure 64 bit or pure 32 bit setup for Python?

I've installed Python x64 (after uninstall and completely clean Python 32 bit installation), repeated all the things in my first comment, and again, got ERROR [WinError 193] %1 is not a valid Win32 application...
In the link you cited, the main answer was passing the script handler to call(), instead of the script itself. In the second comment of that answer, there's an example: call(["cscript.exe","<myfile>"]), assuming cscript.exe is the script handler. I don't know Python, but perhaps that answer could help here too.

Good. The next thing to check is that the filter is an executable. Try going to the directory where the filter is and typing its name ‘smallcaps.py’ at the command line. Does it try to run the filter?
See this on making Python scripts on Windows executable:

https://stackoverflow.com/questions/4235834/how-to-make-python-scripts-executable-on-windows#4235923

Sorry, I forgot to answer here. In the first attempt to run just smallcaps.pyon its own directory, the command-line said that it was unable to load app that was on shebang (using other words). Then I changed the first line of smallcaps.py from #!c:\users\netot\appdata\local\programs\python\python36-32\python.exe to #!c:\users\netot\appdata\local\programs\python\python36\python.exe (directory of Python x64). Now the script runs when called in its own directory, but keeps showing the same error in panzer, as other python filters also do. (I haven't tried other filters than those used in dot-panzer repository)

The problem is that Windows is telling panzer that this filter is not executable for some reason. Let's check that the association is correct for this filetype... Try this:
C:\>assoc .py

C:\>ftype Python.File

And see what it reports back...
As a possible fix, you could explicitly point it to the executable by doing this:
Base:
  all:
    filter:
      - run: "`c:\users\netot\appdata\local\programs\python\python36\python.exe smallcaps.py`"

Running the commands gives the following:
C:\>assoc .py
.py=Python.File

C:\>ftype Python.File
Python.File="C:\WINDOWS\py.exe" "%L" %*

I checked if that executable is really on that directory, and it is there.
I tried your fix, without success. Tried to put smallcaps.py in all these locations:

current directory where panzer is run
c:\users\netot\appdata\local\programs\python\python36\
and, of course, panzer's default filter location

This time, I got ERROR: [WinError 2] The system cannot find the file specified, no matter which of the options below I follow (I needed to double backslash anyway):
- run: "`c:\\users\\netot\\appdata\\local\\programs\\python\\python36\\python.exe smallcaps.py`"
or
- run: "`c:\\users\\netot\\appdata\\local\\programs\\python\\python36\\python.exe .\\smallcaps.py`"
or
- run: "`py smallcaps.py`"
or
- run: "`py .\\smallcaps.py`"

I've been doing a bit of reading about this. What it is clear is that when panzer calls out to the filter script it does not know that the filter is an executable. Somehow this information about the associations of .py files on the command line is not available to running programmes calling out using subprocess. Unless you are using cygwin, windows has no shebang support, so this information in the external script is meaningless.
So... it looks like the only solution on Windows is to force subprocess to run the external process via the shell. This is not usually recommended or necessary under unix. But it looks like it might be needed to get around this issue on Windows.
I've pushed a version with appropriate changes. See if it works with the normal panzer setup:
Base:
  all:
    filter:
      - run: smallcaps.py

It works! I had to revert all shebangs to default #!/usr/bin/env python3, or use real Python dir, and all worked fine! The expected behaviour of the filters is correct too! Thank you!!!
Just by curiosity: I've tried to run lua filters (I know they're not supported by panzer) using following setup:
Base:
  all:
    filter:
      - run: "`pandoc -s -f json -t json --lua-filter myfilter.lua`"
# also tried with -f native -t native, without --lua-filter option and without -s, with similar result

which gave me this result:
Traceback (most recent call last):
  File "C:\Users\netot\AppData\Local\Programs\Python\Python36\Scripts\panzer-script.py", line 11, in <module>
    load_entry_point('panzer==1.3.1', 'console_scripts', 'panzer')()
  File "c:\users\netot\appdata\local\programs\python\python36\lib\site-packages\panzer\panzer.py", line 68, in main
    doc.pipe_through('filter')
  File "c:\users\netot\appdata\local\programs\python\python36\lib\site-packages\panzer\document.py", line 509, in pipe_through
    stderr = stderr_bytes.decode(const.ENCODING)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc6 in position 31: invalid continuation byte

Is it somehow possible? It seems that panzer pipes conversion through filters (please sorry if I'm wrong), so I thought pandoc could act as a filter too... Thank you anyway!

(For the question on previous comment) I realized, by reading README, that the correct syntax would be:
- run: pandoc
  args: "`-f json -t json`"

But this turns into pandoc html5 -f json -t json (supposing html5 as final writer), because the first argument to filters is always the writer name. This crashes, because pandoc tries to open a file named html5.

I'm afraid that this very much falls under the heading of 'not supported'. pandoc's new lua filters cannot be run this way.
I could add support for lua filters but the downside is they would run slower than standard json filters negating much of the motivation for using them. I'd suggest that if there are any lua filters you want to use then modify their code to consume and emit json and so turn them into a standard json  filter.

Ok -- I caved and implemented a way to run lua filters. It's in the latest commit (v1.4 of panzer).
This will work best if you plump for either all lua or all json filters. It won't be ideal in a mixed workflow (some lua some json filters) as lua filters will always be run first. This is for performance reasons -- lua filters are run fast. If you have a mixed workflow with some lua some json and you want to intersperse your application of lua and json filters to a doc, I'd suggest rewriting to use either all lua or all json filters (it's trivial) so you can apply them in any order you like.

 In fact, it seems that lua filters are receiving JSON, when should receive AST instead (according to pandoc's documentation). But even here I couldn't realize how to do any filtering in the lua filter... I will open a issue on this.


Develop

Hi @mabotaka, I'm your friendly neighborhood Microsoft Pull Request Bot (You can call me MSBOT). Thanks for your contribution!

In order for us to evaluate and accept your PR, we ask that you sign a contribution license agreement. It's all electronic and will take just minutes. I promise there's no faxing. https://cla.microsoft.com.

TTYL, MSBOT;

Merges from develop to master are made by the internal engineering team. We cannot accept this change.
If you had intended something else, could you provide a description?


Error in Profiler Ingestions（MySQL 5.7）for 1.5.8 and 1.5.13

Affected module
Ingestion Framework
Describe the bug
Error log when run profiler （run metadata success）：
[2024-12-06T02:43:54.153+0000] {profiler_interface.py:319} INFO - Skipping metrics for admin_log.id due to (pymysql.err.ProgrammingError) (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '() AS row_num\n        FROM \n            manager.admin_log,\n            (SELE' at line 8")
[SQL: /* {"app": "OpenMetadata", "version": "<IP_ADDRESS>"} /
SELECT
(SELECT
id
FROM (
SELECT
id,
ROW_NUMBER() OVER () AS row_num
FROM
manager.admin_log,
(SELECT @counter := COUNT() FROM manager.admin_log) t_count
ORDER BY id
) temp
WHERE temp.row_num = ROUND(0.5 * @counter)
)
AS median,
(SELECT
id
FROM (
SELECT
id,
ROW_NUMBER() OVER () AS row_num
FROM
manager.admin_log,
(SELECT @counter := COUNT() FROM manager.admin_log) t_count
ORDER BY id
) temp
WHERE temp.row_num = ROUND(0.25 * @counter)
)
AS firstQuartile,
(SELECT
id
FROM (
SELECT
id,
ROW_NUMBER() OVER () AS row_num
FROM
manager.admin_log,
(SELECT @counter := COUNT() FROM manager.admin_log) t_count
ORDER BY id
) temp
WHERE temp.row_num = ROUND(0.75 * @counter)
)
AS thirdQuartile
FROM manager.admin_log
LIMIT %(param_1)s]
[parameters: {'param_1': 1}]
(Background on this error at: https://sqlalche.me/e/14/f405)
When I copy SQL to Navicat for execution, it also reports an error

To Reproduce

Expected behavior
Profiler Ingestions run successfully
Version:

OS: Ubuntu
Python version: Python3.10（docker）
OpenMetadata version: 1.5.8 or 1.5.13
OpenMetadata Ingestion package version: 1.5.8 or 1.5.13

Additional context
application database version is MySQL 5.7

I found the reason: MySQL 5.7 does not have the ROW_NUMBER() function, which was introduced in MySQL 8.0. Can the MySQL in Services be compatible with older versions?

we do not support 5.7


bug: When submitting a declare tx with debug_info, madara fails

Bug Report
Madara version:
Current behavior:
Send a declare tx with a contract compiled with debug_info, fails with error
Failed to submit extrinsic: Pool(TooLowPriority { old:<PHONE_NUMBER>3709551615, new:<PHONE_NUMBER>3709551615 })

Expected behavior:
Pass with or without debug_info, or at least raises "do not support debug_info"
Steps to reproduce:
Compile a Cairo 0 contract with or without the --no-debug-info flag and try to declare it to madara

Is this still needed ?
Would be interested to work on this issue, I'm still learning the codebase though

Is this still needed?
would be interested to work on this issue :), I'm Still learning the codebase though


fix/floating point precision for timestep

This is a fix for floating point precision errors in the timestep that were a problem for the front end time bar's calculations (Dan is adding a check there too).
Pull request recommendations:

[x] Name your pull request your-development-type/short-description. Ex: feature/read-tiff-files
[ ] Link to any relevant issue in the PR description. Ex: Resolves [gh-12], adds tiff file format support
[x] Provide relevant tests for your feature or bug fix.
[ ] Provide or update documentation for any feature added by your pull request.

Thanks for contributing!

I can see the custom converter test is trying to compare converted data with expected data, but where can I see the expected data?

it's at the top of test_custom_converter.py, there's 3 tests parameterized there, the expected data for each start at lines 18, 329, and 701


Git Checkout branch

When I press F1 and type Git Chechout [SPACE], I see that I can checkout each tag version of my project, but I don't have any branch appearing in the list!
When I git checkout manually by branch with a command tool, it's working well.
Then, when I go back to vscode, I can work well with by branch.
I would be nice to have the branchs in the list

I can't reproduce.
What do you get when running git branch -a from the command line?

Here is a screenshot:

Right, you only have the chartjs-2.0 and master branches. Those surely appear in the list?
We don't show the remote branches in the dropdown. We could do that.

Since you see tags I would expect to see branches too :+1:
In the dropdown, I only see tag, no branch.

We do show local branches though, just not remote ones. If you create more branches locally (git branch foo), don't they show up there?

Yes, you are right, when I create a local branch I can switch between my branches... Good!
What I found wired is to see remote tags but not remote branches. In my mind, we see both or none... but not like this.
What I would like to avoid is to use the command line to checkout a remote branch.
Anyway, VSCode is a great tool!

Makes sense.

This is exact issue plagued me today.  I couldn't see the remote branches.  I also wonder what flags are sent when git fetch is run which I think is an analog to refresh in vscode?
Also I'd expect the tool to mirror the functionality of the git command line, for example git checkout appears to actually be git checkout -b which creates a local branch.  I don't like that.
It should mirror the git command usage and if I run git checkout <branch_name> and that branch does not exist locally, it should then checkout the remote branch.  If there is no remote branch of <branch_name>, it should error out with the appropriate pathspec error.
I would instead expect to use git branch <branch_name> and then need to checkout that branch.
I very much like a vim fugitive feature which wraps the git command and allows me to issue any git command if there is not a convenient mapping for what I want to do.  Perhaps vscode git integration could introduce a similar capability?

This tripped me up today.  It's really confusing for git checkout to actually be doing git checkout -b when what I'm actually trying to accomplish is checkout a remote branch.

@bpasero, please verify.

Have been using it for a while and works nicely 👍

@joaomoreno @bpasero Working great for me.


Use network isolation parameters in docs & tests (backend + Keystone)

Indeed the failure looks unrelated to the PR. The Wallaby Standalone fails to deploy. There is the same top-level error as before:
TASK [mariadb_copy : MariaDB copy pre checks] **********************************

[ABRIDGED]

 "ERROR 2002 (HY000): Can't connect to MySQL server on '<IP_ADDRESS>' (115)"], "stdout": "", "stdout_lines": []}

And the cause is:
SYNC POLL on undercloud: jid=959520998050.88662 started=1 finished=0
ASYNC POLL on undercloud: jid=959520998050.88662 started=1 finished=0
ASYNC POLL on undercloud: jid=959520998050.88662 started=1 finished=0
ASYNC POLL on undercloud: jid=959520998050.88662 started=1 finished=0
fatal: [undercloud]: FAILED! => {"ansible_job_id": "959520998050.88662", "changed": false, "cmd": "openstack tripleo deploy  --templates $DEPLOY_TEMPLATES   --yes --output-dir $DEPLOY_OUTPUT_DIR  --stack $DEPLOY_STACK --standalone-role $DEPLOY_STANDALONE_ROLE --timeout $DEPLOY_TIMEOUT_ARG -e /usr/share/openstack-tripleo-heat-templates/environments/standalone/standalone-tripleo.yaml -e /home/zuul-worker/containers-prepare-parameters.yaml -e /home/zuul-worker/standalone_parameters.yaml -e /usr/share/openstack-tripleo-heat-templates/environments/low-memory-usage.yaml -r $DEPLOY_ROLES_FILE      --deployment-user $DEPLOY_DEPLOYMENT_USER  --local-ip $DEPLOY_LOCAL_IP --control-virtual-ip $DEPLOY_CONTROL_VIP          >/home/zuul-worker/standalone_deploy.log 2>&1", "delta": "0:25:53.755481", "end": "2023-06-06 08:34:56.056263", "finished": 1, "msg": "non-zero return code", "rc": 1, "start": "2023-06-06 08:09:02.300782", "stderr": "", "stderr_lines": [], "stdout": "", "stdout_lines": []}

and in standalone_deploy.log:
2023-06-06 08:33:44.447625 | fa163ea3-aa16-5feb-f998-000000002242 |       TASK | Run init bundle puppet on the host for mysql
2023-06-06 08:34:49.194420 | fa163ea3-aa16-5feb-f998-000000002242 |      FATAL | Run init bundle puppet on the host for mysql | standalone | error={"changed": false, "cmd": "puppet apply  --detailed-exitcodes --summarize --color=false --modulepath '/etc/puppet/modules:/opt/stack/puppet-modules:/usr/share/openstack-puppet/modules' --tags 'pacemaker::resource::bundle,pacemaker::property,pacemaker::resource::ocf,pacemaker::constraint::order,pacemaker::constraint::colocation' -e '[\"Mysql_datadir\", \"Mysql_user\", \"Mysql_database\", \"Mysql_grant\", \"Mysql_plugin\"].each |String $val| { noop_resource($val) }; include ::tripleo::profile::base::pacemaker; include ::tripleo::profile::pacemaker::database::mysql_bundle'\n", "delta": "0:01:04.489477", "end": "2023-06-06 12:34:49.152037", "failed_when_result": true, "msg": "non-zero return code", "rc": 6, "start": "2023-06-06 12:33:44.662560", "stderr": "Warning: /etc/puppet/hiera.yaml: Use of 'hiera.yaml' version 3 is deprecated. It should be converted to version 5\n   (file: /etc/puppet/hiera.yaml)\nWarning: Undefined variable '::deploy_config_name'; \n   (file & line not available)\nWarning: The function 'hiera' is deprecated in favor of using 'lookup'. See https://puppet.com/docs/puppet/7.10/deprecated_language.html\n   (file & line not available)\nDeprecation Warning: This command is deprecated and will be removed. Please use 'pcs property config' instead.\nDeprecation Warning: This command is deprecated and will be removed. Please use 'pcs constraint config' instead.\nDeprecation Warning: This command is deprecated and will be removed. Please use 'pcs constraint config' instead.\nError: pcs -f /var/lib/pacemaker/cib/puppet-cib-backup20230606-143531-1pzw1f constraint location galera-bundle rule resource-discovery=exclusive score=0 galera-role eq true failed: Error: duplicate constraint already exists, use --force to override. Too many tries\nError: /Stage[main]/Tripleo::Profile::Pacemaker::Database::Mysql_bundle/Pacemaker::Resource::Ocf[galera]/Pcmk_resource[galera]/ensure: change from 'absent' to 'present' failed: pcs -f /var/lib/pacemaker/cib/puppet-cib-backup20230606-143531-1pzw1f constraint location galera-bundle rule resource-discovery=exclusive score=0 galera-role eq true failed: Error: duplicate constraint already exists, use --force to override. Too many tries", "stderr_lines": ["Warning: /etc/puppet/hiera.yaml: Use of 'hiera.yaml' version 3 is deprecated. It should be converted to version 5", "   (file: /etc/puppet/hiera.yaml)", "Warning: Undefined variable '::deploy_config_name'; ", "   (file & line not available)", "Warning: The function 'hiera' is deprecated in favor of using 'lookup'. See https://puppet.com/docs/puppet/7.10/deprecated_language.html", "   (file & line not available)", "Deprecation Warning: This command is deprecated and will be removed. Please use 'pcs property config' instead.", "Deprecation Warning: This command is deprecated and will be removed. Please use 'pcs constraint config' instead.", "Deprecation Warning: This command is deprecated and will be removed. Please use 'pcs constraint config' instead.", "Error: pcs -f /var/lib/pacemaker/cib/puppet-cib-backup20230606-143531-1pzw1f constraint location galera-bundle rule resource-discovery=exclusive score=0 galera-role eq true failed: Error: duplicate constraint already exists, use --force to override. Too many tries", "Error: /Stage[main]/Tripleo::Profile::Pacemaker::Database::Mysql_bundle/Pacemaker::Resource::Ocf[galera]/Pcmk_resource[galera]/ensure: change from 'absent' to 'present' failed: pcs -f /var/lib/pacemaker/cib/puppet-cib-backup20230606-143531-1pzw1f constraint location galera-bundle rule resource-discovery=exclusive score=0 galera-role eq true failed: Error: duplicate constraint already exists, use --force to override.


[typescript-language-features] No commit characters for string completions

This PR fixes https://github.com/microsoft/TypeScript/issues/48895

cc @mjbvz

Thanks!


Improve handling of unavailable code samples

Ref: https://github.com/FriendsOfPHP/PHP-CS-Fixer/issues/5209#issuecomment-720163602
When a code sample cannot be generated because the command runs on the wrong PHP version, the command will try to find it in the existing documentation file in case it was already generated in a previous run on the expected PHP version.
This might have weird results in case this happens when code samples are added or removed, but I think it's a better DX than to manually revert all "Cannot generate diff..." that get added on every run.

Thank you @julienfalque.


[PL-57579]: PL 1.59.x Release Notes

Thanks for contributing to the Harness Developer Hub! Our code owners will review your submission.
Description

Please describe your changes:  PL 1.59.x Release Notes
Jira/GitHub Issue numbers (if any): PL-57579
Preview links/images (Internal contributors only): __________________

PR lifecycle
We aim to merge PRs within one week or less, but delays happen sometimes.
If your PR is open longer than two weeks without any human activity, please tag a code owner in a comment.
PRs must meet these requirements to be merged:

[ ] Successful preview build.
[ ] Code owner review.
[ ] No merge conflicts.
[ ] Release notes/new features docs: Feature/version released to at least one prod environment.

Please check the Execution Link of the Pipeline for the Website Draft URL. This is located in the Preview Step behind the Harness VPN and also is available in #hdh_alerts. E.g Website Draft URL: https://unique-id--harness-developer.netlify.app. Current Draft URL is: https://66ffa8bf2443dcd650ce6eb1--harness-developer.netlify.app


Step report should be html escaped.

I found non escaped step title broken my report.
I use turnip_formatter 0.6.0.pre.beta.3.
With steps like berow
Scenario: sample
   Step click < icon on view.

expected
Step click < mark on view.
,
but got
Step click < mark on view.
.
so, i fix it.

Hi @ichiko thanks for PR !!

I've released 0.6.0.pre.beta.4

https://rubygems.org/gems/turnip_formatter/versions/0.6.0.pre.beta.4
https://github.com/gongo/turnip_formatter/releases/tag/v0.6.0.pre.beta.4

Hi @gongo
Thanks for fast release!


Docker install on NAS

Hi,
Trying to get this running on a QNAP NAS running in a docker container.
When I build the docker container using the following command "docker build -f Dockerfile -t vzduch-dotek ."
It creates three images:
vzduch-dotek
mcr.microsoft.com/dotnet/sdk
mcr.microsoft.com/dotnet/runtime
Is this normal, should they all be in the one build/image?
Do I need to run them all?
Is there something I'm doing wrong?
If I start vzduch-dotek I can query the Airtouch3 using "http://nas-home:5353/api/aircons"
But none of the commands work, I get a http 405 error  using "http://nas-home:5353/api/aircons/0/switch/1"
Any advice?
Thanks!
Docker build log:
The NAS is an Intel Celeron N5105 64 bit.
$ docker build -f Dockerfile -t vzduch-dotek .

  Restored /source/VzduchDotek.Net.csproj (in 43.5 sec).
Removing intermediate container 92068aad35b5
 ---> 5dee87539d9d
Step 5/17 : COPY . .
 ---> a7cbe671b2d6
Step 6/17 : RUN dotnet publish -c release -o /app -r linux-x64 --self-contained true --no-restore /p:PublishReadyToRun=true
 ---> Running in 5ed8ae574361
Microsoft (R) Build Engine version 16.7.3+2f374e28e for .NET
Copyright (C) Microsoft Corporation. All rights reserved.

  VzduchDotek.Net -> /source/bin/release/netcoreapp3.1/linux-x64/VzduchDotek.Net.dll
  VzduchDotek.Net -> /app/
Removing intermediate container 5ed8ae574361
 ---> 9148d9a7c76a
Step 7/17 : FROM mcr.microsoft.com/dotnet/runtime:3.1-buster-slim
3.1-buster-slim: Pulling from dotnet/runtime
Digest: sha256:c7ecc1d143230632494c907c2e81a7d6727f1f08c57ee49dfaa9edae604a520b
Status: Downloaded newer image for mcr.microsoft.com/dotnet/runtime:3.1-buster-slim
 ---> 3b42d02b7d9f
Step 8/17 : MAINTAINER Mike<EMAIL_ADDRESS> ---> Using cache
 ---> 83ab86bdccac
Step 9/17 : RUN apt-get update     && apt-get install -y --no-install-recommends         curl locales     && rm -rf /var/lib/apt/lists/*
 ---> Using cache
 ---> b2c251f6d3dd
Step 10/17 : RUN sed -i -e 's/# en_AU.UTF-8 UTF-8/en_AU.UTF-8 UTF-8/' /etc/locale.gen &&     locale-gen
 ---> Using cache
 ---> 3411fc132dfb
Step 11/17 : ENV TZ=Australia/Brisbane
 ---> Using cache
 ---> 3cdcc73334b5
Step 12/17 : ENV LANG en_AU.utf8
 ---> Using cache
 ---> 34bd363984b1
Step 13/17 : ENV LANGUAGE ${LANG}
 ---> Using cache
 ---> a9b0b0cdb633
Step 14/17 : ENV LC_ALL ${LANG}
 ---> Using cache
 ---> fedd2d2b3c09
Step 15/17 : WORKDIR /app
 ---> Using cache
 ---> 99f86f5c6db0
Step 16/17 : COPY --from=build /app .
 ---> cf85ca5fe104
Step 17/17 : ENTRYPOINT ["/app/VzduchDotek.Net"]
 ---> Running in 48470e172af4
Removing intermediate container 48470e172af4
 ---> 829dbe159b7f
Successfully built 829dbe159b7f
Successfully tagged vzduch-dotek:latest

Startup console messages
11:40:06 INF] Starting host
[11:40:07 INF] Airtouch panel host + port is [<IP_ADDRESS>:8899]
[11:40:07 INF] LogLevel [Verbose]
[11:40:07 DBG] Hosting starting
[11:40:08 DBG] Failed to locate the development https certificate at 'null'.
[11:40:08 INF] Now listening on: http://[::]:5353
[11:40:08 DBG] Loaded hosting startup assembly VzduchDotek.Net
[11:40:08 INF] Application started. Press Ctrl+C to shut down.
[11:40:08 INF] Hosting environment: Production
[11:40:08 INF] Content root path: /app
[11:40:08 DBG] Hosting started

Working request to get AC details:
http://nas-home:5353/api/aircons
[11:49:35 DBG] Connection id "0HMMCUEN7DDFF" accepted.
[11:49:35 DBG] Connection id "0HMMCUEN7DDFG" accepted.
[11:49:35 DBG] Connection id "0HMMCUEN7DDFF" started.
[11:49:35 DBG] Connection id "0HMMCUEN7DDFG" started.
[11:49:35 INF] Request starting HTTP/1.1 GET http://nas-home:5353/api/aircons
[11:49:35 VRB] All hosts are allowed.
[11:49:35 DBG] 1 candidate(s) found for the request path '/api/aircons'
[11:49:35 DBG] Endpoint 'VzduchDotek.Net.Controllers.VzduchDotekController.Get (VzduchDotek.Net)' with route pattern 'api/aircons' is valid for the request path '/api/aircons'
[11:49:35 DBG] Request matched endpoint 'VzduchDotek.Net.Controllers.VzduchDotekController.Get (VzduchDotek.Net)'
[11:49:35 INF] Executing endpoint 'VzduchDotek.Net.Controllers.VzduchDotekController.Get (VzduchDotek.Net)'
[11:49:35 INF] Route matched with {action = "Get", controller = "VzduchDotek"}.  Raw 00010010
[11:49:35 VRB] Aircon BrandId is 0. Raw 00000000
[11:49:35 VRB] Aircon is AcOff. Raw 00000100
[11:49:35 VRB] Aircon is OK. Raw 00000100
[11:49:35 VRB] Aircon system name is Polyaire
[11:49:35 VRB] Sensor 0 IsAvailable False LowBattery False Temperature 0
[11:49:35 VRB] Sensor 1 IsAvailable False LowBattery False Temperature 0
[11:49:35 VRB] Sensor 2 IsAvailable False LowBattery False Temperature 0
[11:49:35 VRB] Sensor 3 IsAvailable False LowBattery False Temperature 0
[11:49:35 VRB] Sensor 4 IsAvailable False LowBattery False Temperature 0
[11:49:35 VRB] Sensor 5 IsAvailable False LowBattery False Temperature 0
[11:49:35 VRB] Sensor 6 IsAvailable False LowBattery False Temperature 0
[11:49:35 VRB] Sensor 7 IsAvailable False LowBattery False Temperature 0
[11:49:35 VRB] Sensor 8 IsAvailable False LowBattery False Temperature 0
[11:49:35 VRB] Sensor 9 IsAvailable False LowBattery False Temperature 0
[11:49:35 VRB] Sensor 10 IsAvailable False LowBattery False Temperature 0
[11:49:35 VRB] Sensor 11 IsAvailable False LowBattery False Temperature 0
[11:49:35 VRB] Sensor 12 IsAvailable False LowBattery False Temperature 0
[11:49:35 VRB] Sensor 13 IsAvailable False LowBattery False Temperature 0
[11:49:35 VRB] Sensor 14 IsAvailable False LowBattery False Temperature 0
[11:49:35 VRB] Sensor 15 IsAvailable False LowBattery False Temperature 0
[11:49:35 VRB] Sensor 16 IsAvailable False LowBattery False Temperature 0
[11:49:35 VRB] Sensor 17 IsAvailable False LowBattery False Temperature 0
[11:49:35 VRB] Sensor 18 IsAvailable False LowBattery False Temperature 0
[11:49:35 VRB] Sensor 19 IsAvailable False LowBattery False Temperature 0
[11:49:35 VRB] Sensor 20 IsAvailable False LowBattery False Temperature 0
[11:49:35 VRB] Sensor 21 IsAvailable False LowBattery False Temperature 0
[11:49:35 VRB] Sensor 22 IsAvailable False LowBattery False Temperature 0
[11:49:35 VRB] Sensor 23 IsAvailable False LowBattery False Temperature 0
[11:49:35 VRB] Sensor 24 IsAvailable False LowBattery False Temperature 0
[11:49:35 VRB] Sensor 25 IsAvailable False LowBattery False Temperature 0
[11:49:35 VRB] Sensor 26 IsAvailable False LowBattery False Temperature 0
[11:49:35 VRB] Sensor 27 IsAvailable False LowBattery False Temperature 0
[11:49:35 VRB] Sensor 28 IsAvailable False LowBattery False Temperature 0
[11:49:35 VRB] Sensor 29 IsAvailable False LowBattery False Temperature 0
[11:49:35 VRB] Sensor 30 IsAvailable False LowBattery False Temperature 0
[11:49:35 VRB] Sensor 31 IsAvailable False LowBattery False Temperature 0
[11:49:35 VRB]  Ac Mode is 4 - enum Cool
[11:49:35 VRB]  Fanspeed is 1 - enum Low
[11:49:35 VRB] AirTouchId is  88411913
[11:49:35 VRB] Touchpad GroupId is  0
[11:49:35 VRB] Touchpad Temperature is  27
[11:49:35 VRB] Desired Temperature is  27
[11:49:35 VRB] Room Temperature is  30
[11:49:35 VRB] Thermostat mode is  1
[11:49:35 VRB] Zone Data 00111100 for 0
[11:49:35 VRB] Zone Data 10010001 for 1
[11:49:35 VRB] Zone Data 00010010 for 2
[11:49:35 VRB] Zone Data 10000011 for 3
[11:49:35 VRB] Zone Data 00000100 for 4
[11:49:35 VRB] Zone Data 10000101 for 5
[11:49:35 VRB] Zone Data 00000110 for 6
[11:49:35 VRB] Zone Data 00000111 for 7
[11:49:35 VRB] Zone Data 00000000 for 8
[11:49:35 VRB] Zone Data 10000001 for 9
[11:49:35 VRB] Zone Data 10000010 for 10
[11:49:35 VRB] Zone Data 10000011 for 11
[11:49:35 VRB] Zone Data 10000100 for 12
[11:49:35 VRB] Zone Data 10000101 for 13
[11:49:35 VRB] Zone Data 10000110 for 14
[11:49:35 VRB] Zone Data 10000111 for 15
[11:49:35 VRB] Zone Name Living for 0
[11:49:35 VRB] Zone Data 00111100 for Start Zone 0 and status is ZoneOff
[11:49:35 VRB] Zone Name Master for 1
[11:49:35 VRB] Zone Data 10010001 for Start Zone 1 and status is ZoneOn
[11:49:35 VRB] Zone Name Robe for 2
[11:49:35 VRB] Zone Data 00010010 for Start Zone 2 and status is ZoneOff
[11:49:35 VRB] Zone Name Sitting for 3
[11:49:35 VRB] Zone Data 10000011 for Start Zone 3 and status is ZoneOn
[11:49:35 VRB] Zone Name GUEST for 4
[11:49:35 VRB] Zone Data 00000100 for Start Zone 4 and status is ZoneOff
[11:49:35 VRB] Zone Name Bed 2 for 5
[11:49:35 VRB] Zone Data 10000101 for Start Zone 5 and status is ZoneOn
[11:49:35 VRB] Zone Name Bed 3 for 6
[11:49:35 VRB] Zone Data 00000110 for Start Zone 6 and status is ZoneOff
[11:49:35 VRB] Zone Name Bed 4 for 7
[11:49:35 VRB] Zone Data 00000111 for Start Zone 7 and status is ZoneOff
[11:49:35 VRB] Zone Name Media for 8
[11:49:35 VRB] Zone Data 00000000 for Start Zone 8 and status is ZoneOff
[11:49:35 VRB] {"Aircons": [{"Id": 18, "AirTouchId": "88411913", "Mode": "Cool", "Name": "Polyaire", "PowerStatus": "AcOff", "Status": "OK", "BrandId": 0, "TouchPadGroupId": 0, "TouchPadTemperature": 27, "DesiredTemperature": 27, "RoomTemperature": 30, "ThermostatMode": 1, "FanMode": "Low", "Zones": [{"Id": 0, "Name": "Living", "Status": "ZoneOff", "FanValue": 0, "IsSpill": false, "DesiredTemperature": 27, "ZoneTemperatureType": "UseSensor", "Sensors": [], "$type": "Zone"}, {"Id": 1, "Name": "Master", "Status": "ZoneOn", "FanValue": 100, "IsSpill": false, "DesiredTemperature": 25, "ZoneTemperatureType": "Hide", "Sensors": [], "$type": "Zone"}, {"Id": 2, "Name": "Robe", "Status": "ZoneOff", "FanValue": 0, "IsSpill": false, "DesiredTemperature": 25, "ZoneTemperatureType": "Hide", "Sensors": [], "$type": "Zone"}, {"Id": 3, "Name": "Sitting", "Status": "ZoneOn", "FanValue": 50, "IsSpill": false, "DesiredTemperature": 25, "ZoneTemperatureType": "Hide", "Sensors": [], "$type": "Zone"}, {"Id": 4, "Name": "GUEST", "Status": "ZoneOff", "FanValue": 0, "IsSpill": false, "DesiredTemperature": 25, "ZoneTemperatureType": "Hide", "Sensors": [], "$type": "Zone"}, {"Id": 5, "Name": "Bed 2", "Status": "ZoneOn", "FanValue": 100, "IsSpill": false, "DesiredTemperature": 25, "ZoneTemperatureType": "Hide", "Sensors": [], "$type": "Zone"}, {"Id": 6, "Name": "Bed 3", "Status": "ZoneOff", "FanValue": 0, "IsSpill": false, "DesiredTemperature": 25, "ZoneTemperatureType": "Hide", "Sensors": [], "$type": "Zone"}, {"Id": 7, "Name": "Bed 4", "Status": "ZoneOff", "FanValue": 0, "IsSpill": false, "DesiredTemperature": 25, "ZoneTemperatureType": "Hide", "Sensors": [], "$type": "Zone"}, {"Id": 8, "Name": "Media", "Status": "ZoneOff", "FanValue": 0, "IsSpill": false, "DesiredTemperature": 25, "ZoneTemperatureType": "Hide", "Sensors": [], "$type": "Zone"}], "Sensors": [{"Id": 0, "IsAvailable": false, "IsLowBattery": false, "Temperature": 0, "$type": "Sensor"}, {"Id": 1, "IsAvailable": false, "IsLowBattery": false, "Temperature": 0, "$type": "Sensor"}, {"Id": 2, "IsAvailable": false, "IsLowBattery": false, "Temperature": 0, "$type": "Sensor"}, {"Id": 3, "IsAvailable": false, "IsLowBattery": false, "Temperature": 0, "$type": "Sensor"}, {"Id": 4, "IsAvailable": false, "IsLowBattery": false, "Temperature": 0, "$type": "Sensor"}, {"Id": 5, "IsAvailable": false, "IsLowBattery": false, "Temperature": 0, "$type": "Sensor"}, {"Id": 6, "IsAvailable": false, "IsLowBattery": false, "Temperature": 0, "$type": "Sensor"}, {"Id": 7, "IsAvailable": false, "IsLowBattery": false, "Temperature": 0, "$type": "Sensor"}, {"Id": 8, "IsAvailable": false, "IsLowBattery": false, "Temperature": 0, "$type": "Sensor"}, {"Id": 9, "IsAvailable": false, "IsLowBattery": false, "Temperature": 0, "$type": "Sensor"}, {"Id": 10, "IsAvailable": false, "IsLowBattery": false, "Temperature": 0, "$type": "Sensor"}, {"Id": 11, "IsAvailable": false, "IsLowBattery": false, "Temperature": 0, "$type": "Sensor"}, {"Id": 12, "IsAvailable": false, "IsLowBattery": false, "Temperature": 0, "$type": "Sensor"}, {"Id": 13, "IsAvailable": false, "IsLowBattery": false, "Temperature": 0, "$type": "Sensor"}, {"Id": 14, "IsAvailable": false, "IsLowBattery": false, "Temperature": 0, "$type": "Sensor"}, {"Id": 15, "IsAvailable": false, "IsLowBattery": false, "Temperature": 0, "$type": "Sensor"}, {"Id": 16, "IsAvailable": false, "IsLowBattery": false, "Temperature": 0, "$type": "Sensor"}, {"Id": 17, "IsAvailable": false, "IsLowBattery": false, "Temperature": 0, "$type": "Sensor"}, {"Id": 18, "IsAvailable": false, "IsLowBattery": false, "Temperature": 0, "$type": "Sensor"}, {"Id": 19, "IsAvailable": false, "IsLowBattery": false, "Temperature": 0, "$type": "Sensor"}, {"Id": 20, "IsAvailable": false, "IsLowBattery": false, "Temperature": 0, "$type": "Sensor"}, {"Id": 21, "IsAvailable": false, "IsLowBattery": false, "Temperature": 0, "$type": "Sensor"}, {"Id": 22, "IsAvailable": false, "IsLowBattery": false, "Temperature": 0, "$type": "Sensor"}, {"Id": 23, "IsAvailable": false, "IsLowBattery": false, "Temperature": 0, "$type": "Sensor"}, {"Id": 24, "IsAvailable": false, "IsLowBattery": false, "Temperature": 0, "$type": "Sensor"}, {"Id": 25, "IsAvailable": false, "IsLowBattery": false, "Temperature": 0, "$type": "Sensor"}, {"Id": 26, "IsAvailable": false, "IsLowBattery": false, "Temperature": 0, "$type": "Sensor"}, {"Id": 27, "IsAvailable": false, "IsLowBattery": false, "Temperature": 0, "$type": "Sensor"}, {"Id": 28, "IsAvailable": false, "IsLowBattery": false, "Temperature": 0, "$type": "Sensor"}, {"Id": 29, "IsAvailable": false, "IsLowBattery": false, "Temperature": 0, "$type": "Sensor"}, {"Id": 30, "IsAvailable": false, "IsLowBattery": false, "Temperature": 0, "$type": "Sensor"}, {"Id": 31, "IsAvailable": false, "IsLowBattery": false, "Temperature": 0, "$type": "Sensor"}], "Version": "0.4", "$type": "Aircon"}], "SelectedAc": 0, "$type": "AirTouchSystem"}
[11:49:35 INF] Executed action method VzduchDotek.Net.Controllers.VzduchDotekController.Get (VzduchDotek.Net), returned result Microsoft.AspNetCore.Mvc.ContentResult in 195.1861ms.
[11:49:35 VRB] Action Filter: Before executing OnActionExecuted on filter Microsoft.AspNetCore.Mvc.Infrastructure.ModelStateInvalidFilter.
[11:49:35 VRB] Action Filter: After executing OnActionExecuted on filter Microsoft.AspNetCore.Mvc.Infrastructure.ModelStateInvalidFilter.
[11:49:35 VRB] Action Filter: Before executing OnActionExecuted on filter Microsoft.AspNetCore.Mvc.ModelBinding.UnsupportedContentTypeFilter.
[11:49:35 VRB] Action Filter: After executing OnActionExecuted on filter Microsoft.AspNetCore.Mvc.ModelBinding.UnsupportedContentTypeFilter.
[11:49:35 VRB] Result Filter: Before executing OnResultExecuting on filter Microsoft.AspNetCore.Mvc.Infrastructure.ClientErrorResultFilter.
[11:49:35 VRB] Result Filter: After executing OnResultExecuting on filter Microsoft.AspNetCore.Mvc.Infrastructure.ClientErrorResultFilter.
[11:49:35 VRB] Before executing action result Microsoft.AspNetCore.Mvc.ContentResult.
[11:49:35 INF] Executing ContentResult with HTTP Response ContentType of application/json
[11:49:35 VRB] After executing action result Microsoft.AspNetCore.Mvc.ContentResult.
[11:49:35 VRB] Result Filter: Before executing OnResultExecuted on filter Microsoft.AspNetCore.Mvc.Infrastructure.ClientErrorResultFilter.
[11:49:35 VRB] Result Filter: After executing OnResultExecuted on filter Microsoft.AspNetCore.Mvc.Infrastructure.ClientErrorResultFilter.
[11:49:35 INF] Executed action VzduchDotek.Net.Controllers.VzduchDotekController.Get (VzduchDotek.Net) in 204.0346ms
[11:49:35 INF] Executed endpoint 'VzduchDotek.Net.Controllers.VzduchDotekController.Get (VzduchDotek.Net)'
[11:49:35 DBG] Connection id "0HMMCUEN7DDFF" completed keep alive response.
[11:49:35 INF] Request finished in 213.8954ms 200 application/json

Failed request to turn on AC
http://nas-home:5353/api/aircons/0/switch/1
11:42:33 INF] Request starting HTTP/1.1 GET http://nas-home:5353/api/aircons/0/switch/1
[11:42:33 VRB] All hosts are allowed.
[11:42:33 DBG] 1 candidate(s) found for the request path '/api/aircons/0/switch/1'
[11:42:33 DBG] Request matched endpoint '405 HTTP Method Not Supported'
[11:42:33 INF] Executing endpoint '405 HTTP Method Not Supported'
[11:42:33 INF] Executed endpoint '405 HTTP Method Not Supported'
[11:42:33 DBG] Connection id "0HMMCUEN7DDET" completed keep alive response.
[11:42:33 INF] Request finished in 4.1655ms 405

Any ideas on why it fails to turn on the AC and returns a HTTP 405 error?

@Uksa007 - Sorry for late reply, I was away on annual leave. Anyway, are you still having issues?

Hi,
Yep, same issue as logged.
Creates three images, is that normal?
Any ideas?
Regards

On 29 Nov 2022, at 11:49 pm, Mike B @.***> wrote:

@Uksa007 - Sorry for late reply, I was away on annual leave. Anyway, are you still having issues?
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you were mentioned.

Just read your message again - for the "action" api calls (like switch aircon ON / OFF)  you need to do a POST and not a GET. Does that make sense?

Does that make sense?

Yep, using your custom component to try to "turn on" the AC, It still doesn't work, get the following in the log:
[13:55:34 INF] Request starting HTTP/1.1 POST http://<IP_ADDRESS>:5353/api/aircons/0/switch/0 application/octet-stream 0
[13:55:34 VRB] All hosts are allowed.
[13:55:34 DBG] 1 candidate(s) found for the request path '/api/aircons/0/switch/0'
[13:55:34 DBG] Endpoint 'VzduchDotek.Net.Controllers.VzduchDotekController.Switch (VzduchDotek.Net)' with route pattern 'api/aircons/{selectedId}/switch/{status}' is valid for the request path '/api/aircons/0/switch/0'
[13:55:34 DBG] Request matched endpoint 'VzduchDotek.Net.Controllers.VzduchDotekController.Switch (VzduchDotek.Net)'
[13:55:34 INF] Executing endpoint 'VzduchDotek.Net.Controllers.VzduchDotekController.Switch (VzduchDotek.Net)'
[13:55:34 INF] Route matched with {action = "Switch", controller = "VzduchDotek"}.  Raw 00010010
[13:55:35 VRB] Aircon BrandId is 0. Raw 00000000
[13:55:35 VRB] Aircon is AcOff. Raw 00000100
[13:55:35 VRB] Aircon is OK. Raw 00000100
[13:55:35 VRB] Aircon system name is Polyaire
[13:55:35 VRB] Sensor 0 IsAvailable False LowBattery False Temperature 0
[13:55:35 VRB] Sensor 1 IsAvailable False LowBattery False Temperature 0
[13:55:35 VRB] Sensor 2 IsAvailable False LowBattery False Temperature 0
[13:55:35 VRB] Sensor 3 IsAvailable False LowBattery False Temperature 0
[13:55:35 VRB] Sensor 4 IsAvailable False LowBattery False Temperature 0
[13:55:35 VRB] Sensor 5 IsAvailable False LowBattery False Temperature 0
[13:55:35 VRB] Sensor 6 IsAvailable False LowBattery False Temperature 0
[13:55:35 VRB] Sensor 7 IsAvailable False LowBattery False Temperature 0
[13:55:35 VRB] Sensor 8 IsAvailable False LowBattery False Temperature 0
[13:55:35 VRB] Sensor 9 IsAvailable False LowBattery False Temperature 0
[13:55:35 VRB] Sensor 10 IsAvailable False LowBattery False Temperature 0
[13:55:35 VRB] Sensor 11 IsAvailable False LowBattery False Temperature 0
[13:55:35 VRB] Sensor 12 IsAvailable False LowBattery False Temperature 0
[13:55:35 VRB] Sensor 13 IsAvailable False LowBattery False Temperature 0
[13:55:35 VRB] Sensor 14 IsAvailable False LowBattery False Temperature 0
[13:55:35 VRB] Sensor 15 IsAvailable False LowBattery False Temperature 0
[13:55:35 VRB] Sensor 16 IsAvailable False LowBattery False Temperature 0
[13:55:35 VRB] Sensor 17 IsAvailable False LowBattery False Temperature 0
[13:55:35 VRB] Sensor 18 IsAvailable False LowBattery False Temperature 0
[13:55:35 VRB] Sensor 19 IsAvailable False LowBattery False Temperature 0
[13:55:35 VRB] Sensor 20 IsAvailable False LowBattery False Temperature 0
[13:55:35 VRB] Sensor 21 IsAvailable False LowBattery False Temperature 0
[13:55:35 VRB] Sensor 22 IsAvailable False LowBattery False Temperature 0
[13:55:35 VRB] Sensor 23 IsAvailable False LowBattery False Temperature 0
[13:55:35 VRB] Sensor 24 IsAvailable False LowBattery False Temperature 0
[13:55:35 VRB] Sensor 25 IsAvailable False LowBattery False Temperature 0
[13:55:35 VRB] Sensor 26 IsAvailable False LowBattery False Temperature 0
[13:55:35 VRB] Sensor 27 IsAvailable False LowBattery False Temperature 0
[13:55:35 VRB] Sensor 28 IsAvailable False LowBattery False Temperature 0
[13:55:35 VRB] Sensor 29 IsAvailable False LowBattery False Temperature 0
[13:55:35 VRB] Sensor 30 IsAvailable False LowBattery False Temperature 0
[13:55:35 VRB] Sensor 31 IsAvailable False LowBattery False Temperature 0
[13:55:35 VRB]  Ac Mode is 4 - enum Cool
[13:55:35 VRB]  Fanspeed is 2 - enum Medium
[13:55:35 VRB] AirTouchId is  88411913
[13:55:35 VRB] Touchpad GroupId is  0
[13:55:35 VRB] Touchpad Temperature is  26
[13:55:35 VRB] Desired Temperature is  27
[13:55:35 VRB] Room Temperature is  25
[13:55:35 VRB] Thermostat mode is  1
[13:55:35 VRB] Zone Data 00111100 for 0
[13:55:35 VRB] Zone Data 00010001 for 1
[13:55:35 VRB] Zone Data 00010010 for 2
[13:55:35 VRB] Zone Data 10000011 for 3
[13:55:35 VRB] Zone Data 00000100 for 4
[13:55:35 VRB] Zone Data 10000101 for 5
[13:55:35 VRB] Zone Data 00000110 for 6
[13:55:35 VRB] Zone Data 00000111 for 7
[13:55:35 VRB] Zone Data 00000000 for 8
[13:55:35 VRB] Zone Data 10000001 for 9
[13:55:35 VRB] Zone Data 10000010 for 10
[13:55:35 VRB] Zone Data 10000011 for 11
[13:55:35 VRB] Zone Data 10000100 for 12
[13:55:35 VRB] Zone Data 10000101 for 13
[13:55:35 VRB] Zone Data 10000110 for 14
[13:55:35 VRB] Zone Data 10000111 for 15
[13:55:35 VRB] Zone Name Living for 0
[13:55:35 VRB] Zone Data 00111100 for Start Zone 0 and status is ZoneOff
[13:55:35 VRB] Zone Name Master for 1
[13:55:35 VRB] Zone Data 00010001 for Start Zone 1 and status is ZoneOff
[13:55:35 VRB] Zone Name Robe for 2
[13:55:35 VRB] Zone Data 00010010 for Start Zone 2 and status is ZoneOff
[13:55:35 VRB] Zone Name Sitting for 3
[13:55:35 VRB] Zone Data 10000011 for Start Zone 3 and status is ZoneOn
[13:55:35 VRB] Zone Name GUEST for 4
[13:55:35 VRB] Zone Data 00000100 for Start Zone 4 and status is ZoneOff
[13:55:35 VRB] Zone Name Bed 2 for 5
[13:55:35 VRB] Zone Data 10000101 for Start Zone 5 and status is ZoneOn
[13:55:35 VRB] Zone Name Bed 3 for 6
[13:55:35 VRB] Zone Data 00000110 for Start Zone 6 and status is ZoneOff
[13:55:35 VRB] Zone Name Bed 4 for 7
[13:55:35 VRB] Zone Data 00000111 for Start Zone 7 and status is ZoneOff
[13:55:35 VRB] Zone Name Media for 8
[13:55:35 VRB] Zone Data 00000000 for Start Zone 8 and status is ZoneOff
[13:55:35 VRB] {"Aircons": [{"Id": 18, "AirTouchId": "88411913", "Mode": "Cool", "Name": "Polyaire", "PowerStatus": "AcOff", "Status": "OK", "BrandId": 0, "TouchPadGroupId": 0, "TouchPadTemperature": 26, "DesiredTemperature": 27, "RoomTemperature": 25, "ThermostatMode": 1, "FanMode": "Medium", "Zones": [{"Id": 0, "Name": "Living", "Status": "ZoneOff", "FanValue": 0, "IsSpill": false, "DesiredTemperature": 27, "ZoneTemperatureType": "UseSensor", "Sensors": [], "$type": "Zone"}, {"Id": 1, "Name": "Master", "Status": "ZoneOff", "FanValue": 0, "IsSpill": false, "DesiredTemperature": 25, "ZoneTemperatureType": "Hide", "Sensors": [], "$type": "Zone"}, {"Id": 2, "Name": "Robe", "Status": "ZoneOff", "FanValue": 0, "IsSpill": false, "DesiredTemperature": 25, "ZoneTemperatureType": "Hide", "Sensors": [], "$type": "Zone"}, {"Id": 3, "Name": "Sitting", "Status": "ZoneOn", "FanValue": 50, "IsSpill": false, "DesiredTemperature": 25, "ZoneTemperatureType": "Hide", "Sensors": [], "$type": "Zone"}, {"Id": 4, "Name": "GUEST", "Status": "ZoneOff", "FanValue": 0, "IsSpill": false, "DesiredTemperature": 25, "ZoneTemperatureType": "Hide", "Sensors": [], "$type": "Zone"}, {"Id": 5, "Name": "Bed 2", "Status": "ZoneOn", "FanValue": 100, "IsSpill": false, "DesiredTemperature": 25, "ZoneTemperatureType": "Hide", "Sensors": [], "$type": "Zone"}, {"Id": 6, "Name": "Bed 3", "Status": "ZoneOff", "FanValue": 0, "IsSpill": false, "DesiredTemperature": 25, "ZoneTemperatureType": "Hide", "Sensors": [], "$type": "Zone"}, {"Id": 7, "Name": "Bed 4", "Status": "ZoneOff", "FanValue": 0, "IsSpill": false, "DesiredTemperature": 25, "ZoneTemperatureType": "Hide", "Sensors": [], "$type": "Zone"}, {"Id": 8, "Name": "Media", "Status": "ZoneOff", "FanValue": 0, "IsSpill": false, "DesiredTemperature": 25, "ZoneTemperatureType": "Hide", "Sensors": [], "$type": "Zone"}], "Sensors": [{"Id": 0, "IsAvailable": false, "IsLowBattery": false, "Temperature": 0, "$type": "Sensor"}, {"Id": 1, "IsAvailable": false, "IsLowBattery": false, "Temperature": 0, "$type": "Sensor"}, {"Id": 2, "IsAvailable": false, "IsLowBattery": false, "Temperature": 0, "$type": "Sensor"}, {"Id": 3, "IsAvailable": false, "IsLowBattery": false, "Temperature": 0, "$type": "Sensor"}, {"Id": 4, "IsAvailable": false, "IsLowBattery": false, "Temperature": 0, "$type": "Sensor"}, {"Id": 5, "IsAvailable": false, "IsLowBattery": false, "Temperature": 0, "$type": "Sensor"}, {"Id": 6, "IsAvailable": false, "IsLowBattery": false, "Temperature": 0, "$type": "Sensor"}, {"Id": 7, "IsAvailable": false, "IsLowBattery": false, "Temperature": 0, "$type": "Sensor"}, {"Id": 8, "IsAvailable": false, "IsLowBattery": false, "Temperature": 0, "$type": "Sensor"}, {"Id": 9, "IsAvailable": false, "IsLowBattery": false, "Temperature": 0, "$type": "Sensor"}, {"Id": 10, "IsAvailable": false, "IsLowBattery": false, "Temperature": 0, "$type": "Sensor"}, {"Id": 11, "IsAvailable": false, "IsLowBattery": false, "Temperature": 0, "$type": "Sensor"}, {"Id": 12, "IsAvailable": false, "IsLowBattery": false, "Temperature": 0, "$type": "Sensor"}, {"Id": 13, "IsAvailable": false, "IsLowBattery": false, "Temperature": 0, "$type": "Sensor"}, {"Id": 14, "IsAvailable": false, "IsLowBattery": false, "Temperature": 0, "$type": "Sensor"}, {"Id": 15, "IsAvailable": false, "IsLowBattery": false, "Temperature": 0, "$type": "Sensor"}, {"Id": 16, "IsAvailable": false, "IsLowBattery": false, "Temperature": 0, "$type": "Sensor"}, {"Id": 17, "IsAvailable": false, "IsLowBattery": false, "Temperature": 0, "$type": "Sensor"}, {"Id": 18, "IsAvailable": false, "IsLowBattery": false, "Temperature": 0, "$type": "Sensor"}, {"Id": 19, "IsAvailable": false, "IsLowBattery": false, "Temperature": 0, "$type": "Sensor"}, {"Id": 20, "IsAvailable": false, "IsLowBattery": false, "Temperature": 0, "$type": "Sensor"}, {"Id": 21, "IsAvailable": false, "IsLowBattery": false, "Temperature": 0, "$type": "Sensor"}, {"Id": 22, "IsAvailable": false, "IsLowBattery": false, "Temperature": 0, "$type": "Sensor"}, {"Id": 23, "IsAvailable": false, "IsLowBattery": false, "Temperature": 0, "$type": "Sensor"}, {"Id": 24, "IsAvailable": false, "IsLowBattery": false, "Temperature": 0, "$type": "Sensor"}, {"Id": 25, "IsAvailable": false, "IsLowBattery": false, "Temperature": 0, "$type": "Sensor"}, {"Id": 26, "IsAvailable": false, "IsLowBattery": false, "Temperature": 0, "$type": "Sensor"}, {"Id": 27, "IsAvailable": false, "IsLowBattery": false, "Temperature": 0, "$type": "Sensor"}, {"Id": 28, "IsAvailable": false, "IsLowBattery": false, "Temperature": 0, "$type": "Sensor"}, {"Id": 29, "IsAvailable": false, "IsLowBattery": false, "Temperature": 0, "$type": "Sensor"}, {"Id": 30, "IsAvailable": false, "IsLowBattery": false, "Temperature": 0, "$type": "Sensor"}, {"Id": 31, "IsAvailable": false, "IsLowBattery": false, "Temperature": 0, "$type": "Sensor"}], "Version": "0.4", "$type": "Aircon"}], "SelectedAc": 0, "$type": "AirTouchSystem"}
[13:55:35 INF] Executed action method VzduchDotek.Net.Controllers.VzduchDotekController.Switch (VzduchDotek.Net), returned result Microsoft.AspNetCore.Mvc.ContentResult in 180.5331ms.
[13:55:35 VRB] Action Filter: Before executing OnActionExecuted on filter Microsoft.AspNetCore.Mvc.Infrastructure.ModelStateInvalidFilter.
[13:55:35 VRB] Action Filter: After executing OnActionExecuted on filter Microsoft.AspNetCore.Mvc.Infrastructure.ModelStateInvalidFilter.
[13:55:35 VRB] Action Filter: Before executing OnActionExecuted on filter Microsoft.AspNetCore.Mvc.ModelBinding.UnsupportedContentTypeFilter.
[13:55:35 VRB] Action Filter: After executing OnActionExecuted on filter Microsoft.AspNetCore.Mvc.ModelBinding.UnsupportedContentTypeFilter.
[13:55:35 VRB] Result Filter: Before executing OnResultExecuting on filter Microsoft.AspNetCore.Mvc.Infrastructure.ClientErrorResultFilter.
[13:55:35 VRB] Result Filter: After executing OnResultExecuting on filter Microsoft.AspNetCore.Mvc.Infrastructure.ClientErrorResultFilter.
[13:55:35 VRB] Before executing action result Microsoft.AspNetCore.Mvc.ContentResult.
[13:55:35 INF] Executing ContentResult with HTTP Response ContentType of application/json
[13:55:35 VRB] After executing action result Microsoft.AspNetCore.Mvc.ContentResult.
[13:55:35 VRB] Result Filter: Before executing OnResultExecuted on filter Microsoft.AspNetCore.Mvc.Infrastructure.ClientErrorResultFilter.
[13:55:35 VRB] Result Filter: After executing OnResultExecuted on filter Microsoft.AspNetCore.Mvc.Infrastructure.ClientErrorResultFilter.
[13:55:35 INF] Executed action VzduchDotek.Net.Controllers.VzduchDotekController.Switch (VzduchDotek.Net) in 192.9144ms
[13:55:35 INF] Executed endpoint 'VzduchDotek.Net.Controllers.VzduchDotekController.Switch (VzduchDotek.Net)'
[13:55:35 DBG] Connection id "0HMMIGQ8VSKF1" completed keep alive response.
[13:55:35 INF] Request finished in 211.9168ms 200 application/json

You are turning it OFF
[13:55:34 VRB] Executing action method VzduchDotek.Net.Controllers.VzduchDotekController.Switch (VzduchDotek.Net) with arguments (["0", "AcOff"])

s/be POST http://<IP_ADDRESS>:5353/api/aircons/0/switch/1

You are turning it OFF

Yea I think I worked it out, pushing the power button, doesn't toggle the power it only turns it off(not like the app), seems you have to push the already selected cool mode to turn it on?
Do I have that right?


Don't work anymore on the last Insider Build

Microsoft  has disabled the trick to apply Mica with dwmapi. In the last Insider Build.
Only solution now seems to recreate it like https://github.com/ad2017gd/Mica32.

Yep I am looking into doing something like that.

I have done an implementation. But Airspace Issue, a crazy thing. For the moment I have abandoned.
If you want here the code. WPF is render behind the compositor. I don't find a solution.
Two exist but not very good:

Overlapping Windows:
You can create multiple WPF windows one for rendereing the WPF Content and one for Acrylic Effect, These windows should be transparent and must communicate with each other to sync the window resize, window drag and other events, this is possible by overriding WndProc. But this method will cause Flickerng on resize and also affects the Acrylic Effect during maximize animation. (This has been tested before)

WPF Swapchain Hack:
This is another possible way that i haven't tested yet, but theoretically it might be working. This can be done by hacking into WPF Swapchain to obtain its back buffer and copy it into an ID2D1Bitmap or similar and then passing it to the Windows.UI.Composition.Visual by using somethng like Composition Native Interoperation. By this way we may be able to overcome the Airspace Issue with WPF Acrylic Effect. (😅 The truth is Currently i was only able to get the swapchain backbuffer from WPF)

Convert the composer Sprite to a Win2D buffer, to convert it to a WPF bitmapImage or similar. But I am stuck at the first step.

Here the code if you want
InteropCompositor-master.zip

GDI+ solution can also work. But some problem with the current implementation for the moment (with multiple monitor) https://github.com/ad2017gd/Mica32/issues/3
But don't know if it is possible to pass the hwnd of WPF to a C++ dll. I think yes in theory.

Well,
I've worked on a wrapper for Mica32 it actually works I've been able to pass the HWND of the WPF window.
It does work but my only issues right now is that it makes a rectangle that delete the controls in the Window.
I'd be trying to modify that to return a brush or something, We will see.
If you wanna take a look I've pushed a branch with the Mica32 and Mica32Wrapper:
https://github.com/Simnico99/MicaWPF/tree/Mica32-dev-test

Thx to Difegue I've been able to make Mica work in the last Preview update:
https://github.com/Difegue/TVC-16

Yeah official API now available.


Ccould not read Username for 'https://': terminal prompts disabled

Agent version and platform
Version of your agent? 2.112.0
Windows Server 2016
VSTS type and version
On-Prem TFS
Version 15.112.26301.0
What's not working?
After upgrading the build server's agent to 2.112.0 it is failing on Get Sourses with error code 128 connecting to a local git repo to TFS. It looks like it is prompting for a user however the Authorization should be coming from the bearer setting the server is putting in, correct? The Get works for a little bit -- usually right after a restart of the VSTS service, but then fails and continues to fail until we do a restart and wait a few minutes.
2017-03-10T18:28:02.4328754Z ##[section]Starting: Get Sources
2017-03-10T18:28:03.6516336Z Syncing repository: ApiClient (TfsGit)
2017-03-10T18:28:03.6672531Z Prepending Path environment variable with directory containing 'git.exe'.
2017-03-10T18:28:03.6828804Z ##[command]git version
2017-03-10T18:28:05.2922668Z ##[command]git config --get remote.origin.url
2017-03-10T18:28:06.7297637Z ##[command]git config gc.auto 0
2017-03-10T18:28:08.2610143Z ##[command]git config --get-all http.https://localdnsname/DefaultCollection/My-Zone/_git/MyRepo.extraheader
2017-03-10T18:28:09.8391393Z ##[command]git config --get-all http.proxy
2017-03-10T18:28:11.2766391Z ##[command]git -c http.extraheader="AUTHORIZATION: bearer ********" fetch --tags --prune --progress origin
2017-03-10T18:28:14.9016761Z fatal: could not read Username for 'https://localdnsname': terminal prompts disabled
2017-03-10T18:28:14.9953932Z ##[error]Git fetch failed with exit code: 128
2017-03-10T18:28:15.0110188Z ##[section]Finishing: Get Sources

@mechanic22 is there any log entry in your TFS AT's event log about anything around auth failure in the same time range?

@mechanic22 are you still hitting this issue? do you have anything between your agent and TFS, like proxy or load balance?

close for now. let us know if you still hitting this issue.


[mini.files] Multiple key mapping for each action | Override default go_in behavior

Contributing guidelines

[X] I have read CONTRIBUTING.md
[X] I have read CODE_OF_CONDUCT.md

Module(s)
mini.files
Description
Recently migrating from nvim-tree to mini.files (and eventually the mini.nvim lib), I was surprised how good and lightweight it is. So thank you for this amazing library.
For mini.files, I saw some features that I felt missing compared to nvim-tree and I hope these would be considered:

I would like to have the ability to map multiple keys for as single action like go in or go out. I usually map  and <2-LeftMouse> to open directories or files.
Is it possible to override the default behavior of MiniFiles.go_in() (opening the file in a new buffer)? In nvim-tree I was able to setup so that when opening a file it opens in a new tab (or if the file is already opened in a tab then it jumps to that tab (tab drop)).

Thanks for the suggestion!

This is already possible via creating buffer-local mappings in dedicated event, as described in #/879, #534, and #409. The solution is similar in spirit as the one described in examples for a different purpose.
Yes, it is possible by creating buffer-local mappings together with "disabling" creating a default mapping via config.mappings.go_in = ''. The tabpage part of the question is possible via changing the target window (i.e. the window inside which the buffer for the file will be shown). See this example. You can change the logic of target window change to your liking. Also, couple of clarifications here:

The default behavior of go_in() in case a file is already opened in some buffer is to show that same buffer in the target window. Not "open file in a new buffer".
My suggestion would be to override the go_in_plus behavior leaving go_in untouched for common usage (but that is a matter of taste).

Closing as both duplicate and already possible.