Fix tests

Hello @ricardosdias! Thanks for opening this PR. We checked the lines you've touched for PEP 8 issues, and found:

In the file tests/test_log/test_log.py:

Line 18:80: E501 line too long (87 > 79 characters)
Line 19:80: E501 line too long (85 > 79 characters)

Codecov Report

Merging #9 (73fa07c) into master (b35f881) will increase coverage by 0.29%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##           master       #9      +/-   ##
==========================================
+ Coverage   81.09%   81.39%   +0.29%
==========================================
  Files          13       13
  Lines         439      446       +7
==========================================
+ Hits          356      363       +7
  Misses         83       83

Flag
Coverage Δ

unittests
81.39% <100.00%> (+0.29%)
:arrow_up:

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

Impacted Files
Coverage Δ

setup.py
0.00% <ø> (ø)

dbaas_base_provider/log.py
100.00% <100.00%> (ø)

tests/test_log/test_log.py
100.00% <100.00%> (ø)

Continue to review full report at Codecov.

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


Inconsistency in Advanced Settings - Configure Windowsettings

My PC is capable of running several accounts at one time. I chose to launch 9 at once and created a 3x3 grid of windows at 2560x1440 desktop resolution.
Arranged the windows for all accounts using Configure Windowsettings in Advanced Settings: every 10th account window overlaps the 1st one, etc...
Problem is that while predefined locations of windows are consistent, the size of some windows (randomly) scales up to 2069x1208.

Is this inconstancy a know issue? Are there any other options to sort the windows, and let the settings remember the last position?

FansyZones don't seem to work with gw2 windows

Yes same issue with me havent found a workaround but its not to hard to arrange all the windows...


Fix mongo tests

Fixes the problem where the functional tests with mongo would not run correctly causing CircleCi to falsely pass.
Uploaded a new ci-mongo docker image based off Federation and that self initializes to a single node replica set for compatibility.

PR has been updated. Reviewers, please be cautious.

Added exit $? at the end of the script so it always returns the last exit code instead of forcing an exit 0

PR has been updated. Reviewers, please be cautious.

PR has been updated. Reviewers, please be cautious.

PR has been updated. Reviewers, please be cautious.

Rebased and fixed conflicts

PR has been updated. Reviewers, please be cautious.

PR has been updated. Reviewers, please be cautious.

PR has been updated. Reviewers, please be cautious.

PR has been updated. Reviewers, please be cautious.

PR has been updated. Reviewers, please be cautious.

Rebased and changed the ci-mongo image to 3.4


installation script missing for Humble

After installing ROS2 humble distro, though perfectly installed, it did not come with setup scripts.
I already have ROS2 iron on my pl and it works pretty fine. And no, this isn't my first time installing it

This is not the correct location for this question.  Can you please try asking on https://robotics.stackexchange.com/ with more information about the way you are installing and what steps you have tried?


Move signing with exposed private key to test utils

https://www.pivotaltracker.com/n/projects/2124891/stories/158725460

Rebased on master, and removed some changes that was accidentally committed to aec_chain_state.erl


refactor(coral): Enable passing env through query for schema requests

About this change - What it does

env can now be passed via query param in the url to fill out the schema form
I added navigate(-1) (which is the last page the user came from) instead of to a certain page, because we don't know (necessarily) where a user came from now.
----> I could update that for the other forms, too?

Resolves: #1307

An observation about implementing the env param in Topic overview: we probably will want to pick the environment from the topicSchemas data. Should we follow the same pattern as here and choose the lowest env available? Because that schema data also has a convenient latestVersion property ^^

Yes as far as I see it, the form should always open for the env that is set in the topic-details header.


FilePath

Adding new variable type called FilePath
Am I correct to place this under sessions in the entity set tests? I wasn't sure where it should go.

@glentennis sessions is the correct entity to place this in.


libHShslogger-1.2.8.so: cannot open shared object file

I have downloaded IHaskell:
commit 44ebe75c0c6c69c6a48bf73094c349c0fe1a0d88
Author: Andrew Gibiansky<EMAIL_ADDRESS>Date:   Thu Apr 23 16:51:44 2015 -0700
I type
./build.sh quick
and it gives me:
... bunch of output ...
Loading package hslogger-1.2.8 ... : can't load .so/.DLL for: libHShslogger-1.2.8.so (libHShslogger-1.2.8.so: cannot open shared object file: No such file or directory)
cabal: Error: some packages failed to install:
ihaskell-<IP_ADDRESS> failed during the building phase. The exception was:
ExitFailure 1
However, when I type
cabal install hslogger
Resolving dependencies...
All the requested packages are already installed:
hslogger-1.2.8
I don't know how to proceed.

---
Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/12473446-libhshslogger-1-2-8-so-cannot-open-shared-object-file?utm_campaign=plugin&utm_content=tracker%2F332399&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F332399&utm_medium=issues&utm_source=github).

This seems like some strange, strange GHC/cabal bug. Perhaps this? Do you have shared: False in your ~/.cabal/config by any chance?
I don't know how to deal with this but I would probably try to deal with it by removing hslogger and then installing IHaskell again. Perhaps in a sandbox (using a sandbox with IHaskell is described here).

I removed hslogger as suggested, and used the sandbox approach. That seemed to help a lot. However, when I type
./build.sh quick
I get
...
The command "ihaskell install" failed. Please check your 'ipython --version'. 3.0 or up is required but it is 3.1.0!
Hmm.
$ ipython --version
3.1.0

Add the bin directory of the sandbox (./cabal-sandbox/bin or some such) to
your PATH.

Thanks. Haskell kernel now works in Jupyter, and this issue can be closed.


updated functions to pass all params

only did the core.dart for now
fix https://github.com/rainyl/opencv_dart/issues/180

Breaking Change: Mat.add, Mat.subtract, Mat.multiply, Mat.divide and corresponding U8 I8 U16 I16 I32 F32 F64 methods are exactly operator +, operator - operator * operator / for cv::Mat now. Basically they are same as before, BUT Mat.multiply<Mat>() and Mat.multiplyMat() now will perform a Matrix Multiplication instead of a element-wise multiplication, use Mat.mul for element-wise, this behavior is same as opencv. NOTE: Matrix multiplication in opencv only support CV_32FC1, CV_32FC2, CV_64FC1, CV_64FC2, if you see some exception like CvException(code: -215, err: , msg:OpenCV(4.10.0) D:\a\opencv.full\opencv.full\build\opencv\modules\core\src\matmul.dispatch.cpp:356: error: (-215:Assertion failed) (type == (((5) & ((1 << 3) - 1)) + (((1)-1) << 3)) || type == (((6) & ((1 << 3) - 1)) + (((1)-1) << 3)) || type == (((5) & ((1 << 3) - 1)) + (((2)-1) << 3)) || type == (((6) & ((1 << 3) - 1)) + (((2)-1) << 3))) in function 'cv::gemm'   ) in cv::gemm of file D:\a\opencv.full\opencv.full\build\opencv\modules\core\src\matmul.dispatch.cpp:356, please check your mat type.
Breaking Change: Mat add(Mat src1, Mat src2, [Mat? dst]) -> Mat add(Mat src1, Mat src2, {Mat? dst, int dtype = -1, Mat? mask})

Do you think we should add more tests to test the functionality of the optional parameters?

Do you think we should add more tests to test the functionality of the optional parameters?

Not really, optional parameters have default values, which will be passed to native C functions, it's fine to just keep them same as C++ default values and no more extra tests needed.
But if you think they are necessary, you can add more tests and I am willing to accept 😄

Do you think we should add more tests to test the functionality of the optional parameters?

Not really, optional parameters have default values, which will be passed to native C functions, it's fine to just keep them same as C++ default values and no more extra tests needed.
But if you think they are necessary, you can add more tests and I am willing to accept 😄
And, thanks for your contributions! 🎉

Thank you for being supportive I enjoy contributing to this project ❤
Also my point for tests was that we make sure that future changes won't break the the optional parameters being passed down correctly, like the reason this issue came up in the first place is that the tests were not covering the changes done by optional parameters

Also my point for tests was that we make sure that future changes won't break the the optional parameters being passed down correctly, like the reason this issue came up in the first place is that the tests were not covering the changes done by optional parameters

Oh I agree with you now, more covered conditions will make this package more robust, just add more tests when you are free, since I am kind of busy recently. 😄


[1.1.1] Fix PEM_write_bio_PrivateKey_traditional() to not output PKCS#8

PEM_write_bio_PrivateKey_traditional() uses i2d_PrivateKey() to do the
actual encoding to DER.  However, i2d_PrivateKey() is a generic
function that will do what it can to produce output according to what
the associated EVP_PKEY_ASN1_METHOD offers.  If that method offers a
function 'old_priv_encode', which is expected to produce the
"traditional" encoded form, then i2d_PrivateKey() uses that.  If not,
i2d_PrivateKey() will go on and used more modern methods, which are
all expected to produce PKCS#8.
To ensure that PEM_write_bio_PrivateKey_traditional() never produces
more modern encoded forms, an extra check that 'old_priv_encode' is
non-NULL is added.  If it is NULL, an error is returned.

This is a backport of #12728 to 1.1.1

This pull request is ready to merge

Merged
56456c3404b0ec27f93816d951ff7a58827481f0 Fix PEM_write_bio_PrivateKey_traditional() to not output PKCS#8


feat(kind): add a subdomain variable

Description of the changes
Hello,
We have a need to use URLs without the .apps. part, in order to achieve that without introducing a breaking change we propose a new variable subdomain that defaults to apps, that way we can set it to an empty string on our side.
We transmit it only to the kind variable since its were we needed but I can make the changes for the other variants.
Regards.
Breaking change

[X] No

Tests executed on which distribution(s)

[X] KinD variant on a K3S cluster

@lentidas please don't delete this branch ATM, we're using it in a project were we can't use your latest version due to breaking changes (argocd namespace), thanks


Permissions improvements

This is basically a brain dump of notes on our permissions system. I'm currently working towards introducing attribute based permissions to solve #8602 and other problems.
As part of that work, I've reviewed the code, cleaned it up a little, and am working towards ensuring we have 100% test coverage, so that refactoring is possible.
Once I get a bit further through this, I'll write up some details of my thoughts on the more long-term items, so that the context isn't lost.
High Priority:

[x] Split public-related and context code into logical components
[x] Ensure we have 100% test coverage
[x] Introduce attribute-based permissions #9025

Cleanups / refactors to make the code more manageable:

[x] Move remaining code out of index.js
[x] refactor the odd way of exporting
[x] rename "effective" -> "providers"
[ ] use modern JS classes
[ ] don't use enumerable:false for the action types
[ ] optimisations e.g. caching, or only building needed objects

Moving towards making permissions a dependency:

[ ] refactor so that hard-coded Ghost-specific logic is configuration
[ ] simplify/abstract out the concept of "context" so that it's easier to add new ones
[ ] maybe think about this a bit like passport? providers & mechanisms 🤔

Long term features:

[ ] can external and public contexts be merged?
[ ] consider reopening / recreating the missing pieces of https://github.com/TryGhost/Ghost/issues/5614
[ ] bring more of the "public" permissions logic into the permissions layer
[ ] Add proper permissions for clients (e.g. a new context / effective permission layer)
[ ] Maybe look at using JSON-based policies or other ways of describing permissions
[ ] More specific error messages for attribute-based permissions ref

Note: bookshelf ref material https://github.com/sequiturs/bookshelf-advanced-serialization

Copied from #10080
Permissions Issue
The permissions service in ghost is not as good as it could be.
One of the biggest issues is that it has a lot of work offloaded to the model layer in permissible functions, this makes the logic for permissions scattered and hard to determine/audit from a single place. But there are some smaller issues we can tackle to help make fixin that easier.
What could be done
Nested loops
Due to the permissions service being quite complex, it is quite hard to see what is going on and reason about it. This is in part due to the API the permissions service provides e.g. canThis(context).edit.posts(model, unsafeAttrs) It need to do numerous loops to build up the data structure, only for it to be used once and thrown away.
If we were to make a change to the canThis api along the lines of:
canThis(context, 'edit', 'post', model, unsafeAttrs);

I think it would result in huge improvement of readability and mantianablity of the module.
External context
As the permissions service has grown it has become necessary to add permissions to unauthenticated requests, we've done this via an external property on the context - this has now split permissions outside of the permissions service. If we were able to bring those permissions back into the permission service, we can again make it more maintaniable, and easier to make future changes.
I think the solution here is to add an Unauthenticated or Anonymous role. To begin with we would just give this role permissions for add and edit actions on the subscriber object.
Owner permissions
We also have scattered through the permissible functions, references and check to the Owner role, this again moves permission logic outside of where it belongs.
To address this we should probably give the Owner role all permissions
(There would still need to be checks to ensure the owner could not remove their role or delete themselves)
App context
We have an app context, that has further complicated the permissions service, as we have to check the permissions of the user AND the app. From initial searching - I don't believe the functionality is used anywhere in ghost, nor has it been documented.
Can we delete it?


Refactor #1706

Desc
Please refer to https://nteract.slack.com/archives/C4S4H8DN1/p1563163274016900

Close this and wait for @wadethestealth to fix this 👍


Deserializers fail with some null values /when not set

Deserializers should be rigourously tested for null values and clearly define necessary field and unnecessary field for each level.

Fixed


Support quantized model like awq with vllm

vLLM had supported awq quantized model yet.
Please add one more params to set --quantization awq

Cant you just load the quantized model from huggingface ?


Hard negatives

Right now, the CNN's negatives training set only includes patches with no overlap with the GT at all. That's a mistake; I should be including more challenging negatives which include the GT, but with a low overlap so that the CNN learns not to activate on off-centre detections (kill some of its spatial invariance!). These aren't "hard negatives" in the traditional sense of "misclassifications produced by a previous version of the detector", but rather just challenging negatives. I think that real hard negatives would be too difficult to implement in the time left.

All working now.


Linq implementation generates wrong query for an ORDER BY following a SELECT

There appears to be a bug in the Linq implementation when generating a query containing an ORDER BY following a SELECT.
class Container<T>
{
    public System.Guid id { get; set; }
    public string Key { get; set; }
    public T Content { get; set; }
}

public class Content
{
    public string Version { get; set; }
}

var content = client.CreateDocumentQuery<Container<Content>>(collection.DocumentsLink)
    .Where(container => container.Key == "MyKey")
    .Select(container => container.Content)
    .OrderBy(content => content.Version);

This generates the following query, returning zero results.
SELECT VALUE root["Content"] FROM root WHERE (root["Key"] = "MyKey") ORDER BY root["Version"] ASC
The following query returns results as expected.
SELECT VALUE root["Content"] FROM root WHERE (root["Key"] = "MyKey") ORDER BY root["Content"]["Version"] ASC

It may be related to issue #208

It repros with 1.17.0 version as well.

Any updates on this?

Bug persists also in 1.7.1! Any plan to fix this in future versions?

Also having this issue.  Any update?

Still broken in Microsoft.Azure.DocumentDB.Core v1.9.1

@bchong95 please look into this.


Proposal for Modular WP Scaffold using Composer

Is your enhancement related to a problem? Please describe.
Currently, WP Scaffold is used to bootstrap new projects at 10up. After the project is underway it can be useful to re-integrate updates to the scaffold. At the moment, such an update has to be done manually. Similarly it is difficult to pull bug fixes back into the project. Lastly, any new features that are added to the wp-scaffold are not readily available to projects started with an older version of wp-scaffold.
Designs
To address these issues I'm proposing a modular composer based approach outlined below.
1) wp-library composer package
The code inside the wp-scaffold would move to this wp-library repo. For MVP, This can be a GitHub repo with a composer.json. The wp-library would be imported into the wp-scaffold using configuration like this in the composer.json.
{
    "repositories": [
        {
            "url": "https://github.com/10up/wp-library",
            "type": "git"
        }
    ],
    "require": {
        "10up/wp-library": "~1.0.0"
    }
}

In the future we can publish a package to packagist to reduce this to a simpler require,
{
    "require": {
        "10up/wp-library": "~1.0.0"
    }
}

With this in place, projects using the wp-scaffold can upgrade to a newer 1.1.0 release by doing a composer update to that version of the wp-library.
{
    "require": {
        "10up/wp-library": "~1.1.0"
    }
}

2) Scaffold extends Theme
The wp-library would implement a Theme object that provides common functionality refactored from includes/core.php. In the wp-scaffold theme, we can extend the Theme in the wp-library.
class Theme extends \TenUp\Theme {

}

In a project with such a setup, The Theme class methods can be customized per the project requirements while retaining the parent wp-library functionality while still supporting upgrade paths.
class Theme extends \TenUp\Theme {

  public function js_detection() {
    parent::js_detection();

    // adds a has-notification class if the browser supports Web Notification API
    echo '<script type="javascript"> if (window.Notification ) { document.documentElement.className += 'has-notification'; } </script>';
  }

}

3) Theme Supports
Once we have a separate wp-library package we can let the wp-scaffolded projects determine what features should be enabled on the Theme using the add_theme_support api.
For instance, in the wp-library we could implement the above javascript detection behind a theme support condition like,
if ( get_theme_support( 'js_detection' ) ) {
  // do js detection here
}

And in the wp-scaffold theme, this can be managed with,
add_theme_support( 'js_detection' );

This approach combined with the composer.json versioning, allows us a lot of flexibility to add & improve features while maintaining backwards compatibility. For instance, if a new version of js_detection needs to be implemented in the same release it can be given a new theme support name.
After upgrading, projects can opt-in to the new release with something like,
add_theme_support( 'experimental_js_detection' );

4) Shared Features
By allowing projects to opt-in to the wp-library features we can introduce other shared features that are used across projects based on type, hosting provider etc.
Examples:

Fieldmanager based Site Settings
Newrelic profiling
Yoast SEO Tuning
Jetpack Tuning
ElasticPress Tuning

5) Scaffold extends Plugin
Similarly the wp-library can provide shared functionality to custom plugins while maintaining an upgrade path for bug fixes and improvements.
class Plugin extends \TenUp\Plugin {

}

Describe alternatives you've considered
This approach requires a composer install step to pull in the wp-library dependency. This is something that is typically incorporated into a build step in Gitlab CI, Circle CI, etc. This approach may not be suitable for projects that don't use Continuous Integration.
Code of Conduct

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

Following up with examples from the previous meeting.
1) Fieldmanager Based Site Settings
We can standardize on Site Settings using the Fieldmanager plugin. The settings can have default fields like Social URLs which are used on most sites. And this feature would only be enabled if the theme declares support for site-settings. Another common pattern is to have Site Settings available as a Dropdown in the Admin Menu.
This can be extended to Headless projects by providing a site-settings endpoint that sends the saved Site Settings over REST.
2) New Relic Profiling
The New Relic theme support feature can be used to help identify common bottlenecks on projects. For example we could wrap New Relic around WP HTTP request calls using hooks like pre_http_request. By monitoring performance of such external APIs we can identify any resulting slow requests.
3) Yoast SEO Tuning
A theme support like yoast_seo_defaults can customize Yoast to match typical 10up defaults. This can include,

Remove from Admin Bar
Remove HTML comments
Remove Admin Notifications
Remove Dashboard Widget

4) ElasticPress Tuning
Different tiers of ElasticPress.io could have different profiles.

Site Search Personas based on type of site. The personas listed here could become presets behind a theme support like, elasticpress_news_persona_default.
Preset synonym dictionaries for different types of content.

The overall goal here is to provide good defaults that don't need to be re-implemented on every project. And at the same time keeping an upgrade path open for revisions and/or bug fixes.

@dsawardekar I really like this idea and was thinking about it for my projects where I created invididual classes to 1) Disable XML RPC, 2) Clean up the wp_head, 3) Remove emojis 4) Clean up the dashboard widgets. Things that could be standardized, even written as small stand-alone plugins. I always go back and forth on whether to include this sort of stuff in the 10up-Experience plugin or within the theme or its own plugin.
As for your specific issue, I would also want to see these 4 use cases broken into their own repositories so that the theme can use composer to require them if necessary. That might save the extra step of using add_theme_support to toggle them off or on when bundled into a larger repo.

@claytoncollie-dmv Separating bigger features into separate packages/plugins is definitely something we can do once we have switched to a modular scaffold. The examples you have noted are perfectly in the Goldilocks zone as wp-library features!
RE: add_theme_support
The add_theme_support has an advantage over separate packages because it works at runtime. For example, a different part of the theme code or plugin can choose to turn off a feature on some requests. With separate packages, it is a build time decision whether to include a package in the composer.json.

@dsawardekar this is a great proposal and makes a ton of sense to me. Would a setup like this be able to amend build tool configurations? Say eslint or babel ? Or even potentially output specific CSS partials depending on the configuration? With regards to Tailwind for instance we'd need to:
a) output a tailwind.config.js
b) install some extra npm packages
c) update CSS partials
I'd be interested to see just how flexibility composer could provide us here


Fix: overflow-hidden for bg gradients

Description

Moves the overflow-hidden class to the parent div of a few elements that use background gradients.
Prevents background gradient from spilling outside of the rounded corners

Related issue

