feat!: Remove launch configuration support, add support for ignoring desired_capacity

Description

Remove support for launch configuration
Add additional autoscaling group idc (ignore desired changes) as well as a new variable ignore_desired_capacity_changes to allow  users to opt into an autoscaling group that will ignore desired_capacity
Update variables to expand use of lt_xxx abbreviation to launch_template_xxx
See UPGRADE-5.0.md for comprehensive list of changes

Motivation and Context

Users have often asked for the addition of ignoring desired_capacity but unfortunately it cannot be parameterized. With the removal of launch configurations, it seems reasonable enough to add in this additional bit of logic in order to accommodate both options
There has also been confusion over which settings are launch config vs launch template (user data is the most common one); this change removes any of that ambiguity and confusion
In addition to the statement above, with these changes we are now able to replace a lot of the duplicated logic in https://github.com/terraform-aws-modules/terraform-aws-eks/pull/1680 . If this change is merged, I intend to do the following:

Update the self_managed_node_group sub-module to remove the launch template and autoscaling group configurations and replace with this module. This is now possible due to the addition of ignore_changes  = [desired_capacity]
Update the eks_managed_node_group sub-module to remove the launch template configuration and replace with this module. In hindsight, there is no need to duplicate the custom launch template configuration there while this module provides the means to create a standalone launch template without an autoscaling group

With these two changes, we are then able to offload even more complexity and logic from the core EKS module and centralize the changes in the appropriate modules (i.e. - if a new feature is added to launch templates then we can update this module and propagate to the EKS module)
Breaking Changes

Yes!  Launch configuration support is no longer provided now that AWS has stated that they are no longer adding/updating the APIs for launch configurations (launch templates are the successor). In its place, a second autoscaling group that is identical to the default has been added - the only difference between the two is that the second ASG now ignores desired_capacity changes to allow users to utilize autoscaling without reverting or showing up in Terraform plans/applies.

How Has This Been Tested?

