Checked in bert file is not compatible with iree-run-module

The bert_encoder_unrolled_fake_weights.mlir file contains some check dialect ops:
    check.expect_almost_eq_const(%5390, dense<895.256> : tensor<1x384xf32>) : tensor<1x384xf32>
    check.expect_almost_eq_const(%5392, dense<895.256> : tensor<1x384xf32>) : tensor<1x384xf32>

so it isn't compatible with a iree-translate -> iree-run-module workflow:
λ .\iree\tools\iree-translate.exe -iree-mlir-to-vm-bytecode-module -iree-hal-target-backends=vmla ../iree/iree/test/e2e/models/bert_encoder_unrolled_fake_weights.mlir -o ../iree-tmp/bert_encoder_unrolled_fake_weights_vmla.module
λ .\iree\tools\iree-run-module.exe --driver=vmla --entry_function=serving_default --module_file=../iree-tmp/bert_encoder_unrolled_fake_weights_vmla.module
Creating driver and device for 'vmla'...
Creating driver and device for 'vmla'...
Check failed: ::iree::IsOk(Run()) D:\dev\projects\iree\iree\vm\context.c:466: NOT_FOUND; module 'check' required for import 'check.expect_almost_eq' not registered with the context; creating context

(aside: why two "Creating driver..." logs?)
a simple fix is to change that file from using check to being a LIT test, but we could also host model files somewhere outside of the repo (with real weights) and advertise those.

It will also run into timeout, IIRC. Overall the time is the same, the difference is to put the compilation time to the test time. (if using iree-run-mlir). And I think this will also remove it from Android test.

Yeah there are reasons for things not being lit tests :-P

the pass needed (as discussed in discord) is as simple as what scott added for the $sync/$async shims, so someone just needs to do it

I'll add my discord comment so people don't have to go hunting:
We discussed reworking check to do more work in the compiler. Then we could write tests like
function foo(%arg0 : i32) {inputs = [3 : i32], expected_outputs = [6 : i32] } {
  %0 = addi %arg0 %arg0 : i32
  return %0 : i3
}

and a compiler pass would turn that into
function foo(%arg0 : i32) {
  %0 = addi %arg0 %arg0 : i32
  return %0 : i3
}

function $check_foo() {
  %c3 = iree.unfoldable_constant 3 : i32
  %0 = call @foo(%c3, %c3) : (i32, i32) -> i32
  check.expect_eq_const(%0, 6 : i32) : i32
  return
}

(the pass would have to be optional, obviously)

We don't necessarily need to change this test, but I do want there to be some bert file accessible to people without needing to run Bazel/Python code that is compatible with iree-run-module. it could be https://github.com/google/iree/blob/main/iree/test/e2e/models/bert_encoder_unrolled_fake_weights.mlir, it could be a file in https://github.com/google/iree/tree/main/iree/samples/models (like with MNIST), or it could be a file in public cloud storage that we reference in documentation somewhere.
Reworking check in the suggested ways sounds generally useful, but we don't need to go that far for this [yet].

I already made a cloud bucket and uploaded the artifacts: https://storage.googleapis.com/iree-model-artifacts/iree-mobile-bert-artifacts-6fe4616e0ab9958eb18f368960a31276f1362029.tar.gz

That bucket is world-readable and members of iree-team can upload new artifacts

Nice, thanks @GMNGeoffrey ! Let's mention that somewhere in code/docs?
Are there other artifacts there as well? If there isn't an index or directory listing already should we make our own?
I naively tried https://storage.googleapis.com/iree-model-artifacts/ but that 404s :P

Closing as a dupe of #1538 - we should have a pass that strips the check test dialect if wanting to produce standalone modules.


fix(render): don't need redraw when nothing be changed

Codecov Report

Merging #89 into develop will decrease coverage by 7.63%.
The diff coverage is n/a.

@@             Coverage Diff             @@
##           develop      #89      +/-   ##
===========================================
- Coverage     71.8%   64.16%   -7.64%
===========================================
  Files          200      200
  Lines        10618    10618
===========================================
- Hits          7624     6813     -811
- Misses        2994     3805     +811

Impacted Files
Coverage Δ

framework/tests/dataSource/ipList.h
0% <0%> (-100%)
:arrow_down:

framework/tests/demuxer/demuxerUnitTest.cpp
0% <0%> (-100%)
:arrow_down:

framework/tests/decoder/decoderUnitTest.cpp
0% <0%> (-93.48%)
:arrow_down:

framework/tests/dataSource/dataSourceUnitTest.cpp
0% <0%> (-93.34%)
:arrow_down:

framework/tests/demuxer/demuxerUtils.cpp
0% <0%> (-76%)
:arrow_down:

framework/data_source/ffmpeg_data_source.cpp
9.37% <0%> (-65.63%)
:arrow_down:

framework/demuxer/AVBSF.cpp
25.27% <0%> (-42.86%)
:arrow_down:

mediaPlayer/subTitle/subTitlePlayer.h
50% <0%> (-37.5%)
:arrow_down:

framework/demuxer/play_list/SegmentTracker.h
66.66% <0%> (-33.34%)
:arrow_down:

mediaPlayer/mediaPlayerSubTitleListener.h
50% <0%> (-33.34%)
:arrow_down:

... and 25 more

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 f823d27...5d24cd0. Read the comment docs.


[Questions] - Finding elements in QT application

I do QA on a QT application for macOS  and Windows.
I have been working on making automated tests with Appium 1.22.0 through WebdriverIO.
The application does not have much support for automation id's or other kinds of labels, however we have had some success with using xpath via the AppiumForMac app, but we still have some issues and that is why I am looking into mac2 driver.
However, after trying out the mac2 driver and following the examples from find-e2e-specs.js
I keep getting errors saying it can not find the element

My questions are.
Is it not possible to find elements using xpath in the format that AppiumForMac give me?
When I use the Accessibility Inspector, I get something like this.
note: Not the same element as in other screenshot.

Are there anything here I can use to interact with ??
If so, how should i format it when writing the code ?
If this driver is not the right solution for this application, can you recommend anything else?

When I try to install the previous mac driver I get this error

This driver is based on Apple's XCTest and only supports what the latter does.
The legacy mac driver is not supported by the Appium team nor it is maintained.


This script doesn't get enough attention!  :)  One issue, though, re: 3d PLY generation speed

I tried it for the first time last night and noticed my GPU was running at 0% but my CPU pegged at 100%; it appears to run purely on CPU, which certainly goes a long way to explaining why it's so slow!
Having converted code to PyTorch before to run on GPU, it's actually not as scary as it sounds. torch.Tensors are basically the same thing as numpy.array.  There's a couple minor issues that generally come up in the conversion process - for example, they require more explicit conversions in some cases, and a few functions are different - but for the most part, just substitute torch.Tensor as the type for numpy.array. And as a bonus, I also found that for any conversion issues that comes up, ChatGPT usually knows the answer!  :)

what do you mean，  Im not scriptor,  do you mean you changed the code to make it ,  useingGPU   from Mesh to videos?
does it speed up faster?

I tried it for the first time last night and noticed my GPU was running at 0% but my CPU pegged at 100%; it appears to run purely on CPU, which certainly goes a long way to explaining why it's so slow!
Having converted code to PyTorch before to run on GPU, it's actually not as scary as it sounds. torch.Tensors are basically the same thing as numpy.array. There's a couple minor issues that generally come up in the conversion process - for example, they require more explicit conversions in some cases, and a few functions are different - but for the most part, just substitute torch.Tensor as the type for numpy.array. And as a bonus, I also found that for any conversion issues that comes up, ChatGPT usually knows the answer! :)

Are you successful on the GPU? Will it get faster?

+1, would love to know if this ended up working


when will segmentation configs out?

Many thanks for your excellent work.
I have tried to used the pretrained  PoolFormer_S12 with SemanticFPN configs from MMSegmentation with default setting (16w iterations). But, the model just achieved 36+ mIoU (Single-scale testing) over ADE20k, which is much lower than the result (37.2) in the main paper.
Could you please share the segmentation configs?

Hi @ShihuaHuang95 ,
Thank you very much for your attention to our work. I will push myself to arrange and release the configs and models in about 3 days, no more than a week. Actually, the segmentation configs of PoolFormer just simply follow those of PVT although PVT's hyper-parameters may not be optimal to PoolFormer.

Hi @ShihuaHuang95 ,
The segmentation configs are released here.

Noted with thanks!


Change the version to 3.2.0-RC1

I think you meant 3.3.0-RC1 :-)

That is why I shouldn't do things tired 😅 . FIxed


hero sometimes looks directly forward

Bumping this, is it still an issue?

it's still an issue. i'll fix it in my next PR


Why is the output format of shap_value of xgboost and RF different?

I use the exact same data, y has 2 classes, the output of lightGBM and RF are lists, and the list contains a two-dimensional matrix with the same dimension as the data, but the output of xgboost is only a two-dimensional matrix.
, the xgboost plot and beeswam are the same
The summary_plot is also different, the xgboost plot is the same as beeswam.
# XGBoost: <class 'numpy.ndarray'> (32561, 12)
print("XGBoost:", type(shap_value), shap_value.shape)

# lightGBM: <class 'list'> (32561, 12) (32561, 12)
print("lightGBM:", type(shap_values1), shap_values1[0].shape, shap_values1[1].shape)

# RF: <class 'list'> (32561, 12) (32561, 12)
print("RF:", type(shap_values2), shap_values2[0].shape, shap_values2[1].shape)

I tried to trace the call, the call process  is as follows:

XGBoost: shap_values() --> phi=xgbooost.predict(X, pred_contribs=True) --> out=phi[:, :-1] --> return out
lightGBM:shap_values()-->phi=lightgbm.predict(X, pred_contrib=True)--> phi2 = np.concatenate((0-phi, phi), axis=-1) -->out = [-phi[:,:-1], phi[:,-1]]
RF:  shap_values() -->  phi = np.zeros((X.shape[0], X.shape[1]+1, num_outputs)) --> _cext.dense_tree_shap(phi) --> out=[phi[:,:,0], phi[:,:,1]]

Why does lightGBM make a copy of $-phi$ but XGBoost doesn't


track changes/transcript for tool calls

This PR adds treatment for the ToolCall event that parallels what we do for SubtaskEvent, specifically:

ToolEvent now carries an events field that has the transcript of events that occurred within the tool call.
StoreEvent is now emitted inside this event stream if the store is updated during the tool call.

Additionally, there are two content-aliasing related changes here:

All content aliasing is done at the root Sample (previously SubtaskEvent had its own content bucket, no longer).
When resolving content aliases all changes in StateEvent should be handled (previously we used this conditional: if change.path.startswith("/messages") or change.path.startswith("/output"):, no longer)

A related question, currently StateEvent can duplicate changes when there are nested steps / subtasks / tool calls. This is not incorrect as we do often want to see specifically which state changes occurred where. However, this does give us some motivation to eliminate spurious internal steps. One that note, are we making use of the "generate_loop" step and if not should we remove it?

One that note, are we making use of the "generate_loop" step and if not should we remove it?

We're currently only using it to explicitly filter it out of displaying, so removing is a good idea.

Pushed view updates which address changes to content resolution (now resolving at top level and resolving all fields - could discuss this). Also now displaying a 'Transcript' tab for tool events, if events are present.

Okay, thanks for review! I will remove the generate_step() then merge.
Yes, we should indeed be resolving all fields (the traversal is cheap and its much simpler to not have any filters in place).

Removal of "generate_loop" step is in (I will let you review that and merge once you are satisfied it is correct)


Some confusions on the anti-patterns

