Individual PRs incorrectly opened (and then immediately closed) when grouped updates enabled

Is there an existing issue for this?

[X] I have searched the existing issues

Package ecosystem
Cargo
Package manager version
1.73
Language version
1.73
Manifest location and content before the Dependabot update
https://github.com/heroku/buildpacks-python/blob/76e1c6f822dfa9567ad0072b9e082547891c35e8/Cargo.toml
https://github.com/heroku/buildpacks-python/blob/76e1c6f822dfa9567ad0072b9e082547891c35e8/Cargo.lock
dependabot.yml content
https://github.com/heroku/buildpacks-python/blob/76e1c6f822dfa9567ad0072b9e082547891c35e8/.github/dependabot.yml
Updated dependency
No response
What you expected to see, versus what you actually saw
I have grouped updates enabled for this repo, so I expect single-dependency PRs not to be opened unless they are for dependencies not included in the group (or say for other edge cases, such as it being an out-of-schedule security PR etc).
Prior to this issue occurring, there were two Dependabot PRs open in the repo:

https://github.com/heroku/buildpacks-python/pull/118 (a grouped PR)
https://github.com/heroku/buildpacks-python/pull/124 (an out-of-schedule security update PR)

At this point I then triggered a manual Dependabot run (thinking "well if we need to do the security update PR, I might as well update all the things at once"), using Insights -> Dependency graph -> Dependabot -> etc.
The new Dependabot run then proceeded to incorrectly make two new single-dependency PRs for dependencies that should be in a group:

https://github.com/heroku/buildpacks-python/pull/125
https://github.com/heroku/buildpacks-python/pull/126

Immediately after that, Dependabot created the grouped PR after all:

https://github.com/heroku/buildpacks-python/pull/127

...and then proceeded to close one of the erroneously opened single update PRs (as "superseded"), but not the other?
Today, I then triggered a manual Dependabot run again, and it closed out the single-dependency update PR that hadn't been immediately closed after opening yesterday.
It seems like there is some race condition or other weirdness going on here.
Native package manager behavior
No response
Images of the diff or a link to the PR, issue, or logs
Dependabot run logs:
https://github.com/heroku/buildpacks-python/network/updates/737488004
Smallest manifest that reproduces the issue
No response

I've just had another instance occur on a different repository. One thing the two repositories had in common, was that they both already had open grouped PRs plus a security update PR open at the time of the manually triggered Dependabot run.
In this case, the new grouped PR was:

https://github.com/heroku/languages-github-actions/pull/161

And the incorrectly opened single-dependency update PR was:

https://github.com/heroku/languages-github-actions/pull/162