[x] I have tested and validated these changes using one or more of the provided examples/* projects

Shhhh

@bryantbiggs
Ops, I see that this one should have been merged around the same time as #179 . Could you finish this one and release version 5.1 right away?

ok should be all set @antonbabenko

This PR is included in version 5.1.0 :tada:


⚠ SceneTime has degraded performance

In 80514d8, SceneTime ($ST) experienced degraded performance:

HTTP code: 200
Response time: 1397 ms

Resolved: SceneTime performance has improved in 113bf16 after 8 minutes.


Not access https://pub.dartlang.org/

It has been days now and still can not access  https://pub.dartlang.org/.
Location: Brazil
OS: Windows 10
ping https://pub.dartlang.org/
A solicitação ping não pôde encontrar o host https://pub.dartlang.org/. Verifique o nome e tente
novamente.

curl -v https://pub.dartlang.org
* Rebuilt URL to: https://pub.dartlang.org/
*   Trying <IP_ADDRESS>...
* TCP_NODELAY set
* connect to <IP_ADDRESS> port 443 failed: Timed out
* Failed to connect to pub.dartlang.org port 443: Timed out
* Closing connection 0
curl: (7) Failed to connect to pub.dartlang.org port 443: Timed out

https://www.dartlang.org/- YES
https://dartlang-pub.appspot.com/ - YES
https://dartpad.dartlang.org/ - NO
https://news.dartlang.org/ - NO
Base: https://github.com/dart-lang/pub-dartlang-dart/issues/1767

Solution: https://www.wiknix.com/how-to-fix-err_connection_timed_out-error/#Solution_1_Reset_Your_Internet_Connection


[Explicit modules] extraPcmArgs may be omitted by the Swift frontend

@swift-ci please test

@owenv provided the proper fix in https://github.com/apple/swift-driver/pull/163


good it's been released

I also tried to pick up the item that dropped with the amount 9999, and after I picked it up there was no item observer detection notification in the chat

.

😊


BusTool: collect features for busTool- Wrapper

eventually, a busTool wrapper should overtake most (or all) precalculations for our spiceEV inputs. Right now some features are already implemented in the "generate_distributed_charging.py" script in branch "feature/generate_bustool".
The boxes with a checkmark are right now already covered in the given generate script and could be moved.

[x] read input csv's
[ ] only select certain rotations (? is this useful?)
[ ] check input file (for correct column names etc)
[x] add datetimes (eg. if time is given by hours of the day)
[x] add charging types (if not given)
[x] calculate trip and rotation consumption
[x] assign vehicles_id

moved to ebus toolbox https://github.com/rl-institut/eBus-Toolbox/issues/19


Spelling plugin not working

Hi! I'm sorry if this is trivial, but I can't get the spelling plugin to work.
Whenever I move my cursor to any word, and press z= the default neovim's fullscreen is displayed. All the other plugins are working.
My configuration is exactly the same as the default configuration shown in the README, the only difference is that plugins.spelling.enabled is (obviously) set to true.
Things I tried:

Moving the configuration to packer.nvim's use function, like this:

use {
  'folke/which-key.nvim',
  config = function()
    require('which-key').setup {
      plugins = {
        spelling = {
          enabled = true,
          suggestions = 20,
        },
      }
    }
  end
}

Setting vim.o.spell to true. When it was false, I just enabled it via :set spell. Didn't work either way. It seems it doesn't matter how I enable neovim's spelling.
To see if my configuration wasn't being loaded, I disabled the registers plugin (plugins.registers = false), but on reloading neovim, it got disabled, so my configuration is loading.
:checkhealth which_key just complains about some conflicting keymaps.

Is there anything else I'm not doing that I should? Thanks! Awesome work, BTW.
Neovim version

NVIM v0.5.0-dev+1354-ga282a177d

Your configuration seems correct. Really weird it's not working for you.
What does :nmap z= give?

It says v:lua.package.loaded.spellsitter._wrap_map('z='), so yeah, spellsitter was the one causing the spelling plugin to fail. Fixed that and now the plugin is working. I didn't think of checking that, thanks.

Great, glad you got it fixed!


fix CVE-2021-43565

The related issue: stolostron/backlog#18854
Signed-off-by: zhujian<EMAIL_ADDRESS>

/assign @elgnay @ldpliu

/approve
/lgtm


feat(llms): add streaming support to textgen

Description: Added streaming support to the textgen component in the llms module.
Dependencies: websocket-client = "^1.6.1"

I am confused about the missing package, is websocket-client/websocket not a required dependency?
https://github.com/langchain-ai/langchain/blob/4c2de2a7f28442896e06a6fc7c807cf611b0c780/poetry.lock#L3699-L3708

Added websocket-client = "^1.6.1" as a dependency

Fixed the linting error, but need helping with adding the dependency as possibly an optional dependency.
Tagging @eyurtsev for help with dependencies.

Fixed dependency error with optional import when streaming is used.
All workflows passing on fork

looks awesome, thanks @uetuluk!


Write a reusable python function to obtain and refresh temporary AWS credentials in Jupyter Notebooks

As a user, I want to download data from an S3 bucket that is a part of my venue
This is currently possible by storing AWS access keys in Jupyter Notebooks. But the Jupyter Notebook user has to use AWS credentials that are different from Cognito tokens, which doesn't create a seamless user experience.
Therefore, it is required to create a reusable python function to obtain and refresh  temporary AWS credentials in Jupyter Notebooks.
References:
Accessing AWS services using an identity pool after sign-in - Amazon Cognito
Getting credentials - Amazon Cognito
CognitoIdentity — Boto3 Docs 1.24.68 documentation

Implemented  a reusable python function get_aws_creds_from_cognito_id_token(cognito_identity_pool_id, cognito_user_pool_id, aws_account_id, region, cognito_id_token) to get temporary AWS credentials with a Cognito ID token. Also, a Jupyter Notebook was created to demonstrate this function. The related code and documentation is available at:
https://github.com/unity-sds/unity-cs-security/tree/main/code_samples/jupyter/identity_pool_aws_creds
Also, there are changes made in the customer authenticator code added in JupyterHub config file to pass aditional environment variables:
https://github.com/unity-sds/unity-ads-deployment/blob/custom-authenticator/dev_env/jupyterlab/jupyter_config.yaml
The following path contains a related python function that is used to get and refresh Cognito tokens:
https://github.com/unity-sds/unity-cs-security/tree/main/code_samples/jupyter/get_and_refresh_tokens


Add support for --follow option for logs command

This "streams" the logs with a single command.

So i'm thinking to do this, we will join the logs together based on timestamp. Like docker-compose does to print logs.
Maybe we even make that the only way we print logs? Thoughts?

That sounds good.  Idea:
$ harbor-compose ps
CONTAINER ID        NAMES                         IMAGE                                       STATUS
e65f569ee7d6        harborcomposedemo_web-app_1   registry.services.dmtio.net/web-app:1.0.1   Up 16 hours
CONTAINER ID        NAMES                         IMAGE                                       STATUS
abcf569ee7d6        harborcomposedemo_web-app_2   registry.services.dmtio.net/web-app:1.0.1   Up 16 hours

then
$ harbor-compose logs e65f569ee7d6

ooh I like that.


Added Thomas Herman to Contributors.md

@thomasherman, I'm quite elated about your PR. I wanna evolve this project to addresses various problems faced by first time contributors. I'd love to learn about your journey in open source community, the problems, pain points you had etc.
Could you explain how you felt when you went through the tutorial, made a PR and learned that I accepted it?


Bot owner and moderator role

Allow users to be assigned moderator roles within the bot.
Owner: The person who invited the bot into the channel. This person is also a moderator, and cannot be removed from moderation by anybody.
Moderator: A person added by the owner or another moderator. Cannot be removed by another mod, but can be removed by the owner.
For the current system, both Owner and Moderator roles will enable people to add people to the ricklist, so they can get rickrolled when interacting with the bot in private

Since I'm thinking about adding Twitch bot support, I should review the Twitch docs to make sure that it's feasible to do something like this within both Twitch and Discord.


create command fails under deno v.1.12.2 due to incompatible std library

Hi,
When running vno create under deno 1.12.2 and vno 1.4.3 on a fresh install on Mac OS Catalina and Windows 10,
an error occurs:

Are you creating a universal app(SSG/SSR) or spa(Single Page App)? [universal/spa] spa
error: Uncaught (in promise) TypeError: Must be a file URL.
throw new TypeError("Must be a file URL.");
^
at Module.fromFileUrl (https://deno.land/std@0.83.0/path/posix.ts:484:11)
at create (https://deno.land/x/vno@v1.4.1/core/cli/commands.ts:47:27)
at async main (https://deno.land/x/vno@v1.4.1/install/vno.ts:31:36)

This is due to a incompatibility with std 0.83 which changes the way path.fromFileUrl expects a parameter.
A P.R. has been created which upgrades the deps.ts file for that component to 0.98.0 as stated in another P.R which did the exact same thing but forgot about this part of the library.

We removed those lines in v1.4.3, those error logs are showing for v1.4.1. Could you try using vno with<EMAIL_ADDRESS>

It works with specifying that version now 🤔
I have been stuck since last week with that issue. I even cleared the whole cache and re-installed vno following the README instructions and still had that issue happening.
Could it be that my install script was still pulling the previous version?
Once I forked it and created that change the whole command started working as expected.
That's great to hear that you removed these deps here, as I like deno's approach to dependencies but due to how fast the code evolves it also forces us to update fast.
Do what you will with the P.R. and this ticket, thanks for the help!

Awesome! We also had that issue where it was pulling previous versions from deno.land. May be an issue with how things are getting cached.


Remove vector causes error, only for "Normalised" distance types

Summary
When calling index.remove(<id>), an error occurs, but only with the following distance types:

Normalized L2
Normalized Angle
Normalized Cosine

I first reported this bug on the ngt-rs project, but following comments by @lerouxrgd I decided to make a reproducer here. Note that since the same errors occur on that project, it is impossible that the error is in the Python wrapper.
Reproducer
Here is a small file to reproduce the error. To setup the venv and install deps:
$ python3.10 -m venv venv
$ source venv/bin/activate
(venv) $ pip install -U pip wheel ngt

These are the versions I have installed in my venv:
$ pip list
Package    Version
---------- -------
ngt        2.1.3
numpy      1.26.1
pip        23.3.1
pybind11   2.11.1
setuptools 59.6.0
wheel      0.41.3

To run the file below, simply:
(venv) $ python main.py

Here is the file below.  The important part is the function run_test().
import ngtpy
import traceback

def run_test(distance_type: str):
    # Create the index
    ngtpy.create(b"tmp", 3, distance_type=distance_type)
    index = ngtpy.Index(b"tmp", zero_based_numbering=False)

    # Insert vectors
    id1 = index.insert([1.0, 2.0, 3.0])
    id2 = index.insert([40.0, 5.0, 6.0])
    index.build_index(2)
    index.save()

    # Search once
    query = [1.01, 1.02, 1.03]
    results = index.search(query, 1)
    assert results[0][0] == id1

    # Remove a vector - PROBLEM
    index.remove(id1)

    # Search again
    results = index.search(query, 1)
    assert results[0][0] == id2

distance_types = [
    "L1",
    "L2",
    "Normalized L2",
    "Angle",
    "Normalized Angle",
    "Cosine",
    "Normalized Cosine",
    "Hamming",
    "Jaccard",
]

for distance_type in distance_types:
    try:
        print()
        run_test(distance_type)
    except Exception as e:
        print(f"{distance_type=:<20}Error: {e}")
        traceback.print_exc()
    else:
        print(f"{distance_type=:<20}OK")
    finally:
        # Clean up the temporary directory
        import pathlib, shutil
        p = pathlib.Path("./tmp")
        if p.exists():
            shutil.rmtree(p)

This produces the following output:
distance_type=L1                  OK

distance_type=L2                  OK

distance_type=Normalized L2       Error: /NGT/release/NGT/lib/NGT/Index.h:remove:1544: Not found the specified id
Traceback (most recent call last):
  File "/home/caleb/tmp/ngtbugpy/main.py", line 43, in <module>
    run_test(distance_type)
  File "/home/caleb/tmp/ngtbugpy/main.py", line 22, in run_test
    index.remove(id1)
RuntimeError: /NGT/release/NGT/lib/NGT/Index.h:remove:1544: Not found the specified id

distance_type=Angle               OK

distance_type=Normalized Angle    Error: /NGT/release/NGT/lib/NGT/Index.h:remove:1544: Not found the specified id
Traceback (most recent call last):
  File "/home/caleb/tmp/ngtbugpy/main.py", line 43, in <module>
    run_test(distance_type)
  File "/home/caleb/tmp/ngtbugpy/main.py", line 22, in run_test
    index.remove(id1)
RuntimeError: /NGT/release/NGT/lib/NGT/Index.h:remove:1544: Not found the specified id

distance_type=Cosine              OK

distance_type=Normalized Cosine   Error: /NGT/release/NGT/lib/NGT/Index.h:remove:1544: Not found the specified id
Traceback (most recent call last):
  File "/home/caleb/tmp/ngtbugpy/main.py", line 43, in <module>
    run_test(distance_type)
  File "/home/caleb/tmp/ngtbugpy/main.py", line 22, in run_test
    index.remove(id1)
RuntimeError: /NGT/release/NGT/lib/NGT/Index.h:remove:1544: Not found the specified id

distance_type=Hamming             OK

distance_type=Jaccard             OK

Comments

My personal interest is in Normalized Cosine
I am actually using ngt-rs, the rust wrapper. But I figured it will be much easier for you to work with a Python reproducer.

Note the results are the same if zero_based_numbering is set to True.

Thank you for your feedback. I was able to reproduce the issue you mentioned. However, it will take a little while to fix it, because of its complicated situation.

I have released v2.1.5 to resolve this issue.

I have integrated this change to ngt-rs (on master branch), however it looks like there is still an issue with Lorenz and SparseJaccard as I get the following error:
cargo test

test ngt::index::tests::test_dist_sparse_jaccard ... FAILED
test ngt::index::tests::test_dist_lorentz ... FAILED

failures:

---- ngt::index::tests::test_dist_sparse_jaccard stdout ----
Error: Error("Capi : ngt_insert_index_as_float() : Error: /home/rgd/dev/projects/ngt-rs/ngt-sys/NGT/lib/NGT/ObjectRepository.h:allocatePersistentObject:345: ObjectSpace::allocatePersistentObject: Fatal error! The dimensionality is invalid. The specified dimensionality=3. The specified object=2.")

---- ngt::index::tests::test_dist_lorentz stdout ----
thread 'ngt::index::tests::test_dist_lorentz' panicked at src/ngt/index.rs:728:23:
index out of bounds: the len is 0 but the index is 0
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

These two distances are different from other distances. When using distances, the given vector data must follow the specific manners for the two distances. You may want you to remove the two distances from your test.

Thanks for the precision, I have removed them from the test and released the fix.

Thanks everyone 👏🏼


feat(parser): parse dollar quoted string

I hereby agree to the terms of the RisingWave Labs, Inc. Contributor License Agreement.
What's changed and what's your intention?
This PR cherry-picks the feature of parsing dollar-quoted string from the upstream sqlparser-rs.
This syntax may be used for inline scripts in other languages, for example:
create function ... language python as $$
def int_42():
    return 42
$$

Checklist For Contributors

[x] I have written necessary rustdoc comments
[x] I have added necessary unit tests and integration tests
[x] I have added fuzzing tests or opened an issue to track them. (Optional, recommended for new SQL features #7934).
[x] I have demonstrated that backward compatibility is not broken by breaking changes and created issues to track deprecated features to be removed in the future. (Please refer to the issue)
[x] All checks passed in ./risedev check (or alias, ./risedev c)

Checklist For Reviewers

[ ] I have requested macro/micro-benchmarks as this PR can affect performance substantially, and the results are shown.

Documentation

[x] My PR DOES NOT contain user-facing changes.

Hmm, maybe we can run the python script inside of WASM after all ... https://www.fermyon.com/blog/python-wagi#:~:text=Python is the second most,side WebAssembly app in Python. :innocent:


feat: add pull requests widget to overview page of the component

Add Pull Request widget card
This PR adds a "Pull Request" widget/card to overview view.
It seems that "Pull Request" plugin is already installed on the sample app but plugin is not presented on the UI anywhere.
Of course widget only renders when available.

:heavy_check_mark: Checklist

[ ] A changeset describing the change and affected packages. (more info)
[ ] Added or updated documentation
[ ] Tests for new functionality and regression tests for bug fixes
[x] Screenshots attached (for UI changes)

@marcuseide done 👍


fix(dayView): expand the usage of vm.dayViewEventChunkSize to expose …

…the hour part height
There were some hard coded 30px height values that prevented me from dynamically resizing my hour parts in the day view.
I noticed that the dayViewEventChunkSize was used elsewhere, this PR just extends that usage.

Codecov Report

Merging #620 into master will not change coverage.
The diff coverage is 100%.

@@           Coverage Diff           @@
##           master     #620   +/-   ##
=======================================
  Coverage   95.94%   95.94%
=======================================
  Files          26       26
  Lines         715      715
=======================================
  Hits          686      686
  Misses         29       29

Impacted Files
Coverage Δ

src/directives/mwlCalendarDay.js
100% <ø> (ø)
:arrow_up:

src/services/calendarHelper.js
100% <100%> (ø)
:arrow_up:

Continue to review full report at Codecov.

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

The followup commit exposes the "overlap" option within interact.  I needed to do this because there is a conflict when the dropzone window and the hour part windows are exactly the same size that requires the 'center' value to be used.  The 'pointer' value is retained as the default.


Add infrastructure for releasing deployment considerations as a fixed doc

Sample PDF output attached. Detailed instructions are in the readme, but as long as you have GNU make and docker, you should be able to just run make pdf or make html. That will give you an auto-generated version tag in the title. If you want to set a specific version tag, you can do RELEASE_VERSION=foo make pdf or RELEASE_VERSION=foo make html.
uptane-deployment-considerations-release.pdf
Pinging @iramcdonald because I know you wanted us to have a nice way to version deployment considerations docs.

@mnm678 I'm going to let you review this first, since you have been working on this. Also, other than the README, it appears to be mostly code. @tkfu I assume this would automate the task?
I reviewed the PDF output very quickly and I do have things I would like modified. We need to add a Table of Contents (we don't have a markdown file for that but one could be added) And, we need to distinguish between Major Sections. I'd be happy to point out these things.

@mnm678 I'm going to let you review this first, since you have been working on this. Also, other than the README, it appears to be mostly code. @tkfu I assume this would automate the task?
I reviewed the PDF output very quickly and I do have things I would like modified. We need to add a Table of Contents (we don't have a markdown file for that but one could be added) And, we need to distinguish between Major Sections. I'd be happy to point out these things.

LGTM, with a few caveats:

I agree with Lois about needing a table of contents.
Figure 3.How Primaries would interact with the Director repository is weirdly off-centered.
The changelog at the end doesn't have a header, and in the previously generated version, that was at the start of the document. I'm not invested in a specific ordering, but if there were specific choices made for good reasons, we should be consistent.
The text about being a Linux Foundation JDF project is missing. I don't think we ever decided on a perfect place for that, but @jhdalek55 did something to pull that in before.

LGTM, with a few caveats:

I agree with Lois about needing a table of contents.
Figure 3.How Primaries would interact with the Director repository is weirdly off-centered.
The changelog at the end doesn't have a header, and in the previously generated version, that was at the start of the document. I'm not invested in a specific ordering, but if there were specific choices made for good reasons, we should be consistent.
The text about being a Linux Foundation JDF project is missing. I don't think we ever decided on a perfect place for that, but @jhdalek55 did something to pull that in before.

Yup, we can iterate and improve on the final output format. This PR isn't about making sure we can generate a ready-to-release document, it's just to get the necessary tooling into the repo so that we can work towards getting the output we want.

Yup, we can iterate and improve on the final output format. This PR isn't about making sure we can generate a ready-to-release document, it's just to get the necessary tooling into the repo so that we can work towards getting the output we want.

@tkfu I understand that this PR is about the mechanism and not the content. Just interjecting here that there was an agreed upon Table of Contents for this document that must be included. No need to do anything about it just now, but when you are ready to actually release this document, some of the things I mentioned and that @pattivacek pointed out will need tp be addressed.

@tkfu I understand that this PR is about the mechanism and not the content. Just interjecting here that there was an agreed upon Table of Contents for this document that must be included. No need to do anything about it just now, but when you are ready to actually release this document, some of the things I mentioned and that @pattivacek pointed out will need tp be addressed.

At the risk of sounding a bit foolish, @tkfu what specifically did you want me to review (since this PR is largely formatting code)?

At the risk of sounding a bit foolish, @tkfu what specifically did you want me to review (since this PR is largely formatting code)?

Oh, I didn't notice you were a requested reviewer @jhdalek55. I think github added you by default and I didn't see it. Feel free to ignore.
@mnm678, thanks for the tip--I added that to the makefile.

Oh, I didn't notice you were a requested reviewer @jhdalek55. I think github added you by default and I didn't see it. Feel free to ignore.
@mnm678, thanks for the tip--I added that to the makefile.


Style improvements for pagination and toolbar

I used react-bootstrap elements where I could and tried to use whitespace better.

@frontsideair, react-bootstrap-table doesn't depended on react-bootstrap,  it only depends on dev. So can you provide another solution for it? However, I don't want to depend react-bootstrap with react-bootstrap-table.

Sorry, I assumed react-bootstrap was a production dependency. I'll take a look at it as soon as possible.

that's ok, take your time :)  Thanks very muck :+1:


Java Swing Calculator

This Pull Request resolves Issue #
Description:
In this Pull Request we have done the following additions/edits for the code:
Note: Delete all the text including this!

Make sure you replace #<IssueNumber> with the particular Issue that you are referencing with!
Make sure you describe the Issue properly and ask as many people as possible to review your Pull Request so that it can be merged as soon as possible!

Are there any updates or should we close this PR as spam?

I have moved my Java calculator to GUI_CALCULATOR folder.
On Oct 24, 2017 12:00 AM, "Salman Shah"<EMAIL_ADDRESS>wrote:

Are there any updates or should we close this PR as spam?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/WebClub-NITK/Hacktoberfest-2k17/pull/550#issuecomment-338753956,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AbsdzB3QLKzL1kEl0ybeNlV2Zf1CyZ7vks5svNtRgaJpZM4QB1dE
.


[Bug] Sending two configured user properties results in receiving three

What did I do
I configured MQTTX 1.7 to send with a publish two user properties:

What happened
In the receiving client I receive three user properties:

Expected
I expected to receive only the two configure (see above) user properties.
Environment

OS: MS Windows 10 Enterprise Version 1909 build 18636.1854
MQTTX version 1.7.0

Hi! @MartinL0815 YES! I didn't find this problem before this and this issue is caused by JavaScript Framework Vue.js, I will fix it right away, thanks for your feedback. ref: https://guillim.github.io/vue/2019/03/20/damn-vuejs-observer.html

Fixed on https://github.com/emqx/MQTTX/releases/tag/v1.7.1, I will close this issue.


Improve the GNU ci analysis: display the root test changes too

and it worked for real:
https://github.com/uutils/coreutils/pull/5735#issuecomment-1870723158


KUI webpack UI fails to display on Microsoft Edge browser with v5.1.7

Describe the bug
When displaying our webpack version of KUI served up from a proxy running in a Kubernetes pod container on a Microsoft Edge browser, the UI fails to display due to an error.
SCRIPT1028: SCRIPT1028: Expected identifier, string or number      main.f5ff389ec0d128f0e162.bundle.js (216282,3)
Expected behavior
The UI should display on the Edge browser.
Screenshots

System

Kui version: 5.1.7
Operating system:  Windows 10 Professional

thanks for the bug report. this seems to come about due to an upgrade of a dependence (electron-context-menu) that itself upgrade one of its dependences; that transitive dependence (cli-truncate v2.0.0) included a change that is incompatible with edge. this dependence isn't needed for webpack builds, so we will find a way to remove it. if not, we can always downgrade the version of that dependence.

Problem still persists on v5.1.9

thanks! can you try to figure out the call stack that leads to this error?

Can you point a browser against your webpack sample?  That might make it easier to find in your own test environment?

i'm still trying to figure out how to get a windows vm to talk to a web server running on the enclosing host.
i did experiment with a webpack build to see if the offending code would ever load. on firefox, i have yet to see this happen.

KUI 5.1.11 still broken with same syntax issue somewhere else; I think KUI will need to modify the compiler to support these more modern JS features.

This might be helpful to find these issues during dev/test time.
https://github.com/Microsoft/TypeScript/issues/19183#issuecomment-450440200

seems good now. we should figure out how to lock this down.


Retire Jenkins for CI build and test iOS

We are now using GitHub Actions for testing iOS build (https://github.com/mlcommons/mobile_app_open/pull/559) and Xcode Cloud for deployment to TestFlight (https://github.com/mlcommons/mobile_app_open/pull/367). So the Jenkins server can now be retired.

@d-uzlov Would you take this task, since you are already familiar with the Jenkins setup?

I guess the only thing we need to do is shut down servers.
Do you have anything else in mind?

Maybe close the billing of the unused 3rd party service if necessary.

Ok, I'll take it.

We have the following resources that we no longer need:

macincloud dedicated server. Status: requested delete
jenkins VM in GCP. Status: stopped
jenkins VM static IP. Status: working
jenkins DNS entry. Status: working
jenkins github webhooks. Status: working
jenkins github account. Status: working

Billing for macincloud is managed by MLCommons.
Jenkins resources are either part of GCP or just free for us.
I think we should leave it as is for a few days, just in case we remember about something, and later delete everything.

@morphine00 Adding you to the thread.
Once this issue is closed , could you please also close the billing related to this CI. @d-uzlov  has added the item list in the above comment.
Thanks

I've cancelled the MacInCloud subscription today. I believe the machine itself will stay up until the billing cycle is up (3rd of each month), so we can reactive it if we forget something.

Let's keep it running till the billing cycle is up. Then we can close this.

I think it would be ok to close this now.


Requests to webhooks with incorrect code fails with 400 instead of 401

With regular http functions, we correctly get a 401. But with WebHooks, we end up with a 400.
I'm guessing it relates to the auth happening inside the WebHooks SDK instead of our own logic. But regardless, it's not correct.

Yes this error isn't coming from us, its coming from the webhooks library. I'm sure some design thought was given to why that is a 400 and not a 401. @HenrikFrystykNielsen any comment? I'm not sure it would be worth it for us to try to change this via parsing of error messages.


[WIP] expose uint16_codec in eeglab reader (+ minor fixes)

@agramfort
Sorry it took so long, forgot about that.
Now read_epochs_eeglab and read_raw_eeglab expose uint16_codec.
Additional changes:

the warning when multiple events are found in an epoch - is now raised only once, not for each epoch.
minor fixes to the docstrings - verbose arg didn't use | when listing possible input types

TODO:

[ ] test for uint16_codec
[x] maybe a better description of that argument in the docstring - when it's useful etc.
[ ] update what's new

Current coverage is 86.86% (diff: 83.33%)

Merging #3510 into master will increase coverage by <.01%

@@             master      #3510   diff @@
==========================================
  Files           341        341
  Lines         59704      59726    +22
  Methods           0          0
  Messages          0          0
  Branches       9131       9136     +5
==========================================
+ Hits          51858      51880    +22
  Misses         5111       5111
  Partials       2735       2735

Powered by Codecov. Last update de463af...dfd75fd

@jasmainak merge when you're happy
@mmagnuski don't forget the MRG status

@mmagnuski update whats_new.rst and you're ready for merge :)

I'll change to MRG once all the checkboxes are marked :) This should happen before monday.

I'm having problems programmatically creating a file that would test uint16_codec param. Maybe I'm doing something wrong, but I think if I successfully write a file with io.savemat - I will also be able to read it without problems.
But I have some problematic files on my computer (I'm only able to load these specifying uint16_codec - I could edit them in matlab to be really small (one-two channels, two samples etc.) and make sure they still cause the problem and upload them somewhere.
I'm also open to other ideas on how to test this.

you could make a PR here: https://github.com/mne-tools/mne-testing-data/tree/master/EEGLAB and add your problematic file here ... trying to make it as small is as possible by editing it on Matlab

It turns out that if I edit and save the file on my computer the problem disappears - so I currently have no means to create a manageable set file that would reproduce the problem. :(
I think it is also a good indicator that maybe it is not worth having a strict tests - maybe I'll just add a line to tests that demonstrates that using uint16_codec does not break anything?
However - I was able to get the the files (set + fdt) size down to 471B (this is their summed size, but the fdt is just 8B), so I may look into reducting the size of current eeglab testing datasets (if you think it is worth doing).
Just for the record, removing all fields not used by mne eeglab reader helps:
EEG = rmfield(EEG, {'setname', 'filename', 'filepath', 'subject', 'session', 'group', 'condition', 'comments', 'icaact', 'icawinv', 'icasphere', 'icaweights', 'icachansind', 'urchanlocs', 'chaninfo', 'ref', 'urevent', 'eventdescription', 'epochdescription', 'reject', 'stats', 'specdata', 'specicaact', 'splinefile', 'icasplinefile', 'dipfit', 'history', 'saved', 'etc', 'datfile'});
EEG.chanlocs = rmfield(EEG.chanlocs, {'theta', 'radius', 'sph_theta', 'sph_phi', 'sph_radius', 'type', 'urchan'});

It's probably okay to leave the test data as it is.
This is a corner case that we pretty much offload to scipy's routines now, so I think it's okay not to have a great test (no need for new test data if it's not easy), although a smoke test that you can at least pass the parameter would indeed be good.

Ah, and I discovered that trying to read one-channel set file, gives the same error as previously when reading a file with just one event. Is it worth fixing (if you think so I can submit a PR)?

Yeah, it can be part of this one if you want

Ok, so I'll rebase and fix the one-chan issue.

@jasmainak @Eric89GXL
All green, one last thing I could add is a test for one-channel epoched data, but I don't have to if you think it is good already.

looks clean @mmagnuski . Merging, thanks for the fix!

Thanks!


Broken Link: ZephyrProject.Org main page; About->Governance Documents->Charter returns a 404 error.

I need to reference the Zephyr Project Charter.
I used to be able to access it from the ZephyrProject.Org main page; About->Governance Documents->Charter.
https://zephyrproject.org/wp-content/uploads/sites/38/2023/08/LF-Zephyr-Charter-2023.08.21.pdf
But that is now returning a 404 error.
The Charter appears to have been updated because the link I used to have was:
https://zephyrproject.org/wp-content/uploads/sites/38/2020/09/CLEAN-LF-Zephyr-Charter-20200624-effective-20200901.pdf
Where can I access the new Charter?

@Timotheous - it should be fixed now:  https://zephyrproject.org/wp-content/uploads/2023/08/LF-Zephyr-Charter-2023.08.21.pdf is where I'm able to navigate to from the menues.
I'm going to close this now, but please reopen and include how you were navigating to it, if it's still a problem.


[Question]: select CAST(0x0000A47F000F896A AS DateTime);

Contact Details
<EMAIL_ADDRESS>What's the question?
I have a  script of a sqlserver application for init database, with a lot of:
CAST(0x0000A47F000F896A AS DateTime);
I am trying to create a function such as the function in babelfish_extensions/contrib/babelfishpg_common/sql/datetime.sql,
maybe someone can help to see how to deal with it ? or get me some suggestion
Relevant log output or information
1> select CAST(0x0000A47F000F896A AS DateTime);
2> go
Msg 33557097, Level 16, State 1, Server BABELFISH, Line 1
cannot cast type varbinary to datetime

Code of Conduct

[X] I agree to follow this project's Code of Conduct

This StackOverflow question shows the logic for a conversion like this in C#:
https://stackoverflow.com/questions/63940870/convert-hex-value-from-sql-server-to-datetime-in-c-sharp

Hi @suprio-amzn & @robverschoor ,
I just came across a customer database that had over over 1,200 instances of using a combination of converting the a datetime value to varbinary(8) and adding to it an attribute to use for SET CONTEXT_INFO.  They did something like this for auditing transactions with triggers:
CREATE PROCEDURE dbo.example (
      @audittime DATETIME
    , @auditprofileguid UNIQUEIDENTIFIER
)
AS
BEGIN
    DECLARE @context_info VARBINARY(128) =
      CONVERT(VARBINARY(8), @audittime)
      + COALESCE( CONVERT(VARBINARY(16), @auditprofileguid), CONVERT(VARBINARY(16), '') );
    SET CONTEXT_INFO @context_info;
   -- rest of SP code that performs an insert, update, delete action on tables
END

-- Related trigger for tables updated from SP
CREATE TRIGGER "acl_auditing_trigger"
  ON "acl" FOR INSERT, UPDATE, DELETE AS
BEGIN
  SET NOCOUNT ON;
  DECLARE @audittime DATETIME = (CONVERT(DATETIME, SUBSTRING(CONTEXT_INFO(), 1, 8)))
  DECLARE @auditprofileguid UNIQUEIDENTIFIER =
    (CONVERT(UNIQUEIDENTIFIER, SUBSTRING(CONTEXT_INFO(), 9, 16)))
-- rest of trigger code
END

I noticed that there is a new check in from @R4hul04 - https://github.com/babelfish-for-postgresql/babelfish_extensions/commit/4bae2206d966debdbce756c7a6cf562bbd032eee that looks like it may help the scenario. It looks like it only deals with converting strings to binary and varbinary, but doesn't address datetime scenarios like the customer scenario above.
I also noticed that there were no changes to SUBSTRING() which incorrectly is character based and not byte based like SQL Server. For example,  the SUBSTRING(CONTEXT_INFO(), 1, 8) expression returns 8 characters 0x0000b1 and not 8 bytes like SQL Server 0x0000B13C00EF291A. See below for a potential fix.
I'm able to workaround the customer scenarios and hope you can take this example code and create an implementation for Babelfish. . The datetime conversion is tricky with the epoch as '1900-01-01', an adjustment in '2000-01-01' for Y2K, and Noon being special - see below. Note: this is only for datetime. I used Amazon Bedrock with Anthropic Sonnet 3.5 with the Text chat playground with Temperature, K, and P values set to 0 to build out the code over several iterations. I don't know how different smalldatetime, date, time, datetime2, and other date/time types work. I was addressing the customer scenario.
CREATE OR REPLACE FUNCTION sys.datetime_to_binary(arg sys.datetime)
RETURNS sys.bbf_varbinary AS $$
DECLARE
    sql_server_epoch timestamp := '1900-01-01 00:00:00';
    days bigint;
    time_part bigint;
    hex_str text;
    total_ms bigint;
    second_whole bigint;
    second_frac bigint;
BEGIN
    -- Calculate days since 1900-01-01
    IF arg::timestamp < sql_server_epoch THEN
        days := -53690::bigint +
                (EXTRACT(EPOCH FROM (arg::timestamp - '1753-01-01'::timestamp))::bigint / 86400::bigint)::bigint;
    ELSE
        days := (EXTRACT(EPOCH FROM (arg::timestamp - sql_server_epoch))::bigint / 86400::bigint)::bigint;
    END IF;

    -- Calculate time part (300 increments per second)
    IF EXTRACT(HOUR FROM arg::timestamp) = 12 AND
       EXTRACT(MINUTE FROM arg::timestamp) = 0 AND
       EXTRACT(SECOND FROM arg::timestamp)::bigint = 0 THEN
        time_part := x'00C5C100'::bigint;
    ELSE
        -- Break down time calculation to avoid numeric type issues
        second_whole := EXTRACT(SECOND FROM arg::timestamp)::bigint;
        second_frac := ((EXTRACT(SECOND FROM arg::timestamp)::float - second_whole::bigint) * 1000::bigint)::bigint;

        total_ms := (EXTRACT(HOUR FROM arg::timestamp)::bigint * 3600000::bigint) +
                    (EXTRACT(MINUTE FROM arg::timestamp)::bigint * 60000::bigint) +
                    (second_whole * 1000::bigint) +
                    second_frac;

        -- Convert to SQL Server's 300ths of a second ticks
        time_part := (total_ms * 3::bigint) / 10::bigint;
    END IF;

    -- Convert to 8-byte hex
    IF days < 0 THEN
        hex_str := lpad(to_hex((days & x'FFFFFFFF'::bigint)::bigint), 8, '0');
    ELSE
        hex_str := lpad(to_hex(days), 8, '0');
    END IF;

    hex_str := hex_str || lpad(to_hex(time_part), 8, '0');

    RETURN decode(hex_str, 'hex')::sys.bbf_varbinary;
END;
$$ LANGUAGE plpgsql;

CREATE OR REPLACE FUNCTION sys.binary_to_datetime(arg sys.bbf_varbinary)
RETURNS sys.datetime AS $$
DECLARE
    sql_server_epoch timestamp := '1900-01-01 00:00:00';
    hex_str text;
    days bigint;
    time_part bigint;
    day_interval interval;
    time_interval interval;
    day_value bigint;
    ms_value bigint;
BEGIN
    hex_str := encode(arg::bytea, 'hex');

    -- Extract days and time parts
    days := ('x' || substr(hex_str, 1, 8))::bit(32)::integer;
    time_part := ('x' || substr(hex_str, 9, 8))::bit(32)::integer;

    -- Convert from SQL Server's 300ths of a second ticks back to milliseconds
    -- Multiply by 10 first then divide by 3 to maintain precision
    ms_value := (time_part::bigint * 10::bigint) / 3::bigint;
    time_interval := ((ms_value::double precision / 1000.0) * interval '1 second');

    -- Convert days to interval
    IF days < 0 THEN
        -- For dates before 1900, use the correct offsets for SQL Server's representation
        day_value := (days::bigint & x'FFFFFFFF'::bigint)::bigint;
        RETURN ('1753-01-01'::timestamp +
                ((day_value - x'FFFF2E46'::bigint) * interval '1 day') +
                time_interval)::sys.datetime;
    ELSE
        -- Post 1900 dates work as before
        day_interval := days * interval '1 day';
        RETURN (sql_server_epoch + day_interval + time_interval)::sys.datetime;
    END IF;
END;
$$ LANGUAGE plpgsql;

Key Implementation Details for SQL Server datetime Binary Format:
Source: Claude.ai
Binary Structure:
8 bytes total (varbinary/binary(8))
First 4 bytes: Days since base date
Last 4 bytes: Time of day in 300ths of a second (3.33ms increments)
Date Handling:

Base date (epoch): January 1, 1900
Valid range: January 1, 1753 to December 31, 9999
Pre-1900 dates use negative day counts with special offset
Days stored as 32-bit integer

Time Handling:

Stored in 300ths of a second (3.33ms precision)
Special case: 12:00:00 noon = 0x00C5C100
Milliseconds must be rounded to nearest 3.33ms increment

Edge Cases and Special Considerations:

Pre-1900 dates require offset calculation from 1753-01-01
Two's complement handling for negative days
Noon has special binary representation
Millisecond precision needs careful handling for rounding
Dates before 1753-01-01 should error
Dates after 9999-12-31 should error
NULL input should return NULL

Binary Format Examples:
1753-01-01 00:00:00.000 = 0xFFFF2E4600000000
1900-01-01 00:00:00.000 = 0x0000000000000000
2000-01-01 00:00:00.000 = 0x00008EAC00000000

Precision Considerations:

SQL Server datetime rounds to .000, .003, or .007 seconds
Binary conversions must maintain this rounding behavior
Time component must align with 3.33ms intervals

This implementation provides a way to:
Convert datetime to 8-byte binary matching SQL Server's format
Convert 8-byte binary back to datetime preserving precision
Handle the full range of valid SQL Server datetime values
Maintain proper rounding behavior for milliseconds
Handle special cases like noon and pre-1900 dates
Usage Example:
-- Convert datetime to binary
SELECT sys.datetime_to_binary('2024-03-23 14:30:45.420');

-- Convert binary back to datetime
SELECT sys.binary_to_datetime(0x0000B0EA00C5C100);

Date experiment
Date data type works with a cast of the returned value.
DECLARE @date date = '2024-03-23 14:30:45.420';
select @date, sys.datetime_to_binary(@date)
   , sys.binary_to_datetime(sys.datetime_to_binary(@date))
   , cast(sys.binary_to_datetime(sys.datetime_to_binary(@date)) as date);

Returns

@date
datetime_to_binary
binary_to_datetime
binary_to_datetime

2024-03-23
0x0000B13C00000000
2024-03-23 00:00:00.000
2024-03-23

Small date time works, you just need to cast the final result.
DECLARE @date smalldatetime = '2024-03-23 14:30:45.420';
select @date
    , sys.datetime_to_binary(@date)
    , cast(sys.binary_to_datetime(sys.datetime_to_binary(@date)) as smalldatetime)

Returns

@date
datetime_to_binary
binary_to_datetime

2024-03-23 14:31:00
0x0000B13C00EF3A30
2024-03-23 14:31:00

DATETIME2() data type works, but only with 3 digits of precision. It likely needs more bytes for the greater precision.
DECLARE @date datetime2(6) = '2024-03-23 14:30:45.423409';
select @date
    , sys.datetime_to_binary(@date)
    , cast(sys.binary_to_datetime(sys.datetime_to_binary(@date)) as datetime2(6))

Returns

@date
datetime_to_binary
binary_to_datetime

2024-03-23 14:30:45.423409
0x0000B13C00EF291A
2024-03-23 14:30:45.420000

Time data type requires the use of the second set of four bytes and requires a new function to handle the time in the same way sys.binary_to_datetime
Problem with + operator with varbinary
SQL Server behavior
DECLARE @var1 varbinary(4) = 0x1234
DECLARE @var2 varbinary(4) = 0x5678
select @var1 + @var2 -- Results in 0x12345678

Babelfish behavior
DECLARE @var1 varbinary(4) = 0x1234
DECLARE @var2 varbinary(4) = 0x5678
SELECT concat(@var1, @var2)  -- Results in 0x12340x5678 not 0x12345678
select @var1 + @var2 -- Results in 26796 not 0x12345678 - this is the sum of the two values and expressed as an integer!
select cast( @var1 + @var2 as varbinary(4)); -- Results in 0x000068AC notice the length is fixed, using varbinary(2) shows 0x68AC

As you can see, concat is messed up and is not the same as +. This is similar behavior as PostgreSQL:
SELECT '\x1234' || '\x5678';  -- Results in \x1234\x5678
SELECT '\x1234'::bytea || '\x5678'::bytea;  -- Results in \x12345678

Solving concat and + for varbinary data in Babelfish
Here's a detailed explanation of the varbinary concatenation function for Babelfish:
Function Purpose:
This function implements SQL Server's varbinary concatenation behavior (using the + operator) in PostgreSQL. In SQL Server, 0x1234 + 0x5678 results in 0x12345678 - a direct concatenation of the hex values.
Key Components:

Input Arguments:

Both arguments are sys.bbf_varbinary type (Babelfish's implementation of SQL Server's varbinary)
arg1 represents the left side of the concatenation
arg2 represents the right side of the concatenation

Type Conversions:
encode(arg1::bytea, 'hex')

First converts bbf_varbinary to PostgreSQL's native bytea
Then converts bytea to a hex string representation

String Processing:
substring(...from 1)

Removes any leading characters from the hex representation
Ensures clean hex strings for concatenation

Concatenation:
hex_str1 || hex_str2

Uses PostgreSQL's string concatenation operator
Directly joins the hex strings

Final Conversion:
decode(..., 'hex')::sys.bbf_varbinary

Converts concatenated hex string back to binary
Casts to bbf_varbinary for T-SQL compatibility

Example Usage:
-- In SQL Server:
DECLARE @var1 varbinary(4) = 0x1234
DECLARE @var2 varbinary(4) = 0x5678
SELECT @var1 + @var2  -- Results in 0x12345678

-- In Babelfish:
DECLARE @var1 varbinary(4) = 0x1234
DECLARE @var2 varbinary(4) = 0x5678
SELECT sys.varbinary_concat(@var1, @var2)  -- Also results in 0x12345678

Why It Works with Babelfish:

Maintains SQL Server's binary concatenation semantics
Handles type conversions between Babelfish and PostgreSQL types
Uses PostgreSQL's native functions (encode, decode) for binary processing
Preserves the exact byte sequence without adding/removing bytes
Returns the correct Babelfish type (sys.bbf_varbinary)

Adding the sys.+ operator for varbinary
This function could be used as the implementation for a binary concatenation operator in Babelfish:
CREATE OPERATOR sys.+ (
    LEFTARG = sys.bbf_varbinary,
    RIGHTARG = sys.bbf_varbinary,
    PROCEDURE = sys.varbinary_concat
);

Now in Babelfish, the following works as expected
DECLARE @var1 varbinary(4) = 0x1234
DECLARE @var2 varbinary(4) = 0x5678
select @var1 + @var2 -- Results in 0x12345678

Here is the customer example that mostly works for the conversion to varbinary and + operator
-- Customer example with variable value display
DECLARE @auditprofileguid UNIQUEIDENTIFIER = NEWID();
DECLARE @vb_auditprofileguid VARBINARY(16) = CONVERT(varbinary(16), @auditprofileguid);
DECLARE @audittime DATETIME = '2024-03-23 14:30:45.420';
DECLARE @vb_audittime VARBINARY(8) = sys.datetime_to_binary(@audittime);
DECLARE @context_info VARBINARY(128) = @vb_audittime + @vb_auditprofileguid;
SET CONTEXT_INFO @context_info;

-- Display all variable values in a result set
SELECT '@auditprofileguid' AS VariableName, cast(@auditprofileguid as nvarchar(500)) AS VariableValue, 'UNIQUEIDENTIFIER' AS DataType;
SELECT '@vb_auditprofileguid' AS VariableName, @vb_auditprofileguid AS VariableValue, 'VARBINARY(16)' AS DataType;
SELECT '@audittime' AS VariableName, @audittime AS VariableValue, 'DATETIME' AS DataType;
SELECT '@vb_audittime' AS VariableName, @vb_audittime AS VariableValue, 'VARBINARY(8)' AS DataType;
SELECT '@context_info' AS VariableName, @context_info AS VariableValue, 'VARBINARY(128)' AS DataType;
SELECT 'CONTEXT_INFO()' AS VariableName, CONTEXT_INFO() AS VariableValue, 'VARBINARY(128)' AS DataType;

Returns

VariableName
VariableValue
DataType

@auditprofileguid
FFF2EB80-8893-4C39-92FB-9AED1775EB13
UNIQUEIDENTIFIER

@vb_auditprofileguid
0x80EBF2FF9388394C92FB9AED1775EB13
VARBINARY(16)

@audittime
2024-03-23 14:30:45.420
DATETIME

@vb_audittime
0x0000B13C00EF291A
VARBINARY(8)

@context_info
0x0000B13C00EF291A 80EBF2FF9388394C92FB9AED1775EB13
VARBINARY(128)

space added manually^

CONTEXT_INFO()
0x0000B13C00EF291A80EBF2FF9388394C92FB9AED1775EB130000...
VARBINARY(128)

Getting the data out is an issue now with SUBSTRING()
In T-SQL, SUBSTRING() treats a position as a hex byte and doesn't count the leading 0x value.
-- SQL Server bringing back the datetime
SELECT SUBSTRING(CONTEXT_INFO(), 1, 8); -- Returns: 0x0000B13C00EF291A

However, in Babelfish
SELECT SUBSTRING(CONTEXT_INFO(), 1, 8); -- Returns: 0x0000b1  It's character based and not byte based! And they are

SUBSTRING for varbinary
Here's a detailed explanation of the sys.binary_substring function for the AWS Babelfish development team to start from.
CREATE OR REPLACE FUNCTION sys.binary_substring(
    arg sys.bbf_varbinary,      -- Input is Babelfish's binary type
    start_pos integer,          -- 1-based starting position (SQL Server style)
    length integer)             -- Number of bytes to extract
RETURNS sys.bbf_varbinary      -- Returns Babelfish's binary type
LANGUAGE plpgsql
IMMUTABLE PARALLEL SAFE
AS $$
BEGIN
    -- The function performs these steps:
    -- 1. arg::bytea              - Converts bbf_varbinary to PostgreSQL bytea
    -- 2. ENCODE(..., 'hex')      - Converts bytea to hex string representation
    -- 3. SUBSTRING(...) extracts the requested bytes:
    --    - (start_pos - 1) * 2   - Converts 1-based to 0-based indexing and multiplies by 2 since each byte is 2 hex chars
    --    - + 1                   - Adjusts to 1-based for PostgreSQL substring
    --    - length * 2            - Multiplies requested length by 2 to get correct number of hex chars
    -- 4. decode(..., 'hex')      - Converts hex string back to bytea
    -- 5. ::sys.bbf_varbinary     - Casts back to Babelfish binary type
    RETURN decode(
        SUBSTRING(
            ENCODE(arg::bytea, 'hex')::text,
            (start_pos - 1) * 2 + 1,
            length * 2
            )
        , 'hex')::sys.bbf_varbinary
    ;
END;
$$;

Key implementation details:

Type Handling:

Input: Uses sys.bbf_varbinary (Babelfish's binary type)
Internal: Converts to bytea for PostgreSQL operations
Output: Returns sys.bbf_varbinary for SQL Server compatibility

Position Handling:

SQL Server uses 1-based indexing for SUBSTRING
PostgreSQL SUBSTRING also uses 1-based indexing
Each byte requires 2 hex characters in string representation

Binary Processing:

Preserves byte alignment by working with hex representation
Maintains binary data integrity throughout conversion chain
No loss of binary data during string conversion phases

SQL Server Compatibility:
-- SQL Server example:
DECLARE @var3 varbinary(4) = 0x12345678
SELECT substring(@var3, 1, 2)  -- Returns: 0x1234
SELECT substring(@var3, 3, 2)  -- Returns: 0x5678

Example Operation Flow:
Input: 0x12345678, start_pos=1, length=2
1. bytea conversion: \x12345678
2. hex encoding: "12345678"
3. substring calculation:
   - start: (1-1)*2 + 1 = 1
   - length: 2*2 = 4
4. substring result: "1234"
5. hex decode: \x1234
6. final result: 0x1234

This implementation ensures:

Correct byte alignment
SQL Server compatible behavior
Proper binary data handling
Efficient processing
Data integrity throughout conversions

Test cases
-- Setup test variables
DECLARE @test_passed bit;
DECLARE @error_message nvarchar(1000);
DECLARE @result_message nvarchar(1000) = '';

BEGIN TRY
    -- Test Case 1: Basic binary substring
    DECLARE @var1 varbinary(4) = 0x12345678;
    IF (sys.binary_substring(@var1, 1, 2) <> 0x1234)
    BEGIN
        SET @error_message = 'Test 1 Failed: Basic binary substring first half. Expected 0x1234, Got ' +
            CONVERT(varchar(20), sys.binary_substring(@var1, 1, 2), 2);
        RAISERROR(@error_message, 16, 1);
    END
    SET @result_message += 'Test 1 Passed: Basic substring first half' + CHAR(13);

    -- Test Case 2: Middle substring
    IF (sys.binary_substring(@var1, 2, 2) <> 0x3456)
    BEGIN
        SET @error_message = 'Test 2 Failed: Middle substring. Expected 0x3456, Got ' +
            CONVERT(varchar(20), sys.binary_substring(@var1, 2, 2), 2);
        RAISERROR(@error_message, 16, 1);
    END
    SET @result_message += 'Test 2 Passed: Middle substring' + CHAR(13);

    -- Test Case 3: Last part substring
    IF (sys.binary_substring(@var1, 3, 2) <> 0x5678)
    BEGIN
        SET @error_message = 'Test 3 Failed: Last part substring. Expected 0x5678, Got ' +
            CONVERT(varchar(20), sys.binary_substring(@var1, 3, 2), 2);
        RAISERROR(@error_message, 16, 1);
    END
    SET @result_message += 'Test 3 Passed: Last part substring' + CHAR(13);

    -- Test Case 4: Single byte extraction
    IF (sys.binary_substring(@var1, 2, 1) <> 0x34)
    BEGIN
        SET @error_message = 'Test 4 Failed: Single byte extraction. Expected 0x34, Got ' +
            CONVERT(varchar(20), sys.binary_substring(@var1, 2, 1), 2);
        RAISERROR(@error_message, 16, 1);
    END
    SET @result_message += 'Test 4 Passed: Single byte extraction' + CHAR(13);

    -- Test Case 5: Zero length
    IF (DATALENGTH(sys.binary_substring(@var1, 1, 0)) <> 0)
    BEGIN
        SET @error_message = 'Test 5 Failed: Zero length. Expected empty binary';
        RAISERROR(@error_message, 16, 1);
    END
    SET @result_message += 'Test 5 Passed: Zero length substring' + CHAR(13);

    -- Test Case 6: Empty binary input
    DECLARE @empty_var varbinary(4) = 0x;
    IF (DATALENGTH(sys.binary_substring(@empty_var, 1, 2)) <> 0)
    BEGIN
        SET @error_message = 'Test 6 Failed: Empty binary input. Expected empty binary';
        RAISERROR(@error_message, 16, 1);
    END
    SET @result_message += 'Test 6 Passed: Empty binary input' + CHAR(13);

    -- Test Case 7: Start position beyond length
    IF (DATALENGTH(sys.binary_substring(@var1, 5, 1)) <> 0)
    BEGIN
        SET @error_message = 'Test 7 Failed: Start beyond length. Expected empty binary';
        RAISERROR(@error_message, 16, 1);
    END
    SET @result_message += 'Test 7 Passed: Start position beyond length' + CHAR(13);

    -- Test Case 8: Length beyond available bytes
    IF (sys.binary_substring(@var1, 3, 4) <> 0x5678)
    BEGIN
        SET @error_message = 'Test 8 Failed: Length beyond available. Expected 0x5678, Got ' +
            CONVERT(varchar(20), sys.binary_substring(@var1, 3, 4), 2);
        RAISERROR(@error_message, 16, 1);
    END
    SET @result_message += 'Test 8 Passed: Length beyond available bytes' + CHAR(13);

    -- Test Case 9: Large varbinary
    DECLARE @large_var varbinary(8000) = 0xFFFFFFFFFFFFFFFF;
    IF (sys.binary_substring(@large_var, 1, 8) <> 0xFFFFFFFFFFFFFFFF)
    BEGIN
        SET @error_message = 'Test 9 Failed: Large varbinary. Expected 0xFFFFFFFFFFFFFFFF';
        RAISERROR(@error_message, 16, 1);
    END
    SET @result_message += 'Test 9 Passed: Large varbinary' + CHAR(13);

    -- Test Case 10: Odd number of hex digits
    DECLARE @odd_var varbinary(3) = 0x123456;
    IF (sys.binary_substring(@odd_var, 2, 1) <> 0x34)
    BEGIN
        SET @error_message = 'Test 10 Failed: Odd number of hex digits. Expected 0x34, Got ' +
            CONVERT(varchar(20), sys.binary_substring(@odd_var, 2, 1), 2);
        RAISERROR(@error_message, 16, 1);
    END
    SET @result_message += 'Test 10 Passed: Odd number of hex digits' + CHAR(13);

    -- Test Case 11: NULL input
    IF (sys.binary_substring(CAST(NULL AS varbinary(4)), 1, 2) IS NOT NULL)
    BEGIN
        SET @error_message = 'Test 11 Failed: NULL input should return NULL';
        RAISERROR(@error_message, 16, 1);
    END
    SET @result_message += 'Test 11 Passed: NULL input' + CHAR(13);

    -- Print final results
    PRINT 'All tests completed successfully!';
    PRINT @result_message;

    -- Display test results in table format
    SELECT
        'First Half (1,2)' as TestCase,
        0x1234 as Expected,
        sys.binary_substring(0x12345678, 1, 2) as Actual
    UNION ALL
    SELECT
        'Last Half (3,2)',
        0x5678,
        sys.binary_substring(0x12345678, 3, 2)
    UNION ALL
    SELECT
        'Middle Bytes (2,2)',
        0x3456,
        sys.binary_substring(0x12345678, 2, 2);

END TRY
BEGIN CATCH
    -- Error handling
    SELECT
        ERROR_NUMBER() as ErrorNumber,
        ERROR_MESSAGE() as ErrorMessage,
        ERROR_SEVERITY() as ErrorSeverity,
        ERROR_STATE() as ErrorState,
        ERROR_LINE() as ErrorLine;

    PRINT 'Test suite failed! See error details above.';
    PRINT 'Completed tests up to error:';
    PRINT @result_message;
END CATCH;

Results
Messages
All tests completed successfully!
Test 1 Passed: Basic substring first half
Test 2 Passed: Middle substring
Test 3 Passed: Last part substring
Test 4 Passed: Single byte extraction
Test 5 Passed: Zero length substring
Test 6 Passed: Empty binary input
Test 7 Passed: Start position beyond length
Test 8 Passed: Length beyond available bytes
Test 9 Passed: Large varbinary
Test 10 Passed: Odd number of hex digits
Test 11 Passed: NULL input

Grid results

TestCase
Expected
Actual

First Half (1,2)
0x1234
0x1234

Last Half (3,2)
0x5678
0x5678

Middle Bytes (2,2)
0x3456
0x3456

Back to the customer scenario
SELECT sys.binary_substring(CONTEXT_INFO(), 1, 8) -- Returns: 0x0000B13C00EF291A
    , cast(sys.binary_to_datetime(sys.binary_substring(CONTEXT_INFO(), 1, 8)) as varchar(100))
UNION ALL
SELECT sys.binary_substring(CONTEXT_INFO(), 9, 16)
    , CAST(CONVERT(UNIQUEIDENTIFIER, sys.binary_substring(CONTEXT_INFO(), 9, 16)) as varchar(100))
;

Returns the expected results

binary_substring
binary_to_datetime

0x0000B13C00EF291A
2024-03-23 14:30:45.42

0x80EBF2FF9388394C92FB9AED1775EB13
FFF2EB80-8893-4C39-92FB-9AED1775EB13

I hope you made it this far.
Thanks,
Bill


Node don't show in ecflow_ui

What happened?
Hello developers, we have encountered a strange problem while using ecflow_ui.
Our ecflow runs entirely on a cloud server, so we use x11 to forward ecflow_ui. At present, we use two personal computers. Both computers are windows11 and mobaxterm. Normally, two PCS should show the same result. However, a strange phenomenon occurs, one of the nodes is not visible in ecflow_ui, while the other is normal, as shown in the following figure. We tried for a long time, either to replace the terminal or the x11 server, but nothing could solve the problem. It's really weird...

What are the steps to reproduce the bug?
I don't  know why.
Version
ecflow_ui v5.11.4
Platform (OS and architecture)
Windows11 23H2 + mobaxterm 23.6
Relevant log output
I don't know how to set log on.

Accompanying data
None
Organisation
None

Hi @TieJianKuDan,
This is indeed strange! The first thing I would check is that both systems are definitely connecting to the same ecFlow server (simply hovering the mouse cursor over the very top-level node 'default' should be enough to get you that information (host & port should be the same in both systems).
Otherwise, you can get some log output from the UI by starting it with ecflow_ui -log.
I hope this helps,
Iain


[CI] Revert #10181 / #11399, use non-versioned scipy intersphinx link

Follow-up from https://github.com/apache/tvm/pull/10181 and https://github.com/apache/tvm/pull/11399.  Thank you to @rgommers for pointing out that the non-versioned link is stable and working.  The use of the versioned link was only introduced to work around the breakage of the stable link, so this reverts to the pre-breakage behavior.
cc @Mousius @areusch @driazati

Low-priority, as the CI is currently working.


Terminal themes?

Gotta say I love the new colors in the terminal.
Any chance of making a separate iterm / terminal theme with Plastic colors?

Sure. I was thinking this could be separate repo but that may be a bit overkill. I'll change the folder structure to be by app, then this can be a mini-monorepo for all things Plastic; opening it up for themes for other editors too.

semi-unrelated, the roundabout here is funny to me.
i wanted my terminal colors on plastic
OP wants plastic colors on their terminal

Just stumbled upon Plastic today, and I needed a terminal theme that matched. So I made one for Hyper, if anyone is still looking: https://github.com/lowmess/hyper-plastic
@will-stone thanks for providing the color map in the README, it made this unbelievably easy!

@lowmess nice! Thanks. I'll add a link to your theme when I get around to updating the site. If you could add a screenshot to your README (that I can steal later), that'd be great 😄

@will-stone no problem! meant to do that with the initial commit 😅 it's up there now!

I'll leave it here instead of opening another issue. First of all, Plastic is my main vscode theme from some time on, I love it! That's why I made a port for vim/neovim: https://github.com/flrnprz/candid.vim
I called it different because added light theme and some lightly differences, and didn't want to confuse people. Thanks for this wonderful theme!

I tried to convert this into  Jetbrains theme by using they colorSchemeTool but turned out it cannot be used. It only can convert the theme into .tmTheme. I'm not sure is there any way around that I can port this into Jetbrains? Thanks for help.

Here's the color scheme for Windows Terminal
{
    "name": "Plastic",
    "cursorColor": "#A9B2C3",
    "selectionBackground": "#424751",
    "background": "#21252b",
    "foreground": "#A9B2C3",
    "black": "#21252B",
    "blue": "#61AFEF",
    "cyan": "#56B6C2",
    "green": "#98C379",
    "purple": "#B57EDC",
    "red": "#E06C75",
    "white": "#A9B2C3",
    "yellow": "#D19A66",
    "brightBlack": "#5F6672",
    "brightBlue": "#1085FF",
    "brightCyan": "#08E8DE",
    "brightGreen": "#69C52E",
    "brightPurple": "#8B00FF",
    "brightRed": "#D74E42",
    "brightWhite": "#D4D7D9",
    "brightYellow": "#E9D16C"
}

Got inspired (I literally copied 😄 ) from @lowmess Hyper version ;)

Okay, still early days but you can be the first to know about https://plastictheme.com/
This includes instructions on installing themes for both iTerm and Terminal.app. I plan to theme more apps, and I'm still debating what colours to use for bright ANSI, but that can be a different issue.
Thanks all 😄


feat: add docker/hub-tool

docker/hub-tool: Docker Hub experimental CLI tool
$ aqua g -i docker/hub-tool

How to confirm if this package works well
Reviewers aren't necessarily familiar with this package, so please describe how to confirm if this package works well.
Please confirm if this package works well yourself as much as possible.
Command and output
$ hub-tool --help
A tool to manage your Docker Hub images

Usage:
  /Users/lars/.local/share/aqua/pkgs/github_release/github.com/docker/hub-tool/v0.4.5/hub-tool-darwin-amd64.tar.gz/hub-tool/hub-tool
  /Users/lars/.local/share/aqua/pkgs/github_release/github.com/docker/hub-tool/v0.4.5/hub-tool-darwin-amd64.tar.gz/hub-tool/hub-tool [command]

Available Commands:
  account     Manage your account
  help        Help about any command
  login       Login to the Hub
  logout      Logout of the Hub
  org         Manage organizations
  repo        Manage repositories
  tag         Manage tags
  token       Manage Personal Access Tokens
  version     Version information about this tool

Flags:
  -h, --help      help for /Users/lars/.local/share/aqua/pkgs/github_release/github.com/docker/hub-tool/v0.4.5/hub-tool-darwin-amd64.tar.gz/hub-tool/hub-tool
      --verbose   Print logs
      --version   Display the version of this tool

Use "/Users/lars/.local/share/aqua/pkgs/github_release/github.com/docker/hub-tool/v0.4.5/hub-tool-darwin-amd64.tar.gz/hub-tool/hub-tool [command] --help" for more information about a command.

Thank you always!

It's strange. Maybe this is a bug. .exe should be complemented by default. 🤔
https://github.com/aquaproj/aqua-registry/actions/runs/3560528416/jobs/5980604103#step:5:148
ERRO[0001] install the package                           aqua_version=1.25.0 env=windows/amd64 error="the asset isn't found: hub-tool_windows_amd64" package_name=docker/hub-tool package_version=v0.1.0 program=aqua registry=standard

I'll take a look later.

Released. https://github.com/aquaproj/aqua-registry/releases/tag/v3.98.0


Cmd + enter to send message

Having to press the send button every time is tedious. We should support cmd + enter and ctrl enter for windows equivalent shortcuts. We shouldn't have enter by default since longer messages you might want multiple lines and you don't want to accidentally send

Done!


Launch failure potentially based on cub::BlockReduce<double, TPB, cub::BlockReduceAlgorithm::BLOCK_REDUCE_RAKING_COMMUTATIVE_ONLY> BlockReduce

Dear Maintainers,
thank you for the awesome library, I really like it :)
I have a strange launch failure when using cub::BlockReduce<double, TPB, cub::BlockReduceAlgorithm::BLOCK_REDUCE_RAKING_COMMUTATIVE_ONLY> BlockReduce together with CUDA Dynamic Parallelism (CDP). When I uncomment all cub code from the Kernel, the error does not appear.
The Kernel code is roughly
// some cu file

template<typename Scalar, int TPB>
__global__ void calcResKernel(
    CudaCoarseTrackerDeviceData<Scalar> data,
    CCTcalcResInOut *in_out
) {
  typedef cub::BlockReduce<double, TPB, cub::BlockReduceAlgorithm::BLOCK_REDUCE_RAKING_COMMUTATIVE_ONLY> BlockReduce;
  __shared__ typename BlockReduce::TempStorage temp_storage;

  // a lot of code I cannot share

double aggregates[7];
  for (int idx = 0; idx < 7; idx++) {
    aggregates[idx] = BlockReduce(temp_storage).Sum(private_output[idx]);
    __syncthreads(); // Needed due to temp_storage reuse
  }

  if (threadIdx.x == 0) {
    for (int idx = 0; idx < 7; idx++) {
      const double old = atomicAdd(in_out->outputs + idx, aggregates[idx]);
      printf("idx = %2d, old=%f, agg=%f\n", idx, old, aggregates[idx]);
    }
  }
};

template __global__ void calcResKernel<float, 32>(CudaCoarseTrackerDeviceData<float> data, CCTcalcResInOut *in_out);
template __global__ void calcResKernel<float, 64>(CudaCoarseTrackerDeviceData<float> data, CCTcalcResInOut *in_out);
template __global__ void calcResKernel<float, 96>(CudaCoarseTrackerDeviceData<float> data, CCTcalcResInOut *in_out);
template __global__ void calcResKernel<float, 128>(CudaCoarseTrackerDeviceData<float> data, CCTcalcResInOut *in_out);
template __global__ void calcResKernel<float, 256>(CudaCoarseTrackerDeviceData<float> data, CCTcalcResInOut *in_out);
template __global__ void calcResKernel<float, 512>(CudaCoarseTrackerDeviceData<float> data, CCTcalcResInOut *in_out);

The caller is also a Kernel of the following structure
template<typename Scalar, int TPB_CALC_RES, int TPB_CALC_GS>
__global__ void cctInitKernel(CudaCoarseTrackerDeviceData<Scalar> data) {
  int bidx = blockIdx.x;
  int tidx = threadIdx.x;
  int i = bidx * blockDim.x + tidx;

// code i cannot share

    if (i == 0) {
      // code i cannot share
      printf("LAUNCH CONFIG: %d, %d\n", DIV_UP(nl, TPB_CALC_RES), TPB_CALC_RES);
      calcResKernel<Scalar, TPB_CALC_RES><<<DIV_UP(nl, TPB_CALC_RES), TPB_CALC_RES>>>(data, data.calcResInOut);
      cucheck_dev(cudaGetLastError());
      cucheck_dev(cudaDeviceSynchronize());
      updateResInDataOPt(data);
    }
    __syncthreads();

}

The outer Kernel is launched with only 1 block like
cctInitKernel<float, 512, 512><<<1, 96>>>(data);

For the following TPB_CALC_RES I get
128: Works
256: Works
512: invalid configuration argument in cudaGetLastError()

I am running on Ubuntu 18.04, Nvidia driver 455.23.05, CUAD 11.1 and an RTX 2080 super. I use separable compilation. Here is my cmake output:
-- The CXX compiler identification is GNU 7.5.0
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/lib/ccache/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found Eigen headers in: /usr/local/include/eigen3
-- Found Boost: /usr/include (found version "1.65.1")
-- The CUDA compiler identification is NVIDIA 11.1.74
-- Detecting CUDA compiler ABI info
-- Detecting CUDA compiler ABI info - done
-- Check for working CUDA compiler: /usr/local/cuda/bin/nvcc - skipped
-- Detecting CUDA compile features
-- Detecting CUDA compile features - done
-- Found CUDAToolkit: /usr/local/cuda/include (found version "11.1.74")
-- Looking for C++ include pthread.h
-- Looking for C++ include pthread.h - found
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE
-- Release mode (!= not Debug). Adding -O3 to NVCC FLAGS
-- Configuring done
-- Generating done

Any help would be much appreciated :)
From the docs it is also not 100% clear to me if dynamic parallelism and block-wide directives are supported but I couldn't find any particular info on that.
Have a nice day
Lukas

Hello, @lkskstlr! Thank you for your feedback. Unfortunately, your code snippet is insufficient to reproduce this error. I've extracted CUB related parts in the following code:
#include <thrust/device_vector.h>
#include <cub/block/block_reduce.cuh>
#include <iostream>

template<int ThreadsPerBlock,
         int ItemsPerThread>
__global__ void kernel(float *data) {
    typedef cub::BlockReduce<double, ThreadsPerBlock, cub::BlockReduceAlgorithm::BLOCK_REDUCE_RAKING_COMMUTATIVE_ONLY> BlockReduce;
    __shared__ typename BlockReduce::TempStorage temp_storage;

    double aggregates[ItemsPerThread];
    for (int idx = 0; idx < 7; idx++) {
        aggregates[idx] = BlockReduce(temp_storage).Sum(data[idx * ThreadsPerBlock + threadIdx.x]);
        __syncthreads(); // Needed due to temp_storage reuse
    }

    if (threadIdx.x == 0) {
        printf("%d\n", (int) sizeof(BlockReduce::TempStorage));
        for (int idx = 0; idx < 7; idx++) {
            printf("agg=%f\n", aggregates[idx]);
        }
    }
}

constexpr int items_per_thread = 7;
constexpr int threads_per_block = 512;
constexpr int elements = items_per_thread * threads_per_block;

__global__ void launcher(float *data) {
    if (threadIdx.x == 0) {
        kernel<threads_per_block, items_per_thread><<<1, threads_per_block>>>(data);

        if (cudaGetLastError() != cudaSuccess) {
            printf("CUDA Error!");
        }

        if (cudaDeviceSynchronize() != cudaSuccess) {
            printf("CUDA Error!");
        }
    }
    __syncthreads();
}

int main(void) {
    thrust::device_vector<float> in(elements);
    thrust::sequence(in.begin(), in.end());

    launcher<<<1, 96>>>(thrust::raw_pointer_cast(in.data()));
    launcher<<<1, 96>>>(thrust::raw_pointer_cast(in.data()));
    launcher<<<1, 96>>>(thrust::raw_pointer_cast(in.data()));
}

Please, let me know if it reproduces the described issue on your setup. It seems to work fine on mine. If the code above doesn't represent your case, please, feel free to update it here. If this code represents your case, I believe that the issue is in the code parts you've omitted.

@lkskstlr Any updates for this? See @senior-zero's questions above.

@allisonvacanti sorry, I missed the answer on this issue. I will see if I can still reproduce the bug. Thanks for following up :)


iOS: Unhandled Managed Exception thrown on app start when camera permission denied

After denying permissions on iOS, every time the app is started, it crashes with the following exception.
Unhandled managed exception: Could not initialize an instance of the type 'AVFoundation.AVCaptureDeviceInput': the native 'initWithDevice:error:' method returned nil.
It is possible to ignore this condition by setting ObjCRuntime.Class.ThrowOnInitFailure to false. (System.Exception)
  at Foundation.NSObject.InitializeHandle (System.IntPtr handle, System.String initSelector) [0x000a8] in /Library/Frameworks/Xamarin.iOS.framework/Versions/<IP_ADDRESS>/src/Xamarin.iOS/Foundation/NSObject2.cs:504
  at AVFoundation.AVCaptureDeviceInput..ctor (AVFoundation.AVCaptureDevice device, Foundation.NSError& error) [0x00027] in /Library/Frameworks/Xamarin.iOS.framework/Versions/<IP_ADDRESS>/src/Xamarin.iOS/AVCaptureDeviceInput.g.cs:80
  at GoogleVisionBarCodeScanner.UICameraPreview.Initialize (System.Boolean defaultTorchOn, System.Boolean vibrationOnDetected, System.Boolean startScanningOnCreate) [0x0009d] in <d513dc25a3de4543b7e74dac86eab609>:0
  at GoogleVisionBarCodeScanner.UICameraPreview..ctor (System.Boolean d<…>

iOS version: 13.7
Xamarin.Forms version: <IP_ADDRESS>1

Is your app showing the camera view at start?
Generally, you should not display the camera view if the permission is denied.

No, the camera is only used for QR Code scanning and it's on a modal page that is navigated to manually.

No, the camera is only used for QR Code scanning and it's on a modal page that is navigated to manually.
The app cannot even get to that modal page after the permissions have been denied.

I suggest you check the camera permission before get into the modal page.

No, the camera is only used for QR Code scanning and it's on a modal page that is navigated to manually.
The app cannot even get to that modal page after the permissions have been denied.

I suggest you check the camera permission before get into the modal page.

I think I didn't explain myself properly. The scenario is the following:

Open the app for the first time. There's no camera needed at this point
There's a menu button (in my app) to go to the Scan QQ Code page, tap on that button
The app navigates to the page with the QR Code scanner
The user taps on a button to start scanning, at this point the app asks for permissions
The user denies permissions and the app crashes with the error posted on the original message in this issue
The use opens the app once again and it crashes when loading just after the Splash Screen
Open the app again and same as 6, it keeps crashing.

So as you see, the problem is not me not checking for permissions, is the BarcodeScanner.XF library crashing the app when, I pressume, it's calling the GoogleVisionBarCodeScanner.iOS.Initializer.Init() method.

No, the camera is only used for QR Code scanning and it's on a modal page that is navigated to manually.
The app cannot even get to that modal page after the permissions have been denied.

I suggest you check the camera permission before get into the modal page.

I think I didn't explain myself properly. The scenario is the following:

Open the app for the first time. There's no camera needed at this point
There's a menu button (in my app) to go to the Scan QQ Code page, tap on that button
The app navigates to the page with the QR Code scanner
The user taps on a button to start scanning, at this point the app asks for permissions
The user denies permissions and the app crashes with the error posted on the original message in this issue
The use opens the app once again and it crashes when loading just after the Splash Screen
Open the app again and same as 6, it keeps crashing.

So as you see, the problem is not me not checking for permissions, is the BarcodeScanner.XF library crashing the app when, I pressume, it's calling the GoogleVisionBarCodeScanner.iOS.Initializer.Init() method.

For the first time crash, it is because the app is calling AVFoundation function without permission, which is normal case.
I will suggest the follow step as a workaround.

Start app, init the library
Check the permission when users click the button, if no permission, do not push the modal page

For your step 6 and 7, do have get any error message? and is it ok if the camera permission is granted? Since the init function does not include logic at all.

I think you are not understanding the issue, I can't ask for permission after the first time the app crashes because it doesn't make it after the splashscreen. As in, you see the loading page and the app crashes.
When the app has been just installed in the device, there's no error. The error that causes the app to crash is the one on the original post in this issue.
Unhandled managed exception: Could not initialize an instance of the type 'AVFoundation.AVCaptureDeviceInput': the native 'initWithDevice:error:' method returned nil.
It is possible to ignore this condition by setting ObjCRuntime.Class.ThrowOnInitFailure to false. (System.Exception)
  at Foundation.NSObject.InitializeHandle (System.IntPtr handle, System.String initSelector) [0x000a8] in /Library/Frameworks/Xamarin.iOS.framework/Versions/<IP_ADDRESS>/src/Xamarin.iOS/Foundation/NSObject2.cs:504
  at AVFoundation.AVCaptureDeviceInput..ctor (AVFoundation.AVCaptureDevice device, Foundation.NSError& error) [0x00027] in /Library/Frameworks/Xamarin.iOS.framework/Versions/<IP_ADDRESS>/src/Xamarin.iOS/AVCaptureDeviceInput.g.cs:80
  at GoogleVisionBarCodeScanner.UICameraPreview.Initialize (System.Boolean defaultTorchOn, System.Boolean vibrationOnDetected, System.Boolean startScanningOnCreate) [0x0009d] in <d513dc25a3de4543b7e74dac86eab609>:0
  at GoogleVisionBarCodeScanner.UICameraPreview..ctor (System.Boolean d<…>

I think you are not understanding the issue, I can't ask for permission after the first time the app crashes because it doesn't make it after the splashscreen. As in, you see the loading page and the app crashes.
When the app has been just installed in the device, there's no error. The error that causes the app to crash is the one on the original post in this issue.
Unhandled managed exception: Could not initialize an instance of the type 'AVFoundation.AVCaptureDeviceInput': the native 'initWithDevice:error:' method returned nil.
It is possible to ignore this condition by setting ObjCRuntime.Class.ThrowOnInitFailure to false. (System.Exception)
  at Foundation.NSObject.InitializeHandle (System.IntPtr handle, System.String initSelector) [0x000a8] in /Library/Frameworks/Xamarin.iOS.framework/Versions/<IP_ADDRESS>/src/Xamarin.iOS/Foundation/NSObject2.cs:504
  at AVFoundation.AVCaptureDeviceInput..ctor (AVFoundation.AVCaptureDevice device, Foundation.NSError& error) [0x00027] in /Library/Frameworks/Xamarin.iOS.framework/Versions/<IP_ADDRESS>/src/Xamarin.iOS/AVCaptureDeviceInput.g.cs:80
  at GoogleVisionBarCodeScanner.UICameraPreview.Initialize (System.Boolean defaultTorchOn, System.Boolean vibrationOnDetected, System.Boolean startScanningOnCreate) [0x0009d] in <d513dc25a3de4543b7e74dac86eab609>:0
  at GoogleVisionBarCodeScanner.UICameraPreview..ctor (System.Boolean d<…>

Can you grant the permission in Settings provided by iOS and open the app again to see if the error still here?

You are right, the Init wasn't throwing the error. Somehow the CameraView was being instantiated before the page that contained it was even created. I re-created the app and reinstalled the nuget package and it now works. This can now be closed, the mystery of why it works now worries me a bit but I'll take the win.
Thanks for the help


fix translations issue #2123

What kind of PR is this?:
/kind fix
What this PR does / why we need it:
Fixing some translation mistakes.
Which issue(s) does this PR fixes?:
Fixes #2123
Additional comments?:
Chinese translations are missing. But I don't know chinese ...
This is my first pull request for this project, so please be gentle ;-)

Thanks @rox1338!


HeNeAr fit needs 2nd pass

after user-defined HeNeAr lines are identified, use a higher resolution line list and do a 2nd pass. pick up more lines to use for the final solution

adding second_pass=True kwarg to HeNeAr_fit

similar use case to think about: fitting a subsequent HeNeAr image from that night, based on the solution here. seems similar to 2nd pass somehow....

2nd pass is now working, may need to tune the thresholds for peak detection


Move screenshot to more prominent position

Hey all, would you consider moving the screenshot farther up? For UI projects it feels like the most pressing concern so if you all are OK with it I think it should be higher up.

Hi, Thanks for the PR but I don't think so. I would like to show all information before the actual UI ;)


Flakey test: Test_poll/should_wait_for_the_given_duration

We should probably look out for interrupt and make sure the godoc declares it.
--- FAIL: Test_poll (0.00s)
    --- FAIL: Test_poll/should_wait_for_the_given_duration (0.00s)
        require.go:331: expected Errno 0x0(success), but was 0x6(interrupted function)
            /home/runner/work/wazero/wazero/internal/sysfs/poll_test.go:30
FAIL

failed on scratch Go 1.21rc3
https://github.com/tetratelabs/wazero/actions/runs/5703851221/job/15456906175?pr=1599

ha, used to be like that with Select https://github.com/tetratelabs/wazero/blob/1e0c73d5692a33645e8b4164277154720fc693e1/internal/sysfs/select_test.go#L14-L27 it looked like it was not necessary with Poll and I just assumed... wrongly 😅

some tests on Windows are failing too now 🤔  they are time-sensitive, but it never happened before... https://github.com/tetratelabs/wazero/actions/runs/5705107259/job/15459405932
--- FAIL: TestPoll_Windows (3.21s)
    --- FAIL: TestPoll_Windows/poll_should_timeout_after_the_given_duration (0.55s)
        require.go:331: expected 1, but was 0
            D:/a/wazero/wazero/internal/sysfs/poll_windows_test.go:238
    --- FAIL: TestPoll_Windows/poll_should_return_when_a_write_occurs_before_the_given_duration (0.67s)
        require.go:331: expected 0, but was 1
            D:/a/wazero/wazero/internal/sysfs/poll_windows_test.go:255


Consistent refresh UI pattern

Currently the ShowsActivity uses a refresh button in the toolbar while the LogsActivity and HistoryActivity use the pull-to-refresh pattern. I think it would be good to make this more consistent by using one of these ways for the list refresh.
In the end consistency will make the app easier to use. Users will only need to learn the action once.

This was fixed in #86 and will be available in the next version of ShowsRage (1.5).


Missing file as src for script tag causes uncaught exception

Hi,
I don't use your library, but I work with a client that does, and we just spent a lot of time debugging an issue with his ad.
This line in the OPTIONS object of postscribe.js defaults to throwing an uncaught exception if write causes an exception.
This caused issues for us because we were loading the ad on an iOS device, and the Safari web inspector does not have a way to see this exception that's thrown immediately (separate issue - the web inspector can't be opened immediately programmatically).
The problematic line in my client's js was
<script src="not_going_to_exist.js"></script>

This missing file caused the js on the page to stop executing, which wasn't what we expected (and probably isn't helpful to many people - console logging this would be much preferred in my opinion). This is certainly not what browsers do when they encounter a missing file on their own w/o this library.
Is this the desired default behavior? Maybe there's something better that can be done here to prevent the pain I went through :tongue: but maybe not. Just wanted to point this out as a potential pain point (it was for me).

@ekilah this is by design and there is provision for the library user to specify an error handler in the options to the postscribe function.  Changing how it is now would be a breaking change.

I can see how that would be an issue also. Maybe the default case can have a console log as well or something? This wouldn't have helped me since the Safari web inspector for iOS devices is lame, but it could help others. Up to you all - like I said I don't currently use the library!

@ekilah thanks for the feedback!  we'll look into adding a console.error or something like that.


Kivy's hookspath() stops PyInstaller

Software Versions
Kivy: v1.11.1
PyInstaller: 3.6
Python: 3.7.3
Platform: Linux-5.5.0-0.bpo.2-amd64-x86_64-with-debian-10.3
Describe the bug
Using
a = Analysis(...
             hookspath=hookspath(),
             ...)

in my PyInstaller .spec file, as described in
https://kivy.org/doc/stable/api-kivy.tools.packaging.pyinstaller_hooks.html
causes PyInstaller to stop with an AssertionError:
INFO: Caching module graph hooks...

Furthermore, the suggestion of a --prefer-custom option appears neither to be at or near the implementation stage. Answers to the issues suggest editing Pyinstaller's hook files in-place as a solution. This seems unsustainable in the long term, as such modifications could possibly be wiped by future updates or cause such updates to behave buggily. On the other hand, importing all modules all the time as happens without modification, is not the right solution for every use case either.
Expected behavior
It would be helpful if Kivy could find a way to re-enable hookspath() to overload hook-kivy.py without PyInstaller interpreting it as a problem.
To Reproduce
As far as I can tell, attempting to overload PyInstaller's hook-*.py files by creating a same-named file with your own content in a path indicated to hookpath in the creation of an Analysis object in the .spec file, causes PyInstaller to stop with this AssertionError.

Yeah, that's something I ran into and fixed it on my side by running python -c "import os, PyInstaller; os.remove(os.path.join(os.path.dirname(PyInstaller.__file__), 'hooks', 'hook-kivy.py'))" to remove the hook that is distributed with pyinstaller.
As you can see, we were strongly opposed to including kivy hooks into pyinstaller, until we were re-assured that we can overwrite the hooks.
I suppose the best advice is to not show how to overwrite the hooks in our docs.

Thank you for the suggestion on how to fix the issue on my end. Removing the hook provided by PyInstaller does seem to offer the path of least resistance in the short term.
I find the link to the discussion of whether to add the hook to PyInstaller very enlightening. It looks to me like an example of how clear communication between multiple stakeholders can be very challenging and easily lead to unintended results.
Being new to Kivy, I realise that I don't see the full picture. Having said that, it seems to me that a helpful direction moving forward could be to request having the hook removed from PyInstaller and continue offering a similar hook or even a selection of example hooks with Kivy. This would provide increased transparency to users of Kivy about how module importing works in PyInstaller, while enabling overloading the hook without issues relating to how PyInstaller interprets conflicts with its included hooks. User-control of the hook seems absolutely necessary to control what is added to your package. I see suggesting such a change to PyInstaller as a reasonable action. The initial inclusion was made years ago and friction, between PyInstaller's now clearer policy on handling of included hooks and the need for flexibility in a framework such as Kivy, have become abundantly clear since then.
Regarding learning Kivy as a newcomer and diagnosing a problem such as this, I feel like it took significantly more effort than it should have to realize what my problem with controlling module imports to PyInstaller was. There are multiple contributing factors I think, such as building on/for a Linux distribution, which is not well-documented for Kivy, and having a problem caused by the interaction of two separate-except-for-that-one-detail systems. I think a note in the documentation, whether in a build example or in the hook documentation, about this issue, with a recommendation of how to work constructively with the limitation, could go a long way towards helping users managing the issue in the future.

@matham I'm a developer of PyInsatller, and have good news for you and the other kivy devs: PyInstaller now supports having the kivy hooks and entire compatibility layer in kivy itself as of next release (4.0 - ETA may-june).


Updated Docs

Can we get updated docs to reflect the latest version of ngTable?

I'm going to be creating a new site for the docs that uses dgeni to extract
api comments. This will be a gh-pages branch so that contributors can keep
it up to date. Once up the demos will move over to that.
On Thursday, April 30, 2015, jjb0385<EMAIL_ADDRESS>wrote:

Can we get updated docs to reflect the latest version of ngTable?
—
Reply to this email directly or view it on GitHub
https://github.com/esvit/ng-table/issues/604.

@christianacca dgeni seems not to be supported more than for a year.
Is it still a good choice?

dgeni is used to generate docs for angular material design and angular
itself so it should be a safe bet
On Sat, May 2, 2015 at 11:31 PM, Github<EMAIL_ADDRESS>wrote:

@christianacca https://github.com/christianacca dgeni seems not to be
supported more than for a year.
Is it still a good choice?
—
Reply to this email directly or view it on GitHub
https://github.com/esvit/ng-table/issues/604#issuecomment-98409683.


When does the update of the discrete action parameters happen?

When does the update of the the discrete action parameters happen? There is no usage of '_action_update'  function in 'learn' function of the file 'qpamdp.py'.
Thank you.

Hi, the Q-PAMDP class encapsulates a discrete action agent to which it delegates discrete action learning, in this case using Sarsa(λ). This agent is updated in the _rollout function of qpamdp.py, where the step function of the discrete agent is called.

Thank you！


OpenBlas failed compilation

$ ./vcpkg.exe install --triplet x64-windows openblas
The following packages will be built and installed:
openblas[core]:x64-windows
Starting package 1/1: openblas:x64-windows
Building package openblas[core]:x64-windows...
-- CURRENT_INSTALLED_DIR=D:/src/vcpkg/installed/x64-windows
-- DOWNLOADS=D:/src/vcpkg/downloads
-- CURRENT_PACKAGES_DIR=D:/src/vcpkg/packages/openblas_x64-windows
-- CURRENT_BUILDTREES_DIR=D:/src/vcpkg/buildtrees/openblas
-- CURRENT_PORT_DIR=D:/src/vcpkg/ports/openblas/.
-- Using cached D:/src/vcpkg/downloads/xianyi-OpenBLAS-v0.2.20.tar.gz
-- Testing integrity of cached file...
-- Testing integrity of cached file... OK
-- Extracting done
-- Applying patch D:/src/vcpkg/ports/openblas/install-openblas.patch
-- Applying patch failed. This is expected if this patch was previously applied.
-- Applying patch D:/src/vcpkg/ports/openblas/install-openblas.patch done
-- Applying patch D:/src/vcpkg/ports/openblas/whitespace.patch
-- Applying patch failed. This is expected if this patch was previously applied.
-- Applying patch D:/src/vcpkg/ports/openblas/whitespace.patch done
-- Configuring x64-windows
-- Configuring x64-windows done
-- Build x64-windows-dbg
CMake Error at scripts/cmake/vcpkg_build_cmake.cmake:170 (message):
Command failed: C:/Program Files/CMake/bin/cmake.exe;--build;.;--config;Debug;--targo
Working Directory: D:/src/vcpkg/buildtrees/openblas/x64-windows-dbg
See logs for more information:
D:\src\vcpkg\buildtrees\openblas\install-x64-windows-dbg-out.log
Call Stack (most recent call first):
scripts/cmake/vcpkg_install_cmake.cmake:24 (vcpkg_build_cmake)
ports/openblas/portfile.cmake:93 (vcpkg_install_cmake)
scripts/ports.cmake:72 (include)
Error: Building package openblas:x64-windows failed with: BUILD_FAILED
Please ensure you're using the latest portfiles with .\vcpkg update, then
submit an issue at https://github.com/Microsoft/vcpkg/issues including:
Package: openblas:x64-windows
Vcpkg version: 0.0.110-2018-04-26-bca1e780373864082fe7205a697b76a87508e2ae
Additionally, attach any relevant sections from the log files above.

Thanks a lot for posting this issue.
Please open a new issue if this is still a problem for you.


az storage with --auth-mode=login incorrectly determines principal permissions

My Azure AD user account has access to a blob storage account/container. If I sign into the azure portal, I can navigate to it and perform read, write, and listing actions against it.
However, when I try to use the az command to list the container like so...
az storage blob list --account-name <the-account-name> \
  --container=<the-container-name> \
  --subscription=<the-subscription-id-of-the-container> \
  --auth-mode=login

I get an error that I do not have the required privileges to perform the operation. If I omit the --auth-mode=login option, then it works because it looks up account keys (as described in the warning output and #13509). However, my goal is to actually use my Azure AD principal for access.
I've been unable to find any documentation about this and there are a slew of open issues here related to this auth mode (e.g. #16853, #15232, #16899, etc). I'm concerned that --auth-mode=login can only be expected to work in some narrow configuration scenario (e.g. all resources under a single subscription)
(Possibly) Relevant Details

The storage account is under a different subscription than my Azure AD user account.
I'm using azure-cli version 2.19.1

storage

Hi @tkent, if they are in the same tenant, there should be no issue.

@Juliehzl
I don't know if you mean something specific when you say

If you have the specific permission to target resource

But I can say that it's working now for. I assume something was fixed in the months since I originally filed this issue.


PANIC: Could not figure out an ID in create

Hi Prisma Team! My Prisma Client just crashed. This is the report:
Versions

Name
Version

Node
v10.16.2

OS
windows

Prisma Client
2.9.0

Logs
  prisma-client { engineConfig:
  prisma-client    { cwd:
  prisma-client       'C:\\Users\\jayan\\Desktop\\Ubiq\\critiqueapp\\critique_backend\\prisma',
  prisma-client      enableDebugLogs: false,
  prisma-client      enableEngineDebugMode: undefined,
  prisma-client      datamodelPath:
  prisma-client       'C:\\Users\\jayan\\Desktop\\Ubiq\\critiqueapp\\critique_backend\\node_modules\\.prisma\\client\\schema.prisma',
  prisma-client      prismaPath: undefined,
  prisma-client      engineEndpoint: undefined,
  prisma-client      generator:
  prisma-client       { name: 'client',
  prisma-client         provider: 'prisma-client-js',
  prisma-client         output:
  prisma-client          'C:\\Users\\jayan\\Desktop\\Ubiq\\critiqueapp\\critique_backend\\node_modules\\@prisma\\client',
  prisma-client         binaryTargets: [],
  prisma-client         previewFeatures: [],
  prisma-client         config: {} },
  prisma-client      showColors: false,
  prisma-client      logLevel: undefined,
  prisma-client      logQueries: undefined,
  prisma-client      flags: [],
  prisma-client      clientVersion: '2.9.0',
  prisma-client      enableExperimental: [],
  prisma-client      useUds: undefined } }

Hey @jayanth1991
I faced the same issue today and for me the problem was that the ID column in the database table was not set to PK (primary key) and auto increment was not checked (somhow ??? don't know how this actually happened).
anyway, fixed the table structure and now everything is working fine

I am going to close this as its been 3 months now and there is no activity here.
Please reply if you want us to take another look.