Hey,
I feel we should add more clarity on the anti pattern bits.
For instance, in the refs over findDOMNode(), in the code comments, it's saying: Use findDOMNode() over callback refs which is kind of stating you should use findDOMNode over refs, although after reading the references, it's clearly the opposite we should do.
Although on the HOC over Mixins example (and that's where I think there is some confusion), it's saying Use Higher order components over Mixins, which this time is the right approach.
How do you feel about choosing one or the other approach but staying consistent? I'd suggest saying something like Use "this" over "that" kind of structure.

@Magellol You're right. Accidentally, typed the other way round.
I'll fix it. Thanks :)


Throw better errors for closed sockets

Avoids syscall overhead as a bonus. Same as #150 but for Beta branch.

Thanks to @BrettRToomey for the suggested improvement!

This one has quite a few conflicts now. Please re-open against the latest branch if you can! Thanks

This is no longer relevant anyway.


No media_player after installation and config

Hi,
Thanks for doing this great work and for sharing! I hope you enjoyed the coffee and are able to help me.
I have a Samsung HW-Q960A (think same as 950 in US) installed and running fine in SmartThings app. I am able to use the SmartThings integration and access all my devices in SmartThings. For the Soundbar I can only see status and turn on/Off, so I installed your component with HACS. I have booted HA after install in HACS and after config, but the media_player don´t show up among the entities. I have turned on debug-logging for custom_components.smartthings_soundbar, but there are no messages in the log.
My configuration.yaml is liek this
media_player:
  - platform: smartthings_soundbar
    name: Soundbar
    api_key: "fcd9983f-fb9d-4d91-b939-XXXXXXXXXXXX"
    device_id: "93e650eb-9e34-f161-8667-XXXXXXXXXXXXX"

logger:
  default: warning
  logs:
    custom_components.smartthings_soundbar: debug

If I am not able to select input-source with your great component, I am afraid I will have to retrun the soundbar. So your help will be highly appreacted!!!
best regards
Erik :-)

Are you sure there is absolutely nothing in logs? It might be just after HA start

The only mention of the integation in the log is:
2022-01-21 15:30:30 WARNING (SyncWorker_1) [homeassistant.loader] We found a custom integration smartthings_soundbar which has not been tested by Home Assistant. This component might cause stability problems, be sure to disable it if you experience issues with Home Assistant
```

I have checked the code and there should be an entity even when communication with SmartThings fails... Can you check your config again?
By the way, this integration is really poorly implemented, I have also a fork of built-in SmartThings integration that adds support for media players, but it is not up to date with the latest HA version. I will try to add it officially to HA (hopefully soon)

Thanks for following up!
There's is absolutely no entity for the sounder :-) I have tried a gazillion times and checked.
I tried the exact same config on another instance for HA (with with 2021.12.09 instead of 2021.12.10) and the it works perfectly! I have also tried the script and it output:
STATUS
{'main': {'mndt': {'value': '2021-01-01'}, 'mnfv': {'value': 'HW-Q960AWWB-1010.1'}, 'role': {'value': None}, 'mnhw': {'value': ''}, 'detailName': {'value': ''}, 'data': {'value': None}, 'di': {'value': 'DEVICE_ID'}, 'supportedPlaybackCommands': {'value': '["play","pause","stop"]'}, 'supportedInputSources': {'value': '["digital","HDMI1","bluetooth","HDMI2","wifi"]'}, 'mnsl': {'value': ''}, 'dmv': {'value': 'res.1.1.0,sh.1.1.0'}, 'switch': {'value': 'on'}, 'mode': {'value': '25'}, 'vid': {'value': 'VD-NetworkAudio-002S'}, 'mnpv': {'value': '5.5'}, 'icv': {'value': 'core.1.1.0'}, 'st': {'value': '1970-01-01T00:00:31Z'}, 'totalTime': {'value': '0'}, 'playbackStatus': {'value': 'stopped'}, 'mute': {'value': 'unmuted'}, 'n': {'value': 'Samsung Soundbar Q960A'}, 'volume': {'value': '0', 'unit': '%'}, 'mnmo': {'value': 'HW-Q960A'}, 'mnmn': {'value': 'Samsung Electronics'}, 'mnml': {'value': ''}, 'mnos': {'value': 'Tizen'}, 'pi': {'value': 'DEVICE_ID'}, 'inputSource': {'value': 'wifi'}, 'masterName': {'value': None}, 'status': {'value': None}, 'audioTrackData': {'value': '{"title":"NRK P1 Oslo og Akershus","artist":"","album":""}'}, 'elapsedTime': {'value': '0'}}}

I am now updating the second instance to 2021.12.10 as well to see if it that version making problems. If it still works on second instance HA, I am lost in what could be wrong with the main instance of HA. All other HACS components etc work fine.
Would be FANTASTIC of the built in integration could have media player added :-)
Thanks again for your support!! :-)

@PiotrMachowski  I have updated my previous comment to reflect the fact the the second HA instance also work with 2021.12.10. No I am lost on where to move next......

@elgeniskogen Maybe there is a problem in configuration file that results in ignoring this media_player entry?

@elgeniskogen Have you found the root of your problem?
I will close this issue now, as it doesn't seem it is caused by the integration's code.

Now it is working :-) My bad, as I had two media_player keys in the config :-( Sorry!!


Fix bug with Cellcard numbers starting with +855129

This fixes a bug which was introduced by accident in https://github.com/floere/phony/commit/94843365b337c43d1dfba28d5877007e54718951

Coverage remained the same at 99.181% when pulling c9ae25640fd237bd777d08f390bf07c58596e185 on dwilkie:fix_cambodia_mobitel_bug into 294fdce2fe81bde42231aa4f13e1ba195aef105c on floere:master.

Coverage remained the same at 99.181% when pulling c9ae25640fd237bd777d08f390bf07c58596e185 on dwilkie:fix_cambodia_mobitel_bug into 294fdce2fe81bde42231aa4f13e1ba195aef105c on floere:master.

@dwilkie Thanks so much for catching this, good one! 🎉 Released in 2.15.49! 🚀  (And thanks so much for your patience, I was inundated with work during the time you provided this PR 😔)

No problem. Thank you for still maintaining this gem. I also know from
experience maintaining an open source library is most of the time a
thankless task. Alot of the time people don’t appreciate that you’re doing
this in you own time and for free. I just want to say that I appreciate
your work. Thank you
On Fri, Nov 24, 2017 at 5:37 PM Florian R. Hanke<EMAIL_ADDRESS>wrote:

@dwilkie https://github.com/dwilkie Thanks so much for catching this,
good one! 🎉 Released in 2.15.49! 🚀 (And thanks so much for your
patience, I was inundated with work during the time you provided this PR
😔)
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/floere/phony/pull/389#issuecomment-346797600, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AAHyX10-d_IgBspcy9oy0bLR79-Oi0p-ks5s5pxngaJpZM4PVh7b
.


Use GITHUB_ACTION_PATH for requirements.txt file

one more GITHUB_ACTION_PATH that I think we need 👍🏼

You're right, my mistake. I will try to merge it as soon as possible.


docs: Wrap Documentation

Closes #53

:tada: This PR is included in version 1.0.0 :tada:
The release is available on:

GitHub release
v1.0.0

Your semantic-release bot :package::rocket:


samples: migrate samples from GoogleCloudPlatform/java-docs-samples /pubsub/cloud-client

These were already migrated


typeclass inference crashes

Description
This was a problem minimized and reported by @digama0 in April on Zulip, but it didn't make it here.
Steps to Reproduce
class HasFoo (α : Type u) where foo : α → Bool
class GoodFoo (α) (foo : α → Bool) : Prop
class BetterFoo (α) (foo : α → Bool) extends GoodFoo α foo

def noncanonical (f : HasFoo α) : HasFoo α where foo a := f.foo a && true

instance inst1 [f : HasFoo α] : GoodFoo α (noncanonical f).foo := sorry
instance inst2 : HasFoo Nat := sorry
instance inst3 : BetterFoo Nat HasFoo.foo := sorry
instance inst4 : GoodFoo Nat HasFoo.foo := inferInstance

Expected behavior:
One would expect that inst3`` results in successful typeclass search at inferInstanceininst4. If we comment out inst1`, which ought to be irrelevant, then this actually happens.
Actual behavior:
inferInstance fails with
typeclass instance problem is stuck, it is often due to metavariables
  GoodFoo Nat HasFoo.foo

Tracing instance synthesis reveals that the inference process crashes when processing the first instance, meaning that the rest of the instance search is not tried and this very easy instance search problem fails:
[Meta.synthInstance] 💥 GoodFoo Nat HasFoo.foo ▼
  [] new goal GoodFoo Nat HasFoo.foo ▼
  [instances]<EMAIL_ADDRESS>@inst1]
  [] 💥 apply @inst1 to GoodFoo Nat HasFoo.foo ▼
  [tryResolve] 💥 GoodFoo Nat HasFoo.foo ≟ GoodFoo ?m.175 HasFoo.foo

Versions
Still present at 4.11.0-rc2
Impact
This affects some typeclasses currently in Batteries about Ord instances, which we may want to adopt if available.
Add :+1: to issues you consider important. If others are impacted by this issue, please ask them to add :+1: to it.

The relevant question is why inst1 crashed. It looks like it couldn't prove nor disprove whether it is applicable:
  [isDefEq] 💥 GoodFoo Nat HasFoo.foo =?= GoodFoo ?m.206 HasFoo.foo ▼
  [] ✅ Nat =?= ?m.206 ▶
  [] 💥 HasFoo.foo =?= HasFoo.foo ▼
  [] ✅ Nat =?= Nat
  [] 💥 inst2 =?= noncanonical ?m.207 ▼
  [] 💥 sorryAx (HasFoo Nat) =?= { foo := fun a => HasFoo.foo a && true } ▼
  [] ✅ HasFoo Nat =?= HasFoo Nat
  [] 💥 HasFoo.foo =?= fun a => HasFoo.foo a && true ▼
  [] 💥 fun a => HasFoo.foo a && true =?= fun a => HasFoo.foo a ▼
  [] ✅ Nat =?= Nat
  [] 💥 HasFoo.foo a && true =?= HasFoo.foo a ▼
  [] 💥 match HasFoo.foo a with
    | false => false
    | true => true =?= HasFoo.foo a ▼
  [] 💥 match HasFoo.foo a with
    | false => false
    | true => true =?= (sorryAx (HasFoo Nat)).1 a ▼
  [] ❌ and.match_1 =?= (sorryAx (HasFoo Nat)).1 ▶
  [onFailure] 💥 match HasFoo.foo a with
    | false => false
    | true => true =?= (sorryAx (HasFoo Nat)).1 a

Absent further clarification on what the issue is supposed to be, I think we'll have to close this as nonactionable.


Parameters flag in build_loadable_extension