[Fixes #266]

We have a tooltip feature coming which makes this problematic but it's been shelved for now. Still, could you check and perhaps update your PR to account for these coming tooltips?
It takes a few steps. First you add ?admin-token=secret to your URL. It should reveal a panel with an option "show tooltips". Flip it on. Then cycle the BurnTotal widget to the "since-burn" time frame. Now hover over the time frame indicator in the top right.
I'm not happy with the tooltip feature yet. So if you can think of a good way to have a tooltip, and solve this overflow issue at the same time, that'd be very welcome!
If you don't have time for any of this, totally fine too. Just lmk and I'll merge this as-is.

Hey @alextes, sorry I'm just getting back to this... I see what you're talking about where the tooltip feature gets cut off by hiding the overflow... I can try to take a peak at this to see if I can solve for that separately.


Refactor MasterTable to have export prop

@djnunez-aot , we don't know how to test this one :(

@maria-kuzmenko doesnt need to be tested dont worry!


Transaction cursor wrong selection

OrientDB Version: 2.2.30
Java Version: 1.8
OS: OS X
Expected behavior
The document will be returned in the selection although it's out of selection
Actual behavior
The document should not be returned
Steps to reproduce
Create an index
In a transaction create a document in this index
iterateEntriesBetween so that the document will be out of the range. If ascending, it should be before the document, if descending it should be after the document
The problem happens in PureTxBetweenIndexForwardCursor and PureTxBetweenIndexBackwardCursor.
For PureTxBetweenIndexForwardCursor, lastKey will be null and firstKey after the toKey parameter. ODefaultComparator.INSTANCE.compare(nextKey, lastKey) > 0 will return 1 after this but the first item will be still returned.
For PureTxBetweenIndexBackwardCursor, it's even worse, as ODefaultComparator.INSTANCE.compare(nextKey, firstKey) < 0 return 1 and it will return all items from the transaction.
I think it's a critical problem.

Hi @antonzherdev . Fixed. Sorry for the long delay in a fix. Thank you for your report.


chore(deps): upgrade dependencies

Upgrades project dependencies. See details in workflow run.

Automatically created by projen via the "upgrade-2.x" workflow

⚪ Backport skipped
The pull request was not backported as there were no branches to backport to. If this is a mistake, please apply the desired version labels or run the backport tool manually.
Manual backport
To create the backport manually run:
backport --pr 482

Questions ?
Please refer to the Backport tool documentation


v0.2.5-alpha: Failed to load and display the window: You cannot call a method on a null-valued expression.

Hello everyone,
I am trying to use the new v0.2.5-alpha and encounter the following error when running the script:
.\Main.ps1
Show-Window: C:\Temp\Intune-Toolkit\Main.ps1:190
Line |
 190 |  Show-Window
     |  ~~~~~~~~~~~
     | Failed to load and display the window: You cannot call a method on a null-valued expression.

My PowerShell version is as follows:
Name                           Value
----                           -----
PSVersion                      7.4.5
PSEdition                      Core
GitCommitId                    7.4.5
OS                             Microsoft Windows 10.0.22631
Platform                       Win32NT
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
PSRemotingProtocolVersion      2.3
SerializationVersion           <IP_ADDRESS>
WSManStackVersion              3.0

If you require more information, please feel free to contact me directly.
Best regards,
Cristian

Hey Cristian
Did you download from main or from the release.
Because i had a little oopsie in main while merging to my dev branch ;-)
But Main branch is fixed again so if you download that version that could be the issue
if not could you send me the log file

Hello Maxime,
as you said it is now working properly, thanks for the prompt reply!
Best regards,
Cristian


Upgrade pulumi-terraform-bridge to v3.61.0

This PR was generated via $ upgrade-provider pulumi/pulumi-azuread --kind bridge.

Upgrading pulumi-terraform-bridge from v3.60.1 to v3.61.0.

I'm confused why upgrade-provider generates PRs with a provider/go.sum conflict.

I'm guessing because you haven't pulled latest locally or https://github.com/pulumi/upgrade-provider/issues/160.

Now I get:
 ! [rejected]        upgrade-pulumi-terraform-bridge-to-v3.61.0 -> upgrade-pulumi-terraform-bridge-to-v3.61.0 (non-fast-forward)
error: failed to push some refs to 'github.com:pulumi/pulumi-azuread.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

[1] t0yv0@Antons-MacBook-Pro>                                                                                ~/code/pulumi-azuread
[1] t0yv0@Antons-MacBook-Pro> ~/code/upgrade-provider/upgrade-provider pulumi/pulumi-azuread --kind bridge                                                                                ~/code/pulumi-azuread

This is highly unintuitive that uppgrade-provider messes with remote branches or PRs instead of starting from scratch.

Let me delete the branch locally and remotely and start over.


ContextAction.isEnabled needs a context

...and lots of things that fall out from that

Web failures are caused by https://github.com/dart-lang/sdk/issues/52593.


Add qSKOS quality checks

qSKOS defines a set of quality issues.
A service for evaluating a SKOS vocabulary against these is hosted by PoolParty.
I suggest that the VocPub system either
(i) add these issues into the checking process, or
(ii)  run the vocab through the PoolParty quality checker as an additional phase

The point - to utilise qSKOS - is well made but we won't add its rules/test to this profile as VocPub is designed to be part of a SKOS vocabularies profile hierarchy that already (conceptually) includes qSKOS. Here is a draft of the hierarchy that hasn't been made public yet since I haven't got the validation-by-profile tool (Cheka) running properly yet:

So a profile-based validator can expect to follow VocPub's dependency links to qSKOS and other things. When it does, it will then carry our any tests from those profiles that it can find. We will need to implement as many of qSKOS's rules as we can in SHACL (unavailable when qSKOS was originally made) so that Cheka can use them easily.
There is always the potential for a tool like Cheka to encounter non-SHACL validators. Either similar data validation languages  like ShEx or completely different systems like application code (Python, JavaScript functions) and Cheka doesn't know how to deal with those yet but will eventually!


DOB BIS Job Application Ingestion Issue

Sunk deep into the rabbit hole as I tried to fix dob bis ingestion issue in devdb build.
I think the issue can be broken into two parts:

currently the data sync action uses the github action data library to load the three main datasets for unlike most other datasets. This is okay and actually nice design with "layered github actions" (I coined this myself) but the docker image that the action depended on has not really be mainteined since Baiyue left. which raised the question how we want to update this?
The downside of using this layered github action workflow though is that it poses challenge to debugging especially when I am trying to test the more complicated sql query in the yml template itself which prompted me to open this issue in order to develop and test in data library as we normally would.

Falling deeper into the rabbit hole trying to make gdal.VectorTranlate work with our desired sql. However it seems the dialect SQLite option could only take relatively elementary operations according to documentation and statement involves 'CREATE TEMP TABLE' might not work and create a challenge to do all filtering in this data library step

Not sure I am understanding the scope of the issue with the DOB BIS data. @td928 How can be I helpful with dev-db?


[Mentions v2] Create command SearchReportsForRoomMention in Web-E

~HOLD https://github.com/Expensify/App/issues/39504~
As part of enabling room mentions, we need to create a new SearchReportsForRoomMention command in Web-E that will call the same command in Auth, the behavior is described here in the Mentions v2 design doc.

Deployed to prod: https://github.com/Expensify/Web-Expensify/pull/41584#issuecomment-2047769288


Add Slack token support

Adds support for legacy Slack API tokens. Tokens are configured
via an environment variable SLACK_TOKEN. When specified,
an Authorization: Bearer <token> header is added to the
Slack webhook POST.

Thanks for the PR!


Use a Movie and Episode class

Be OO
Use classes for Movie and Episode. Derived from a parent Video with useful hash methods, etc.
PluginBase should really just be just like an interface.
Guessit has a major role in determining here as it'll be used to build those objects (in video constructor or a factory)
Video

Path
Hash (OpenSubtitles & TheSubDB)
Keywords
Associated subtitles
Scan() to refresh associated subtitles

Episode (from Video)

Show Name
Episode number
Season number
Episode Title

Movie (from Video)

Name
Year

Done in 4d3b050a813a45b3bcc203c1216173a88dcda131


Module won't load in v12 Build 318

Console shows this error:
foundry.js:756 LibWrapperPackageError: Error thrown in hooked function '' for hook 'setup'. Error detected in module Zoom/Pan Options. It is likely this module has not been updated for FVTT Version 12 Stable.

This is *not* a libWrapper bug.

Find information about this module here: https://github.com/shemetz/ZoomPanOptions
Report this issue here: https://github.com/shemetz/ZoomPanOptions/issues

== Technical Details:
Detected by libWrapper.
Package ID= zoom-pan-options
Error= Could not find target 'AdaptiveFXAAFilter.prototype._computeLumaReduction': Could not find root scope 'AdaptiveFXAAFilter'.

    at pe (libWrapper-api.js:135:10)
    at de (libWrapper-api.js:152:19)
    at 🎁register [as register] (libWrapper-api.js:525:14)
    at Object.fn (zoom-pan-options.js:680:14)
    at #call (foundry.js:733:20)
    at Hooks.callAll (foundry.js:690:17)
    at Game.setupGame (foundry.js:8941:11)
    at async Game._initializeGameView (foundry.js:10257:5)
onError @ foundry.js:756

Seems to have been caused by https://github.com/foundryvtt/foundryvtt/issues/10209

Fixed in 1.14.0


cannot use "Juypyter: Run selection/line in interactive window" in  v2022.1.1001614873 ms-jupyter

Environment data
#ms-jupyter
v2022.1.1001614873
#ms-python
v2021.12.1559732655,
our current vscode version:
#VScode :
Version: 1.71.2 (user setup)
Commit: 74b1f979648cc44d385a2286793c226e611f59e7
Date: 2022-09-14T21:03:37.738Z
Electron: 19.0.12
Chromium: 102.0.5005.167
Node.js: 16.14.2
V8: <IP_ADDRESS>-electron.0
OS: Windows_NT x64 10.0.22621
Sandboxed: No
Expected behaviour
XXX
Actual behaviour
XXX
Steps to reproduce:
Our extension have dependency in ms-jupyter and ms-python. We were using the above version of ms-jupyter and ms-python in around March and there is not error. However, when we use it now , it cannot work and the interactive window cannot show up. and it seems the command get deleted. "Juypyter: Run selection/line in interactive window"

Thanks for your reply @amunger ! I checked again
It shows this:

And it shows this: when I run from "Juypyter: Run selection/line in interactive window"

That error means that that version of jupyter no longer works at all with the latest VS Code, the API changes over time and eventually certain methods are renamed or removed from the VS Code API. You won't be able to use that combination of versions

@amunger , thanks for your reply. so which version of the VScode should we use for this version of Jupyter? We also tried https://code.visualstudio.com/updates/v1_63, but still not work

@amunger , I tried vscode 1.59 and it worked. But I still want to know when this issue could be fixed?

We don't patch old versions, so using those older versions will always have that issue


Initial set up Error due to a deprecated syntax in dependencies

Description
Describe the issue that you're seeing.
ERROR deprecated: .Site.IsMultiLingual was deprecated in Hugo v0.124.0 and will be removed in Hugo 0.137.0. Use hugo.IsMultilingual instead.

Steps to reproduce
hugo v0.136.2
node: 20.17.0
npm: 10.8.2
ran npm create thulite@latest -- --template doks
gave a project name
moved into the directory
ran npm install
npm warn deprecated<EMAIL_ADDRESS>This module is not supported, and leaks memory.
Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
npm warn deprecated<EMAIL_ADDRESS>Glob versions prior to v9 are no longer supported
added 331 packages, and audited 332 packages in 46s

ran npm run dev
Start building sites …
hugo v0.136.2-ad985550a4faff6bc40ce4c88b11215a9330a74e+extended linux/amd64 BuildDate=2024-10-17T14:30:05Z VendorInfo=snap:0.136.2

