Move tasks into Operation object for GraphqlTransportWS handler

Simplify the handling of tasks/generators for the GraphQLTransportWS handler.  This helps as a preparation for some restructuring I have planned to fix some actual problems soon.

Description

The handler now contains a single operations member which holds Operation instances.
The task is an attribute of the object
We no longer keep track of the AsyncGenerator objects especially.  They are closed inside the task when handling base exceptions and do not require special guard constructs.  The operation tasks themselves only need to be cancelled.
We make necessary changes to test harnesses.

Types of Changes

[x] Core
[ ] Bugfix
[ ] New feature
[x] Enhancement/optimization
[ ] Documentation

Issues Fixed or Closed by This PR
Checklist

[x] My code follows the code style of this project.
[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.
[x] I have read the CONTRIBUTING document.
[x] I have added tests to cover my changes.
[x] I have tested the changes and verified that they work and don't break anything (as well as I can manage).

Hi, thanks for contributing to Strawberry 🍓!
We noticed that this PR is missing a RELEASE.md file. We use that to automatically do releases here on GitHub and, most importantly, to PyPI!
So as soon as this PR is merged, a release will be made 🚀.
Here's an example of RELEASE.md:
Release type: patch

Description of the changes, ideally with some examples, if adding a new feature.

Release type can be one of patch, minor or major. We use semver, so make sure to pick the appropriate type. If in doubt feel free to ask :)
Here's the tweet text:
🆕 Release (next) is out! Thanks to @kristjanvalur for the PR 👏

Get it here 👉 https://github.com/strawberry-graphql/strawberry/releases/tag/(next)

Thanks for yet another PR @kristjanvalur . I appreciate the changes and the Operation abstraction. Clearly there is more refactoring to be done and I'm looking forward to easier maintainable code. I left one comment just to make sure where on the same page.

Thanks for yet another PR @kristjanvalur . I appreciate the changes and the Operation abstraction. Clearly there is more refactoring to be done and I'm looking forward to easier maintainable code. I left one comment just to make sure where on the same page.

Thanks.  To explain better, because I'm afraid I'm maybe just wading in without too much warning, here is what I have in mind, and what these PRs are building up to:

Moving all potentially long running steps of subscriptions into the task.
Fixing error handling for subscriptions, such that they behave like for Appollo
making handling of errors inside tasks more robust

Along the way, I am finding myself constantly pulled into different and facinating rabbit holes, such as the one opened by #2702 which makes this all so interesting.  I'll be making a PR for that one, which likely will include some small refactorings as well.  This in turn might prompt me to make a PR for Starlite.  Or Litestar.  But maybe that project just isn't ripe enough just yet.

This PR is currently a prerequisite for two other prs which I have in progress (more socket blocking fixes and error handling).  Having a single "operation" object simplifies logistics.

This PR is currently a prerequisite for two other prs which I have in progress

Sorry for the delay. Not sure why I didn't merge it after approving. I'll take another look to see whether I had any second thoughts or other reasons not to merge it yet

Okay this is good to go. Thanks again for the PR @kristjanvalur!


Whiteboard camera scaling issue

I want to to use whiteboard with fixed width and height. So I can take screenshot in fixed size always. Here I can use cameraBound option when joining the room and it is working fine. But issue happening when I am scaling down (Zoom out) the camera using moveCamera method, then it allows more space on both sides. After that when zoom in again, we cant access that space, drag tool also not able to scroll to that space. So, Without zoom out user will not able to know what is drawn on that space. Please suggest what should I do ?

It works as expected here: cameraBound is used to limit user actions, while moveCamera is triggered by developer's code, which always succeeds.
If you want to control the camera more precisely, then you should make use of these functions:

moveCamera({ centerX, centerY, scale })
moveCameraToContain({ originX, originY, width, height })
callbacks.on("onRoomStateChanged", state => handle(state.cameraState))

For example, you can add a "restore camera" button that simply does moveCamera(remembered_camera) where remembered_camera is read from the onRoomStateChanged callback.

The above mentioned points I understood.
But the issue happening when performing zoom in from < 1 (.4) camera scale in a cameraBound whiteboard.


