Storage: ConnectionError when uploading

Traceback:
  File \"/usr/local/lib/python2.7/dist-packages/google/cloud/storage/blob.py\", line 962, in upload_from_string
    content_type=content_type, client=client)
  File \"/usr/local/lib/python2.7/dist-packages/google/cloud/storage/blob.py\", line 886, in upload_from_file
    client, file_obj, content_type, size, num_retries)
  File \"/usr/local/lib/python2.7/dist-packages/google/cloud/storage/blob.py\", line 813, in _do_upload
    client, stream, content_type, size, num_retries)
  File \"/usr/local/lib/python2.7/dist-packages/google/cloud/storage/blob.py\", line 766, in _do_resumable_upload
    response = upload.transmit_next_chunk(transport)
  File \"/usr/local/lib/python2.7/dist-packages/google/resumable_media/requests/upload.py\", line 395, in transmit_next_chunk
    retry_strategy=self._retry_strategy)
  File \"/usr/local/lib/python2.7/dist-packages/google/resumable_media/requests/_helpers.py\", line 101, in http_request
    func, RequestsMixin._get_status_code, retry_strategy)
  File \"/usr/local/lib/python2.7/dist-packages/google/resumable_media/_helpers.py\", line 146, in wait_and_retry
    response = func()
  File \"/usr/local/lib/python2.7/dist-packages/google/auth/transport/requests.py\", line 179, in request
    method, url, data=data, headers=request_headers, **kwargs)
  File \"/usr/local/lib/python2.7/dist-packages/requests/sessions.py\", line 508, in request
    resp = self.send(prep, **send_kwargs)
  File \"/usr/local/lib/python2.7/dist-packages/requests/sessions.py\", line 618, in send
    r = adapter.send(request, **kwargs)
  File \"/usr/local/lib/python2.7/dist-packages/requests/adapters.py\", line 490, in send
    raise ConnectionError(err, request=request)