This happened again in:
https://github.com/heroku/languages-github-actions/pull/165
(opened then immediately closed as superseded by https://github.com/heroku/languages-github-actions/pull/166)

I have seen examples of this recently in Package.json/npm in private repositories with Github-hosted dependabot, so does not appear to be Cargo exclusively.

Some Ruby examples this time:
https://github.com/heroku/buildpack-registry/pull/397
https://github.com/heroku/buildpack-registry/pull/398

Some more instances of this in another repo:
https://github.com/buildpacks/pack/pull/1974
https://github.com/buildpacks/pack/pull/1973
https://github.com/buildpacks/pack/pull/1972
https://github.com/buildpacks/pack/pull/1971

Sorry for the delay. This is hopefully fixed going forward!

@jakecoffman The issue here has been resolved, but it seems a new regression has been introduced? I've filed #8558 for that.


MBART pretraining instructions and details

Pretraining code for MBART seems to be missing. Any help would be great with that respect, including preprocessing instructions, tokenization, hyperparameters. Such details are also missing from the paper.
In the paper in Section 2.2 under "Instance format" it is said that "for each instance of a batch" data is sampled from a language ID. But it is not clear to me whether that means that a batch can contain multiple languages, or that each sample in a batch is separately sampled for a language ID.
cc @ngoyal2707 @mikelewis0

"each instance of a batch" means a line of sentences. Since that line starts with ID like <en>, that whole line is written in that language (english if en).
A batch is made of multiple lines, so a batch can contain multiple languages.
I believe a line like <en> I love apple. <fr> je déteste la tarte. is not used in general.
While, it does not mean a model cannot learn from it, but such task is simply more difficult while we can go around it by split lines ourselves.

Thanks for the reply!


Average statistics zero balance when credits are available

When there are credits available on the account the reporting tab in the Average statistics is not displaying correct values.

This issue seems to be created because the default filtering in cost explorer gets as default the credits.

Is there any way we can fix the reporting tab? Can we somehow exclude credits from the reporting in the sandbox solution?

This project relies on the DCE(TM) project  under the hood to handle account & lease assignments as well as tracking the AWS usage & consumption. As soon as the DCE(TM) project supports your request, it also automatically apply to "Sandbox Account for Events".
It might be better to bring up your issue in the DCE(TM) project then.


restart client generation

Codecov Report

Merging #1156 (25a0c26) into main (27eac7a) will increase coverage by 12.76%.
The diff coverage is n/a.

@@             Coverage Diff             @@
##             main    #1156       +/-   ##
===========================================
+ Coverage   60.28%   73.05%   +12.76%
===========================================
  Files          20       32       +12
  Lines         282      475      +193
  Branches       25        0       -25
===========================================
+ Hits          170      347      +177
- Misses        102      108        +6
- Partials       10       20       +10

Impacted Files
Coverage Δ

...Hub.WebApi/Controllers/MessageArchiveController.cs
0.00% <ø> (ø)

...gistration/HealthEndpointRegistrationExtensions.cs
36.84% <0.00%> (-42.11%)
:arrow_down:

...WebApi/RequireNonNullablePropertiesSchemaFilter.cs
80.00% <0.00%> (-8.00%)
:arrow_down:

apps/dh/api-dh/source/DataHub.WebApi/Startup.cs
93.97% <0.00%> (ø)

.../Integration/Controllers/ChargesControllerTests.cs
100.00% <0.00%> (ø)

...rce/DataHub.WebApi.Tests/Fixtures/WebApiFactory.cs
83.33% <0.00%> (ø)

...rce/DataHub.WebApi.Tests/Fixtures/WebApiFixture.cs
92.30% <0.00%> (ø)

...ce/DataHub.WebApi.Tests/Fixtures/WebApiTestBase.cs
100.00% <0.00%> (ø)

...ntegration/Controllers/WholesaleControllerTests.cs
100.00% <0.00%> (ø)

.../DataHub.WebApi.Tests/Integration/EndpointTests.cs
100.00% <0.00%> (ø)

... and 6 more

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


Exit with error status code when plan preview failed

What would you like to be added:
Call os.Exit(1) when plan-preview sent an error message.
Why is this needed:
Plan preview CI send error comment but workflow is still succeeded.
So we have to exit with error status code when exception case.

I'd like to work on this.
I've already make PR: https://github.com/pipe-cd/pipecd/pull/4659

This is already solved.
https://github.com/pipe-cd/pipecd/blob/972d114cfc47a4465b69e4307136b083fe9d5388/tool/actions-plan-preview/main.go#L152


Holding cmd to select doesn't work anymore

Reproducible if you try to hold cmd, then click on an item in finder. it will deselect all the other items.

+1

I was about to open a similar issue myself, however, when I have rebooted my MacBook, the Mod + Click will work for a while, and then at some point it will just stop working until I reboot again.

I just had a similar experience. Restarting Karabiner made it work again, but at some point it stops working.

Had this problem too.

I just had a similar experience. Restarting Karabiner made it work again, but at some point it stops working.
Same here.

During the process of identifying and troubleshooting, I'd restart, delete cache files, and there would be times where functionality would be restored (while Karabiner Elements was still running in background), but then functionality was lost again within minutes. Finally, I realized Karabiner was the likely culprit, and after removing it everything was fine.
Unfortunately, the console logs didn't yield any useful information. Event viewer showed that the pressing the CMD and Shift keys was still being recognized, though.

I’m having the same issue. I originally thought it was some sort of bug in Safari in macOS Sierra because holding down command wouldn’t open links in new tabs anymore, but then I realized I couldn’t select multiple files in Finder and narrowed it down to Karabiner.

@codyrobbins have you updated? The 0.90.47 update improved modifiers, might have fixed the issue.

@mafredri Ah, I just did, and yes—the issue seems to be fixed. Thanks!

I can't test further, since the latest update killed my mouse, but I'll close this and reopen if anything else comes up.

I'm on 0.90.48 still seeing the same issue.

Yeah, I restarted my computer this morning and noticed that the problem is happening again, so I don’t think it was fixed. In addition, I noticed that the left option key is not working either. (I have the right option key remapped to right control, so I’m not sure if a similar problem is present with the other option key, or whether that remapping is somehow causing the problem in the first place.)

I'm experiencing this issue as well. All modifiers + click are problematic, but it'll sometimes work if I click without moving the mouse. I'm only using Karabiner-Elements to map caps lock to esc.
Restarting Karabiner-Elements temporarily fixes the problem.
@dapetcu21 can we reopen this issue?

I haven’t experienced this issue for a while now so I believe it was fixed (for me at least) in one of the intervening updates since October.


Add lightmaps support

Precomputed light is very useful when your light source are not moving, it significantly cheaper than dynamic light. Simple lightmapper should be implemented and there should be a way to apply lightmaps on surfaces.

Basic support is added.


To be able to pass a simple string to the config file to specify output

Feature request
O.K.
What is the expected behavior?
Same as before.
What is motivation or use case for adding/changing the behavior?
Reducing code by one line or so.
How should this be implemented in your opinion?
Accept a string as follows

// output
output: `${DIST_DIR}/bundle.js`,

instead of an object literal like the current way
    output: {
      filename: 'bundle.js',
      path: DIST_DIR
    },

Are you willing to work on this yourself?
yes

There were plans to add this before but this never took off.
There are some consistency issues with this shortcut:

Where to split filename and path? (Note that filename could be something like scripts/[name].js)
Should this only specific path and filename should use the default?
Should this only specific filename and path should use the default?

We could only allow non-absolute paths for output, which would it be a shortcut for filename?
Still there could be confusion because there are two way to specific a option value...
So in the end it probably makes sense to not add the shortcut at all to avoid inconsistency and confusion for

Reducing code by one line or so.

Answer https://github.com/webpack/webpack/issues/9247#issuecomment-500699344


New php test runner for Laravel 7

Hi, This week Laravel 7 will be launch with a new command called for testing php artisan test which has a pretty looking good output.
Just for testing I modified the phpunit.vim file and inside the executable method I added this condition in order to try the new command:
function! test#php#phpunit#executable() abort
  if filereadable('vendor/nunomaduro/collision/phpunit.xml.dist')
    return 'php artisan test'
  elseif ...

And it works. Here is an output

I'm not entirely familiar the way to add another runner for laravel 7 or if maybe my solution works fine for all the project and I only should to make a pull request to add that line.
Hope if anyone can guide me, thank you!

Thank you for the heads up. I just had look into the documentation for version 7 and it uses phpunit under the hood so this feels like like an alternate run command for the phpunit runner rather than a whole new runner making this is quite similar to #424.
Can you try using let test#php#phpunit#executable = 'php artisan test' for now and if that works I am happy to make the changes myself

Thanks for helping me so fast and the command let test#php#phpunit#executable = 'php artisan test'  it works 😄

Great. Does it accept all the same arguments as phpunit?

@codeinabox  yes, is the same

Excellent. When I get time I will create a branch and PR you can test with.

@rodrigore I've created a new branch you can test against, please let me know how you get on

@codeinabox thank you! I tested and work fine

Hi, I just wanted to comment on this. The test command in php artisan test is not provided by Laravel but by a third party package: https://github.com/nunomaduro/collision. While it is true that new Laravel projects have this package added by default, it is optional, and projects that have upgraded from an earlier version (or removed it manually) will not have a test command, and the phpunit runner is now failing.
I've got around this by manually resetting the phpunit executable:
let test#php#phpunit#executable = './vendor/bin/phpunit'

but that seems a bit backwards given that I was expecting it to use phpunit by default.
Another way around this, while keeping this a part of the phpunit runner, is by updating the executable function to check if the "nunomaduro/collision" is installed:

by checking the package is a dependency

function! test#php#phpunit#executable() abort
  if filereadable('./artisan')
        \ && filereadable('composer.json')
        \ && !empty(filter(readfile('composer.json'), 'v:val =~# "nunomaduro/collision"'))
    return 'php artisan test'
  elseif ...

or by checking the folder exists:

function! test#php#phpunit#executable() abort
  if filereadable('./artisan') && isdirectory('./vendor/nunomaduro/collision')
    return 'php artisan test'
  elseif ...

I'm sure not many people are impacted by this, for now I'm satisfied with manually setting my phpunit executable.

Thank you for investigating this, I did not realise that the artisan test command was optional. Based on what you've told me I feel there are two options in this case:

Introduce the additional checks that nunomaduro/collision is installed
Remove the logic and require users to override the executable using let test#php#phpunit#executable = 'php artisan test'

I don't mind either but I am not a Laravel user so if you two could indicate which one you think is most maintainable please let me know and I will implement.

I think it would be better to require users to override the executable, but I do admit that it would not be obvious that the executable could be set to php artisan test without someone finding this issue or some mention of it in the docs.
The nunomaduro/collision package seems fairly stable and has been around for a few years; I doubt it would go away. If Laravel were to remove the package from the default install in the future, php artisan test would still work (if nunomaduro/collision was manually installed) because it auto-registers itself.
With that being said I had not heard of this package until I started looking into this issue, and I suppose it would open the door to requests for other wrappers (if there are any) being handled here as well.

There is support for the alternate PHPUnit runner ParaTest though that is trivial as it just involves checking for the presence of it in the vendor bin directory.
I had a look at nunomaduro/collision and it doesn't have its own binary, in fact you use it by adding it to phpunit.xml.
My gut feeling is it makes more sense for the user to override the executable or update their phpunit.xml file. @rodrigore any objections to this?

I dont have any objections

This functionality has been removed so now you need to use let test#php#phpunit#executable = 'php artisan test'


Add dbt pytest

Replacing the old deprecated dbt testing with new tests based on pytest following dbt documentation: https://docs.getdbt.com/docs/contributing/testing-a-new-adapter
Note: This pr is just setting up the testing configuration and writing down a simple base materialization test. Following this pr I'll add more tests and finally remove the old test folder.

Thanks for your PR. I appreciate it.
But I think:

We have to stick to the original implementation. Docker must not be as part of the tests. You can note it in the README, but Docker can't be a dependency.
The project must not to have two different testing ways. So I will merge it after PR is completed.

Thanks for the feedback.
See my responses below:

The clickhouse server must be up for the tests to pass. We can mock the server but then we're not really run integration tests. Do you have other ideas for how to test it without docker? Do you expect the user to run clickhouse server every time they run the tests?
I'll add the rest of the tests and remove the old ones from this pr.

Hi Dmitriy,
I updated my PR:

Added more tests and remove the old ones
Made docker-compose optional (by default it is set to false), and made sure there are no dependencies in docker.

Can you please review again and approve if it looks good to you?

Thanks you!
I added couple comments and approved PR. You could merge if you not agree with these comments.


Child locks refactor

Breaking change

Removes child lock file path option and replaces with drop down list of other KeyMaster configurations

Proposed change

Removes child lock file path option and replaces with drop down list of other KeyMaster configurations

Type of change

[ ] Dependency upgrade
[ ] Bugfix (non-breaking change which fixes an issue)
[ ] New feature (which adds functionality)
[x] Breaking change (fix/feature causing existing functionality to break)
[ ] Code quality improvements to existing code or addition of tests

Additional information

This PR resolves: fixes #169 fixes #168

Todo:

[x] Update config_flow with drop down
[x] Create new const CONF_PARENT
[ ] Create is_child helper function (wasn't needed)
[x] Update generator service to append _child to child lock yaml files
[ ] Create test to fully test _available_parent_locks
[ ] Clean up child locks file code

Codecov Report

Merging #170 (28288fc) into childlocks (d6b1a11) will decrease coverage by 0.05%.
The diff coverage is 90.00%.

@@              Coverage Diff               @@
##           childlocks     #170      +/-   ##
==============================================
- Coverage       90.78%   90.72%   -0.06%
==============================================
  Files               9        9
  Lines             944      938       -6
==============================================
- Hits              857      851       -6
  Misses             87       87

Impacted Files
Coverage Δ

custom_components/keymaster/helpers.py
88.60% <ø> (ø)

custom_components/keymaster/config_flow.py
91.30% <80.00%> (-1.08%)
:arrow_down:

custom_components/keymaster/__init__.py
90.25% <100.00%> (+0.07%)
:arrow_up:

custom_components/keymaster/const.py
100.00% <100.00%> (ø)

custom_components/keymaster/lock.py
100.00% <100.00%> (ø)

custom_components/keymaster/services.py
94.16% <100.00%> (+0.13%)
:arrow_up:

Since I don't know what variables will need to be replaced in the child YAML files the generation function will still need updating.


Look into blocking/permitting network to network communication

See https://github.com/containers/podman/issues/5805

Is this the correct linked issue? Your title sounds like https://github.com/containers/podman/issues/5805

yup, i had a hiccup during that one

@mheon would this just require adding a rule to not allow external connections:
https://github.com/containers/netavark/blob/6eab33518566c9f024c81308046ea8d9714c4044/src/firewall/varktables/types.rs#L207-L217
Just trying to get a feel for if I am looking in the right spot

No, that's a standard rule to allow existing connections always - we shouldn't mess with that.
I'd probably do this as an outbound traffic rule - anything from a Podman network to another podman network should be dropped. For N networks, you'll probably need N sets of N-1 rules (each network has to have a set of rules banning traffic beginning in its subnet from reaching every other network's subnets).
The same could definitely be done on network ingress - really just a matter of preference as to where the rules go. I'll look a bit more into where they could be placed later.

This is what is done for cni https://github.com/AkihiroSuda/cni-isolation#how-it-works


sudo: /usr/bin/sudo must be owned by uid 0 and have the setuid bit set

Hello,
I try to slim one of my container based on UBUNTU:18.04,
I've a x30 minify performance that is really great but I've a sudo command issue which I can't get rid of.
In my Dockerfile, I've an 'apt-get install sudo' command in a bash script called by the ENTRYPOINT
and I need it to load a driver at container start-up due to a USER switch.
The bash file contains this line:  sudo /etc/init.d/<cmd> start
When I check the docker logs  stdout, I've the following issue:
sudo: /usr/bin/sudo must be owned by uid 0 and have the setuid bit set
I tried to escalade the issue, using docker exec command in root mode, and I checked the file permission that should be 4755.
docker exec --user root -it 01 bash
bash-4.4# stat -c "%a" /usr/bin/sudo
755
In the container execution (docker exec --user root -it  bash), I was able to change the sudo file permission (chmod 4755 /usr/bin/sudo) and after that, if I re execute the container the current user, I was able to execute the sudo  command.
So, I think that my issue is related to a file permission.
Here is the docker-slim build command I used, but It doesn't fix the sudo permission issue:
docker-slim build --include-shell \ --include-exe='/bin/chmod' \ --include-exe='/bin/chown' \ --include-exe='/usr/bin/stat' \ --include-path='/usr/bin/sudo:4755' \ --include-path='/usr/lib' \ --include-path='/usr/tmp' \ --include-path='/var/tmp' \ my_container:ubuntu
I've also tried with others switch such as  --path-perms-file='/usr/bin/sudo:4755'  but with no luck.
Any idea to apply to resolve this issue ? Thanks.

@xlz-sbarillet might be good to try setting the user (and potentially group) ID on /usr/bin/sudo to 0 like this: --include-path='/usr/bin/sudo:4755#0#0'  You can find a bit more about it here: https://github.com/docker-slim/docker-slim#what-if-my-docker-images-uses-the-user-command


Pc 344 invalid email 500 bug

@CheshireSwift Do you know why it's picking up which files are changed but just taking the whole thing? it's very annoying.

My guess would be line endings in some way?


Just do a one liner log entry instead of stack traces for malformed dns requests

Closing this since there are merge conflicts. Easier to just re-do in a fresh branch.


perlPackages.DataULID: init at 1.0.0

Adds the Data::ULID Perl module
dependencies:
perlPackages.EncodeBase32GMP: init at 0.02
perlPackages.MathGMPz: init at 0.48
Things done

[X] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[X] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[X] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Ensured that relevant documentation is up to date
[X] Fits CONTRIBUTING.md.

@GrahamcOfBorg build perlPackages.DataULID perlPackages.EncodeBase32GMP perlPackages.MathGMPz
@GrahamcOfBorg build perldevelPackages.DataULID perldevelPackages.EncodeBase32GMP perldevelPackages.MathGMPz


A UX design recommendation for the Workspace Trust feature

Does this issue occur when all extensions are disabled?: Yes

VS Code Version: 1.57.0
OS Version: Mac OS

The Workspace Trust added in this version is really useful, but the problem is that it interrupts the users' original thought.
(What has happened)
I open the folder, because I want to do some edit. The primany thing in my mind at that moment is that I want to edit the file, but the modal dialog is preventing me from doing so, that I need to stop what I'm doing right now, to think, and to choose whether I want to trust this folder.
(What should happen)
So why not make it a pop-up (like the recommendation to install a linter) and keep the folder restricted by default. The user can do things as they will, until finally ①  they notice the pop-up, ② they click on it, and ③ the modal dialog is shown (because it is important and a modal dialog will likely make user thinks more carefully) and ④ they confirm whether they want to enable all features or keep it restricted.
Yours sincerely.

I have just noticed there is a bar of workspace trust when I opened a random file instead of opening a folder, and I think that works pretty well. Although I think there are two problem with it.
Problem 1. You don't need to open a new window to trust the current file
Unlike Microsoft Office, there is a simple button called "Enable editing". It is very straightforward. You click the button, so you can edit, or you would better stay in the protected view.

(in English, ❗ PROTECTED VIEW: Be careful - files from the Internet can contain viruses. Unless you need to edit, it's safer to stay in Protected View. [Enable Editing])
(What has happened)
And for our situation, I think it could be more straight forward. You don't need to open a new window to Manage.

(What should happen)
Instead You should be able to trust the windows right in place, like Restricted Mode is blah-blah. Trust this window to enable linting, debugging and other features. [Trust] [Learn More], while the Trust button just trust the window, and the Learn More button is linked to the Workspace Trust page in the picture above.
Problem 2. You don't need such a bright bar to grab people's attention.
Again, let's compare Microsoft Office with our situation.
In Microsoft Office, the Protected View has a bright bar becuase it takes a crucial function of TextBox away - editing. Editing a such a crucial function of a TextBox, that designers will let it greyed out when it is not editable. But in Microsoft Office, greying out will affect browsing the document, so it has to find a workaround and chooses the bright bar to grab people's attention.
(What has happened)
But in our case, we can still edit the code and see code highlighting. Things like Markdown preview is working as well. That's enough for code browsing.
Only when you want to write and run code, i.e., to work on the document, would you need to trust the document, but I think most people would like to run the code once to confirm their environment setup is okay before they work on the document, and they will need to confirm their trusting the document there.
(What should happen)
It is not necessary to use a bright top bar to grab people's attention that much when they just opened the file, and I think a pop-up to let people notice when they want will be just enough.
Yours sincerely.

@KLszTsu Thanks for your feedback. Since this issue is primarily a list of recommendations, I will close it but take your feedback into consideration as we smooth out this experience going forward.
For the initial post, I think you might find this setting useful: security.workspace.trust.startupPrompt which will allow you to disable the prompt and stick to restricted mode until you say otherwise. There are other settings you might finde useful under "security.workspace.trust" as well.
For "Problem 1", as this feature is very new, we want to make sure users understand what it means to trust a workspace before they take such an action. Because of this, we try to guide users to the editor when there isn't a lot of room to explain. After this becomes more of a mainstream feature, that could change.
For "Problem 2", restricted mode can have a large impact on some users workflows, such as many extensions not working. In testing, we found that it is easy to forget that your window is restricted without a prominent indication. As for how bright it is, you can change this with your theme.


Mismatching API Versions in Documentation

With this code:
import os
from azure.common.credentials import ServicePrincipalCredentials
from azure.mgmt.resource import ResourceManagementClient

subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]
tenant_id = os.environ["AZURE_TENANT_ID"]
client_id = os.environ['AZURE_CLIENT_ID']
secret = os.environ['AZURE_CLIENT_SECRET']
resource_group = "test-01"

credentials = ServicePrincipalCredentials(client_id=client_id, secret=secret, tenant=tenant_id)

client = ResourceManagementClient(credentials, subscription_id)

resources = lambda x: [r for r in client.resources.list_by_resource_group(resource_group, filter=x)]

for r in resources("resourceType eq 'Microsoft.Storage/storageAccounts'"):
    if r == "pioneertest":
        continue
    else:
        client.resources.delete_by_id(r.id, api_version="2017-05-10")
        print("deleted {}".format(r.name))

Following this documentation: https://docs.microsoft.com/en-us/python/api/azure.mgmt.resource.resources.v2017_05_10.operations.resourcesoperations?view=azure-python
I get this error:
Traceback (most recent call last):
  File "C:\Program Files\Python36\lib\site-packages\msrestazure\azure_operation.py", line 347, in __init__
    self._operation.set_initial_status(self._response)
  File "C:\Program Files\Python36\lib\site-packages\msrestazure\azure_operation.py", line 230, in set_initial_status
    self._raise_if_bad_http_status_and_method(response)
  File "C:\Program Files\Python36\lib\site-packages\msrestazure\azure_operation.py", line 148, in _raise_if_bad_http_status_and_method
    "Invalid return status for {!r} operation".format(self.method))
msrestazure.azure_operation.BadStatus: Invalid return status for 'DELETE' operation

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:/Users/MikeLloyd/Development/azure/pcf-azure-arm-templates/test.py", line 21, in <module>
    client.resources.delete_by_id(r.id, api_version="2017-05-10")
  File "C:\Program Files\Python36\lib\site-packages\azure\mgmt\resource\resources\v2017_05_10\operations\resources_operations.py", line 759, in delete_by_id
    get_long_running_status, long_running_operation_timeout)
  File "C:\Program Files\Python36\lib\site-packages\msrestazure\azure_operation.py", line 350, in __init__
    raise CloudError(self._response)
msrestazure.azure_exceptions.CloudError: Azure Error: NoRegisteredProviderFound
Message: No registered resource provider found for location 'westus' and API version '2017-05-10' for type 'storageAccounts'. The supported api-versions are '2017-06-01, 2016-12-01, 2016-05-01, 2016-01-01, 2015-06-15, 2015-05-01-preview'. The supported locations are 'eastus, eastus2, westus, westeurope, eastasia, southeastasia, japaneast, japanwest, northcentralus, southcentralus, centralus, northeurope, brazilsouth, australiaeast, australiasoutheast, southindia, centralindia, westindia, canadaeast, canadacentral, westus2, westcentralus, uksouth, ukwest, koreacentral, koreasouth'.

According to the documentation, the API version to use is 2017-05-10, but when I call azure.mgmt.resource.resources.v2017_05_10.operations.resourcesoperations.delete_by_id(), it tells me the API version is incorrect for this resource.

Hi @mxplusb
When you are using XXXX_by_id methods, you need to provide the Api version of the resource provider you're targeting.The API version 2017-05-10 is for provider Microsoft.Resources for operations like resource_groups.create_or_update. I agree that the documentation is not explicit about it.
For you, since you target Microsoft.Storage, you should use 2017-06-01. Or you can directly use the storage client:
client = StorageManagementClient(credentials, subscription_id)
for account in client.storage_accounts.list_by_resource_group(resource_group):
   if "pioneertest" not in account.id:
      client.storage_accounts.delete(resource_group, account.name)

Interesting. Is there a way we can make the docs more explicit about how to
use API versions?
On Tue, Sep 26, 2017 at 4:07 PM Laurent Mazuel<EMAIL_ADDRESS>wrote:

Hi @mxplusb https://github.com/mxplusb
When you are using XXXX_by_id methods, you need to provide the Api
version of the resource provider you're targeting.The API version
2017-05-10 is for provider Microsoft.Resources for operations like
resource_groups.create_or_update. I agree that the documentation is not
explicit about it.
For you, since you target Microsoft.Storage, you should use 2017-06-01.
Or you can directly use the storage client:
client = StorageManagementClient(credentials, subscription_id)for account in client.storage_accounts.list_by_resource_group(resource_group):
if "pioneertest" not in account.id:
client.storage_accounts.delete(resource_group, account.name)
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/Azure/azure-sdk-for-python/issues/1478#issuecomment-332350354,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AHMEsZNEbeGnVn4HFbGnGkEjd4Xcl6acks5smXWIgaJpZM4PkdDy
.

--
Thanks!
Mike Lloyd
USMC
808-633-8998

@lisawong19 we should discuss this point for the doc.

@lmazuel: where is a list of acceptable values for api versions?

@lisawong19 depends of the provider you point too, I guess the best answer is the rest api doc. For instance for Storage:
https://docs.microsoft.com/en-us/rest/api/storagerp/
The Storage Resource Provider requires all requests to be versioned. To make a request against the SRP, you must specify the version that you want to use for that operation. The currently supported versions are:
- 2016-12-01
- 2016-01-01
- 2015-06-15
- 2015-05-01-preview

Closing since this never got addressed.


Touch support?

Does this library have support for touch? I'm not a developer, so it's hard for me to tell. I don't see anything mentioned on the ReadMe or website, so I'm asking here. Thanks! 😄

Yes there is touch support. (at least from what I can see in the code, have not tried myself.)
If you happen to try it  and give some feedback would be great.


How to Plot OSM basemap using bbox?

How toPlot Basemap for do this:

display the classic OSM base map(ex. like this:https://umap.openstreetmap.fr/it/search/?q=new+taipei) inside a bbox?
and then separately insert a list of coordinates from:
x = df["Latitude", "Longitude"] ?

Thanks for using OSMnx! Please re-read the contributing guidelines and the new issue template you saw when you opened this issue.
As the template noted, your issue will be automatically closed if you didn't provide all of the information requested in the template, because we need all of this information to address your issue.
Also note: per the contributing guidelines, please don't use the issue tracker to ask "how-to" or usage questions. If asked here, they will be closed automatically. Instead, ask "how-to" and usage questions on StackOverflow.


email verification doesn't work

When checking the emailed account verification for Borum, the accompanying verification link doesn't work.
Steps to reproduce the behavior:

Go to bforborum.com
Click on sign up and create an account
Check inputted email's "spam" category
Open Borum verification link
See error

The verification link is supposed to appear in the email to be able to verify the account,
Desktop (please complete the following information):

OS: Windows 10
Browser: Chrome
Version 78.0.3904.70

This seems quite strange


Feature request: Allow the copy of text in the search/add box

User case: I find a title online want to add it I can't just right click in the box (same thing for when you try to scrape). IMHO it would be more userfriendly allow a right click in the "+" box and the two search boxes (main page and the one in the scraping menu).

works here..
which version do you use? which OS?

@mlaggner  tmm_2.9.13_5cfe5d1_linux Lubuntu 16.04.2
the only way copy/paste works is with ctrl, right click with mouse doesn't work.

Works on gnome/arch.. Might be an issue from your lxde...


Get Started

We want to implement a dashboard-esque web app that shows the issues in a grid

going to start with a airtable for now


GPL-560 As a developer I would like to replace the materialised view with a MLWH report

User story
As a developer I would like to replace the materialised view  introduced in GPL-544 #117 with a report in the unified warehouse to reduce coupling to the samples_extraction database, increase flexibility of reporting, centralise the report tables, and reduce overall brittleness of the reports.
Who are the primary contacts for this story
James G (Wrote original view)
Laura L
Acceptance criteria
To be considered successful the solution must allow:

[ ] Reporting on all data within the existing view
[ ] Reporting of correct source barcodes for ALL activities

Additional context
The addition of the view was made to fulfil an urgent need to gain insight into Heron samples. However it has resulted in a fairly complicated query, which is difficult to generalise to all activities. The main difficult is in ensuring that the report can handle:

Activities in which there are intermediate step between the input plate and output
Activities where we are dealing with anything other than a single input mapped to a single output
Multiple different asset types (especially tubes vs. plate/racks)

The current view handles requirement 1, and has some support for requirement 3, however currently does not support requirement 2. To help restrict this impact it confines itself to ONLY the heron extraction pipleines, which at time of writing have other issues confining them to 1->1 transfers.
Meanwhile we cheat on Option 1, essentially extracting the source of the earliest transfer associated with the activity, this avoids the need for recursive queries, but prevents us simultaneously delivering requirement 2.
Meanwhile, a report in the application itself will be able to make use of internal application logic, and potentially handle recursive queries programatically.
The view also runs counter to the general strategy of building reports of the warehouse and isolating application databases within the applications themselves.

Doing a bit of a maintenance pass before I get started, as many of the dependencies are quite out of date now.

Managed to upgrade to ruby 2.6.6. Upgrade to 2.7.2 blocked by google_hash gem

Starting to build messenger. Got most fields sorted, just need to refresh my memory about what was needed for the various source-destination relationships.


resource log diagnostic settings generation should allow being disabled intentionally

Description
Across the resource implementations, resource log diagnostic settings are included. While this is sometimes what the user actually wants, sometimes it is not. For example, often people will want to set the resource log diagnostic settings via policies, and not at resource deployment time. This is why it should be supported that the generation of the diagnostic settings can be disabled intentionally.
Currently, you can avoid that the diagnostic settings are being set by not setting any of a couple of values, f. e. (from keyvault):
resource keyVault_diagnosticSettings 'Microsoft.Insights/diagnosticsettings@2021-05-01-preview' = if ((!empty(diagnosticStorageAccountId)) || (!empty(workspaceId)) || (!empty(eventHubAuthorizationRuleId)) || (!empty(eventHubName))) {
// ...
}

I believe a better option for the API of the module is to set or "not set" the diagnostic settings explicitly, via an object parameter:
diagnosticSettings = {
  storageAccountId: '...'
  workspaceId: '...'
  ...
}

and pass this into the module as the "diagnosticSettings" object param.

@khaliddermoumi not sure what difference in the outcome your proposed solution will change. Please elaborate. Thanks.

Hi @rahalan, this issue isn't a feature request, nor a bug, it is about the API design (interface design).
Please note that I was using v 0.3 at the time of filing the issue.
Back then, setting "diagnostic settings" was not obvious in the interface of a module. For example a key vault:
module kv '....' = {
  name: '...'
  params: {
    name: '...'
    enablePurgeProtection: false
    enableSoftDelete: true
    enableVaultForDiskEncryption: true
    eventHubName: '...'
    keys: []
    workspaceId: '...'
    tags: {}
  }
}

In this interface, you need to remember, or be aware that "workspaceId" and "eventHubName" are part of the "diagnostic settings", and need to be set or removed, if you want diagnostic settings. In this case, devs frequently forget f. e. unsetting these values, if they do not want diagnostic settings, as it is not obvious, you don't "see" the intention of these parameters in the interface.
As an example on what one would expect, take f. e. the portal. If you want to set diagnostic settings, you click on "diagnostic settings", and then set log analytics workspace, event hub, etc. If you want to remove "diagnostic settings", you click on "diagnostic settings", and then remove the setting as a whole. I would say, in the portal, the intention of these settings is clear, as they are all organized under "diagnostic settings. In the 0.3.1 version of CARML, this wasn't obviuous.
Now, with v0.4, many parameters have been renamed, f. e. "workspaceId" is now "diagnosticWorkspaceId", so this isn't as much as a problem as it was back then.
I personally would still say that it would be even better if you aligned all these properties under a "diagnosticSettings" object, like I proposed in this issue:
diagnosticSettings = {
  storageAccountId: '...'
  workspaceId: '...'
  ...
}

So you would immediately see all what is part of this setting.
I hope this is clearer now, please let me know if I need to be clearer.
Feel free to rename etc. this issue if you want.

We try to avoid complex objects as parameters were possible, so we will stick with the solution as it is currently. Unfortunately we are not able to remove diagnostic settings, as ARM is not supporting that.


Ensured Member Newsletters relation is ordered by sort_order

Without this we can get inconsistent ordering in the API which can cause tests to fail

Closing because this requires us adding the sort_order column to the members_newsletters table


Vim does not always split windows with the desired height N specified in commands like :[N]split

Describe the bug
Vim does not always open a new split window with the desired height that was specified before a split command like :botright [N]split. This depends on the height of the above (or below) window where the new split will be opened. For example, if a quickfix window with 10 lines height is open at the bottom, :botright 10new won't have the desired height 10. But running :botright 8new will open a new split with 8 lines.
To Reproduce

Run vim --clean
Open a new split at the bottom: :botright 10new
Open a third window with the same height: :botright 10new
Result: the third window won't have the specified height 10. All three windows will have the same height. See screenshot 1.
Close all splits and redo step 2, but fix the height of the second window: :botright 10new | setlocal winfixheight.
Open a third split: :botright 10new.
Result: The second window will keep its height 10, but the bottom window won't have the specified height 10. Instead it will have the same height as the top one. See screenshot 2.
This behavior does not occur when the third window's height is set to be 2 lines smaller than the window below which it will be placed. Thus, running :botright 8new will open a new window at the bottom with 8 lines. See screenshots 3 and 4.
A workaround is to run something like :botright 8new | resize 10 to obtain the desired height.

Expected behavior
Vim should always open the new split window with the specified height N.
Screenshots

set nowinfixheight
set winfixheight

Screenshot 1
Screenshot 2

Screenshot 3
Screenshot 4

Environment (please complete the following information):

Vim version 8.1.2115
Gentoo Linux
xfce4-terminal and GVim

Is equalalways set?

Yes, it is set by default in vim --clean. But why should this matter? In screenshot 3 and 4 you can see that the split has the correct height.
Looking at screenshot 3, it seems like Vim is drawing the new window "on top of" window 2. My guess is that's why opening a new split with 8 lines works fine since windows must have at least one line plus another line for the statusline. If window 2 initially had 12 lines, :botright 10new would have worked fine, but :botright 11new would - similar to screenshot 1 and 2 - readjust the height of all three windows (unless winfixheight is set).
If you run instead :botright 1new | resize 12, window 2 will be pushed up to make enough room for the new split. I would have expected the same behavior when running :botright 12new.

My interpretation is steps 1--7 and screenshots 1 and 2 are WAE because equalalways equalizes the windows whenever a split happens (except for the winfixheight). That being said, this maybe should be changed because specifying a height for split is pretty useless then.
For screenshots 3 and 4, apparently equalalways isn't always applied when there is enough room in the above window a-priori.  It's only used when a window would become too small?
Simple fix is to temporarily mark the new window to be ignored by equalalways when a height is specified.  But regardless these rules need to be clarified in the help.

But even with set noequalaways Vim equalizes all windows.

Run vim --clean
:botright 10new
:botright 10new

Result:

:botright 10new
:botright 10new | botright 10new

Well, noequalalways doesn't exactly mean equalnever.  I read the code and vim does equalize the windows in some situations.  What vim could do instead is take height from the first window when the second window isn't sufficiently tall.
Alternatively, vim could equalize everything else but keep the new window the specified size.

What vim could do instead is take height from the first window when the second window isn't sufficiently tall.

This is exactly the behavior of :botright 1new | resize 10. I would have expected the same result when running :botright 10new directly.

Related to #2999.


OU-588: Move Incidents Tab to Alerting Page

Related JIRA
https://issues.redhat.com/browse/OU-588
Description

Relocate the Incidents tab from Observe > Incidents to Observe > Alerting > Incidents tab.

the frontend use a proxy /api/proxy/plugin/monitoring-console-plugin/backend/features to fetch the list of features enabled from the golang backend. Cluster Observability Operator configures the proxy here.

This is an initial solution. The long-term solution is to modify the openshift/console-dynamic-plugin-sdk > horizontalNav so that the prop contextId is exposed. This will allow the file incidents.patch.json to create a extension that will hook into the horizontalNav by the contextId.
Testing
Locally tested using the following instructions :

In the first terminal run make start-frontend
In the second terminal run make start-feature-backend
In the third terminal run make start-feature-console
Incidents feature should now be enabled. Navigate to Admin perspective > Observe > Alerts > Alerts Tab should now show 'Incidents'

In-cluster testing using the following instructions:

With ClusterBot run the command: launch 4.18,openshift/monitoring-plugin#303 aws
Enable Incidents in the cluster:

Use this branch for testing: https://github.com/zhuje/monitoring-plugin/tree/deploy_incidents. It hacks the script > deploy-acm.sh to deploy incidents instead. OR use this command to enable incidents helm template charts/openshift-console-plugin --set plugin.image=quay.io/rh-ee-pyurkovi/incidents:latest --set plugin.features.incidents.enabled=true
Run in the terminal $ make deploy-acm (this deploys the incident because we hack-ily modified deploy-acm.sh in step 2)

Screenshots/Demos

Figure 1. BEFORE - Incidents is under the Observe section.

Figure 2 AFTER - The screenshot shows that the 'Incidents' Tab is now under Observe > Alerting. The section Observe > Incidents has been removed.
https://github.com/user-attachments/assets/9878c354-3f94-40b5-9cd8-d4b0f29d2b8d
Figure 3. Video (~0:22 seconds duration), show Incidents Tab relocation with local testing (at localhost:9000).
https://github.com/user-attachments/assets/b5cd747c-4882-48e3-891b-168c5dbd1e86
Figure 4. Video (~0:27 second duration) shows Incidents Tab relocation within cluster testing.

/retest

/retest

/jira refresh

/test okd-scos-e2e-aws-ovn

/lgtm


81 supplier plugin health and store usage

Description
The feature is expected to

evaluate the plugin health by checking the state of the circuit breaker
evaluate the plugin health by checking the health of the indices required for storing plugin-related objects
returning the plugin health using a traffic-light labeling (red, yellow, green)
gathering stats about stored features, featuresets and models

Issues Resolved
https://github.com/opensearch-project/opensearch-learning-to-rank-base/issues/81
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

@ylwu-amzn
@jngz-es

Can you fix the failed CI ?

Neither @JohannesDaniel nor I could reproduce the failure of JDK17. I reran the CI tests 10 times and still could not get a failure. Given that JDK17 is being phased out of main I'm going to merge this PR.

@ylwu-amzn @sstults I think this is simply a test that fails from time to time

Why this PR merged without approval?

Why this PR merged without approval?

@ylwu-amzn that's me probably misunderstanding policy. My assumption was that by merging I'm implicitly approving. That was exacerbated by my other mistake of assuming that passing CI tests was your only comment on this PR.
@JohannesDaniel I'm going to revert so that the above issues can be resolved.

@sstults no worry, I add more comments later. Thanks for the reverting


allow to delete resources and playlist (if empty) on standalone site

Feature Request
Is your feature request related to a problem or unsupported use case? Please describe.
On the standalone site we are not able to delete resources (for now classroom only) nor playlists.
Describe the solution you'd like
Allow in the permissions and in the interface to delete resources and playlist.

A playlist must be empty to be deleted.
Only playlist administrator can delete an empty playlist
playlist administrator and instructor can delete resources.

Half of this PR is made. the backend part. We have to manage the frontend one now.

For the bulk delete, the choosen scenario is the scenario A (A1, A2, A3 and A4): https://www.sketch.com/s/bddb9b80-54f8-4dfb-9d15-41b8d1548205/v/18RMlO/p/623347F9-6605-4423-B28C-6903BCDC559C/canvas


Investigate weirdness in basin profile interpolation

See https://github.com/Deltares/Ribasim/pull/1543#issuecomment-2163718293. The introduction of SmoothInterpolation reveiled some weirdness in the basin interpolation.

The problem was probably with floating point errors. Calculating the level from the storage involves solving an equation of this form:
$$
\frac{1}{2}\frac{\Delta A}{\Delta t}(\ell-\ell_0)^2 + A_0(\ell-\ell_0) - (S-S_0) = 0.
$$
The quadratic formula to solve this equation behaves poorly in the case that $\frac{\Delta A}{\Delta t}$ is small, as there is the transition between quadratic and linear behavior. What the new code does differently from the old code is that the threshold for when the area interpolation is considered constant is higher:
https://github.com/SouthEndMusic/SmoothInterpolation.jl/blob/8f31fd90176f969a68a9fdf9b134507857d689f4/src/cache.jl#L16
Note that this new threshold is just empirically determined.


Added new server config flag --bootnode-only-sync to ignore non-bootnodes in BestPeer()

Description
When testing potential breaking changes on our testnets, we occasionally must stop all nodes and revert to a recent backup in order to revert the blockchain state to what it was prior to the breaking change. This process is fairly straightforward while dealing with a chain entirely operated by us.
The issue lies when other peers or validators are connected to our mainnet chain which we do not have control over. As a precaution, if a new version of edge containing a breaking change was introduced on mainnet, it would be difficult to perform any kind of revert as our bootnodes would always sync to a peer that could have a higher blockNumber than the backup we want to revert to.
This PR introduces a new flag --bootnode-only-sync that we could require all validators to add after clearing their data-dirs to facilitate the unlikely event of having to reset to an earlier state. Additionally we would also add this flag to our bootnodes.
Changes include

[ ] Bugfix (non-breaking change that solves an issue)
[ ] Hotfix (change that solves an urgent issue, and requires immediate attention)
[x] New feature (non-breaking change that adds functionality)
[ ] Breaking change (change that is not backwards-compatible and/or changes current functionality)

Checklist

[x] I have assigned this PR to myself
[ ] I have added at least 1 reviewer
[ ] I have added the relevant labels
[ ] I have updated the official documentation
[ ] I have added sufficient documentation in code

Testing

[ ] I have tested this code with the official test suite
[x] I have tested this code manually

Manual tests

Spin up 4-node testnet with all 4 nodes as bootnodes
Add a 5th node to the testnet and give enough time to sync up
Clear the data (rm -rf data/blockchain/ data/trie/ data/consensus/snapshots data/consensus/metadata) of node 1.
Restart node 1 with ./main server --bootnode-only-sync and observe that the non-bootnode peer is ignored when determining best peer within BestPeer()

Documentation update
Will create a documentation PR once this PR is accepted.

The PR just blocks syncing from any peer but the bootnodes.

@dankostiuk Hello, Thank you for a PR! We've refactored syncer recently. Could you fetch and merge latest develop if you've not done? Sorry for the inconvenience.


CARDS-2389: /opt/cards/.cards-data in the cardsinitial Docker container is (incorrectly) no longer being bound to the local ./SLING directory

This Pull Request fixes a bug that was introduced in CARDS-2301 where instead of appending the CARDS_LOGS mount to the list of volume mounts for the cardsinitial container, said list of volume mounts would be completely overwritten to only contain the CARDS_LOGS volume mount.
To test this PR, start a Docker Compose environment with:
cd compose-cluster
python3 generate_compose_yaml.py --dev_docker_image --oak_filesystem --composum --cards_project cards4heracles
docker-compose build
docker-compose up -d

Visit http://localhost:8080, login as admin:admin and create some test data.
docker-compose down && docker-compose rm && docker volume prune -f
docker-compose up -d

Visit http://localhost:8080, login as admin:admin and verify that the previously created data still exists.
Clean up with
docker-compose down && docker-compose rm && docker volume prune -f && ./cleanup.sh

tested while doing cards-0.9.19 smoke test


[Playlist Tags] Tags not displaying on playlist page

🔍 Is there already an issue for your problem?

[X] I have checked older issues, open and closed

ℹ Environment / Computer Info
- Spotify version: <IP_ADDRESS>4
- Spicetify version: 2.38.4
- MacOS 14.5

📝 Description
Tags do not display on the playlist page. I can still see the custom app page (with the tags search), but cannot see them on playlists (and therefore can't add/remove tags).
📸 Screenshots

Thanks a lot for letting me know!
I tend to use slightly outdated versions of Spotify so would've taken me a long time to notice.


improper handling of multidimensional input in stats.rv_sample

My issue is about ...
Reproducing code example:

from scipy import stats
import numpy as np

xk = np.arange(6).reshape((3, 2))
pk = (1/3, 1/3, 1/3)
custm = stats.rv_discrete(values=(xk, pk))

The implementation of rv_sample only checks the following:
if len(xk) != len(pk):
            raise ValueError("xk and pk need to have the same length.")

Afterwards, xk and pk are ravelled, leading to different lengths.
Error message:
IndexError: index 3 is out of bounds for size 3
Traceback (most recent call last):

  File "<ipython-input-15-0a2191a05404>", line 3, in <module>
    custm = stats.rv_discrete(values=(xk, pk))

  File "c:\users\christoph\anaconda3\lib\site-packages\scipy\stats\_distn_infrastructure.py", line 3332, in __init__
    self.pk = np.take(np.ravel(pk), indx, 0)

  File "c:\users\christoph\anaconda3\lib\site-packages\numpy\core\fromnumeric.py", line 181, in take
    return _wrapfunc(a, 'take', indices, axis=axis, out=out, mode=mode)

  File "c:\users\christoph\anaconda3\lib\site-packages\numpy\core\fromnumeric.py", line 51, in _wrapfunc
    return getattr(obj, method)(*args, **kwds)
IndexError: index 3 is out of bounds for size 3

Scipy/Numpy/Python version information:
import sys, scipy, numpy; print(scipy.__version__, numpy.__version__, sys.version_info)
1.1.0 1.15.2 sys.version_info(major=3, minor=5, micro=4, releaselevel='final', serial=0)

... and once this is fixed, most likely something's going to break down the line, too. Am labelling this as an enhancement.


Upgrading to 11.04 from 11.0 causes a complete resync

OS
Debian-Buster
Versions
The db-sync version (eg cardano-db-sync --version):11.04
PostgreSQL version:11
Build/Install Method
The method you use to build or install cardano-db-sync: N/A
Run method
The method you used to run cardano-db-sync: Docker
Problem Report
A fully synced up dbsync-11 deployment was upgraded to 11.04 causing a total rollback of the database.:
/run/secrets
Generating PGPASS file
Connecting to network specified in configuration.yaml
[db-sync-node:Info:6] [2021-10-08 14:00:41.23 UTC] Schema migration files validated
[db-sync-node:Info:6] [2021-10-08 14:00:41.23 UTC] Running database migrations
[db-sync-node:Info:6] [2021-10-08 14:00:42.54 UTC] Using byron genesis file from: "/config/cardano-db-sync/../cardano-node/mainnet-byron-genesis.json"
[db-sync-node:Info:6] [2021-10-08 14:00:42.54 UTC] Using shelley genesis file from: "/config/cardano-db-sync/../cardano-node/mainnet-shelley-genesis.json"
[db-sync-node:Info:6] [2021-10-08 14:00:42.54 UTC] Using alonzo genesis file from: "/config/cardano-db-sync/../cardano-node/mainnet-alonzo-genesis.json"
[db-sync-node:Info:6] [2021-10-08 14:00:42.84 UTC] NetworkMagic: 764824073
[db-sync-node:Info:6] [2021-10-08 14:00:43.23 UTC] Initial genesis distribution present and correct
[db-sync-node:Info:6] [2021-10-08 14:00:43.23 UTC] Total genesis supply of Ada:<PHONE_NUMBER>5.000000
[db-sync-node:Info:6] [2021-10-08 14:00:43.23 UTC] Inserting Shelley Genesis distribution
[db-sync-node:Info:6] [2021-10-08 14:00:43.23 UTC] epochPluginOnStartup: Checking
[db-sync-node:Info:6] [2021-10-08 14:00:43.23 UTC] localInitiatorNetworkApplication: connecting to node via "/ipc/node.socket"
[db-sync-node.Subscription:Notice:65] [2021-10-08 14:00:43.23 UTC] Identity Starting Subscription Worker, valency 1
[db-sync-node.Subscription:Notice:66] [2021-10-08 14:00:43.23 UTC] Identity Connection Attempt Start, destination LocalAddress "/ipc/node.socket"
[db-sync-node.Subscription:Error:66] [2021-10-08 14:00:43.23 UTC] Identity Connection Attempt Exception, destination LocalAddress "/ipc/node.socket" exception: Network.Socket.connect: <socket: 22>: does not exist (No such file or directory)
[db-sync-node.ErrorPolicy:Warning:6] [2021-10-08 14:00:43.23 UTC] IP LocalAddress "/ipc/node.socket" ErrorPolicySuspendPeer (Just (ConnectionExceptionTrace Network.Socket.connect: <socket: 22>: does not exist (No such file or directory))) 20s 20s
[db-sync-node.Subscription:Warning:65] [2021-10-08 14:00:43.26 UTC] Identity Failed to start all required subscriptions
[db-sync-node.Subscription:Notice:65] [2021-10-08 14:00:44.26 UTC] Identity Restarting Subscription after 1.0263786s desired valency 1 current valency 0
[db-sync-node.Subscription:Notice:65] [2021-10-08 14:00:53.24 UTC] Identity Starting Subscription Worker, valency 1
[db-sync-node.Subscription:Notice:68] [2021-10-08 14:00:53.24 UTC] Identity Connection Attempt Start, destination LocalAddress "/ipc/node.socket"
[db-sync-node.Subscription:Error:68] [2021-10-08 14:00:53.24 UTC] Identity Connection Attempt Exception, destination LocalAddress "/ipc/node.socket" exception: Network.Socket.connect: <socket: 22>: does not exist (No such file or directory)
[db-sync-node.ErrorPolicy:Warning:6] [2021-10-08 14:00:53.24 UTC] IP LocalAddress "/ipc/node.socket" ErrorPolicySuspendPeer (Just (ConnectionExceptionTrace Network.Socket.connect: <socket: 22>: does not exist (No such file or directory))) 20s 20s
[db-sync-node.Subscription:Warning:65] [2021-10-08 14:00:53.27 UTC] Identity Failed to start all required subscriptions
[db-sync-node.Subscription:Notice:65] [2021-10-08 14:00:54.27 UTC] Identity Restarting Subscription after 1.0266768s desired valency 1 current valency 0
[db-sync-node.Subscription:Notice:65] [2021-10-08 14:01:03.24 UTC] Identity Starting Subscription Worker, valency 1
[db-sync-node.Subscription:Notice:70] [2021-10-08 14:01:03.24 UTC] Identity Connection Attempt Start, destination LocalAddress "/ipc/node.socket"
[db-sync-node.Subscription:Error:70] [2021-10-08 14:01:03.24 UTC] Identity Connection Attempt Exception, destination LocalAddress "/ipc/node.socket" exception: Network.Socket.connect: <socket: 22>: does not exist (No such file or directory)
[db-sync-node.ErrorPolicy:Warning:6] [2021-10-08 14:01:03.24 UTC] IP LocalAddress "/ipc/node.socket" ErrorPolicySuspendPeer (Just (ConnectionExceptionTrace Network.Socket.connect: <socket: 22>: does not exist (No such file or directory))) 20s 20s
[db-sync-node.Subscription:Warning:65] [2021-10-08 14:01:03.27 UTC] Identity Failed to start all required subscriptions
[db-sync-node.Subscription:Notice:65] [2021-10-08 14:01:04.27 UTC] Identity Restarting Subscription after 1.0257719s desired valency 1 current valency 0
[db-sync-node.Subscription:Notice:65] [2021-10-08 14:01:13.25 UTC] Identity Starting Subscription Worker, valency 1
[db-sync-node.Subscription:Notice:72] [2021-10-08 14:01:13.25 UTC] Identity Connection Attempt Start, destination LocalAddress "/ipc/node.socket"
[db-sync-node.Subscription:Notice:72] [2021-10-08 14:01:13.25 UTC] Identity Connection Attempt End, destination LocalAddress "/ipc/node.socket" outcome: ConnectSuccessLast
[db-sync-node.Handshake:Info:72] [2021-10-08 14:01:13.25 UTC] WithMuxBearer (ConnectionId {localAddress = LocalAddress "", remoteAddress = LocalAddress "/ipc/node.socket"}) Send (ClientAgency TokPropose,MsgProposeVersions (fromList [(NodeToClientV_1,TInt 764824073),(NodeToClientV_2,TInt 764824073),(NodeToClientV_3,TInt 764824073),(NodeToClientV_4,TInt 764824073),(NodeToClientV_5,TInt 764824073),(NodeToClientV_6,TInt 764824073),(NodeToClientV_7,TInt 764824073),(NodeToClientV_8,TInt 764824073),(NodeToClientV_9,TInt 764824073)]))
[db-sync-node.Handshake:Info:72] [2021-10-08 14:01:13.25 UTC] WithMuxBearer (ConnectionId {localAddress = LocalAddress "", remoteAddress = LocalAddress "/ipc/node.socket"}) Recv (ServerAgency TokConfirm,MsgAcceptVersion NodeToClientV_9 (TInt 764824073))
[db-sync-node.Mux:Info:72] [2021-10-08 14:01:13.25 UTC] Bearer on ConnectionId {localAddress = LocalAddress "", remoteAddress = LocalAddress "/ipc/node.socket"} event: Handshake Client end, duration 0.0009272s
[db-sync-node.Mux:Info:73] [2021-10-08 14:01:13.25 UTC] Bearer on ConnectionId {localAddress = LocalAddress "", remoteAddress = LocalAddress "/ipc/node.socket"} event: State: Mature
[db-sync-node:Info:76] [2021-10-08 14:01:13.25 UTC] Starting chainSyncClient
[db-sync-node:Info:76] [2021-10-08 14:01:13.26 UTC] Cardano.Db tip is at slot 42134897, block 6344928
[db-sync-node:Info:81] [2021-10-08 14:01:13.26 UTC] Running DB thread
[db-sync-node:Info:81] [2021-10-08 14:01:13.26 UTC] Rolling back to genesis
[db-sync-node.Subscription:Notice:65] [2021-10-08 14:01:13.28 UTC] Identity Required subscriptions started
[db-sync-node:Info:81] [2021-10-08 14:01:26.65 UTC] Deleting 6344928 blocks up to slot 42134897

This in combination with: https://github.com/input-output-hk/cardano-db-sync/issues/754 means that it's effectively at least a 24hour task to upgrade to a minor release ...
dbsync and graphql/hasura power a lot of important financial integrations for us, and it is very painful to go through this sync so often.

This is almost certainly due to the ledger state files being missing. If that file is missing (or not persisted across restarts) the database will roll back.

I think something has slipped past testing, the "example" compose files just happen to use a hardcoded directory for the state-dir. If you try to pass it onto the command line, you get the following:
/run/secrets
Generating PGPASS file
Connecting to network specified in configuration.yaml
Invalid option `--state-dir'

Usage: cardano-db-sync-extended (COMMAND | --config FILEPATH
                                  --socket-path FILEPATH --state-dir FILEPATH
                                  --schema-dir FILEPATH
                                  [--rollback-to-slot WORD])
  Extended Cardano POstgreSQL sync node.

It looks like there hasn't been any activity on this issue for a some time. We're closing it for now. If you're still experiencing this problem or have any updates, please reopen or create a new issue. Your feedback is valuable, thank you!


Images vanishing in upgrade.

-Images vanishing in upgrade.
-We should pull images again after every upgrade/ restore.

@cakesoft-swati  , please mention which env it was and build numbers you were testing out

Tested on Staging 1.1.2(110) upgraded app.


Add get/set to property attribute to specify custom getter/setter

Fix #547

@Bromeon I think the Property idea really make sense. Sorry I didn't notice that discussion on Discord before.

Sorry I didn't notice that discussion on Discord before.

No worries, I should have copied it to the GitHub issue. Discord is temporary aether ✨

So I should implement it in this PR, right?

If it's possible with reasonable effort, gladly. But don't hesitate to reach out when you encounter issues or want someone else to jump in 👍

#[property] (no attributes) keep working as-is, auto-generating getter and setter
#[property(get = "...")] has a custom getter -- I would say no setter is generated (consistent with GDScript setget)
#[property(set = "...")] has a custom setter -- also, no getter
#[property(get = "...", set = "...")] has custom getter and setter

Maybe we should require that, as soon as at least one of get or set attributes are present, the field type must be Property<T>.

Generally agree. I believe it might be better if we allowed users to declare auto-generated accessors explicitly, a la C#, and only require the field to be Property<T> if none of the default logic is used:

#[property(get, set = "...")] - custom setter, auto-generated getter
#[property(get = "...", set)] - custom getter, auto-generated setter
#[property(get, set)] - same as #[property] without arguments, but explicit

Having this option is good for many simple use cases where the custom setters boil down to "assign with side effects". For example:
struct SomeType {
    #[property(get, set = "Self::set_foo")]
    foo: Foo,
    bar: Bar,
    update_required: bool,
}

#[methods]
impl SomeType {
    #[export]
    fn _process(&mut self, _owner: TRef<'_, Node>, _delta: f32) {
        if self.update_required {
            self.update_required = false;
            unimplemented!("do expensive stuff");
        }
    }

    #[export]
    fn set_foo(&mut self, _owner: TRef<'_, Node>, value: Foo) {
        self.bar = value.compute_bar();
        self.foo = value;
        self.update_required = true;
    }
}

This becomes visibly more verbose if we require that the value be stored separately from the property declaration:
struct SomeType {
    #[property(get = "Self::get_foo", set = "Self::set_foo")]
    foo: Property<Foo>,
    foo_storage: Foo, // New field

    bar: Bar,
    update_required: bool,
}

#[methods]
impl SomeType {
    #[export]
    fn _process(&mut self, _owner: TRef<'_, Node>, _delta: f32) {
        if self.update_required {
            self.update_required = false;
            unimplemented!("do expensive stuff");
        }
    }

    // New method
    #[export]
    fn get_foo(&self, _owner: TRef<'_, Node>) -> &Foo {
        &self.foo_storage // Error-prone: users are tempted to write `&self.foo`, which won't compile
    }

    #[export]
    fn set_foo(&mut self, _owner: TRef<'_, Node>, value: Foo) {
        self.bar = value.compute_bar();
        self.foo_storage = value; // Error-prone, same as above.
        self.update_required = true;
    }
}

@chitoyuu That's a good addendum, thanks for mentioning C#.
I fully agree with your suggestions!

@Bromeon I think it's ready to be reviewed now.

@Bromeon I have finished the most of changes. But not sure how to generate #[allow(dead_code)] in macro. It seems that proc_macro_derive can not modify original struct?

bors try

One thing I noticed during testing:
#[derive(NativeClass)]
#[inherit(Node)]
struct MyStruct {
    #[property(get = "Self::get_i32")]
    #[allow(dead_code)]
    extra: Property<i32>,
}

#[methods]
impl MyStruct {
    fn new(_owner: &Node) -> Self {
        MyStruct {
            extra: Property::default()
        }
    }

    fn get_i32(&self, _owner: &Node) -> i32 {
        53
    }
}

fails to compile with:
error[E0308]: mismatched types
 --> examples\array_export\src\lib.rs:5:10
  |
5 | #[derive(NativeClass)]
  |          ^^^^^^^^^^^ expected `&gdnative::prelude::Node`, found struct `gdnative::prelude::TRef`
  |
  = note: expected reference `&gdnative::prelude::Node`
                found struct `gdnative::prelude::TRef<'_, gdnative::prelude::Node>`
  = note: this error originates in the derive macro `NativeClass` (in Nightly builds, run with -Z macro-backtrace for more info)

Changing the getter's parameter type &Node to TRef<Node> works.
But this seems to be a limitation of the builder in general and has existed before this PR, so I don't think we have to fix it here. It could be revisited when addressing https://github.com/godot-rust/godot-rust/issues/850.

Alternative semantics according to Discord discussion:

Field type ->
bare T
Property<T>

#[property]
✔ default get/set
❌

#[property(get, set)] (same as above)
✔ default get/set
❌

#[property(get)]
✔ default get (no set)
❌

#[property(get="path")]
⚠custom get (no set)(consider using Property<T>)
✔ custom get (no set)

#[property(get="path", set)]
✔ custom get, default set
❌

#[property(get="path", set="path")]
⚠ custom get + set(consider using Property<T>)
✔ custom get + set

⚠ means that it's possible to use #[property] on a field of bare type T, but godot-rust will never access the field directly.
As such, the field type might as well be Property<T>. If you do use the field on the Rust side, a bare type T can still be more ergonomic as it doesn't force you to maintain a separate backing field T.

GitHub Actions is down 📉
https://mobile.twitter.com/githubstatus/status/1490089225819148289
Will retry tomorrow.

Very good point, I removed the wrapper.
Thanks for the feedback and the whole effort! Glad to move ahead with this feature 🚀
bors r+

MSRV 1.51 with its array iteration is a sneaky one. Glad they fixed this in more recent Rust...
bors r+


Fix the removed std::allocator::pointer member type removed in C++20

This member type was deprecated in C++17 and removed in C++20.

Applied. Thanks.


expand request data

Hello everyone, I am a newcomer who has just started working with luasnip. I would like to use luasnip to complete the following functions
This is an open request address, request_test
I want to request data through Python code or curl to generate a list of titles. After return, I can select a title to complete it through nvim-cmp. I have reviewed the documentation and referenced other people's code, but I still don't know how to implement it
If possible, could you provide an example to help me understand how it was implemented

Hi :)
I'm not 100% sure what you're asking:

I want to request data through Python code or curl to generate a list of titles

Should these be generated after expanding a snippet, or should these be used to generate a bunch of snippets?

to help me understand how it was implemented

What is it in this case? I don't think we have any examples that do requests :sweat_smile:

Hi :) I'm not 100% sure what you're asking:

I want to request data through Python code or curl to generate a list of titles

Should these be generated after expanding a snippet, or should these be used to generate a bunch of snippets?

to help me understand how it was implemented

What is it in this case? I don't think we have any examples that do requests 😅
Hi：）我不能100%确定你在问什么：

我想通过Python代码或curl请求数据来生成一个标题列表。

这些标题应该在扩展一个片段后生成，还是应该用来生成一堆片段？
帮助

我理解它是如何实现的

在这种情况下，it是什么？我不认为我们有任何例子，

Sorry, this was my mistake
For example, if a trigger word is defined as "rq", the script will use curl or Python to initiate a network request and return the following data:
[
{
"userId": 1,
"id": 1,
"title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
"body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"
},
{
"userId": 1,
"id": 2,
"title": "qui est esse",
"body": "est rerum tempore vitae\nsequi sint nihil reprehenderit dolor beatae ea dolores neque\nfugiat blanditiis voluptate porro vel nihil molestiae ut reiciendis\nqui aperiam non debitis possimus qui neque nisi nulla"
},
{
"userId": 1,
"id": 3,
"title": "ea molestias quasi exercitationem repellat qui ipsa sit aut",
"body": "et iusto sed quo iure\nvoluptatem occaecati omnis eligendi aut ad\nvoluptatem doloribus vel accusantium quis pariatur\nmolestiae porro eius odio et labore et velit aut"
}
]
Format the returned JSON array using JQ, retrieve a field such as "title", and return a list of title fields for selection

Hi :) I'm not 100% sure what you're asking:

I want to request data through Python code or curl to generate a list of titles

Should these be generated after expanding a snippet, or should these be used to generate a bunch of snippets?

to help me understand how it was implemented

What is it in this case? I don't think we have any examples that do requests 😅

Sorry, this was my mistake
For example, if a trigger word is defined as "rq", the script will use curl or Python to initiate a network request and return the following data:
[
{
"userId": 1,
"id": 1,
"title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
"body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"
},
{
"userId": 1,
"id": 2,
"title": "qui est esse",
"body": "est rerum tempore vitae\nsequi sint nihil reprehenderit dolor beatae ea dolores neque\nfugiat blanditiis voluptate porro vel nihil molestiae ut reiciendis\nqui aperiam non debitis possimus qui neque nisi nulla"
},
{
"userId": 1,
"id": 3,
"title": "ea molestias quasi exercitationem repellat qui ipsa sit aut",
"body": "et iusto sed quo iure\nvoluptatem occaecati omnis eligendi aut ad\nvoluptatem doloribus vel accusantium quis pariatur\nmolestiae porro eius odio et labore et velit aut"
}
]
Format the returned JSON array using JQ, retrieve a field such as "title", and return a list of title fields for selection

There are two main issues,

How to use LuaSIP to initiate network requests
How to format the return result and generate a list of options