This fixes an upcoming PR that introduces the parameters field to the build_loadable_extension. This field encoded as a string so as to be extensible in the future, and replaces the (previously borked) IGNORE_WARNINGS field (see duckdb/duckdb#4394).

Let's try this without updating the submodules


clang > 3.2 but std=c++98

Recent changes seem to have introduced a "noexcept" call.  When building with clang (>3.2) but without -std=c++11, I get the following error:
src/tests/TestTestMacros.cpp:167:27: error: expected ';' at end of declaration list
      ~FixtureDtorThrows() _NOEXCEPT_OP(false) {
                          ^
                          ;
1 error generated.
make[3]: *** [src/tests/TestTestMacros.o] Error 1

At first glance I'm guessing this is because the noexcept(false) that this macro resolves is not valid c++98?
Thanks!

You would be correct. This needs to be based on the compiler features enabled, not the compiler itself. This will require CMake and/or autotools changes.

@ecoon Can you please provide steps to reproduce? Specifically looking for the relevant CMake and/or autotools commands and build commands.
Thanks!


Fix accordion trigger icon shrink when text get to long

Subject: Fix Accordion trigger icon shrinking issue
Body:
Hi ,
I've made some updates to fix an issue with the Accordion trigger icon shrinking when the text gets too long. Here are the changes I've made:

Added the class name "shrink-0" to the ChevronDown icon to prevent it from shrinking

Added the class name "text-left" to the AccordionPrimitive.Trigger to left-align the text
I've tested these changes locally and they fix the issue. Please review and merge the pull request when you have a chance.

Thanks,

related issue

👀

@jocarrd could you plz give me your twitter

#717 solved the issue. Please close this PR.


doc: updated outbound traffic information for operator hub access

Description
Issue: 10133
Release required?

[x] No release
[ ] Patch release (x.x.X)
[ ] Minor release (x.X.x)
[ ] Major release (X.x.x)

Release notes content

Run the pipeline
If the CI pipeline doesn't run when you create the PR, the PR requires a user with GitHub collaborators access to run the pipeline.
Run the CI pipeline when the PR is ready for review and you expect tests to pass. Add a comment to the PR with the following text:
/run pipeline

Checklist for reviewers

[ ] If relevant, a test for the change is included or updated with this PR.
[x] If relevant, documentation for the change is included or updated with this PR.

For mergers

Use a conventional commit message to set the release level. Follow the guidelines.
Include information that users need to know about the PR in the commit message. The commit message becomes part of the GitHub release notes.
Use the Squash and merge option.

/run pipeline

@imprateeksh Thinking about this more, perhaps we do set disable_outbound_traffic_protection to true in the basic example (add a code comment to explaining what it does, or pointing to relevant IKS docs) and update the title of this example to Basic single zone cluster with allowed outbound traffic

Hi @ocofaigh - In basic example, currently we are not setting disable_outbound_traffic_protection as true and it picks up the default value which is false. This can be seen here and unlike other versions, the value is chosen from variable's default value.

/run pipeline

/run pipeline

Basic example test is also successful. Logs from basic example (using OCP version 4.15) are shared here:
output_test_basic_example.log

:tada: This PR is included in version 3.30.2 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


workbox-cli -> workbox in the main example

Thanks, @webmaxru!

(The Travis CI build succeeded when I re-ran it... not sure why the UI still shows it as failing, but I can confirm that this PR shouldn't add in any broken links.)


context: WithVersion and context package cleanup

By adding WithVersion to the context package, we can simplify context setup in the application. This avoids some odd bugs where instantiation order can lead to missing instance.id or version from log messages.
We also allow interface{} keys when using logger to support integer keys.

LGTM. I'm still not crazy about moving towards greater use of interface{} types, but I see the point about compatibility with context keys.


WhatsApp info +1 (571) 541‑2918 ADWARE RECOVERY SPECIALIST IS THE TRUSTED BITCOIN RECOVERY COMPANY

WhatsApp info: +1 (571) 541‑2918
Website info: www.adwarerecoveryspecialist.expert
Telegram info: @AWARE_RECOVERY_SPECIALIST
For many, the allure of quick cash and the promise of large gains can cloud judgment, leading to devastating losses and financial ruin. But amidst the chaos and uncertainty, there are beacons of hope – companies like ADWARE RECOVERY SPECIALIST, dedicated to helping victims reclaim what is rightfully theirs. Imagine this: you've taken a gamble, hoping to strike it rich in the volatile world of Bitcoin investments. You've poured thousands, perhaps even hundreds of thousands of dollars into what seemed like a surefire opportunity, only to realize too late that you've been deceived by cunning scammers. Your hard-earned money once thought to be a ticket to financial freedom, is now gone, stolen by faceless criminals operating in the shadows of the internet. This is where ADWARE RECOVERY SPECIALIST steps in – a trusted ally in the fight against cryptocurrency fraud. With years of experience and a proven track record of success, ADWARE RECOVERY SPECIALIST offers a lifeline to those who have fallen victim to scams and deception. Their team of skilled professionals understands the intricacies of the digital landscape, employing cutting-edge technology and expertise to track down and recover stolen funds. But ADWARE RECOVERY SPECIALIST is more than just a company – it's a beacon of integrity in an industry plagued by deceit. Their commitment to honesty and transparency sets them apart, earning the trust and respect of clients worldwide. When you work with ADWARE RECOVERY SPECIALIST, you can rest assured that your case will be handled with the utmost professionalism and care. One client shares their experience working with ADWARE RECOVERY SPECIALIST, recounting how they were ensnared by cryptocurrency scammers, only to be rescued by the diligent efforts of the Wizard Web team. Through open communication and unwavering determination,  ADWARE RECOVERY SPECIALIST was able to locate and recover the stolen tokens, returning them to their rightful owner. As the client attests, "Not much can go wrong when it comes to ADWARE RECOVERY SPECIALIST. In a landscape rife with uncertainty and risk, ADWARE RECOVERY SPECIALIST stands as a beacon of hope for those in need. Their dedication to justice and their unwavering commitment to their clients make them a force to be reckoned with in the fight against cryptocurrency fraud. So if you've fallen victim to scams or fraud, don't despair – Reach out to ADWARE RECOVERY SPECIALIST. Check out the information above:

SPYWARE CYBER-ANSWER TO LOST/SCAMMED :USDT,ETH,BITCOIN
Loss of funds to scams have become all too familiar. With scammers honing their tactics, it's increasingly challenging to discern the legitimate from the fraudulent. Many have suffered losses, leading to a sense of despair and resignation. However, amidst the turmoil, there exists a beacon of hope: the possibility of reclaiming stolen crypto. For those who have fallen victim to scams, the journey to recovery can seem like an insurmountable challenge. The fear of being scammed again looms large, casting a shadow of doubt over any attempt to seek assistance. Yet, it's essential to remember that not all avenues lead to deception. Recovery is indeed possible when you connect with the right resources. I speak from personal experience. Like many others, I found myself ensnared in the web of crypto scams. The loss was not just financial but also a blow to my trust and confidence in the cryptocurrency ecosystem. However, refusing to succumb to defeat, I embarked on a quest for redemption. It was then that I stumbled upon a glimmer of hope—an enlightening article shedding light on the possibility of recovery. Empowered by newfound knowledge and determination, I took the leap of faith and reached out to Spyware Cyber. Skepticism lingered, but I refused to let it overshadow my resolve. To my astonishment and relief, the expertise and integrity of Spyware Cyber became evident from the outset. With professionalism and unwavering dedication, they embarked on the journey to reclaim what was rightfully mine.The road to recovery was not without its challenges. It demanded patience, persistence, and unwavering trust. Yet, with each step forward, the veil of doubt lifted, revealing a path illuminated by hope and possibility. Through their expertise and guidance,  Spyware Cyber not only restored my stolen crypto but also restored my faith in the resilience of the human spirit. My journey serves as a testament to the power of perseverance. In the face of adversity, it's tempting to surrender to despair and resignation. However, history has shown time and again that perseverance is the cornerstone of triumph. By refusing to relinquish hope, we pave the way for a brighter future. To all those who have been scarred by the scourge of crypto scams, I extend a message of hope: reclamation is within reach. Trust in the process, and trust in the right allies. Together, we can reclaim what is rightfully ours and forge ahead towards a future defined not by our losses, but by our resilience and determination. Do not be deterred by past setbacks; instead, let them fuel your resolve. For in the journey of recovery lies the promise of redemption and the restoration of faith in the limitless potential of the human spirit. Reach out to Spyware Cyber and watch your lost crypto jump back to your wallet:
Whatsapp: +1<PHONE_NUMBER>
<EMAIL_ADDRESS>Telegram:Spyware Cyber
Website:https://cybegal.net


AsmUtil extensions

Hi,
PR consists of:

jodd.asm.AsmUtil

small refactoring : delegate from method typeToSignature(Class type) to method typeToSignature(String className)

jodd.asm.AsmUtilTest

added tests for AsmUtil#typeToTyperef(Class clazz) and AsmUtil#typeToSignature(Class / String)

Bye,
Sascha

Thank you!


Test setup and teardown for cloud-user like access

Adds setup and tear down playbook for environment when we don't have direct ssh root access on storage machines and need to connect via different user and then use sudo instead.

So far, I used this to test changes described in https://github.com/Tendrl/tendrl-ansible/commit/5f53a29588bc7564aa633f880a2bb3d5680bfff7


Problem loading Einstein in VScode

This is the first message I get
"Looks like you don't have the right permissions to use Einstein for Developers. Your Salesforce admin can help with that by following the steps in the Einstein for Developers page in your org Setup."
and then I get this message when that one goes away
"No Einstein for Developers permission in default org"

Hi @yasselin, please refer to our documentation on how to enable Einstein for Developers in your org: https://developer.salesforce.com/tools/vscode/en/einstein/einstein-setup


Blog app - integration specs for views and fix n+1 problems 🟢

In this PR we were able to:

create user_index_spec.rb
create user_show_spec.rb
create post_index_spec.rb
create post_show_spec.rb
secure app from n+1 problems.

in order to test the spec files on terminal type the following:
rspec spec/views --format documentation
before n+1

after n+1

Thank you for reviewing our code 😊

Hi @mikethreels
I just forgot to include it in the PR.


Validate dashboard activity

Provides a fixed list of dashboard activities in ReqMgr2 UI.
Also added a lexicon validation for its value.
@ticoann please review. If you prefer we can skip this PR for the current cmsweb cycle.
PS.: I just noticed I have to add harvesting and StoreResults to the lists. Will do so after the meeting.

Thanks Alan, patch looks good. I will wait when you add harvesting and StoreResult.

@ticoann I've just updated the code with the activities it was missing.
@hufnagel FYI (no need to do it now, but we should update ALL T0 specs to start using t0 instead of tier0), see comments below.
For our information, I exchanged a couple of emails with Eddie from the dashboard team and this is the list of allowed activities:
jobrobot
harvesting
hcjobrobot
analysistest
analysis-crab3
t0-replay
hireprocessing
privateproduction
hctest
storeresults
production
reprocessing
relval
test
wrong
hiproduction
hcdev
sw_installation
hcxrootd
analysis
t0
cloud-testing
analysis-crab3-hc
integration

and these are all the activities mapped to t0:
t0
t0-mergepack
t0-harvesting
t0-express
tier0
t0-skimming
t0-promptreco
t0-alcaskim
t0-merge
t0-repack
t0-promptcalib

replaced by #7255 due to the conflict


⚠ Spryr has degraded performance

In bb92677, Spryr (https://spryr.com) experienced degraded performance:

HTTP code: 200
Response time: 5570 ms

Resolved: Spryr performance has improved in fe927a7 after 10 minutes.


lint: change minimal python version in mypy config

Codecov Report

Merging #133 (a280a1f) into master (d46a7a8) will increase coverage by 0.47%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master     #133      +/-   ##
==========================================
+ Coverage   32.45%   32.92%   +0.47%
==========================================
  Files          68       68
  Lines        4446     4379      -67
==========================================
- Hits         1443     1442       -1
+ Misses       3003     2937      -66

Impacted Files
Coverage Δ

lona/view.py
19.47% <0.00%> (+0.10%)
:arrow_up:

lona/server.py
47.24% <0.00%> (+0.14%)
:arrow_up:

lona/html/nodes.py
5.12% <0.00%> (+0.16%)
:arrow_up:

lona/server_state.py
5.88% <0.00%> (+0.22%)
:arrow_up:

lona/view_runtime.py
40.00% <0.00%> (+0.24%)
:arrow_up:

lona/html/node_event_list.py
29.23% <0.00%> (+0.44%)
:arrow_up:

lona/html/attribute_list.py
57.31% <0.00%> (+0.69%)
:arrow_up:

lona/html/widget.py
10.00% <0.00%> (+0.74%)
:arrow_up:

lona/html/document.py
51.02% <0.00%> (+1.02%)
:arrow_up:

lona/html/data_binding/inputs.py
45.03% <0.00%> (+1.97%)
:arrow_up:

... and 6 more

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 d46a7a8...a280a1f. Read the comment docs.

@maratori Great! Thanks! :)


Responses should be able to return errors

Need to change the swagger.json to show this.

Closed by #135


Content Publishing - Guidelines (05 IBM.com page structure)

User Story

As an IBM.com Library components adopter,

I need a way to learn more about the IBM.com Library,

so that I can learn the detail through the guidelines and adopter IBM.com Library to my day to day work properly.

Additional information
Please kick off the task with Wonil since some of the content existed already

Work on the content by following the publishing process as much as possible and as needed.
Create the website design with the Sketch App as needed and the Sketch publishing template can be found on the BOX folder. Once complete, save the revised Sketch file in the Guideline folder / sub-folder here.
Once the content is reviewed (with stakholders or SME of the topic) and finalized.
Copy the content from the Sketch file into the .mdx file for the markdown publishing process to start.
Once complete, create the Pull Request and review, using the Preview link, to be sure it matches the Sketch file design
When ready to deploy, include Jenny as a PR Reviewer and Approver.
Jenny will review and merge the PR

Acceptance criteria

[ ] Content crafting is done.
[ ] Asset image creation is done (if needed)
[ ] Page design is done (if needed)
[ ] Publishing with markdowns is done.
[ ] QA'd by Jenny
[ ] Web page preview is approved by Linda, Jeff, and Wonil
[ ] Web page is published

This task is relevant and in prioritization.

This Epic is no longer relevant to our work or priority and will be closed.
FYI: @RobertaJHahn


Air Purifier 4 Pro

Hi, i just disassembled my new purifier, model AC-M15-SC. It hasnt STM32 buy GD32 controller. Will your code work on that controller too? thanx

Hi, that's an interesting find. The GD32 basically is a chinese clone of the STM32 (there are some minor differences) so I would assume that they run almost the same firmware. Do you have a logic analyzer or another way (e.g. two UART-USB adapters) to analyze the communication between ESP and GD32?

I will try it and let u know. BTW Mi 4 Lite from /issue/3 is working with patch thanx to @dhewg so u could add it to the list of supported devices.

The 4lite patch for this repo can't be merged without breaking the 3h support, so the commited state doesn't support the 4lite.
That and the fact that custom components (as used here) are deprecated and support will apparently be removed from esphome at some point is the reason why I used the same approach as the upstream tuya support for esphome-miot.
As for the 4pro, it's probably enough to check the serial output to see if this is still using the same protocol. If it is, you can use esphome-miot and its miot spec to add support with only a yaml file.

Hi,
I also flashed my Xiaomi Air Purifier 4 with board "ACM16-AA-B01" with Jaromeyer's project.
It took me a while to get things working, but I finally succeeded.
I also managed to add a filter reset push button to this project and some other functions that come with this model, such as Anion
P.S,
The GD32 chip is also on my board
mipurifier.h:

#include "esphome.h"

class MiPurifier : public Component, public UARTDevice, public CustomAPIDevice {
public:
  static const int max_line_length = 150;
  char recv_buffer[max_line_length];
  char send_buffer[max_line_length];
  bool is_preset;
  int last_heartbeat, last_query;
  bool initialValueSent = false;

  Sensor *airquality_sensor = new Sensor();
  Sensor *humidity_sensor = new Sensor();
  Sensor *temperature_sensor = new Sensor();
  Sensor *filterlife_sensor = new Sensor();
  Sensor *speed_sensor = new Sensor();

  MiPurifier(UARTComponent *uart) : UARTDevice(uart) {}

  int readline(int readch, char *buffer, int len) {
    static int pos = 0;
    int rpos;

    if (readch > 0) {
      switch (readch) {
        case '\r': // Return on CR
          rpos = pos;
          pos = 0;  // Reset position index ready for next time
          return rpos;
        default:
          if (pos < len-1) {
            buffer[pos++] = readch;
            buffer[pos] = 0;
          }
      }
    }
    // No end of line has been found, so return -1.
    return -1;
  }

  // only run setup() after a Wi-Fi connection has been established successfully
  float get_setup_priority() const override { return esphome::setup_priority::AFTER_WIFI; }

  void turn_on() {
    strcpy(send_buffer, "down set_properties 2 1 true");
  }

  void turn_off() {
    strcpy(send_buffer, "down set_properties 2 1 false");
  }

  void enable_beeper() {
    strcpy(send_buffer, "down set_properties 6 1 true");
  }

  void disable_beeper() {
    strcpy(send_buffer, "down set_properties 6 1 false");
  }

  void enable_anion() {
    strcpy(send_buffer, "down set_properties 2 6 true");
  }

  void disable_anion() {
    strcpy(send_buffer, "down set_properties 2 6 false");
  }

  void lock() {
    strcpy(send_buffer, "down set_properties 8 1 true");
  }

  void unlock() {
    strcpy(send_buffer, "down set_properties 8 1 false");
  }

     // 10 1 1 - Set filter used hours back to 1 hour
  void reset_filter() {
    strcpy(send_buffer, "down set_properties 10 1 1");
  }

  void set_mode(std::string mode) {
    // 0: auto, 1: sleep, 2: manual, 3: low, 4: med, 5: high
    if (mode == "auto") {
      strcpy(send_buffer, "down set_properties 2 4 0");
    } else if (mode == "night") {
      strcpy(send_buffer, "down set_properties 2 4 1");
    } else if (mode == "manual") {
      strcpy(send_buffer, "down set_properties 2 4 2");
    } else if (mode == "low") {
      strcpy(send_buffer, "down set_properties 2 5 1");
    } else if (mode == "medium") {
      strcpy(send_buffer, "down set_properties 2 5 2");
    } else if (mode == "high") {
      strcpy(send_buffer, "down set_properties 2 5 3");
    }
  }

  void set_brightness(std::string brightness) {
    if (brightness == "off") {
      strcpy(send_buffer, "down set_properties 13 2 0");
    } else if (brightness == "low") {
      strcpy(send_buffer, "down set_properties 13 2 1");
    } else if (brightness == "high") {
      strcpy(send_buffer, "down set_properties 13 2 2");
    }
  }

// 2 4 2 = Set Manual Mode | 9 5 x = Set speed for Manual
  void set_manualspeed(int speed) {
    snprintf(send_buffer, max_line_length, "down set_properties 2 4 2, 9 5 %i", speed);
  }

  void send_command(std::string s) {
    strcpy(send_buffer, s.c_str());
  }

  void update_property(char* id, char* val) {
    if (strcmp(id, "34") == 0) {
      airquality_sensor->publish_state(atof(val));
    } else if (strcmp(id, "31") == 0) {
      humidity_sensor->publish_state(atof(val));
    } else if (strcmp(id, "37") == 0) {
      temperature_sensor->publish_state(atof(val));
    } else if (strcmp(id, "41") == 0) {
      filterlife_sensor->publish_state(atof(val));
    } else if (strcmp(id, "91") == 0) {
      speed_sensor->publish_state(atof(val));
    } else if (strcmp(id, "21") == 0) {
      // power (on, off)
      power_switch->publish_state(strcmp(val, "true") == 0);
    } else if (strcmp(id, "24") == 0) {
      // mode (auto, night, manual, preset)
      is_preset = false;
      switch (atoi(val)) {
        case 0:
          mode_select->publish_state("auto");
          break;
        case 1:
          mode_select->publish_state("night");
          break;
        case 2:
          mode_select->publish_state("manual");
          break;
        case 3:
          is_preset = true;
          break;
      }
    } else if (strcmp(id, "25") == 0) {
      // preset (low, medium, high)
      if (is_preset) {
        switch (atoi(val)) {
          case 1:
            mode_select->publish_state("low");
            break;
          case 2:
            mode_select->publish_state("medium");
            break;
          case 3:
            mode_select->publish_state("high");
            break;
        }
      }
    } else if (strcmp(id, "61") == 0) {
      // beeper (on, off)
      beeper_switch->publish_state(strcmp(val, "true") == 0);
    } else if (strcmp(id, "26") == 0) {
      // anion (on, off)
      anion_switch->publish_state(strcmp(val, "true") == 0);
    } else if (strcmp(id, "81") == 0) {
      // lock (on, off)
      lock_switch->publish_state(strcmp(val, "true") == 0);
    } else if (strcmp(id, "132") == 0) {
      // display brightness (off, low, high)
      switch (atoi(val)) {
        case 0:
          brightness_select->publish_state("off");
          break;
        case 1:
          brightness_select->publish_state("low");
          break;
        case 2:
          brightness_select->publish_state("high");
          break;
      }
    } else if (strcmp(id, "95") == 0) {
      // manual speed
      manualspeed->publish_state(atof(val)+1);
    }
  }

// get_down get_properties 2 1 = Power ON OFF State | 2 4 = Mode State | 6 1 = Beeper State | 13 2 = Display brigtness State | 8 1 = Lock State | 9 5 = Fan Speed State Range (1 - 11) | 9 1 = Fan RPM
  void setup() override {
    register_service(&MiPurifier::send_command, "send_command", {"command"});
  }

  void loop() override {
    while (available()) {
      if(readline(read(), recv_buffer, max_line_length) > 0) {
        char *cmd = strtok(recv_buffer, " ");
        if (strcmp(cmd, "net") == 0) {
            write_str("local");
        } else if (strcmp(cmd, "time") == 0) {
          write_str("0");
        } else if (strcmp(cmd, "get_down") == 0) {
          // send command from send_buffer
          if (strlen(send_buffer) > 0) {
            write_str(send_buffer);
			// Debug
            ESP_LOGD("mipurifier", send_buffer);
			// Debug
            send_buffer[0] = '\0';
            ESP_LOGD("mipurifier", "sent send_buffer");
          } else if (millis() - last_heartbeat > 60000) {
            // send heartbeat message
            write_str("down set_properties 11 6 300");
            last_heartbeat = millis();
            ESP_LOGD("purifier", "sent heartbeat");
          } else if (millis() - last_query > 60000) {
            // force sensor update
            write_str("down get_properties 3 4 3 1 3 7 4 1 9 1");
            last_query = millis();
            ESP_LOGD("purifier", "sent query string");
          } else {
            write_str("down none");
          }
        } else if (strcmp(cmd, "properties_changed") == 0) {
          ESP_LOGD("mipurifier", "parsing properties_changed message");
          char *id1 = strtok(NULL, " ");
          char *id2 = strtok(NULL, " ");
          char *id = strcat(id1, id2);
          char *val = strtok(NULL, " ");
          update_property(id, val);
          write_str("ok");
        } else if (strcmp(cmd, "result") == 0) {
          // loop over all properties and update
          ESP_LOGD("mipurifier", "parsing result message");
          char *id1, *id2, *id, *val;
          while (true) {
            if (!(id1 = strtok(NULL, " "))) break;
            if (!(id2 = strtok(NULL, " "))) break;
            id = strcat(id1, id2);
            strtok(NULL, " "); // skip 0
            if (!(val = strtok(NULL, " "))) break;
            update_property(id, val);
          }
          write_str("ok");
        } else {
          // just acknowledge any other message
          write_str("ok");
        }
      }
    }

	  if( initialValueSent == false) {
		  strcpy(send_buffer, "down get_properties 2 1 2 4 2 6 6 1 13 2 8 1 9 5 9 1 3 4 3 1 3 7 4 1");
		  ESP_LOGD("mipurifier", "receiving states");
          initialValueSent = true;
        }

  }
};

and the .yaml file

esphome:
  name: nl-sp-06
  comment: Xiaomi Mi Air Purifier 4 (zhimi.airp.mb5)
  includes:
    - mipurifier.h

# Required configuration for the weird single core ESP-WROOM-32D module
esp32:
  board: esp32doit-devkit-v1
  framework:
    type: esp-idf
    sdkconfig_options:
      CONFIG_FREERTOS_UNICORE: y
    advanced:
      ignore_efuse_mac_crc: true

# Enable logging
logger:
#  level: ERROR

# Enable Home Assistant API
api:
  password: ""

# Enable OTA updates
ota:
  password: ""

web_server:
  port: 80

wifi:
  ap: {} # This spawns an AP with the device name and mac address with no password.
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  # Adapt to your needs
  use_address: <IP_ADDRESS>
  manual_ip:
    static_ip: <IP_ADDRESS>
    gateway: <IP_ADDRESS>
    subnet: <IP_ADDRESS>
    dns1: <IP_ADDRESS>

# Initialize the serial connection to the GD32F303 ARM Controller
uart:
  id: uart_bus
  tx_pin: GPIO17
  rx_pin: GPIO16
  baud_rate: 115200

# Initialize our custom component
custom_component:
  - lambda: |-
      auto mipurifier = new MiPurifier(id(uart_bus));
      App.register_component(mipurifier);
      return {mipurifier};
    components:
      - id: mipurifier

button:
  - platform: template
    name: "Reset Filter Xiaomi P4"
    id: reset_switch
    on_press:
      - lambda:
          auto c = static_cast<MiPurifier *>(mipurifier);
          c->reset_filter();

# Main switch for turning on/off the unit
switch:
  - platform: template
    name: "Power Xiaomi P4"
    id: power_switch
    icon: mdi:power
    turn_on_action:
      - lambda:
          auto c = static_cast<MiPurifier *>(mipurifier);
          c->turn_on();
    turn_off_action:
      - lambda:
          auto c = static_cast<MiPurifier *>(mipurifier);
          c->turn_off();
  - platform: template
    name: "Beeper Xiaomi P4"
    id: beeper_switch
    icon: mdi:volume-high
    entity_category: config
    turn_on_action:
      - lambda:
          auto c = static_cast<MiPurifier *>(mipurifier);
          c->enable_beeper();
    turn_off_action:
      - lambda:
          auto c = static_cast<MiPurifier *>(mipurifier);
          c->disable_beeper();
  - platform: template
    name: "Anion Xiaomi P4"
    id: anion_switch
    icon: mdi:air-purifier
    turn_on_action:
      - lambda:
          auto c = static_cast<MiPurifier *>(mipurifier);
          c->enable_anion();
    turn_off_action:
      - lambda:
          auto c = static_cast<MiPurifier *>(mipurifier);
          c->disable_anion();
  - platform: template
    name: "Lock Xiaomi P4"
    id: lock_switch
    icon: mdi:lock
    entity_category: config
    turn_on_action:
      - lambda:
          auto c = static_cast<MiPurifier *>(mipurifier);
          c->lock();
    turn_off_action:
      - lambda:
          auto c = static_cast<MiPurifier *>(mipurifier);
          c->unlock();

# Select components for mode & brightness
select:
  - platform: template
    name: "Mode Xiaomi P4"
    id: mode_select
    options:
      - "auto"
      - "night"
      - "manual"
      - "low"
      - "medium"
      - "high"
    set_action:
      - lambda: |-
          auto c = static_cast<MiPurifier *>(mipurifier);
          c->set_mode(x);
  - platform: template
    name: "Display Brightness Xiaomi P4"
    id: brightness_select
    icon: mdi:brightness-6
    entity_category: config
    options:
      - "off"
      - "low"
      - "high"
    set_action:
      - lambda: |-
          auto c = static_cast<MiPurifier *>(mipurifier);
          c->set_brightness(x);

# Number to control the speed in manual mode
number:
  - platform: template
    name: "Manual Speed Xiaomi P4"
    id: manualspeed
    icon: mdi:speedometer
    min_value: 1
    max_value: 12
    step: 1
    set_action:
      - lambda: |-
          auto c = static_cast<MiPurifier *>(mipurifier);
          c->set_manualspeed((int)x-1);

# Expose measured environmental values, and remaining filter life
sensor:
  - platform: custom
    lambda: |-
      auto c = static_cast<MiPurifier *>(mipurifier);
      return {
        c->airquality_sensor,
        c->humidity_sensor,
        c->temperature_sensor,
        c->filterlife_sensor,
        c->speed_sensor,
      };
    sensors:
      - name: "Air quality (PM2.5) Xiaomi P4"
        unit_of_measurement: "µg/m³"
        device_class: pm25
      - name: "Humidity Xiaomi P4"
        unit_of_measurement: "%"
        device_class: humidity
      - name: "Temperature Xiaomi P4"
        unit_of_measurement: "°C"
        device_class: temperature
        accuracy_decimals: 1
      - name: "Filter remaining Xiaomi P4"
        unit_of_measurement: "%"
        icon: mdi:air-filter
      - name: "RPM Sensor Fan"
        unit_of_measurement: "RPM"

text_sensor:
  - platform: wifi_info
    ip_address:
      name: "IP Address Xiaomi P4"
    ssid:
      name: "Connected SSID Xiaomi P4"
    mac_address:
      name: "Mac Address Xiaomi P4"

And final some screenshots

Hi,
I also flashed my Xiaomi Air Purifier 4 with board "ACM16-AA-B01" with Jaromeyer's project.
It took me a while to get things working, but I finally succeeded. I also managed to add a filter reset push button to this project and some other functions that come with this model, such as Anion

Thank you so much! It works great on my Purifier 4.
This should be merged to the repo, maybe in a separate folder?

Hi,
I also flashed my Xiaomi Air Purifier 4 with board "ACM16-AA-B01" with Jaromeyer's project.
It took me a while to get things working, but I finally succeeded. I also managed to add a filter reset push button to this project and some other functions that come with this model, such as Anion

Thank you so much! It works great on my Purifier 4. This should be merged to the repo, maybe in a separate folder?

Happy to help !
All credits to Jaromeyer

@Matthijs33 how did you get the purifier card setup? I've been trying to get it working with the HACSfrontend custom:purifier-card but it requires a fan entity which isn't present to add to the yaml config.

@Matthijs33 how did you get the purifier card setup? I've been trying to get it working with the HACSfrontend custom:purifier-card but it requires a fan entity which isn't present to add to the yaml config.

Hi @terryb8s
I have created an template in fan:
  - platform: template
    fans:
      xiaomi_purifier_4:
        friendly_name: "Xiaomi Air Purifier 4"
        value_template: "{{ states('switch.power_xiaomi_p4') }}"
        percentage_template: >
          {% if states('select.mode_xiaomi_p4', 'manual') == "manual" %}
            {% if states('number.manual_speed_xiaomi_p4') == "1.0"  %}
              8.33
            {% elif states('number.manual_speed_xiaomi_p4') == "2.0"  %}
              16.66
            {% elif states('number.manual_speed_xiaomi_p4') == "3.0"  %}
              24.99
            {% elif states('number.manual_speed_xiaomi_p4') == "4.0"  %}
              33.32
            {% elif states('number.manual_speed_xiaomi_p4') == "5.0"  %}
              41.65
            {% elif states('number.manual_speed_xiaomi_p4') == "6.0"  %}
              49.98
            {% elif states('number.manual_speed_xiaomi_p4') == "7.0"  %}
              58.31
            {% elif states('number.manual_speed_xiaomi_p4') == "8.0"  %}
              66.64
            {% elif states('number.manual_speed_xiaomi_p4') == "9.0"  %}
              74.97
            {% elif states('number.manual_speed_xiaomi_p4') == "10.0"  %}
              83.30
            {% elif states('number.manual_speed_xiaomi_p4') == "11.0"  %}
              91.63
            {% elif states('number.manual_speed_xiaomi_p4') == "12.0"  %}
              100
            {% else %}
              0.0
            {% endif %}
          {% elif states('select.mode_xiaomi_p4') == "low" %}
            24.99
          {% elif states('select.mode_xiaomi_p4') == "medium" %}
            41.65
          {% elif states('select.mode_xiaomi_p4') == "high" %}
            66.64
          {% elif states('select.mode_xiaomi_p4') == "night" %}
            8.33
          {% else %}
            0.0
          {% endif %}
        preset_mode_template: "{{ states('select.mode_xiaomi_p4') }}"
        turn_on:
          service: switch.turn_on
          target:
            entity_id: switch.power_xiaomi_p4
        turn_off:
          service: switch.turn_off
          target:
            entity_id: switch.power_xiaomi_p4
        set_percentage:
          service: script.xiaomi_set_speed
          data_template:
            percentage: "{{ percentage }}"
        set_preset_mode:
          service: select.select_option
          data:
            option: "{{ preset_mode }}"
          target:
            entity_id: select.mode_xiaomi_p4
        speed_count: 12
        preset_modes:
          - 'auto'
          - 'night'
          - 'manual'
          - 'low'
          - 'medium'
          - 'high'

Thanks this is amazing, while my home assistant is becoming more complex by the day i'm still learning so appreciate the examples!Also thanks for everyone getting the 4 pro going!

Thanks everyone, I also was able to flash 4 pro without any issues using code modified by @Matthijs33. Small note: when I powered the board with usb to ttl adapter, there were no beeps (says it should beep in readme), but I still was able to backup the firmware and flash esphome successfully.
As I spent an embarrassingly long time trying to disassemble this thing while breaking a few plastic tabs, I've recorded this quick video that shows how to do it for anyone that stumbles upon this https://www.youtube.com/watch?v=PHaw3gTkfxE


Fix various issues in python3 formula.

Pathname doesn't like concating with nil.
Fix some other issues with lib_cellar in python3.
--enable-shared like in python2 formula

Thanks, Simon.

Updated.

Thanks!


Anchor links on http://redux.js.org do not work in Firefox

Do you want to request a feature or report a bug?
This is a bug report about http://redux.js.org/
What is the current behavior?
When I open a new tab in a browser and load http://redux.js.org/docs/basics/UsageWithReact.html#containersfilterlinkjs (or anything with an anchor), it behaves differently across browsers:

On Firefox 49, the URL changes to http://redux.js.org/docs/basics/UsageWithReact.html but it does not show the #containersfilterlinkjs section, titled containers/FilterLink.js
On Chrome 53.0.2785.116, the URL changes in the same way but I see the containers/FilterLink.js section

If the current behavior is a bug, please provide the steps to reproduce and if possible a minimal demo of the problem via https://jsfiddle.net or similar.
(see above)
What is the expected behavior?

It should show the linked anchor section in Firefox
The URL should retain the anchor so that I can easily copy and paste the link to share it with someone

Which versions of Redux, and which browser and OS are affected by this issue? Did this work in previous versions of Redux?
N/A
This is also broken in development versions of Firefox

@timdorr : see, I did say I was having issues with this (per https://github.com/reactjs/redux/pull/1891 )

Gah!  Is there a better gitbook plugin for anchoring?

Would be cool to replace Gitbook with something that has better user experience.

I guess the main question is, what specific value and benefits does Gitbook bring to the table?  Off the top of my head:

It parses and transforms Markdown
It sets up the TOC
It's got a built-in theme
It's written in JS

Beyond that... ?
There's certainly plenty of other static site generators out there.  I just set up my own blog using Hugo, which is a single-binary Go app.  There's SSGs written in Javascript, including Gatsby, which is written in React.
Then again, it'd be nice to know why Gitbook is acting screwy this way.  Is there a relevant issue open?
Thoughts?

BTW, we have a neat new custom website for React Router 4.0: https://github.com/ReactTraining/react-router/tree/v4/website There isn't the automatic ToC building, which is the one unique feature of Gitbook. But it's also a bit of magic and means you have to use a relatively opaque convention to your ToC document. Could be a potential starting point if Gatsby doesn't rub you the right way.

Possibly related: https://github.com/GitbookIO/gitbook/issues/1402 , https://github.com/GitbookIO/gitbook/pull/1467 , https://github.com/GitbookIO/gitbook/issues/1337 .  Also https://www.gitbook.com/book/seadude/learn-gitbook/details .

Maybe you might be interested by Phenomic, a modern static website generator based on React (and webpack) which offer you a way to iterate on pages data :)

Hi everybody!
First of all, we are taking a look at this exact bug to release a fix on GitBook ASAP.
@gaearon I understand that there is some frustration with the current GitBook UX. We are working hard on fixing it (both on GitBook, GitBook.com and the GitBook Editor).
But our goal is to transform GitBook into the perfect static generator / CMS for documentation. I believe it can become the right solution for projects like Redux.
We are starting to work more closely with open source projects to move GitBook in the right direction.
@markerikson Here is a list of what GitBook (and GitBook.com integrated with GitHub) can provide:

GitBook Toolchain

Easy to setup in a GitHub repository (GitBook only requires a book.json file)
Search (also possible to integrate Algolia)
We are working on better APIs for plugins
Clean design by default
Still readable on GitHub
PDF builds (Not useful for projects like Redux)

GitBook.com

Keep GitHub as the single source of truth
HTTPS and CDN
CI for keeping redux.js.org always up to date
Edition with our GitBook Editor

But more importantly, the next versions of GitBook will be able to fit your use case better, since it will offer a simple and robust API to help developers build additions to GitBook.
Anyways, whatever you decide to drop GitBook or not, I'd love to get your feedback and advices on what we are doing and what we can do better :)

OK, just rebuilt and this appears to work A-OK: http://redux.js.org/docs/recipes/reducers/UpdatingNormalizedData.html#other-approaches
Thanks for reaching out @SamyPesse and for the fixes. Please keep us in the loop as you have other changes coming down the pipeline. I'll probably look into the Algolia stuff pretty soon, as I'm a fan of their service.


Implement Rating class field and performanceHistory tracking

Half done #97
Brief Overview:

Add a performance field under Person
Added 2 parts to Person Class (Rating, performanceHistory)
Included Setter Methods in the Person class to help you change the variables in the person
Included Validation methods in the Rating Class so that when adding, can check if the arguments are valid
Edited the JSONAdapatedPerson class so that in the database will be able track all the information of the Person

Further:
Have not complete Rate command
Test case coverage not complete

Codecov Report

Merging #122 (6191bb8) into master (51291ba) will decrease coverage by 2.04%.
The diff coverage is 35.20%.

@@             Coverage Diff              @@
##             master     #122      +/-   ##
============================================
- Coverage     67.64%   65.59%   -2.05%
- Complexity      475      486      +11
============================================
  Files            81       85       +4
  Lines          1666     1779     +113
  Branches        179      194      +15
============================================
+ Hits           1127     1167      +40
- Misses          489      555      +66
- Partials         50       57       +7

Impacted Files
Coverage Δ

...c/main/java/coydir/logic/commands/RateCommand.java
0.00% <0.00%> (ø)

.../main/java/coydir/logic/parser/DatabaseParser.java
80.00% <0.00%> (-4.22%)
:arrow_down:

src/main/java/coydir/logic/parser/ParserUtil.java
81.66% <0.00%> (-7.43%)
:arrow_down:

...in/java/coydir/logic/parser/RateCommandParser.java
0.00% <0.00%> (ø)

src/main/java/coydir/model/person/Leave.java
0.00% <ø> (ø)

...rc/main/java/coydir/model/util/SampleDataUtil.java
20.00% <0.00%> (ø)

...rc/main/java/coydir/storage/JsonAdaptedRating.java
0.00% <0.00%> (ø)

src/main/java/coydir/ui/PersonInfo.java
0.00% <0.00%> (ø)

src/main/java/coydir/model/person/Person.java
77.55% <47.61%> (-6.60%)
:arrow_down:

src/main/java/coydir/model/person/Rating.java
55.55% <55.55%> (ø)

... and 4 more

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


ARROW-556: [Integration] Configure C++ integration test executable with a single environment variable. Update README

LGTM!

green build: https://travis-ci.org/wesm/arrow/builds/201247431


List tags by digest

Hi.
Is there a way to get all the tags that point to the exact same image?
I mean listing tags associated with a particular digest or maybe another tag.

I don't think this is supported by the API, but you can use the output of docker-ls tags -l1 and check it for tags with the same content hash.


[Event Request ] Codeunit 7313 Create Put-away - OnBeforeCalcAvailCubageAndWeight event publisher extension

Hi, we need to implement additional business logic based on Put-away Template Line configuration to calculate quantity for put away in CalcAvailCubageAndWeight function / Codeunit 7313 Create Put-away.
We already have a publisher (BC19, CU3, build 34941):
local procedure OnBeforeCalcAvailCubageAndWeight(var Bin: Record Bin; PostedWhseReceiptLine: Record "Posted Whse. Receipt Line"; PutAwayItemUOM: Record "Item Unit of Measure"; var QtyToPutAwayBase: Decimal; var IsHandled: Boolean)
Could you please extend the mentioned publisher in the following way (add a PutAwayTemplLine parameter):
local procedure OnBeforeCalcAvailCubageAndWeight(var Bin: Record Bin; PostedWhseReceiptLine: Record "Posted Whse. Receipt Line"; PutAwayItemUOM: Record "Item Unit of Measure"; PutAwayTemplLine: Record "Put-away Template Line"; var QtyToPutAwayBase: Decimal; var IsHandled: Boolean) ?
The new usage should be the following:
OnBeforeCalcAvailCubageAndWeight(Bin,PostedWhseRcptLine,PutAwayItemUOM,PutAwayTemplLine,QtyToPutAwayBase,IsHandled);
Thank you.

Thanks for reporting this. We agree, and we’ll publish a fix asap, either in an update for the current version or in the next major release. Please do not reply to this, as we do not monitor closed issues. If you have follow-up questions or requests, please create a new issue where you reference this one.


User should be prevented from loading the same custom font twice

Bug Description
Originally reported by @BrittanyIRL
The user should not be able to provide the dashboard settings with the same custom font as one already loaded. Currently it's possible, and then the same font is shown twice

Expected Behaviour

Steps to Reproduce

Screenshots

Additional Context

Plugin Version:
WordPress Version:
Operating System:
Browser:

This was actually also a known "bug" (just not implemented yet), forgot to add it. We should probably place post-MVP Custom Fonts to the Roadmap somewhere.

Hmm we have some PHP logic in place to prevent this on the server level already, sounds like it's not working correctly 🤔
Of course proper error handling on the client is also needed for it.

Error handling is done in #10941


[TimePicker] Ability to change action buttons order

I want the positive and negative buttons swap their position. In many cases, the positive button in rtl is on the right side.
I also want to remove the clock icon on the right bottom, so only one TimePickerEntryMode will be used by the user.
This is the desired result:

Hi @ronytesler
Thanks for fling the issue. these are two issues,
I can confirm the order is nor your expectations
there is no way to disable Entry mode, can you please file a new issue for this as proposal

minimal code sample
import 'package:flutter/material.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:i18n_example/generated/i18n.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    final i18n = I18n.delegate;

    return MaterialApp(
      onGenerateTitle: (context) => I18n.of(context).title,
      theme: ThemeData.dark(),
      home: Home(),
      locale: Locale('he', 'IL'),
      localizationsDelegates: [
        i18n,
        GlobalMaterialLocalizations.delegate,
        GlobalWidgetsLocalizations.delegate,
      ],
      supportedLocales: i18n.supportedLocales,
      localeResolutionCallback: i18n.resolution(
        fallback: Locale('en', 'US'),
      ),
    );
  }
}

class Home extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(I18n.of(context).title),
      ),
      body: Center(
        child: Container(
          child: Text(I18n.of(context).greetTo('World!')),
        ),
      ),
      floatingActionButton: FloatingActionButton(
        child: Icon(Icons.add),
        onPressed: () async {
            await showTimePicker(
              initialTime: TimeOfDay.now(),
              context: context,
              initialEntryMode: TimePickerEntryMode.input,
            );
        },
      ),
    );
  }
}