ConnectionError: ('Connection aborted.', error(\"(32, 'EPIPE')\",))

Setup:
$ python --version
Python 2.7.12

$ pip show show google-cloud
Name: google-cloud
Version: 0.27.0
Summary: API Client library for Google Cloud
Home-page: https://github.com/GoogleCloudPlatform/google-cloud-python
Author: Google Cloud Platform
Author-email<EMAIL_ADDRESS>License: Apache 2.0
Location: /usr/local/lib/python2.7/dist-packages
Requires: google-cloud-bigquery, google-cloud-bigtable, google-cloud-core, google-cloud-datastore, google-cloud-dns, google-cloud-error-reporting, google-cloud-language, google-cloud-logging, google-cloud-monitoring, google-cloud-pubsub, google-cloud-resource-manager, google-cloud-runtimeconfig, google-cloud-spanner, google-cloud-speech, google-cloud-storage, google-cloud-translate, google-cloud-videointelligence, google-cloud-vision

$ pip freeze | grep requests
requests==2.18.4

$ pip freeze | grep urllib3
urllib3==1.22

Hello, I am not sure it's a bug or not. Could you please share your code with us? By the way, I see your google-cloud version is old. Could you try to upgrade it?

The following is a simplified code which has failed:
client = storage.Client(project_name, scoped_credentials)
bucket = client.bucket(bucket_name)
blob = bucket.blob(path, 1048576)
blob.upload_from_string(content, content_type=content_type)

This issue is not easy to reproduce because it happens less than 1:1000 cases (rough estimate).

@Indy2222 It's not unexpected that the low-level (i.e. socket-level) connection would fail very infrequently, and that's what this error indicates. That doesn't mean we can't catch this exception and retry, so thanks for reporting!
@jonparrott Do you know the retry policy that requests / urllib3 has?

@jonparrott Do you know the retry policy that requests / urllib3 has?

It should retry connection errors a few times, but will give up pretty quickly. I'm not sure the exact semantics.

@jonparrott Do you think we should try to catch requests.ConnectionError / requests.exceptions.ConnectionError?

No. IMO, those are akin to socket-level errors.


Add support for Hikvision event stream binary sensors

Description:
Adds support for utilizing motion and other sensors within Hikvision IP cameras in Home Assistant.
Pull request in home-assistant.github.io with documentation (if applicable): home-assistant/home-assistant.github.io#1565
Example entry for configuration.yaml (if applicable):
binary_sensor:
  platform: hikvision
  host: IP_ADDRESS
  username: user
  password: pass

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

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

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

[ x ] Local tests with tox run successfully. Your PR cannot be merged unless tests pass
[ x ] New dependencies have been added to the REQUIREMENTS variable (example).
[ x ] New dependencies are only imported inside functions that use them (example).
[ x ] New dependencies have been added to requirements_all.txt by running script/gen_requirements_all.py.
[ x ] New files were added to .coveragerc.

My branch is all messed up... disregard this PR.


KIALI-2312 Switch security layer in graph when mesh-wide mTLS is enabled

We have the following scenario:

Mesh-wide mTLS is enabled.
One part of the graph is connected without mTLS (plain).

The graph shows the following:

Since mTLS is defaultly enabled, a lock is present in almost each edge in the graph. This doesn't give much value and introduce some visual noise, IMO.
What is suggested in KIALI-2312 is to remove the locks in mTLS connections and add locks in another shape/color in the non-mTLS connections.
Questions to answer:

Which icon should we place in the non-mTLS edges.
Which color should we use?

Proposal:

pficon-unlocked
Color: same as the current lock in the graph.

JIRA: https://issues.jboss.org/browse/KIALI-2312

I am not against pficon-unlocked in black, so just a question: will that provide enough contrast so that it is obvious that the lock is unlocked. Should the lock perhaps not be in black, but in orange to indicate that the general mTLS has been switched off (just to make it more obvious)?

I am not against pficon-unlocked in black, so just a question: will that provide enough contrast so that it is obvious that the lock is unlocked. Should the lock perhaps not be in black, but in orange to indicate that the general mTLS has been switched off (just to make it more obvious)?

I doubt that it will be easily detectable that it's unlocked, especially since it will be very small.
I think that a better icon would be something like this where the unlock is more visible due to change of its direction:
https://thenounproject.com/search/?q=unlock&i=588454

We have a big restriction in graph edges. Icons aren't allowed unless they are part of an iconic font.
If we want to change the icon, we could try to find another iconic font with different open locks. wdyt?
However, both locks aren't going to live together now. So users won't need to deal differentiating both of them.
cc/ @jshaughn @jmazzitelli

No hover, no selection:

Hover in the edge:

details box selected:

Showing "more" complex graph (smaller icons):

Legend should be updated too:

I'll be honest, I hadn't really seen what was being worked on here until now and I'm not sure any of it is really necessary.  By default we don't show security badging, it's only displayed if the security display option is enabled.  So if it's globally enabled a user doesn't really have to enable the option unless they want to check for something unexpected.  And then they can use Graph Find and just do "!mtls".
Given that Graph Find can immediately locate things the icon is not really that important.  So, assuming we go forward with this, I think the pf-unlocked is totally sufficient.

I don't think that pf-unlocked is clear as "unlocked" at this particular size. you need to be really aware of what you are trying to see here - "am I looking at a locked lock or an unlocked lock?" - I think most of the users will just see a lock and assume it indicates a secured connection.
@serenamarie125 wdyt?

@serenamarie125 ? there's a need to make progress on this and we're waiting on feedback on the icon. thank you!

@abonas based on the conversation with Kyle, i think you can use the font-awesome icon rather than the pficon.  Will this address your concerns?

Using the unlock icon from FontAwesome (4.7), this is the outcome:

Regarding to the legend, how should we proceed? I have two ideas in mind:

Switching legend from one to another. When mTLS enabled, show the legend with the unlock icon, otherwise show the current legend. Since both icons won't show up at the same time, this makes more sense.

Show both icons in one single legend. But, IMO, I will be harder to explain.

Any ideas here?

I don't think we want to manage two nearly identical .svg files.  Or is there a way to add conditional rendering to a single .svg?   I'd probably suggest just putting the two icons side-by-side with a two line caption:
enabled/disabled mTLS
(depending on global setting)

@serenamarie125 can you please advise here

UX agrees with Option 1 @xeviknal

Closing this because it is already implemented and merged.
https://github.com/kiali/kiali-ui/pull/1089

Thank you all for time in this :tada:


Submit 0.28.0 version of Intel Device Plugins Operator to https://operatorhub.io/

This should include the new SHA env variables. Please add a link to the PR here for reference.

https://github.com/k8s-operatorhub/community-operators/pull/3308


[KNI] add helper script to do carries

A "Carry" is when we merge and accept in our tree
a change which was not (yet) accepted u/s, either in the main branch or in a release branch.
Let's start adding a script to simplify carrying a full PR.
Signed-off-by: Francesco Romani<EMAIL_ADDRESS>

This script is meant to run on you local dev environment or be triggered ?

This script is meant to run on you local dev environment or be triggered ?

Is meant to be run in our local dev env

/cc @swatisehgal

/lgtm

/cherry-pick release-4.12


Add some test for the examples and run them in the GitHub Actions

This add pytest for the simple example and add 2 additional steps in the GitHub Actions: install the example deps + run the example tests.

@Zsailer Would be great if you can have a look at this.

This looks good. Thanks @echarles!


positional-arguments does not work with set shell?

For
set positional-arguments

run args:
    @echo $@

Execute just run 2023 print:
2023

For
set positional-arguments
set shell := ["pwsh", "-c"]

run args:
    @echo $@

Execute just run 2023 print:
$@
run
2023

For
set positional-arguments
set shell := ["pwsh", "-c"]

run args:
    @echo $@

Execute just run 2023 print:
Error: nu::parser::variable_not_found (link)

  × Variable not found.
   ╭─[source:1:1]
 1 │ echo $@
   ·      ─┬
   ·       ╰── variable not found
   ╰────

error: Recipe `run` failed on line 5 with exit code 1

Test on just 1.13.0.

This seems to be a duplicate of #1554
But also Error: nu::parser::variable_not_found (link) looks like Nu shell instead PowerShell. Is your default shell Nu? If so this might be another part of the same issue of simply using set positional-arguments with PowerShell Core. What operating system are you using?

This seems to be a duplicate of #1554
But also Error: nu::parser::variable_not_found (link) looks like Nu shell instead PowerShell. Is your default shell Nu? If so this might be another part of the same issue of simply using set positional-arguments with PowerShell Core. What operating system are you using?

My mistake. I updated the last example.
The arguments should expand by just.exe, whatever my default shell and OS are.

Thanks for the clarification. So the pwsh example is definitely the same as I was experiencing in #1554. Nu shell is similar to PowerShell in that they are both object based shells instead of string based like the majority of other shells in existence. So might have something to do with a possible change in Just v1.13.0. As this was not an issue I'd seen prior using Just with PowerShell. Though it may have existed prior and I simply hadn't tried using set positional-arguments with PowerShell before. I seem to remember a little oddness with Nu shell but It's been a while since I played with that Shell and Just. Any thoughts @casey ?

Pretty sure nu does not allow access to positions via $@, $args, et al, you have to wrap your script in a function declaration: https://www.nushell.sh/book/scripts.html#parameterizing-scripts

@cspotcode As I understand it using set positional-arguments is an enhancement that preprocesses the $@, $1, $2, etc. tokens before handoff to the the shell. If set positional-arguments was not enabled then those tokens would absolutely have to be handled by the shell itself.

No, set positional-arguments appends them to the argv array when invoking the shell, it doesn't do any preprocessing.
My writeup in #1592 goes into greater detail.
But you can experiment with the following justfile to understand the exact argv array that is being received by the target executable.
# Try running `just default hello world` and carefully inspect the output
set shell := ["python", "-c", "import sys; print(sys.argv)"]
set positional-arguments
default *args:
    foo bar baz "$@" "$1"

$ just default hello world
foo bar baz "$@" "$1"
['-c', 'foo bar baz "$@" "$1"', 'default', 'hello', 'world']

This proves that just is not preprocessing, it is passing the characters $ and @ to the shell within the argv array of strings.

Ah, that's a bummer  ☹

Work on PowerShell Core 7.4 with -cwa options:
set positional-arguments
set shell := ["pwsh", "-cwa"]

run *args:
    python -c "import sys; print(sys.argv)" @($args[1..($args.Count - 1)])

Execute just run 1 '2 3' print:
['-c', '1', '2 3']

@Cologler That's super nice! This has been a longstanding limitation. Is -cwa a new option? If -cwa is widely available, we should probably update the readme to suggest using -CommandWithArgs instead of `-Command.

@casey CommandWithArgs is an experimental feature added in 7.4.
Source: https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_pwsh?view=powershell-7.4

Gotcha. I added a note to the readme in #2404. I think this is "fixed" and can be closed, since there's a good workaround.

@casey Unlike $@ in sh, powershell must use @($args[1..($args.Count - 1)]) to skip the first argument pass from just.

@Cologler Thanks! Updating the example in the readme to be more complete in #2405.


[close #407] Fix arm64 build

What problem does this PR solve?
Issue Number: close #407
Problem Description: ci: Release arm64 artifact failed type/bug
What is changed and how does it work?
Code changes

Has exported function/method change
Has exported variable/fields change
Has interface methods change
Has persistent data change
No code

Check List for Tests
This PR has been tested by at least one of the following methods:

Manual test (add detailed scripts or steps below)

❯ cd cdc
❯ make release
go generate
CGO_ENABLED=0 GOOS= GOARCH= GO111MODULE=on go build -buildvcs=false -trimpath  -ldflags '-X "github.com/tikv/migration/cdc/pkg/version.ReleaseVersion=v1.2-master-dirty" -X "github.com/tikv/migration/cdc/pkg/version.BuildTS=2024-06-16 13:27:51" -X "github.com/tikv/migration/cdc/pkg/version.GitHash=db0ae72b17d7f9b888b05745d4582cb11f345cc0" -X "github.com/tikv/migration/cdc/pkg/version.GitBranch=main" -X "github.com/tikv/migration/cdc/pkg/version.GoVersion=go version go1.21.0 linux/amd64"' -o bin/tikv-cdc ./cmd/cdc/main.go
❯ TARGET_OS=linux TARGET_ARCH=arm64 make release
go generate
CGO_ENABLED=0 GOOS=linux GOARCH=arm64 GO111MODULE=on go build -buildvcs=false -trimpath  -ldflags '-X "github.com/tikv/migration/cdc/pkg/version.ReleaseVersion=v1.2-master-dirty" -X "github.com/tikv/migration/cdc/pkg/version.BuildTS=2024-06-16 13:29:27" -X "github.com/tikv/migration/cdc/pkg/version.GitHash=db0ae72b17d7f9b888b05745d4582cb11f345cc0" -X "github.com/tikv/migration/cdc/pkg/version.GitBranch=main" -X "github.com/tikv/migration/cdc/pkg/version.GoVersion=go version go1.21.0 linux/amd64"' -o bin/tikv-cdc ./cmd/cdc/main.go
❯ file bin/tikv-cdc
bin/tikv-cdc: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), statically linked, Go BuildID=gMfXoVB1YNnT1XO5vVG4/JnB2x_wNvDq-J3ExNgLs/8C2OF2OuqYMYip3-Li18/1FW1cwpC4nPfTRMcdEAk, with debug_info, not stripped
❯ TARGET_OS=linux TARGET_ARCH=amd64 make release
go generate
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 GO111MODULE=on go build -buildvcs=false -trimpath  -ldflags '-X "github.com/tikv/migration/cdc/pkg/version.ReleaseVersion=v1.3-master-dirty" -X "github.com/tikv/migration/cdc/pkg/version.BuildTS=2024-06-16 13:30:21" -X "github.com/tikv/migration/cdc/pkg/version.GitHash=db0ae72b17d7f9b888b05745d4582cb11f345cc0" -X "github.com/tikv/migration/cdc/pkg/version.GitBranch=main" -X "github.com/tikv/migration/cdc/pkg/version.GoVersion=go version go1.21.0 linux/amd64"' -o bin/tikv-cdc ./cmd/cdc/main.go
❯ file bin/tikv-cdc
bin/tikv-cdc: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, Go BuildID=LG1_qxdPIlQfreu95e4J/jLJ05r-yHZyYag82OoT3/5p2WSfvir6H8s4CkdB_8/n20WoMJb17MzoaeZcsWW, with debug_info, not stripped

Make release for arm64 of tikv-br failed, and will be fixed in another PR.
❯ make release
CGO_ENABLED=1 GOOS= GOARCH= GO111MODULE=on go build -tags codes -ldflags '-X "github.com/tikv/migration/br/pkg/version/build.ReleaseVersion=cdc-v1.3.0-beta-dirty" -X "github.com/tikv/migration/br/pkg/version/build.BuildTS=2024-06-16 13:30:59" -X "github.com/tikv/migration/br/pkg/version/build.GitHash=db0ae72b17d7f9b888b05745d4582cb11f345cc0" -X "github.com/tikv/migration/br/pkg/version/build.GitBranch=main"' -o bin/tikv-br cmd/br/*.go
❯ TARGET_OS=linux TARGET_ARCH=amd64 make release
CGO_ENABLED=1 GOOS=linux GOARCH=amd64 GO111MODULE=on go build -tags codes -ldflags '-X "github.com/tikv/migration/br/pkg/version/build.ReleaseVersion=cdc-v1.3.0-beta-dirty" -X "github.com/tikv/migration/br/pkg/version/build.BuildTS=2024-06-16 13:31:21" -X "github.com/tikv/migration/br/pkg/version/build.GitHash=db0ae72b17d7f9b888b05745d4582cb11f345cc0" -X "github.com/tikv/migration/br/pkg/version/build.GitBranch=main"' -o bin/tikv-br cmd/br/*.go
❯ file bin/tikv-br
bin/tikv-br: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, Go BuildID=k5UYGU4xm_Sulp9Xxh2w/5AyaDca1I_G2ylT647Tr/elpNLRWa7zRzxf4MXjqq/WfB1swD1DsC5PxkIYgEZ, with debug_info, not stripped
❯ TARGET_OS=linux TARGET_ARCH=arm64 make release
CGO_ENABLED=1 GOOS=linux GOARCH=arm64 GO111MODULE=on go build -tags codes -ldflags '-X "github.com/tikv/migration/br/pkg/version/build.ReleaseVersion=cdc-v1.3.0-beta-dirty" -X "github.com/tikv/migration/br/pkg/version/build.BuildTS=2024-06-16 13:31:34" -X "github.com/tikv/migration/br/pkg/version/build.GitHash=db0ae72b17d7f9b888b05745d4582cb11f345cc0" -X "github.com/tikv/migration/br/pkg/version/build.GitBranch=main"' -o bin/tikv-br cmd/br/*.go
# runtime/cgo
gcc_arm64.S: Assembler messages:
gcc_arm64.S:30: Error: no such instruction: `stp x29,x30,[sp,'
gcc_arm64.S:34: Error: too many memory references for `mov'
gcc_arm64.S:36: Error: no such instruction: `stp x19,x20,[sp,'
gcc_arm64.S:39: Error: no such instruction: `stp x21,x22,[sp,'
gcc_arm64.S:42: Error: no such instruction: `stp x23,x24,[sp,'
gcc_arm64.S:45: Error: no such instruction: `stp x25,x26,[sp,'
gcc_arm64.S:48: Error: no such instruction: `stp x27,x28,[sp,'
gcc_arm64.S:52: Error: too many memory references for `mov'
gcc_arm64.S:53: Error: too many memory references for `mov'
gcc_arm64.S:54: Error: too many memory references for `mov'
gcc_arm64.S:56: Error: no such instruction: `blr x20'
gcc_arm64.S:57: Error: no such instruction: `blr x19'
gcc_arm64.S:59: Error: no such instruction: `ldp x27,x28,[sp,'
gcc_arm64.S:62: Error: no such instruction: `ldp x25,x26,[sp,'
gcc_arm64.S:65: Error: no such instruction: `ldp x23,x24,[sp,'
gcc_arm64.S:68: Error: no such instruction: `ldp x21,x22,[sp,'
gcc_arm64.S:71: Error: no such instruction: `ldp x19,x20,[sp,'
gcc_arm64.S:74: Error: no such instruction: `ldp x29,x30,[sp],'
make: *** [Makefile:98: release] Error 1

Side effects

Possible performance regression, WHY: TBD
Increased code complexity, WHY: TBD
Breaking backward compatibility, WHY: TBD
No side effects

Related changes

Need to cherry-pick to the release branch
Need to update the documentation
Need to be included in the release note
No related changes

To reviewers

Please follow these principles to check this pull requests:

Concentration. One pull request should only do one thing. No matter how small it is, the change does exactly one thing and gets it right. Don't mix other changes into it.
Tests. A pull request should be test covered, whether the tests are unit tests, integration tests, or end-to-end tests. Tests should be sufficient, correct and don't slow down the CI pipeline largely.
Functionality. The pull request should implement what the author intends to do and fit well in the existing code base, resolve a real problem for TiDB/TiKV users. To get the author's intention and the pull request design, you could follow the discussions in the corresponding GitHub issue or internal.tidb.io topic.
Style. Code in the pull request should follow common programming style. (For Go, we have style checkers in CI). However, sometimes the existing code is inconsistent with the style guide, you should maintain consistency with the existing code or file a new issue to fix the existing code style first.
Documentation. If a pull request changes how users build, test, interact with, or release code, you must check whether it also updates the related documentation such as READMEs and any generated reference docs. Similarly, if a pull request deletes or deprecates code, you must check whether or not the corresponding documentation should also be deleted.
Performance. If you find the pull request may affect performance, you could ask the author to provide a benchmark result.

(The above text mainly refers to TiDB Development Guide. It's also highly recommended to read about Writing code review comments)

/test-integration-test

/run-integration-test

/test pull-integration-test


Cannot embed bqplot widget to a html

I've created a scatter plot with interactive elements in a VBox it works fine in my jupyter notebook.
When I export widgets using embed widgets and paste in a html file ipywidgets and plot comes up. When I change slider, plot remains same.
In chrome's console I can see that bqplot.js I see this

Is it possible to have that plot with interactivity in a HTML page?

That should work. This is what we use here for example: http://jupyter.org/widgets
This error message is not significant though because we always check the local path before reaching to the CDN so this error message will always be there even when it works.

Can you provide some information about the versions at play etc?

I think Dandik's problem (and the one I am also facing right now) is that the link between ipywidgets and bqplot is going through the Python back-end. As such, when embedded into a web page, bqplot objects cannot be interacted with through ipywidgets.
An example from the Wealth  of Nations notebook:
When embedded into a webpage, the play_button and the year_slider are linked using jslink. It ensures that they correctly interact with each other when embedded in an HTML webpage.
play_button = Play(min=1800, max=2008, interval=time_interval)
jslink((play_button, 'value'), (year_slider, 'value'))
v = VBox([HBox([play_button, year_slider]), fig])

On the other hand, the link between the aspects of the fig and the year_slider is created using observer events:
def year_changed(change):
    wealth_scat.x, wealth_scat.y, wealth_scat.size = get_data(year_slider.value)
    year_label.text = [str(year_slider.value)]
year_slider.observe(year_changed, 'value')

As a consequence, this interaction is lost when embedding the widget into a webpage.
Now, is there a way to jslink traits of the bqplot to other ipywidgets?
Thank you in advance for your answer!

@QuentinAndre   There is a way to jslink traits of the bqplot to other ipywidgets.  However, the traits have to be syncable and of the same type.
Try these in the wealth of nations ipynb:
# Text widget to change the width of the bqplot figure.  try typing in box 500px or 90% for example
widthWidget = widgets.Text(
    value='500px',
    placeholder='e.g. 500px or 90%',
    description='Width of Figure:',
    disabled=False
)
jslink((fig.layout, 'width'), (widthWidget, 'value'))
widthWidget

or
#Slider to change minimum value on y scale of bqplot figure
xslider = IntSlider(min=0, max=100, step=1, description='Min x scale: ', value=y_sc.min)

jslink((y_sc, 'min'), (xslider, 'value'))
xslider


Refactor of VMs subcollection

Create two private methods to fix branch condition size too high/cyclomatic and perceived complexity rubocop issues in the VMs subcollection API
@miq-bot add_label api, cleanup/rubocop, euwe/no
@miq-bot assign @abellotti

😍  will merge when 🍏


Insert richer modules information in metadata and expose it in metadata API.

Each meta has a pointer to ModuleMeta structure which describes a top level module (only top level modules can be required). All ModuleMeta structures are also kept in global ModuleTable (an array of pointers to ModuleMetas, sorted by module name). This table is used to perform lookups by module name.

:+1:


Fix: helm3 - kind sorter incorrectly compares unknown and namespace

What this PR does / why we need it:
The kind_sorter incorrectly compares Namespace and unknown type. This PR fixes comparison logic in Less method.
This is to fix a previous issue in helm2 -> https://github.com/helm/helm/issues/4728
I have ported the changes from PR -> https://github.com/helm/helm/pull/5186
Signed-off-by: Bradley Skuse<EMAIL_ADDRESS>

@bradskuse Can you rebase to fix the conflicts?

@bradskuse Can you rebase to fix the conflicts?

Yes I can do that, I'll look first thing Monday

would love to see this as well

@hickeyma Apologies for being a day late to this.  I think I've got this correct (first time rebasing a PR from forked repo).  Let me know if I need to make any changes. Brad


IndexFilter doesn't filter when maximumIndex is set to 0

All tests are now passing :tada:  (Until more are written ;) )


Add Per-Item Highlights to Ground Items

Offers the player more ground item highlight options by enabling them to set a custom highlight color for individual items!
Instructions
To set a custom highlight color for an item:

Shift + Right Click an already highlighted ground item
Navigate to the "Set highlight color" submenu

Within the submenu, the player can select from the following options:

"Pick" to choose a new color from the color picker
"Set color" to choose from one of the top 5 most used highlight colors
"Reset" to return to the default highlight color and remove the config data for the item

Images

A few items that players might want to differentiate with highlights

A look at the "Set highlight color" submenu. The current color is always excluded from the list

The color picker always defaults to the current color

Lootbeam support!

Valued items + button now displays correctly
fixes #14233, fixes #12274

This is currently implemented to only work on highlighted items. I have a branch available that makes highlights visible for all non-hidden items. That approach can be implemented into this PR if requested.

The way that this stores and checks the color overrides seems slow. Since it is doing an O(n) check over each override per item per frame. And also it is doing string comparisons of the item names instead of using item ids like how it should be. I think it should be possible to store the highlight color (and maybe also the hidden/highlight boolean) in GroundItem and cache it. And then store the overrides in the config keyed by the item id.

added in bd05ac363c074f9d11469111932f9538d6393e34


Add NPM script for renaming project and creating a Github repo

I like the idea of the clean script, this just takes the concept a little further and adds a script that will walk the client through renaming their project and automatically creating a github repo.

@andrewgrewell Thanks for submitting this PR. May I know which issue does this PR point to?

@andrewgrewell I'm sorry I have to close this. The changes look intriguing to me. But please follow contribution guidelines before submitting a PR. Please create an issue, let the community have their say first. Thanks!

@KarandikarMihir
Sorry, thanks for the heads up


Background KV maintenance work should monitor the resources it uses

Scanning and cleanup of data in the background should take into considerations the resources and the load on the system.
Using rate-limit and monitor resource usage in order to perform the background work at the time and the amount that will not limit incoming requests.

Dup of #4959


retry_when operator

Summary by CodeRabbit

New Features

Introduced a retry_when operator for improved error handling and retry logic in reactive programming.
Added functionality to resubscribe to observables upon error notifications, enhancing user control over data flow.

Tests

Added a comprehensive suite of unit tests for the retry_when operator to validate its functionality and ensure reliability in various scenarios.

Documentation

Created an example demonstrating the use of the retry_when operator for conditional retries based on error types, serving as a practical guide for developers.

https://sonarcloud.io/code?id=victimsnino_ReactivePlusPlus&pullRequest=616&selected=victimsnino_ReactivePlusPlus%3Asrc%2Frpp%2Frpp%2Foperators%2Fretry_when.hpp&line=62
looks like your code (same as mine) is not testing non-recursive re-subscription


Add to Stackage

Hi, would you consider adding this project to the Stackage package set? This makes it easier for people to install it, and Stackage will automatically ping you when sws needs to be updated to accommodate new dependency versions.

Some version bounds that need updating:

cryptonite < 0.25 (latest is 0.25)
http-types < 0.10 (latest is 0.12.1)
resourcet < 1.2 (latest is 1.2.1)


tests/net/socket/udp/ is broken, again

This feels like deja vu, because there was a ticket https://github.com/zephyrproject-rtos/zephyr/issues/4347 recently and the issue was fixed. My memory of what happened is:

Running "make run" in tests/net/socket/udp/ led to the test hang on start up (no testcase finished completely).
Then apparently, after #4347, it was fixed (i.e. test fully passed).

But now with the latest master I get:
qemu-system-i386: warning: Unknown firmware file in legacy mode: genroms/multiboot.bin

Running test suite socket_udp
===================================================================
starting test - test_send_recv_2_sock
PASS - test_send_recv_2_sock.
===================================================================
starting test - test_v4_sendto_recvfrom

And then it hangs.
But it's worse than that - trying to go to an earlier revision doesn't help, it all hangs in test_v4_sendto_recvfrom, until you reach fix for #4347, when it starts to hang at the beginning. And even checking out 7c60eadd5858b7242328aa2afbda346b4ce750f7, I still get hang in test_v4_sendto_recvfrom. - well, that's expected.
So, I then suspect my own system, but before rebooting, trying to shoot these tests into the CI via https://github.com/zephyrproject-rtos/zephyr/pull/4605 (that's why I started to run this tests in the first place now), and get the same behavior: https://app.shippable.com/github/zephyrproject-rtos/zephyr/runs/5943/3/tests (bottom).
@askawu : Do you have any ideas? Can you remember 100% clearly that you ran tests/net/socket/udp/ and all testcases worked for you?

Even tried https://github.com/zephyrproject-rtos/zephyr/pull/4599, doesn't help.

Well, the previous test in CI was not clean, here's updated log that confirms the problem: https://app.shippable.com/github/zephyrproject-rtos/zephyr/runs/5983/3/tests

It's my fault.  It's the same problem of early version of #4390. These test cases are not self-contained. They should be run with the help of net-tools echo server. That's why it blocks the execution. I've submitted #4621 for the fix.

Fixed, thanks.


Customizable Report Sections

Currently, our XAI report includes all available sections by default. We want to give users the ability to choose which sections they want in their report.
Approach:

Modify the generate_report method in XAIWrapper class to accept a parameter for section selection
Create a list of available sections

Hello @ombhojane , pls assign me


feat: nextjs example

Closes #153
Introduced changes

nextjs client example

Checklist

[ ] Linked relevant issue
[ ] Updated relevant documentation
[ ] Added relevant tests
[ ] Add a dedicated CI job for new examples
[ ] Performed self-review of the code

@ponderingdemocritus this is configured like the pistols client, but is not building 🫤
it's not complaining that the wasm is a ESM module...
don't know if you have any idea, I'll will get back to it later
~/Dev/Realms/dojo.js/examples/clients/react/react-nextjs $ pnpm run build

><EMAIL_ADDRESS>build /Users/roger/Dev/Realms/dojo.js/examples/clients/react/react-nextjs
> tsc && NODE_OPTIONS='--experimental-wasm-modules' next build

 ✓ Linting and checking validity of types
Failed to compile.

../../../../packages/torii-wasm/pkg/web/dojo_c_bg.wasm
Module not found: ESM packages (./dojo_c_bg.js) need to be imported. Use 'import' to reference the package instead. https://nextjs.org/docs/messages/import-esm-externals

https://nextjs.org/docs/messages/module-not-found

Import trace for requested module:
../../../../packages/torii-wasm/pkg/web/dojo_c.js
../../../../packages/torii-client/dist/index.js
./src/dojo/generated/setup.ts
./src/pages/index.tsx

> Build failed because of webpack errors
   Creating an optimized production build  . ELIFECYCLE  Command failed with exit code 1.
~/Dev/Realms/dojo.js/examples/clients/react/react-nextjs $

have changed directory structure
Can you update this and include in create-dojo following similar pattern to other examples

closeing - going to rebuild in the sdk for now


create Numpy wavefront object for LCT propagators

When addressing this issue, please assess what would be required for LCT-based propagation to become completely indepdendent of SRW.
Now that we are finding it necessary to have mesh sizes comparable to 500x500, it will become important to seriously consider parallelization of the Python code.

This is an important feature, but development will have to wait until new resources have been identified.


Limit undefined behaviour and fix some wharnings too

PR Summary
In a downstream code, @AstroBarker experienced a cuda "unspecified launch failure" for some applications and on some architectures. After some effort, we narrowed it down to the RootFinding1D::RootCounts and RootFinding1D::RootStatus variables used in the tabulated EOS's. Each EOS had an internal instants of RootCounts and Status used for diagnostics when the code was run on host in serial.
Writing to these variables in multiple threads is undefined behavior. However,  I intentionally put the logic in the code anyway. My reasoning was that since they wouldn't be read except for diagnostic purposes in serial, this undefined behavior shouldn't cause any problems. This reasoning was apparently incorrect.
I still think these variables are useful, so I don't want to eliminate this capability completely. However, I want to avoid them being written to in a "device" context (whatever that means going forward), to prevent us from hitting this fail case in the future. So I have made the following changes:

The root counts object is now an optional parameter of the root finding routines. You pass in a pointer, if that pointer isn't null, the histogram is recorded.
The root counts and root status fields owned by each tabulated EOS object are only written to if the EOS believes itself to be "on host."

Note that this strategy doesn't prevent someone from sticking a host EOS in an openmp for loop, so this doesn't entirely escape the issue, but it seems to be a safe enough workaround. A more complete solution would be to hide the histogram/status logic behind a compile-time flag or remove it entirely. I'd be open to that if people feel strongly, but I think this is probably good enough for now.
@AstroBarker please try this branch and see if it resolves the issues you were seeing.
@dholladay00 @mauneyc-LANL @rbberger @jhp-lanl  I'd like your feedback on this solution. Do you agree this feels safe enough for now? Or should we more aggressively eliminate any possibility of UB here?
While I'm at it, I cleaned up some warnings I was seeing when compiling the code which were getting on my nerves:

A few unused variable warnings
I re-implemented strcat with device decorations (needed for the error message for entropy not implemented), as the standard library version is not implemented on device
I made some device/inline annotations consistent in a few spots.

There are more warnings in the code than this... and I'd like to clean them up when we have the time. But one thing at a time.

PR Checklist

[ ] Adds a test for any bugs fixed. Adds tests for new features.
[x] Format your changes by using the make format command after configuring with cmake.
[ ] Document any new features, update documentation for changes made.
[ ] Make sure the copyright notice on any files you modified is up to date.
[x] After creating a pull request, note it in the CHANGELOG.md file
[ ] If preparing for a new release, update the version in cmake.

This branch is the same one as for the closed PR #240 . I re-used the branch.

Thanks for this @jonahm-LANL -- this does solve my downstream problems. The pcounts implementation looks solid to me.

Another thought @Yurlungur, this PR might be a good spot to slip in the sieMin_ etc in GetOnDevice() for stellar_collapse?

Another thought @Yurlungur, this PR might be a good spot to slip in the sieMin_ etc in GetOnDevice() for stellar_collapse?

Done

Sounds good. I'll wait to hear from @dholladay00

@Yurlungur could you grep through the code and remove instances of root counts where they were used only b/c the API required it? I know where is one in singularity_eos.cpp that can be removed.

(none of this implies a blocking review)
I'm a bit late to this so apologies if this has been covered. Would the better solution be to use atomic writes? This may require some "portable" atomic routines in PoC, tho.
Keeping the diagnostic would be useful even on device. Perhaps a better approach is to template on an interface
struct DiagStub
{
// has interface as RootCounts but no-op implementation, e.g. DiagStub::reset() {}
};

// solves for f(x,params) - ytarget = 0
template <typename T, typename DiagCount = DiagStub>
PORTABLE_INLINE_FUNCTION Status regula_falsi(const T &f, const Real ytarget,
                                             const Real guess, Real a, Real b,
                                             const Real xtol, const Real ytol,
                                             Real &xroot,
                                             DiagCounts &counts) {

For debug or evaluation builds, this can be changed at build time. You also get the benefit of reducing branch points in the function. (This is a "for instance" snippet, go easy on unintended effects).
Tangentially, there is the question of rolling a custom root-find instead of relying on a more general library, though I'm not sure that this is a "now" concern.

@Yurlungur could you grep through the code and remove instances of root counts where they were used only b/c the API required it? I know where is one in singularity_eos.cpp that can be removed.

The one in singularity_eos.cpp was the only one I missed. I'll fix it. :)
In reply to @mauneyc-LANL :

Would the better solution be to use atomic writes? This may require some "portable" atomic routines in PoC, tho.

I considered atomics, but I didn't want to deal with the performance implication. Perhaps a good long-term solution is to add atomics to POC and have the atomics be behind a compile flag.

Keeping the diagnostic would be useful even on device. Perhaps a better approach is to template on an interface

Interesting. I kind of like this idea, but I also kind of like root-finding being optional as an argument, since there were a lot of places in the code where counts were used but not examined.
How about we keep what I've done here for now but add an issue suggesting both atomics and a mixin here for the count type. Would that work?

Could even do this (add default argument)
struct DiagStub
{
// has interface as RootCounts but no-op implementation, e.g. DiagStub::reset() {}
};

// solves for f(x,params) - ytarget = 0
template <typename T, typename DiagCount = DiagStub>
PORTABLE_INLINE_FUNCTION Status regula_falsi(const T &f, const Real ytarget,
                                             const Real guess, Real a, Real b,
                                             const Real xtol, const Real ytol,
                                             Real &xroot,
                                             DiagCounts &counts = DiagStub{}) {

@Yurlungur @dholladay00 @mauneyc-LANL given that the CI passed on Darwin and that we seemed to resolve any open questions at the meeting today, I'm pulling the trigger and merging this.


Yatin: Blacklist digitalsupports.in

Yatin requests the blacklist of the website digitalsupports\.in. See the MS search here and the Stack Exchange search in text, in URLs, and in code.

digitalsupports\.in has been seen in 9 true positives, 1 false positive, and 1 NAA.

Approved by cigien in Charcoal HQ


Mouse interation is different between 2D and 3D views

🐛 Bug
When using the mouse for changing the view in 2D and 3D, functions are different. It's "complicated" to pan in 3D while there are multiple easy ways for zooming in 2D and 3D. I'm wondering if this is intentional.
To Reproduce
Steps to reproduce the behavior:

Open any 3D dataset in 2D view
zoom and pan (left mouse drag&drop) the dataset
Switch to 3D view
zoom and pan (SHIFT + left mouse drag&drop) the dataset

Expected behavior
The mouse wheel is intuitive for zooming. Thus, I suggest changing the function of the right mouse button:
2D, right mouse button: rotate dataset around Z axis (currently it zooms on the right mouse button)
3D, right mouse button: rotate/tilt dataset (currently SHIFT + left mouse button does that)
Then, in 3D view, the left mouse button could be panning (without SHIFT being pressed)
Environment
I'm using Windows. Experience on Mac may be different depending on how the right mouse button is configured.
Additional context
IMHO, mouse buttons should not change their functionality when switching between 2D and 3D. Furthrmore, I believe zooming, panning and rotating/tilting should be possible with mouse only and without touching the keyboard.

We've just been using the ArcBall Camera from vispy with its defaults in 3D with. Agreed the button mapping may not be so intuitive, I think for a long time I didn't even realize Shift dragging was possible. There are also some other cameras like the ly camera that we want to support #1877. So I'm very open to improving these things, just needs some dedicate thought about what the best options defaults are and so am curious what others think too! cc @royerloic who does a lot with 3D I think :-)

We've just been using the ArcBall Camera from vispy with its defaults in 3D with. Agreed the button mapping may not be so intuitive, I think for a long time I didn't even realize Shift dragging was possible. There are also some other cameras like the ly camera that we want to support #1877. So I'm very open to improving these things, just needs some dedicate thought about what the best options defaults are and so am curious what others think too! cc @royerloic who does a lot with 3D I think :-)

imho the current left-click behaviour is intuitive in both cases (rather than intuitive: it matches my expectations of what they should do based on other software). The lack of discoverability about 3D panning is a problem, but I don't think harmonising panning between 2D and 3D is desirable. And anyway it sort of already is harmonised, if you think of 3D as "panning" in a spherical world — which matches e.g. what Google Earth does.
So, I'm -1 on making left click pan in 3D, but +1 on brainstorming about how to make 3D translation easier to discover.
I'm also not sure whether we want rotation about z in 2D to be a first-class citizen...

imho the current left-click behaviour is intuitive in both cases (rather than intuitive: it matches my expectations of what they should do based on other software). The lack of discoverability about 3D panning is a problem, but I don't think harmonising panning between 2D and 3D is desirable. And anyway it sort of already is harmonised, if you think of 3D as "panning" in a spherical world — which matches e.g. what Google Earth does.
So, I'm -1 on making left click pan in 3D, but +1 on brainstorming about how to make 3D translation easier to discover.
I'm also not sure whether we want rotation about z in 2D to be a first-class citizen...

big +1 from me on 3D panning needing to move away from a keyboard + mouse combo, it's been a little pain point for me too (should've raised an issue)
I use ChimeraX quite a lot and watching people use that for the first time I've never seen anyone have any particular trouble
The defaults there are

left click and drag: move camera around current center of rotation
right click and drag (default): move camera perpendicular to camera rays
middle click and drag: move camera perpendicular to camera rays

The right mouse click and drag behviour is configurable (via gui buttons) to a bunch of different things (maybe too many, I only use a few)

Configuring right mouse click and drag to "move active object" changes the behabiour from movement of the camera to movement of the object within the scene. This makes relative positioning of objects in 3D quite natural, you can rotate the scene with the left mouse button, move an "active object" or group of objects with the right mouse button... small demo below

I really like having the panning option still available with middle click and drag whilst the right mouse click and drag is assigned to moving active objects.
I tried to configure napari this way a while ago using https://github.com/napari/napari/blob/master/examples/custom_mouse_functions.py as a starting point but couldn't figure out what to call to have it mirror the shift + left click behaviour
Curious to hear any thoughts!

big +1 from me on 3D panning needing to move away from a keyboard + mouse combo, it's been a little pain point for me too (should've raised an issue)
I use ChimeraX quite a lot and watching people use that for the first time I've never seen anyone have any particular trouble
The defaults there are

left click and drag: move camera around current center of rotation
right click and drag (default): move camera perpendicular to camera rays
middle click and drag: move camera perpendicular to camera rays

The right mouse click and drag behviour is configurable (via gui buttons) to a bunch of different things (maybe too many, I only use a few)

Configuring right mouse click and drag to "move active object" changes the behabiour from movement of the camera to movement of the object within the scene. This makes relative positioning of objects in 3D quite natural, you can rotate the scene with the left mouse button, move an "active object" or group of objects with the right mouse button... small demo below

I really like having the panning option still available with middle click and drag whilst the right mouse click and drag is assigned to moving active objects.
I tried to configure napari this way a while ago using https://github.com/napari/napari/blob/master/examples/custom_mouse_functions.py as a starting point but couldn't figure out what to call to have it mirror the shift + left click behaviour
Curious to hear any thoughts!

The right mouse click and drag behviour is configurable (via gui buttons)

Maybe we could desgin a small dock widget that shows mouse configuration and allows changing it? I did something like that (a decade ago):

The right mouse click and drag behviour is configurable (via gui buttons)

Maybe we could desgin a small dock widget that shows mouse configuration and allows changing it? I did something like that (a decade ago):

That would definitely be cool!
I think something like the existing help -> show keybindings menu but for mouse bindings would probably be useful too? I don't know if having a dock widget for modifying mouse bindings and a separate show mouse bindings floating window makes sense.
Maybe either dock widget or window for both (adding an edit mechanism to the floating window? making the window into a dock widget?)?
It seems like wanting configurability vs. having more discoverable, intuitive defaults in 3d rendering mode are slightly separate issues, with the defualts being probably a quicker fix requiring less thought?
I had a quick look at changing the defaults but had trouble figuring out how all the events connect up. From what I could see, the default behaviour should probably be modified here
Looking at the vispy canvas I can't quite figure out where the modifier key is taken into account and it looks like mouse wheel click events aren't already received
Do people agree on a middle mouse click and drag = move camera, right mouse click and drag = move camera (but configurable) system?

That would definitely be cool!
I think something like the existing help -> show keybindings menu but for mouse bindings would probably be useful too? I don't know if having a dock widget for modifying mouse bindings and a separate show mouse bindings floating window makes sense.
Maybe either dock widget or window for both (adding an edit mechanism to the floating window? making the window into a dock widget?)?
It seems like wanting configurability vs. having more discoverable, intuitive defaults in 3d rendering mode are slightly separate issues, with the defualts being probably a quicker fix requiring less thought?
I had a quick look at changing the defaults but had trouble figuring out how all the events connect up. From what I could see, the default behaviour should probably be modified here
Looking at the vispy canvas I can't quite figure out where the modifier key is taken into account and it looks like mouse wheel click events aren't already received
Do people agree on a middle mouse click and drag = move camera, right mouse click and drag = move camera (but configurable) system?

FYI I've made a napari/docs PR that updates the Viewer tutorial to cover the 3D mode mouse interactions: https://github.com/napari/docs/pull/159/files


Enhancement add example tab with examples that Users can reference for various implementations

ref this discussion https://github.com/LunatiqueCoder/react-native-media-console/pull/120#issuecomment-2286554912
@LunatiqueCoder Moving the conversation over here :)
so, were you just imagining adding a fourth tab? As the bottom Tab navigator?
For example, you'd have:
Home, explore, TV event Info, Examples

Then Examples would contain a list of the examples. Pressing one -> navigates to that specific example/use case/implementation? As described previously in the link above.

Honestly, I haven't thought about anything yet.
The example app is actually the expo-router-with-tv example (which is better described here) with some small changes to work in a monorepo along with the media-console package. I liked that it works for the web, even if react-native-video doesn't support web YET, we can have some things ready for when the time comes.
Anything besides what's implemented there I guess it's a plus. Feel free to go crazy


aws-nuke: 2.21.2 -> 2.22.1

Diff: https://github.com/rebuy-de/aws-nuke/compare/v2.21.2...v2.22.1
Description of changes

Things done

Built on platform(s)

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

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

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

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

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

[ ] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 238548 run on aarch64-darwin 1

1 package built:

aws-nuke


Add API documentation

The datatools package has an intuitive API. At the moment, only the CLI is documented. We are welcoming contributions to the documentation that describe the API.

I would like to take up this. Need more details on the same.


Explain what the optimal line length for content is

A user was asking in the accessibility email group about optimal line length for content. We don't appear to give any recommendations about this.
We should recommend that paragraphs are no wider than 2/3rds the width of a standard page on GOV.UK (assuming you're using the default paragraph font size). This guidance could go with the 'paragraph' section, or perhaps the page layout section too.

Related: https://github.com/alphagov/govuk-frontend/issues/1656
I believe that most guidance I've seen on this refers to the amount of characters (60ish) rather than the size of a page. It's also worth mentioning that on smaller viewports 2/3rds width is full width.

Short sentences
People with some learning disabilities read letter for letter - they do not bounce around like other users. They also cannot fully understand a sentence if it’s too long.
People with moderate learning disabilities can understand sentences of 5 to 8 words without difficulty. By using common words we can help all users understand sentences of around 25 words.

https://www.gov.uk/guidance/content-design/writing-for-gov-uk#short-sentences

Success Criterion 1.4.8 Visual Presentation (Level AAA)
For the visual presentation of blocks of text, a mechanism is available to achieve the following:

Foreground and background colors can be selected by the user.
Width is no more than 80 characters or glyphs (40 if CJK).
Text is not justified (aligned to both the left and the right margins).
Line spacing (leading) is at least space-and-a-half within paragraphs, and paragraph spacing is at least 1.5 times larger than the line spacing.
Text can be resized without assistive technology up to 200 percent in a way that does not require the user to scroll horizontally to read a line of text on a full-screen window.

https://www.w3.org/TR/WCAG21/#visual-presentation (note this is level AAA accessibility regulations require only level AA)

Added some text to explain this: https://github.com/alphagov/govuk-design-system/pull/1152


Add aliyunpan support

aliyunpan isn't path-based, similar to google drive #654.
in addition, seems aliyunpan haven't expose the official api, see here.

Joined their waiting list but no reply yet. Anyone have an internal contact?

I applied too.

Apparently they give no progress

Seems we can add the aliyun drive webdav support first?

Seems we can add the aliyun drive webdav support first?

What is the difference between Aliyun Drive WebDAV and standard WebDAV services?


Feture-> rate limit added, 100 request per minute per IP

Description
Please include a summary of the change and which issue is fixed. List any dependencies that are required for this change.
Fixes #(508)
Replace 508 with the issue number which is fixed in this PR
Checklist

[x] Tests have been added or updated to cover the changes
[x] Documentation has been updated to reflect the changes
[x] Code follows the established coding style guidelines
[x] All tests are passing

Updation .......The server folder is deleted
Can you still work on this ?


Bug: INTERNET NOT REACHABLE! when I connected to internet using by WIFI Direct Hotspot.

Bug report

PdaNet+
NetShare
I've tested those two apps.
I can use internet but sdkman says INTERNET NOT REACHABLE.
To reproduce

install required apps on your phone(Android).
open app, turn on WIFI Direct Hotspot from your phone.
connect to this wifi from mac.
use sdk command that needs internet connection like sdk list java.

System info
 macOS Monterey 12.4
zsh 5.8.1 (x86_64-apple-darwin21.0)
SDKMAN 5.15.0

Hi @luceat-lux-vestra,
I suspect that what you are seeing here is not a bug with SDKMAN but rather a connectivity issue when using curl. Could you confirm that you are able to make the following call from the command line?
curl -vvv https://api.sdkman.io/2/candidates/alive

@marc0der According to
https://sdkman.slack.com/archives/C014YJCLJAW/p1655993955949219
there was a partial outage. Could that be the problem?

Here's curl result.
I think @marc0der you are right.
❯ curl -vvv https://api.sdkman.io/2/candidates/alive

Could not resolve host: api.sdkman.io
Closing connection 0
curl: (6) Could not resolve host: api.sdkman.io

Hi @luceat-lux-vestra,
I suspect that what you are seeing here is not a bug with SDKMAN but rather a connectivity issue when using curl. Could you confirm that you are able to make the following call from the command line?
curl -vvv https://api.sdkman.io/2/candidates/alive

I had this problem with zscaler. Had to copy public zscaler cert files (3 of them) to /usr/local/share/ca-certificates and then run update-ca-certificates. Should fix it for approximately two weeks, since zscaler changes one of the two intermediate certs ever two weeks.


Release v1.0.1 breaks listener notifications for skipped suites

The way notifications work is changed in this PR.
In versions up to and including v1.0.0 a custom RunListener implementation receives the following notifications when a suite is skipped:

org.junit.runner.notification.RunListener#testSuiteStarted
org.junit.runner.notification.RunListener#testIgnored
org.junit.runner.notification.RunListener#testSuiteFinished

With the PR referenced above only the org.junit.runner.notification.RunListener#testIgnored notification is fired for such suites.

Thanks for reporting! We should probably rework this to still send notification, but not print them. :thinking:
I will not have time to work on that anytime soon, so any contributions would be welcome.


Firebase Cloud Functions

Firebase Cloud Functions DB triggers are used for detecting when profile or story are created.
It triggers mechanism for storing activity item for giving user and then calculate new wallet balance based on this activity history.

Thanks, Ben. I'll merge it now.


[NSE-831] Support more expression types in getting attribute

Note: need to add one suite on convertutils


Prevent HTML tags in argument descriptions

Behaviour Before the Fix
An argument document block like:
/**
 * @param mixed $input Only parameter the function will listen to.
 */

Is transformed into:
* $input **mixed** -
Only parameter the function will listen to.

Behaviour After the Fix
With this fix, the same input would be transformed into:
* $input **mixed** - Only parameter the function will listen to.

Related Pull Requests
This pull request is a quick fix related with: !22 and may not be needed with it.

Hi! It's been so long since I've touched / used this project that I no longer feel I should maintain it and potentially introduce new bugs for the people the use this.
So I'm grateful for the PR, but I think this should be left open until someone steps up and is willing to take over maintenance, and potentially field new issues.

Hi! It's been so long since I've touched / used this project that I no longer feel I should maintain it and potentially introduce new bugs for the people the use this.
So I'm grateful for the PR, but I think this should be left open until someone steps up and is willing to take over maintenance, and potentially field new issues.

Thanks for the answer! I'm using phpdoc-md for a side project, which I don't even have time to maintain so I'm not sure if I'd be able to maintain it either. I guess I'll work with a fork from now on, in order to be able to make changes.
PS: Thanks for sharing the repo. It has been pretty useful to me already.

@elcapo sounds like a good compromise. Thanks for the nice words and good luck =)


Documentation for EnergyDiff() is not clear enough

#23 was originally thought to be an implementation bug but actually it was a problem with the documentation misleading the use of EnergyDiff. This should be updated ASAP

Resolved by #26

Resolved by #26


Connecting Databricks SQL using OAuth user-to-machine (U2M) authentication

Is your feature request related to a problem? Please describe.
we are not able to connect Databricks SQL using U2m in Dbeaver , Similar features is available in Visual Studio code
Or is it possible to connect Databricks Sql using AD authentication
Describe the solution you'd like
A clear and concise description of what you want to happen.
Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
Additional context
Add any other context or screenshots about the feature request here.

Hello mates, have similar issue
Sourcing data from Databricks Sql Warehouse Serverless
Generated Service principles for Machine2Machine access with required entitlements on cluster and required ACL Setups
Python apps working perfectly with those service principles but not the DBeaver connectivity.

but not the DBeaver connectivity.

Hello @MrDaggubati
Please provide more details about your connection issues and connection settings.

It's been a while since no update here. If the issue is still actual please let me know and provide additional information.

We will get always if we connect authentication SQL using OAuth user-to-machine (U2M)
Reason:
[Databricks]JDBCDriver Communication link failure.

Does it still actual?

@sdheepakdba

You can use this link https://learn.microsoft.com/en-us/azure/databricks/integrations/jdbc/authentication#–oauth-user-to-machine-u2m-authenticatio, to generate a specific URL like “jdbc:databricks://:443;httpPath=;AuthMech=11;Auth_Flow=2;TokenCachePassPhrase=;EnableTokenCache=0” and use it.
If it doesn’t help, kindly asking to attach error text, screenshots and logs – https://dbeaver.com/docs/dbeaver/Log-files/#standard-log-file-paths

Hi Team,
I given the URL Web authentication screen is not coming

if we use visual studio code same authentication its working perfectly

Thank you for reply

We can try to add this OAuth in the list of available authentications.
We want to implement it in PRO versions.


NullReferenceException when I click in the current position (blue dot)

Hello Torben and thanks for your job.
I have an issue when I click on the blue dot in the current position on iOS
Here the Message log:
System.NullReferenceException: Object reference not set to an instance of an object
  at TK.CustomMap.iOSUnified.TKCustomMapRenderer.OnDidSelectAnnotationView (System.Object sender, MapKit.MKAnnotationViewEventArgs e) [0x00024] in <2db35de2eab74729b46d57fb7793cc08>:0
  at MapKit.MKMapView+_MKMapViewDelegate.DidSelectAnnotationView (MapKit.MKMapView mapView, MapKit.MKAnnotationView view) [0x00014] in /Users/builder/data/lanes/5665/f70a1348/source/xamarin-macios/src/build/ios/native/MapKit/MKMapView.g.cs:1807
  at (wrapper managed-to-native) UIKit.UIApplication:UIApplicationMain (int,string[],intptr,intptr)
  at UIKit.UIApplication.Main (System.String[] args, System.IntPtr principal, System.IntPtr delegate) [0x00005] in /Users/builder/data/lanes/5665/f70a1348/source/xamarin-macios/src/UIKit/UIApplication.cs:79
  at UIKit.UIApplication.Main (System.String[] args, System.String principalClassName, System.String delegateClas

For information, I use the 2.00 stable version...
To wait for the solution, where can I overload the event in order to do nothing when I click on it?
Thanks for your help

fixed in 2.0.1. Thanks for reporting


Mod Incompatibility: Hephaestus

Crashes on startup
Version: 1.20.1
Zenith Version: 0.1.1-1.20.1
Mods: Only Hephaestus and Zenith (with fakerlib and attributes) both mods work fine independently
MC Log: https://mclo.gs/hKX6nvf
MC Crash report: https://mclo.gs/ZprEnJ2
Edit: just realized how out of date Zenith was, updated and I get the same issue
Second Edit: Same crash report appears when using Zenith and Create

Unfortunately they aren't compatible at the moment as the version of porting lib that I'm currently using is incompatible with the version used by Hephaestus, I don't know when this will be fixed.
That being said, there should be versions of create that work fine with this version of porting lib, not sure why you're having issues

I was just made aware of a potential solution to this, called tamango. Install it in mods folder like a normal mod and things should work? Just a note that I haven't tested this personally, was told it works though

That being said, I do plan on updating to the latest porting lib here within the next week or two so it will be compatible by default

Same issue occurs, tamango doesn't(or rather, failed to) fix this issue. I'm using PortingLib 2.1.1163

It's been a bit longer than the promised week or two (got surprisingly busy with life stuff after that comment), but Zenith on latest porting lib is coming soon, which will fix this incompatibility

Look forward to it, been making a fabric modpack over here and it would be awesome to get Hephaestus compat working soon

crash-2024-03-08_18.15.10-client.txt

Updated to lastest porting lib, finally! Update to 1.1.0 for it


Code gets stuck when using mirrored strategy

System information:
Have I written custom code : Yes
OS Platform and Distribution : Linux Ubuntu 18.04
TensorFlow installed from : binary (install from pip)
TensorFlow version (use command below): 2.1.0
Python version: 3.6.8
CUDA/cuDNN version: Cuda Toolkit 10.1 / cuDNN 7.6.4
GPU model and memory: 2 Tesla V 100 16 GB each
Question:
I would like to store different variables and run different tensorflow ops on different devices (GPU/CPU). I want to do this because my model cannot fit on a single GPU. I am trying to train embeddings. I want to place recurring words on all GPUs and non common words on different devices (as a part of preprocessing I do all this) and transfer sentences to respective GPUs.
For the this question I am not pasting my actual code. I am writing a snippet which is close to what I want to do. When I run the code, I do not get any error and neither does it execute successfully. I think the problem is that this code gets stuck (may be deadlock on GPU).
Below is the snippet. For the sake of simplicity say I want to do  y = x * w1 + x * w2 + 2 * w3, where w1, w2 and w3 are trainable variables. I place w1 on GPU0 and w2 on GPU1. Instead of doing the 2 * w3 on a single device say I want to split it and perform on 2 devices (to see how mirrored strategy works). I perform respective computations on respective GPUs. First of all is that a correct way to do it (using mirrored scope to assign devices to variables). Secondly if it is wrong why does tensorflow not throw any error, why is it getting stuck and why is it showing 100% GPU usage?
If i change all the device/scopes to a single GPU it executes (in seconds) successfully but I don't want that. I want to place some variables on single devices and some on both and perform computations as I illustrated below to speed up processing.
import os

#os.environ['TF2_BEHAVIOR'] = '1'
import tensorflow as tf
tf.compat.v1.enable_eager_execution()

#tf.compat.v1.disable_eager_execution()

tf.config.set_soft_device_placement(False)
tf.debugging.set_log_device_placement(True)
import numpy as np

class ProdLayer(tf.keras.layers.Layer):
    def __init__(self, name):
        super(ProdLayer, self).__init__()
        self.w = tf.keras.backend.variable(0.01, name='var_'+ name)

    def call(self, x):
        return x * self.w

class SumLayer(tf.keras.layers.Layer):
    def __init__(self):
        super(SumLayer, self).__init__()

    def call(self, x1, x2):
        return x1 + x2

mirrored_strategy = tf.distribute.MirroredStrategy(devices=["/gpu:0", "/gpu:1"])

class EmbeddingModel(tf.keras.Model):
    def __init__(self):
        super(EmbeddingModel, self).__init__()

        # place w1 on GPU 0 and create the layer
        with tf.device('/gpu:0'):
            self.L1 = ProdLayer('w1')

        # place w2 on GPU 0 and create the layer
        with tf.device('/gpu:1'):
            self.L2 = ProdLayer('w2')

        # place w3 on both GPU0 and GPU1 using mirrored scope. Can I do this?
        with mirrored_strategy.scope():
            self.w3 = tf.keras.backend.variable(0.01, name='var_w3')

        # may be do this on CPU? But for now let it perform this on GPU0
        with tf.device('/gpu:0'):
            self.L3 = SumLayer()

    def call(self, input_layer):
        # w1 is on GPU0, w2 is on GPU1 and w3 is placed using mirrored scope on both GPUs
        # y1 = w1 * x + w3
        with tf.device('/gpu:0'):
            y1 = self.L1(input_layer) + self.w3

        # y2 = w2 * x + w3
        with tf.device('/gpu:1'):
            y2 = self.L2(input_layer) + self.w3

        # y = y1 + y2 (i.e. w1 * x + w2 * x + 2 * w3)
        with tf.device('/gpu:0'):
            y_hat = self.L3(y1, y2)

        return y_hat

def myLoss(y, y_hat):
    return tf.reduce_sum((y_hat-y) * (y_hat-y))

with mirrored_strategy.scope():
    model = EmbeddingModel()
    model.compile(tf.optimizers.Adam(lr=0.0001),
                      loss=myLoss)

train_dataset = np.random.choice(100, size=(1000,))
model.fit(x=train_dataset.astype(np.float32), y=train_dataset.astype(np.float32),
       batch_size=1000,
       epochs=10, shuffle=False, verbose=True)

@StarDust1980
Please provide details about what platform you are using (operating system, architecture). Also include your TensorFlow version.Thanks!

System information
Have I written custom code (as opposed to using a stock
example script provided in TensorFlow): Yes
OS Platform and Distribution (e.g.,
Linux Ubuntu 16.04): Linux Ubuntu 18.04
TensorFlow installed from (source or
binary): binary (install from pip)
TensorFlow version (use command below): 2.1.0
Python version: 3.6.8
CUDA/cuDNN version: Cuda Toolkit 10.1 / cuDNN 7.6.4
GPU model and memory: 2 Tesla V 100 16 GB each

were you able to replicate this issue on your side?

In MirroredStrategy, your model is replicated across each GPU and the variables are kept in sync by applying identical updates. Because copies of all variables in the model are stored on each GPU, it does not sound like MirroredStrategy is suited to your use case where you want to put w1 and w2 on different GPUs.
If your main concern is that the model does not fit on your GPU, you could consider trying the CentralStorageStrategy, which only distributes the compute operations. This strategy will not allow you to split the variables across devices as you have suggested, but it could solve your problem of the embedding being too large to fit on GPU.
Alternatively you could take a look at the mesh-tensorflow library which is designed for model parallelism, where you are splitting the model itself between different devices. If you are interested in learning more about this library, there is a fifteen minute introduction from the TF Dev Summit in 2019.

@StarDust1980 Have you tried using a custom training loop(CTL) instead of the native tf.keras compile and fit? Since you are explicitly placing variables and calling it on specific devices I would suggest using a CTL to give you more extensibility.
If you place any variable creation under MirroredStrategy scope then it is replicated on the devices that you used to instantiate the strategy with. I don't know how compile will behave since we haven't tested this setup which is why you may be seeing your training hang in this setup.

I was mainly trying to figure out if I can have some variables (like w1 and w2) on independent GPUs and some replicated (like w3 - using mirrored strategy). I remember trying CTL but even that froze. Can this be done at all? I mean using mirrored strategy for some trainable variables. In the documentation, you copy all the variables on all the GPUs. I do not want to do that. I just need parts to be replicated.
If it can be done using mirrored strategy, can you provide a dummy snippet which does that (w1 on GPU1, w2 on GPU2 and w3 on both GPU1 and GPU2 using mirroring). The loss/use case doesn't have to make sense. Just want to know if that can be done and how?

@StarDust1980 Here is a snippet that works for me. Notice the commented out code:
`
import tensorflow as tf
gpus = tf.config.experimental.list_physical_devices('GPU')
tf.config.experimental.set_virtual_device_configuration(gpus[0], [
tf.config.experimental.VirtualDeviceConfiguration(memory_limit=1024),
tf.config.experimental.VirtualDeviceConfiguration(memory_limit=1024),
])
mirrored_strategy = tf.distribute.MirroredStrategy(devices=["/gpu:0", "/gpu:1"])
class EmbeddingModel(tf.keras.Model):
def init(self):
super(EmbeddingModel, self).init()
    # place w1 on GPU 0 and create the layer
    with tf.device('/gpu:0'):
        self.L1 = ProdLayer('w1')

    # place w2 on GPU 0 and create the layer
    with tf.device('/gpu:1'):
        self.L2 = ProdLayer('w2')

    # place w3 on both GPU0 and GPU1 using mirrored scope. Can I do this?
    with mirrored_strategy.scope():
        self.w3 = tf.keras.backend.variable(0.01, name='var_w3')

    # may be do this on CPU? But for now let it perform this on GPU0
    with tf.device('/gpu:0'):
        self.L3 = SumLayer()

def call(self, input_layer):
    # w1 is on GPU0, w2 is on GPU1 and w3 is placed using mirrored scope on both GPUs
    # y1 = w1 * x + w3
    with tf.device('/gpu:0'):
        y1 = self.L1(input_layer) + self.w3

    # y2 = w2 * x + w3
    with tf.device('/gpu:1'):
        y2 = self.L2(input_layer) + self.w3

    # y = y1 + y2 (i.e. w1 * x + w2 * x + 2 * w3)
    with tf.device('/gpu:0'):
        y_hat = self.L3(y1, y2)

    return y_hat

def myLoss(y, y_hat):
return tf.reduce_sum((y_hat-y) * (y_hat-y))
with mirrored_strategy.scope(): # This cannot work
# model = EmbeddingModel()
# model.compile(tf.optimizers.Adam(lr=0.0001),
#                   loss=myLoss)

train_dataset = np.random.random((10))
model = EmbeddingModel()
model(train_dataset)
Output
<tf.Tensor: shape=(10,), dtype=float64, numpy=
array([0.02833105, 0.03860711, 0.02790513, 0.02937286, 0.03635627,
0.02511177, 0.03697144, 0.03635903, 0.03183693, 0.03885038])>
`
You can't place EmbeddingModel in strategy scope after specifying the variable scope explicitly. This might have been why the training was not making any progress. Hope this helps unblock your use case.

Hope this was helpful, @StarDust1980. Closing this issue now since an example has been provided.


refactor(core): Add name_fast to new_internal_op2 (unused)

Split from #620

Codecov Report
Attention: Patch coverage is 15.38462% with 11 lines in your changes are missing coverage. Please review.

Project coverage is 82.02%. Comparing base (e42470d) to head (4622daf).

Files
Patch %
Lines

core/extensions.rs
0.00%
11 Missing :warning:

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #625      +/-   ##
==========================================
- Coverage   82.03%   82.02%   -0.01%
==========================================
  Files          96       96
  Lines       23281    23283       +2
==========================================
+ Hits        19098    19099       +1
- Misses       4183     4184       +1

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


 Changing timings to true in the file and using /sponge reload -g did not help either.
This was fixed as follows: I removed the global.conf and let it regenerate, and suddenly /sponge timings on works again. There seem to be two places to enable timings in the old global.conf. Here's the old global.conf file for reference.

@zml2008 you said at one point it's possible to perform upgrades on old configs? We may need to perform such upgrades for bleeding.

Yeah, example of usage in PEX:
Declaring the transformation: https://github.com/PEXPlugins/PermissionsEx/blob/master/permissionsex-core/src/main/java/ninja/leaping/permissionsex/config/ConfigTransformations.java#L51
Applying it: https://github.com/PEXPlugins/PermissionsEx/blob/master/permissionsex-core/src/main/java/ninja/leaping/permissionsex/config/FilePermissionsExConfiguration.java#L70

@zml2008 so we should be versioning our configs for this to work?

Yeah -- generally initial version is considered -1 and counting starts at 0 which is the first transformation.

The first line header comment on the old config reads 1.0, so that might be a good place to start.

@SpongePowered/developers
I'm closing this but with some notes:

When config changes happen in the future, BUMP THE VERSION.
The commit message in-which config changes occurs, decorate it accordingly! Example: "Bump config to 2.0 for per world pig spawns".


Parse query strings the same as Shopify to support array parameters

Shopify does not parse the query string of a request with array parameters the same way as Laravel. While Laravel and most web frameworks parse name[]=value to ['name' => ['value']], Shopify parses it to ['name[]' => 'value']. (When there are multiple parameters with the same name, Shopify will put the values in an array.)
The reason for this is shown in the Shopify docs: they use Rack::Util.parse_query.
require 'rack/utils'

# Use request.query_string in rails
query_string = "extra=1&extra=2&shop=shop-name.myshopify.com&path_prefix=%2Fapps%2Fawesome_reviews&timestamp=1317327555&signature=a9718877bea71c2484f91608a7eaea1532bdf71f5c56825065fa4ccabe549ef3"

query_hash = Rack::Utils.parse_query(query_string)
# => {
#   "extra" => ["1", "2"],
#   "shop" => "shop-name.myshopify.com",
#   "path_prefix" => "/apps/awesome_reviews",
#   "timestamp" => "1317327555",
#   "signature" => "a9718877bea71c2484f91608a7eaea1532bdf71f5c56825065fa4ccabe549ef3",
# }

We've been running into issues with array parameters, and decided to port the Ruby code to PHP to ensure the exact same query string parsing as Shopify uses to create the HMAC signature.

Thanks!

@osiset thanks for merging! We're investigating some other signature validation issues our app is running into and will report back on what those cases are.


fix:menu-not-collapsing

Resolve menu not collapsing
#5500
Please read and mark the following checklist before creating a pull request (check one with "x"):

[x] I read and followed the CONTRIBUTING.md guide.
[x] I read and followed the New Feature Checklist guide.

Short description of what this resolves:
The side menu now collapses when clicking outside of its region and when navigating via its links

Could someone please review my PR? 😄 @nnixaa @bradoyler @KostyaDanovsky @malashkevich @lugovsky

can someone please resolve this ticket, please?

Hi @leonlafa, thanks for the contribution! I'd rather see this as a feature of the sidebar itself, not as part of ngx-admin.
Sidebar already detects menu clicks to expand if needed (see sidebar source). So it also could do the opposite and automatically compact/collapse as proposed in the original issue (#5500).
A few things to notice:

It should take into account current media breakpoint and compact/collapse only if it needs to. Like the behavior described in the issue, except that we shouldn't hard code width and rather use compactedBreakpoints, collapsedBreakpoints to chose target state.
We must be able to turn off auto collapse behavior via some configuration input.
While implementing a new feature, please don't use browser api such as querySelector directly (as it's done in onClick method). I believe it could be done in a more Angular way, for example using ContentChild decorator. It would be great to get rid of query selector in onClick method as well.

I'll move the issue to the Nebular repository. We can discuss further design notes there.


Test macOS, Windows builds on pull-requests

Right now the Github Actions CI only tests against a Linux install. This allows PRs that work for Linux to pass, but maybe issues like #1122 to arise with other platforms.
Should we tests against the other platforms? Future CI could look like:

step: gofish lint
if 1. passes, matrix gofish install on all platforms

This would make all builds longer, and requires the downloading of assets twice (once for the lint step, again for the install step -- this could be fixed with asset caching), but would ensure that all platforms have installable binaries.

Is something you would be interested in entertaining @bacongobbler? If not I can close it. nbd.

Please feel free to look into this. I’m on holiday break.

Like most things I under estimated how much work this could be. Couple of issues I've experienced:

Obvious differences between pwsh and bash. Should we use pwsh for Windows or just bash on all platforms? There are some issues with getting gofish tank working in the Linux subsystem because it's not evalable.
We need a way to determine if the Food supports the current architecture/platform. gofish will return 1 if you try to gofish install vagrant on Darwin for example. Easiest way to handle this is regex for os = "darwin". Any good alternatives?

Like most things I under estimated how much work this could be. Couple of issues I've experienced:

Obvious differences between pwsh and bash. Should we use pwsh for Windows or just bash on all platforms? There are some issues with getting gofish tank working in the Linux subsystem because it's not evalable.
We need a way to determine if the Food supports the current architecture/platform. gofish will return 1 if you try to gofish install vagrant on Darwin for example. Easiest way to handle this is regex for os = "darwin". Any good alternatives?

There are some issues with getting gofish tank working in the Linux subsystem because it's not evalable.

huh?
You could try catching that error message and exit if another error message is found.

There are some issues with getting gofish tank working in the Linux subsystem because it's not evalable.

huh?
You could try catching that error message and exit if another error message is found.

huh? It was designed to be eval-able.eval is the primary use case for gofish tank.

Ya, but in Windows' Linux Subsystem and with bash, eval $env.GOFISH_HOME won't work. Would need export style script.
If the Windows tests are to be completely in pwsh (and not using bash/subsystem), gofish.exe tank | iex works juuuust fine 🙂 If we want to use bash in Windows we'll need some sort of alternative to export the env vars.

huh? It was designed to be eval-able.eval is the primary use case for gofish tank.

Ya, but in Windows' Linux Subsystem and with bash, eval $env.GOFISH_HOME won't work. Would need export style script.
If the Windows tests are to be completely in pwsh (and not using bash/subsystem), gofish.exe tank | iex works juuuust fine 🙂 If we want to use bash in Windows we'll need some sort of alternative to export the env vars.


feat(Turborepo): add a debouncer to file hash watching

Description

Testing Instructions

Closes TURBO-2756

[!WARNING]
This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
Learn more

#7904  👈
#7868
#7855
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @gsoltis and the rest of your teammates on  Graphite


Getting a warning for 'compile' is obsolete

using release 3.4.0 in studio 3.3.2
I get the following message on build

WARNING: Configuration 'compile' is obsolete and has been replaced with 'implementation' and 'api'.
It will be removed at the end of 2018.

This is the offending line:
compile (name:'Branch', ext:'aar')
Changing to the following resolves:
implementation (name:'Branch', ext:'aar')

That's a maintenance release for users who cannot upgrade.  I believe the 4.x series has that change.
@codinronan

@powysm @echo-branch That is correct; the 3.x releases are intended to be backwards compatible with older Android Studio + Older Xcode, meaning we aren't changing things like compile vs implementation and CocoaPods support.
The rules.gradle file was removed in the 4.x releases and uses the defualt Cordova config (which uses implementation) so it no longer has that error.
The 4.x releases are 100% up to date and don't have those warnings.


Assembler / Compilation problems on older Ubuntu / Debian versions

It seems we have problems compiling Acton on older versions of Ubuntu & Debian. Presumably with an older build toolchain. @aagapi saw it on Ubuntu 18.04 (also see #378). I have seen it on debian:stretch.
Here's a simplified example, compiling our builtin.c using minimum set of flags and we see errors like this:
root@06131d06e20b:/acton# cc -c builtin/builtin.c -obuiltin/builtin.o
/tmp/ccRKf4UY.s: Assembler messages:
/tmp/ccRKf4UY.s:241: Error: junk `(%rip)' after expression
/tmp/ccRKf4UY.s:298: Error: operand type mismatch for `call'
/tmp/ccRKf4UY.s:308: Error: operand type mismatch for `call'
/tmp/ccRKf4UY.s:335: Error: junk `(%rip)' after expression
/tmp/ccRKf4UY.s:335: Error: operand type mismatch for `lea'
/tmp/ccRKf4UY.s:343: Error: junk `(%rip)' after expression
/tmp/ccRKf4UY.s:350: Error: operand type mismatch for `call'
/tmp/ccRKf4UY.s:356: Error: operand type mismatch for `call'
/tmp/ccRKf4UY.s:362: Error: operand type mismatch for `call'
/tmp/ccRKf4UY.s:404: Error: junk `(%rip)' after expression
/tmp/ccRKf4UY.s:404: Error: operand type mismatch for `lea'
....

I've commented things out etc and it appears that the error stems from the use of $NEW. For example in builtin/class_hierarchy.c, we have the following:
$Serializable $Serializable$new() {
  return $NEW($Serializable);
}

if I simply comment out this, we get fewer errors. Leaving any use of $NEW results in assembler errors.
This is the definition in builtin/common.h:
#define $NEW($T, ...)       ({ $T $t = malloc(sizeof(struct $T)); \
                               $t->$class = &$T ## $methods; \
                               $t->$class->__init__($t, ##__VA_ARGS__); \
                               $t; })

Anything obviously wrong? ;)

@nordlander or @sydow, can you discern why the above would fail? or maybe @aagapi too, since you're a C ninja :)

Seems like the C compiler in use might have a bug in its handling of macro varargs, or in the operator that concatenates macro strings (first occurrence of ## above). Technically it would be possible to circumvent the problem by manually inlining every occurrence of $NEW in the builtin dir, but it amounts to myriads of places in at least 22 files (not counting the test cases).
What gcc version is running here? Does it have a known issue with macro varargs?

BTW, I think the terms used by the gcc docs use for the features in question are variadic macros and token concatenation.

cc version:
root@5adaf600f81a:/acton# cc --version
cc (Debian 6.3.0-18+deb9u1) 6.3.0 20170516
Copyright (C) 2016 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

root@5adaf600f81a:/acton#

Just trying to nail down which line produces the error, I tried removing stuff.
This removes the warning completely:
#define $NEW($T, ...)       ({ $T $t = malloc(sizeof(struct $T)); \
                               $t; })

well, you get a different kind of error in the end...
This emits the same error as the complete block, so it seems it is the second line here that is causing us troubles.
#define $NEW($T, ...)       ({ $T $t = malloc(sizeof(struct $T)); \
                               $t->$class = &$T ## $methods; \
                               $t; })

That line isn't using the variadic macro, right? That's just on the line after, so this is maybe simpler? Or am I reasoning about this wrong?

The macro def is actually spread out over 4 lines (notice the \ before each newline), so it's still the expansion of the variadic $NEW that triggers the bug. But in any case I think you've actually narrowed down the problem to the token concatenation operator, since that's the only thing one can suspect on line 2.
What happens here is that if $NEW is invoked as $NEW($dict,hashwit,wit,iterable), for example, the second line of the expanded code will become
    $t->$class = &$dict$methods;

The ## operator in the macro simply concatenates the first macro parameter $T (which has value $dict in the example) with the constant string token $methods, removing any white space in the process.
So it appears that token concatenation is broken in gcc 6.3.0, or maybe specifically concatenation of tokens that start with $. Can you run gcc with the -E option on file builtin/dict_impl.c and search for the pattern 51 "dict_impl.c in the output? If that works it would be interesting to see the 3 lines that follow the matched text.

Yes yes, I know it's a single macro. After finding it had to do with $NEW, I was just trying to nail down which part of it was causing the assembler errors. The statements in it are after all spread out across multiple lines, so I still think it makes sense to refer to them as lines :)
I don't see a 51 "dict_impl.c line at all. I created a gist of the dict_impl.c file I have in this branch (just to be sure there are no differences) and the output of gcc -E on that file, see https://gist.github.com/plajjan/205b11ea1d691219447fa3544dda535a

Ah, I should ha realized that without a previous cd builtin, the pattern to look for must be 51 "builtin/dict_impl.c. But anyway, the generated output looks just right; in particular the statement $t->$class = &$dict$methods looks exactly as it should.
Still, the bad assembler output must somehow be caused by code like line 7557 in the gist above, and similar places. Perhaps the next step drilling forward would be to inspect the actual assembly code. Running gcc -S builtin/builtin.c -o tmp.s should produce a file tmp.s with the same contents as the file /tmp/ccRKf4UY.s above. Would be interesting to see what lines 241, 298, etc, actually look like.
Googling the error text shows some indication the problem is related to the Intel vs. AT&T assembly syntax traditions, but since it's all triggered by a specific line in the $NEW macro there must be more to it...

@nordlander IIRC you have docker installed on your machine, no?
Go into your acton dir, then:
docker run -it --name stretch -v $(pwd):/src debian:stretch
and you will get a shell in a docker container running debian stretch, which has this problem. Run apt-get update and install gcc, make etc apt-get install gcc make; then try building.
I ran the command you provided to produce tmp.s and uploaded it to the same gist - https://gist.github.com/plajjan/205b11ea1d691219447fa3544dda535a

I can confirm the assembler error also happens on a clean Ubuntu 18.04.6 LTS install, which comes with gcc 7.5.0 (so newer gcc than Kristian's 6.3.0 on the old Debian). The error does not happen on Ubuntu 20.04.3 LTS, which comes with gcc 9.3.0. So the problem was fixed somewhere between gcc versions 7.5.0 and 9.3.0.
By the way, the build from source still fails on Ubuntu 20.04.3 LTS after that, due to 2 reasons:

3 lines in builtin/minienv.c give warning "ignoring return value of [...], declared with attribute warn_unused_result". This is fixable by not treating -Wunused-result as a build error in the Makefile
The lack of libmd dependency on stock Ubuntu installations (fixable by adding 'apt install libmd-dev' in dependency list for Ubuntu)

Also, for the build to work in the beginning on Ubuntu (18 or 20), it required a "sudo stack upgrade" before running make, as on the stack version installed by default by the Ubuntu package manager, the download of the Haskell lts-18.12 build plan was failing druin make from raw.githubusercontent.com. This is fixed by bumping up the Haskell stack version.

Should we just switch to compiling things with clang instead of gcc?

So I'll close this with a wont-fix.
Out of all the things we need to fix around Acton, attempting some level of compatibility with older distributions is just not very important. If someone is reading this, thinking that it should be fixed and you are willing to spend the time, feel free; go ahead. The contribution is very welcome. However, for the core Acton dev team, we need to prioritize other things. This is so low priority that it won't get any attention in years, thus I prefer closing it.


Incorrect number of return variables from extract_basis()

It should be a tuple of five None not four in extract_basis if you get an exception:
https://github.com/Gurobi/gurobi-modelanalyzer/blob/master/src/gurobi_modelanalyzer/results_analyzer.py#L578
return None, None, None, None
should be changed to
return None, None, None, None, None

Good catch! I'll fix that momentarily.


Make sure only one category of a taxonomy can be assigned to a [rec/action/user] of taxonomy.allow_multiple is false

currently it appears that the server allows making multiple connections even if taxonomy.allow_multiple is false

[ ] actually instead of returning an error when a previous association exists, the server should simply remove the previous association and replace it with the new one

[ ] now there may be cases where the client is requesting the removal of an existing association at the same time as requesting the creation of new one, which -when implementing the above- may result in the request to remove a link that was already removed by the server. thus to prevent returning an error the request to delete a non-existing association should yield a positive response

duplicate of https://github.com/impactoss/impactoss-server/issues/286