Ah, okay:
you can use a dynamicNode to generate nodes upon expanding.
In your case you'd want to generate a choiceNode since that allows switching between multiple options (and theres a cmp-source for it, https://github.com/L3MON4D3/cmp-luasnip-choice should work right now, but I can't promise it will continue to do so)
Regarding the request, you may want use something like luacurl since that would not require the separate bash+curl+jq, but you can try this first.
If you can massage the data into a more concrete format I can give you some more tips on the choiceNode :)


Make annotations description generation automatable

Changes

Add description of user-facing annotations to pydantic.Field(help="")
Explore serialization_alias to possibly replace the current serialization_formating. For example,

class Entry(BaseModel):
    pdb_id: str = Field(
        default_factory=str,
        help="RCSB PDB ID. See https://mmcif.wwpdb.org/dictionaries/mmcif_pdbx_v50.dic/Items/_entry.id.html",
        serialization_alias="entry_pdb_id")

I just checked the pydantic docs. Isn't the correct parameter description instead of help? https://docs.pydantic.dev/latest/api/fields/

I accidentally pushed to the wrong branch, I will revert my commits

I just removed my commits. Could you pull the branch?


Number of events 0

ℹ Computer information

Platform OS: Windows 10
Python Version: Python 3.7.10
Brain Interface Used: Muse 2