ERROR deprecated: .Site.IsMultiLingual was deprecated in Hugo v0.124.0 and will be removed in Hugo 0.137.0. Use hugo.IsMultilingual instead.
Built in 1131 ms
Error: error building site: logged 1 error(s)

found the error line in
<EMAIL_ADDRESS> {{ partial "footer/esbuild-template" (dict "src" $flexsearchLangConfigPath "load" "async" "transpile" false "isMultilingual" site.IsMultiLingual "searchLimit" $searchLimit) -}}

Changed it to hugo.IsMultilingual
ran npm run dev again
Start building sites …
hugo v0.136.2-ad985550a4faff6bc40ce4c88b11215a9330a74e+extended linux/amd64 BuildDate=2024-10-17T14:30:05Z VendorInfo=snap:0.136.2

ERROR render of "section" failed: "/home/sujith/learning-journey/node_modules/@thulite/doks-core/layouts/_default/baseof.html:17:7": execute of template failed: template: blog/list.html:17:7: executing "blog/list.html" at <partial "footer/script-footer" .>: error calling partial: "/home/sujith/learning-journey/node_modules/@thulite/doks-core/layouts/partials/footer/script-footer.html:23:127": execute of template failed: template: partials/footer/script-footer.html:23:127: executing "partials/footer/script-footer.html" at <hugo>: can't evaluate field IsMultiLingual in type interface {}
ERROR render of "section" failed: "/home/sujith/learning-journey/node_modules/@thulite/doks-core/layouts/_default/baseof.html:17:7": execute of template failed: template: _default/list.html:17:7: executing "_default/list.html" at <partial "footer/script-footer" .>: error calling partial: "/home/sujith/learning-journey/node_modules/@thulite/doks-core/layouts/partials/footer/script-footer.html:23:127": execute of template failed: template: partials/footer/script-footer.html:23:127: executing "partials/footer/script-footer.html" at <hugo>: can't evaluate field IsMultiLingual in type interface {}
ERROR render of "page" failed: "/home/sujith/learning-journey/node_modules/@thulite/doks-core/layouts/_default/baseof.html:17:7": execute of template failed: template: blog/single.html:17:7: executing "blog/single.html" at <partial "footer/script-footer" .>: error calling partial: "/home/sujith/learning-journey/node_modules/@thulite/doks-core/layouts/partials/footer/script-footer.html:23:127": execute of template failed: template: partials/footer/script-footer.html:23:127: executing "partials/footer/script-footer.html" at <hugo>: can't evaluate field IsMultiLingual in type interface {}
ERROR render of "taxonomy" failed: "/home/sujith/learning-journey/node_modules/@thulite/doks-core/layouts/_default/baseof.html:17:7": execute of template failed: template: _default/terms.html:17:7: executing "_default/terms.html" at <partial "footer/script-footer" .>: error calling partial: "/home/sujith/learning-journey/node_modules/@thulite/doks-core/layouts/partials/footer/script-footer.html:23:127": execute of template failed: template: partials/footer/script-footer.html:23:127: executing "partials/footer/script-footer.html" at <hugo>: can't evaluate field IsMultiLingual in type interface {}
Built in 967 ms
Error: error building site: render: failed to render pages: render of "404" failed: "/home/sujith/learning-journey/node_modules/@thulite/doks-core/layouts/_default/baseof.html:17:7": execute of template failed: template: 404.html:17:7: executing "404.html" at <partial "footer/script-footer" .>: error calling partial: "/home/sujith/learning-journey/node_modules/@thulite/doks-core/layouts/partials/footer/script-footer.html:23:127": execute of template failed: template: partials/footer/script-footer.html:23:127: executing "partials/footer/script-footer.html" at <hugo>: can't evaluate field IsMultiLingual in type interface {}

i left it at this

Hello,
Your fix is not good.
hugo.IsMultiLingual must be replaced by hugo.IsMultilingual

after all that it i got stuck because of an L,   yes you were right, it worked after i changed just one L

Fixed with @thulite/doks-core v1.8.0 and create-thulite v1.7.3


Inspector obscures selection on the left

For #6461, the persistent sidebar was replaced by an assistant panel that shows only when there’s a selection, essentially returning iD to its original layout, except with the inspector on the left instead of the right (in left-to-right environments).
The advantage to this layout is that it takes up less space when there’s no selection, which is useful in some situations. Unfortunately, as noted in #109 and #265, if you select a feature off to the side, the assistant panel suddenly obscures it. It can seem like the selection is no longer being drawn on the map, and you have no idea what’s selected. In the screenshot below, I selected one of the motorways, which disappeared from view except at the margins:

The solution in #322 was to slowly nudge the viewport to the side to ensure the selection’s visibility. At the time, this animation was problematic both due to poor performance and visual instability when making rapid selection changes. Eventually, #1610 and 79737d2cd01182d172e5906c785e712983223021 made the sidebar persistent in v1.1.0beta1, showing a preview of the inspector when hovering over a feature.
Another idea that was floated at the time was to have the inspector shift to the other side of the map if it would obscure the selection. I suspect iD didn’t go down this path because of its unpredictability.

Another way this issue plays out is that the “Zoom to fit” command zooms the map in such a way that the sidebar can obscure much of the selection, which isn’t what I’d normally want when using that command.

Another way this issue plays out is that the “Center” command zooms the map in such a way that the sidebar can obscure much of the selection.

@1ec5 Yep, that's #6657. We should account for the top toolbar too, since vertical features can sometimes overlap it when centering.


Kebechet update

Update manager ran @10/04/2022, 14:32:34 , Pull Request: https://github.com/shreekarSS/aicoe-osc-demo/pull/3. Management complete.


Enhance some response classes to take location arg

Some Response classes like MovedPermanently or Found...etc have the normal response signature, therefore they don't expose an explicit :location kw arg.
One can easily use the headers: {'Location' => '/foobar'} instead, but it'd be nicer to do it directly. That is...instead of:
MovedPermanently.new(headers: {'Location' => '/foobar' } )

this
MovedPermanently.new(location: '/foobar' )

revising other responses might uncover a similar situation (i.e. it'd be nice to expose other common kw args directly)

fixed in #304


Relative imports

[NF] replace absolute import by relative imports to fix #79
[CC] Remove headers to avoid copyrights  on pyleecan website
Before imports in every pyleecan file were:
from pyleecan.Classes.Circle import Circle

Now it has to be:
from ....Classes.Circle import Circle

Theses changes allows to rename pyleecan folder. The GUI has to be regenerated to work in the new folder.

Thank you for your contribution :)


Various pub/sub helper functions, events & additions

Hello
socket.id = 1234;
socket.subscribe("TOPIC1");
socket.subscribe("TOPIC2");

//Any way to do this?
socket.getAllSubscribedTopics();  //returns ["TOPIC1", "TOPIC2"]

How can i get the subscribed topics for a given socket. At the moment i keep a state myself in memory with the socket id and the subscribed topics, but i think the underlying library already keeps this state but i don't see a way to access that state.
Thanks!

It can make sense to add, we expect each one socket to hold a limited amount of subscriptions anyways, so returning a list can make sense.

Also may I ask if the library internally maintains all the sockets subscribed to a particular channel. If so it would be helpful to have a function to return this too. My scenario is to unsubscribe this particular channel from redis when there are no sockets subscribed for it.

It would even be enough to return the number of sockets if returning sockets is too much. I can think of it in two ways. One is when we call subscribe and unsubscribe function it shall return the number of sockets currently subscribed to that particular channel. If it may seem confusing because one can even think the return value as the number of channels that this particular socket is subscribed to currently.
I think its better to expose a separate function that takes in a channel and returns the number of sockets subscribed to it.

Yes it keeps a list of sockets per topic and also a list of topics per socket. What I am considering is how to best expose this to JS since you don't want to copy out a huge list

If you expose it as forEach you have the issue of iterator invalidation if the user does something like unsubscribe while looping.
If you allocate fill and return a list, that's lots of waste

If you instead make simple functions that cover the most common questions with a simple Boolean return that's awesome
Like bool hasSubscribers(topic), bool isSubscribed(topic), etc

[...] How can i check if a topic already exists before the user subscribes to it? In my case it’s important if the user connects to a topic that has no other devices connected to it. [...]

bool hasSubscribers("topic")

[...] I think its better to expose a separate function that takes in a channel and returns the number of sockets subscribed to it. [...]

Okay so make it return integer instead

[...] get a list of all subscribed topics on close / when calling unsubscribeAll [...].

[...] How can i get the subscribed topics for a given socket. [...]

Okay we can return a list here since we expect one socket to have limited amounts of subscriptions

[...] How can i check if a topic already exists before the user subscribes to it? In my case it’s important if the user connects to a topic that has no other devices connected to it. [...]

bool hasSubscribers("topic")

[...] I think its better to expose a separate function that takes in a channel and returns the number of sockets subscribed to it. [...]

Okay so make it return integer instead

[...] get a list of all subscribed topics on close / when calling unsubscribeAll [...].

[...] How can i get the subscribed topics for a given socket. [...]

Okay we can return a list here since we expect one socket to have limited amounts of subscriptions

I think the second function to get integer would not be necessary if we have the first boolean function. All we need is to know if a particular channels has any subscribers or not.
The third function makes sense.
To summarise it would be great to have a hasSubscribers(channel): boolean and getChannels(socket): list

Okay I've re-read this thread and it makes a lot of sense.

Calling unsubscribe/subscribe could return the number of sockets subscribed to that topic after done; this way you can release Redis subscriptions when you reach 0 and re-subscribe to Redis when it gets 1.

It could be useful to have a new event: "subscription" where you get called every time a socket subscribes or unsubscribes to a topic:
.subscription(ws, topic, numSubscribers, change, () => {
// clean up or re-establish external Redis subscriptions, keep track, etc
})

Both subscribe and unsubscribe now return [numSubscribers, success]. This helps a bit, but what is really asked for in this thread is a new event for when Topics are created/removed from the TopicTree:
.topic = [](std::string_view topic, unsigned int numSubscribers) {
 // numSubscribers are either 0 or 1 since we only get this event when a Topic is created or removed
}

unsubscribeAll is pointless to expose as a function  - nobody is ever going to use it. It is really only used internally.

@alexhultman Any news regarding my previous comment? Shall I open a separate issue?


Make conversion error clearer and less detailed.

Signed-off-by: kuba--<EMAIL_ADDRESS>Closes https://github.com/src-d/gitbase/issues/615

It would be nice to have the expression that fails to be casted but I suppose you don't have that information at that point.

I have it on the higher level, but not here. On the other hand on the higher level it's hard to figure out what is the error, because it comes from spf13/cast. Unfortunately in this package error handling is not done very well - errors are either hardcoded/formatted strings or private vars. That's why here: https://github.com/src-d/go-mysql-server/blob/5902fdbadea472df18c15fb70d8c77ebe386c3a0/sql/expression/convert.go#L187
we have to do this ugly thing!


JDK 9 no longer contains JAXB API's as default

Can you explain why this is needed? We changed the code in trunk not to require that module a while ago.