stable
master

❌
❌

Check flutter doctor -v outputs for each channel below

flutter doctor -v
[✓] Flutter (Channel stable, 2.2.2, on Microsoft Windows [Version 10.0.19043.1055], locale en-US)
    • Flutter version 2.2.2 at C:\Users\Taha\Code\flutter_stable
    • Framework revision d79295af24 (10 days ago), 2021-06-11 08:56:01 -0700
    • Engine revision 91c9fc8fe0
    • Dart version 2.13.3

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
    • Android SDK at C:\Users\Taha\Code\SDK
    • Platform android-30, build-tools 30.0.3
    • ANDROID_SDK_ROOT = C:\Users\Taha\Code\SDK
    • Java binary at: C:\Users\Taha\Code\openjdk\bin\java.exe
    • Java version OpenJDK Runtime Environment (build 1.8.0-262-b10)
    • All Android licenses accepted.

[✓] Chrome - develop for the web
    • Chrome at C:\Program Files\Google\Chrome\Application\chrome.exe

[✓] Visual Studio - develop for Windows (Visual Studio Community 2019 16.10.2)
    • Visual Studio at C:\Program Files (x86)\Microsoft Visual Studio\2019\Community
    • Visual Studio Community 2019 version 16.10.31410.357
    • Windows 10 SDK version 10.0.19041.0