📝 Provide detailed reproduction steps (if any)

switch on Muse 2 and start streaming with Petal Metrics
run experiment P300 with the command eegnb runexp -ip, and input the necessary parameters; complete experiment
fill in the missing values in the experimental data csv file(see #108, #111; without filling in the values you get a tokenizing error)
analyze your data as explained in https://neurotechx.github.io/eeg-notebooks/auto_examples/visual_p300/01r__p300_viz.html using Jupyter Notebooks up to and including the epoching step (# Create an array containing the timestamps and type of each stimulus)

✔ Expected result
Based on the marker column a number of events is detected, including both target and non-target events. The output resulting from running this cell shows the corresponding results
❌ Actual result
The output shows that 23 events were found, however, in the table below the number of events is 0, and there are 0 occurrences of both target and non-target events
📷 Screenshots

I believe that this issue is connected to #108 / #111 . If I use the example data (subject 1, session 1) that is used in https://neurotechx.github.io/eeg-notebooks/auto_examples/visual_p300/01r__p300_viz.html, target and non-target events are found. Although, there is a discrepancy in events found (1161) and the number of events in the table below (1143: 959 non-target and 184 target events).

By visual inspection I do not see any differences between my experimental data file and that of example data (except that I only recorded a single run of 120s, while example data had 6 runs all of longer duration).
I add my experimental data file (had to change the extension from csv to txt, since otherwise I received a file type not supported error when trying to upload it here).
recording_2021-06-28-14.34.59.txt

By visual inspection I do not see any differences between my experimental data file and that of example data (except that I only recorded a single run of 120s, while example data had 6 runs all of longer duration).

@Maari13, ran through your file locally and this seems to be the reason why you're not getting events returned.
In the notebook, you'd notice that this snippet exists:
events = find_events(raw)
event_id = {'Non-Target': 1, 'Target': 2}
epochs = Epochs(raw, events=events, event_id=event_id,
                tmin=-0.1, tmax=0.8, baseline=None,
                reject={'eeg': 100e-6}, preload=True,
                verbose=False, picks=[0,1,2,3])

print('sample drop %: ', (1 - len(epochs.events)/len(events)) * 100)

epochs

The reject field determines the threshold for rejecting epochs based on peak-to-peak signal amplitude. See MNE docs here
Notice below how changing the reject value to a much higher number keeps more events but potentially including more noisy results.

My recommendation here would be

doing a much longer recording maybe 5mins
ensure that electrodes are well placed to ensure good quality recording
tweaking reject value iteratively

Thank you @oreHGA - indeed this is not an uncommon issue. As Ore said, you can try tweaking the threshold iteratively; e.g. up/down a few percent. You will probably see as you do that more epochs are kept the more lenient you go, and concurrently that the average ERP trace gets noisier ('wigglier'), because more noisy data points are being included.
As Ore said, the fundamental issue here is a noisy recording set up.
Try
using the muselsl signal viewer to confirm you have good signal before running the experiment
muselsl view -v 2
(you may have to also pip install vispy first )
And make sure the numbers on the right are <20.
We have nearly finished a simple signal quality check function for eeg notebooks that will help with this part of the setup process. Watch this space (or watch the PRs if you're very interested).
Let us know if this helps!

Thank you so much for the explanation and advice. It did not occur to me that an automatic quality check was applied to the epoch data. I was going to do longer recordings, but first wanted to make sure I got things to work and then was puzzled ... I will definitely need to check the contact of the electrodes with the scalp and preview the signal before acquiring data next time. And then tweek the reject value

Hi @Maari13 , hope you were able to get more sample in after adjusting the "reject" threshold. I'll go ahead and close this now but feel free to reply to the thread if you still have any issues. Cheers


Implement docker-app fork

- What I did
Implemented a new docker-app fork command with the following signature:
Create a fork of an existing application to be modified

Usage:
  docker-app fork <origin-name> <fork-name> [-p outputdir] [-m name:email ...] [flags]

Flags:
  -h, --help                     help for fork
  -m, --maintainer stringArray   Maintainer (name:email) (optional)
  -p, --path string              Directory where the application will be extracted (default ".")

https://asciinema.org/a/QyR6xAcBDZwN8GaJNErEz7shA
- How I did it

Added fork.go inside the packager package, which does most of the work:

Pull "origin" image and saves it locally
Modify the contents of the metadata file to reflect the new package status
Copy the updated contents to the specified location

Small modifications to registry.go and init.go extracting code snippets for reuse
Modified the AppMetadata type to include a Parents field that tracks the package's ancestry.

- How to verify it
Tests are WIP. Manual testing can be performed by building from source and using the docker-app fork command.
- Description for the changelog

Added the fork command, allowing the user to create a fork of an existing application to be modified locally.

- A picture of a cute animal (not mandatory but encouraged)

Bit on the fence for the name; thinking of some options

docker app load and passing the name (--name=myname) to override?
docker app init --from= docker app init --import=

Responding here for visibility since the comment got collapsed

https://github.com/docker/app/pull/292#discussion_r203652895

In my mind there were two reasons to not do this:

I expect AppMetadata to grow over time with more information as the project evolves, while ParentMetadata will stay mostly static, and potentially diverge (e.g what if we want to add a DateForked field at some point?)
Recursive structures could increase our exposure YAML bombs.

Since this isn't actually a recursive structure, I think it's best if we avoid reusing it just because the fields currently look similar.

@chris-crone Not sure what you mean by "I didn't see the parent metadata being filled" ; your output has the parents section filled out afaict.

Sorry @shin-, yes it does have the parents, I just didn't read it properly.
Last question for me is if we should require that the user specifies the name of the fork. Could we not just allow a user to do:
$ docker-app fork ccrone/hello.dockerapp:0.1.0

And set the application name to be the same as the parent. This would give us a more git like flow.

@chris-crone Updated to make fork-name an optional argument.


Allow uploading files without Content-Type.

Looks like our SDKs might be uploading files without Content-Type header, which is valid, since we want the server to automatically pick a content type for us.
Remove the restriction by using function instead of a string for body parser type validation (any other ideas on how to remove content-type restriction there are very very welcome).
Also added test that validates that this works now.
Fixes #573

LGTM assuming tests pass


utils: fix element descriptions in guidelines ref

I tried .//text() at first to process all elements which occur, but it returned too much content (like attribute names). I guess that the script I edited is dealing with pre-processed data. After analyzing the MEI modules I figured out that adding abbr to the script should work (for now).
Thanks for feedback.
Fixes #1343

Great! Thank you @riedde!


Azure Firewall

Accounting for Azure Firewall

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

ID: fd5972fd-29f4-2643-56d4-98f845a132e6
Version Independent ID: 900d8d64-db85-6db9-3a38-22d84d0c55df
Content: Azure Stack networking Differences and considerations
Content Source: azure-stack/user/azure-stack-network-differences.md
Service: azure-stack
GitHub Login: @mattbriggs
Microsoft Alias: mabrigg

@tiny-dancer Thanks for the feedback! Azure firewall is not currently a part of Azure Stack. If you would like us to add it in the future, please leave your feedback Here.
I have assigned the issue to the content author to evaluate and update as appropriate.

@tiny-dancer I've added a row that Azure Firewall is net yet supported in Azure Stack.

#please-close


Extend ibc::mock types with more data fields

Closes #186

I am a bit confused about how to run the build step. When I run ./scripts/sync-protobuf.sh, I see changes at places other than src/prost/ibc.mock*.rs and src/prost/proto_descriptor.bin :sweat_smile:
cc @romac @Farhad-Shabani

I am a bit confused about how to run the build step. When I run ./scripts/sync-protobuf.sh, I see changes at places other than src/prost/ibc.mock*.rs and src/prost/proto_descriptor.bin 😅
cc @romac @Farhad-Shabani

Make sure you are using the latest version of proto compiler (libprotoc v0.25)

I am using v0.25.1 - do I have to get the latest v0.25.2?

@Farhad-Shabani as per our discussion, I simplified the definitions :slightly_smiling_face:

@Farhad-Shabani thanks for the nits :sweat_smile: totally missed them ! I don't have access to this repo - please, go ahead with the merge. :handshake: