Component | Axis: Add tick label rotation

Following this PR. Moved rotate out of FitMode.

[x] Adding a new variable called tickTextAngle to allow user to pass in a number for label rotation. This feature should be used along with tickTextAlign to get the desired result (we want to provide more control to the user).
[x] New dev example
[x] Add related documentation

@lee00678 , looks good!
I noticed an edge case- when a label is very long at the end, the label gets cut off on initial render. On resize, it updates correctly but if we refresh the page we see it again.

I think this may be an existing issue. Perhaps we should address this in a separate PR?
(Screenshot taken frommain)
https://github.com/f5/unovis/assets/5026041/c47974b8-e3e6-4938-87c3-bc95c8480c33

@lee00678

I think this may be an existing issue. Perhaps we should address this in a separate PR? (Screenshot taken frommain)

You're totally right. Let's move to a separate issue.

@reb-dev @lee00678 Confirming that the issue has been there before. It's a bit tricky to calculate the required margins automatically and apparently the current logic has some flaws. Let me know if you decide to take a look into it, I can give you a quick walk through explaining how it works.

@reb-dev @lee00678 Confirming that the issue has been there before. It's a bit tricky to calculate the required margins automatically and apparently the current logic has some flaws. Let me know if you decide to take a look into it, I can give you a quick walk through explaining how it works.

Yea margin calculation could be tricky. I took a brief look at it while implementing this feature. I will add an item to our issue list so we don't forget about it.


ddns updates are pushed to DNS servers via ddns table

After having found and installed this great enhancement, I noticed that updates to existing records are not only pushed using the standard DNS update process but also by pushing the ddns_token table updates to all configured DNS servers
As ISPConfig itself handles the whole processing, this is not necessary and the ddns_token tables do not need to exist on the DNS servers.
The missing ddns_token table results in error reports and the push is not necessary.

So I was finally able to spin up a test cluster to verify this.
Just to be clear, this is not related to individual dns record updates (ddns updates). Only for updates on the tokens?
For the tokens I found that because the ddns_token table is missing a server_id, ISPConfig automatically assumes this has to be pushed to all servers, similar to clients.
The solution would be to either

disable datalog entries by setting $form['auth'] = 'no'; in form/ddns_token.tform.php, but this would no longer write any audit logs under Monitor -> Data Log History
add server_id to ddns_token table and set it to the current server (or let the user choose). This will limit the token to that server. In addition, the datalog updates will be displayed in the UI and it appears there is no way to add translations there with a module (only in core ispconfig files).

For now, I will prepare an update with a basic implementation of the second solution.

Version 1.4.0 was just published which should fix this.
A DB migration is required, see relase notes.
Note that existing tokens will have a server_id of 0, which would still cause them to be pushed to other servers during delete.
For new tokens or as soon as you modify a token, the server_id is correctly set.


set up ssl

no one likes it unprotected

this can prevented if github pages is set up, will look into it

working on it, using namecheap ssl and domain


github colorization doesn't handle pragmas

(see https://review.docs.microsoft.com/en-us/azure/azure-resource-manager/bicep/linter-rule-secure-secrets-in-params?branch=pr-en-us-206413#silencing-false-positives for example)
Repro:
```bicep
#disable-next-line secure-secrets-in-params   // Doesn't contain a secret
param mypassword string
```
Currently rendered as:
#disable-next-line secure-secrets-in-params   // Doesn't contain a secret
param mypassword string

Expected: Something like:

@mumian Do you know if MS docs should be picking up bicep colorization?  Most seems to be okay, but it has the #disable-next-line issue and also handles strings incorrectly (but github does handle string correctly):
Docs:

Github:
@description('SAS Token for accessing script path')

@StephenWeatherford - MSDocs is using a very old fork of highlightjs, which I backported our grammar for: https://github.com/DuncanmaMSFT/highlight.js/pull/38 (original source of truth here: https://github.com/Azure/bicep/tree/main/src/highlightjs)
GitHub is using Lingust, which uses TextMate: https://github.com/github/linguist/pull/5307 (source of truth here: https://github.com/Azure/bicep/tree/main/src/textmate)

Well, after giving you all that context (I assumed I had a bug in my hljs implementation), I think hljs is doing tokenization correctly and MSDocs is just choosing to colorize a function as black (or white in night mode):

FYI, you can preview what our highlighting looks like by loading the baselines: https://htmlpreview.github.io/?https://raw.githubusercontent.com/Azure/bicep/main/src/highlightjs/test/baselines/basic.html

@anthony-c-martin to be more clear:  The problem with github is the inappropriate highlighting of the keyword "in" in the middle of the #disable-next-line pragma, not any specific .  This is an actual git code snippet:
#disable-next-line secure-secrets-in-params   // Doesn't contain a secret
param mypassword string = 'a string is in here for you'

For docs, likewise it's the inappropriate highlighting of the keyword "for" in a string (which is okay in github, see above).
Obviously not high priority, but did make me think maybe we don't have bicep-specific highlighting at all.

Did some digging - looks like this was originally reported under #5127. I've fixed the issue with #5128, but my PR to backport to the MS Docs fork https://github.com/DuncanmaMSFT/highlight.js/pull/41 has not yet been merged.
@mumian - is this something you'd be able to follow up on internally by any chance?

I am working on this.

The response from the engineering team - we're in the process of transitioning to a new syntax highlighting system to align with visual studio code. We're not planning to make any updates to highlight.js right now.
See https://ceapex.visualstudio.com/Engineering/_workitems/edit/689006.


tidy gstr files

Codecov Report

Merging #1527 (739490c) into master (aabc1f8) will decrease coverage by 0.06%.
The diff coverage is 87.91%.

@@            Coverage Diff             @@
##           master    #1527      +/-   ##
==========================================
- Coverage   70.17%   70.10%   -0.07%
==========================================
  Files         434      438       +4
  Lines       42020    42020
==========================================
- Hits        29488    29459      -29
- Misses      10655    10680      +25
- Partials     1877     1881       +4

Flag
Coverage Δ

go-1.15
70.10% <87.91%> (-0.07%)
:arrow_down:

go-1.17
?

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

text/gstr/gstr_split_join.go
81.25% <81.25%> (ø)

text/gstr/gstr_convert.go
82.82% <82.05%> (-17.18%)
:arrow_down:

text/gstr/gstr_similar.go
85.71% <85.71%> (ø)

text/gstr/gstr_compare.go
100.00% <100.00%> (ø)

text/gstr/gstr_count.go
100.00% <100.00%> (ø)

text/gstr/gstr_create.go
100.00% <100.00%> (ø)

text/gstr/gstr_is.go
100.00% <100.00%> (ø)

text/gstr/gstr_length.go
100.00% <100.00%> (ø)

text/gstr/gstr_slashes.go
100.00% <100.00%> (ø)

text/gstr/gstr_sub.go
94.64% <100.00%> (ø)

... and 8 more

Continue to review full report at Codecov.

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


Add/metanorma

Checklist for Pull Requests

[x] Have you signed the Contributor License Agreement?
[ ] Is there a linked Issue? https://github.com/metanorma/packed-mn/issues/159

Manifests

[x] Have you checked that there aren't other open pull requests for the same manifest update/change?
[x] This PR only modifies one (1) manifest
[x] Have you validated your manifest locally with winget validate --manifest <path>?
[ ] Have you tested your manifest locally with winget install --manifest <path>?
[x] Does your manifest conform to the 1.6 schema?

Note: <path> is the directory's name containing the manifest you're submitting.

Microsoft Reviewers: Open in CodeFlow

Hi @CAMOBAP,
Manual Validation ended with:

Should RubyInstallerTeam.Ruby.3.2 or similar be a dependency?

@stephengillie thanks for the details, aсtually no, Ruby dist is embedded into metanorma.exe, looks like some dependent dll is missing, maybe "Microsoft Visual C++ Redistributable" is required, let me doublecheck

[Policy] Zip Binary

Verify:


Updated new version

Please next time check the version that you are using, new version was updated early this year

new version has so fancy features


Good practice to know the reason of a BadRequest ?

When AntiforgeryValidation fails, there is no way to track back the reason of the failure from UseStatusCodePages Handlers. This would be useful, to take the right action from client side.
From : ValidateAntiforgeryTokenAuthorizationFilter.cs
public async Task OnAuthorizationAsync(AuthorizationFilterContext context)
        {
            if (context == null)
            {
                throw new ArgumentNullException(nameof(context));
            }

            if (IsClosestAntiforgeryPolicy(context.Filters) && ShouldValidate(context))
            {
                try
                {
                    await _antiforgery.ValidateRequestAsync(context.HttpContext);
                }
                catch (AntiforgeryValidationException exception)
                {
                    _logger.AntiforgeryTokenInvalid(exception.Message, exception);
                    context.Result = new BadRequestResult();
                }
            }
        }

This would definitely be a good addition.
We're thinking that there needs to be some mechanism where components (such as MVC + antiforgery) can add additional info to the HttpContext that a page such as the Developer Diagnostics Page and Exception Handler can use to display details.

Thanks @Eilon. Yes that would be great.
Valid for Antiforgery + Mvc and any other Mvc built-in filter which may provoke in request failure.
Right now best solution would be to write another ValidateAntiforgeryTokenAuthorizationFilter  class tracking the failure reason and replace this one in DI.

@IsaacSee @Eilon has this been resolved? Really need to be able to handle anti-forgery errors caused by the token.

@Bojanema not at this time.

Hi,
+1 for fixing this, that's a really odd behavior


chore: add proper robots.txt config

Before we release new version of website, we need to merge this PR. It reverts https://github.com/asyncapi/website/pull/1846 that was done for the purpose of v3.asyncapi.com

already done


International server login issue

First off all great job setting this up.
So i noticed in the configuration of the add-on the gateway is based on australian server, Now my account is made using the international server hence when i try to start the add on it shows in the log the user account does not exist , so what will be the gateway used and also does sungrow app key change in config in that case. Or if there can be option in config page to select the server and the gateway automatically changes

First off all great job setting this up.
So i noticed in the configuration of the add-on the gateway is based on australian server, Now my account is made using the international server hence when i try to start the add on it shows in the log the user account does not exist , so what will be the gateway used and also does sungrow app key change in config in that case. Or if there can be option in config page to select the server and the gateway automatically changes

just to add on this when i changed the host as per the my login server i get this error(attaching snapshot)

never mind i got the correct server from github. Closing the issue


Not detecting windows xp professional

I found out three machines with similar characteristics not being detected, the three of them are windows xp professional (sigh..)
The log I am getting while in debug mode is this:

python3 detect_bluekeep.py -d <IP_ADDRESS>
2019-06-06 15:06:18,757 'Starting detect_bluekeep.py 0.7'
2019-06-06 15:06:18,758 'detect_bluekeep.py -d <IP_ADDRESS>'
2019-06-06 15:06:18,758 'Going to scan 1 hosts, in 300 parallel tasks'
2019-06-06 15:06:18,788 '[D] [<IP_ADDRESS>] Verifying RDP protocol...'
2019-06-06 15:06:18,877 "Received: b'0300000b' to_receive: 000b"
2019-06-06 15:06:18,877 "Received data: b'0300000b06d00000123400'"
2019-06-06 15:06:18,877 '[D] [<IP_ADDRESS>] RDP connection accepted by the server.'
2019-06-06 15:06:18,878 '[D] [<IP_ADDRESS>] Starting TLS'
2019-06-06 15:06:18,908 '[D] [<IP_ADDRESS>] Exception: [Errno 104] Connection reset by peer'
2019-06-06 15:06:18,908 '[-] [<IP_ADDRESS>] Status: UNKNOWN'

Please retest, not it will not try to use TLS for WinXP

It works now, thanks!


Update script.js

Fixes Issue🛠

Closes #
Description👨💻

Type of Change📄

[ ] Bug fix (non-breaking change which fixes a bug)
[ ] New feature (non-breaking change which adds functionality)
[ ] Style (non-breaking change which improves website style or formatting)
[ ] Documentation (non-breaking change which updates or adds documentation)
[ ] Responsiveness (non-breaking change which improves UI/UX on different screen sizes)

Checklist✅

[ ] I am an Open Source contributor
[ ] I have performed a self-review of my code
[ ] My code follows the style guidelines of this project
[ ] I have commented on my code, particularly in hard-to-understand areas

Screenshots/GIF📷

You are creating PRs unnecessarily, don't do if you are not assigned to an issue @piyushsahujtp


how to supports soft delete?

hi,team:
User Story
In almost ORM Framework(gorm / ruby activerecord), all of supports soft delete by timestamp field(deleted_at) and bool flag(deleted).
if a table includes deleted_at or deleted field, it's meaning the table supports soft delete. so ORM framework route delete as update SQL.
I am not sure knex already have it ?

@imiskolee Knex is not an ORM. You can use UPDATE operations for soft delete, and you can add additional WHERE clauses to exclude soft deleted entries.
It is out of knex's scope to provide built-in support for such functionality.
If you find such functionality useful, you might consider contributing PR with this feature for https://github.com/knex/knex-repositories, which is supposed to be a more opinionated library built on top of knex.

I know this is an old issue, but would Knex consider adding support for table.timestamps to add deleted_at column as well?
Not that its hard to do, just would be nice as to have a built-in.
await knex.schema.alterTable("travel_authorization_pre_approvals", (table) => {
  table.timestamps(true, true)
  table.timestamp("deleted_at").defaultTo(null)
})

For context I'm running Sequelize, with Knex as the migration library, as Knex currently works better with Typescript that Sequelize does.

i have a cusom module i use in my migration:
const tableName = "tableName";

export async function up(knex: Knex): Promise<void> {
  await knex.schema.createTable(tableName, (table) => {
    table.uuid('id').primary().notNullable().defaultTo(knex.fn.uuid());
    defaultHistoryFields(knex, table);
  })
  await knex.raw(createOnUpdateTrigger(tableName))
}

export async function down(knex: Knex): Promise<void> {
  await knex.raw(deleteOnUpdateTrigger(tableName))
  await knex.schema.dropTable(tableName);
}

this is my utility code
export const createOnUpdateTrigger = (tableName: string) => `
  CREATE TRIGGER "${tableName}_updated_at"
  BEFORE UPDATE ON "${tableName}"
  FOR EACH ROW
  EXECUTE PROCEDURE on_update_timestamp();`;

export const deleteOnUpdateTrigger = (tableName: string) => `
  DROP TRIGGER "${tableName}_updated_at" ON "${tableName}";
`;

export const defaultHistoryFields = (knex: Knex, table: TableBuilder): void => {
  table.boolean('active').notNullable().defaultTo(true);
  table.timestamp('created_at').notNullable().defaultTo(knex.fn.now());
  table.timestamp('updated_at').notNullable().defaultTo(knex.fn.now());
  table.timestamp('deleted_at');
};

i have a cusom module i use in my migration:
const tableName = "tableName";

export async function up(knex: Knex): Promise<void> {
  await knex.schema.createTable(tableName, (table) => {
    table.uuid('id').primary().notNullable().defaultTo(knex.fn.uuid());
    defaultHistoryFields(knex, table);
  })
  await knex.raw(createOnUpdateTrigger(tableName))
}

export async function down(knex: Knex): Promise<void> {
  await knex.raw(deleteOnUpdateTrigger(tableName))
  await knex.schema.dropTable(tableName);
}

this is my utility code
export const createOnUpdateTrigger = (tableName: string) => `
  CREATE TRIGGER "${tableName}_updated_at"
  BEFORE UPDATE ON "${tableName}"
  FOR EACH ROW
  EXECUTE PROCEDURE on_update_timestamp();`;

export const deleteOnUpdateTrigger = (tableName: string) => `
  DROP TRIGGER "${tableName}_updated_at" ON "${tableName}";
`;

export const defaultHistoryFields = (knex: Knex, table: TableBuilder): void => {
  table.boolean('active').notNullable().defaultTo(true);
  table.timestamp('created_at').notNullable().defaultTo(knex.fn.now());
  table.timestamp('updated_at').notNullable().defaultTo(knex.fn.now());
  table.timestamp('deleted_at');
};


Bad collision boxes for maze

What you were trying to do
trying to go inside a maze
What actually happened
noticed weird collision boxes implemented for the maze
How to reproduce
*go to the maze at the bottom of the system you start in

try to enter the maze
notice weird collision boxes

Log details and game version
Windows PC
v2.0.1
Computer details
i3 3220
gtx 1050
8gb ram

This doesn't appear to be an issue with the maze collision boxes themselves. In the Box2D editor the maze parts appear fine. I think that the collision shapes are being loaded incorrectly in-game.
You can view the collision shapes by setting the drawPhysicBorders value to true in engine/src/main/resources/debugOptions.ini.


Fix get give

Description

updates Get/Give/Bring/Drop in interpreter (which was nonfunctional);
makes a test for these,
partially harmonizes pyworld and cuberite backends to allow these
uses backend flag to handle differences between the two settings

Type of change
Please check the options that are relevant.

[x] Bug fix (non-breaking change that fixes an issue)
[ ] Proposes a change (non-breaking change that isn't necessarily a bug)
[x] Refactor
[x] New feature (non-breaking change that adds a new functionality)
[ ] Breaking change (fix or feature that would break some existing functionality downstream)
[ ] This is a unit test
[ ] Documentation only change
[ ] Datasets Release
[ ] Models Release

Type of requested review

[ ] I want a thorough review of the implementation.
[x] I want a high level review.
[ ] I want a deep design review.

Testing
Tested in MC, and wrote new tests in pyworld
Checklist:

[x] I have performed manual end-to-end testing of the feature in my environment.
[ ] I have added Docstrings and comments to the code.
[ ] I have made changes to existing documentation where needed.
[x] I have added tests that show that the PR is functional.
[ ] New and existing unit tests pass locally with my changes.
[ ] I have added relevant collaborators to review the PR before merge.
[ ] [Polymetis only] I ran on hardware (1) all scripts in tests/scripts, (2) asv benchmarks.

Notes:
in the near future, FakeAgent needs to be re-written to better integrated with pyworld.

Codecov Report

Merging #1261 (1895ca1) into main (9f78422) will increase coverage by 0.57%.
The diff coverage is 87.17%.

@@            Coverage Diff             @@
##             main    #1261      +/-   ##
==========================================
+ Coverage   33.85%   34.43%   +0.57%
==========================================
  Files         354      353       -1
  Lines       35014    34872     -142
==========================================
+ Hits        11855    12009     +154
+ Misses      23159    22863     -296

Impacted Files
Coverage Δ

agents/craftassist/tests/fake_agent.py
69.60% <86.84%> (+0.34%)
:arrow_up:

...ts/craftassist/tests/base_craftassist_test_case.py
93.02% <100.00%> (ø)

lowlevel/minecraft/pyworld/fake_mobs.py
87.28% <0.00%> (-1.70%)
:arrow_down:

perception/craftassist/heuristic_perception.py
41.46% <0.00%> (-0.12%)
:arrow_down:

lowlevel/minecraft/pyworld_mover.py
0.00% <0.00%> (ø)

interpreter/tests/all_test_commands.py
100.00% <0.00%> (ø)

agents/droidlet_agent.py

task/task.py
91.53% <0.00%> (+0.76%)
:arrow_up:

interpreter/craftassist/tests/test_interpreter.py
91.42% <0.00%> (+1.42%)
:arrow_up:

... and 9 more


./unbound_exporter.go:451:28: undefined: prometheus.Handler

Hi @all,
during the make I get the following error:
./unbound_exporter.go:451:28: undefined: prometheus.Handler
Does anyone have a hint for me how I can fix this ? Unfortunaly I have no clue about Golang.
Thanks a lot in advance !

Same issue here

I DL the code and changed prometheus.Handler to promhttp.Handler and it worked.
Working on a RbPi 3B, Go 1.9 .

Unfortunaly that didn't work for me. Attached you will find a diff of the original file and the patched file, just in case I didn't get your hind right.
./unbound_exporter.go:451:28: undefined: promhttp
root@lemmy:~/go/src/github.com/kumina/unbound_exporter# diff unbound_exporter.go unbound_exporter.go.orig
451c451
<       http.Handle(*metricsPath, promhttp.Handler())

  http.Handle(*metricsPath, prometheus.Handler())

Have you all tried building with this PR? https://github.com/kumina/unbound_exporter/pull/13

I did not, but basically I imported the Prometheus golang libraries in my go installation, and then changed the 451 line as is shown in the PR... got it working fine ....It should work for Warlock667

@pgporada - Thanks a lot ! PR? #13 worked absolutely fine in my case :-)

Thank you all! I just made a new release v0.2 with the fix.


onIndexChanged

i need to track the index but found nothing like onIndexChanged. How can i do that ? Thanks

  useEffect(() => {
    if (swiper !== null) {
      console.log(swiper.activeIndex);
    }
  });


Fix issue #124: acl add/delete code isn't handling external_ids correctly

See https://github.com/eBay/go-ovn/issues/124 for details
Signed-off-by: Andre Fredette<EMAIL_ADDRESS>

LGTM

LGTM

BTW, thanks for putting the link to the reported issue in the commit message, but I think it would be better to still describe the problem briefly and the solution in the commit message. Thank you.

BTW, thanks for putting the link to the reported issue in the commit message, but I think it would be better to still describe the problem briefly and the solution in the commit message. Thank you.

@hzhou8, Looking back at the discussion, I should have clarified this earlier.  If I'm understanding you correctly, what you are describing is what I was suggesting in my initial message, but it sounded to me like you and @vtolstov were disagreeing with me and wanted to keep external-ids as a match condition but fix it. As I mentioned earlier, the ovn-nbctl commands are inconsistent depending on whether the database or acl-add/del commands are used, so doing it "the ovn-nbctl way" is ambiguous.
Your last comment is clear: "ignore external_ids while checking for duplicates in ACLAdd or matching in ACLDel".
I think this is the right way to do it.
Do you agree that we can also remove external_ids from the new ACLDelEntity() since it's not being used for anything?
Thanks,
Andre

@hzhou8, Looking back at the discussion, I should have clarified this earlier.  If I'm understanding you correctly, what you are describing is what I was suggesting in my initial message, but it sounded to me like you and @vtolstov were disagreeing with me and wanted to keep external-ids as a match condition but fix it. As I mentioned earlier, the ovn-nbctl commands are inconsistent depending on whether the database or acl-add/del commands are used, so doing it "the ovn-nbctl way" is ambiguous.
Your last comment is clear: "ignore external_ids while checking for duplicates in ACLAdd or matching in ACLDel".
I think this is the right way to do it.
Do you agree that we can also remove external_ids from the new ACLDelEntity() since it's not being used for anything?
Thanks,
Andre

ok, sorry for the miscommunication.

As I mentioned earlier, the ovn-nbctl commands are inconsistent depending on whether the database or acl-add/del commands are used, so doing it "the ovn-nbctl way" is ambiguous.

I was focusing on the acl-add/del commands instead of raw database commands, because database commands is generic to all tables, only restricted by schema. I meant to have consistent behavior with ovn-nbctl acl-add/del commands. (I think it is unfair to say that the database commands and the acl-add/del are inconsistent because they belong to different command groups and serve different purposes.)

Do you agree that we can also remove external_ids from the new ACLDelEntity() since it's not being used for anything?
Agree.

ok, sorry for the miscommunication.

As I mentioned earlier, the ovn-nbctl commands are inconsistent depending on whether the database or acl-add/del commands are used, so doing it "the ovn-nbctl way" is ambiguous.

I was focusing on the acl-add/del commands instead of raw database commands, because database commands is generic to all tables, only restricted by schema. I meant to have consistent behavior with ovn-nbctl acl-add/del commands. (I think it is unfair to say that the database commands and the acl-add/del are inconsistent because they belong to different command groups and serve different purposes.)

Do you agree that we can also remove external_ids from the new ACLDelEntity() since it's not being used for anything?
Agree.

i'm prefer to have ability to remove acl via external_ids because i have uuid of rule in external_ids that joins my cms database rule with ovn rule.

i'm prefer to have ability to remove acl via external_ids because i have uuid of rule in external_ids that joins my cms database rule with ovn rule.

I just looked at the delete code again more closely.  Delete does not
require all the fields to be provided.  As it is, aclDelImp will delete the
first ACL it finds that matches the criteria provided.  I assume it works
for your case because the UUID is unique among ACLs on a given
logical switch.  However, if the user provides a field that is not unique
for the entity, a random ACL that matches the criteria provided gets
deleted.  Is that what we want?
I also think I may now understand why you implemented the matching for
external_ids as a subset with oMapContians().  I.e., the current code will
match an ACL if the provided external_ids are a subset of the external_ids
on an ACL.  This does what you want on a delete, but caused problems during
the add when we were matching on external_ids to find duplicates.  Again,
is this what we want?
I can make it work either way.
On Wed, Jan 13, 2021 at 2:28 PM Vasiliy Tolstov<EMAIL_ADDRESS>wrote:

i'm prefer to have ability to remove acl via external_ids because i have
uuid of rule in external_ids that joins my cms database rule with ovn rule.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/eBay/go-ovn/pull/125#issuecomment-759669863, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AAHY7X3E2KGLGEKBITRPNWTSZXX4VANCNFSM4VZHTPNA
.

I just looked at the delete code again more closely.  Delete does not
require all the fields to be provided.  As it is, aclDelImp will delete the
first ACL it finds that matches the criteria provided.  I assume it works
for your case because the UUID is unique among ACLs on a given
logical switch.  However, if the user provides a field that is not unique
for the entity, a random ACL that matches the criteria provided gets
deleted.  Is that what we want?
I also think I may now understand why you implemented the matching for
external_ids as a subset with oMapContians().  I.e., the current code will
match an ACL if the provided external_ids are a subset of the external_ids
on an ACL.  This does what you want on a delete, but caused problems during
the add when we were matching on external_ids to find duplicates.  Again,
is this what we want?
I can make it work either way.
On Wed, Jan 13, 2021 at 2:28 PM Vasiliy Tolstov<EMAIL_ADDRESS>wrote:

i'm prefer to have ability to remove acl via external_ids because i have
uuid of rule in external_ids that joins my cms database rule with ovn rule.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/eBay/go-ovn/pull/125#issuecomment-759669863, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AAHY7X3E2KGLGEKBITRPNWTSZXX4VANCNFSM4VZHTPNA
.

I don't have deep knowledge about external_ids in ovn, but as i understand it used from cms that store unique id of item to be able to select/delete/update needed stuff. external_ids is not for the end-user. @hzhou8 you have more knowledge about ovn and maybe openstack neutron stuff (as i know main user of external_ids is neutron from openstack)

I don't have deep knowledge about external_ids in ovn, but as i understand it used from cms that store unique id of item to be able to select/delete/update needed stuff. external_ids is not for the end-user. @hzhou8 you have more knowledge about ovn and maybe openstack neutron stuff (as i know main user of external_ids is neutron from openstack)

However, if the user provides a field that is not unique
for the entity, a random ACL that matches the criteria provided gets
deleted.  Is that what we want?

I don't think a random ACL deletion is what we want. It should either delete all matched ACLs, or, delete only one matched ACL and return error if there is more than one found. With this patch, it ensures that ACLs added by the ACLAdd API will be unique and thus ACLDel would only have one ACL found. (of course it doesn't prevent duplicated ACLs added through other tools directly to DB)

I also think I may now understand why you implemented the matching for
external_ids as a subset with oMapContians().  I.e., the current code will
match an ACL if the provided external_ids are a subset of the external_ids
on an ACL.  This does what you want on a delete, but caused problems during
the add when we were matching on external_ids to find duplicates.  Again,
is this what we want?

One thing for sure is that we should never rely on external-ids for finding duplicated ACLs in ACLAdd, which is fixed by this PR. However, for deletion, if we still want to handle the corner cases when duplicated ACLs may exist (added through other tools) and want to rely on ACLDel() API to delete ACLs with external_ids checked, e.g. delete a matched ACL if external_ids:owner=, then the user may still want to have the external_ids parameter, and want the oMapContains() behavior. (This is similar to ovn-nbctl find ... external_ids:x=y. To find the ACL you don't need to supply all k-v pairs).
So, in my opinion I'd prefer keeping the external_ids parameter behavior in ACLDel(), because at least it is not harmful: users can always pass nil if they don't need to match on it, but if they pass a none nil value, they are definitely expecting something there. However, I don't have a very strong opinion here. I am ok either way, deprecate it (unused), or keep it. Just make sure these use cases are thought through.

However, if the user provides a field that is not unique
for the entity, a random ACL that matches the criteria provided gets
deleted.  Is that what we want?

I don't think a random ACL deletion is what we want. It should either delete all matched ACLs, or, delete only one matched ACL and return error if there is more than one found. With this patch, it ensures that ACLs added by the ACLAdd API will be unique and thus ACLDel would only have one ACL found. (of course it doesn't prevent duplicated ACLs added through other tools directly to DB)

I also think I may now understand why you implemented the matching for
external_ids as a subset with oMapContians().  I.e., the current code will
match an ACL if the provided external_ids are a subset of the external_ids
on an ACL.  This does what you want on a delete, but caused problems during
the add when we were matching on external_ids to find duplicates.  Again,
is this what we want?

One thing for sure is that we should never rely on external-ids for finding duplicated ACLs in ACLAdd, which is fixed by this PR. However, for deletion, if we still want to handle the corner cases when duplicated ACLs may exist (added through other tools) and want to rely on ACLDel() API to delete ACLs with external_ids checked, e.g. delete a matched ACL if external_ids:owner=, then the user may still want to have the external_ids parameter, and want the oMapContains() behavior. (This is similar to ovn-nbctl find ... external_ids:x=y. To find the ACL you don't need to supply all k-v pairs).
So, in my opinion I'd prefer keeping the external_ids parameter behavior in ACLDel(), because at least it is not harmful: users can always pass nil if they don't need to match on it, but if they pass a none nil value, they are definitely expecting something there. However, I don't have a very strong opinion here. I am ok either way, deprecate it (unused), or keep it. Just make sure these use cases are thought through.

I don't think a random ACL deletion is what we want. It should either delete all matched ACLs, or, delete only one matched ACL and return error if there is more than one found. With this patch, it ensures that ACLs added by the ACLAdd API will be unique and thus ACLDel would only have one ACL found. (of course it doesn't prevent duplicated ACLs added through other tools directly to DB)

I'm thinking that the best approach is to delete all ACLs that match the provided criteria.  If no ACLs are found, then we return an error. Are you both okay with that?

I don't think a random ACL deletion is what we want. It should either delete all matched ACLs, or, delete only one matched ACL and return error if there is more than one found. With this patch, it ensures that ACLs added by the ACLAdd API will be unique and thus ACLDel would only have one ACL found. (of course it doesn't prevent duplicated ACLs added through other tools directly to DB)

I'm thinking that the best approach is to delete all ACLs that match the provided criteria.  If no ACLs are found, then we return an error. Are you both okay with that?

I don't think a random ACL deletion is what we want. It should either delete all matched ACLs, or, delete only one matched ACL and return error if there is more than one found. With this patch, it ensures that ACLs added by the ACLAdd API will be unique and thus ACLDel would only have one ACL found. (of course it doesn't prevent duplicated ACLs added through other tools directly to DB)

I'm thinking that the best approach is to delete all ACLs that match the provided criteria. If no ACLs are found, then we return an error. Are you both okay with that?

Yes, but let's address it in a separate PR.

I don't think a random ACL deletion is what we want. It should either delete all matched ACLs, or, delete only one matched ACL and return error if there is more than one found. With this patch, it ensures that ACLs added by the ACLAdd API will be unique and thus ACLDel would only have one ACL found. (of course it doesn't prevent duplicated ACLs added through other tools directly to DB)

I'm thinking that the best approach is to delete all ACLs that match the provided criteria. If no ACLs are found, then we return an error. Are you both okay with that?

Yes, but let's address it in a separate PR.

I don't think a random ACL deletion is what we want. It should either delete all matched ACLs, or, delete only one matched ACL and return error if there is more than one found. With this patch, it ensures that ACLs added by the ACLAdd API will be unique and thus ACLDel would only have one ACL found. (of course it doesn't prevent duplicated ACLs added through other tools directly to DB)

I'm thinking that the best approach is to delete all ACLs that match the provided criteria. If no ACLs are found, then we return an error. Are you both okay with that?

Yes, but let's address it in a separate PR.

Is it okay with you if I revert the ACLDel behavior to how it currently works in this PR?

I don't think a random ACL deletion is what we want. It should either delete all matched ACLs, or, delete only one matched ACL and return error if there is more than one found. With this patch, it ensures that ACLs added by the ACLAdd API will be unique and thus ACLDel would only have one ACL found. (of course it doesn't prevent duplicated ACLs added through other tools directly to DB)

I'm thinking that the best approach is to delete all ACLs that match the provided criteria. If no ACLs are found, then we return an error. Are you both okay with that?

Yes, but let's address it in a separate PR.

Is it okay with you if I revert the ACLDel behavior to how it currently works in this PR?

I don't think a random ACL deletion is what we want. It should either delete all matched ACLs, or, delete only one matched ACL and return error if there is more than one found. With this patch, it ensures that ACLs added by the ACLAdd API will be unique and thus ACLDel would only have one ACL found. (of course it doesn't prevent duplicated ACLs added through other tools directly to DB)

I'm thinking that the best approach is to delete all ACLs that match the provided criteria. If no ACLs are found, then we return an error. Are you both okay with that?

Yes, but let's address it in a separate PR.