feat(#284): Add Support of IF_ICMPGT Instruction

In this PR I added support of IF_ICMPGT instruction which made possible to decompile Factorial class.
Closes: #284.
History:

feat(#284): identify the problem
feat(#284): add first implementation for If node
feat(#284): parse multiplication from XMIR
feat(#284): fix the order of IF arguments and add IMUL opcode to Mul AST node
feat(#284): add one more puzzle
feat(#284): add selective compiler
feat(#284): exclude files with try-catch-blocks
feat(#284): calculate maxs only for org.eolang classes
feat(#284): exclude tests with try-catch-blocks
feat(#284): add one more puzzle
feat(#284): fix all qulice suggestions

PR-Codex overview
This PR introduces improvements and new features to the EO language compiler and decompiler.
Detailed summary

Added support for new opcodes and types in various classes
Implemented decompilation of try-catch blocks
Updated compiler classes for better functionality

The following files were skipped due to too many changes: src/test/java/it/JeoAndOpeoTest.java, src/main/java/org/eolang/opeo/decompilation/handlers/IfHandler.java, src/test/java/org/eolang/opeo/ast/LabeledTest.java, src/main/java/org/eolang/opeo/compilation/JeoCompiler.java, src/test/java/org/eolang/opeo/ast/IfTest.java, src/main/java/org/eolang/opeo/compilation/SelectiveCompiler.java, src/main/java/org/eolang/opeo/ast/If.java, src/test/resources/xmir/disassembled/Factorial.xmir

✨ Ask PR-Codex anything about this PR by commenting with /codex {your question}

@rultor merge

@rultor merge

@volodya-lombrozo OK, I'll try to merge now. You can check the progress of the merge here

@rultor merge

@volodya-lombrozo Done! FYI, the full log is here (took me 7min)


fix: update search header wording

Signed-off-by: feng-tao<EMAIL_ADDRESS>
Summary of Changes
Currently Amundsen has dataset, user and dashboard so far. And the heading is fixed to dataset. Change the wording to resource to be more generic.
Tests
What tests did you add or modify and why? If no tests were added or modified, explain why. Remove this line
Documentation
What documentation did you add or modify and why? Add any relevant links then remove this line
CheckList
Make sure you have checked all steps below to ensure a timely review.

[ ] PR title addresses the issue accurately and concisely. Example: "Updates the version of Flask to v1.0.2"

In case you are adding a dependency, check if the license complies with the ASF 3rd Party License Policy.

[ ] PR includes a summary of changes, including screenshots of any UI changes.
[ ] PR adds unit tests, updates existing unit tests, OR documents why no test additions or modifications are needed.
[ ] In case of new functionality, my PR adds documentation that describes how to use it.

All the public python functions and the classes in the PR contain docstrings that explain what it does

[ ] PR passes all tests documented in the developer guide

cc @allisonsuarez


Documentation for how to make materializations / schema tests

[x] Materialization docs here
[x] Schema test docs here

NOTE: Make these pages public once this issue is closed

@jthandy mind taking a look at these?

These are great! I made a tiny change to example model and field names for your schema test; I found your examples confusing so I just picked some really boring ones.
👍

Good idea @jthandy. Merging


[core] Use boolean type for ListItem prop instead of 'false'

Sometimes, we might need to assign button type as boolean. Last time i tried conditional variable passed to button prop. Something like this
<ListItem button={!!item.onClick} />

But i got an error type caused type boolean isn't assignable to type true or false

[x] I have followed (at least) the PR section of the contributing guide.

This can be considered better than before but <ListItem button={someBooleanVal} /> will never accept button props. It'll always be considered a li and I'm not sure what's better: failing loudly with "boolean really just doesn't work" or failing silently and complaining later on unassignable props. We're basically kicking type errors down the stack.

@eps1lon i'm pretty sure that you could still accept the button props if you assign the value of button directly as true
<ListItem
  button
  onClick={e => ....} // `e` variable has `HTMLDivElement` type
/>
<ListItem
  button={boolValue} // or `false`
  onClick={e => ....} // `e` variable has `HTMLLIElement` type
/>

That's why i changed the type order of true value of button as first checking

<ListItem
button={boolValue} // or false
onClick={e => ....} // e variable has HTMLLIElement type
/>

What if boolValue is true at runtime? The typings expect that boolean is the same as false which is not sound. I'm not fully convined that your approach is better. It just seems to hide issues.

But not always the same. The reasons why ListItem read as div component, because it receive true exact value. Otherwise, if ListItem receive boolean variable which is it could be true or false it will be read as the default component that is li.
So, if you want get some div component types suggestion, you have to assign the button prop as true directly.
I think this is better, cz it can assign the button variable dynamically. Unlike the old one that can only receive static value

I think this is better, cz it can assign the button variable dynamically. Unlike the old one that can only receive static value

You're trading soundness. Whether that is "better" depends on how sound you want your types to be. You could achieve the same right now by passing <ListItem button={boolValue as false} />. With that you're  directly aware of potential problems. With your change you ain't.

For context, in #13597, we discuss breaking down the ListItem component into smaller components. It frees us from this problem.
<nav>
  <List>
    <ListItem>
      <ListItemButton component={NavLink}>
        Foo
      </ListItemButton>
      <ListItemSecondaryAction>
        Bar
      </ListItemSecondaryAction>
    </ListItem>
  </List>
</nav>

@ricosandyca Would it solve #14971? I think that it does, trading soundness could make sense for an issue with 35 upvotes. Maybe we should add a test case that illustrates the fix?

@oliviertassinari i think it would, and for the test case i think it would be great

💯  for accepting the changes if:

It fixes #14971
We add a test case to guarantee it.
We add a test case to surface the limitation of the approach, where it's less sound.

It fixes #14971

It doesn't fix it. It just silences the error which can already be achieved by passing <ListItem button={someBoolean as false} />.
I already know that people don't want to do it because of "type casting is bad" but type casting isn't bad inherently. It's only bad if it leads to unsound types and is effectively equivalent to this change proposed here.
But maybe I'm wrong but we can only check that if we have a type test for using HTMLListElement props on <ListItem button={someBoolean} />.

Should we close the pull request?


Fix container scenarios to accept just the signal number for the action

The current container scenario allows users to pass an action with a command that gets run inside a container, this allows users to potentially run any command vs just passing the kill signal which is the intent. The config should look something like:
scenarios:
- name: "kill etcd container"
  namespace: "openshift-etcd"
  label_selector: "k8s-app=etcd"
  container_name: "etcd"
  action: "1" ( instead of kill 1 )
  count: 1
  retry_wait: 60

cc: @tsebastiani


How to use deepface inside tkinter

Hello, @serengil I tried to use the DeepFace.stream() inside Tkinter but it failed is there some way I could embed the box inside the Tkinter window.
And also how to make the stream() function detect the race of the person.
Thanks in advance.

I don't know anything about Tkinter unfortunately.
I could add the race prediction in streaming in the next release of course.

I don't know anything about Tkinter unfortunately.
I could add the race prediction in streaming in the next release of course.

Is there any way I could get back values from the stream() function as a dictionary?
data  = DeepFace.stream('database')

print(data)

Now it returns NonetType
I want something like this.
{
age: 20,
gender: male,
neutral: 0.3,
happy: , ....
}

Is there any way I could get back values from the stream() function as a dictionary?
data  = DeepFace.stream('database')

print(data)

Now it returns NonetType
I want something like this.
{
age: 20,
gender: male,
neutral: 0.3,
happy: , ....
}

Stream function runs a while loop. We might add the each frame result to the response but this makes slow your system. That is not logical. We might store the results in a custom file?

Stream function runs a while loop. We might add the each frame result to the response but this makes slow your system. That is not logical. We might store the results in a custom file?

Yeah we can store just wanna see the values. Atleast at a certain interval of time about every one minute the value will be save along with the starting value.

Yeah we can store just wanna see the values. Atleast at a certain interval of time about every one minute the value will be save along with the starting value.

Yes, this would be really useful. I need real-time emotion detection.

This is not gonna be handled soon and issue was open for a long time. That's why, I will close it.


Replace access to table RIS_PROG_TADIR

Use function SEO_METHOD_GET_NAME_BY_INCLUDE instead.

Maybe the table RIS_PROG_TADIR can be used nonetheless.

RIS_PROG_TADIR does not exist in SAPRL "731"
FM SEO_METHOD_GET_NAME_BY_INCLUDE is obsolete:
Früher:
DATA MTDKEY TYPE SEOCPDKEY.

CALL FUNCTION 'SEO_METHOD_GET_NAME_BY_INCLUDE'
  EXPORTING PROGNAME = PROGNAME
  IMPORTING MTDKEY = MTDKEY.
WRITE / MTDKEY-MTDNAME.

Neu:
CLASS CL_OO_INCLUDE_NAMING DEFINITION LOAD.
DATA OREF TYPE REF TO IF_OO_CLASS_INCL_NAMING.

OREF ?= CL_OO_INCLUDE_NAMING=>GET_INSTANCE_BY_NAME( MTDKEY-CLSNAME ).
WRITE / OREF->GET_MTDNAME_BY_INCLUDE( PROGNAME ).

Oder:
CLASS CL_OO_INCLUDE_NAMING DEFINITION LOAD.
DATA OREF TYPE REF TO IF_OO_CLASS_INCL_NAMING.

OREF ?= CL_OO_INCLUDE_NAMING=>GET_INSTANCE_BY_INCLUDE( PROGNAME ).
MTDKEY-CLSNAME = OREF->CLSKEY-CLSNAME.
MTDKEY-MTDNAME = OREF->GET_MTDNAME_BY_INCLUDE( PROGNAME ).

Thanks for noting. I would like to do further checks regarding performance before deciding what is the best option.


Support setting a debugger breakpoint to pause when a test fails

Add a function with a well-defined symbol that gets invoked whenever a failure occurs. This allows an attached debugger to place a breakpoint on that symbol and pause execution whenever a test failure is recorded.
Motivation:
It's often helpful when investigating a test failure to attach using a debugger and place a breakpoint to step through the code. And sometimes, you want to pause exactly at the spot where a test failure occurs, instead of at the beginning of a particular test. This makes that workflow possible by establishing a function for which you can create a symbolic breakpoint, so that execution will pause whenever a test failure occurs.
Modifications:

Introduce a new function which is called whenever a test failure is recorded. Open to naming improvement suggestions!
Allow configuring this "failure breakpoint" in Configuration to facilitate unit testing.
Add new unit tests.

Result:
It is possible to set a symbolic breakpoint on this new function and pause upon failure.
Resolves rdar://116948062

@swift-ci please test

Is the intent here just to provide a named function that can be used as a breakpoint target? If so, we can probably call it directly from post(). We will also want to annotate the C++ function with a few attributes to make sure clang doesn't optimize it away.

@swift-ci please test

Is the intent here just to provide a named function that can be used as a breakpoint target? If so, we can probably call it directly from post().

I wanted to make it a Configuration property for a couple reasons:

It facilitates unit testing, which the new tests in this PR demonstrate.
When integrating with tools, this Configuration property provides the option of calling a pre-existing function/symbol, which may be useful in case the tool already has some debugging support it wants to integrate with.

But customizing this new Configuration property is not necessary to take advantage of this new feature. This PR intentionally defaults to a new, documented symbol which this library provides directly, and this makes the feature usable even when directly attached via a debugger, without other intermediary tools involved.

We will also want to annotate the C++ function with a few attributes to make sure clang doesn't optimize it away.

Definitely! I included __attribute__((noinline)) __attribute__((disable_tail_calls)) SWT_SENDABLE — are there other/different attributes you think are needed?

When integrating with tools, this Configuration property provides the option of calling a pre-existing function/symbol

Seems like this is more easily solved by having the tool, in its implemented event handler, call that function directly. I am not sure we actually need any code changes at all to support such a workflow.

@swift-ci please test

:shipit:

@swift-ci please test


Error -32027

Sent an email to customer support regarding this. They told me to buy another license.
I already bought the student license and filled the request form for the EEG SDK access.
FYI: the above mentioned are the steps that are required to be done as per the documentation of cortex in order to access EEG data stream.
I have done both.
However while running any script from the cortex api I was still receiving error -32027. So I reached out to customer support and they told me to buy another license worth $1250.
After reading through the closed issues on GitHub I came across several people who were facing the same issue. So I'm hoping to get contacted by someone who would guide me through the next steps.

Hi @ananyakapoor19 ,
the error said that you don't have permission for this  license. If you want to access EEG data from 3rd party app, you need buy PRO license with SDK access.


Add endpoint override functionality

This is useful for internal testing.

Codecov Report

Merging #12 into master will not change coverage.
The diff coverage is 100.00%.

@@            Coverage Diff            @@
##            master       #12   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files            6         6
  Lines          262       277   +15
=========================================
+ Hits           262       277   +15

Impacted Files
Coverage Δ

spec/pusher/push_notifications/client_spec.rb
100.00% <100.00%> (ø)

...ec/pusher/push_notifications/configuration_spec.rb
100.00% <100.00%> (ø)

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 7690f4c...ab96fc6. Read the comment docs.


Does not work in touch devices

Hey guys, this does not seem to work in touch devices. Im thinking its because no suggestion is focussed in the first place. Am I right? Thinking of a solution. Would like to get ideas! :)

Adding that.suggestions.focusElement( this ) to the click handler does get the job done. But just wanna check with you guys if that's fine. Thanks.


mamba: 2.2 -> 2.3

Automatic update generated by nixpkgs-update tools. This update was made based on information from https://github.com/brummer10/Mamba/releases.
meta.description for mamba is: "Virtual MIDI keyboard for Jack Audio Connection Kit"
meta.homepage for mamba is: "https://github.com/brummer10/Mamba"
meta.changelog for mamba is: ""
Updates performed

Version update

To inspect upstream changes
Impact

Checks done (click to expand)

built on NixOS
The tests defined in passthru.tests, if any, passed
found 2.3 with grep in /nix/store/612pmc17r1nkgg3rnm73cbqvqprfawkl-mamba-2.3
found 2.3 in filename of file in /nix/store/612pmc17r1nkgg3rnm73cbqvqprfawkl-mamba-2.3

Rebuild report (if merged into master) (click to expand)

1 total rebuild path(s)

1 package rebuild(s)

First fifty rebuilds by attrpath
mamba

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/612pmc17r1nkgg3rnm73cbqvqprfawkl-mamba-2.3 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A mamba https://github.com/r-ryantm/nixpkgs/archive/788c272cffea76a0be7813cd1fba173915d95405.tar.gz

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/612pmc17r1nkgg3rnm73cbqvqprfawkl-mamba-2.3
ls -la /nix/store/612pmc17r1nkgg3rnm73cbqvqprfawkl-mamba-2.3/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

1 package built:

mamba

Maintainer pings
cc @magnetophon @orivej for testing.

@ofborg eval


Integration tests for child_chain.py

We're currently just unit testing child_chain.py with a mock RootChain. We should add integration tests to make sure that the two actually work together.

Added in #92


An idea to reduce duplicate code in ./boards/.

Hi,
I noticed that there are a lot of file duplication in the ./boards/ directory. This is probably a very late point in time to try and fix this, but I am prepared to give it a go. In my PR #78, I added a tool for exposing this.
Before I start, I'd like to make it absolutely clear that I am not trying to say that this is bad or anything in those lines. I simply don't believe that duplicate code is good. It's hard to maintain and hard to stop from getting duplicated even more.
Let's take the following example:
How many stm32_autoleds.c files do we have in ./boards/?
$ find ./boards/ -type f -name stm32_autoleds.c |wc -l
49

The answer is 49 files. This is not bad, just a fact.
Now the interesting part starts. We'll list the 20 most common combinations of files that are the most common. The ./tools/listcommonpercentage.sh from PR #78 lists the following (file, common_%, file, common_%):
find ./boards/ -type f -name stm32_autoleds.c |grep -v nero |PERCENT_SIGN="" DELIM=" " xargs ./tools/listcommonpercentage.sh |sort -nk2 -nk4 |tail -20
./boards/arm/stm32/photon/src/stm32_autoleds.c 99 ./boards/arm/stm32l4/b-l475e-iot01a/src/stm32_autoleds.c 99
./boards/arm/stm32/stm3220g-eval/src/stm32_autoleds.c 99 ./boards/arm/stm32/stm3240g-eval/src/stm32_autoleds.c 99
./boards/arm/stm32/stm32f334-disco/src/stm32_autoleds.c 99 ./boards/arm/stm32/nucleo-f103rb/src/stm32_autoleds.c 99
./boards/arm/stm32/stm32f334-disco/src/stm32_autoleds.c 99 ./boards/arm/stm32/nucleo-f302r8/src/stm32_autoleds.c 99
./boards/arm/stm32/stm32f334-disco/src/stm32_autoleds.c 99 ./boards/arm/stm32/nucleo-f334r8/src/stm32_autoleds.c 99
./boards/arm/stm32/stm32f334-disco/src/stm32_autoleds.c 99 ./boards/arm/stm32/nucleo-l152re/src/stm32_autoleds.c 99
./boards/arm/stm32/stm32f334-disco/src/stm32_autoleds.c 99 ./boards/arm/stm32f0l0g0/b-l072z-lrwan1/src/stm32_autoleds.c 99
./boards/arm/stm32/stm32f334-disco/src/stm32_autoleds.c 99 ./boards/arm/stm32f0l0g0/nucleo-g071rb/src/stm32_autoleds.c 99
./boards/arm/stm32/stm32f334-disco/src/stm32_autoleds.c 99 ./boards/arm/stm32f0l0g0/nucleo-l073rz/src/stm32_autoleds.c 99
./boards/arm/stm32f0l0g0/nucleo-f091rc/src/stm32_autoleds.c 99 ./boards/arm/stm32f0l0g0/nucleo-f072rb/src/stm32_autoleds.c 99
./boards/arm/stm32f0l0g0/nucleo-g071rb/src/stm32_autoleds.c 99 ./boards/arm/stm32f0l0g0/b-l072z-lrwan1/src/stm32_autoleds.c 99
./boards/arm/stm32f0l0g0/nucleo-l073rz/src/stm32_autoleds.c 99 ./boards/arm/stm32f0l0g0/b-l072z-lrwan1/src/stm32_autoleds.c 99
./boards/arm/stm32f0l0g0/nucleo-l073rz/src/stm32_autoleds.c 99 ./boards/arm/stm32f0l0g0/nucleo-g071rb/src/stm32_autoleds.c 99
./boards/arm/stm32f7/stm32f746g-disco/src/stm32_autoleds.c 99 ./boards/arm/stm32f7/stm32f769i-disco/src/stm32_autoleds.c 99
./boards/arm/stm32h7/nucleo-h743zi/src/stm32_autoleds.c 99 ./boards/arm/stm32f7/nucleo-144/src/stm32_autoleds.c 99
./boards/arm/stm32h7/nucleo-h743zi/src/stm32_autoleds.c 99 ./boards/arm/stm32h7/stm32h747i-disco/src/stm32_autoleds.c 99
./boards/arm/stm32l4/nucleo-l496zg/src/stm32_autoleds.c 99 ./boards/arm/stm32f7/nucleo-144/src/stm32_autoleds.c 99
./boards/arm/stm32l4/stm32l4r9ai-disco/src/stm32_autoleds.c 99 ./boards/arm/stm32l4/stm32l476vg-disco/src/stm32_autoleds.c 99
./boards/arm/stm32/nucleo-f207zg/src/stm32_autoleds.c 100 ./boards/arm/stm32/nucleo-f303ze/src/stm32_autoleds.c 100
./boards/arm/stm32f0l0g0/stm32f051-discovery/src/stm32_autoleds.c 100 ./boards/arm/stm32f0l0g0/stm32f072-discovery/src/stm32_autoleds.c 100

So, the 20 most common file combinations are >= 99% copies of each other. Does it hurt? Well, only if these files have a bit of code in them. For sure they have code in them, 58 lines of it. This means that if we could get rid of the duplication, we'll save 58 * .99 * (20/2 - 1) = 516 lines of code.
https://github.com/apache/incubator-nuttx/blob/97bead5496614029e612b553daaab5856592df49/boards/arm/stm32f0l0g0/nucleo-l073rz/src/stm32_autoleds.c#L36-L94
Let's look at a diff of a random pair:
$ diff -u ./boards/arm/stm32f0l0g0/nucleo-l073rz/src/stm32_autoleds.c

./boards/arm/stm32f0l0g0/b-l072z-lrwan1/src/stm32_autoleds.c
--- ./boards/arm/stm32f0l0g0/nucleo-l073rz/src/stm32_autoleds.c 2019-12-13 17:09:50.704153380 +0000
+++ ./boards/arm/stm32f0l0g0/b-l072z-lrwan1/src/stm32_autoleds.c        2019-12-13 17:09:50.704153380 +0000
@@ -1,5 +1,5 @@
 /****************************************************************************
- * boards/arm/stm32f0l0g0/nucleo-l073rz/src/stm32_autoleds.c
+ * boards/arm/stm32f0l0g0/b-l072z-lrwan1/src/stm32_autoleds.c
  *
  *   Copyright (C) 2018 Gregory Nutt. All rights reserved.
  *   Authors: Mateusz Szafoni<EMAIL_ADDRESS>@@ -44,11 +44,10 @@
 #include <debug.h>

 #include <nuttx/board.h>
+#include <arch/board/board.h>

 #include "stm32_gpio.h"
-#include "nucleo-l073rz.h"
-
-#include <arch/board/board.h>
+#include "b-l072z-lrwan1.h"

 #ifdef CONFIG_ARCH_LEDS

Actually, if you look closer, only the following 2 lines differ:
#include "nucleo-l073rz.h"
#include "b-l072z-lrwan1.h"

So if we could include a file with a common name here, which should be easy, the files will be 100% copies.
The final step will be to find a place for the (common) stm32_autoleds.c file.
I would suggest it has to live in ./boards/<somewhere>/drivers/, but we have at least 5 for this case:
$ find ./boards/arm/ -maxdepth 1 -type d -name stm32\*
./boards/arm/stm32
./boards/arm/stm32h7
./boards/arm/stm32f0l0g0
./boards/arm/stm32l4
./boards/arm/stm32f7

This makes me think that ./boards/arm/drivers/, which does not exist yet, would be the right place for it. If this is the right place, I'll have to add this directory and bind it into the whole make process, which should also not be such a problem.
I'll appreciate any feedback on this idea and I would like to add that I am prepared to continue with the implementation of this or any related idea, in order to reduce the code duplication.
Thanks & regards

Hi Pieter, in fact the idea of moving from the old configs/ directory to the new boards/ was exactly to let boards to share common code. Maybe to make it clear, the directory should be called ./boards/arm/common/drivers/ and so besides drivers we could have other common things (init/, script/, etc).
Also note that inside each board family (i.e. stm32, nrf52, etc) already exist a drivers/ directory. So I think putting this new drivers/ inside common/ will help to avoid users making mistakes.

I am opposed to these kinds of changes.  The board directories  are customization points and MUST NOT BE MERGED INTO COMMON FILES.  That corrupts the modulare architecture of the OS and cannot be permitted.
There are things that are common not particularly customization points (like some USB Host logic).  But I would resist strong any willy nilly combination of code just because it looks the same today (it might look different tomorrow, that is the nature of customization points).
I would refer you to the top-level INVIOLABLES.txt under "The Enemies."
109 Sometimes Code Duplication is OK
110 --------------------------------
111
112   o Sometimes is better to duplicate some logic than to introduce coupling
Any rampant combination of logic for now reason than the OCD compulsion to due so must be resisted.  What you are proposing WILL damage the OS.

Very bad idea.  Violates the basic principles or a modular operating system.  We cannot consider this.

Hi Alan,
Thanks for your answer.
@acassis wrote:

Maybe to make it clear, the directory should be called ./boards/arm/common/drivers/ and so besides drivers we could have other common things (init/, script/, etc).

I take it you mean  ./boards/arm/common/drivers/ , ./boards/arm/common/init/,  ./boards/arm/common/init/, etc?
@acassis wrote:

Also note that inside each board family (i.e. stm32, nrf52, etc) already exist a drivers/ directory. So I think putting this new drivers/ inside common/ will help to avoid users making mistakes.

Do you mean that for example a new driver for ./boards/arm/stm32/<newboard>/src/<newdriver>.* will have to live in ./boards/arm/common/drivers/, so that ./boards/arm/<stm32variants>/<board>/ can re-use it in a modular way?

Hi Greg,
Thanks for your answer. I appreciate your point of view.
I do understand that making a braking change in any common place will break all code that uses it.
The trade-off is that changing something, that was copied 50 or more times, takes much more time and is just as error prone as fixing it in a common place.
@patacongo wrote:

The board directories are customization points and MUST NOT BE MERGED INTO COMMON FILES.
.
.
What you are proposing WILL damage the OS.

This was not my intention. I wanted to move common stuff from ./boards/ into a common place inside ./boards/. From my understanding this cannot affect the OS, but it can affect other implementations inside ./boards/.
I'm sorry if I'm misunderstanding the OS, but am I wrong to argue that ./boards/ is not part of the OS, as ./boards/ has implementations that just use the OS?

Reducing code duplication is not a priority.  Never has been, never will be.  Maintaining a strict module, independent architecture where changes in one are does not affect other areas is a high priority.  We get there via a modulare, siloed architecture with no sharing between silos.
I am VERY strongly opposed with the urge to combine code for no reason than the other people are obsessed with combining code.  It is unhealthy for the OS and will be resisted with every fiber.
There has never been a single case where duplicating code has caused any significant issues.  yes, sometimes people have the same problem but that had been corrected in similar code.  That happens maybe a couple of times per yeard and is immediately resolved.  But combined code has a far worse problem (aside from trashing the architecture):  Peoplel change the combined code for their own purposes and break everyone else's platforms.  That is no acceptable and will not be allowed to happen (at least any futher that it already has).
This is a bad topic and is not going get you any support.  I suggest doing something better with your time.  This is unacceptable.


runtime: panic stack trace includes closure from method value

What version of Go are you using (go version)?
go version go1.10 linux/amd64
Does this issue reproduce with the latest release?
yes
What operating system and processor architecture are you using (go env)?
GOARCH="amd64"
GOBIN=""
GOCACHE="/home/vagrant/.cache/go-build"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/vagrant/workspace-dss"
GORACE=""
GOROOT="/usr/local/go-1.10"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go-1.10/pkg/tool/linux_amd64"
GCCGO="gccgo"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build161669454=/tmp/go-build -gno-record-gcc-switches"

What did you do?
It's may also be reproduced by examining the call stack of a panic. For example:
https://play.golang.org/p/579SSX2Vx5t
What did you expect to see?
hi
panic: stack trace

goroutine 1 [running]:
main.Func.Bar(0x11d5a8, 0x1738e0)
	/tmp/sandbox941741331/main.go:19 +0x60
main.Func.Foo(0x1040c128, 0x0)
	/tmp/sandbox941741331/main.go:11 +0x40
main.main()
	/tmp/sandbox941741331/main.go:25 +0x80

What did you see instead?
hi
panic: stack trace

goroutine 1 [running]:
main.Func.Bar(0x11d5a8, 0x1738e0)
	/tmp/sandbox941741331/main.go:19 +0x60
main.(Func).Bar-fm()
	/tmp/sandbox941741331/main.go:24 +0x40
main.Func.Foo(0x1040c128, 0x0)
	/tmp/sandbox941741331/main.go:11 +0x40
main.main()
	/tmp/sandbox941741331/main.go:25 +0x80

This is a problem for code that expects to reliably count frames on the stack based on the function calls actually made (e.g. logging modules that want to track file/line of the caller). When artificial frames are injected into the call stack (due to passing around a function reference and later invoking it) this becomes confusing and hard to deal with when attempting to determine the file/line of the caller. It also seems semantically incorrect: the assignment of func Bar to a variable IS NOT a call to the function, so it should not be in the caller stack.

To be clear, this was first observed when troubleshooting a failing unit test on a project that was attempting to use runtime.Caller. The reproduction use case using panic seemed more concise, so that's what I linked to. If needed I can provide a reproduction using runtime.Caller instead.

Per https://golang.org/ref/spec#Method_values:

These two invocations are equivalent:
t.Mv(7)
f := t.Mv; f(7)

That does seem to imply that the method value should not be treated as a separate function call.

See also #16723.
(CC: @aclements)


Add support to pass additional telemetry parameters for node-stats telemetry

For tracking remote store nightly runs, we need the changes to be done in opensearch-build repo to enable collection of node-stats/segments stats. The below is the change summarised -
--telemetry="node-stats" --telemetry-params='{"node-stats-include-indices":"true"}' in OSB run command.
{"node-stats-include-indices":"true","node-stats-include-indices-metrics":"segments"} - parameters required.
Also, we are seeing discrepancy in the Remote Store nightly runs where the throughput is showing almost 1/3rd of the expected throughput. Link
Please help to get the above 2 points addressed (introduction of remote store metrics and fixing the remote store dashboard) as we need to track the performance characteristics and couple of remote store specific stats at the earliest to avoid any unintentional regression (by catching it from the nightly remote store dashboards).

See successful run with --telemetry-params https://build.ci.opensearch.org/blue/organizations/jenkins/benchmark-test/detail/benchmark-test/5335/pipeline/37/


Inconsistency in how image paths are handled between markdown links and img hrefs

Have you read the Contributing Guidelines on issues?

[X] I have read the Contributing Guidelines on issues.

Prerequisites

[X] I'm using the latest version of Docusaurus.
[X] I have tried the npm run clear or yarn clear command.
[X] I have tried rm -rf node_modules yarn.lock package-lock.json and re-installing packages.
[X] I have tried creating a repro with https://new.docusaurus.io.
[X] I have read the console error message carefully (if applicable).

Description
(I'd be happy to work on this issue if someone can point me in the right direction to get started)
It could be argued this is not a bug, but it is certainly unintuitive behaviour that makes things a little harder to work with.
Consider a folder in docs that contains a markdown file and an image (this is a pattern that I think could be pretty comon - each docs page contains its own folder of images, i.e. co-locating images with their associated document, if they are specific to the document, rather than shared across the site):
docs
-> folder1
-> folder1/index.md
-> folder1/images/image.png

The following markdown snippet will correctly render the image:
![Alt Text](./images/image.png)

As this works. GitHub also correctly renders this in pull requests etc.
I think the user would expect that the following would also work:

This form might be used if you want to control the style/width of an image. The snippet above also renders correctly in a GitHub markdown preview in a code change.
However, instead we have to use this form:

This works - however it is unintuitive that this form has to be used given that the pure markdown version works with relative paths properly. It also means that typical markdown previewing tools (such as GitHub's own markdown renderer) fail to render the images. This just makes the process of working with images that are co-located with documents a bit more painful.
I love the tool - I'm migrating Effective Shell to Docusaurus at the moment - one of the reasons I prefer it to Hugo is that I don't have to use weird platform specific features (like relref in Hugo) - I can just use plain old markdown links. But this img behaviour is a little odd. I understand it's a low priority issue with a simple workaround, but feels like the entire tool would be a little more user friendly (especially for complex folder structures like mine) if it was possible to use plain old relative paths in img tags.
An example of this inconsistency (which also shows how GitHub fails to render the img tags properly) is at: https://github.com/dwmkerr/effective-shell/blob/main/effective-shell/docs/01-transitioning-to-the-shell/01-getting-started/index.md
Please see the sandbox at: https://codesandbox.io/s/serene-butterfly-fz6tk?file=/docs/image-issue/image-issue.md
Steps to reproduce
Please see above, or the code at:

https://github.com/dwmkerr/effective-shell/blob/main/effective-shell/docs/01-transitioning-to-the-shell/01-getting-started/index.md
https://codesandbox.io/s/serene-butterfly-fz6tk?file=/docs/image-issue/image-issue.md

Expected behavior
Image tags would be able to reference images using relative paths without any special treatment.
Actual behavior
Image tags that reference images in relative paths require us to use require - this fails to preview in many common markdown renderers - such as GitHub's own renderer, meaning we are more likely to make mistakes when using these paths.
Your environment

Public source code: https://github.com/dwmkerr/effective-shell - docusaurus version is in the subfolder effective-shell
Public site URL: https://effective-shell.com/effective-shell
Docusaurus version used: 2.0.0-beta.14
Environment name and version (e.g. Chrome 89, Node.js 16.4): Node v14.15.1, Chrome Version 97.0.4692.71 (Official Build) (x86_64)
Operating system and version (e.g. Ubuntu 20.04.2 LTS): macOS Catalina 10.15.7 (19H1615)

Reproducible demo
https://github.com/dwmkerr/effective-shell/tree/main/effective-shell
Self-service

[X] I'd be willing to fix this bug myself.

Hi! Image paths are specially handled in Markdown by converting them to require calls. We have included that in our docs: https://docusaurus.io/docs/next/markdown-features/assets#images This is to make the behavior more in line with how GitHub renders images.
If you want the same effect in JSX, you have to wrap your path in require() as well in order for webpack to handle it.


From / Into for DynamicImage

I noticed there are conversion methods for DynamicImage into the various other image types, but none of these is consuming. For my tool I work with RGBA data only, so I convert every image I load into RGBA before usage. However, DynamicImage::to_rgba() always creates a copy, which would be unnecessary in the case I already am dealing with the RGBA subtype. I suggest that From / Into implementations for DynamicImage  be added that take care of the consuming conversion in a more optimized way.
I could file a PR if you like the change.

That is actually a little bit tricky to implement.
Furthermore I doubt that the gain will be huge, so if your program is slow that probably has another cause than one excess allocation per iteration.

Why would it be? It might be a little verbose because one would have to do the matching, but not tricky.
Well, I consider this to be quite the waste of memory, to be honest. A 1920x1080 at 8bit Rgba already takes up 8 MB of memory. Just converting it into it's inner form will allocate another 8 megs that could've been avoided in some / most cases. And 1920x1080 is not a large image, if we're talking about processing photographs, we're talking about 15-25MBs per image each.

I would be tricky, because you would need to operate on raw bytes, drop all abstraction and handle the subpixels manually.
I wouldn’t be so sure about the waste of memory either, you assume that you can just resize a vector without reallocating and moving which isn’t always true. The only difference would be that you drop you additional image faster. Have a look: https://is.gd/sA2jMm
It would probably be more efficient if you would enable the api to reuse a buffer.

Oh, seems like we're talking about different things here! 😆
I just want a convenient and more efficient way to convert DynamicImage (the enum) into it's inner variants (RgbImage, RgbaImage, etc.). The actual conversion in the case where the source type and the target type of the conversion does not match up, can remain.
Basically I want something like this in a consuming fashion that is optimized for the case when we're already dealing with the DynamicImage::ImageRgba8 case. Like this pseudo-code:
impl From<DynamicImage> for RgbaImage {
    fn from(val: DynamicImage) -> Self {
        if let DynamicImage::ImageRgba8(img) = val {
            val
        } else {
            val.to_rgba8()
        }
    }
}

This shouldn't need any subpixel-handling or raw-bytes operations that aren't already there.

This was implemented in #1096 as dedicated methods but I missed closing this.


feature/Preserve the label data

🚩Preserve the label data | add-book-and-labels - >>branch<< -
Hi there! @Dachrono    👋
This is the PR for the Ruby capstone project. The main objective of this task is to implement the functionality of preserving the label data in the labels.json file
Here is a summary of what has been done:

[x] Create the labels.json file in the persistence folder to store the label data

[x] Create the FileManager file in the persistence folder to manage the general methods to read and write files

[x] Create the LabelData module to save the logic of saving and getting the label data from the labels.json file

[x] Create the DataManager module to load all the modules in the data folder

[x] Include the DataManager module in the App class to access all the labels methods to preserve the data

[x] Create the save_all_on_exit method in the App class to save all the data of the application in the JSON files when the application finishes its execution.

⭐To the code reviewer 👨💻
💝 I really thank 🙇♂ you, dear code reviewer 👨🎨 for dedicating your precious 🥇 time ⌚ to check the PR 🧾 .
I kindly ask 🙏 dear code reviewer 🤵 that if there is any kind of issue 🦯 in this project, please do list 📃 them in a descriptive 💡 manner and give your best suggestions 🎁 if needed.
If you think some big issues are essential to be changed ♻ please kindly contact 📞 me through Zoom or Slack, I am available on Microverse UTC-6 time zone.

@Dachrono thank you so much for taking the time to review and approve my PR!


Checkbox appears and disappears for unavailable workspace

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Action Performed:

Go to staging dot on web chrome and login with User A
Create a new workspace and invite User B
Login with User B on another web chrome
Go to announce channel from both user A and user B
(Important step)- Close the browser from User B.
Now from User A, remove the User B from the workspace.
Open the browser and staging dot again from User B . Notice 'Unavailable workspace' is shown
From User B , Click on the + icon on 'Unavailable workspace' and click on assign task. Leave everything as default and create a task.
Notice that it shows 'Hmm, it's not here'. But now again click on 'Unavailable workspace' and notice a task has been created down. If you click on checkbox, green mark appears and disappears. Also, if you click on the task , it appears 'Hmm it's not here'
Thus, if the task doesn't work and if the green mark checkbox appears and disappears, 'Assign task' should not be shown on User B side.

Expected Result:
Assign task should not be shown
Actual Result:
Checkbox appears and disappears for unavailable workspace
Workaround:
Can the user still use Expensify without this being fixed? Have you informed them of the workaround?
Platforms:

Which of our officially supported platforms is this issue occurring on?

[ ] Android / native
[ ] Android / Chrome
[ ] iOS / native
[ ] iOS / Safari
[x] MacOS / Chrome / Safari
[ ] MacOS / Desktop

Version Number: 1.3.35-5
Reproducible in staging?: y
Reproducible in production?: y
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos: Any additional supporting documentation
https://github.com/Expensify/App/assets/43996225/ca799bc9-f5bb-4dde-a174-e5e500c74e42
https://github.com/Expensify/App/assets/43996225/878b1d24-914e-4b80-9ed8-b9f6476e0e75
Expensify/Expensify Issue URL:
Issue reported by: @priya-zha
Slack conversation: https://applause-ts.slack.com/archives/C037DRM7S1H/p1688160165652739
View all open jobs on GitHub

Getting to this tomorrow


Change class of Fibaro roller shutter 2 to garage door instead of blind homebridge-fibaro-home-center

Hi,
I use roller shutter 2 as controller of a cargate, however in homebridge it is seen as ‘window covering’ class. Can it be changed to ‘garage’ as device class?
The goal is to make the gate visible in Apple CarPlay dashboard
thx,
Rik

@ilcato did you have time to look into this? I now changed the Fibaro roller shutter 2 from 'blind with positioning' to 'gate with positioning' within Homecenter 2 after installing IR-barrier (sensor) to the garage door. I removed the garage door from homebridge and added it again, still it shows up as 'window covering' and not as 'garage door'. Anything else I could try to make it show up as garage door? Thx!

@RikBast can you post the device descriptor coming from the Fibaro API?

Here you go :-)
{
"id": 13,
"name": "Garagepoort 2",
"roomID": 227,
"type": "com.fibaro.FGRM222",
"baseType": "com.fibaro.FGR",
"enabled": true,
"visible": true,
"isPlugin": false,
"parentId": 12,
"remoteGatewayId": 0,
"viewXml": false,
"configXml": false,
"interfaces": [
"deviceGrouping",
"energy",
"fibaroFirmwareUpdate",
"levelChange",
"power",
"zwave",
"zwaveMultiChannelAssociation",
"zwaveProtection",
"zwaveSceneActivation"
],
"properties": {
"pollingTimeSec": 0,
"zwaveCompany": "Fibargroup",
"zwaveInfo": "3,3,52",
"zwaveVersion": "26.26",
"RFProtectionState": "0",
"RFProtectionSupport": "3",
"categories": "["gates"]",
"configured": true,
"dead": "false",
"deadReason": "",
"deviceControlType": "57",
"deviceGroup": "[]",
"deviceGroupMaster": "0",
"deviceIcon": "49",
"emailNotificationID": "0",
"emailNotificationType": "0",
"endPointId": "0",
"energy": "1.63",
"firmwareUpdate": "{"info":"","progress":0,"status":"UpToDate","updateVersion":"26.26"}",
"localProtectionState": "0",
"localProtectionSupport": "5",
"log": "",
"logTemp": "",
"manufacturer": "",
"markAsDead": "true",
"model": "",
"nodeId": "3",
"parametersTemplate": "721",
"power": "0.70",
"productInfo": "1,15,3,2,16,0,26,26",
"protectionExclusiveControl": "0",
"protectionExclusiveControlSupport": "false",
"protectionState": "0",
"protectionTimeout": "0",
"protectionTimeoutSupport": "false",
"pushNotificationID": "0",
"pushNotificationType": "0",
"remoteGatewayId": "0",
"saveLogs": "true",
"sceneActivation": "0",
"serialNumber": "",
"showEnergy": "true",
"smsNotificationID": "0",
"smsNotificationType": "0",
"state": "Unknown",
"updateVersion": "",
"useTemplate": "true",
"userDescription": "",
"value": "0",
"value2": "0"
},
"actions": {
"abortUpdate": 1,
"close": 0,
"open": 0,
"reconfigure": 0,
"reset": 0,
"retryUpdate": 1,
"sceneActivationSet": 0,
"setValue": 1,
"setValue2": 1,
"startLevelDecrease": 0,
"startLevelIncrease": 0,
"startUpdate": 1,
"stop": 0,
"stopLevelChange": 0,
"updateFirmware": 1
},
"created":<PHONE_NUMBER>,
"modified":<PHONE_NUMBER>,
"sortOrder": 22
}

@RikBast, can you confirm that "deviceControlType": "57" correspond to blind with positioning'?
Can you make some tests and understand which values can assume deviceControlType for your device ? (I don't have anymore this kind of devices).

I have the following options for the Fibaro roller shutter:
"deviceControlType": "53" = Blind with positioning inactive
"deviceControlType": "54" = Blind with positioning active
"deviceControlType": "55” = Venetian Blind
"deviceControlType": "56” = Garage door without positioning
"deviceControlType": "57" = Garage door with positioning

@RikBast can you test version<EMAIL_ADDRESS>?

@RikBast are you sure that the beta installed correctly? Did you restart homebridge?

@RikBast, found the error can you test beta.1 ?

@ilcato, this one works :-)

@RikBast, I don't know when I will publish in production. Need to test other things.

@ilcato, When opening from Fibaro HC2, the status is not updated in the home app

@RikBast are you to check with the Fibaro API refreshStates action on Home Center are generated ?

@ilcato, Not sure how that functions, but the normal blinds report status back from the HC2 to the home app, just the garage doors don't. I do see in the logging the Fibaro ID's and that these are updated, but it's not graphical visible on the accessories page and the home app

@RikBast can you test beta.2 ?

Installed got 2 warnings:
[30/03/2023, 07:01:45] [homebridge-fibaro-home-center] This plugin generated a warning from the characteristic 'Current Position': Characteristic not in required or optional characteristic section for service GarageDoorOpener. Adding anyway.. See https://homebridge.io/w/JtMGR for more info.
After clearing cache this one:
[Garagepoort 2@Garagepoort 2@Hold Position] Characteristic not in required or optional characteristic section for service GarageDoorOpener. Adding anyway.

@RikBast, ok cannot use position.
In json you posted there a property: "state": "Unknown",
can you try to capture the state property while opening or closing?

Yes, I will try tonight to get the status while opening and closing

yes, garage door openers have only:
CurrentDoorState  TargetDoorState ObstructionDetected
DoorState may assume several values that I map to device state. But if state is always unknown it is not useful.

  @ilcato , when opening 'state' remains 'unknown', but 'value' =  99

  "state": "Unknown",
  "updateVersion": "",
  "useTemplate": "true",
  "userDescription": "",
  "value": "99",
  "value2": "0"

When closing 'value' = 0, 'state' remains 'unknown'
  "state": "Unknown",
  "updateVersion": "",
  "useTemplate": "true",
  "userDescription": "",
  "value": "0",
  "value2": "0"

And the big question if the garage doors will start to appear in Apple CarPlay when reaching my home. I don't know what is responsible for that to appear, only the fact that it should be a garagedoor or is there anything else necessary? I haven't find more useful info yet, just that it seems possible:-)

This works by the way, the garage door pops up when Approaching the house in CarPlay, nice feature

  @ilcato , when opening 'state' remains 'unknown', but 'value' =  99

  "state": "Unknown",
  "updateVersion": "",
  "useTemplate": "true",
  "userDescription": "",
  "value": "99",
  "value2": "0"

When closing 'value' = 0, 'state' remains 'unknown'
  "state": "Unknown",
  "updateVersion": "",
  "useTemplate": "true",
  "userDescription": "",
  "value": "0",
  "value2": "0"

Garage door status not updated when opening/closing from HC2

And what about value when stopped?

When stopped opening:
  "state": "Unknown",
  "updateVersion": "",
  "useTemplate": "true",
  "userDescription": "",
  "value": "0",
  "value2": "0"

When stopped closing:
  "state": "Unknown",
  "updateVersion": "",
  "useTemplate": "true",
  "userDescription": "",
  "value": "0",
  "value2": "0"

so nothing in 'state'

@RikBast, I would need refreshState output.
Anyway can you try beta.3 ?

@ilcato, will look up the refreshState output tonight.
Meanwhile Installed beta 3:
[31/03/2023, 06:58:20] [homebridge-fibaro-home-center] This plugin generated a warning from the characteristic 'Target Door State': characteristic was supplied illegal value: number 4 exceeded maximum of 1. See https://homebridge.io/w/JtMGR for more info.
[31/03/2023, 06:58:20] [homebridge-fibaro-home-center] This plugin generated a warning from the characteristic 'Target Door State': characteristic was supplied illegal value: number 4 exceeded maximum of 1. See https://homebridge.io/w/JtMGR for more info.

Can you test  beta.4?

@ilcato, installed beta:
I stopped garage door at 56%
{
"id": 116,
"RFProtectionSupport": "3",
"categories": "["gates"]",
"configured": "true",
"deviceControlType": "57",
"energy": "13.66",
"localProtectionSupport": "5",
"log": "",
"logTemp": "",
"parameters": "[{"id":3,"size":1,"value":0},{"id":10,"size":1,"value":4},{"id":12,"size":2,"value":0},{"id":13,"size":1,"value":1},{"id":14,"size":1,"value":0},{"id":17,"size":1,"value":0},{"id":18,"size":1,"value":10},{"id":22,"size":2,"value":240},{"id":29,"size":1,"value":1},{"id":30,"size":1,"value":2},{"id":31,"size":1,"value":0},{"id":32,"size":1,"value":0},{"id":33,"size":1,"value":0},{"id":35,"size":1,"value":1},{"id":40,"size":1,"value":10},{"id":42,"size":2,"value":3600},{"id":43,"size":1,"value":10},{"id":44,"size":1,"value":1},{"id":50,"size":1,"value":0}]",
"power": "0.70",
"value": "56"
},

Homekit reports 'stopped', but doesn't at which value apparently

@ilcato, is the integration ok now you think? the beta 4 works fine. Open/Close status nicely reported. In between states not possible for HomeKit garage doors.
Thx for your help!

@RikBast, just published 1.2.17 in production.

@RikBast, just published 1.2.17 in production.

Thank you for this.

Hi, still a small issue. When garage door is opened manually with pushbutton, the status in Homekit of the garage door is 'stopped' and not 'Open'. So in Homekit the garage door remains closed/stopped status instead of Open status


200.4.0 Release - merge v.next into main

For the 200.4.0 release

Thanks @gunt0001 @hud10837 @sorenoid. Merging..


make L.Marker work with canvas renderer

When adding high amount of markers to the map it is lagging (very common and understandable).
When using canvas renderer and all elements are canvas compatible it works like a charm.
To make leaflet blasing fast with a lot of objects make it possible to use L.Marker with canvas.
I have already tried the Leaflet.Canvas-Markers plugin, but this does not work anymore.
Another solution would be to just use markercluster, but in my case I cant do that.
It would also be a possibility if it was possible in some way to add a icon to the circleMarker (as an hacky solution) but I have not managed to get this working.
I have seen this has been an issue here multiple times and being closed. But now I add it as a feature request in hope that leaflet can become super fast with a lot of objects.

I have already tried the Leaflet.Canvas-Markers plugin, but this does not work anymore.

You can try another fork: https://github.com/IITC-CE/Leaflet.Canvas-Markers

as seen in #canvas

I have already tried the Leaflet.Canvas-Markers plugin, but this does not work anymore.

You can try another fork: https://github.com/IITC-CE/Leaflet.Canvas-Markers

I think I already tried this one, tried multiple forks. but will try again to make sure

I have already tried the Leaflet.Canvas-Markers plugin, but this does not work anymore.

You can try another fork: https://github.com/IITC-CE/Leaflet.Canvas-Markers

@johnd0e
I cant install it as npm, and if i just take the leaflet.canvas-markers.js file it does not work
// Adds a layer
    var ciLayer = L.canvasIconLayer({}).addTo(map);

// Marker definition
    var marker =  L.marker([58.5578, 29.0087]);

// Adding marker to layer
    ciLayer.addMarker(marker);

Is there a specific way you know about how to import? Specifically i'm confused about the _full.js file in regards of importing

I cant install

Perhaps you've missed build step.
But that is severe offtopic here so if you need further assistance please open issue in corresponding repo.

Hi, great to hear that you find Leaflet useful!
However, this issue tracker is used for reporting bugs and discussing new features. For questions on using Leaflet, please use gis.stackexchange.com or stackoverflow.
If you are really sure that this is a bug in leaflet, or a feature request, please change the wording to make it look like a bug report.


Adding tooltips to holdings tables

As a user, I would like to know the meaning of the "present" icon in my holdings, like in he earn table.
Please add the tooltip from the earn table to holdings as well

@Yanivshechter1 can we close this and add the request to the #673 issue?


Add app roles in apps step doesn't work

The steps listed for https://learn.microsoft.com/en-us/azure/active-directory/develop/howto-add-app-roles-in-apps#assign-app-roles-to-applications and copied below do not work

Sign in to the Azure portal.
In Azure Active Directory, select App registrations in the left-hand navigation menu.
Select All applications to view a list of all your applications. If your application doesn't appear in the list, use the filters at the top of the All applications list to restrict the list, or scroll down the list to locate your application.
Select the application to which you want to assign an app role.
Select API permissions > Add a permission.
Select the My APIs tab, and then select the app for which you defined app roles.
Select Application permissions.
Select the role(s) you want to assign. ( Authentication Administrator )
Select the Add permissions button complete addition of the role(s)

The only way we can make this work is by going to

https://portal.azure.com/#view/Microsoft_AAD_IAM/AllRolesBlade
Search Authentication Administrator
Click add assignments
Add the Related App

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

ID: fbce165f-bacb-eadb-4ae0-4add6f912cc0
Version Independent ID: 0e07887e-a4b6-aff5-eb26-8f0868192be7
Content: Add app roles and get them from a token - Microsoft Entra
Content Source: articles/active-directory/develop/howto-add-app-roles-in-apps.md
Service: active-directory
Sub-service: develop
GitHub Login: @cilwerner
Microsoft Alias: cwerner

@visch
Thanks for your feedback! We will investigate and update as appropriate.

@visch
Thank you for bringing this to our attention.
I've delegated this to content author @cilwerner, who will review it and offer their insightful opinions.

Hi @visch, the steps you mention need a tweak, but they do in fact work as expected, as I have just tested it. The Authentication Administrator role that you mention is not an app role. It is a Microsoft Entra role that can be assigned to a user.
The article that you are in fact looking for is Assign Microsoft Entra roles to users, and the full list is at Microsoft Entra built-in roles. I'd like to draw your attention to the equivalent page in the Microsoft Entra admin center.
Additionally the Click add assignments > Add the Related App steps that you mention is not correct, as doing that means that you are assigning a role to a user, not an app, which is a different process.
Alternatively, there is a section in that article Assign users and groups to roles that may be helpful.

@cilwerner Thanks for the clarification, I poked back around and I see what you're saying. This is super confusing.
Steps my brain went down

Application Registration page is where you register Apps (Got it makes sense)
Applications can have Roles assigned to them for additional permissions (Roles and Administrators sections in the App Registratrions section)
Applications can have App Roles assigned to them (So applications can have Roles and App Roles, eeek)
Search for "How to add role to application in AzureAD" , won't bring you to the right place as it sends you here https://learn.microsoft.com/en-us/azure/active-directory/develop/howto-add-app-roles-in-apps
Eventually you get to the Assign users and groups to roles that you have above, but that's confusing as it doesn't say users/apps it just says users.

Things we could tweak that may have helped me (and someone else in the future)

Change the title for Assign Microsoft Entra roles to users to "Assign Microsoft Entra roles to users and applications"
In the App registration (that you get to by going to App Registrations > App Name) there's a "Roles and Administrators" button that shows the Roles that have been assigned by following # 1 , an "Add Role to Application" button would help this be more intuitive and less likely someone would need to come search for how to do this
I don't know how/where to do this but a description of the difference between "App Roles" and "Roles" along with how "Roles" can relate directly to Applications even though they are not "App Roles" (Though my brain wants to say my Application Roles are "Cloud application Administrator" etc)

No worries @visch, need to double check things myself often enough! As per your points;

Change the title for Assign Microsoft Entra roles to users to "Assign Microsoft Entra roles to users and applications"

That's not what the article is indicating, and it'd be a bit confusing to have roles for both apps and users in the same article, at least for me anyway. The doc you raised the issue on is the developer hub, and is important information for developers to know especially is no user interaction is required.

an "Add Role to Application" button would help this be more intuitive

There is one there already in the side panel. In the Microsoft Entra admin center, navigate to Identity > App registrations, then Manage > App roles and you can follow the doc steps to create an app role for an application. This is a different "role" than the one you have previously assigned to a user.
The roles like Authentication Administrator are different from app roles (see below).

a description of the difference between "App Roles" and "Roles" & Application Roles are "Cloud application Administrator" etc

Think of "Cloud application Administrator" as a "Microsoft Entra role", or administrative roles instead. And users with different roles will have access to different resources. An "App role" is one that assigns permissions to users that have specific "Microsoft Entra roles" or indeed to other applications that need access to other apps.
These articles may also help in your understanding -> Role-based access control for application developers and What is Azure RBAC?.
Although I do agree, having two types of "roles" in the same area is confusing.


github pages 404 error

Hi, I have just created a blog using sculpin-blog-skeleton, and copied the contents of output_prod to my github page.
My blog is here: http://michaellenahan.github.io/index.html
The problem is that here: http://michaellenahan.github.io I get a 404. How can I get index.html to be the default document? Thanks!

http://michaellenahan.github.io/ seems to work fine for me. As far as I know Github Pages defaults to index.html as the default page.

Thanks! It wasn't working for me at first for quite a while. Now it's fixed itself!


[BUG] ImportError when importing torchaudio (nightly)

🐛 Bug

To Reproduce
Steps to reproduce the behavior:

Install the nightly torchaudio
Run:
import torchaudio

Expected behavior

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "conda/envs/dev/lib/python3.9/site-packages/torchaudio/__init__.py", line 32, in <module>
    from torchaudio import _torchaudio  # noqa
ImportError: libtorch_hip.so: cannot open shared object file: No such file or directory

Environment
PyTorch version: 1.9.0+cu111
Is debug build: False
CUDA used to build PyTorch: 11.1
ROCM used to build PyTorch: N/A
OS: Ubuntu 18.04.5 LTS (x86_64)
GCC version: (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0
Clang version: Could not collect
CMake version: version 3.20.4
Libc version: glibc-2.27
Python version: 3.9.6 (default, Jul 30 2021, 16:35:19)  [GCC 7.5.0] (64-bit runtime)
Python platform: Linux-5.4.0-1051-aws-x86_64-with-glibc2.27
Is CUDA available: True
CUDA runtime version: 11.1.105
Versions of relevant libraries:
[pip3] numpy==1.21.2
[pip3] pytorch-lightning==1.4.5
[pip3] torch==1.9.0+cu111
[pip3] torchaudio==0.10.0.dev20210902+rocm4.1
[pip3] torchmetrics==0.5.1
[conda] numpy                     1.21.2                   pypi_0    pypi
[conda] pytorch-lightning         1.4.5                    pypi_0    pypi
[conda] torch                     1.9.0+cu111              pypi_0    pypi
[conda] torchaudio                0.10.0.dev20210902+rocm4.1          pypi_0    pypi
[conda] torchmetrics              0.5.1                    pypi_0    pypi
cc @mthrok

Now, this should be resolved by #1751.

Updated nightly indicies, could you please try again?

Yes it's resolved. Thanks @malfet!


[Feature Request] Display key somewhere when archives are opened

For example, when you open a DxLib archive and it successfully opens it, if it could display what the correct key was, that could be useful.

Debug GARbro to rip Formats.dat in GameData, it contains all the key.


Run Instructions

Support Question
I see the below instructions to run the engine, but there is no directory called "legend-engine-server", can you help with the right instructions please?
Development setup
This applications uses Maven 3.6+ and JDK 11. Simply run mvn install to compile.
In order to start the server, please use the Main class org.finos.legend.engine.server.Server with the parameters: server legend-engine-server/src/test/resources/org/finos/legend/engine/server/test/userTestConfig.json.
You can test by trying http://<IP_ADDRESS>:6300/ in a web browser. The swagger page can be accessed at http://<IP_ADDRESS>:6300/api/swagger

This issue is stale because it has been open for 30 days with no activity. Please remove stale label or add any comment to keep this open. Otherwise this will be closed in 5 days.

Support Question
I see the below instructions to run the engine, but there is no directory called "legend-engine-server", can you help with the right instructions please?
Development setup This applications uses Maven 3.6+ and JDK 11. Simply run mvn install to compile. In order to start the server, please use the Main class org.finos.legend.engine.server.Server with the parameters: server legend-engine-server/src/test/resources/org/finos/legend/engine/server/test/userTestConfig.json. You can test by trying http://<IP_ADDRESS>:6300/ in a web browser. The swagger page can be accessed at http://<IP_ADDRESS>:6300/api/swagger

We have moved the folders. Try this instead
https://github.com/finos/legend-engine/tree/master/legend-engine-config/legend-engine-server
i.e. legend-engine-config/legend-engine-server


I want to get a colorful 3D reconstruction image...

When I read the nii image, I could only get a monochrome image. However, in order to show the results of cell segmentation more clearly, I want to dye different labeled cell regions (markers exist in my file)

uhm .. not sure if I understand.. your nii file is volumetric data so what scalar do you want to colorize?
You can specify a color map with e.g. myvolume.color([(0,'green'), (2,'blue'), (6.5,'r')])
Try:
pip install -U git+https://github.com/marcomusy/vedo.git
and check out this example.

When I use the method you suggested, I got an error like:
if c[0] <= 1 and c[1] <= 1 and c[2] <= 1:
TypeError: '<=' not supported between instances of 'str' and 'int'
The code of my workspace is :
from vedo import *
vol = load(path)
vol.color([(0,'yellow'), 'violet', 'green', 'blue'])
vol.show()
Without numbers, it runs but just like a mixed-figure not the segmentation image I expected.

You have not done:
pip install -U git+https://github.com/marcomusy/vedo.git

oooooo....
My Pycharm is terminated when run the program...
What's wrong with this...

try adding
from vedo import embedWindow
embedWindow(False)


sql: add pg_builtin pg_is_in_recovery()

PR: https://github.com/cockroachdb/cockroach/pull/26445
From release notes:

Added the pg_is_in_recovery() function for compatibility with PostgreSQL tools. [#26445][#26445] {% comment %}doc{% endcomment %}

@BramGruneir, do you know why this didn't get added to the auto-generated functions doc in cockroach?

Nevermind. The doc generator just skips pg_builtins with Info: notUsableInfo: https://github.com/cockroachdb/cockroach/blob/022befb0e00d6067afe43c2f7ab52f652512f2b6/pkg/cmd/docgen/funcs.go#L190


Update WS topic text for SetCurrentDirectory

Fixes #9774
Addresses #9988
Thanks @Sigvaard! :rocket:

ping @pakrym ... it's a quick one.


Re-factor and convert the code in src/display/pattern_helper.js to use standard classes

/botio test

Thank you for modernizing this code; looks much better like this!


Suggestion: Make the project’s official name clearer

From the main Angular.io site it seems obvious that the name is now simply ‘Angular’, but there’s some confusion between this and the names that have been used before: AngularJS, Angular.js…

Stack Overflow: Proper name of AngularJS project.
AngularJS FAQ, ‘AngularJS’ used in the first six questions, then switches to plain ‘Angular’.
And over on the Wikipedia AngularJS article it flip flops all over the place. Confusing the names of the projects (versions 1 and 2), the project team, filenames, and component names (they don’t even explain the ‘ng’ prefix).
Stack Overflow’s Angular tag info redirects to AngularJS tag info.
Stack Overflow’s Angular 2 tag info insists it is ‘Angular 2’ (synonyms: angularjs-2.0, angularjs-2).

There should be a brief mention of the naming at Angular.io, perhaps https://angular.io/about/.
Disambiguate what the various names mean,

Angular - version 2 and greater.
AngularJS – version 1.
ng – component name prefix.
…

I am not really sure if there is something we could do at this end.
/cc @naomiblack @wardbell

All I’m suggesting is that this being the repo for the official Angular 2 documentation, that there’s a page or section somewhere these terms are disambiguated.
Spell it out, “No, this project isn’t called Angular.js or AngularJS.”
If there’s no explicit guide to the naming, then that’s where confusion creeps in.

We are now simply "Angular", Angular 1, Angular 2, 3, ...
If you feel like there is an specific part that is confusing, please open a new issue.

If you don’t explicitly spell out what the project is called and explain the various terms, then this confusion will continue. (Wording does matter, see the consternation over this projects’s frankly terrible misuse of “RC” – Release Candidate for code that contained umpteen breaking changes between RCs…)
There will be a small but persistent number of people who will forever refer to the project as “Angular.JS 2” or some variation of that. Just as one prominent example, the AngularJS Wikipedia section:

AngularJS 2.0 was announced at the ng-Europe conference 22-23. September 2014. The drastic changes in the 2.0 version created considerable controversy among developers. On April 30, 2015, the AngularJS developers announced that Angular 2 moved from Alpha to Developer Preview. AngularJS 2 can be downloaded from the official website […]

Just add a small section to the about page explaining the “AngularJS” and “Angular” and a few different terms (ng-*), job done!

 I will see how I can fix it.
The RC issue, that has nothing to do with the issue either.
The small section explaining could be useful indeed, I will ask the team.

Thank you.
But the RC issue is related. All language is a contract, if I sell you a litre of petrol and it turns out to be vinegar, you’ll be rightly upset. Promoting something as an RC that really is somewhere between alpha and beta stages, not being clear on the project naming, none of this builds the trust – the only thing we ultimately have.


Input sanitization strips values instead of throwing

Bad input should result in an error, not just stripping it and continuing

This is because the same schema is used for sanitization and validation.


[stdlib] Buildfix differentiation for OpenBSD.

New files were added in #30875 which did not include os(OpenBSD), so add
this.
add_swift_target_library in AddSwiftStdlib subsequently required
modification. _add_target_variant_link_flags likely needs modification as
well, but this is better suited to a separate PR.

cc @dan-zheng

@swift-ci please test

@swift-ci please test windows platform


Zend\Filter\FilterChain::$filters get replicated if same input filter instance is used to filter an array of data

Same filters are being applied to the data multiple times, if same InputFilter instance is used to validate/filter multiple data (array).
For instance, the data is an array like this:
$emails = [
    [
        'email' =><EMAIL_ADDRESS>        'id' => ''
    ],
    [
        'email' =><EMAIL_ADDRESS>        'id' => ''
    ],
    [
        'email' =><EMAIL_ADDRESS>        'id' => ''
    ],
];

So, now I'm trying to validate each of the item of the array using the $emailFilter:
$filtered = [];
foreach ($emails as $email) {
    $filter->setData($email);
    if (!$this->isValid()) {
        // failed validation
    } else {
        $filtered[] = $filter->getValues();
    }
}

Running this code will replicate the value of FilterChain::$filters for each of these iteration.
For the first iteration, the filters applied to data i.e(returned by FilterChain->getFilters()) would be:
"input: email"
"2 => Zend\Filter\ToNull"
"1 => Zend\Filter\StripTags"
"0 => Zend\Filter\StringTrim"

"input: id"
"1 => Zend\Filter\StripTags"
"0 => Zend\Filter\StringTrim"

In the second iteration, you can see the same filters are being applied for both of the inputs: email and id:
"input: email"
"5 => Zend\Filter\ToNull"
"4 => Zend\Filter\StripTags"
"3 => Zend\Filter\StringTrim"
"2 => Zend\Filter\ToNull"
"1 => Zend\Filter\StripTags"
"0 => Zend\Filter\StringTrim"

"input: id"
"3 => Zend\Filter\StripTags"
"2 => Zend\Filter\StringTrim"
"1 => Zend\Filter\StripTags"
"0 => Zend\Filter\StringTrim"

In the third iteration, you can see that the same filters are being applied to the data 3 times.
"input: email"
"8 => Zend\Filter\ToNull"
"7 => Zend\Filter\StripTags"
"6 => Zend\Filter\StringTrim"
"5 => Zend\Filter\ToNull"
"4 => Zend\Filter\StripTags"
"3 => Zend\Filter\StringTrim"
"2 => Zend\Filter\ToNull"
"1 => Zend\Filter\StripTags"
"0 => Zend\Filter\StringTrim"

"input: id"
"5 => Zend\Filter\StripTags"
"4 => Zend\Filter\StringTrim"
"3 => Zend\Filter\StripTags"
"2 => Zend\Filter\StringTrim"
"1 => Zend\Filter\StripTags"
"0 => Zend\Filter\StringTrim"

BTW, this is the EmailFilter class:
class EmailFilter extends Filter
{
    ...
    public function init()
    {

        $this->add([
            'name' => 'email',
            'required' => true,
            'filters' => [
                ['name' => 'ToNull'],
                ['name' => 'StripTags'],
                ['name' => 'StringTrim'],
            ],
            'validators' => [
                [
                    'name' => 'EmailAddress',
                    'options' => [
                        'encoding' => 'UTF-8',
                        'messages' => [
                            EmailAddress::INVALID_FORMAT => sprintf(
                                $this->translate('validation.invalid_format'), self::LABEL_EMAIL
                            )
                        ]
                    ]
                ],
                [
                    'name' => 'NotEmpty',
                    'options' => [
                        'messages' => [
                            NotEmpty::IS_EMPTY => sprintf(
                                $this->translate('validation.is_empty'), self::LABEL_EMAIL
                            )
                        ]
                    ]
                ],
            ]
        ]);

        /* id */
        $this->add([
            'name' => 'id',
            'required' => false,
            'filters' => [
                ['name' => 'StripTags'],
                ['name' => 'StringTrim'],
            ],
            'validators' => [
                [
                    'name' => 'IsInt',
                    'options' => [
                        'messages' => [
                            IsInt::INVALID => sprintf(
                                $this->translate('validation.invalid_type'), self::LABEL_EMAIL
                            ),
                            IsInt::NOT_INT => sprintf(
                                $this->translate('validation.invalid_type'), self::LABEL_EMAIL
                            ),
                        ]
                    ]
                ]
            ]
        ]);
    }

}

You can define a class property tracking if the inputfilter was initialized or not.
private $initialized = false;

public function init()
{
   if ($this->initialized) { return; }

  // Custom init code.
}

If you still thinking this is an issue please reopen against the InputFilter issue tracker https://github.com/zendframework/zend-inputfilter/issues and provide a complete functional example which we can execute for reproduce the problem.


Template workflows cannot initiate plan

TL;DR
Fails in Guardian Init job, at the Guardian Remove Previous Plan Comments step.
Error message:

failed to parse flags: missing flag: for-command is required

Expected behavior
No response
Observed behavior
No response
Environment Details
v1.0.2

Additional information
No response

https://github.com/abcxyz/guardian/blob/main/pkg/commands/workflows/remove_comments.go#L89

Though I see it here https://github.com/abcxyz/guardian/blob/main/abc.templates/base-workflows/contents/guardian-plan.yml#L85

Oh, looks like @gjonathanhong just fixed it, thanks!


Different results gotten from the Example.ipynb

When I runned the  Example.ipynb, I got a totally different result.

I cannot find out whether the problem is the version of dependency package or others.

Hi,
I got the same proble like this, have you solved it?

Yang.

Dear Yang,
I didn't solve it in Example.ipynb, but after applying this package to my ocean model (ROMS) data, I was surprised to get the correct flow function and potential function field. I think this problem might caused by some function changes in the dependency packages, and the author is unlikely to solve it in the future.
Sincerely,
Tong

发件人: XU-Yang @.>
发送时间: 2024年11月28日 17:12
收件人: iuryt/vector_fields @.>
抄送: tcythemech @.>; Author @.>
主题: Re: [iuryt/vector_fields] Different results gotten from the Example.ipynb (Issue #1)
Hi,
I got the same proble like this, have you solved it?
1ec5f9ac99ad058e8aeecccb3f930f8.png (view on web)https://github.com/user-attachments/assets/b075e4fe-c045-4f97-9e84-80e9b8bfa3c5
Yang.
―
Reply to this email directly, view it on GitHubhttps://github.com/iuryt/vector_fields/issues/1#issuecomment-2505612578, or unsubscribehttps://github.com/notifications/unsubscribe-auth/A2MKWNYOZJY2XCILD63QL532C3NAVAVCNFSM6AAAAABSUUM2NGVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDKMBVGYYTENJXHA.
You are receiving this because you authored the thread.Message ID: @.***>

Dear Tong,
Thank you for your reply! I think your propose is very thoughtful and plausible that I agree with you. I've got the new package called windsphram to calculate stream function and velocity potential, and maybe I could do a test to check if this function is still correct in the case of deviations in this example.
By the way, I think the author maybe a little too busy and his work is still beautiful and worthy though there's no longer update. I believe it could be improved in the future with our discussion!
Sincerely,
Yang.

Hi everyone,
I apologize for not being very responsive regarding this package. The unexpected behavior might be due to newer versions of some dependencies, although I'm not certain which one it is. It's also possible that the initial guess is causing the issue.
I plan to investigate this bug later this week and will update you with my findings. If you discover the source of the bug, please share it here so I can be informed.


The inconsistent text returned by CJKPDFReader results in the constant updating of the same file.

I use CJKPDFReader in my llama_index based project. I accidentally discovered that a particular PDF file is always considered as a new file when calling BaseIndex.refresh_ref_docs method, resulting in constant updates to the document store and vector store.
After debugging, I have confirmed that the reason for the updates is that the hash of the Document object can be different during multiple runs. The difference in the hash is caused by slight variations in the text parsed by pdfminer.six.
Additionally, the issue does not occur when there is only one PDF file in the data directory. It only arises when there are multiple files in the data directory, and this particular file is not the first one processed by the Reader. After running several times, the problem can be reproduced on my MacBook.

steps to reproduce the bug here:

create a 'data' directory
put the 2 attached files to it
run following code

import glob
import os
from pathlib import Path
from llama_hub.file.cjk_pdf.base import CJKPDFReader

pdf_files = glob.glob(os.path.join("data/", "*.pdf"))
for file in pdf_files:
    reader = CJKPDFReader()
    docs = reader.load_data(Path(file))
    print(f"{file}:{docs[0].hash}")

6e4fba7b69c5f075d8c271e11b4eddb816a5d89957c1fac04034d3692f26872e
f0a1e8375b8c56ca8b3f6fb852d2117af3deaadcd0fd3096d166f01727e26030
2b282...
d0e01...

多尺度自适应上采样的图像超分辨率重建算法.pdf
2023 [2303.08774] GPT-4 Technical Report.pdf


Hi i am created the channel and invited other person to chat, my question is how to accept the invitation in android.

I wonder, why no one answered this query? I'm also facing the same issue.

@ManikandanBalakrishnan https://media.twiliocdn.com/sdk/android/chat/releases/4.0.3/docs/classcom_1_1twilio_1_1chat_1_1Channel.html#a487a2101d1d9502fa087653d5c4568c3


Linkerd webui does not work due to absolute links.

@siggy @pyronicide @ryadav88
When trying to access the linkerd webui via adminrouter (e.g.,  by klicking "Open Service") in the UI, the UI will be broken.
See Screenshot below.

The reason for this is that you use absolute links in the linkerd UI (https://github.com/BuoyantIO/linkerd/blob/master/linkerd/admin/src/main/scala/io/buoyant/linkerd/admin/AdminHandler.scala).
Is there any problem of changing for example

to
           ?
Also setting
  "labels": {
    "DCOS_SERVICE_NAME": "linkerd",
    "DCOS_SERVICE_SCHEME": "http",
    "DCOS_SERVICE_PORT_INDEX": "0"
  },

``` for all your tasks can lead due (short) unavailability of the UI after tasks failures. Feel free to ping me to discuss that in detail.

Thanks for all the detail @joerg84! This will require a change in linkerd, tracking that work at: https://github.com/BuoyantIO/linkerd/issues/397


Migrate RDFlib backend away from BSD-DB

Issues #26 and #28 show that there are some problems with RDFlib's default BSD-DB backend under Python3 and on Windows. This makes it worth to spend some time investigating switching away from BSD-DB and towards an alternative data-store, e.g. SQLite via RDFlib-SQLAlchemy.

I'm looking into the SQLite option.
I was wondering, can't the rdf graph just be stored in memory and pickled? (I found this) --- What is the advantage of having a database?

As of f055ce9, we're now using a SQLite-based cache backend when BSD-DB isn't installed on the user's machine. However, @cpeel found in #38 that the SQLite backend is slow. An investigation of the pickle-based alternative by @andreasvc is therefore still required.

I played around a bit with an in-memory cache using rdflib.IOMemory, but the resource usage is simply too large to be practical: the loaded cache used more than 6 GB of memory on my machine.
Here's the implementation:
From ec2643e5f9017feb6f12802e31156db904777af5 Mon Sep 17 00:00:00 2001
From: Clemens Wolff<EMAIL_ADDRESS>Date: Fri, 19 Feb 2016 16:50:59 -0800
Subject: [PATCH] Implement in-memory cache

---
 gutenberg/acquire/metadata.py | 28 ++++++++++++++++++++++++++++
 tests/test_metadata_cache.py  |  8 ++++++++
 2 files changed, 36 insertions(+)

diff --git a/gutenberg/acquire/metadata.py b/gutenberg/acquire/metadata.py
index 565e221..251d41f 100644
--- a/gutenberg/acquire/metadata.py
+++ b/gutenberg/acquire/metadata.py
@@ -5,6 +5,7 @@
 from __future__ import absolute_import

 import abc
+import gzip
 import logging
 import os
 import re
@@ -210,6 +211,33 @@ class SqliteMetadataCache(MetadataCache):
         return self.cache_uri[len(self._CACHE_URI_PREFIX):]

+class InMemoryMetadataCache(MetadataCache):
+    def __init__(self, cache_location):
+        store = 'IOMemory'
+        MetadataCache.__init__(self, store, cache_location)
+        self.serialization_format = 'xml'
+
+    def populate(self):
+        MetadataCache.populate(self)
+        self._serialize()
+
+    def open(self):
+        self._deserialize()
+        self.is_open = True
+
+    def _serialize(self):
+        with gzip.open(self._local_storage_path, 'wb') as fobj:
+            self.graph.serialize(fobj, self.serialization_format)
+
+    def _deserialize(self):
+        try:
+            with gzip.open(self._local_storage_path, 'rb') as fobj:
+                self.graph = Graph()
+                self.graph.load(fobj, self.serialization_format)
+        except:
+            raise InvalidCacheException('Unable to deserialize cache')
+
+
 _METADATA_CACHE = None

diff --git a/tests/test_metadata_cache.py b/tests/test_metadata_cache.py
index 3697d9b..dcd1016 100644
--- a/tests/test_metadata_cache.py
+++ b/tests/test_metadata_cache.py
@@ -13,6 +13,7 @@ from six import u
 from gutenberg._util.url import pathname2url
 from gutenberg.acquire.metadata import CacheAlreadyExistsException
 from gutenberg.acquire.metadata import InvalidCacheException
+from gutenberg.acquire.metadata import InMemoryMetadataCache
 from gutenberg.acquire.metadata import SleepycatMetadataCache
 from gutenberg.acquire.metadata import SqliteMetadataCache
 from gutenberg.acquire.metadata import set_metadata_cache
@@ -112,6 +113,13 @@ class TestSqlite(MetadataCache, unittest.TestCase):
         self.cache.catalog_source = _sample_metadata_catalog_source()

+class TestInMemory(MetadataCache, unittest.TestCase):
+    def setUp(self):
+        self.local_storage = "%s.gz" % tempfile.mktemp()
+        self.cache = InMemoryMetadataCache(self.local_storage)
+        self.cache.catalog_source = _sample_metadata_catalog_source()
+
+
 def _sample_metadata_catalog_source():
     module = os.path.dirname(sys.modules['tests'].__file__)
     path = os.path.join(module, 'data', 'sample-rdf-files.tar.bz2')
--
1.9.1

This means that, for now, the best option for the cache backend seems still to be BSD-DB with a SQLite fall-back.


Note to enable Certificate Trust Settings in iOS 10.3 or up

Even after installing certs from mitm.it, it's not trusted by default, user need to enable this on their own.
http://stackoverflow.com/a/43303169/1433273

Thanks! 🎉 👍


Update BubbleShader.java

rect right may be : resultWidth + x

@csshuai can you please describe it in more detail? I did not understand.


Add UI hint for / as the search shortcut

MultiDocumenter builds don't show a UI hint:

Just as a tangent: in Documenter we recently added Ctrl + / as the shortcut (https://github.com/JuliaDocs/Documenter.jl/pull/2027). While they don't clash, it did make we wonder if we should try to avoid having two different search boxes. Is the UX intent that you always use MultiDocumenter search in MultiDocumenter sites?

That's a regression. Fixed by https://github.com/JuliaComputing/MultiDocumenter.jl/commit/13e72ca888b16ea71503f9f654a63bf49d0582a2.


tinymist: 0.11.8 -> 0.11.9

Description of changes
Changelog: https://github.com/Myriad-Dreamin/tinymist/blob/v0.11.9/CHANGELOG.md
cc @LamprosPitsillos

Things done

Built on platform(s)

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

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

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

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

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

[x] Fits CONTRIBUTING.md.

Add a :+1: reaction to pull requests you find important.


Add nullable: true  on optional fields

Related to https://github.com/biocad/openapi3/issues/71
I made all Maybe fields both optional (not in the required list) and nullable because this is what Aeson does.
This is easily done when the definition is inlined, you just add nullable: true to the definition.
When we have Ref, OpenApi 3.0 sucks. See:
https://github.com/OAI/OpenAPI-Specification/issues/1368
In the end I followed the recommendation made here: https://github.com/OpenAPITools/openapi-generator/issues/14181#issuecomment-1337787315
The first commit should be mergeable to upstream should anyone want to.
 It also fixes some doctests failures introduced by #2.
The third commit should be mergeable to upstream as well. It fixes the validation in presence of nullable true.

@avandecreme  This PR generates incorrect OpenAPI schema for nullable sum types such as Color. For example, the following JSON snippet shows the incorrect output:
"Color": {
    "anyOf": [
        {
            "$ref": "#/components/schemas/Color"
        },
        {
            "nullable": true,
            "type": "object"
        }
    ]
},

This specifies that the API accepts either a Color object or any nullable object, which is incorrect.
Instead, the OpenAPI schema should use "allOf" and a separate "nullable": true" property to specify that the API accepts a nullable Color object only, like so:
"Color": {
    "allOf": [
        {
            "$ref": "#/components/schemas/Color"
        }
    ],
    "nullable": true
},

This accurately specifies that the API accepts a Color object that can also be null.

The following comment disagree with you: https://github.com/OpenAPITools/openapi-generator/issues/14181#issuecomment-1337787315
The spec says A true value adds "null" to the allowed type specified by the type keyword, only if type is explicitly defined within the same Schema Object.
There is no type in the Schema Object where you want to set "nullable": true.

I got the solution from this issue on the OpenAPI repo, and this stack overflow answer since the typescript generator was generating invalid types.
I'll take another look to see if the generator is wrong. The solution is much simpler if openapi3 supported the 3.1 spec.


Can't see tokens above but beyond wall elevation

Caveat: it's possible I'm just misunderstanding what is supposed to be happening here...
I have this set up (a merc standing on a 6' platform above a courtyard):

Here's the view from the merc - looks good:

Here's the view from the random token in the courtyard - seems right that I can't see the square the merc is standing in (!), but I should be able to see the merc because he's "above" the blocking limited height wall:

The issue is Wall Height, not Elevated Vision. (If you turn off Elevated Vision and just have Wall Height enabled, you will see the same issue.) Elevated Vision, as of v0.2, does not test for or modify whether one token can actually see another.
For more control over how tokens can or cannot see one another, you can try my module, Alternative Token Visibility. If you set it to Area3d, it will make the token visible. (Area3d takes a 3d snapshot of the scene from the point of view of the token, and so it can better test visibility in situations like this.)
There is definitely something weird going on here, so I am going to keep this issue open for now. For starters, I would expect that, using the ATV module, Area2d and the Points algorithms would both show the token but they do not.
In addition, Wall Height calculates the token height as 5 feet, instead of 6 feet, and I don't know why. Seems like a possible bug with Wall Height.
Finally, it is possible that tokens near walls will be unexpectedly blocked by walls. See the Levels diagram for an example. That is not exactly what is going on here, but it may be contributing to the issue

Thanks for investigating - when I get home after Christmas I’ll do some more exploring and see if anything comes to light.I should have said in my bug report: this is an amazing concept and very exciting for better visuals on more complex pseudo-3D scenes - my biggest bugbear with Foundry. Thanks for your efforts so far!Sent from my iPhoneOn 24 Dec 2022, at 01:37, caewok @.***> wrote:
The issue is Wall Height, not Elevated Vision. (If you turn off Elevated Vision and just have Wall Height enabled, you will see the same issue.) Elevated Vision, as of v0.2, does not test for or modify whether one token can actually see another.
For more control over how tokens can or cannot see one another, you can try my module, Alternative Token Visibility. If you set it to Area3d, it will make the token visible. (Area3d takes a 3d snapshot of the scene from the point of view of the token, and so it can better test visibility in situations like this.)
There is definitely something weird going on here, so I am going to keep this issue open for now. For starters, I would expect that, using the ATV module, Area2d and the Points algorithms would both show the token but they do not.
In addition, Wall Height calculates the token height as 5 feet, instead of 6 feet, and I don't know why. Seems like a possible bug with Wall Height.
Finally, it is possible that tokens near walls will be unexpectedly blocked by walls. See the Levels diagram for an example. That is not exactly what is going on here, but it may be contributing to the issue
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you authored the thread.Message ID: @.***>

I should probably note that this particular issue definitely doesn't occur with ATV & Area 3d, which I'm now using for scenes where this matters.

I should probably note that this particular issue definitely doesn't occur with ATV & Area 3d, which I'm now using for scenes where this matters.

How are you getting this to work? The only way I can set it up so that the token standing at a ledge directly beside the wall is to offset the wall off of the grid. Otherwise the token is hidden from the view of any tokens with a lower elevation. This even affects tokens with a token height greater than the elevation itself.

@Vaizt

Create the walls in question with an appropriate wall height (using the Wall Height mod). Will be a "normal" wall with e.g. bottom height 0 & top height 70.
Using elevated vision, set the height of the areas to the correct heights (0 for the floor, 70 for the elevated region in this example). In case it matters, I'm using the WebGL setting for elevation shadows
Use the Alternative Token Visibility mod, with the "Token area 3d" line of sight algorithm
Profit!

With this set up, I [correctly] can't see the high token when there's either a fully blocking wall, or when I'm too close to the wall base. I see it "shaded but visible" when I can see part of the token but not the floor it's standing on, and "illuminated and visible" when I can see the floor it's standing on. Perfect!

@ElroTheOnk
Strange, I have the same settings and any tokens that are standing directly beside the wall cannot be seen by tokens with a lower elevation. However, if they stand away from the wall or the wall is not snapped to the grid and is away from the elevated token, the token is visible to the lower elevation tokens.

Further testing, if the token's height plus their elevation does not equal to or exceed the height of the wall prevents the token from being seen by the lower elevation token.

If the token height + elevation does not equal or exceed the height of the wall, then I would not expect them to be seen by a lower-elevation token on the other side of the wall. But that is due to Wall Height; Elevated Vision does not adjust token visibility directly.