[!] Android Studio (not installed)
    • Android Studio not found; download from https://developer.android.com/studio/index.html
      (or visit https://flutter.dev/docs/get-started/install/windows#android-setup for detailed instructions).

[✓] IntelliJ IDEA Community Edition (version 2021.1)
    • IntelliJ at C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2021.1.1
    • Flutter plugin version 57.0.5
    • Dart plugin version 211.7233

[✓] VS Code (version 1.57.1)
    • VS Code at C:\Users\Taha\AppData\Local\Programs\Microsoft VS Code
    • Flutter extension version 3.23.0

[✓] Connected device (4 available)
    • sdk gphone x86 (mobile) • emulator-5554 • android-x86    • Android 11 (API 30) (emulator)
    • Windows (desktop)       • windows       • windows-x64    • Microsoft Windows [Version 10.0.19043.1055]
    • Chrome (web)            • chrome        • web-javascript • Google Chrome 91.0.4472.114
    • Edge (web)              • edge          • web-javascript • Microsoft Edge 91.0.864.48

! Doctor found issues in 1 category.

[✓] Flutter (Channel master, 2.3.0-17.0.pre.414, on Microsoft Windows [Version 10.0.19043.1055], locale en-US)
    • Flutter version 2.3.0-17.0.pre.414 at C:\Users\Taha\Code\flutter_master
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 757c3add14 (12 hours ago), 2021-06-20 22:29:02 -0400
    • Engine revision 9520bb15b3
    • Dart version 2.14.0 (build 2.14.0-228.0.dev)

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
    • Android SDK at C:\Users\Taha\Code\SDK
    • Platform android-30, build-tools 30.0.3
    • ANDROID_SDK_ROOT = C:\Users\Taha\Code\SDK
    • Java binary at: C:\Users\Taha\Code\android-studio\jre\bin\java
    • Java version OpenJDK Runtime Environment (build 11.0.8+10-b944.6842174)
    • All Android licenses accepted.

[✓] Chrome - develop for the web
    • Chrome at C:\Program Files\Google\Chrome\Application\chrome.exe

[✓] Visual Studio - develop for Windows (Visual Studio Community 2019 16.10.2)
    • Visual Studio at C:\Program Files (x86)\Microsoft Visual Studio\2019\Community
    • Visual Studio Community 2019 version 16.10.31410.357
    • Windows 10 SDK version 10.0.19041.0

[✓] Android Studio (version 4.2.0)
    • Android Studio at C:\Users\Taha\Code\android-studio
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.8+10-b944.6842174)