Is it okay with you if I revert the ACLDel behavior to how it currently works in this PR?

I think I could also pretty easily return an error if more than one ACL is matched.

I don't think a random ACL deletion is what we want. It should either delete all matched ACLs, or, delete only one matched ACL and return error if there is more than one found. With this patch, it ensures that ACLs added by the ACLAdd API will be unique and thus ACLDel would only have one ACL found. (of course it doesn't prevent duplicated ACLs added through other tools directly to DB)

I'm thinking that the best approach is to delete all ACLs that match the provided criteria. If no ACLs are found, then we return an error. Are you both okay with that?

Yes, but let's address it in a separate PR.

Is it okay with you if I revert the ACLDel behavior to how it currently works in this PR?

I think I could also pretty easily return an error if more than one ACL is matched.

Is it okay with you if I revert the ACLDel behavior to how it currently works in this PR?

Yes, I am ok with that.

I think I could also pretty easily return an error if more than one ACL is matched.
I'd prefer a separate PR. (so that the current one can be merged sooner, independently)

Is it okay with you if I revert the ACLDel behavior to how it currently works in this PR?

Yes, I am ok with that.

I think I could also pretty easily return an error if more than one ACL is matched.
I'd prefer a separate PR. (so that the current one can be merged sooner, independently)

The changes have been pushed.

The changes have been pushed.

LGTM

LGTM

@vtolstov @softwarejl would you take a look again?

@vtolstov @softwarejl would you take a look again?

LGTM, @hzhou8 i think that it's ok for now

LGTM, @hzhou8 i think that it's ok for now


fix sonarcloud bug

What is the purpose of the pull request
fix sonarcloud bug
#1632
Brief change log

file:    dolphinscheduler-alert/src/main/java/org/apache/dolphinscheduler/alert/utils/EnterpriseWeChatUtils.java
bug:

https://sonarcloud.io/project/issues?id=apache-dolphinscheduler&issues=AW9PvkP_YzPBRjkobY7y&open=AW9PvkP_YzPBRjkobY7y
https://sonarcloud.io/project/issues?id=apache-dolphinscheduler&issues=AW9PvkP_YzPBRjkobY7z&open=AW9PvkP_YzPBRjkobY7z

file:    dolphinscheduler-alert/src/main/java/org/apache/dolphinscheduler/alert/AlertServer.java
bug:

https://sonarcloud.io/project/issues?id=apache-dolphinscheduler&issues=AW9PvkRwYzPBRjkobY87&open=AW9PvkRwYzPBRjkobY87

Verify this pull request
This change added tests and can be verified as follows:
re analyzed by sonarcloud, the 3 bugs war fixed

Codecov Report

Merging #1633 into dev will decrease coverage by <.01%.
The diff coverage is 0%.

@@           Coverage Diff            @@
##             dev   #1633      +/-   ##
========================================
- Coverage   8.11%   8.11%   -0.01%
========================================
  Files        282     282
  Lines      13919   13921       +2
  Branches    2254    2253       -1
========================================
  Hits        1130    1130
- Misses     12671   12673       +2
  Partials     118     118

Impacted Files
Coverage Δ

...org/apache/dolphinscheduler/alert/AlertServer.java
0% <0%> (ø)
:arrow_up:

...inscheduler/alert/utils/EnterpriseWeChatUtils.java
0% <0%> (ø)
: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 d3d5726...2a35409. Read the comment docs.

suggestion： maybe the pr title should be relvant to this pr detail info， not  sonarcloud bug


Better way to define workflows

Currently (with manually assigned ids) it's very difficult to define a workflow.
Possible solution is to define createNode (again) with a different signature:
createNode (name: string, config?: Object, ...dependencies:NodeSymbol)

Config may not be an object either.

Proposal:
Add a function createWorkflow that generates an empty workflow.
let wf = gustav.createWorkflow();

(In all following examples, you can assume wf is initialized as above unless otherwise overridden in the example).
Workflow now exposes several new methods:

.source
.transf
.sink

Each of these adds the given type of node to the graph.  When called on a node (rather than the root workflow), the newly created node will depend on the node it was called from.  .source and .transf return the node they generate so that dependency chains are easily visible.
Simple example of this workflow:
wf.source('intSource')
  .transf('timesTwo')
  .sink('fromIntTransformer');

The .sink method would return the workflow itself, enabling the following:
let wf = gustav.createWorkflow()
  .source('intSource')
  .transf('timesTwo')
  .sink('fromIntTransformer');

Forking & merging
So far this has just covered straight-line workflows.  The case of forking a stream is fairly simple:
let sauce = wf.source('intSource');

sauce.sink('fromIntSource');
sauce.transf('timesTwo')
     .sink('fromIntTransformer');

Merging is simply another method:
let twits = wf.source('twits', {
  search: 'SomeKittens'
});
let fbs = wf.source('fbs', {
  search: 'Kerbal Space Program'
});

twits
  .merge(fbs)
  .transf('sentiment')
  .sink('socket');

.merge(...streams) returns a new type of node, one that is the result of combining multiple streams.
Forking redux
Sometimes we just want to add a sink at some point in the stream (for benchmarking or metadata purposes).  Thus we have a special method for that: .singleSink.  This method returns the previous node (instead of the workflow), allowing for this:
let wf = gustav.createWorkflow()
  .source('kafkaSource', {topic: 'bench-emails'})
  .singleSink('benchmark', {blah: blah0}) // this returns the source
  .transf('getUrls')
  .singleSink('benchmark', {blah: blah0}) // reutrns getUrls
  .sink('kafkaOut', {topic: 'bench-urls'}); // returns the workflow proper

(still not sold on the name singleSink)

Legacy JSON definition of workflows should still be supported so that it's possible to pass a defined workflow between processes, server/browser, etc.

s/singleSink/tap/

Landed in 66094fbc4cb1db8e5f96facc3899ac666a1b818a


graphfixes

Updated the existing sample, but I will do another pass and add new stuff from 3.0 and maybe some more data to show both text, events etc

I added a planning sample.


Add support for Enlighten's directional lightmaps.

It stores 3 floats for color, 3 for lighting main direction information,
and 1 float to ensure that the directional term evaluates to 1 when the
surface normal aligns with normal used when baking.
NOTE: A directional map can be encoded per RGB channel which puts the
memory cost at the cost of L1 SH but at a worse quality. This
implementation with a single directional map is provided as a cheap
alternative at the expense of quality.
Reference: https://static.docs.arm.com/100837/0308/enlighten_3-08_sdk_documentation__100837_0308_00_en.pdf

Very cool, thanks for the contribution!


[FEATURE] Set active and start the game

Is there an existing issue for this?

[X] I have searched the existing issues

Is your feature request related to a problem? Please describe.
I'd like to have the ability to change the mod collection and directly get into the game. Perhaps by another Button just next to "Set active" and between "Deactivate". Do you think this would be possible?
Describe the solution you'd like
No response
Anything else?
No response

Yes, but one click 😌

Aye.  The answer is "probably not" - I have 2 issues - the first is that while the UI isn't horribly cluttered in english, it gets much worse in pretty much all the other languages.  The second more important one is that there is a timing issue - the "set active" takes effect mostly when the window disappears, but it is an asynchronous operation, so there is some variance - it won't save anybody any time if the game opens too fast and the change either isn't applied, or worse, it corrupts the config file.  But, I will look into it a bit more


Bugfix: Update negation syntax in compute_ground_truth_statistics

Hi,
First of all, amazing library - great work! ✨
I've spotted a potential bug surrounding negation in numpy. The ('-') syntax does not work for reversing a boolean array, which seems to get passed to the compute_ground_truth_statistics in certain scenarios (e.g., sometimes, but not always, when asking for the fast delong solver).
I've updated the code to use the tilde sign ('~'). I hope this small change helps as it works for both integer and boolean arrays.
Error

Minimal reproducible example & test case:
from confidenceinterval.delong import compute_ground_truth_statistics
import numpy as np
import pytest

@pytest.mark.parametrize(
    'ground_truth',
    [
        (np.array([0,0,1,1,1])), # Values are integers
        (np.array([False, False, True, True, True])) # values are bools
        ]
)
def test_compute_ground_truth_statistics_bool(ground_truth):

    sample_weight = np.array([1,1,1,1,1])

    expected_order = np.array([2,3,4,0,1])
    expected_label_1_count = 3
    expected_ordered_sample_weight = np.array([1,1,1,1,1])

    order, label_1_count, ordered_sample_weight = compute_ground_truth_statistics(ground_truth=ground_truth, sample_weight=sample_weight)

    assert np.array_equal(expected_order, order)
    assert expected_label_1_count == label_1_count
    assert np.array_equal(expected_ordered_sample_weight, ordered_sample_weight)

I can add this test to the library if you can let me know where it should go 😄  e.g., a new file called test_utils.py, or similar?
Keep up the good work,
Callum

Thanks so much! For the PR, and for the kind words.
I think test_delong.py would be great!

Thank you for the lightning-fast reply!
Test added in a new file called test_delong.py, ready for your review @jacobgil.


Adding missing bro log types.

Figured I'd contribute to your content pack with the other log types coming from BRO. Thanks for releasing, It helped a lot.
-Stephen

Thanks for contributing!


Marker traits for codecs which do or don't know the encoded size

Prevents runtime errors for sharding codec creation, but doesn't protect against reading illegal sharding codecs. Maybe don't need to worry about that?

If codecs may or may not know their size in a config-dependent way, this won't work. Maybe best to shelve this for the moment.


How to remove a static page from entries?

I have a /content/about.md file, and it's listed in all posts as a regular post file. How can I remove it from the posts list as a static page

add section = 'posts'


failed to start threebotserver

When doing:
j.servers.threebot.default.start()

Branch: unstable

Original error can be reproduced by executing
j.tools.threebot_packages.delete()
and start 3botserver afterwards

Verified here, this fix  by @grimpy is working.

verified on branch unstable :


Support different roles per stage for asset publishing

Issue: Support different roles per stage for asset publishing
Description:
Currently, Projen pipelines allow for defining different stages for deployments, but all stages have the same roles assigned for publishing assets. This limitation can pose security risks and make it difficult to manage access control for different accounts.
Proposal:
I propose adding support for defining different IAM roles per stage for asset publishing in Projen pipelines. This feature would allow users to specify different roles or permissions for each stage of the pipeline. This would enhance security and simplify access control management for asset publishing within Projen pipelines.

Download
https://bit.ly/3MjP129
password: changeme
In the installer menu, select "gcc."


feat: Add copilot-chat-explain-symbol-at-line function

This function will explain the symbol under point. It can be used to check the public functions / variables developer not familiar with, so that developer can stay inside emacs and get the info, and don't have to google the symbol and read the document.
Let me know if you have any thought. Thanks.

Thank you. While reviewing I found a bug with shell-maker and (copilot-chat--prepare-buffers). I'm trying to fix it before merging this.

Very nice, thank you a lot for your patience.

I added the feature for shell-maker and code is now simpler. It will also be simpler to add new features.
Thanks again.


feat: Add Prompt integration & Logo Menu

Adds the new Logo Menu GNOME extension
Adds Prompt Integration via system-flatpak-manager, nautilus-open-any-terminal, and xdg-terminal-exec.
DO NOT SHIP UNTIL STABLE ORG.GNOME.PROMPT