I've follow the Quickstart guide : https://kafka.apache.org/quickstart
had problems running Zookeeper server and kafka server. After some research I manage to make it work adding this flag to the kafka server.

Is this for trunk?

I've download kafka from : https://www.apache.org/dyn/closer.cgi?path=/kafka/<IP_ADDRESS>/kafka_2.11-<IP_ADDRESS>.tgz
the download link is : http://www-eu.apache.org/dist/kafka/<IP_ADDRESS>/kafka_2.11-<IP_ADDRESS>.tgz
so, maybe not. Not sure actually. I see releases are up to 1.0 but the download link hits 0.11

The fix will be part of 1.0, but that's still at RC stage.

You can test 1.0 via the following link:
http://home.apache.org/~guozhang/kafka-1.0.0-rc2/

Closing since this was fixed in a different way.


From SO: Idea doesn't upgrade sources while in local debug for appEngine app

https://stackoverflow.com/questions/47788738/idea-doesnt-upgrade-sources-while-in-local-debug-for-appengine-app

I just installed IntelJIi Idea on windows, and added google cloud tools, by default 'Before launchonly has  [Build](https://static.pychat.org/photo/s1jLYR4H_.png) but it should bebuild exposed app` as I noted in the  stackoverflow response

hi @Deathangel908.  Im having a hard time reproducing this as every app engine standard project that I test has its local server run configuration already populated as follows:

If the artifact is not yet selected, then indeed, the build task for the exploded war artifact is missing:

But, as soon as I select my target artifact, IntelliJ automatically adds the appropriate build task to the 'before launch tasks':

Perhaps you could provide some more information so I can reproduce this:

Are you importing an existing project? Maven project?
Did IntelliJ automatically detect that it is an App Engine standard project and create the Google App Engine Standard Local Server run configuration, or did you create the run configuration yourself (it shouldn't affect this, but I'm curious)?
Could you try creating a new local server run configuration, select your artifact, and report back if the exploded war build task is automatically added:

Sorry for the trouble

closing for now as not reproducible


"Unable to resolve module" - Install issue?

I'm not sure if this is my problem, or something in the dependencies of this project, bit of a JS beginner. I think I have it installed correctly, but the react native packager gives me this error on attempting to load http://localhost:8081/index.ios.bundle
{"message":"Unable to resolve module cldr-data/supplemental/currencyData.json
from /Users/tfallon/Documents/testproject/node_modules/react-native-globalize/lib/globalize.js:
Invalid directory /Users/node_modules/cldr-data/supplemental/currencyData.json",
"name":"UnableToResolveError","type":"UnableToResolveError","errors":[{}]}

Seems like something is looking for cldr in some top level node_modules directory, which doesn't exist. I'm running Node 5.4, npm 3.3.12, and the latest React Native. Any idea what could be going wrong here?
Thanks!

Seems to be an issue with the react native packager: https://github.com/facebook/react-native/issues/4968
There are a few fixes suggested in that thread (e.g. kill and restart the packager, clear the cache, etc.). Try giving those a shot and see if it helps.

Closing for now as this seems to be an RN issue. Let me know if there's anything I can do on my end


Tutorials on implementing new GST models

Is your feature request related to a problem? Please describe.
We are an experimental team, and we would like to do gate set tomography on our 4 level qudit system. Is there a tutorial or reference on how to implement a new GST model? I had a look around and couldn't find one in the document. Alternatively, can I have some hint where to start reading the code? The code seems to be very well engineered and a bit difficult to find where to get started with.
Describe the solution you'd like
A tutorial on how to create a new GST model for custom quantum systems (for example qutrit or qudit), as well as a custom non-standard gate set.
Describe alternatives you've considered
If I can have some hint on where to get started, I can try to contribute this tutorial.

This is a great suggestion, and we'll try to get a tutorial out on this in the near future.  The recently released 0.9.10 is still lacking in this area: models are now created most easily from ProcessorSpec, but currently there's just a QubitProcessorSpec and not a QuditProcessorSpec, which would be a natural addition.  I expect that we'll add this functionality soon and at this point create a tutorial on it.  In the meantime, taking a look at the qutrit example notebook might be the most helpful.

Closing now that version <IP_ADDRESS> is released.


Search - "this expense" in Delete modal changes to "these expenses" after deleting an expense

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

Version Number: 9.0.42-0
Reproducible in staging?: Y
Reproducible in production?: N
Email or phone of affected tester (no customers<EMAIL_ADDRESS>Issue reported by: Applause Internal Team
Action Performed:

Go to staging.new.expensify.com
Go to DM.
Submit an expense.
Go to Search.
Select the expense in Step 3.
Click on the dropdown.
Click Delete.
Delete the expense.

Expected Result:
The delete modal "Are you sure you want to delete this expense" will remain unchanged when deleting the expense.
Actual Result:
"this expense" in the delete modal changes to "these expenses" after deleting an expense.
Workaround:
Unknown
Platforms:

[x] Android: Native
[x] Android: mWeb Chrome
[x] iOS: Native
[x] iOS: mWeb Safari
[x] MacOS: Chrome / Safari
[x] MacOS: Desktop

Screenshots/Videos

https://github.com/user-attachments/assets/4bff9b64-1cdb-4580-8305-e166e72b7a9a

View all open jobs on GitHub

We think that this bug might be related to #wave-control

hey I have some free time on my hands and will take a look at this issue. It doesn't seem like a deploy blocker to me, but it also doesn't seem too difficult so shouldn't take much time.
CC @luacmartins

This is a regression from https://github.com/Expensify/App/pull/48258

I'm demoting this to NAB.

Merged


Bryan: Small updates

Removed background for images, moved stuff around in fun page

Change-Id  was closed at https://gerrithub.io/q/


Update splitting-a-subfolder-out-into-a-new-repository.md, adding com…

…mand to create a repository out of a single subdirectory
The sub-directory will be the new root directory of the resulting repository

Why:
Adding the command for a common use case, where the split off sub-folder should become the root folder for the new repository.
Closes: #29639

What's being changed (if available, include any code snippets, screenshots, or gifs):
Adding a code snipped (shell code)

Check off the following:

[x] I have reviewed my changes in staging, available via the View deployment link in this PR's timeline.

For content changes, you will also see an automatically generated comment with links directly to pages you've modified. The comment won't appear if your PR only edits files in the data directory.

[x] For content changes, I have completed the self-review checklist.

I committed the suggestions. Now i only have to wait and see if the check will succeed. @subatoi


Checkbox

Current coverage is 45.74%

Merging #202 into master will not affect coverage as of d1a3de5

@@            master    #202   diff @@
======================================
  Files           21      21
  Stmts          341     341
  Branches         0       0
  Methods          0       0
======================================
  Hit            156     156
  Partial          0       0
  Missed         185     185

Review entire Coverage Diff as of d1a3de5

Powered by Codecov. Updated on successful CI builds.


indicating active menu-item

Can we add the feature to indicate active menu item ?
This might require adding javascript component for menu-bar to handle is-active class of active menu-item.

Good idea, would also be great to have that kind of class on the buttons for components like off-canvas.

Just found #249. I think adding the FoundationApi to your controller could solve this, but I think it would be great to handle this within the framework.

Menu bar includes an .is-active class which can highlight an active item.
You can also use ui-sref-active to apply a class when a specific state is the current one.

Home

About

Right, that works.
Any idea for the the off-canvas menu?

The off-canvas menu has no built-in styles; it's just an empty box. If you're nesting a vertical menu bar inside of it, you can do what I described above. If you have your own custom component, you can use ui-sref-active and make your own custom active state class.

Cool, thanks. Will check.

@akiran, I think ui-sref-active would cover the use-case you're describing, where you have a menu and the current item (the current view) is highlighted. If it's not a state-specific thing you're targeting, you can still use the is-active class to highlight things based on other criteria.
Let us know if you have any more questions :)


Update composer.json

Laravel 7.0 added

Thanks! I've tagged version 3.3.1, so a simple composer update sven/artisan-view --dev should do it 😄


Fix macOS support

ref: https://github.com/kean/NukeUI/pull/46
NukeUI v0.8.2 can't go well on the macOS.
And I fixed that.

Thanks! NukeUI is moving to the main repo with Nuke 11, so it now has a complete set of unit tests. I'll merge your changes now and release a patch.

Patch https://github.com/kean/NukeUI/releases/tag/0.8.3

Thanks! 😁


Cache mykrobe/ctx binary skeletons

Done in https://github.com/mbhall88/tbpore/pull/8/commits/d9a0c027c5d4cc7294d803d49fcedde300811475 but IDK if you agree with this strategy. Basically, it creates a .cache dir in the repo root and stores the mykrobe/ctx binary skeletons there. However, if a new skeleton should be built (due to a first run or a catalogue update) and if >1 runs of tbpore is done simultaneously, this will create bugs. Should we address this programatically or tell them to take care about this and live with it?

Tell them to take care/document. Or when catalogue is updated, always run once.


⚠ NCAA has degraded performance