[✓] IntelliJ IDEA Community Edition (version 2021.1)
    • IntelliJ at C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2021.1.1
    • Flutter plugin version 57.0.5
    • Dart plugin version 211.7233

[✓] VS Code (version 1.57.1)
    • VS Code at C:\Users\Taha\AppData\Local\Programs\Microsoft VS Code
    • Flutter extension version 3.23.0

[✓] Connected device (5 available)
    • sdk gphone x86 (mobile) • emulator-5554 • android-x86     • Android 11 (API 30) (emulator)
    • Windows (desktop)       • windows       • windows-x64     • Microsoft Windows [Version 10.0.19043.1055]
    • Windows (UWP) (desktop) • winuwp        • windows-uwp-x64 •
    • Chrome (web)            • chrome        • web-javascript  • Google Chrome 91.0.4472.114
    • Edge (web)              • edge          • web-javascript  • Microsoft Edge 91.0.864.48

• No issues found!

✅ : No Issue ❌: Issue reproduced

@TahaTesser Thanks. I don't think the current order of the buttons is wrong, it just would be good to have control over it, because in many cases we use the reversed order and controlling the order will allow consistency in the system.

CC @darrenaustin


Cannot get math

Is it me or is there something wrong with the math on this line
(16*4+8) bytes = 132 bytes
Anyway, the series is awesome! Thanks for the great explanation!