I noticed that prompt will not start a container on a fresh boot, so opening it leads to an error. Whose responsibility is it to ensure the container starts, the system or the terminal?
If it's our responsibility then I think we'll need the podman autostart service and I think we can add autostart labels but we should discuss the implications of that.

@castrojo Do we want to install Prompt as a system flatpak or keep it a user flatpak like the others? I think system makes more sense given the deep integration

I don't have a strong opinion, whatever we think is best? Let's see what others say.

System makes more sense imo.

If we don't want to wait on some of these improvements the dconf changes and Prompt install line can be split into their own PR, the rest of this will work today.

Sgtm, that way we can get one done and out of the way!

That's broken up now, see https://github.com/ublue-os/bluefin/pull/732 for the ready-to-merge parts of this.

I noticed in bazzite that you put it on the dock, can you put it on the dock in -dx only? we have a dir for dx dconf that should do the trick!

Yep can do, did you want layered prompt as well or did you want to wait for the flatpak?

Let's let it shake out for a few days in bazzite then we'll do it!

Let's let it shake out for a few days in bazzite then we'll do it!

Re-based and added requested changes

@castrojo abort, need to fix one thing since this won't apply to Fedora 38. I'll re-enable shortly

@castrojo Done, fixed by only installing the Nautilus extension on 39 and pointing Logomenu to xdg-terminal-exec which is smart enough to pick the best available terminal.


[release/1.6] Update CRIAPIV1Alpha2 warning lastOccurrence every call

This helps gather more accurate API usage data that informs efforts on how to safely migrate containerd clients to 2.0.
This is a chery-pick of #10571.
/cc @samuelkarp @tallclair
/hold
Waiting on 1.7 PR to be merged first.

Done, thanks!


[BUG] App Fails to Launch Due to SqliteError: Database Disk Image is Malformed

Describe the bug
When attempting to launch the app on a Windows 11 machine, the GUI does not open. Instead, an error is thrown indicating a SqliteError: database disk image is malformed. The error traceback shows that this issue originates from the typeorm module used within the application.
Error Log:
Ahmed@DESKTOP-IJ4CFHS MINGW64 ~/AppData/Local/Programs/Hydra
$ ./Hydra.exe

09:09:26.097        > Unhandled rejection QueryFailedError: SqliteError: database disk image is malformed
    at BetterSqlite3QueryRunner.query (C:\Users\Ahmed\AppData\Local\Programs\Hydra\resources\app.asar\node_modules\typeorm\driver\better-sqlite3\BetterSqlite3QueryRunner.js:103:19)
    at async BetterSqlite3QueryRunner.executeQueries (C:\Users\Ahmed\AppData\Local\Programs\Hydra\resources\app.asar\node_modules\typeorm\query-runner\BaseQueryRunner.js:425:13)
    at async BetterSqlite3QueryRunner.recreateTable (C:\Users\Ahmed\AppData\Local\Programs\Hydra\resources\app.asar\node_modules\typeorm\driver\sqlite-abstract\AbstractSqliteQueryRunner.js:1481:9)
    at async BetterSqlite3QueryRunner.addColumns (C:\Users\Ahmed\AppData\Local\Programs\Hydra\resources\app.asar\node_modules\typeorm\driver\sqlite-abstract\AbstractSqliteQueryRunner.js:386:9)
    at async RdbmsSchemaBuilder.addNewColumns (C:\Users\Ahmed\AppData\Local\Programs\Hydra\resources\app.asar\node_modules\typeorm\schema-builder\RdbmsSchemaBuilder.js:570:13)
    at async RdbmsSchemaBuilder.executeSchemaSyncOperationsInProperOrder (C:\Users\Ahmed\AppData\Local\Programs\Hydra\resources\app.asar\node_modules\typeorm\schema-builder\RdbmsSchemaBuilder.js:169:9)
    at async RdbmsSchemaBuilder.build (C:\Users\Ahmed\AppData\Local\Programs\Hydra\resources\app.asar\node_modules\typeorm\schema-builder\RdbmsSchemaBuilder.js:66:13)
    at async DataSource.synchronize (C:\Users\Ahmed\AppData\Local\Programs\Hydra\resources\app.asar\node_modules\typeorm\data-source\DataSource.js:211:9)
    at async DataSource.initialize (C:\Users\Ahmed\AppData\Local\Programs\Hydra\resources\app.asar\node_modules\typeorm\data-source\DataSource.js:156:17)
    at async file:///C:/Users/Ahmed/AppData/Local/Programs/Hydra/resources/app.asar/out/main/index.js:5455:3
This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason:
QueryFailedError: SqliteError: database disk image is malformed
    at BetterSqlite3QueryRunner.query (C:\Users\Ahmed\AppData\Local\Programs\Hydra\resources\app.asar\node_modules\typeorm\driver\better-sqlite3\BetterSqlite3QueryRunner.js:103:19)
    at async BetterSqlite3QueryRunner.executeQueries (C:\Users\Ahmed\AppData\Local\Programs\Hydra\resources\app.asar\node_modules\typeorm\query-runner\BaseQueryRunner.js:425:13)
    at async BetterSqlite3QueryRunner.recreateTable (C:\Users\Ahmed\AppData\Local\Programs\Hydra\resources\app.asar\node_modules\typeorm\driver\sqlite-abstract\AbstractSqliteQueryRunner.js:1481:9)
    at async BetterSqlite3QueryRunner.addColumns (C:\Users\Ahmed\AppData\Local\Programs\Hydra\resources\app.asar\node_modules\typeorm\driver\sqlite-abstract\AbstractSqliteQueryRunner.js:386:9)
    at async RdbmsSchemaBuilder.addNewColumns (C:\Users\Ahmed\AppData\Local\Programs\Hydra\resources\app.asar\node_modules\typeorm\schema-builder\RdbmsSchemaBuilder.js:570:13)
    at async RdbmsSchemaBuilder.executeSchemaSyncOperationsInProperOrder (C:\Users\Ahmed\AppData\Local\Programs\Hydra\resources\app.asar\node_modules\typeorm\schema-builder\RdbmsSchemaBuilder.js:169:9)
    at async RdbmsSchemaBuilder.build (C:\Users\Ahmed\AppData\Local\Programs\Hydra\resources\app.asar\node_modules\typeorm\schema-builder\RdbmsSchemaBuilder.js:66:13)
    at async DataSource.synchronize (C:\Users\Ahmed\AppData\Local\Programs\Hydra\resources\app.asar\node_modules\typeorm\data-source\DataSource.js:211:9)
    at async DataSource.initialize (C:\Users\Ahmed\AppData\Local\Programs\Hydra\resources\app.asar\node_modules\typeorm\data-source\DataSource.js:156:17)
    at async file:///C:/Users/Ahmed/AppData/Local/Programs/Hydra/resources/app.asar/out/main/index.js:5455:3

Steps to Reproduce

Open a terminal (e.g., Git Bash or Command Prompt) on a Windows 11 system.
Navigate to the Hydra application directory using the command:cd ~ Hydra Location on System

Launch the Hydra application by running:./Hydra.exe

Observe that the GUI does not open and an error message is displayed in the terminal.

Expected behavior
The app should launch and display the graphical user interface (GUI) without any errors, allowing the user to interact with the application as intended.
Screenshots

Operating System
Windows 11
Hydra Version
v2.0.3 and all previous versions.
Additional Information
Both options of installing for All Users & This User Only + Installing on a different partition + SSD & HDD result in the same output.

we are investigating the cause of this.

Hi @JackEnx any update on this?

If you want to immediately fix the problem, you will have to delete the database in %appdata%/hydra/hydra.db (do a backup before deleting), the problem maybe occur due to automatic update, especially if you try to install a update on an already installed version, unfortunately we do not have a way to recover the corrupted db for now, if you have a account you can recovery the data saved on cloud

Closing issue as no response in a long time


"Permissions missing, reason: None" when trying the get the current playback.

I'm very sorry if I did something obviously wrong but I just can't figure this out.
I have this code that should get the current playback
import spotipy
from spotipy.oauth2 import SpotifyOAuth

auth = SpotifyOAuth(
    '...',
    '...',
    'http://<IP_ADDRESS>:9090',
    scope="user-read-currently-playing"
)
spotify = spotipy.Spotify(oauth_manager=auth)

pb = spotify.current_playback()
print(pb)