In 7706184, NCAA (https://www.ncaa.com) experienced degraded performance:

HTTP code: 200
Response time: 644 ms

Resolved: NCAA performance has improved in ccafd31.


Use Rails.autoloaders.zeitwerk_enabled? to check whether zeitwerk is rails autoloader

In 472 there was a change on the way the rake tasks detects and use's Rails autoloader, by using
Rails.application.config.autoloader method call. This works
perfectly for projects with Rails version < 7. In Rails 7 projects this
method call fails as it seems that Rails.application.config.autoloader
is deprecated. Zeitwerk is the only autoloader available and is not
configurable anymore.
As per rails guides, there is a way to detect whether
Zeitwerk autoloader is enabled, by using the predicate
Rails.autoloaders.zeitwerk_enabled? which is still present at Rails 7.

Thank you for the detailed problem description!


basic idea is present

Thinking of adding additional features, here's a way to capture test statuses on Sauce.

No longer needed in light of work at hackathon.


Explain the 2 types of fitness + name

In section 3, create a sub-section with title "Fitness compared" or something like that, describing the two fitness of the equations, and why they have been chosen.
Think a good name and acronym for each one, and refer them across the paper (including graphics) with it, instead "Equation x".

I've assigned this to @fergunet for review and closing

After equation (4) add a paragraph for closing remarks of this section. "Therefore, in our experimental section we are going to compare both f_acc and f_CS, with different parameters of alpha, because... ". You can close after adding this paragraph.


FATA[1977] salt-call completed but had failed states

When installing SIFT some components fail to install.
I have tested it using cast v0.14.53 with both Ubuntu 20.04 and Ubuntu 22.04.5 with the same result
INFO[1974] state completed                               component=installer duration=32.019 state=/etc/foremost.conf time_begin="13:11:36.994750" time_end="13:11:37.026770"
INFO[1974] state completed                               component=installer duration=12.09 state=/usr/local/etc/foremost.conf time_begin="13:11:37.028302" time_end="13:11:37.040392"
INFO[1974] state completed                               component=installer duration=4.791 state=sift-config-tools time_begin="13:11:37.044234" time_end="13:11:37.049025"
INFO[1974] state completed                               component=installer duration=3.781 state=sift-config time_begin="13:11:37.068985" time_end="13:11:37.072766"
INFO[1974] state completed                               component=installer duration=0.97 state=sift-desktop-include time_begin="13:11:37.073009" time_end="13:11:37.073979"
INFO[1977] log file location                             component=installer file=/var/cache/cast/installer/logs/saltstack.log
INFO[1977] results file location                         component=installer file=/var/cache/cast/installer/logs/results.yaml
WARN[1977] first failed state                            comment="One or more requisite failed: sift.python-packages.volatility.sift-python-volatility-community-plugins" component=installer run_num=270 sls=sift.python-packages.volatility
INFO[1977] statistics                                    component=installer failed=45 success=632 total=677
INFO[1977] salt-call completed but had failed states     component=installer
FATA[1977] salt-call completed but had failed states

saltstack.log

Hi @jofrep , some of the errors you're seeing are related to a compatibility issue between the setuptools and packaging python modules. What you can do for those is run the following:
sudo python3 -m pip install 'packaging==23.1' and that should resolve the issues for some of the Python3 states.
Some of the other errors are related to Python 2 compatibility, which I'm working on now and should have a resolution this afternoon.

Am experiencing same issue. Any updates?

Closing in favor of https://github.com/teamdfir/sift/issues/641 track that issue for resolution.


Anonymous opt-out

I would like to opt-out from your service but I am not comfortable with giving my account name or my instance domain for you to put in some sort of list somewhere.
The fact that you are collecting a list of vulnerable queer people that dont want to be harassed by bluesky is deeply unsettling and I cant trust you to not use that list in any way that could cause harm to vulnerable queer people on the fediverse.
It would be safer if this could be handled in a anonymous way where you cant have any access to plaintext usernames or instances that want to opt out of your service.

this is so obvious, it's even strange that you need to explain it...

So then put the tag in your profile. Or just don't make it public since that means the same people who could see it via the bridge can see it anyway. This is so obvious, it's even strange that you need to explain it...

yeah, wear a sign. Or even better, hide. People around you can already see you, why do you complain about video surveillance ? Please don't ask me to consider your problems.

It isn't difficult to put #nobridge on your website.

so requiring that people who want to use the service say so is not ok, because many people won't hear about it, so won't be able to state that they want to use it.
But requiring that people who don't want to use it put #nobridge in their profile is ok, because... most of them will hear about it ?
 Nice reasoning.
For the rest, data that is publicly accessible is not public data. Plenty of things are publicly accessible and yet you can't use it. Download facebook's assets to copy their design for your website, and see how it goes. Even better, use a Disney character on your website, good luck with that :smiley: (hint: no, don't do that, really)
Another analogy: anyone passing by can see my garden, or in my living room through my windows. That does not mean that I would accept or be comfortable with someone installing cameras to observe everything I do there. The fediverse is a group of interconnected isles, where people can interact together and keep control. BS is... let's just say that it's not that.
Now the good thing is that I don't have to convince you. Just @snarfed . He can take the multiple hints that he received those last days, or not. In that latter case, I'm afraid that his system will simply get defederated into near irrelevance, hopefully without adding too much weight on fediverse admins.

One might be able to do something useful with hashes to anonymize opting out .. but then I guess you'd end up having to somehow protect against people maliciously opting-out third parties? (To effectively DoS the bridge or whatever.)

I have very few functioning brain cells these days, but I wonder if any aspects of https://blog.cloudflare.com/validating-leaked-passwords-with-k-anonymity would be applicable here?

I think it is worthwhile to split this issue in two:

One is (perhaps rightfully) not comfortable with you storing all user handles in a CSV unencrypted all the time -> many solutions exist. I think this is the major issue for the original poster. You could protect the data better by salt & pepper. You could even enact a security boundary by storing it (hashed) on another node and only access it via some sort of zero knowledge proof scheme.
A second issue would be a user not trusting you at all with their handle. This is more complicated, because in this case, why would they trust that you would honor their (anonymized) request in the first place and not just go crawling anyway?

Regarding not trusting you with the handle: regardless of how it is stored or fetched when accessed, in the end, you will have a trivial way to brute force any and all Fediverse handles you encounter through instance directories, posts, likes, reshares, mentions or even normal web crawling. A malicious operator could test each found handle against its set and then record it in the clear if they want to go rogue. So assuming a malicious operator would probably not leave us with a usable service.
At the same time, the confusion set is already of a decent size, hence it might not pose an additional privacy risk. People may want to opt out for various reasons, and the exact reason would not be recorded:

copyright - be it for commercial or ethical reasons (against statistical learning scrapers)
GDPR - right to be forgotten, not allowing to handle data on unknown servers, etc.
harassment - be it due to political ideals vs. country of residence or relating to minorities with protected attributes
not having sufficient bandwidth for dealing with new "rando" subscribers (i.e., preferring friends of friends or direct contact exchange instead)
still just trying out the Fediverse, undecided what it has to offer and whether they will stay, or in general using it in a "transactional" way rather than as a "durable publishing platform of durable links" and hence are not comfortable with replicating it in a way that possibly makes it immutable
the instance they are registered on has special terms of service that outsiders may not be aware about and hence their incoming content could also be in violation
YAGNI - what if they will later decide to opt-in the first time they befriend someone requesting it, but otherwise chose to reduce the potential attack surface according to security best practices?
TODO

Even if he gets defederated, your content can still be taken elsewhere. Mastodon has a public JSON feed and as I mentioned before, there is a thing called Webmentions, which also takes your content and can be posted elsewhere if the person using Webmentions decides to. There are already multiple websites that take data from that JSON and put the comments placed on Mastodon, onto their website.

as said multiple times, that's not the point. Others doing it does not mean that it's ok.

Available data = available data. Public = Public.

as said multiple times, publicly available data != public data.

What happens in your home is not public.

Exactly. Even if people can see it, it's not public. Same for what you do in public: it's definitely not available for anyone to do as they please, even if you do it on the street.

If you think you own the control about anything you post online, dream further.

journalists, artists, web designers, communicators,... routinely post public online content that is definitely not public data. A friend of mine posts his photos on his website, and won a trial against a big American film corporation because they used one of his photos without credit for a blockbuster promotion. A small Belgian photograph against an American big studio, a photo publicly available on the web, and he won.
If you think that what is publicly available on the web is public data, dream further.

Hopefully discoverable opt in https://github.com/snarfed/bridgy-fed/issues/835#issuecomment-1942046208 may obviate some of this. Users and admins can just block the bsky.brid.gy domain, which has the same effect as asking me to opt out. If someone requests to follow them via Bridgy Fed, it will attempt to send them a DM, which will fail, and so they'll never be bridged.

"Users and admins can just block the bsky.brid.gy domain, which has the same effect as asking me to opt out..."
How can users just block the bsky.brid.gy when I (as a mere Mastodon user) have repeatedly searched from the "Search or paste URL" field on my profile page and have yet to see any sort of Mastodon/Fediverse instance name returned?
I am not an instance admin. I can only block those domains which return a Fediverse-compatible domain name from my search.
I will also note that "bsky.brid.gy" does not return any response from the Server search page at FediDB, here: https://fedidb.org/network

@MadokVaur good question. The Bluesky bridge hasn't launched yet, it's probably at least a month away, which is why you're not finding any bsky.brid.gy profiles. How to block domains as a user varies across different fediverse software, but if Mastodon only lets you do it after you've found an existing user on that domain, then you're right, you can't block it as a user yet. If so, that's definitely an unfortunate surprise.
The Mastodon docs don't explain this very much, https://docs.joinmastodon.org/user/moderating/#block-domain , but you might be right. If so...ugh.

Thanks for your reply
"The Mastodon docs don't explain this very much..."
There's a lot the Mastodon docs don't explain. But I digress...

Users cant do instance blocks on any fedi software that i know of so you will need to convince your instance admin about the danger that this bridge poses to our safety. And to be safe you probably also need get admins from all instances that your friends are using to also block this bridge.
I still hope that all the massive safety issues will be fixed but if this bridge goes live before addressing them then i will be doing everything i can to agitate for wide #FediBlock of brid.gy in order to protect all my lovely trans comrades

Well, I've blocked many, many instances in 14 months on three different Mastodon instances as a user, so I'm quite familiar with how to do it.
And my instance admins are pretty on top of most situations so I'm not concerned from that direction. Probably busy today with that burst of Japanese Misskey spam. Did some domain blocking there, just in case.

You might be right it's quite long time since i used mastodon. but atleast with sharkey users can only hide instances not block them

I appreciate the debate, but let's try to keep this issue focused on anonymous opt out, please, everyone.

provide some opaque id, let a system compare a plaintext id against that opaque id (or some aggregation), but otherwise prevent them from checking if a given plaintext id is in the set

dude that's called hashing

As a Mastodon user, you can block a domain even if you don't yet have access to a post on it by importing it as a block list.

Edit profile
Import and export
Import
Import type: Domain blocking list
Data: A CSV containing the domain(s) to be blocked, I'm attaching one that blocks the Bluesky bridge
Make sure (!!!) it's set to "Merge" and not "Overwrite"
Upload

@MadokVaur FYI

Will the bluesky bridge examine each fediverse reply to a fediverse post before sending all those replies to bluesky?
Suppose:

fediverse account A opts-in and is followed by bluesky account B
100 fediverse accounts reply to a post from account A
account B at bluesky asks to see the relies to a post on the fediverse account they follow

Will the bluesky bridge check all 100 replies and only send replies from accounts who have opted-in?
That is an issue that was used as justification for needing opt-out -- is the plan to send requests for each reply and only send on the ones the bridge already has opt-in for?
IMPORTANT POINT ABOUT BLOCKING BRIDGE DOMAIN
Blocking the bridge domain doesn't prevent the bridge from getting replies from people who have not opted-in. - it will get all the replies and will need to filter out the ones it doesn't have permission to send

I still think that the second part of the problem (untrusted bridge operator) is not solvable completely and hence any effort in that direction is LARP'ing with many drawbacks.
If you still insist, one such workaround would involve:

when a user registers on a Fediverse instance, their server would offer a choice for them to specify metadata about their feed: archiving, mirroring, web search indexing, statistical text mining, copyright, embedding, bridging, bot requests, etc.
the operator of each Fediverse instance would publish a list of hashed & peppered handles of their own who have opted in to the bridge, signed with their PGP key and timestamped
the operator of each bridge would periodically fetch this list (and optionally mirror it for others), and use it to decide whether a given message or reply is allowed to be forwarded or not

I think any anonymized/hashed list not backed by the respective instance operator of the domain would be open to trivial DDoS as already mentioned.

@bantryblues let's keep this issue focused on anonymous opt out. I'll file a new issue for your questions.

@snarfed thanks for opening the new issue!
he reason I mentioned it here was someone suggested blocking the domain as a solution to this issue - but I should have started a new issue and just referred to it here.

Bridgy Fed is currently opt in for the fediverse. I plan to add DM prompts for discoverable opt in, but I don't plan to switch it to opt out in the fediverse anytime soon.
Also, we haven't yet seen a technically feasible solution here yet, ie "It is not possible to be able to check if an ID is in a set, without being able to check if the ID is in the set." (https://github.com/snarfed/bridgy-fed/issues/878#issuecomment-1948584867).
So, I'm closing this as obsolete. Happy to hear more thoughts if anyone has any though.

It's likely already supported (implicitly). If an individual user either blocks the entire bridge domain or mutes the service account, their home instance will take care of permission management for this without even notifying Bridgy Fed of those actions.
It also normally shouldn't send any activities towards the bridge if there's a domain block, but I don't know if that's usually a hard filter or just a result of there being no connections or interactions with bridge content (in which case this could differ if Bridgy acted as ActivityPub relay at some point, i.e. for instance-wide opt-in by admins. In that particular hypothetical case users may indeed have to undo the opt-in by blocking the service account individually).


Clarify the --enable-shared in 1.1.3

For section 1.1.3, it would be helpful to add a bit more context, that this is required for reticulate to work, ie it's more than just RStudio.
# pyenv rstudio settings
echo 'PYTHON_CONFIGURE_OPTS="--enable-shared"' >> ~/.zshrc

Section 1.1.3 header also has a typo
1.1.3 Post installtion setup


Support C++14 Compiler

While I was trying to update the code to work with Pytorch 1.5, one of the errors I received when building the pytorch extension was "#error You need C++14 to compile PyTorch". After modifying the following code in setup.py
extra_compile_args = {
    "cxx": ["-std=c++14", "-O3", "-fopenmp"],
    "nvcc": ["-std=c++14", "-O3", "--compiler-options=-fopenmp"],
}
I got continuing errors certainly due to the incompatibility of the current code.
Could you provide me any hints on fixing these errors so I can use the extension with Pytorch 1.5?

Apologies for the delay, I've been quite busy. Finale, I made the project compatible with PyTorch 1.5.0.


Do now pass compiler reference to reporter

This led to a NPE because the compiler reference can't be initialized
early enough. The reporter needs to be fully initialized in the ctor of
Global but Global is the compiler and therefore it can't be passed to
the reporter in its subclass.
Fix #1002733

LGTM

retest this please


Add volume and image encryption feature

Summary

Add Encrypted, Decrypted radio buttons and source image dropdown In image create page,
In storage class create page, add volume encryption radio button and  secret namespace, secret name select dropdowns
Show lock icon if image / volume is encrypted.
Hide "export image" action if volume is encrypted
Show encryption and secret in image detail page.

PR Checklist

Is this a multi-tenancy feature/bug?

[ ] Yes, the relevant RBAC changes are at:

Do we need to backport changes to the old Rancher UI, such as RKE1?

[ ] Yes, the relevant PR is at:

Are backend engineers aware of UI changes?

[x] Yes, the backend owner is: @Yu-Jack

Related Issue #
https://github.com/harvester/harvester/issues/6493
Screenshot/Video
Create Storage class with Secret
create_sc.webm
Encrypted  & decrypt Image
image_en:decrypt.webm
Encrypt volume
volume_encypt.webm

A thought just popped into my head. Do we need to display locker icon in the VM page if some VMs use encrypted image or volumes? cc @bk201

Just one question, should we clear the secret name when we select different secret namespace each time?
demo-01.mov

Good finding. It should clean the secret when chaning namespace.

A thought just popped into my head. Do we need to display locker icon in the VM page if some VMs use encrypted image or volumes? It might be a useful information for users? cc @bk201

Per discussion with @Yu-Jack , add lock icon in VM list page and show the tooltip with

image encrypted
volume encrypted
image and volume encrypted

See in Uploading vm-lock.webm…

@Yu-Jack , @bk201 , as we discussed, I added encrypted volume and image in tooltip.
E.g.

Wait for https://github.com/harvester/dashboard/pull/1160 merged to fix check-plugins-build CI failed.

Show encrytion field in vm detail volume tab and render lock in

green icon : All volumes are encrypted.
yellow icon : Partial volumes are encrypted.

@jillian-maroket, could you give advice about above 2 message ? thanks.
vm_lock_icon.webm

@Yu-Jack @a110605 Should we add 'Encrypt' / 'Decrypt' actions in the image list ?

Code looks good, just a few minor CRs and question below (Maybe something we can add in the next release as improvements).
I have a few questions:

Should we add 'Encrypt' / 'Decrypt' actions in the image list ?
Would it make sense to have a reference to the image that is being decrypted / encrypted, in the new image?

I think these are "nice to have" improvements at this moment. Maybe we could put them into Backlog to next release?

LGTM. BTW, there is a failed build about check-plugins-build.

Wait for fixed PR https://github.com/harvester/dashboard/pull/1160  merge first.


How can I view all participants of a group chat?

So far I can only get those who wrote something. Which way should I go?

By debugging I could find that this message gets send over the websocket:
<EMAIL_ADDRESS>You will get the following answer:
437.--109,{
  "id"<EMAIL_ADDRESS>  "owner"<EMAIL_ADDRESS>  "subject": "Group Name",
  "creation": timestamp,
  "participants": [
    {
      "id"<EMAIL_ADDRESS>      "isAdmin": false,
      "isSuperAdmin": false
    },
    {
      "id"<EMAIL_ADDRESS>      "isAdmin": true,
      "isSuperAdmin": false
    },
    {
      "id"<EMAIL_ADDRESS>      "isAdmin": false,
      "isSuperAdmin": false
    },
    {
      "id"<EMAIL_ADDRESS>      "isAdmin": false,
      "isSuperAdmin": false
    }
  ],
  "subjectTime": timestamp,
  "subjectOwner"<EMAIL_ADDRESS>}

Im hoping it helps you!


Roll engine fa7a25aea3e3..131091827790 (2 commits)

https://github.com/flutter/engine/compare/fa7a25aea3e3...131091827790
git log fa7a25aea3e35beee9824011798b66738e2005f0..1310918277907d48ad25a336bbee3269ccbb2674 --no-merges --oneline
131091827 Roll src/third_party/dart f7e435ac26..0f9a5198bd (2 commits)
ef1e21f53 Roll src/third_party/skia 346e10e8ae1a..8abc84294571 (1 commits) (flutter/engine#7962)
The AutoRoll server is located here: https://autoroll.skia.org/r/flutter-engine-flutter-autoroll
Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+/master/autoroll/README.md
If the roll is causing failures, please contact the current sheriff (garyq@google.com), and stop
the roller if necessary.

Auto-roller completed checks. About to merge.


Trying to save an empty Shapes layer with Save Selected Layers... fails: IndexError: list index out of range

🐛 Bug Report
An IndexError raises when attempting to save an empty Shapes layer.
💡 Steps to Reproduce

Create a Shapes Layer
Try to save it via File > Save Selected Layers...

💡 Expected Behavior
Be able to save the layer or get a message indicating that the layer is empty and it is not possible to be saved
🌎 Environment
napari: 0.5.0a2.dev723+g1f4e8e73
Platform: Windows-10-10.0.19045-SP0
Python: 3.10.9 | packaged by conda-forge | (main, Jan 11 2023, 15:15:40) [MSC v.1916 64 bit (AMD64)]
Qt: 5.15.2
PyQt5: 5.15.10
NumPy: 1.25.2
SciPy: 1.9.3
Dask: 2023.10.1
VisPy: 0.14.1
magicgui: 0.7.3
superqt: 0.6.7.dev0+g0ec5cd3.d20240527
in-n-out: 0.2.0
app-model: 0.2.7
npe2: 0.7.5
OpenGL:

GL version:  4.5.0 - Build <IP_ADDRESS>44
MAX_TEXTURE_SIZE: 16384
GL_MAX_3D_TEXTURE_SIZE: 2048

Screens:

screen 1: resolution 1366x768, scale 1.0
screen 2: resolution 1920x1080, scale 1.0

Optional:

numba: 0.58.1
triangle not installed

Settings path:

C:\Users\dalth\AppData\Local\napari\napari-dev_4454fdbf170edefe23827a4bf512389a6806af69\settings.yaml
Plugins:
napari: 0.5.0a2.dev723+g1f4e8e73 (81 contributions)
napari-assistant: 0.4.4 (4 contributions)
napari-console: 0.1.dev42+ge2a8d71.d20240315 (0 contributions)
napari-generic-SIMulator: 0.0.19 (2 contributions)
napari-ome-zarr: 0.5.2 (2 contributions)
napari-pyclesperanto-assistant: 0.22.1 (51 contributions)
napari-skimage-regionprops: 0.10.0 (2 contributions)
napari-svg: 0.1.10 (2 contributions)
napari-time-slicer: 0.4.9 (2 contributions)
napari-tools-menu: 0.1.19 (0 contributions)
napari-ui-tracer: 0.2.0.dev0 (2 contributions)

💡 Additional Context
Traceback:

---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
File ~\anaconda3\envs\napari-dev\lib\site-packages\app_model\backends\qt\_qaction.py:55, in QCommandAction._on_triggered(self=QMenuItemAction(MenuItem(when=None, group='3_sav...tle=None, toggled=None), alt=None), app='napari'), checked=False)
     51 def _on_triggered(self, checked: bool) -> None:
     52     # execute_command returns a Future, for the sake of eventually being
     53     # asynchronous without breaking the API.  For now, we call result()
     54     # to raise any exceptions.
---> 55     self._app.commands.execute_command(self._command_id).result()
        self._command_id = 'napari.window.file.save_layers_dialog.selected'
        self = QMenuItemAction(MenuItem(when=None, group='3_save', order=None, command=CommandRule(id='napari.window.file.save_layers_dialog.selected', title='Save Selected Layers...', category=None, tooltip=None, status_tip=None, icon=None, icon_visible_in_menu=True, enablement=Expr.parse('num_selected_layers > 0'), short_title=None, toggled=None), alt=None), app='napari')
        self._app = Application('napari')

File ~\anaconda3\envs\napari-dev\lib\site-packages\app_model\registries\_commands_reg.py:245, in CommandsRegistry.execute_command(self=<CommandsRegistry at 0x1b35bcde1a0 (150 commands)>, id='napari.window.file.save_layers_dialog.selected', execute_asynchronously=False, *args=(), **kwargs={})
    241 except Exception as e:
    242     if self._raise_synchronous_exceptions:
    243         # note, the caller of this function can also achieve this by
    244         # calling `future.result()` on the returned future object.
--> 245         raise e
    246     future.set_exception(e)
    248 return future

File ~\anaconda3\envs\napari-dev\lib\site-packages\app_model\registries\_commands_reg.py:240, in CommandsRegistry.execute_command(self=<CommandsRegistry at 0x1b35bcde1a0 (150 commands)>, id='napari.window.file.save_layers_dialog.selected', execute_asynchronously=False, *args=(), **kwargs={})
    238 future: Future = Future()
    239 try:
--> 240     future.set_result(cmd(*args, **kwargs))
        future = <Future at 0x1b36e4a6140 state=pending>
        cmd = <function _save_selected_layers at 0x000001B35CAAC9D0>
        args = ()
        kwargs = {}
    241 except Exception as e:
    242     if self._raise_synchronous_exceptions:
    243         # note, the caller of this function can also achieve this by
    244         # calling `future.result()` on the returned future object.

File ~\anaconda3\envs\napari-dev\lib\site-packages\in_n_out\_store.py:931, in Store.inject_processors.<locals>._deco.<locals>._exec(*args=(), **kwargs={})
    929 @wraps(func)
    930 def _exec(*args: P.args, **kwargs: P.kwargs) -> R:
--> 931     result = func(*args, **kwargs)
        func = <function _save_selected_layers at 0x000001B369353010>
        args = ()
        kwargs = {}
    932     if result is not None:
    933         self.process(
    934             result,
    935             type_hint=type_hint,
   (...)
    938             _funcname=getattr(func, "__qualname__", str(func)),
    939         )

File ~\anaconda3\envs\napari-dev\lib\site-packages\in_n_out\_store.py:801, in Store.inject.<locals>._inner.<locals>._exec(*args=(), **kwargs={})
    794 logger.debug(
    795     "  Calling %s with %r (injected %r)",
    796     _fname,
    797     bound.arguments,
    798     _injected_names,
    799 )
    800 try:
--> 801     result = func(**bound.arguments)
        bound = <BoundArguments (qt_viewer=<napari._qt.qt_viewer.QtViewer object at 0x000001B35BE62D40>)>
        func = <function _save_selected_layers at 0x000001B3671F2290>
        bound.arguments = {'qt_viewer': <napari._qt.qt_viewer.QtViewer object at 0x000001B35BE62D40>}
    802 except TypeError as e:
    803     if "missing" not in e.args[0]:

File E:\Acer\Documentos\Quansight\Napari\napari\napari\_qt\_qapp_model\qactions\_file.py:60, in _save_selected_layers(qt_viewer=<napari._qt.qt_viewer.QtViewer object>)
     59 def _save_selected_layers(qt_viewer: QtViewer):
---> 60     qt_viewer._save_layers_dialog(selected=True)
        qt_viewer = <napari._qt.qt_viewer.QtViewer object at 0x000001B35BE62D40>

File E:\Acer\Documentos\Quansight\Napari\napari\napari\_qt\qt_viewer.py:804, in QtViewer._save_layers_dialog(self=<napari._qt.qt_viewer.QtViewer object>, selected=True)
    800 writer = _npe2_decode_selected_filter(
    801     ext_str, selected_filter, writers
    802 )
    803 with warnings.catch_warnings(record=True) as wa:
--> 804     saved = self.viewer.layers.save(
        self = <napari._qt.qt_viewer.QtViewer object at 0x000001B35BE62D40>
        self.viewer.layers = [<Shapes layer 'Shapes' at 0x1b369380190>]
        self.viewer = Viewer(camera=Camera(center=(0.0, 255.5, 255.5), zoom=0.7180664062499998, angles=(0.0, 0.0, 90.0), perspective=0.0, mouse_pan=True, mouse_zoom=True), cursor=Cursor(position=(432.36387014195475, -9.795797264997418), scaled=True, style=<CursorStyle.STANDARD: 'standard'>, size=1.0), dims=Dims(ndim=2, ndisplay=2, order=(0, 1), axis_labels=('0', '1'), rollable=(True, True), range=(RangeTuple(start=-0.5, stop=511.5, step=1.0), RangeTuple(start=-0.5, stop=511.5, step=1.0)), margin_left=(0.0, 0.0), margin_right=(0.0, 0.0), point=(255.5, 255.5), last_used=0), grid=GridCanvas(stride=1, shape=(-1, -1), enabled=False), layers=[<Shapes layer 'Shapes' at 0x1b369380190>], help='use <7> for transform, use <R> for add rectangles, use <E> for add ellipses, use <L> for add lines, use <T> for add path, use <P> for add polygons, use <Shift+P> for add polygons lasso, use <4> for select vertices, use <5> for select shapes, use <2> for insert vertex, use <1> for remove vertex', status='', tooltip=Tooltip(visible=False, text=''), theme='dark', title='napari', mouse_over_canvas=False, mouse_move_callbacks=[], mouse_drag_callbacks=[], mouse_double_click_callbacks=[], mouse_wheel_callbacks=[<function dims_scroll at 0x000001B359664310>], _persisted_mouse_event={}, _mouse_drag_gen={}, _mouse_wheel_gen={}, _keymap={})
        filename = 'C:/Users/dalth/Desktop/Shapes1.csv'
        selected = True
        writer = WriterContribution(command='napari.write_shapes', layer_types=['shapes'], filename_extensions=['.csv'], display_name='shapes')
    805         filename, selected=selected, _writer=writer
    806     )
    807     logging.debug('Saved %s', saved)
    808     error_messages = '\n'.join(str(x.message.args[0]) for x in wa)

File E:\Acer\Documentos\Quansight\Napari\napari\napari\components\layerlist.py:486, in LayerList.save(self=[<Shapes layer 'Shapes' at 0x1b369380190>], path='C:/Users/dalth/Desktop/Shapes1.csv', selected=True, plugin=None, _writer=WriterContribution(command='napari.write_shapes'...ename_extensions=['.csv'], display_name='shapes'))
    483     warnings.warn(msg)
    484     return []
--> 486 return save_layers(path, layers, plugin=plugin, _writer=_writer)
        layers = [<Shapes layer 'Shapes' at 0x1b369380190>]
        path = 'C:/Users/dalth/Desktop/Shapes1.csv'
        plugin = None
        _writer = WriterContribution(command='napari.write_shapes', layer_types=['shapes'], filename_extensions=['.csv'], display_name='shapes')

File E:\Acer\Documentos\Quansight\Napari\napari\napari\plugins\io.py:244, in save_layers(path='C:/Users/dalth/Desktop/Shapes1.csv', layers=[<Shapes layer 'Shapes'>], plugin=None, _writer=WriterContribution(command='napari.write_shapes'...ename_extensions=['.csv'], display_name='shapes'))
    240     written, writer_name = _write_multiple_layers_with_plugins(
    241         path, layers, plugin_name=plugin, _writer=_writer
    242     )
    243 elif len(layers) == 1:
--> 244     _written, writer_name = _write_single_layer_with_plugins(
        writer_name = ''
        layers = [<Shapes layer 'Shapes' at 0x1b369380190>]
        path = 'C:/Users/dalth/Desktop/Shapes1.csv'
        plugin = None
        _writer = WriterContribution(command='napari.write_shapes', layer_types=['shapes'], filename_extensions=['.csv'], display_name='shapes')
        layers[0] = <Shapes layer 'Shapes' at 0x1b369380190>
    245         path, layers[0], plugin_name=plugin, _writer=_writer
    246     )
    247     written = [_written] if _written else []
    248 else:

File E:\Acer\Documentos\Quansight\Napari\napari\napari\plugins\io.py:461, in _write_single_layer_with_plugins(path='C:/Users/dalth/Desktop/Shapes1.csv', layer=<Shapes layer 'Shapes'>, plugin_name=None, _writer=WriterContribution(command='napari.write_shapes'...ename_extensions=['.csv'], display_name='shapes'))
    457 written_paths, writer_name = _npe2.write_layers(
    458     path, [layer], plugin_name, _writer
    459 )
    460 if writer_name:
--> 461     return (written_paths[0], writer_name)
        writer_name = 'napari'
        written_paths = []
    462 logger.debug('Falling back to original plugin engine.')
    464 hook_caller = getattr(
    465     plugin_manager.hook, f'napari_write_{layer._type_string}'
    466 )

IndexError: list index out of range

I can confirm this on main and 0.4.19. I'd guess this has been around for a while.
Looks like the writer exits if there are no shapes:
https://github.com/napari/napari/blob/6c8245ad963095ae6c528fc7f5964f393e37606a/napari_builtins/io/_write.py#L232C4-L234C20
But then the plugin function errors because nothing was written so it fails at the return
https://github.com/napari/napari/blob/6c8245ad963095ae6c528fc7f5964f393e37606a/napari/plugins/io.py#L460-L461
So either we write a file with just the header and no data or ensure that the no file case is caught.
cc @DragaDoncila

Hmm does it make sense to want to save an empty shapes layer? If we do want to be able to save empty layers, then we should change our napari_write_shapes implementation to not return None, but write an empty file and then return the path as usual. We may also want to update npe2's io_utils.write_get_writer used when the plugin name is not given (so likely not through the GUI) to not throw an error for empty layers?
If we want to raise an error for the user if nothing was saved, then we should update our check in _write_single_layer_with_plugins (and maybe the multi-layer writer too) to check written_paths, not writer_name, since writer_name is always returned in this case, because we actually pass it in. Tbh we should probably be checking written_paths regardless of whether we want to raise an error there or not.
Finally, our writer napari_write_shapes shouldn't ever really be returning None, but rather an empty list when nothing was written. This is pretty clear in the npe2 contribution guide, but we kinda catch the Nones for people in a few places and convert them to empty lists. Regardless, we should follow our own convention and update our writers to not return None.

I think writing an empty layer should be pretty much pointless, so dealing with that by warning/erroring seems like the way to go IMO.


Result.produced_at should be immutable

It has been shown that the produced_at attribute for a Result can be changed. This should not be possible as this value represents an observed fact.

the .value attribute should also be immutable for that matter.


Added pydle.Client.READ_TIMEOUT proxy & warnings

This PR adds a proxy property pydle.BasicClient.PING_TIMEOUT which just forwards the corresponding get/set  behaviors to the new underyig pydle.BasicClient.READ_TIMEOUT.
In addition, these proxy properties will invoke a DeprecationWarning via the warnings module as to warn downstream developers that the name is deprecated.

The proxy property works as intended during testing.
The deprecation warning unfortunately doesn't show up unless developers are explicitly looking for them ( -W always or friends) while developing applications. This appears to be an intentional implementation detail according to the python documentation, and changing the filters to ensure our warning is shown may cause downstream annoyances.
PyCharm does recognize the property as deprecated, when it can correctly infer the symbol. other IDEs are likely to also recognize this.
For the time being, this proxy object will retain reverse compatability, perhaps we can remove this at the next major v0.10.0 release.


[cleanup] Fix docs after TransferObject change

Fix json_rpc doc
Fix transaction doc

Thanks so much, Todd! I created a second commit to fix the little capitalization issues I found and added Alonso to confirm I did this as expected. Thanks again!

Ah shit, I think I accidentally just blew those changes away on my push. Sorry!

Thanks so much, Todd! I created a second commit to fix the little capitalization issues I found and added Alonso to confirm I did this as expected. Thanks again!

Ah shit, I think I accidentally just blew those changes away on my push. Sorry!

No worries! I will check/fix right now.

Thanks so much, Todd! I created a second commit to fix the little capitalization issues I found and added Alonso to confirm I did this as expected. Thanks again!

Ah shit, I think I accidentally just blew those changes away on my push. Sorry!

Sorry about that. Your changes LGTM.