I think when I did the calculation, I did (16*8+4), which is wrong. Thanks for spotting it! I'll see about fixing it soon.


Update PlayerUtil.class.php

Generate an error that doesnt create a home planet once you reached max setled position or system
Regards
quit annoying lost some players this night :P

Hum, I can not understand this bug.. Within your change, the last system/galaxy not used for setled home planet.

i dont have the error generated with this bug anymore, i will reproduce it tomorow and will send you the complete error when you dont set the = for both lines,
i had 50+ users that couldnt login after creation of account due to missing home planet

Okay, i understand the algorithm error now.


Introduction to tidyr/reshape2 package in R by Remi Daigle

Where: Simon Fraser University, Burnaby Campus, SSB 6178
When: 3:30 pm - 4:30 pm, Tuesday, July 14, 2015
Dependencies: R (http://cran.r-project.org/index.html), RStudio(http://www.rstudio.com/products/rstudio/download/), and the tidyr and reshape2 packages.
note - packages can be installed by typing the following into the R console:
install.packages("tidyr")
install.packages("reshape2")

Hi,
do you plan to record the event and broadcast it?

@marpello that is not the plan yet, but it is something we could discuss. Are you off campus or have a scheduling conflict? I think we could also post the lesson notes here on Github if that would also be helpful.

Hi: Is there any chance you would be willing to commit to running this at a later date, say three months out so we can take best advantage of your skills? Also are you on the statzbeers mailing list/ twitterfeed?
http://www.dulvy.com/statz-beerz.html
Cheers,

Hey @NickDulvy,
Unfortunately, I can't commit to running this particular lesson in ~3 months since I'm moving back East at the end of August. However, I am following the statzbeers mailing list/ twitterfeed and I posted the lesson here. We're also planning to record a screencast of the lesson.


[Bug]: Unwanted software bundled with Estmob.SendAnywhere

Brief description of your issue
When installing Estmob.SendAnywhere, unwanted software called 'Gicon' is bundled that is for showing an ad. It is optional and unchecked in install screen. but in quiet install by winget, it is installed without any prompt.
Steps to reproduce

Install Estmob.SendAnywhere by winget.
Press Yes in UAC. (I don't know what happen in press No in UAC)

Expected behavior
No unwanted software.
Actual behavior
Installs unwanted software called 'Gicon'
Environment
Windows Package Manager v1.1.13405
Windows: Windows.Desktop v10.0.19044.1526
Package: Microsoft.DesktopAppInstaller v1.16.13405.0

These are the only options i can see when running it manually?

And no Gicon software installed

Reset VM
PS M:\> winget install Estmob.SendAnywhere
Found Send Anywhere [Estmob.SendAnywhere] Version 21.4.211415
This application is licensed to you by its owner.
Microsoft is not responsible for, nor does it grant any licenses to, third-party packages.
Downloading https://update.send-anywhere.com/downloads/x64/SendAnywhereSetup.exe
  ██████████████████████████████  94.9 MB / 94.9 MB
Successfully verified installer hash
Starting package install...
Successfully installed

Still no Gicon software

I have also not been able to reproduce this.
@u254254 can you replicate this and share logs? The log location is visible via winget --info.

I tested manual install in fresh VM (English and Korean). in English Windows, no 'Smart Search' component showing and no Gicon installed. in Korean Windows, Smart Search component shows and installs Gicon.

Test Images

English
Korean

No Gicon installed

Installed with WinGet:

WinGet logs (Korean Windows): WinGet logs.zip
Plus: It registers itself into Task Scheduler:

And both times you used https://update.send-anywhere.com/downloads/x64/SendAnywhereSetup.exe ?
So the bad thing about Closed source Nullsoft and Inno installers is that we cannot know their custom switches, aka we cannot disable it when the evil Developer enabled it by default..

I do not, i've never seen a package act differently under a different locale, i believe this is a Korean/Chinese issue...
We can force it to be Interactive only? Or add a warning to the Korean InstallerLocale/Locale?

We need to test to see if Gicon flags as PUA. I've asked the team to confirm and run scans. If it is detected as PUA, we will remove it from the repository.

https://github.com/microsoft/winget-pkgs/pull/23473

There is no switch to uncheck NSIS section and I didn't see any custom switches available.
Anyway, there are two ways to bypass it manually:

Block www.wizchat.co.kr in Firewall
Put something to `%APPDATA\msafespt\msafespt.exe%

Function .onInit
  ; ...
  StrCmp $LANGUAGE 1042 label_1084 ; If is Korean, jump to label_1084
  Push $R0
  Push $R1
  StrCpy $R1 5
  SectionGetFlags $R1 $R0
  IntOp $R0 $R0 & 0xFFFFFFFE ; https://nsis-dev.github.io/NSIS-Forums/html/t-143655.html
  SectionSetFlags $R1 $R0 ; Force uncheck "Smart Search"
  SectionSetText $R1 "" ; Hide "Smart Search"
  Pop $R1
  Pop $R0
label_1084:
  IfFileExists $APPDATA\msafespt\msafespt.exe 0 label_1086 ; If file exists, hide "Smart Search"
  SectionSetText 5 ""
label_1086:
  ; ...
FunctionEnd

I do not, i've never seen a package act differently under a different locale, i believe this is a Korean/Chinese issue... We can force it to be Interactive only? Or add a warning to the Korean InstallerLocale/Locale?
It only appears in Korean.

We have added a task  with @msftbot to add "Blocking-Issue" to PRs for this package.


Fail to load the model version with zero as prefix

Problem described in https://github.com/tobegit3hub/simple_tensorflow_serving/issues/26#issuecomment-419783774 .

We have test with https://github.com/tensorflow/serving/tree/master/tensorflow_serving/servables/tensorflow/testdata/saved_model_half_plus_two_gpu/00000123  and it works now.


Community Support

#353
#611
#944
#953
#943
#920
#897
#855
#839
#893

Closing this as we dont need epics for an ongoing activity


Stub files - Auto-import shown for already imported symbols

Environment data

Language Server version: 2020.12.0
OS and version: macOS
Python version: 3.9

Expected behaviour
The Auto-import note should not be displayed for symbols which are already imported.
Actual behaviour

Code Snippet / Additional information
From my testing, this seem to affect only stub files.
from typing import Union

Union

--
Same example in a normal python file

@cdce8p can you give me more context/repro on this? creating blank a.py file and testing it doesn't repro it so it feels like it requires some setup to repro?

@heejaechang I can still reproduce the error with pylance 2021.3.1 in an empty project. However, as stated in the title and description, this only happens for stub files .pyi. Normal .py files are fine which I find a bit curious.
Here is what I did:

Create a new folder
Create a.pyi with

from typing import Union

Start typing: Union in a new line and activate autocompletion

My folder settings:
{
    "python.languageServer": "Pylance",
    "python.analysis.typeCheckingMode": "strict",
}

I experienced this when I was working on the matplotlib stubs last week; I think the completion provider is using the wrong symbol table when offering completions within stubs, using the one that contains symbols  externally visible to other files, and not the table that is internally visible to the stub itself.

This issue has been fixed in version 2021.3.2, which we've just released. You can find the changelog here: https://github.com/microsoft/pylance-release/blob/main/CHANGELOG.md#202132-17-march-2021


correcing-documentation-links

Checklist for This Pull Request
🚨Please adhere to the guidelines for contributing to this repository.

[x] Ensure you are submitting your pull request to a branch dedicated to a specific topic/feature/bugfix. Avoid using the master branch for pull requests.
[x] Target your pull request to the main development branch in this repository.

[x] Check that your code additions do not fail any linting checks or unit tests.

Pull Request Description
Change the fetch method to return a pydantic model and allow for the update method to support the passing of the same object.
Updated all documentation
What does this pull request accomplish?

Feature addition
Bug fix
Performance improvement
Documentation update

Are there any breaking changes included?

[ ] Yes
[x] No

Is there anything the reviewers should know?
Thank you for your contributions!

Resolved #39


Nh 35261 test liboboe md delete

Closing, as this was strictly for testing and we no longer need these changes.


not working when using template tags inside html tags

<input type="checkbox"<% if(selected){ %> checked="checked"<% } %> />

is not working.

Hello, I'm still having a parse issue when compiling this line of code from my template:
 <input class="toggle" type="checkbox" checked="<%= done ? 'checked' : '' %>">

The compiler is not saying there is an issue but it completely ignore the line <%= done ? 'checked' : '' %> causing the input to be always checked because the attribute name is rendered.
I tried the noMinify option but without success. Here is a npm script that I use:
"watchify -t [ jstify --noMinify ] js/main.js -o js/bundle.js -dv"

in your code example the checked attribute should always be rendered because it is outside of the "done" condition. checked="checked" is the same as checked="" (the cheked attribute doesnt need a value).
try:
<input class="toggle" type="checkbox"<%= done ? ' checked' : '' %>>

Well now using this code I have a parse error... Is your first code example working now, the one you used to start this issue?

I havent tried because im not using jstify anymore.

Well it doesn't work for the moment. It seems we can only output values using this module. Too bad.

Sorry, noMinify was removed in favor of setting minifierOpts to false. But turns out that setting minifierOpts via the command-line is kinda hard because browserify passes the value as a string. So instead of doing some weird casting 'false' to false, I added back noMinify. Just published as<EMAIL_ADDRESS>

I'm updating my project. Is this command right then:
"scripts": {
        "watch": "watchify -t [ jstify --noMinify ] js/main.js -o js/bundle.js -dv"
    }

@jbielick Yup

It's working smoothly now, thanks!

anyway to get this working with grunt? I have:
    browserify: {
      dist: {
        src: app + '/build/build.js',
        dest: 'dist/build.js',
        options: {
          transform: ['jstify'],
          noMinify: true,
        }
      }
    },

@dannycochran Can you open a new issue? I don't use grunt, but I think what you have to do is:
   browserify: {
      dist: {
        src: app + '/build/build.js',
        dest: 'dist/build.js',
        options: {
          transform: [['jstify', {noMinify: true}]],
        }
      }
    },

that does it. thanks!


appAgent 连手机报错啊，remote object '/sdcard/1appAgent/demo_ie1_2024-01-07_20-29-13_1.xml' does not exist

appAgent 连手机报错啊，remote object '/sdcard/1appAgent/demo_ie1_2024-01-07_20-29-13_1.xml' does not exist
我试了3个adb.exe，2个手机+1个官方模拟器，都报这个错啊。谁交流一下？
我用android studio 、uniapp 连手机开发都没问题，但appAgent里就是不行。
Command execution failed: adb -s emulator-5554 pull /sdcard/1appAgent/Screenshots/demo_ie1_2024-01-07_20-29-13_1.png ./apps\ie1\demos\demo_ie1_2024-01-07_20-29-13\raw_screenshots\demo_ie1_2024-01-07_20-29-13_1.png
remote object '/sdcard/1appAgent/Screenshots/demo_ie1_2024-01-07_20-29-13_1.png' does not exist
Command execution failed: adb -s emulator-5554 pull /sdcard/1appAgent/demo_ie1_2024-01-07_20-29-13_1.xml ./apps\ie1\demos\demo_ie1_2024-01-07_20-29-13\xml\demo_ie1_2024-01-07_20-29-13_1.xml
remote object '/sdcard/1appAgent/demo_ie1_2024-01-07_20-29-13_1.xml' does not exist

I'm having this same error. It seems to be when I start playing media is when it happens. Have you figured out a solution to this?

I have the same mistake. Do you find out the solution?

I have the same mistake. Do you find out the solution?

I have the same mistake. Do you find out the solution?
I solve the problem by checking the folder in android studio, it caused by the wrong path of the xml or picture. It's a good idea to create a new folder in as and fill it in the blank


update 'websdk version update notification' page

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

It looks like you're a Microsoft contributor (Seth Lifland). If you're full-time, we DON'T require a Contribution License Agreement. If you are a vendor, please DO sign the electronic Contribution License Agreement. It will take 2 minutes and there's no faxing! https://cla.microsoft.com.

TTYL, MSBOT;

Removing some internal information. Will send another request.


[GENERIC] What do we do about non-protocol projects?

There will be many non-protocol projects (developer tooling, communities, etc). Thoughts on how we should measure them? maybe shouldn't be included in analysis (can still include in uploads).

Agreed that they should still be included in the uploads. I would suggest having some pre-defined label of verticals that we can classify various projects into, so that it's easier to view if that's a developer tool, defi etc, and understand the funding allocation
Even knowing if that's protocol or non protocol would be nice too


XSSFSheet.CopySheet - fix null reference error

Closes #346

Do you figure out why clonedSheet.AddRelation(rel.Id, r) throws exception?

I believe it's a copy-paste error, but still not 100% sure in my fix, so, it should be reviewed carefully.
https://github.com/nissl-lab/npoi/blob/200c5d35fed9218c100e3d2f96e78aaf6cae5579/ooxml/POIXMLDocumentPart.cs#L419-L420
In line 419 the relation is not exists and then it's not checked for null, which cause NRE. Because relation is not exists, we shouldn't call this method at all

It seems I was wrong and AddRelation call shouldn't be removed, just added a null check

So do I have a new version to try？@Bykiev

@cp1319421 NPOI doesn't have nightly build. Please pend the next release. It can be a few month later.

@Bykiev I debug into the code and found that the exception occurs in cloning drawing relationship.
It tried to look for rId1. And drawing1.xml.rels looks like this
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
	<Relationship Id="rId3" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/image" Target="../media/image1.png"/>
	<Relationship Id="rId2" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart" Target="../charts/chart2.xml"/>
	<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart" Target="../charts/chart1.xml"/>
</Relationships>

In other words, rId1 is there. For some reason , it's not found. We may have to dig into this.


Order the main dry box and internal components

Decide on which LinQ box we want for the main laptop and battery. Needs to be:

[x] IP68 submersible (doesn't look like any of them are)
[x] fit an 18 Amhr lithium battery (we also need to buy this)
[x] fit a "cappuccino PC" -- finless PC with fins for heat dissipation (we also need to buy this)

For the laptop, we will also need:

[ ] touch screen interface (10 inch display)
[ ] foldable waterproof keyboard
[ ] 3 underwater cables for computer and power box (VGA cable to the display, power and connection cable for the touchscreen); Vartek (?) can do the mating for a small fee -- my notes were bad on this. Maybe we will know more looking at the photos Brett sent.

@anardek @bwebb-southal here is some info I have compiled on cappuccino PCs. Our options are dependent on how many LAN ports we need--both options below have two. Both are the same size but the more expensive option has two removable SD card slots as opposed to internal slots on the cheaper option.
Cappuccino PC:
Cheaper Option: https://www.cappuccinopc.com/Mini-PC/echo-246f-Embedded-Fanless-Mini-PC-with-i7-CoffeeLake-and-Dual-NIC.asp
More expensive option: https://www.cappuccinopc.com/Industrial-PC/Echo246F-PoE-fanless-mini-pc-with-4-PoE-Ports-and-3-SIM-Slots.asp

Here is a battery option for the dry box:

Notes from call with Brett:

need more than 1 battery wired in parallel (lithium); will just need to fit in the dry box dakota lithium)
for cappuccino pc, just make sure it is fanless, 4-6 usb inputs, that the VGA cable is compatible with the touchscreen (i.e., need to choose a touchscreen first, see the emailed quote from Bret)
screen: can send the cables to vartech and have them splice for us -- this sounded complicated but less complicated than doing ourselves Vartech screen
look into buying the LinQ accessories directly and drilling them into the dry box
for display cables: [subcon](https://www.macartney.com/what-we-offer/systems-and-products/connectors/subconn/) or impulse

@bwebb-southal -- we measured out the space we will need in the dry box and the LinQ boxes we ordered won't work. We are trying to decide if we should get a waterproof pelican and add the LinQ clips to the bottom or just use the cooler we currently have with the clips (plenty of space but only water resistant; we will of course need to drill through it for the cords). What are your thoughts? I feel like attaching the LinQ connectors to the Pelican will probably make the Pelican less waterproof anyway....

@anardek @bwebb-southal here is some info I have compiled on cappuccino PCs. Our options are dependent on how many LAN ports we need--both options below have two. Both are the same size but the more expensive option has two removable SD card slots as opposed to internal slots on the cheaper option.
Cappuccino PC:
Cheaper Option: https://www.cappuccinopc.com/Mini-PC/echo-246f-Embedded-Fanless-Mini-PC-with-i7-CoffeeLake-and-Dual-NIC.asp  More expensive option: https://www.cappuccinopc.com/Industrial-PC/Echo246F-PoE-fanless-mini-pc-with-4-PoE-Ports-and-3-SIM-Slots.asp

Just a note for dummies: buy the option with the Windows OS (not Linux)

Notes from call with Brett:

need more than 1 battery wired in parallel (lithium); will just need to fit in the dry box dakota lithium)
for cappuccino pc, just make sure it is fanless, 4-6 usb inputs, that the VGA cable is compatible with the touchscreen (i.e., need to choose a touchscreen first, see the emailed quote from Bret)
screen: can send the cables to vartech and have them splice for us -- this sounded complicated but less complicated than doing ourselves Vartech screen
look into buying the LinQ accessories directly and drilling them into the dry box
for display cables: subcon or impulse

I think my notes were wrong. Just one 18 Ah Lithium Ion battery.

@anardek @bwebb-southal here is some info I have compiled on cappuccino PCs. Our options are dependent on how many LAN ports we need--both options below have two. Both are the same size but the more expensive option has two removable SD card slots as opposed to internal slots on the cheaper option.
Cappuccino PC:
Cheaper Option: https://www.cappuccinopc.com/Mini-PC/echo-246f-Embedded-Fanless-Mini-PC-with-i7-CoffeeLake-and-Dual-NIC.asp  More expensive option: https://www.cappuccinopc.com/Industrial-PC/Echo246F-PoE-fanless-mini-pc-with-4-PoE-Ports-and-3-SIM-Slots.asp

Just a note for dummies: buy the option with the Windows OS (not Linux)

Oh no! I actually made that mistake (but in reverse) on the purchase of a $35k supercomputer so you are in good company!

Notes from call with Brett:

need more than 1 battery wired in parallel (lithium); will just need to fit in the dry box dakota lithium)
for cappuccino pc, just make sure it is fanless, 4-6 usb inputs, that the VGA cable is compatible with the touchscreen (i.e., need to choose a touchscreen first, see the emailed quote from Bret)
screen: can send the cables to vartech and have them splice for us -- this sounded complicated but less complicated than doing ourselves Vartech screen
look into buying the LinQ accessories directly and drilling them into the dry box
for display cables: subcon or impulse

I think my notes were wrong. Just one 18 Ah Lithium Ion battery.

No, we do use two 18ah batteries wired in parallel to give us 12VDC and 36ah of capacity. Look at the amperage draw rate on the display and the computer. The display sucks down a lot of current. You might be able to get away with only one, but I’d suggest running the numbers to make sure.

Nope, nothing magical about this one. I believe we used a 4-pin SubConn connector as the USB touch interface was only using 4 wires. We cut the end off and marked the wires, then used a continuity checker to ensure that we had the correct wires connected to one another from end-to-end. We did not do anything fancy inside the box... we just used the end of the USB that we had snipped off and soldered that to the leads coming from the back of the bulkhead connector.


Title links to <link rel="related"...>

The Daring Fireball feed uses this markup:
<entry>
	<title>Apple Maps in iOS 13</title>
	<link rel="alternate" type="text/html" href="https://www.macstories.net/stories/apple-maps-in-ios-13-sights-set-on-google/" />
	<link rel="shorturl" type="text/html" href="http://df4.us/rq8" />
	<link rel="related" type="text/html" href="https://daringfireball.net/linked/2019/07/31/apple-maps-ios-13" />
	<id>tag:daringfireball.net,2019:/linked//6.35936</id>
	<published>2019-07-31T16:03:27Z</published>
	<updated>2019-07-31T16:06:47Z</updated>
	<author>
		<name>John Gruber</name>
		<uri>http://daringfireball.net/</uri>
	</author>
	<content type="html" xml:base="https://daringfireball.net/linked/" xml:lang="en"><![CDATA[

Ryan Christoffel, writing for MacStories:

Timed with the spread of its first-party mapping data, Apple is giving the Maps app a big upgrade in iOS 13 that represents the company’s biggest push yet to overtake Google Maps as the world’s most trusted, go-to mapping service. Apple Maps in iOS 13 represents – if you’re in the US at least – Apple’s purest vision to date for a modern mapping service. Here’s everything that it brings.

Comprehensive overview of what’s new, and where Apple Maps stands versus Google Maps.

 ★

	]]></content>
  </entry>

The title in the preview pane links to the rel="related" URL rather than the rel="alternate" URL. I believe this is incorrect?

This is correct. NetNewsWire tries to find the permalink — that is, the link on the blog. This is based on experience with earlier versions: people tend to prefer the permalink.

Thanks for the info; is this in opposition to the Atom spec?:
https://tools.ietf.org/html/rfc4287#section-<IP_ADDRESS>
If the author of the Atom feed intends for the link to point to a different domain, shouldn't that be obeyed?

It‘s a user experience issue, though. My experience and judgment tells me the best user experience is to use the permalink, so I do.

I don't expect a response or for this to change, but count me in as someone who dislikes the experience you've chosen for the following reasons:

As a long-time Daring Fireball reader, this is not what I'm used to at all. I'm used to the title link taking me to the linked article and the star link in the body taking me to the DF entry.

What you've done is removed the user experience that the feed author has selected.

Again, I honestly think that John Gruber has chosen the better user experience because the whole point is that he is linking to things that others may find interesting. When a user reads the small intro and clicks the link, with John's setup that takes them to the article and lets them read right away. With your setup it requires a second click to get me to what I want to be reading.

@brentsimmons please reopen this issue. NetNewsWire selects the last link element in an entry. The spec allows for multiple links with different link relations. NetNewsWire doesn’t need to support all link relations, but it should select link[rel=alternate] instead of the last link element.