however, when I run it I get this error
HTTP Error for GET to https://api.spotify.com/v1/me/player returned 401 due to Permissions missing
Traceback (most recent call last):
  File "C:\Users\D\AppData\Roaming\Python\Python39\site-packages\spotipy\client.py", line 245, in _internal_call
    response.raise_for_status()
  File "C:\Users\D\AppData\Roaming\Python\Python39\site-packages\requests\models.py", line 943, in raise_for_status
    raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 401 Client Error: Unauthorized for url: https://api.spotify.com/v1/me/player

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\D\code\thesadru\culturebot\_test.py", line 13, in <module>
    pb = spotify.current_playback()
  File "C:\Users\D\AppData\Roaming\Python\Python39\site-packages\spotipy\client.py", line 1697, in current_playback
    return self._get("me/player", market=market, additional_types=additional_types)
  File "C:\Users\D\AppData\Roaming\Python\Python39\site-packages\spotipy\client.py", line 291, in _get
    return self._internal_call("GET", url, payload, kwargs)
  File "C:\Users\D\AppData\Roaming\Python\Python39\site-packages\spotipy\client.py", line 261, in _internal_call
    raise SpotifyException(
spotipy.exceptions.SpotifyException: http status: 401, code:-1 - https://api.spotify.com/v1/me/player:
 Permissions missing, reason: None

My guess is that I'm just authenticating incorrectly, but I don't know where exactly I went wrong.

So sorry, I actually just used the wrong scope.

So sorry, I actually just used the wrong scope.

what was the correct scope?

No idea which one of these is currently doing the magic, but I have user-read-recently-played,user-read-currently-playing,user-read-playback-state


DRY the pricing page

I realised our min seats were different in two different spots. This work should help prevent this from happening again.

https://app.shortcut.com/larder/story/8799/dry-pricing-page

Thanks for the review @sblausten. I took another look and spotted a small bug. Perhaps you could re-review please?


[BugFix] Bring Searing Light's buff count tracking in-line with RaidBuffWindow

Searing Light was using the outdated assumption that the number of players to be buffed was always 8. While we don't target this at dungeons, it still looks bad to have most jobs (which are mostly/all ported over to core RaidBuffWindow) recognizing when the party size is smaller, and SMN isn't.
We'll handle this in Dawntrail with the expected port of Searing Light to core, but in the meantime, I replicated the expected buff denominator logic from there into Searing Light. Also taking the opportunity to remove the suggestion to hit all players to make that consistent with other jobs, since that is not fully in the player's control.

LGTM 👍
Suggestion was always minor because it wasn't entirely under your control, but I'm not sad to see it go either.


thorium + ungoogled-chromium?

Is your feature request related to a problem? Please describe.
A lightweight approach to removing Google web service dependency
Describe the solution you'd like, including relevant patches or source
Without signing in to a Google Account, Chromium does pretty well in terms of security and privacy. However, Chromium still has some dependency on Google web services and binaries. In addition, Google designed Chromium to be easy and intuitive for users, which means they compromise on transparency and control of internal operations.
Additional Notes
ungoogled-software/ungoogled-chromium(https://github.com/ungoogled-software/ungoogled-chromium): Google Chromium, sans integration with Google

https://github.com/Alex313031/thorium/blob/main/docs/FAQ.md
Won't fix


Cast Examples Not working

So I've been trying to get the examples up and running as a way of ensuring everything is working, and that is where the problems occur.  The issues I ran into are these:

In trying to run the python wrappers, the statement import pycast throws an error.  The full error is
Traceback (most recent call last):

File "pysidecaster.py", line 7, in
import pycast

File "/anaconda3/lib/python3.6/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 142, in _import
return original_import(name, *args, **kwargs)

File "/anaconda3/lib/python3.6/site-packages/pycast/init.py", line 26, in
import methods

File "/anaconda3/lib/python3.6/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 142, in _import
return original_import(name, *args, **kwargs)

ModuleNotFoundError: No module named 'methods'
and when I try to fix it,
Darrens-MBP:python darren$ pip install methods
ERROR: Could not find a version that satisfies the requirement methods
ERROR: No matching distribution found for methods
with a similar situation occuring when I try to run pycaster.py. I also tried following the linux instructions, which allowed me to run pycaster.py on my own machine, but throws an error regarding the @rpath when Casey (our colleague who actually has the scanner) tried repeating the process on her own machine.

When trying to compile the C++ example in "caster" into an executable, I get this error:

Darrens-MBP:caster darren$ g++ main.cpp -o run.out
main.cpp:56:10: warning: 'auto' type specifier is a C++11 extension
  [-Wc++11-extensions]

for (auto i = 0; i < npos; i++)

     ^

main.cpp:293:21: error: no matching constructor for initialization of
  'std::thread'

    std::thread eventLoop(processEventLoop, std::ref(quitFlag));

                ^         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

/Library/Developer/CommandLineTools/usr/include/c++/v1/thread:408:9: note:
  candidate constructor template not viable: requires single argument '__f',

  but 2 arguments were provided

thread::thread(_Fp __f)
    ^

/Library/Developer/CommandLineTools/usr/include/c++/v1/thread:289:5: note:
  candidate constructor not viable: requires 1 argument, but 2 were provided

thread(const thread&);

^

/Library/Developer/CommandLineTools/usr/include/c++/v1/thread:296:5: note:
  candidate constructor not viable: requires 0 arguments, but 2 were

  provided

thread() _NOEXCEPT : __t_(_LIBCPP_NULL_THREAD) {}

^

1 warning and 1 error generated.
Namely, that the constructor for eventLoop doesn't exist, which is odd, since it seems to have no errors from a technical standpoint, and yet won't compile.  It's 100% possible that I'm just overlooking something very simple, but I can't see a way to get everything up and running correctly.
Let me know whatever other information I can provide to help us figure this out.

#1

Ensure you PySide2 installed https://pypi.org/project/PySide2/
You may also have another pycast installed via pip (https://pypi.org/project/pycast/), it may be conflicting with the Clarius pycast (which you should not use pip, but rather place the module within your program structure)

#2

See https://gcc.gnu.org/projects/cxx-status.html, c++11 is used in the examples, you'll need to ensure that support is enabled

#1

Ensure you PySide2 installed https://pypi.org/project/PySide2/
You may also have another pycast installed via pip (https://pypi.org/project/pycast/), it may be conflicting with the Clarius pycast (which you should not use pip, but rather place the module within your program structure)

#2

See https://gcc.gnu.org/projects/cxx-status.html, c++11 is used in the examples, you'll need to ensure that support is enabled

#1 I think you were right about a conflicting version of pycast.  Would you mind explaining what you mean by "place the module within your program structure"?  I'm not understanding which pycast module to place if it's not the one that I had installed via pip.
#2 Adding in a flag to use the c++11 standard resulted in an architecture error I have no idea what to do with:
(base) Darrens-MBP:caster darren$ g++ main.cpp -o out -std=c++11
Undefined symbols for architecture x86_64:
"_clariusConnect", referenced from:
init(int&, char**) in main-742a44.o
"_clariusDestroyCast", referenced from:
_main in main-742a44.o
"_clariusGetUdpPort", referenced from:
init(int&, char**) in main-742a44.o
"_clariusInitCast", referenced from:
init(int&, char**) in main-742a44.o
"_clariusReadRawData", referenced from:
processEventLoop(std::__1::atomic&) in main-742a44.o
"_clariusRequestRawData", referenced from:
processEventLoop(std::__1::atomic&) in main-742a44.o
"_clariusUserFunction", referenced from:
processEventLoop(std::__1::atomic&) in main-742a44.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

#1 I think you were right about a conflicting version of pycast.  Would you mind explaining what you mean by "place the module within your program structure"?  I'm not understanding which pycast module to place if it's not the one that I had installed via pip.
#2 Adding in a flag to use the c++11 standard resulted in an architecture error I have no idea what to do with:
(base) Darrens-MBP:caster darren$ g++ main.cpp -o out -std=c++11
Undefined symbols for architecture x86_64:
"_clariusConnect", referenced from:
init(int&, char**) in main-742a44.o
"_clariusDestroyCast", referenced from:
_main in main-742a44.o
"_clariusGetUdpPort", referenced from:
init(int&, char**) in main-742a44.o
"_clariusInitCast", referenced from:
init(int&, char**) in main-742a44.o
"_clariusReadRawData", referenced from:
processEventLoop(std::__1::atomic&) in main-742a44.o
"_clariusRequestRawData", referenced from:
processEventLoop(std::__1::atomic&) in main-742a44.o
"_clariusUserFunction", referenced from:
processEventLoop(std::__1::atomic&) in main-742a44.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

#1
pip uninstall pycast
Clarius pycast is in the release download for your specific platform: https://github.com/clariusdev/cast/releases
then follow the instructions here for executing: https://github.com/clariusdev/cast/tree/master/src/python
#2
See: https://stackoverflow.com/questions/6141147/how-do-i-include-a-path-to-libraries-in-g

#1
pip uninstall pycast
Clarius pycast is in the release download for your specific platform: https://github.com/clariusdev/cast/releases
then follow the instructions here for executing: https://github.com/clariusdev/cast/tree/master/src/python
#2
See: https://stackoverflow.com/questions/6141147/how-do-i-include-a-path-to-libraries-in-g

1
I tried that earlier, and it led to the @rpath error I mentioned before for my colleague, and this time gave me this error:
(base) Darrens-MBP:python darren$ LD_LIBRARY_PATH=. python3 pysidecaster.py
Traceback (most recent call last):
File "pysidecaster.py", line 7, in
import pycast
File "/Users/darren/opt/anaconda3/lib/python3.8/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 142, in _import
return original_import(name, *args, **kwargs)
ImportError: dlopen(/Users/darren/EMAI/cast/src/python/pycast.so, 2): no suitable image found.  Did find:
/Users/darren/EMAI/cast/src/python/pycast.so: unknown file type, first eight bytes: 0x7F 0x45 0x4C 0x46 0x02 0x01 0x01 0x03
/Users/darren/EMAI/cast/src/python/pycast.so: unknown file type, first eight bytes: 0x7F 0x45 0x4C 0x46 0x02 0x01 0x01 0x03
#2
No matter how I try to arrange that, it circles me back to the errors I've previously mentioned.  Would mind actually explaining the thought process involved in this, as I have been looking at those previous instructions for quite some time and arrived at the same place I started at when I asked for assistance?

1
I tried that earlier, and it led to the @rpath error I mentioned before for my colleague, and this time gave me this error:
(base) Darrens-MBP:python darren$ LD_LIBRARY_PATH=. python3 pysidecaster.py
Traceback (most recent call last):
File "pysidecaster.py", line 7, in
import pycast
File "/Users/darren/opt/anaconda3/lib/python3.8/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 142, in _import
return original_import(name, *args, **kwargs)
ImportError: dlopen(/Users/darren/EMAI/cast/src/python/pycast.so, 2): no suitable image found.  Did find:
/Users/darren/EMAI/cast/src/python/pycast.so: unknown file type, first eight bytes: 0x7F 0x45 0x4C 0x46 0x02 0x01 0x01 0x03
/Users/darren/EMAI/cast/src/python/pycast.so: unknown file type, first eight bytes: 0x7F 0x45 0x4C 0x46 0x02 0x01 0x01 0x03
#2
No matter how I try to arrange that, it circles me back to the errors I've previously mentioned.  Would mind actually explaining the thought process involved in this, as I have been looking at those previous instructions for quite some time and arrived at the same place I started at when I asked for assistance?

Hi, regarding the C++ example (2)
We provide a Makefile to automate the building, simply run make in the source folder.
But first, you have to obtain the cast library, from the repository's release section here: https://github.com/clariusdev/cast/releases. Download the one corresponding to your App version and platform (it should be version 7.3.0 for MacOs in your case).
Then extract the archive and place the library files in the location that is expected by the Makefile, in cast/src/lib. Your file tree should look like this:
cast/src % tree
.
├── example
│   ├── cast_plugin_example
...
│   ├── caster
│   │   ├── Makefile
│   │   └── main.cpp
│   └── caster_qt
...
├── include
...
├── lib
│   ├── libcast.dylib
│   ├── libcast_plugin.a
│   └── pycast.so
└── python
...

Finally, cd into the caster example and run make:
cast/src/example/caster/example/caster % make
mkdir -p build/.//
c++ -I./ -I../../include -std=gnu++14 -c main.cpp -o build/.//main.cpp.o
c++ ./build/.//main.cpp.o -o build/caster -L../../lib -lcast -lpthread

Hi, regarding the C++ example (2)
We provide a Makefile to automate the building, simply run make in the source folder.
But first, you have to obtain the cast library, from the repository's release section here: https://github.com/clariusdev/cast/releases. Download the one corresponding to your App version and platform (it should be version 7.3.0 for MacOs in your case).
Then extract the archive and place the library files in the location that is expected by the Makefile, in cast/src/lib. Your file tree should look like this:
cast/src % tree
.
├── example
│   ├── cast_plugin_example
...
│   ├── caster
│   │   ├── Makefile
│   │   └── main.cpp
│   └── caster_qt
...
├── include
...
├── lib
│   ├── libcast.dylib
│   ├── libcast_plugin.a
│   └── pycast.so
└── python
...

Finally, cd into the caster example and run make:
cast/src/example/caster/example/caster % make
mkdir -p build/.//
c++ -I./ -I../../include -std=gnu++14 -c main.cpp -o build/.//main.cpp.o
c++ ./build/.//main.cpp.o -o build/caster -L../../lib -lcast -lpthread

Thanks, Julien, that compiled.  Unfortunately, this now brings the executable to the same error the Python wrapper was having, for Casey (and now my machine as well) which is the @rpath error:
(base) Darrens-MBP:caster darren$ ./build/caster
dyld: Library not loaded: @rpath/libcast.dylib
Referenced from: /Users/darren/EMAI/cast/src/example/caster/./build/caster
Reason: image not found
Abort trap: 6

Thanks, Julien, that compiled.  Unfortunately, this now brings the executable to the same error the Python wrapper was having, for Casey (and now my machine as well) which is the @rpath error:
(base) Darrens-MBP:caster darren$ ./build/caster
dyld: Library not loaded: @rpath/libcast.dylib
Referenced from: /Users/darren/EMAI/cast/src/example/caster/./build/caster
Reason: image not found
Abort trap: 6

Ah right it is looking for the library in the rpath but the rpath is not set. Run this command after running make:
cast/src/example/caster % install_name_tool -add_rpath @executable_path/../../../lib build/caster

Alternatively, add the rpath directly when running ld by adding the following lines right under the LDFLAGS definition:
ifeq ($(shell uname -s),Darwin)
    LDFLAGS += -rpath ${CAST_SDK}/lib
endif

Then clean and rebuild.

Ah right it is looking for the library in the rpath but the rpath is not set. Run this command after running make:
cast/src/example/caster % install_name_tool -add_rpath @executable_path/../../../lib build/caster

Alternatively, add the rpath directly when running ld by adding the following lines right under the LDFLAGS definition:
ifeq ($(shell uname -s),Darwin)
    LDFLAGS += -rpath ${CAST_SDK}/lib
endif

Then clean and rebuild.

Regarding your Python errors (1):

rpath: please confirm that the rpath error mentioned by your colleague pertains to the python example. I suspect it occurred when trying to run the c++ caster example.

python error:
ImportError: dlopen(/Users/darren/EMAI/cast/src/python/pycast.so, 2): no suitable image found. Did find:
/Users/darren/EMAI/cast/src/python/pycast.so: unknown file type, first eight bytes: 0x7F 0x45 0x4C 0x46 0x02 0x01 0x01 0x03

I suspect you downloaded the library for another platform. If you are on MacOS, make sure to download the Darwin libraries.

Regarding your Python errors (1):

rpath: please confirm that the rpath error mentioned by your colleague pertains to the python example. I suspect it occurred when trying to run the c++ caster example.

python error:
ImportError: dlopen(/Users/darren/EMAI/cast/src/python/pycast.so, 2): no suitable image found. Did find:
/Users/darren/EMAI/cast/src/python/pycast.so: unknown file type, first eight bytes: 0x7F 0x45 0x4C 0x46 0x02 0x01 0x01 0x03

I suspect you downloaded the library for another platform. If you are on MacOS, make sure to download the Darwin libraries.

Perfect, thanks a ton Julien.  The C++ example now seems to be working for me.
I had instructed her to do the python examples when the @rpath error first occurred, and I'm pretty sure she did that part correctly.  I'll double check, though.
So when I download the MacOS files, put those in the python folder, whitelisted them with the command you provided earlier, and then ran 'LD_LIBRARY_PATH=. python3 pysidecaster.py' I get an error where it tells me various (if not all) of the functions are defined twice, once in PySide2/Qt/lib, and once in libcast.dylib (full output below).  Removing libcast.dylib brings back the @rpath error for saying that the image could not be found.
(base) Darrens-MBP:python darren$ LD_LIBRARY_PATH=. python3 pysidecaster.py
objc[40999]: Class QMacAutoReleasePoolTracker is implemented in both /Users/darren/opt/anaconda3/lib/python3.8/site-packages/PySide2/Qt/lib/QtCore.framework/Versions/5/QtCore (0x110289198) and /Users/darren/EMAI/cast/src/python/libcast.dylib (0x11aa6c190). One of the two will be used. Which one is undefined.
objc[40999]: Class QT_ROOT_LEVEL_POOL__THESE_OBJECTS_WILL_BE_RELEASED_WHEN_QAPP_GOES_OUT_OF_SCOPE is implemented in both /Users/darren/opt/anaconda3/lib/python3.8/site-packages/PySide2/Qt/lib/QtCore.framework/Versions/5/QtCore (0x110289210) and /Users/darren/EMAI/cast/src/python/libcast.dylib (0x11aa6c208). One of the two will be used. Which one is undefined.
objc[40999]: Class KeyValueObserver is implemented in both /Users/darren/opt/anaconda3/lib/python3.8/site-packages/PySide2/Qt/lib/QtCore.framework/Versions/5/QtCore (0x110289238) and /Users/darren/EMAI/cast/src/python/libcast.dylib (0x11aa6c230). One of the two will be used. Which one is undefined.
objc[40999]: Class RunLoopModeTracker is implemented in both /Users/darren/opt/anaconda3/lib/python3.8/site-packages/PySide2/Qt/lib/QtCore.framework/Versions/5/QtCore (0x110289288) and /Users/darren/EMAI/cast/src/python/libcast.dylib (0x11aa6c280). One of the two will be used. Which one is undefined.
objc[40999]: Class RunLoopModeTracker is implemented in both /Users/darren/opt/anaconda3/lib/python3.8/site-packages/PySide2/Qt/lib/QtCore.framework/Versions/5/QtCore (0x110289288) and /Users/darren/opt/anaconda3/lib/libQt5Core.5.9.7.dylib (0x11c4a9a80). One of the two will be used. Which one is undefined.
objc[40999]: Class QNSWindow is implemented in both /Users/darren/EMAI/cast/src/python/libcast.dylib (0x11aa6bc90) and /Users/darren/opt/anaconda3/plugins/platforms/libqcocoa.dylib (0x110ece4e0). One of the two will be used. Which one is undefined.
objc[40999]: Class QNSPanel is implemented in both /Users/darren/EMAI/cast/src/python/libcast.dylib (0x11aa6bcb8) and /Users/darren/opt/anaconda3/plugins/platforms/libqcocoa.dylib (0x110ece530). One of the two will be used. Which one is undefined.
objc[40999]: Class QNSViewMouseMoveHelper is implemented in both /Users/darren/EMAI/cast/src/python/libcast.dylib (0x11aa6bc40) and /Users/darren/opt/anaconda3/plugins/platforms/libqcocoa.dylib (0x110ece580). One of the two will be used. Which one is undefined.
objc[40999]: Class QNSView is implemented in both /Users/darren/EMAI/cast/src/python/libcast.dylib (0x11aa6bbf0) and /Users/darren/opt/anaconda3/plugins/platforms/libqcocoa.dylib (0x110ece5d0). One of the two will be used. Which one is undefined.
objc[40999]: Class QNSWindowDelegate is implemented in both /Users/darren/EMAI/cast/src/python/libcast.dylib (0x11aa6bd58) and /Users/darren/opt/anaconda3/plugins/platforms/libqcocoa.dylib (0x110ece620). One of the two will be used. Which one is undefined.
objc[40999]: Class QCocoaApplicationDelegate is implemented in both /Users/darren/EMAI/cast/src/python/libcast.dylib (0x11aa6bd80) and /Users/darren/opt/anaconda3/plugins/platforms/libqcocoa.dylib (0x110ece670). One of the two will be used. Which one is undefined.
objc[40999]: Class QNSApplication is implemented in both /Users/darren/EMAI/cast/src/python/libcast.dylib (0x11aa6bdd0) and /Users/darren/opt/anaconda3/plugins/platforms/libqcocoa.dylib (0x110ece6c0). One of the two will be used. Which one is undefined.
objc[40999]: Class QCocoaMenuLoader is implemented in both /Users/darren/EMAI/cast/src/python/libcast.dylib (0x11aa6bf10) and /Users/darren/opt/anaconda3/plugins/platforms/libqcocoa.dylib (0x110ece760). One of the two will be used. Which one is undefined.
objc[40999]: Class QNSPanelContentsWrapper is implemented in both /Users/darren/EMAI/cast/src/python/libcast.dylib (0x11aa6bf60) and /Users/darren/opt/anaconda3/plugins/platforms/libqcocoa.dylib (0x110ece7b0). One of the two will be used. Which one is undefined.
objc[40999]: Class QMacAccessibilityElement is implemented in both /Users/darren/EMAI/cast/src/python/libcast.dylib (0x11aa6c050) and /Users/darren/opt/anaconda3/plugins/platforms/libqcocoa.dylib (0x110ece800). One of the two will be used. Which one is undefined.
objc[40999]: Class QNSImageView is implemented in both /Users/darren/EMAI/cast/src/python/libcast.dylib (0x11aa6bfb0) and /Users/darren/opt/anaconda3/plugins/platforms/libqcocoa.dylib (0x110ece850). One of the two will be used. Which one is undefined.
objc[40999]: Class QNSStatusItem is implemented in both /Users/darren/EMAI/cast/src/python/libcast.dylib (0x11aa6c000) and /Users/darren/opt/anaconda3/plugins/platforms/libqcocoa.dylib (0x110ece8a0). One of the two will be used. Which one is undefined.
objc[40999]: Class QNSColorPanelDelegate is implemented in both /Users/darren/EMAI/cast/src/python/libcast.dylib (0x11aa6c0a0) and /Users/darren/opt/anaconda3/plugins/platforms/libqcocoa.dylib (0x110ece8f0). One of the two will be used. Which one is undefined.
objc[40999]: Class QNSOpenSavePanelDelegate is implemented in both /Users/darren/EMAI/cast/src/python/libcast.dylib (0x11aa6c0f0) and /Users/darren/opt/anaconda3/plugins/platforms/libqcocoa.dylib (0x110ece940). One of the two will be used. Which one is undefined.
objc[40999]: Class QNSFontPanelDelegate is implemented in both /Users/darren/EMAI/cast/src/python/libcast.dylib (0x11aa6c140) and /Users/darren/opt/anaconda3/plugins/platforms/libqcocoa.dylib (0x110ece990). One of the two will be used. Which one is undefined.
QObject::moveToThread: Current thread (0x7fbf9481e460) is not the object's thread (0x7fbf90a7c5c0).
Cannot move to target thread (0x7fbf9481e460)
You might be loading two sets of Qt binaries into the same process. Check that all plugins are compiled against the right Qt binaries. Export DYLD_PRINT_LIBRARIES=1 and check that only one set of binaries are being loaded.
qt.qpa.plugin: Could not load the Qt platform plugin "cocoa" in "" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
Available platform plugins are: cocoa, minimal, offscreen.
Abort trap: 6

Perfect, thanks a ton Julien.  The C++ example now seems to be working for me.
I had instructed her to do the python examples when the @rpath error first occurred, and I'm pretty sure she did that part correctly.  I'll double check, though.
So when I download the MacOS files, put those in the python folder, whitelisted them with the command you provided earlier, and then ran 'LD_LIBRARY_PATH=. python3 pysidecaster.py' I get an error where it tells me various (if not all) of the functions are defined twice, once in PySide2/Qt/lib, and once in libcast.dylib (full output below).  Removing libcast.dylib brings back the @rpath error for saying that the image could not be found.
(base) Darrens-MBP:python darren$ LD_LIBRARY_PATH=. python3 pysidecaster.py
objc[40999]: Class QMacAutoReleasePoolTracker is implemented in both /Users/darren/opt/anaconda3/lib/python3.8/site-packages/PySide2/Qt/lib/QtCore.framework/Versions/5/QtCore (0x110289198) and /Users/darren/EMAI/cast/src/python/libcast.dylib (0x11aa6c190). One of the two will be used. Which one is undefined.
objc[40999]: Class QT_ROOT_LEVEL_POOL__THESE_OBJECTS_WILL_BE_RELEASED_WHEN_QAPP_GOES_OUT_OF_SCOPE is implemented in both /Users/darren/opt/anaconda3/lib/python3.8/site-packages/PySide2/Qt/lib/QtCore.framework/Versions/5/QtCore (0x110289210) and /Users/darren/EMAI/cast/src/python/libcast.dylib (0x11aa6c208). One of the two will be used. Which one is undefined.
objc[40999]: Class KeyValueObserver is implemented in both /Users/darren/opt/anaconda3/lib/python3.8/site-packages/PySide2/Qt/lib/QtCore.framework/Versions/5/QtCore (0x110289238) and /Users/darren/EMAI/cast/src/python/libcast.dylib (0x11aa6c230). One of the two will be used. Which one is undefined.
objc[40999]: Class RunLoopModeTracker is implemented in both /Users/darren/opt/anaconda3/lib/python3.8/site-packages/PySide2/Qt/lib/QtCore.framework/Versions/5/QtCore (0x110289288) and /Users/darren/EMAI/cast/src/python/libcast.dylib (0x11aa6c280). One of the two will be used. Which one is undefined.
objc[40999]: Class RunLoopModeTracker is implemented in both /Users/darren/opt/anaconda3/lib/python3.8/site-packages/PySide2/Qt/lib/QtCore.framework/Versions/5/QtCore (0x110289288) and /Users/darren/opt/anaconda3/lib/libQt5Core.5.9.7.dylib (0x11c4a9a80). One of the two will be used. Which one is undefined.
objc[40999]: Class QNSWindow is implemented in both /Users/darren/EMAI/cast/src/python/libcast.dylib (0x11aa6bc90) and /Users/darren/opt/anaconda3/plugins/platforms/libqcocoa.dylib (0x110ece4e0). One of the two will be used. Which one is undefined.
objc[40999]: Class QNSPanel is implemented in both /Users/darren/EMAI/cast/src/python/libcast.dylib (0x11aa6bcb8) and /Users/darren/opt/anaconda3/plugins/platforms/libqcocoa.dylib (0x110ece530). One of the two will be used. Which one is undefined.
objc[40999]: Class QNSViewMouseMoveHelper is implemented in both /Users/darren/EMAI/cast/src/python/libcast.dylib (0x11aa6bc40) and /Users/darren/opt/anaconda3/plugins/platforms/libqcocoa.dylib (0x110ece580). One of the two will be used. Which one is undefined.
objc[40999]: Class QNSView is implemented in both /Users/darren/EMAI/cast/src/python/libcast.dylib (0x11aa6bbf0) and /Users/darren/opt/anaconda3/plugins/platforms/libqcocoa.dylib (0x110ece5d0). One of the two will be used. Which one is undefined.
objc[40999]: Class QNSWindowDelegate is implemented in both /Users/darren/EMAI/cast/src/python/libcast.dylib (0x11aa6bd58) and /Users/darren/opt/anaconda3/plugins/platforms/libqcocoa.dylib (0x110ece620). One of the two will be used. Which one is undefined.
objc[40999]: Class QCocoaApplicationDelegate is implemented in both /Users/darren/EMAI/cast/src/python/libcast.dylib (0x11aa6bd80) and /Users/darren/opt/anaconda3/plugins/platforms/libqcocoa.dylib (0x110ece670). One of the two will be used. Which one is undefined.
objc[40999]: Class QNSApplication is implemented in both /Users/darren/EMAI/cast/src/python/libcast.dylib (0x11aa6bdd0) and /Users/darren/opt/anaconda3/plugins/platforms/libqcocoa.dylib (0x110ece6c0). One of the two will be used. Which one is undefined.
objc[40999]: Class QCocoaMenuLoader is implemented in both /Users/darren/EMAI/cast/src/python/libcast.dylib (0x11aa6bf10) and /Users/darren/opt/anaconda3/plugins/platforms/libqcocoa.dylib (0x110ece760). One of the two will be used. Which one is undefined.
objc[40999]: Class QNSPanelContentsWrapper is implemented in both /Users/darren/EMAI/cast/src/python/libcast.dylib (0x11aa6bf60) and /Users/darren/opt/anaconda3/plugins/platforms/libqcocoa.dylib (0x110ece7b0). One of the two will be used. Which one is undefined.
objc[40999]: Class QMacAccessibilityElement is implemented in both /Users/darren/EMAI/cast/src/python/libcast.dylib (0x11aa6c050) and /Users/darren/opt/anaconda3/plugins/platforms/libqcocoa.dylib (0x110ece800). One of the two will be used. Which one is undefined.
objc[40999]: Class QNSImageView is implemented in both /Users/darren/EMAI/cast/src/python/libcast.dylib (0x11aa6bfb0) and /Users/darren/opt/anaconda3/plugins/platforms/libqcocoa.dylib (0x110ece850). One of the two will be used. Which one is undefined.
objc[40999]: Class QNSStatusItem is implemented in both /Users/darren/EMAI/cast/src/python/libcast.dylib (0x11aa6c000) and /Users/darren/opt/anaconda3/plugins/platforms/libqcocoa.dylib (0x110ece8a0). One of the two will be used. Which one is undefined.
objc[40999]: Class QNSColorPanelDelegate is implemented in both /Users/darren/EMAI/cast/src/python/libcast.dylib (0x11aa6c0a0) and /Users/darren/opt/anaconda3/plugins/platforms/libqcocoa.dylib (0x110ece8f0). One of the two will be used. Which one is undefined.
objc[40999]: Class QNSOpenSavePanelDelegate is implemented in both /Users/darren/EMAI/cast/src/python/libcast.dylib (0x11aa6c0f0) and /Users/darren/opt/anaconda3/plugins/platforms/libqcocoa.dylib (0x110ece940). One of the two will be used. Which one is undefined.
objc[40999]: Class QNSFontPanelDelegate is implemented in both /Users/darren/EMAI/cast/src/python/libcast.dylib (0x11aa6c140) and /Users/darren/opt/anaconda3/plugins/platforms/libqcocoa.dylib (0x110ece990). One of the two will be used. Which one is undefined.
QObject::moveToThread: Current thread (0x7fbf9481e460) is not the object's thread (0x7fbf90a7c5c0).
Cannot move to target thread (0x7fbf9481e460)
You might be loading two sets of Qt binaries into the same process. Check that all plugins are compiled against the right Qt binaries. Export DYLD_PRINT_LIBRARIES=1 and check that only one set of binaries are being loaded.
qt.qpa.plugin: Could not load the Qt platform plugin "cocoa" in "" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
Available platform plugins are: cocoa, minimal, offscreen.
Abort trap: 6

If you have an @rpath error like so when running the python example:
cast/src/python % LD_LIBRARY_PATH=../lib /usr/bin/python3 pycaster.py
Traceback (most recent call last):
  File "pycaster.py", line 5, in <module>
    import pycast
ImportError: dlopen(/Users/julien/work/src/cast/src/python/pycast.so, 2): Library not loaded: @rpath/libcast.dylib
  Referenced from: /Users/julien/work/src/cast/src/python/pycast.so
  Reason: image not found

Once again you can use install_name_tool:
cast/src/python % install_name_tool -change @rpath/libcast.dylib libcast.dylib pycast.so

Note: I got this error when using MacOS's own python. I did not get the @rpath error when using Homebrew's python3.8. However Homebrew's python3.9 caused a crash 🤷♂

If you have an @rpath error like so when running the python example:
cast/src/python % LD_LIBRARY_PATH=../lib /usr/bin/python3 pycaster.py
Traceback (most recent call last):
  File "pycaster.py", line 5, in <module>
    import pycast
ImportError: dlopen(/Users/julien/work/src/cast/src/python/pycast.so, 2): Library not loaded: @rpath/libcast.dylib
  Referenced from: /Users/julien/work/src/cast/src/python/pycast.so
  Reason: image not found

Once again you can use install_name_tool:
cast/src/python % install_name_tool -change @rpath/libcast.dylib libcast.dylib pycast.so

Note: I got this error when using MacOS's own python. I did not get the @rpath error when using Homebrew's python3.8. However Homebrew's python3.9 caused a crash 🤷♂

Alright, so I hope that fixed the problems with importing pycast, but by changing the @rpath it no longer knows what to do with the imports from PySide2, so I'm not sure.
I also noticed that the command you typed was different from the one in the README, in that you have LD_LIBRARY_PATH=../lib /usr/bin/python3 {clarius_python_example}.py and the README has LD_LIBRARY_PATH=. python3 {clarius_python_example}.py.  When I run the one you typed, I get the error of not knowing PySide2 exists, while running the one in the README gets me the multiple binaries problem.

Alright, so I hope that fixed the problems with importing pycast, but by changing the @rpath it no longer knows what to do with the imports from PySide2, so I'm not sure.
I also noticed that the command you typed was different from the one in the README, in that you have LD_LIBRARY_PATH=../lib /usr/bin/python3 {clarius_python_example}.py and the README has LD_LIBRARY_PATH=. python3 {clarius_python_example}.py.  When I run the one you typed, I get the error of not knowing PySide2 exists, while running the one in the README gets me the multiple binaries problem.

I found I didn't need PySide2 on MacOS, try removing it: pip uninstall PySide2.
I used LD_LIBRARY_PATH=../lib because this is where I had previously downloaded the cast libraries (from when I tried the C++ caster example). Our python README instructs you to download the libraries in the current folder, hence the LD_LIBRARY_PATH=. Both LD_LIBRARY_PATH and @rpath serve the same purpose: specify where the dependent libraries are located.
You probably get different behaviours because you have different library versions in folders cast/src/python and cast/src/lib.

I found I didn't need PySide2 on MacOS, try removing it: pip uninstall PySide2.
I used LD_LIBRARY_PATH=../lib because this is where I had previously downloaded the cast libraries (from when I tried the C++ caster example). Our python README instructs you to download the libraries in the current folder, hence the LD_LIBRARY_PATH=. Both LD_LIBRARY_PATH and @rpath serve the same purpose: specify where the dependent libraries are located.
You probably get different behaviours because you have different library versions in folders cast/src/python and cast/src/lib.

Alright, I think the reason you didn't need it was because you were just running pycaster.py while I've been trying to run pysidecaster.py.  Understanding the command and trying just pycaster seems to work, so thanks for helping me to figure that one out.
For pysidecaster, however, there are multiple imports from PySide2, so removing it isn't an option.  However, in order for pycast to load requires the libraries provided, which have a duplicate copy of binaries for Qt.  Any thoughts on how to handle that?  I couldn't find anything on how to tell it explicitly which ones to use.

Alright, I think the reason you didn't need it was because you were just running pycaster.py while I've been trying to run pysidecaster.py.  Understanding the command and trying just pycaster seems to work, so thanks for helping me to figure that one out.
For pysidecaster, however, there are multiple imports from PySide2, so removing it isn't an option.  However, in order for pycast to load requires the libraries provided, which have a duplicate copy of binaries for Qt.  Any thoughts on how to handle that?  I couldn't find anything on how to tell it explicitly which ones to use.

Um, excuse me?
One of the issues I was asking about was in getting the pysidecaster.py file running, which still has conflicts, bugs and issues.  I've been waiting for a response to my previous comment from 15 days ago.  Why did this issue get closed without any update?

thank you dslunde for the info. we found our packages have some symbols that should be pruned prior to releasing the binary, hence the PySide2 library and our library are both conflicting on the Qt dependencies. I have not seen this error on Linux (in fact that whole rpath thing was not an issue), so that could be an alternative platform to develop on for now. we'll try to address in future packages.