gem load error for chef-dk 1.2.22 on mac

Description
Running rspec shows some gem load error problems.
ChefDK Version
$ chef -v
Chef Development Kit Version: 1.2.22
chef-client version: 12.18.31
delivery version: master (0b746cafed65a9ea1a79de3cc546e7922de9187c)
berks version: 2017-03-03T15:47:48.406386 44617] 2017-03-03T15:47:48.406542 44617] 2017-03-03T15:47:48.406653 44617] 2017-03-03T15:47:48.406751 44617] 2017-03-03T15:47:48.436649 44617] 2017-03-03T15:47:48.436778 44617] 5.6.0
kitchen version: 1.15.0

Platform Version
Mac OS
Replication Case
brew cask install chefdk
chef exec rspec
Stacktrace
my_cookbook wickett$ chef exec rspec
/opt/chefdk/embedded/lib/ruby/site_ruby/2.3.0/rubygems/specification.rb:2278:in `check_version_conflict': can't activate net-ssh-4.0.1, already activated net-ssh-3.2.0 (Gem::LoadError)
        from /opt/chefdk/embedded/lib/ruby/site_ruby/2.3.0/rubygems/specification.rb:1404:in `activate'
        from /opt/chefdk/embedded/lib/ruby/site_ruby/2.3.0/rubygems.rb:239:in `block in finish_resolve'
        from /opt/chefdk/embedded/lib/ruby/site_ruby/2.3.0/rubygems.rb:238:in `each'
        from /opt/chefdk/embedded/lib/ruby/site_ruby/2.3.0/rubygems.rb:238:in `finish_resolve'
        from /opt/chefdk/embedded/lib/ruby/site_ruby/2.3.0/rubygems/rdoc.rb:15:in `<top (required)>'
        from /opt/chefdk/embedded/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:120:in `require'
        from /opt/chefdk/embedded/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:120:in `require'
        from /opt/chefdk/embedded/lib/ruby/site_ruby/2.3.0/rubygems/uninstaller.rb:11:in `<top (required)>'
        from /opt/chefdk/embedded/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:120:in `require'
        from /opt/chefdk/embedded/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:120:in `require'
        from /opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/chef-12.18.31/lib/chef/provider/package/rubygems.rb:37:in `<top (required)>'
        from /opt/chefdk/embedded/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:68:in `require'
        from /opt/chefdk/embedded/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:68:in `require'
        from /opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/chef-12.18.31/lib/chef/providers.rb:81:in `<top (required)>'
        from /opt/chefdk/embedded/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:68:in `require'
        from /opt/chefdk/embedded/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:68:in `require'
        from /opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/chefspec-5.3.0/lib/chefspec/extensions/chef/client.rb:7:in `<top (required)>'
        from /opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/chefspec-5.3.0/lib/chefspec.rb:46:in `require_relative'
        from /opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/chefspec-5.3.0/lib/chefspec.rb:46:in `<top (required)>'
        from /opt/chefdk/embedded/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:133:in `require'
        from /opt/chefdk/embedded/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:133:in `rescue in require'
        from /opt/chefdk/embedded/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:40:in `require'
        from /Users/wickett/workspace/infrastructure-automation-class/01-04_unit_testing_infrastructure/my_cookbook/spec/spec_helper.rb:1:in `<top (required)>'
        from /opt/chefdk/embedded/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
        from /opt/chefdk/embedded/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
        from /Users/wickett/workspace/infrastructure-automation-class/01-04_unit_testing_infrastructure/my_cookbook/spec/unit/recipes/default_spec.rb:7:in `<top (required)>'
        from /opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/rspec-core-3.5.4/lib/rspec/core/configuration.rb:1435:in `load'
        from /opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/rspec-core-3.5.4/lib/rspec/core/configuration.rb:1435:in `block in load_spec_files'
        from /opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/rspec-core-3.5.4/lib/rspec/core/configuration.rb:1433:in `each'
        from /opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/rspec-core-3.5.4/lib/rspec/core/configuration.rb:1433:in `load_spec_files'
        from /opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/rspec-core-3.5.4/lib/rspec/core/runner.rb:100:in `setup'
        from /opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/rspec-core-3.5.4/lib/rspec/core/runner.rb:86:in `run'
        from /opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/rspec-core-3.5.4/lib/rspec/core/runner.rb:71:in `run'
        from /opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/rspec-core-3.5.4/lib/rspec/core/runner.rb:45:in `invoke'
        from /opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/rspec-core-3.5.4/exe/rspec:4:in `<top (required)>'
        from /opt/chefdk/embedded/bin/rspec:22:in `load'
        from /opt/chefdk/embedded/bin/rspec:22:in `<main>'

Seeing thus, perhaps related, issue. Removed and reinstalled 1.22.2 on macOS a few times and see this consistently:
chef --version
Ignoring nokogiri-<IP_ADDRESS> because its extensions are not built.  Try: gem pristine nokogiri --version <IP_ADDRESS>
Chef Development Kit Version: 1.2.22
chef-client version: 12.18.31
delivery version: master (0b746cafed65a9ea1a79de3cc546e7922de9187c)
berks version: 2017-03-04T14:09:48.852562 82528] 2017-03-04T14:09:48.852690 82528] 2017-03-04T14:09:48.852790 82528] 2017-03-04T14:09:48.852878 82528] 2017-03-04T14:09:48.878946 82528] 2017-03-04T14:09:48.879062 82528] 5.6.0
kitchen version: 1.15.0

Yeah it feels like that is related.

@philoserf can you do a chef verify as well?  Also, are you using chef shell-init bash to adjust your PATH?

here is the error I get, chefspec fails
$ chef verify
Running verification for component 'berkshelf'
Running verification for component 'test-kitchen'
Running verification for component 'tk-policyfile-provisioner'
Running verification for component 'chef-client'
Running verification for component 'chef-dk'
Running verification for component 'chef-provisioning'
Running verification for component 'chefspec'
Running verification for component 'generated-cookbooks-pass-chefspec'
Running verification for component 'rubocop'
Running verification for component 'fauxhai'
Running verification for component 'knife-spork'
Running verification for component 'kitchen-vagrant'
Running verification for component 'package installation'
Running verification for component 'openssl'
Running verification for component 'inspec'
Running verification for component 'delivery-cli'
Running verification for component 'git'
Running verification for component 'opscode-pushy-client'
Running verification for component 'chef-sugar'
..Unable to activate aws-sdk-v1-1.66.0, because json-2.0.3 conflicts with json (~> 1.4)
Unable to activate stuartpreston-azure-sdk-for-ruby-0.7.2, because json-2.0.3 conflicts with json (~> 1.8)
Unable to activate activesupport-<IP_ADDRESS>, because json-2.0.3 conflicts with json (>= 1.7.7, ~> 1.7)
....

/opt/chefdk/embedded/lib/ruby/site_ruby/2.3.0/rubygems/specification.rb:2278:in `check_version_conflict': can't activate net-ssh-4.0.1, already activated net-ssh-3.2.0 (Gem::LoadError)
        from /opt/chefdk/embedded/lib/ruby/site_ruby/2.3.0/rubygems/specification.rb:1404:in `activate'
        from /opt/chefdk/embedded/lib/ruby/site_ruby/2.3.0/rubygems.rb:239:in `block in finish_resolve'
        from /opt/chefdk/embedded/lib/ruby/site_ruby/2.3.0/rubygems.rb:238:in `each'
        from /opt/chefdk/embedded/lib/ruby/site_ruby/2.3.0/rubygems.rb:238:in `finish_resolve'
        from /opt/chefdk/embedded/lib/ruby/site_ruby/2.3.0/rubygems/rdoc.rb:15:in `<top (required)>'
        from /opt/chefdk/embedded/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:120:in `require'
        from /opt/chefdk/embedded/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:120:in `require'
        from /opt/chefdk/embedded/lib/ruby/site_ruby/2.3.0/rubygems/uninstaller.rb:11:in `<top (required)>'
        from /opt/chefdk/embedded/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:120:in `require'
        from /opt/chefdk/embedded/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:120:in `require'
        from /opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/chef-12.18.31/lib/chef/provider/package/rubygems.rb:37:in `<top (required)>'
        from /opt/chefdk/embedded/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:68:in `require'
        from /opt/chefdk/embedded/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:68:in `require'
        from /opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/chef-12.18.31/lib/chef/providers.rb:81:in `<top (required)>'
        from /opt/chefdk/embedded/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:68:in `require'
        from /opt/chefdk/embedded/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:68:in `require'
        from /opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/chefspec-5.3.0/lib/chefspec/extensions/chef/client.rb:7:in `<top (required)>'
        from /opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/chefspec-5.3.0/lib/chefspec.rb:46:in `require_relative'
        from /opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/chefspec-5.3.0/lib/chefspec.rb:46:in `<top (required)>'
        from /opt/chefdk/embedded/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:133:in `require'
        from /opt/chefdk/embedded/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:133:in `rescue in require'
        from /opt/chefdk/embedded/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:40:in `require'
        from /private/var/folders/qz/_4d2fms50jldkc3_89k3n9yh0000gn/T/d20170306-87219-1k05qqw/example/spec/spec_helper.rb:1:in `<top (required)>'
        from /opt/chefdk/embedded/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
        from /opt/chefdk/embedded/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
        from /private/var/folders/qz/_4d2fms50jldkc3_89k3n9yh0000gn/T/d20170306-87219-1k05qqw/example/spec/unit/recipes/default_spec.rb:7:in `<top (required)>'
        from /opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/rspec-core-3.5.4/lib/rspec/core/configuration.rb:1435:in `load'
        from /opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/rspec-core-3.5.4/lib/rspec/core/configuration.rb:1435:in `block in load_spec_files'
        from /opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/rspec-core-3.5.4/lib/rspec/core/configuration.rb:1433:in `each'
        from /opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/rspec-core-3.5.4/lib/rspec/core/configuration.rb:1433:in `load_spec_files'
        from /opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/rspec-core-3.5.4/lib/rspec/core/runner.rb:100:in `setup'
        from /opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/rspec-core-3.5.4/lib/rspec/core/runner.rb:86:in `run'
        from /opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/rspec-core-3.5.4/lib/rspec/core/runner.rb:71:in `run'
        from /opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/rspec-core-3.5.4/lib/rspec/core/runner.rb:45:in `invoke'
        from /opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/rspec-core-3.5.4/exe/rspec:4:in `<top (required)>'
        from /opt/chefdk/embedded/bin/rspec:22:in `load'
        from /opt/chefdk/embedded/bin/rspec:22:in `<main>'

.

/opt/chefdk/embedded/lib/ruby/site_ruby/2.3.0/rubygems/specification.rb:2278:in `check_version_conflict': can't activate net-ssh-4.0.1, already activated net-ssh-3.2.0 (Gem::LoadError)
        from /opt/chefdk/embedded/lib/ruby/site_ruby/2.3.0/rubygems/specification.rb:1404:in `activate'
        from /opt/chefdk/embedded/lib/ruby/site_ruby/2.3.0/rubygems.rb:239:in `block in finish_resolve'
        from /opt/chefdk/embedded/lib/ruby/site_ruby/2.3.0/rubygems.rb:238:in `each'
        from /opt/chefdk/embedded/lib/ruby/site_ruby/2.3.0/rubygems.rb:238:in `finish_resolve'
        from /opt/chefdk/embedded/lib/ruby/site_ruby/2.3.0/rubygems/rdoc.rb:15:in `<top (required)>'
        from /opt/chefdk/embedded/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:120:in `require'
        from /opt/chefdk/embedded/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:120:in `require'
        from /opt/chefdk/embedded/lib/ruby/site_ruby/2.3.0/rubygems/uninstaller.rb:11:in `<top (required)>'
        from /opt/chefdk/embedded/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:120:in `require'
        from /opt/chefdk/embedded/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:120:in `require'
        from /opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/chef-12.18.31/lib/chef/provider/package/rubygems.rb:37:in `<top (required)>'
        from /opt/chefdk/embedded/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:68:in `require'
        from /opt/chefdk/embedded/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:68:in `require'
        from /opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/chef-12.18.31/lib/chef/providers.rb:81:in `<top (required)>'
        from /opt/chefdk/embedded/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:68:in `require'
        from /opt/chefdk/embedded/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:68:in `require'
        from /opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/chefspec-5.3.0/lib/chefspec/extensions/chef/client.rb:7:in `<top (required)>'
        from /opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/chefspec-5.3.0/lib/chefspec.rb:46:in `require_relative'
        from /opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/chefspec-5.3.0/lib/chefspec.rb:46:in `<top (required)>'
        from /opt/chefdk/embedded/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:133:in `require'
        from /opt/chefdk/embedded/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:133:in `rescue in require'
        from /opt/chefdk/embedded/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:40:in `require'
        from /private/var/folders/qz/_4d2fms50jldkc3_89k3n9yh0000gn/T/d20170306-87219-9draut/spec/spec_helper.rb:1:in `<top (required)>'
        from /opt/chefdk/embedded/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
        from /opt/chefdk/embedded/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
        from /private/var/folders/qz/_4d2fms50jldkc3_89k3n9yh0000gn/T/d20170306-87219-9draut/spec/foo_spec.rb:1:in `<top (required)>'
        from /opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/rspec-core-3.5.4/lib/rspec/core/configuration.rb:1435:in `load'
        from /opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/rspec-core-3.5.4/lib/rspec/core/configuration.rb:1435:in `block in load_spec_files'
        from /opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/rspec-core-3.5.4/lib/rspec/core/configuration.rb:1433:in `each'
        from /opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/rspec-core-3.5.4/lib/rspec/core/configuration.rb:1433:in `load_spec_files'
        from /opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/rspec-core-3.5.4/lib/rspec/core/runner.rb:100:in `setup'
        from /opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/rspec-core-3.5.4/lib/rspec/core/runner.rb:86:in `run'
        from /opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/rspec-core-3.5.4/lib/rspec/core/runner.rb:71:in `run'
        from /opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/rspec-core-3.5.4/lib/rspec/core/runner.rb:45:in `invoke'
        from /opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/rspec-core-3.5.4/exe/rspec:4:in `<top (required)>'
        from /opt/chefdk/embedded/bin/rspec:22:in `load'
        from /opt/chefdk/embedded/bin/rspec:22:in `<main>'

.......
---------------------------------------------
Verification of component 'test-kitchen' succeeded.
Verification of component 'chef-provisioning' succeeded.
Verification of component 'rubocop' succeeded.
Verification of component 'knife-spork' succeeded.
Verification of component 'openssl' succeeded.
Verification of component 'delivery-cli' succeeded.
Verification of component 'opscode-pushy-client' succeeded.
Verification of component 'berkshelf' succeeded.
Verification of component 'chef-dk' succeeded.
Verification of component 'generated-cookbooks-pass-chefspec' failed.
Verification of component 'kitchen-vagrant' succeeded.
Verification of component 'inspec' succeeded.
Verification of component 'tk-policyfile-provisioner' succeeded.
Verification of component 'chefspec' failed.
Verification of component 'git' succeeded.
Verification of component 'chef-client' succeeded.
Verification of component 'chef-sugar' succeeded.
Verification of component 'fauxhai' succeeded.
Verification of component 'package installation' succeeded.

@wickett I do not run under shell-init most of the time. I do test each release with chef verify both ways, since I had learned pre 1.0 that sometimes chefdk worked under shell-init but not the other.
I finally just ran chef exec sudo gem pristine nokogiri --version <IP_ADDRESS> and went back to work.

Yeah fair enough, but the idea is that chef-dk just works.  Right?

new version is out. i'd close this issue and drive on.

Hi @philoserf, when the fix will be released also in the stable channel?
Thanks in advance

1.4 is out, also 2.0 will be out soon which will fix even more of these kinds of errors (#1255 fixed by my branch in appbundler)


How to find the exact changes for each file in a commit like git diff

Hi, this is a powerful tool for parsing git repos. Currently I am trying to find a solution to parse exact line changes in each file for each commit, like git diff. I have read your code, it seems you are also using another tool https://github.com/hhatto/gocloc to count cloc (Maybe I didn't find the right place). Do you have a API or just a solution on parsing the exact changes for files?
Looking forward to your reply, thanks for your attention!

Hello @lcwj3 !
To check changes we actually have the following functions (https://docs.sourced.tech/gitbase/using-gitbase/functions#gitbase-functions):

commit_stats(repository_id, [from_commit_hash], to_commit_hash) json: https://docs.sourced.tech/gitbase/using-gitbase/functions#how-to-use-commit_stats
commit_file_stats(repository_id, [from_commit_hash], to_commit_hash) json array: https://docs.sourced.tech/gitbase/using-gitbase/functions#how-to-use-commit_file_stats
loc(path, blob) json: https://docs.sourced.tech/gitbase/using-gitbase/functions#how-to-use-loc

Hope it helps.

Hi, thanks for your kind reply. I have tried these two API, but it seems these two can only give how many lines are changed in each file, but not exact changed line contents as what git diff does.

Sadly we don't have a way to get the content of those changed lines yet. We started some research on how to represent that on a tabular way, but right now is not in the immediate backlog.

Okay, Thanks anyway! I was using unidiff to get the changed content, which can wrap a commit as a patch, then can access the exact lines, and I think the format in patch is a good enough for me. Maybe this can help you a bit. And I will close this issue now, thanks!


[QUESTION]

Description
How can I get upload files?
Is it possible to do it like in flask?
Additional context
In docs you have:
@app.post("/")
async def some_end(files: List[UploadFile] = File(...)):
    return [file.file for file in files]

but, i want to pass files with 'keys' like file1, file2...
In flask i can just write
from flask import request

for f in request.files:
    pass

So how can i do it in fastAPI?

:flushed:
not clear what you mean, if I understood correctly what you want, in Flask the doc says :

The application accesses the file from the files dictionary on the request object

So request.files in Flask would be kind of equivalent to the files parameter in your FastAPI endpoint above, the difference being files is a list of all the files which are typed as UploadFile, while the other is a dictionary.
Now you can loop through them, get their name, length, type, well whatever you want to do with it, the same way you would do in Flask.

In flask if i pass a dict of files {'file1': 'file_ob1', file2': 'file_ob2, ...}
for f in request.files:
    print(f)

i will get file1, file2, ...
in fast api i need to specify specify
async def some_end(file1: UploadFile = File(...), file2: UploadFile = File(...)):
    pass

So i want to pass files without specifying keys
Sorry if i'm not clear enough

I don't think so it's a list of files you get, can't confirm for sure, but
I will do later
Maybe check
https://fastapi.tiangolo.com/tutorial/request-files/#multiple-file-uploads
Le ven. 13 sept. 2019 à 9:28 PM, MarkAntipin<EMAIL_ADDRESS>a
écrit :

In flask if i pass a dict of files {'file1': 'file_ob1', file2':
'file_ob2, ...}
for f in request.files:
print(f)
i will get file1, file2, ...
in fast api i need to specify specify
async def some_end(file1: UploadFile = File(...), file2: UploadFile = File(...)):
pass
So i want to pass files without specifying keys
Sorry if i'm not clear enough
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/tiangolo/fastapi/issues/527?email_source=notifications&email_token=AAINSPUTK4REXUXAXQOWSITQJPSVLA5CNFSM4IWTCHFKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD6V7GLQ#issuecomment-531362606,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAINSPWO7OFWCB4W5PQ452LQJPSVLANCNFSM4IWTCHFA
.

Ok, thank you anyway

Thanks for the help here @euri10 ! :clap: :bow:
Thanks for reporting back and closing the issue :+1:

@MarkAntipin you could use the request directly and extract the files, but you would lose the OpenAPI generation, UI docs, etc. https://fastapi.tiangolo.com/advanced/using-request-directly/


[CPT] Keep working

/test rhoai-light gating_smoke gpu

/test rhoai-light gating_smoke gpu

/test rhoai-light gating_smoke gpu

/test rhoai-light kserve gating_smoke gpu

test passed, merging this version


Updating markers doesn't appear to be possible

Lots of change in this directive in the last couple months. I'm trying to play catch up and update a fork I had created a while ago.
My fork added the ability to use watchCollection on the markers object. That is, if a marker reference changed the markers directive's _create function would be called with the new and old markers. This really doesn't seem to be much different than using the new leafData.getDirectiveControls function to grab the controls for the markers and manually control the creation of markers (with the obviously difference that one is triggered by a watch and the other one is done manually).
After integrating 0.8.4 into my fork, the ability to update a marker seems to be lost. The same behaviour is exhibited by using the getDirectiveControls method, so I'll focus on that as an example since it is currently supported.
Let's start with this plunkr: http://plnkr.co/edit/uxCAVo0CItz7VmOYbYZC?p=preview
There are a couple things going wrong here, but I'll start with the marker update. The expected behaviour is the marker's position and attributes are updated. From the source, this is what I can figure out is happening:

call create on new and old

_clean gets called. which calls _destroy, which uses _seeWhatWeAlreadyHave to decide what to delete. _seeWhatWeAlreadyHave, in this case (when the isEqual arg is set to false) executes the callback on markers that no longer exists in the new markers list. So in our example, nothing gets deleted (marker1 still exists). Sidenote: this will log a debug statement  "[AngularJS -Leaflet] [markers] destroy:" to the console. Why? Nothing is getting deleted in this case.

_getNewModelsSkipp is called (note the spelling error). This uses _seeWhatWeAlreadyHave as well, but with isEqual set to true. It finds that the new marker1 and old marker1 are not equal, so it does not add it to the skips list.

_addMarkers is called. This loops through the markersToRender, but will skip stuff from step 3 (models that have not changed). Here's where I get confused. If the leaflet marker already exists, this function does nothing. The result is that the marker doesn't get updated. I don't fully understand this comment:
//(nmccready) very important to not have model changes when lObject is changed
//this might be desirable in some cases but it causes two-way binding to lObject which is not ideal
//if it is left as the reference then all changes from oldModel vs newModel are ignored
//see _destroy (where modelDiff becomes meaningless if we do not copy here)

so if you could elaborate I would appreciate it.
One thing I noticed is that addMarkerWatcher is leafletMarkersHelpers contains a lot of logic to handle the updating of a marker and clusters. This seems to be ignored in this workflow.
There other bug I noticed that you'll see in the plunker is that popups don't work. You'll see the error message "[AngularJS - Leaflet] Popup is invalid or does not have any content." in the console. I tried to figure this one out as well, but didn't get too far. When a leaflet marker initially issues a bindPopup(...), it gets the property _popup which contains some basic properties like _content, but no _contentNode. In the popupopen callback below, the marker does have _popup._contentNode. However, in other places (addMarkerWatcher is where I noticed), the marker object that gets closed over the function does not have _contentNode. Sorry if this doesn't make sense.
listenMarkerEvents: function (marker, markerData, leafletScope, doWatch, map) {
        //these should be deregistered on destroy .. possible leake
        //handles should not be closures since they will need to be removed
        marker.on("popupopen", function (/* event */) {
            safeApply(leafletScope, function () {
                if (isDefined(marker._popup) || isDefined(marker._popup._contentNode)) {
                    markerData.focus = true;
                    _manageOpenPopup(marker, markerData, map);//needed since markerData is now a copy
                }
            });
        });
        marker.on("popupclose", function (/* event */) {
            safeApply(leafletScope, function () {
                markerData.focus = false;
            });
        });
        marker.on("add", function (/* event */) {
            safeApply(leafletScope, function () {
                if ('label' in markerData)
                    _manageOpenLabel(marker, markerData);
            });
        });
    },

Probably related to #805 #789

Thanks. I've attempted to fix this: https://github.com/cgat/angular-leaflet-directive/tree/updating-markers (added comment to #789 as well).
In regards to the popup issue, I've dug into this a bit more. The general issue is that when bindPopup is used on a marker, it recreates the L.Popup object. This object is without the _contentNode property until it is added to the map. Specifically, when L.Popup's onAdd method gets executed. It's unclear to me where exactly this gets triggered, potentially in a leaflet callback. Anyway, the markers.js and leafletMarkersHelpers.js are littered with bindPopup's followed eventually followed by manageOpenPopup. This function relies on _contentNode to be able to compile, and logs an errors and returns when it's not present.

@cgat I recently added the log message - it was just returning nothing before. Maybe it should not log an error there - but I do think that _manageOpenPopup should not be called until the popup has been added to the map - how can it open the popup when it's not even on the map? It seems by me adding the log message it has revealed that it is being called when it should not be.

@jessertaylor yes, I came to the same conclusion. As you pointed out, _manageOpenPopup only really works on the listen event.
I think I've found a solution. I've removed all occurrences of manageOpenPopup with the exception of the one in the popupopen listener and replaced them with marker.openPopup(). This way, the popup is still opened as requested, and the compilation occurs when the popup is opened. This seems to do the trick on my example, but I'm unsure about other scenarios (e.g. when the marker changes layer). I'm going to add my changes to the current PR that I'm building. Please let me know what you think.

@cgat That actually makes sense, good job. I think the only case popups should be opened by the directive is when when focus is set to true, right?

@jessertaylor exactly. See the latest commit on my updating-markers2 branch https://github.com/cgat/angular-leaflet-directive/commit/360401243f3f6d645860355b2c0067db6c55218a
Pretty simple

:+1:

@cgat Well that should stop _manageOpenPopup running twice :ok_hand:

So is this close to a PR, im curious if the other issues get resolved. I am kina waiting on this one before I dig into those if need be.

@cgat thanks, your PR has been merged


How to use this?

Can I use this library from the browser? Or is it meant to run on a server via NodeJS?
Thank you very much
Thomas.

The library was primarily written for nodejs. I dont see any reason why it shouldn't work in the browser, but the readme states it will probably not work.


Jest tests won't work without babel

Version
3.0.0-rc.10
Node and OS info
Node 10.7.0 / npm 6.3.0-next.0 / Windows 10
Steps to reproduce

Create new project with only Jest plugin selected
Run npm run test:unit

What is expected?
 PASS  tests/unit/HelloWorld.spec.js
  HelloWorld.vue
    √ renders props.msg when passed (22ms)

What is actually happening?
 FAIL  tests/unit/HelloWorld.spec.js
  ● Test suite failed to run

    Jest encountered an unexpected token

    This usually means that you are trying to import a file which Jest cannot parse, e.g. it's not plain JavaScript.

    By default, if Jest sees a Babel config, it will use that to transform your files, ignoring "node_modules".
    Details:

    C:\node_workspace\test\tests\unit\HelloWorld.spec.js:1
({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,global,jest){import { shallowMount } from '@vue/test-utils';
                                                                                ^

    SyntaxError: Unexpected token {

      at ScriptTransformer._transformAndBuildScript (node_modules/jest-runtime/build/script_transformer.js:403:17)

It works as expected if I install both Babel and Jest.

Jest is running tests in node, which doesn't support ES Modules, which would explain this.
To make this work we would change both the test files and component files to export commonjs when this coption combination is chosen. jest would also break when using import(), for example, since that's not implemented in node yet, either.
So I feel like using jest wihtout babel has a quite limited use case... nozt sure what's the best solution.

My motivation for opting out babel is actually quite simple. I'd like to use ES6 without transpiling code to ES5 I don't really use babel tho, so I'm not sure if it's possible to configure it to handle imports and leave rest as is.

I'm not really convinced that problem lies in node not being able to deal with ES6 import.
jestPlugin.spec.js specifies that jest should be working without babel plugin.
Also I get Unexpected token { not Unexpected token import, which I'd expect in such case.
Shouldn't jest plugin still use babel internally, even without babel plugin?

When you create a project with jest only, Vue CLI still installs babel-jest with the commonjs to esm transform configured. If that's not working as intended, please provide an actual reproduction.

Just confirming that with .babelrc instead of babel.config.js tests run as expected. 99761b350d37f4546bb2851fbe6f1b7e831f1b2a should fix this issue.

Many thanks @Mourdraug!
This finally solved my Jest + ES6 without babel problems, I'll add my simplified solution to this.
I eventually understood by staring at commit 65d5d36d from the jestPlugin.spec.js, this adds the babel and a babel plugin as dependencies, not as devDependencies.
I have a completely unrelated project. But as is pointed out here Jest uses node so Jest needs to use babel even if your project doesn't. So for a project which hasn't installed babel yet, you still need to install babel, but as a regular dependency:
npm install babel-jest babel-plugin-transform-es2015-modules-commonjs

Then I modified my package.json to include:
  "babel": {
    "plugins": ["transform-es2015-modules-commonjs"]
  },

Now npm test runs without the import error.

Many thanks @Mourdraug!
This finally solved my Jest + ES6 without babel problems (for an unrelated project), I'll add my simplified solution to this.
I eventually understood by staring at commit 65d5d36d from the jestPlugin.spec.js, this adds the babel and a babel plugin as dependencies, not as devDependencies.
I have a completely unrelated project. But as is pointed out here Jest uses node so Jest needs to use babel even if your project doesn't. So for a project which hasn't installed babel yet, you still need to install babel, but as a regular dependency:
npm install babel-jest babel-plugin-transform-es2015-modules-commonjs

Then I modified my package.json to include:
  "babel": {
    "plugins": ["transform-es2015-modules-commonjs"]
  },

Now npm test runs without the import error. Here I don't need a .babelrc file.

You really just saved my day!

npm install babel-jest babel-plugin-transform-es2015-modules-commonjs

This is unnecessary since those packages are dependencies of @vue/cli-plugin-unit-jest

Doing this npm install babel-jest babel-plugin-transform-es2015-modules-commonjs seems very wrong. It worked, but now my package.json has:
  "dependencies": {
    "babel-jest": "^26.6.3",
    "babel-plugin-transform-es2015-modules-commonjs": "^6.26.2",
    "vue": "^3.1.1",
    "vue-router": "^4.0.0-0"
  },

I came here because this issue is about using Jest w/o Babel - something that is technically possible post-Node 9(?) - and the "fix" everyone seems excited about is to install Babel as a dependency (not even a dev dependency). Uh, wut?!
I had the same thought as @Akryum

This [should be] unnecessary since those packages are dependencies of @vue/cli-plugin-unit-jest

Is there something that can be done now (a year later) to actually use Jest w/o Babel?


Auto updater dialog doesn't look good when the text is too long and the close button on the top right does not work

Describe the bug
When running the auto-updater and if the text(description) is too long, the dialog doesn't look good and the close button on the top right does not work. In addition, right-clicking on the menu to close the app does not work, making the only way to close it is by killing via task manager.
To Reproduce
Steps to reproduce the behavior:

Make a release which contains long text
Try the auto updater
Enjoy the bug :)

Expected behavior
The ideal way is to make it scrollable
Screenshots

Platform and Versions (required):

Operating System - Windows, version 10.0.22000 X64
Webview2 - 96.0.1054.62

Node.js environment
  Node.js - 16.0.0
  @tauri-apps/cli - 1.0.0-beta.10
  @tauri-apps/api - 1.0.0-beta.8

Global packages
  npm - 8.1.4
  yarn - 1.22.17

Rust environment
  rustc - 1.56.0
  cargo - 1.56.0

App directory structure
/.git
/.github
/.husky
/.vscode
/api
/docs
/example
/lib
/node_modules
/out
/packages
/scripts
/src
/src-tauri

App
  tauri.rs - 1.0.0-beta.8
  build-type - bundle
  CSP - default-src asset: blob: data: filesystem: ws: wss: http: https: tauri: 'unsafe-eval' 'unsafe-inline' 'self' img-src: 'self'
  distDir - ../out/src
  devPath - http://localhost:8080
  bundler - Webpack

Additional context
Already opened an issue on rfd

rfd uses the win32 API MessageBox for its dialog and this type of dialog is meant for short messages. You probably better implement your own HTML dialog or just add a link to the full changelog.


chore(npm): npmignore lock files

ignore yarn and npm lock file from redistributable package
add package-lock.json under version control

@dami-gg @sambhav-gore not planned but.... please have a look

:+1:

makes sense...

👍


Load commands will now be marked up for dyld shared cache.

MachoProgramBuilder needs to know the offset into the ByteProvider where
the Mach-O starts. When parsing a dyld shared cache
_machHeaderStartIndexInProvider gets set to 0 and results in the load
commands not being marked up. The new function getStartIndex() now
serves the purpose of determining whether absolute or relative indexing
should be performed. The getStartIndexInProvider() gives you the index
where the Mach-O is in the ByteProvider.

The whole reason this change was made boils down to the line below. The Address gets shifted and when header.getStartIndexInProvider() == 0, the Address get's shifted too much. To me this felt like the most logical way to fix this issue without impacting the readability of the code and breaking other things.
https://github.com/NationalSecurityAgency/ghidra/blob/f16bfe87bee9a9b1fd594a4bc5b9e2985b3015a1/Ghidra/Features/Base/src/main/java/ghidra/app/util/opinion/MachoProgramBuilder.java#L751

The whole reason this change was made boils down to the line below. The Address gets shifted and when header.getStartIndexInProvider() == 0, the Address get's shifted too much. To me this felt like the most logical way to fix this issue without impacting the readability of the code and breaking other things.
https://github.com/NationalSecurityAgency/ghidra/blob/f16bfe87bee9a9b1fd594a4bc5b9e2985b3015a1/Ghidra/Features/Base/src/main/java/ghidra/app/util/opinion/MachoProgramBuilder.java#L751


Keep open terminals between sessions

I would like to be able to keep terminal tabs between sessions. Right now I have to open two new terminals every time I open atom. If they could be "auto opened", preserving their name, things would easier.

+1

A much needed functionality. I would also be glad to have a way of saving terminal tabs as groups much like the Save Windows as Group ... functionality in OSX terminal.

#161

+1. Every time i open 4 terminal set colors and names.


Change app gateway to redirect self-registration links to /app

Related Issue or Background Info

When #3261 was merged, a bug was discovered where self registration links (/register/foo) would render a blank white page. Our app gateway is currently configured to catch any /register/* requests and rewrite them as /app/register/*. React router v5 seemed to handle this just fine, but v6 does not. We can alter the app to pass out links prefixed with /app, but we need to support the old links too in case orgs have them saved outside of the app. One way to support this is to change the configuration of our app gateway to redirect /register/* requests to /app/register/* instead of rewriting.

Changes Proposed

change the configuration of our app gateway to redirect /register/* requests to /app/register/* instead of rewriting.

Additional Information

I already made this change in the Azure console for our dev gateway and confirmed that it works with router v6!

Screenshots / Demos
Checklist for Author and Reviewer
Infrastructure

[ ] Consult the results of the terraform-plan job inside the "Terraform Checks" workflow run for this PR. Confirm that there are no unexpected changes!

Design

[ ] Any UI/UX changes have a designer as a reviewer, and changes have been approved
[ ] Any large-scale changes have been deployed to test, dev, or pentest and smoke-tested by both the engineering and design teams

Content

[ ] Any content changes (including new error messages) have been approved by content team

Support

[ ] Any changes that might generate new support requests have been flagged to the support team
[ ] Any changes to support infrastructure have been demo'd to support team

Testing

[ ] Includes a summary of what a code reviewer should verify

Changes are Backwards Compatible

[ ] Database changes are submitted as a separate PR

[ ] Any new tables that do not contain PII are accompanied by a GRANT SELECT to the no-PHI user
[ ] Any changes to tables that have custom no-PHI views are accompanied by changes to those views
(including re-granting permission to the no-PHI user if need be)
[ ] Liquibase rollback has been tested locally using ./gradlew liquibaseRollbackSQL or liquibaseRollback
[ ] Each new changeset has a corresponding tag

[ ] GraphQL schema changes are backward compatible with older version of the front-end

Security

[ ] Changes with security implications have been approved by a security engineer (changes to  authentication, encryption, handling of PII, etc.)
[ ] Any dependencies introduced have been vetted and discussed

Cloud

[ ] DevOps team has been notified if PR requires ops support
[ ] If there are changes that cannot be tested locally, this has been deployed to our Azure test, dev, or pentest environment for verification

@nickclyde Have you tried rolling this out via a deploy to a lower environment? I'm not seeing your change reflected in the output of terraform plan, and want to make sure it's doing what you want it to before we merge this.

I actually manually made the changes in the Azure portal on the dev gateway but I haven't tried it through terraform. I do see it in the plan output here though. If I deploy this branch to dev, will terraform apply the changes only to the dev gateway?

I actually manually made the changes in the Azure portal on the dev gateway but I haven't tried it through terraform. I do see it in the plan output here though. If I deploy this branch to dev, will terraform apply the changes only to the dev gateway?

Yep! TF is part of a deploy, so your changes will be applied in dev.

It works on dev!! Check it out: https://dev.simplereport.gov/register/E8Q2P

I did have a question about the env naming though. If merged as is, the redirect in prod will point at https://prod.simplereport.gov/app instead of https://simplereport.gov/app. Do we have an existing pattern somewhere in TF for handling that difference, or should I just do a ternary like var.env == 'prod' ? "https://simplereport.gov/app" : "https://${var.env}.simplereport.gov/app"?

It works on dev!! Check it out: https://dev.simplereport.gov/register/E8Q2P

Nice!

I did have a question about the env naming though. If merged as is, the redirect in prod will point at https://prod.simplereport.gov/app instead of https://simplereport.gov/app. Do we have an existing pattern somewhere in TF for handling that difference, or should I just do a ternary like var.env == 'prod' ? "https://simplereport.gov/app" : "https://${var.env}.simplereport.gov/app"?

As far as the ternary, that is, in fact, what we're doing elsewhere:
https://github.com/CDCgov/prime-simplereport/blob/f78774a1d8692a990eaff683d8e957e4444b6515/ops/services/alerts/app_service_metrics/uptime.tf#L10
I still want to see if the rewrite rule provides some variables we can use but otherwise this is a reasonable way of doing it I think.

I actually manually made the changes in the Azure portal on the dev gateway but I haven't tried it through terraform. I do see it in the plan output here though. If I deploy this branch to dev, will terraform apply the changes only to the dev gateway?

Ah, I missed that! Thank you for pointing it out, and for the test.


command to view current install versions

there should be a way to easily see what are the requested and what are the actual versions. (e.g.: I want java@latest and that maps to openjdk-17.0.0) You can see installed versions with rtx current and rtx ls. rtx local and rtx global will list requested versions (but only from the global or current config file).
I'll need to think about where to put this. Perhaps into rtx ls which is already non-parseable, or a new command.

one idea:
$ rtx current --requested
java latest

I think rtx current makes more sense than rtx ls—which lists "installed" versions

I'm not sure what I meant by my last comment, rtx current is already showing the requested versions so --requested doesn't make sense.
I'm actually thinking this should go onto rtx ls as rtx ls --requested:
$ rtx ls --requested
java corretto-<IP_ADDRESS>.1 (requested java@latest) (set by ~/src/rtx/.tool-versions)

but I'm still not 100%. need to think about this a bit more.

Thinking about this more, I actually think rtx current should be removed and everyone should just use rtx ls for everything. It's confusing to have two commands.
I also think this information can be slotted into the current rtx ls without a new flag. Maybe:
$ rtx ls
java corretto-<IP_ADDRESS>.1 ~/src/rtx/.tool-versions:java@latest


use go:embed to embed assets static resources.

upgrade to go 1.16
use go:embed to embed assets static resources

thank you, i will first merge it to develop then to main

merged to main in #36 and released and deployed
you are now in the contributors
thanks


Force example group into the rspec-puppet "type" group

About the test structure, if there were more tests, more files, I'd make the change, but since it's just one test, I just updated in place.


Broken window decoration drawing when switching to a workspace with a floating window in it

Hyprland Version
Hyprland, built from branch main at commit 483302a2cdc3cc8f4854aecb9cb0ed841babe30c dirty (env: add HYPRLAND_NO_RT). Tag: v0.32.3-33-g483302a2  flags: (if any) debug
Bug or Regression?
Regression
Description
When switching to a workspace with a floating window inside of it, the window decorations are partially not rendered and a weird gray rectangle appears instead of part of the windows.
https://github.com/hyprwm/Hyprland/assets/84153269/a04234a4-e9e8-40a9-8dcc-3934c72bd550
How to reproduce
Place a floating window in a workspace.
Switch to another one
Go back to the first workspace.
This also happens when using the swipe gesture but not completing it (the remaining animations shows the issue.
Crash reports, logs, images, videos
No response

The black rectangle doesn't seem to appear anymore, but the window appearing at the wrong location still does

should be fixed by 8b57a1973ea8b242783069e9a3e3d31e3cd939a8 lmk

Yes, thanks :)

Not fixed for me

What version are you running?

What version are you running?

latest git commit. maybe it's not the exact same issue but the floating window gets cut when switching workspaces. the issue seems to only happen when scale > 1

maybe send a video? I am using scaling 1

I have another issue open.
https://github.com/hyprwm/Hyprland/issues/3875
Since it doesn't look like the same issue, I'll probabaly add the video there later


"Could not decide which case to select" with Object and function that returns string

Flow version: v0.92.1 (and master, as of right now)
type T1 = (() => string) | Object;
type T2 = (() => Object) | Object;

function assert1(m: T1): void {}
function assert2(m: T2): void {}

assert1(() => JSON.stringify(1));  // <-- error reported (unexpected!)
assert2(() => JSON.stringify(1));  // <-- no error (as expected)

flow.org/try link
7: assert1(() => JSON.stringify(1));  // <-- error reported (unexpected!)
           ^ Could not decide which case to select. Since case 1 [1] may work but if it doesn't case 2 [2] looks promising too. To fix add a type annotation to return [3].
  References:
  1: type T1 = (() => string) | Object;
                ^ [1]
  1: type T1 = (() => string) | Object;
                                ^ [2]
  7: assert1(() => JSON.stringify(1));  // <-- error reported (unexpected!)
                   ^ [3]

Object is equivalent to any, so either case of the union would work. I would highly recommend avoiding the Object and Function type annotations.

Object is equivalent to any

Oh, you're right, looks like Flow 0.88.0 (released in December) made them equivalent.
But then why doesn't Flow report an error on the call to assert2?

To be honest, I'm not sure. Union speculation is a little bit arbitrary. I'd recommend annotating the argument as the error suggests.

Adding an annotation gets rid of the error:
assert1((): string => JSON.stringify(1));

But I don't understand why.  If Object is equivalent to any, how Flow able to decide which case to select?
How is it supposed to work?  (It seems like there's a bug somewhere here but it's hard to tell because apparently my understanding of the expected behavior is incorrect.)


Simple abstraction lifetime problem

Hello,
I'm trying to create a little abstraction for the connection pool as follows:
extern crate r2d2;
extern crate r2d2_postgres;
extern crate postgres;

use std::error::Error;
use std::io;

use self::r2d2_postgres::postgres::types::ToSql;
use self::r2d2_postgres::postgres::rows::Rows;
use self::r2d2_postgres::postgres::error;
use self::r2d2_postgres::{PostgresConnectionManager, TlsMode};
use self::r2d2::{Pool, InitializationError};

pub struct DB {
    // I need to initialize it as static somehow ?
    pool: Box<Pool<PostgresConnectionManager>>,
}

impl DB {
    pub fn new(conn_string: &str) -> Result<DB, InitializationError> {
        let config = r2d2::Config::default();
        let manager = PostgresConnectionManager::new(conn_string, TlsMode::None)
            .expect("Failed to establish DB connection");
        match r2d2::Pool::new(config, manager) {
            Ok(conn) => Ok(DB { pool: Box::new(conn) }),
            Err(err) => Err(err),
        }
    }

    pub fn query(&self, query: &str, params: &[&ToSql]) -> Result<Rows, error::Error> {

        match self.pool.get() {
            Ok(ref connection) => connection.query(query, params),
            Err(err) => {
                Err(error::Error::Io(io::Error::new(io::ErrorKind::NotConnected,
                                                    err.description())))
            }
        }
    }

    pub fn execute(&self, query: &str, params: &[&ToSql]) -> Result<u64, error::Error> {
        match self.pool.get() {
            Ok(ref connection) => connection.execute(query, params),
            Err(err) => {
                Err(error::Error::Io(io::Error::new(io::ErrorKind::Other, err.description())))
            }
        }
    }
}

This however makes the compiler unhappy and it complains about the connection variable in the match statement not live long enough.
pub fn query(&self, query: &str, params: &[&ToSql]) -> Result<Rows, error::Error> {

        match self.pool.get() {
            Ok(ref connection) => connection.query(query, params),
            Err(err) => {
                Err(error::Error::Io(io::Error::new(io::ErrorKind::NotConnected,
                                                    err.description())))
            }
        }
    }

Connection is only alive in the scope of the match statement but compiler expects its lifetime to be entire query function. Could you advise on how this can be achieved?  Can the DB struct be declared with a 'static lifetime? A very similar abstraction worked on the pure rust-postgres driver.
Thanks!

See https://github.com/sfackler/rust-postgres/issues/205 for a similar issue.

Thanks for the link to the example. That helped. The following code works:
extern crate r2d2;
extern crate r2d2_postgres;
extern crate postgres;

use std::error::Error;
use std::io;

use self::r2d2_postgres::postgres::error;
use self::r2d2_postgres::postgres::types::ToSql;
use self::r2d2_postgres::postgres::rows::Rows;
use self::r2d2_postgres::{PostgresConnectionManager, TlsMode};
use self::r2d2::{Pool, InitializationError};

pub struct DB {
    pool: Pool<PostgresConnectionManager>,
}

impl DB {
    pub fn new(conn_string: &str) -> Result<DB, InitializationError> {
        let config = r2d2::Config::default();
        let manager = PostgresConnectionManager::new(conn_string, TlsMode::None)
            .expect("Failed to establish DB connection");
        match r2d2::Pool::new(config, manager) {
            Ok(conn) => Ok(DB { pool: conn }),
            Err(err) => {
                format!("DB connection error: \n{}", err.description());
                Err(err)
            }
        }
    }

    pub fn query(&self, query: &str, params: &[&ToSql]) -> Result<Rows, error::Error> {
        match self.pool.get() {
            Ok(c) => unsafe { ::std::mem::transmute(c.query(query, params)) },
            Err(err) => {
                Err(error::Error::Io(io::Error::new(io::ErrorKind::Other, err.description())))
            }
        }
    }

    pub fn execute(&self, query: &str, params: &[&ToSql]) -> Result<u64, error::Error> {
        match self.pool.get() {
            Ok(c) => unsafe { ::std::mem::transmute(c.execute(query, params)) },
            Err(err) => {
                Err(error::Error::Io(io::Error::new(io::ErrorKind::Other, err.description())))
            }
        }
    }
}

Could you comment however if the above approach is the "best" or even good?
I read the description of mem::transmute() function and it was like reading Necronomicon (oh, wait...). Is using such a dangerous tool is necessary for something that to me should be pretty much trivial task?
Thanks for the time and the library and sorry for noobish questions!

You shouldn't need to do any transmuting in execute - it's just returning a Result<u64>. The implementation for query is actually wrong - the Rows will have a dangling reference to the connection, which may be moved or even shut down and deallocated while still referenced. You'd need to have a wrapper struct like the one in that issue to hold the connection alive.
I would personally try to avoid these kinds of constructs where possible in favor of taking a connection from the pool and using that when you need to. Even ignoring the correctness issues above, you're doubling your query load on the server with this approach since you end up having one pre-check out health check for every query you make.

Yes, the execute indeed does not need the transmute.
I admit i'm not entirely sure why Rows needs the reference to the connection. I thought that Result<Rows, error::Error> returns it rows by value.
I will try to rewrite the module to use a global pool.
Thanks for the comments.

The Rows needs a reference to its Statement which contains type information about the result columns. This has a reference to the Connection so that it can clean up its server-side state when it falls out of scope.

It actually looks like that's something that I can switch on my end to avoid having that dependency.

I'm happy then that me being dense led to library improvement ;)

https://github.com/sfackler/rust-postgres/issues/210


"az ml workspace create" fails to create Application Insights and Container Registry

Describe the bug
When trying to create a new ml workspace, our deployment pipeline on devops fails because the workspace create command only creates the Storage Account and Keyvault. Then it tries to create the workspace, which obviously fails, since no Container Registry and Application Insights exists. We always update the CLI and ml extension to the latest version in our pipeline before executing any commands. I ran the same Code with ml extension 2.24.0 two months ago and it worked without an issue.
Also running on my own machine with ml extension 2.22.0 the behaviour is as expected.
Related command
az ml workspace create
Errors
The deployment request ml*** was accepted. ARM deployment URI for reference:
URL REMOVED
Creating Storage Account: (ml*****  ) ...  Done (21s)
Creating Key Vault: (ml*****  )  Done (18s)
ERROR: Code: ValidationError
Message: Missing dependent resources in workspace json
Target: workspace
Exception Details:	(Invalid) Missing dependent resources in workspace json
Code: Invalid
Message: Missing dependent resources in workspace json
Target: workspace
##[error]Script failed with exit code: 1
/usr/bin/az account clear
This is the deployment on Azure Portal.

Issue script & Debug output
az ml workspace create --resource-group "${{ parameters.resourceGroup }}" --file $(Build.SourcesDirectory)/workspace/workspace.json
Contents of workspace.json
{
"$schema": "https://azuremlschemas.azureedge.net/latest/workspace.schema.json",
"name": "ml***",
"display_name": "ml***",
"description": "created workspace ml*** in resource groupe Res_Grp_*** on 2024-05-16T09:44:05",
"tags": {
"createdOn": "2024-05-16T09:44:05",
"createdBy": ""
},
"location": "westeurope",
"resource_group": "Res_Grp_",
"hbi_workspace": false,
}
I did not run the script with --debug because i would have to delete the ressources manually afterwards. If desired, please let me know.
Expected behavior
The command create all required ressources for a ml workspace (storage account, keyvault, container registry, appinsights) and then creates the workspace.
Environment Summary
/usr/bin/az --version
azure-cli                         2.60.0
core                              2.60.0
telemetry                          1.1.0
Extensions:
azure-devops                       1.0.0
ml                                2.26.0
Dependencies:
msal                              1.28.0
azure-mgmt-resource             23.1.0b2
Additional context
No response

Thank you for opening this issue, we will look into it.

There is something fishy here guys, I am experiencing this issue as well, just as @Rubikalubi is. However, what we ended up trying to do is modify our creation script to first create an application insights resource (we already have a container registry, storage account, and key vault so it's not included in the creation script below) and then associate it using the following script:
acr_arm_id=$(az acr show --name ***** --query id -o tsv)
insights_arm_id=$(az monitor app-insights component show --app ***** -g ***** --query "id" -o tsv)
az ml workspace create --resource-group **** --name ****** --storage-account ****  --key-vault ****** --container-registry "$acr_arm_id" -a "$insights_arm_id"

Considering the docs here I would expect this to work, however we are greeted with this
Code: ValidationError
Message: AppInsights ID is not in right format
Target: properties
Exception Details:      (Invalid) AppInsights ID is not in right format
        Code: Invalid
        Message: AppInsights ID is not in right format
        Target: properties

Looking at the AppInsights ID that is returned from the command directly we see it is compliant, or at least appears to be so given the above docs:
/subscriptions/*subscription*/resourceGroups/*resource-group*/providers/microsoft.insights/components/*name*
The name in this case is compliant with this doc so that shouldn't be an issue

+1 to @xec-abailey 's write up; I am experiencing a very similar issue.

I am facing the same issue. I tried to create a managed online feature store from the SDK using the tutorial. I tried a lot of different things and checked the template and different deployments. The issue seems to have happened recently because a colleague could run the script without problem but now we do not manage to create it

This breaking change / bug was definitely introduced in the version release of the Azure ML Extension when upgraded from 2.25 to 2.26.  Downgrading a locking to ml v2.25 resolved the undesirable behavior in our application.

We have the same issue. I noticed that the ARM template resulting from the az cli command has the following issue, namely that containerregistry variable is used for applicationinsights:
'applicationInsights': '[if(not(equals(parameters('applicationInsightsOption'), 'none')), variables('containerRegistry'), json('null'))]',
'containerRegistry': '[if(not(equals(parameters('containerRegistryOption'), 'none')), variables('containerRegistry'), json('null'))]',

I a, experiencing the same issue as of today,

Hoping to get it resolve soon.

facing the same iossue htere

This breaking change / bug was definitely introduced in the version release of the Azure ML Extension when upgraded from 2.25 to 2.26. Downgrading and locking to ml v2.25 resolved the undesirable behavior in our application.

When I try this solution I get the following messages:
'Default enabled including preview versions for extension installation now. Disabled in future release. Use '--allow-preview true' to enable it specifically if needed. Use '--allow-preview false' to install stable version only.' or
'Extension 'ml' 2.26.0 is already installed.'

Thank you for reporting this issue. It seems indeed related to the Cloud Shell and not to the .setup.sh. We're investigating the issue to explore any fixes/workaround and will update when we have something. For now, manual creation of resources seems the only fix as the ML extension can't be updated/downgraded in Cloud Shell.

ml extension 2.26.1 is released with the fix.

Hello @achauhan-scc,
I'm getting the following error when running "az extension update --name ml" in Cloud Shell:
Default enabled including preview versions for extension installation now. Disabled in future release. Use '--allow-preview true' to enable it specifically if needed. Use '--allow-preview false' to install stable version only.
Cannot update system extension ml, please wait until Cloud Shell updates it in the next release.

And when trying "az extension update --name ml --allow-preview true" I get:
Cannot update system extension ml, please wait until Cloud Shell updates it in the next release.

I'm stuck on 2.26.0:
az --version
azure-cli                         2.61.0

core                              2.61.0
telemetry                          1.1.0

Extensions:
ai-examples                        0.2.5
ml                                2.26.0
ssh                                2.0.3

Can you please try below steps from https://learn.microsoft.com/en-us/azure/machine-learning/how-to-configure-cli?view=azureml-api-2&tabs=public

az extension remove -n ml
az extension add -n ml

Looks like the extension simply cannot be removed/updated in Cloud Shell, I guess it's just a matter of waiting until they update the Cloud Shell environment:
az extension remove -n ml
Cannot remove system extension ml in Cloud Shell.
az extension add -n ml
Default enabled including preview versions for extension installation now. Disabled in future release. Use '--allow-preview true' to enable it specifically if needed. Use '--allow-preview false' to install stable version only.
Extension 'ml' 2.26.0 is already installed.

Awaiting the fix.
./setup.sh in DP-100 labs don't work, impacting all students preparing for certifications.
az ml extension can't be updated/removed/upgraded/downgraded too.
Appreciate expedited support.

I have the exact same issure as I am preparing for the DP-100 exam. Please provide prompt support, thank you

UPDATE
The fix in the CLI ML extension seems to be fixed in the newest version. As you may have noticed however, you can't update the extension yourself in the Cloud Shell (you can when working locally). The extension will be updated in the next scheduled update of the Cloud Shell. We expect this fix to happen end of this week. Hopefully, next week the setup scripts should work again. Until then, the quickest workaround is to create the necessary resources manually through the portal instead of using the Cloud Shell.

Thanks for the update.
On Wed, Jun 5, 2024 at 2:31 PM madiepev @.***> wrote:

UPDATE
The fix in the CLI ML extension seems to be fixed in the newest version.
As you may have noticed however, you can't update the extension yourself in
the Cloud Shell (you can when working locally). The extension will be
updated in the next scheduled update of the Cloud Shell. We expect this fix
to happen end of this week. Hopefully, next week the setup scripts should
work again. Until then, the quickest workaround is to create the necessary
resources manually through the portal instead of using the Cloud Shell.
—
Reply to this email directly, view it on GitHub
https://github.com/Azure/azure-cli/issues/28980#issuecomment-2149328004,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AFOHFYNZERKPYUMGJ3NDIADZF3LFZAVCNFSM6AAAAABHZ2B67SVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCNBZGMZDQMBQGQ
.
You are receiving this because you commented.Message ID:
@.***>

--
Regards,
-Waqas

Awaiting the fix.
./setup.sh in DP-100 labs don't work, impacting all students preparing for certifications. az ml extension can't be updated/removed/upgraded/downgraded too.
Appreciate expedited support.

I belive it's valid to point that the link https://aka.ms/mslearn-dp100 is broken too. Reported multiple times in Coursera without any feedback.

Do the DP-100 exercises work again? Has anyone tried this?

Works again for me!


Fixes clang-analyzer error dereferencing nullptr in parent

This also eliminates superflous assignments of parent.

Cherry-picked to 8.1.x


Feat/web xr

@SkylerBRN The WebXR version can be accessed on master if you want to check it out. I updated readme with setup instructions but dm me if you hit a snag. I'll send a view route/skeleton in a bit.


Plugin "netlify-plugin-html-validate" failed

I m facing an issue due to this plugin failure and it says its a bug and hence I m reporting in a hope that it gets fixed asap.

============================================================
4:52:10 PM: Build ready to start
4:52:12 PM: build-image version: 3802cb5fb68688f5cbd80f2e312aa0ce78813b3a
4:52:12 PM: build-image tag: v4.0.4
4:52:12 PM: buildbot version: 95e0a40ce76370df2af854ecde359a48e4e439ab
4:52:12 PM: Fetching cached dependencies
4:52:12 PM: Failed to fetch cache, continuing with build
4:52:12 PM: Starting to prepare the repo for build
4:52:12 PM: No cached dependencies found. Cloning fresh repo
4:52:12 PM: git clone https://github.com/g-rohit/prismclubs
4:52:14 PM: Preparing Git Reference refs/heads/main
4:52:14 PM: Parsing package.json dependencies
4:52:15 PM: Starting build script
4:52:15 PM: Installing dependencies
4:52:15 PM: Python version set to 2.7
4:52:16 PM: v12.18.0 is already installed.
4:52:17 PM: Now using node v12.18.0 (npm v6.14.4)
4:52:17 PM: Started restoring cached build plugins
4:52:17 PM: Finished restoring cached build plugins
4:52:17 PM: Attempting ruby version 2.7.1, read from environment
4:52:18 PM: Required ruby-2.7.1 is not installed - installing.
4:52:18 PM: Searching for binary rubies, this might take some time.
4:52:18 PM: Found remote file https://rvm_io.global.ssl.fastly.net/binaries/ubuntu/20.04/x86_64/ruby-2.7.1.tar.bz2
4:52:18 PM: Checking requirements for ubuntu.
4:52:19 PM: Requirements installation successful.
4:52:19 PM: ruby-2.7.1 - #configure
4:52:19 PM: ruby-2.7.1 - #download
4:52:20 PM: ruby-2.7.1 - #validate archive
4:52:25 PM: ruby-2.7.1 - #extract
4:52:28 PM: ruby-2.7.1 - #validate binary
4:52:29 PM: ruby-2.7.1 - #setup
4:52:29 PM: ruby-2.7.1 - #gemset created /opt/buildhome/.rvm/gems/ruby-2.7.1@global
4:52:29 PM: ruby-2.7.1 - #importing gemset /opt/buildhome/.rvm/gemsets/global.gems........................................
4:52:30 PM: ruby-2.7.1 - #generating global wrappers........
4:52:30 PM: ruby-2.7.1 - #gemset created /opt/buildhome/.rvm/gems/ruby-2.7.1
4:52:30 PM: ruby-2.7.1 - #importing gemsetfile /opt/buildhome/.rvm/gemsets/default.gems evaluated to empty gem list
4:52:31 PM: ruby-2.7.1 - #generating default wrappers........
4:52:31 PM: Using /opt/buildhome/.rvm/gems/ruby-2.7.1
4:52:31 PM: Using ruby version 2.7.1
4:52:32 PM: Using PHP version 7.4
4:52:32 PM: Started restoring cached go cache
4:52:32 PM: Finished restoring cached go cache
4:52:32 PM: go version go1.14.4 linux/amd64
4:52:32 PM: go version go1.14.4 linux/amd64
4:52:32 PM: Installing missing commands
4:52:32 PM: Verify run directory
4:52:32 PM:
4:52:32 PM: ────────────────────────────────────────────────────────────────
4:52:32 PM:   Netlify Build
4:52:32 PM: ────────────────────────────────────────────────────────────────
4:52:32 PM:
4:52:32 PM: ❯ Version
4:52:32 PM:   @netlify/build 12.17.0
4:52:32 PM:
4:52:32 PM: ❯ Flags
4:52:32 PM:   deployId: 60dc53e24efab80007ab0a64
4:52:32 PM:
4:52:32 PM: ❯ Current directory
4:52:32 PM:   /opt/build/repo
4:52:32 PM:
4:52:32 PM: ❯ Config file
4:52:32 PM:   No config file was defined: using default values.
4:52:32 PM:
4:52:32 PM: ❯ Context
4:52:32 PM:   production
4:52:33 PM:
4:52:33 PM: ❯ Installing plugins
4:52:33 PM:    -<EMAIL_ADDRESS>4:52:39 PM:
4:52:39 PM: ❯ Loading plugins
4:52:39 PM:    -<EMAIL_ADDRESS>from Netlify app
4:52:40 PM:
4:52:40 PM: ────────────────────────────────────────────────────────────────
4:52:40 PM:   1. onPostBuild command from netlify-plugin-html-validate
4:52:40 PM: ────────────────────────────────────────────────────────────────
4:52:40 PM:
4:52:41 PM: Validator crashed when parsing "events.html"
4:52:41 PM: Caught exception:
4:52:41 PM:   TypeError: Cannot read property 'trim' of undefined
4:52:41 PM:       at /opt/build/repo/.netlify/plugins/node_modules/html-validate/dist/rules/no-inline-style.js:15:58
4:52:41 PM:       at Array.map ()
4:52:41 PM:       at getCSSDeclarations (/opt/build/repo/.netlify/plugins/node_modules/html-validate/dist/rules/no-inline-style.js:13:10)
4:52:41 PM:       at NoInlineStyle.allPropertiesAllowed (/opt/build/repo/.netlify/plugins/node_modules/html-validate/dist/rules/no-inline-style.js:106:30)
4:52:41 PM:       at /opt/build/repo/.netlify/plugins/node_modules/html-validate/dist/rules/no-inline-style.js:75:22
4:52:41 PM:       at /opt/build/repo/.netlify/plugins/node_modules/html-validate/dist/rule.js:170:17
4:52:41 PM:       at /opt/build/repo/.netlify/plugins/node_modules/html-validate/dist/event/eventhandler.js:55:22
4:52:41 PM:       at Array.forEach ()
4:52:41 PM:       at EventHandler.trigger (/opt/build/repo/.netlify/plugins/node_modules/html-validate/dist/event/eventhandler.js:54:19)
4:52:41 PM:       at Parser.trigger (/opt/build/repo/.netlify/plugins/node_modules/html-validate/dist/parser/parser.js:462:20)
4:52:41 PM: This is a bug in html-validate-4.14.0.
4:52:41 PM: Please file a bug at https://gitlab.com/html-validate/html-validate/issues/new?issuable_template=Bug
4:52:41 PM: and include this message in full and if possible the content of the
4:52:41 PM: file being parsed (or a reduced testcase).
4:52:41 PM:
4:52:41 PM: ────────────────────────────────────────────────────────────────
4:52:41 PM:   Plugin "netlify-plugin-html-validate" failed
4:52:41 PM: ────────────────────────────────────────────────────────────────
4:52:41 PM:
4:52:41 PM:   Error message
4:52:41 PM:   Error: Invalid HTML
4:52:41 PM:   Command failed with exit code 1: html-validate --ext html .
4:52:41 PM:
4:52:41 PM:   Plugin details
4:52:41 PM:   Package:        netlify-plugin-html-validate
4:52:41 PM:   Version:        1.0.0
4:52:41 PM:   Repository:     git+https://github.com/oliverroick/netlify-plugin-html-validate.git
4:52:41 PM:   npm link:       https://www.npmjs.com/package/netlify-plugin-html-validate
4:52:41 PM:   Report issues:  https://github.com/oliverroick/netlify-plugin-html-validate/issues
4:52:41 PM:
4:52:41 PM:   Error location
4:52:41 PM:   In "onPostBuild" event in "netlify-plugin-html-validate" from Netlify app
4:52:41 PM:       at async onPostBuild (/.netlify/plugins/node_modules/netlify-plugin-html-validate/index.js:4:7)
4:52:41 PM:
4:52:41 PM:   Resolved config
4:52:41 PM:   build:
4:52:41 PM:     publish: /opt/build/repo
4:52:41 PM:     publishOrigin: ui
4:52:41 PM:   functions:
4:52:41 PM:     '*': {}
4:52:41 PM:   plugins:
4:52:41 PM:     - inputs: {}
4:52:41 PM:       origin: ui
4:52:41 PM:       package: netlify-plugin-html-validate
4:52:41 PM: Caching artifacts
4:52:41 PM: Started saving build plugins
4:52:41 PM: Finished saving build plugins
4:52:41 PM: Started saving pip cache
4:52:41 PM: Finished saving pip cache
4:52:41 PM: Started saving emacs cask dependencies
4:52:41 PM: Finished saving emacs cask dependencies
4:52:41 PM: Started saving maven dependencies
4:52:41 PM: Finished saving maven dependencies
4:52:41 PM: Started saving boot dependencies
4:52:41 PM: Finished saving boot dependencies
4:52:41 PM: Started saving rust rustup cache
4:52:41 PM: Finished saving rust rustup cache
4:52:41 PM: Started saving go dependencies
4:52:41 PM: Finished saving go dependencies
4:52:46 PM: Cached ruby version 2.7.1
4:52:46 PM: Build failed due to a user error: Build script returned non-zero exit code: 2
4:52:46 PM: Creating deploy upload records
4:52:46 PM: Failing build: Failed to build site
4:52:46 PM: Failed during stage 'building site': Build script returned non-zero exit code: 2
4:52:46 PM: Finished processing build request in 34.069588548s

Hi @g-rohit,
Thanks for sharing this. Looking at the logs, this looks like a bug with html-validate, not this plugin:
4:52:41 PM: This is a bug in html-validate-4.14.0.
4:52:41 PM: Please file a bug at https://gitlab.com/html-validate/html-validate/issues/new?issuable_template=Bug

This plugin is only a wrapper around html-validate, which does all the validation work. I recommend to file this issue with html-validate at https://gitlab.com/html-validate/html-validate/issues/new?issuable_template=Bug.
The important information for them would be this bit:
4:52:41 PM: Caught exception:
4:52:41 PM: TypeError: Cannot read property 'trim' of undefined
4:52:41 PM: at /opt/build/repo/.netlify/plugins/node_modules/html-validate/dist/rules/no-inline-style.js:15:58
4:52:41 PM: at Array.map ()
4:52:41 PM: at getCSSDeclarations (/opt/build/repo/.netlify/plugins/node_modules/html-validate/dist/rules/no-inline-style.js:13:10)
4:52:41 PM: at NoInlineStyle.allPropertiesAllowed (/opt/build/repo/.netlify/plugins/node_modules/html-validate/dist/rules/no-inline-style.js:106:30)
4:52:41 PM: at /opt/build/repo/.netlify/plugins/node_modules/html-validate/dist/rules/no-inline-style.js:75:22
4:52:41 PM: at /opt/build/repo/.netlify/plugins/node_modules/html-validate/dist/rule.js:170:17
4:52:41 PM: at /opt/build/repo/.netlify/plugins/node_modules/html-validate/dist/event/eventhandler.js:55:22
4:52:41 PM: at Array.forEach ()
4:52:41 PM: at EventHandler.trigger (/opt/build/repo/.netlify/plugins/node_modules/html-validate/dist/event/eventhandler.js:54:19)
4:52:41 PM: at Parser.trigger (/opt/build/repo/.netlify/plugins/node_modules/html-validate/dist/parser/parser.js:462:20)

along with an example of your events.html, which seems to trigger the issue.

Hi, this was reported upstream as html-validate#123, the solution is to update to<EMAIL_ADDRESS>or later.

Thanks @ext, for heads up.
@g-rohit – I just published a new release with the updated version. Please upgrade to v1.1.1.

@oliverroick I'm not seeing a v1.1.1 available within Netlify or on npmjs.org. v1.0.0 is all that I see in both locations. When I click on "Change version" in Netlify, I'm already on "Version 1 (latest release v1.0.0)" and can only rollback to Version 0 (v0.1.1). Upon checking, html-validate is now up to v8.7.1.
Side comment...I'm a new paid subscriber to Netlify, and so far 2 of the 4 plugins that I'm interested in using are bugged, outdated, and or set up incorrectly (based on the error). 😬

@SmeepleApp

I'm not seeing a v1.1.1 available within Netlify or on npmjs.org. v1.0.0 is all that I see in both locations. When I click on "Change version" in Netlify, I'm already on "Version 1 (latest release v1.0.0)" and can only rollback to Version 0 (v0.1.1).

You're right, v1.1.1 is not available on the Netlify plugin register, but it is available on NPM: See all published versions.

Upon checking, html-validate is now up to v8.7.1.

Yep, and I always happily accept pull requests.

Side comment...I'm a new paid subscriber to Netlify, and so far 2 of the 4 plugins that I'm interested in using are bugged, outdated, and or set up incorrectly (based on the error). 😬

You may pay for Netlify, but Netlify doesn't pay me. I don't work for Netlify, nor do I make any money from this plugin. I made it for myself in the first place, and open-sourced it. Feel free to use it or don't, but I owe you nothing.


419 broadcast frametoobigerror

Addresses #419.

Rebased, which apparently causes GH to orphan all the comments against the previous version of the branch.  Comments were addressed.

LGTM

!LGTM

!LGTM

or is that DNLGTM?


Lots of Fixes

Closes #43
Closes #40
Closes #39
Closes #41
Closes #42

@plohm12 Should be ready for a re-review when you get the chance plz 🥺


Can't use '' as infix operator

Prerequisites

[X] Put an X between the brackets on this line if you have done all of the following:

Checked that your issue isn't already filed.
Reduced the issue to a self-contained, reproducible test case.

Description
We'd like to use '' as an infix operator in mathlib; we use it for the image of set. However it generates a missing end of character literal whenever used:
Steps to Reproduce
def Set (α : Type u) := α → Prop

def image (f : α → β) (s : Set α) : Set β :=
  fun b => ∃ a, s a ∧ f a = b

infixl:80 " '' " => image

example {f : α → β} {s : Set α} {y : β} : f '' s = f '' s := rfl -- Errors on `f '' s` with `missing end of character literal`.

Expected behavior:
No error.
Actual behavior:
missing end of character literal
Versions
Lean (version 4.0.0-nightly-2022-12-05, commit 0b243f0ca33e, Release)
Additional Information
As reported in zulip.

I think it's worth remarking that although '' is standard mathlib notation, it's not actually standard mathematical notation (despite Mario's claims that he saw it in a book once), so perhaps our instinct "please let us keep our nonstandard notation which we're used to" could be turned into "maybe we can fall in love with a new notation" if this issue is actually problematic. If you could make standard maths notation f(S) work (here f : X->Y and S : set Y) that would be even better ;-)

@Kha I think the quick solution is better for the immediate issue (we had to add a workaround for the port but it would be good to remove it before we forget). The "thorough" solution sounds like a bit of a project and I think only you would be able to do it, so I'd rather not bank on it but please try it if you are motivated to do so.


Stop sharing lock between write and read

All data points are immutable, and all write operation is append-only. Logically any read operation and write operation don't conflict at all.
In spite of that, we currently lock with Mutex whenever reading and writing.
https://github.com/nakabonne/tstorage/blob/b1bbbafe00c65da63ce4eb66161134da4e15b92f/memory_partition.go#L178-L187

Like MVCC (Multi Version Concurrency Control), it's enough to give back a snapshot at a certain point when reading out.


Fix for issue #168

Fix for https://github.com/sivel/speedtest-cli/issues/168

Fixed in another commit


Support for UIKitForMac on Xcode 11

Trying to compile the library for UIKitForMac on the new Xcode 11 is throwing a couple of errors.
Just thought I'd open the ticket. I'll try to make a PR when I get a chance, unless someone else makes it first
Thanks!

Ah, thanks for the heads up! I might have some time this afternoon to take a look at it, but don't let that prevent you from fixing it and doing a PR :) We appreciate any help.
And frankly glad to hear at least someone is still using it. Sometimes it's hard to tell. :)


Bug "(event_name cpu-clock)"

Running
./magic-trace run glxinfo64 -- -B

I get
Intel PT support not found. magic-trace will continue and use sampling instead.
Warning: [-callgraph-mode] is defaulting to [Dwarf] which may have high overhead and decoding time. For more info: https://magic-trace.org/w/b
[ Snapshot taken. ]
[ perf record: Woken up 1 times to write data ]
[ perf record: Captured and wrote 0.127 MB /tmp/magic_trace.tmp.72c3de/perf.data (12 samples) ]
[ Finished recording. ]
[ Decoding, this takes a while... ]
Warning: Debug info is unavailable, so filenames and line numbers will not be available in the trace.
See https://github.com/janestreet/magic-trace/wiki/Compiling-code-for-maximum-compatibility-with-magic-trace for more info.
(monitor.ml.Error
 ("BUG: exception raised while parsing perf output. Please report this to https://github.com/janestreet/magic-trace/issues/"
  (exn
   ("Unexpected event type when parsing perf output" (event_name cpu-clock)))
  (perf_output
   ("   5488/5488     1539.632720267:     100000 cpu-clock:uH: "
    "\t    7fb9b09ba370 [unknown] (/usr/lib64/libexpat.so.1.8.10)"
    "\t    7fb9b09bd38c [unknown] (/usr/lib64/libexpat.so.1.8.10)"
    "\t    7fb9b09bd4e3 [unknown] (/usr/lib64/libexpat.so.1.8.10)"
    "\t    7fb9b09beb7c [unknown] (/usr/lib64/libexpat.so.1.8.10)"
    "\t    7fb9b09c332c [unknown] (/usr/lib64/libexpat.so.1.8.10)"
    "\t    7fb9b09c46c5 [unknown] (/usr/lib64/libexpat.so.1.8.10)"
    "\t    7fb9b09c6b2f XML_ParseBuffer+0x7f (/usr/lib64/libexpat.so.1.8.10)"
    "\t    7fb9b0abca85 [unknown] (/usr/lib64/libGLX_mesa.so.0.0.0)"
    "\t    7fb9b0abe63a [unknown] (/usr/lib64/libGLX_mesa.so.0.0.0)"
    "\t    7fb9b0ab870a [unknown] (/usr/lib64/libGLX_mesa.so.0.0.0)"
    "\t    7fb9b0aaceae [unknown] (/usr/lib64/libGLX_mesa.so.0.0.0)"
    "\t    7fb9b0a9e6e8 [unknown] (/usr/lib64/libGLX_mesa.so.0.0.0)"
    "\t    7fb9b0a9a4c8 [unknown] (/usr/lib64/libGLX_mesa.so.0.0.0)"
    "\t    56458a6b7894 [unknown] ([unknown])"
    "\t    7fb9b0c35149 __libc_start_call_main+0x79 (/usr/lib64/libc.so.6)"
    "\t    7fb9b0c3520a __libc_start_main@@GLIBC_2.34+0x8a (/usr/lib64/libc.so.6)"
    "\t    56458a6b8354 [unknown] ([unknown])")))
 ("Raised at Base__Error.raise in file \"src/error.ml\" (inlined), line 9, characters 14-30"
  "Called from Base__Error.raise_s in file \"src/error.ml\", line 10, characters 19-40"
  "Called from Async_kernel__Pipe.map.(fun) in file \"src/pipe.ml\", line 1042, characters 65-70"
  "Called from Async_kernel__Job_queue.run_jobs in file \"src/job_queue.ml\", line 167, characters 6-47"
  "Caught by monitor Monitor.protect"))

This is on
uname -a
Linux fedora 6.5.9-300.fc39.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Oct 25 21:39:20 UTC 2023 x86_64 GNU/Linux

perf --version
perf version 6.5.4

cat /proc/cpuinfo
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 141
model name      : 11th Gen Intel(R) Core(TM) i7-11800H @ 2.30GHz

which is all Fedora Linux 39 (on VMware Workstation 17.5, running on Windows 11 Professional - which should not matter all that much for the problem I am trying to investigate)
So, this is a bit of a bleeding edge, I guess...

FWIW, I am trying to debug why glxinfo64 -B on this specific virtual machine, under X11, has
1699116495.637695 glXChooseVisual(0x55665a044da0, 0, 0x556658fd2020, 0)                                    = 0x55665a065110 <1.658923>

taking 1.6 seconds on launch of every single X11 application.

I am also running into this issue with the following log output:
❯ ./magic-trace attach -pid 1284576
Intel PT support not found. magic-trace will continue and use sampling instead.
Warning: [-callgraph-mode] is defaulting to [Dwarf] which may have high overhead and decoding time. For more info: https://magic-trace.org/w/b
[ Attached. Press Ctrl-C to stop recording. ]
^C[ Got signal, detaching... ]
[ Snapshot taken. ]
[ perf record: Woken up 1 times to write data ]
[ perf record: Captured and wrote 0.686 MB /tmp/magic_trace.tmp.5d3ea6/perf.data (62 samples) ]
[ Finished recording. ]
[ Decoding, this takes a while... ]
Warning: Debug info is unavailable, so filenames and line numbers will not be available in the trace.
See https://github.com/janestreet/magic-trace/wiki/Compiling-code-for-maximum-compatibility-with-magic-trace for more info.
(monitor.ml.Error
 ("BUG: exception raised while parsing perf output. Please report this to https://github.com/janestreet/magic-trace/issues/"
  (exn
   ("Unexpected event type when parsing perf output" (event_name cpu-clock)))
  (perf_output
   ("1284576/1284576<PHONE_NUMBER>81230:     100000 cpu-clock:uH: "
    "\t    5555560adc70 duckdb::MinValue<unsigned long>+0x0 (/home/jiahong.long/.cache/bazel/_bazel_jiahong.long/a191a06ed2c8ea6a71c3b563e1372302/execroot/cruise_ws/bazel-out/k8-dbg/bin/ros/src/sim_analysis/benchmarking/cpp_benchmark)"
    "\t    555556bd59ac duckdb::StringUtil::CILessThan+0x3c (/home/jiahong.long/.cache/bazel/_bazel_jiahong.long/a191a06ed2c8ea6a71c3b563e1372302/execroot/cruise_ws/bazel-out/k8-dbg/bin/ros/src/sim_analysis/benchmarking/cpp_benchmark)"
    "\t    5555569a6380 duckdb::CaseInsensitiveStringCompare::operator()+0x20 (/home/jiahong.long/.cache/bazel/_bazel_jiahong.long/a191a06ed2c8ea6a71c3b563e1372302/execroot/cruise_ws/bazel-out/k8-dbg/bin/ros/src/sim_analysis/benchmarking/cpp_benchmark)"
    "\t    5555569a66d3 std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, duckdb::unique_ptr<duckdb::CatalogEntry, std::default_delete<duckdb::CatalogEntry>, true> >, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, duckdb::unique_ptr<duckdb::CatalogEntry, std::default_delete<duckdb::CatalogEntry>, true> > >, duckdb::CaseInsensitiveStringCompare, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, duckdb::unique_ptr<duckdb::CatalogEntry, std::default_delete<duckdb::CatalogEntry>, true> > > >::_M_get_insert_unique_pos+0x73 (/home/jiahong.long/.cache/bazel/_bazel_jiahong.long/a191a06ed2c8ea6a71c3b563e1372302/execroot/cruise_ws/bazel-out/k8-dbg/bin/ros/src/sim_analysis/benchmarking/cpp_benchmark)"
    "\t    5555569a64d2 std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, duckdb::unique_ptr<duckdb::CatalogEntry, std::default_delete<duckdb::CatalogEntry>, true> >, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, duckdb::unique_ptr<duckdb::CatalogEntry, std::default_delete<duckdb::CatalogEntry>, true> > >, duckdb::CaseInsensitiveStringCompare, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, duckdb::unique_ptr<duckdb::CatalogEntry, std::default_delete<duckdb::CatalogEntry>, true> > > >::_M_emplace_unique<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, duckdb::unique_ptr<duckdb::CatalogEntry, std::default_delete<duckdb::CatalogEntry>, true> > >+0x52 (/home/jiahong.long/.cache/bazel/_bazel_jiahong.long/a191a06ed2c8ea6a71c3b563e1372302/execroot/cruise_ws/bazel-out/k8-dbg/bin/ros/src/sim_analysis/benchmarking/cpp_benchmark)"
    "\t    555556995b7f std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, duckdb::unique_ptr<duckdb::CatalogEntry, std::default_delete<duckdb::CatalogEntry>, true>, duckdb::CaseInsensitiveStringCompare, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, duckdb::unique_ptr<duckdb::CatalogEntry, std::default_delete<duckdb::CatalogEntry>, true> > > >::insert<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, duckdb::unique_ptr<duckdb::CatalogEntry, std::default_delete<duckdb::CatalogEntry>, true> > >+0x2f (/home/jiahong.long/.cache/bazel/_bazel_jiahong.long/a191a06ed2c8ea6a71c3b563e1372302/execroot/cruise_ws/bazel-out/k8-dbg/bin/ros/src/sim_analysis/benchmarking/cpp_benchmark)"
    "\t    55555697f7ef duckdb::CatalogEntryMap::AddEntry+0x1ef (/home/jiahong.long/.cache/bazel/_bazel_jiahong.long/a191a06ed2c8ea6a71c3b563e1372302/execroot/cruise_ws/bazel-out/k8-dbg/bin/ros/src/sim_analysis/benchmarking/cpp_benchmark)"
    "\t<PHONE_NUMBER>cb duckdb::CatalogSet::StartChain+0x1eb (/home/jiahong.long/.cache/bazel/_bazel_jiahong.long/a191a06ed2c8ea6a71c3b563e1372302/execroot/cruise_ws/bazel-out/k8-dbg/bin/ros/src/sim_analysis/benchmarking/cpp_benchmark)"
    "\t    555556980fca duckdb::CatalogSet::CreateEntryInternal+0xba (/home/jiahong.long/.cache/bazel/_bazel_jiahong.long/a191a06ed2c8ea6a71c3b563e1372302/execroot/cruise_ws/bazel-out/k8-dbg/bin/ros/src/sim_analysis/benchmarking/cpp_benchmark)"
    "\t<PHONE_NUMBER>64 duckdb::CatalogSet::CreateEntry+0x1d4 (/home/jiahong.long/.cache/bazel/_bazel_jiahong.long/a191a06ed2c8ea6a71c3b563e1372302/execroot/cruise_ws/bazel-out/k8-dbg/bin/ros/src/sim_analysis/benchmarking/cpp_benchmark)"
    "\t    55555693f53c duckdb::DuckSchemaEntry::AddEntryInternal+0x43c (/home/jiahong.long/.cache/bazel/_bazel_jiahong.long/a191a06ed2c8ea6a71c3b563e1372302/execroot/cruise_ws/bazel-out/k8-dbg/bin/ros/src/sim_analysis/benchmarking/cpp_benchmark)"
    "\t<PHONE_NUMBER>32 duckdb::DuckSchemaEntry::AddEntry+0xd2 (/home/jiahong.long/.cache/bazel/_bazel_jiahong.long/a191a06ed2c8ea6a71c3b563e1372302/execroot/cruise_ws/bazel-out/k8-dbg/bin/ros/src/sim_analysis/benchmarking/cpp_benchmark)"
    "\t<PHONE_NUMBER>f4 duckdb::DuckSchemaEntry::CreateFunction+0x5f4 (/home/jiahong.long/.cache/bazel/_bazel_jiahong.long/a191a06ed2c8ea6a71c3b563e1372302/execroot/cruise_ws/bazel-out/k8-dbg/bin/ros/src/sim_analysis/benchmarking/cpp_benchmark)"
    "\t<PHONE_NUMBER>11 duckdb::Catalog::CreateFunction+0x61 (/home/jiahong.long/.cache/bazel/_bazel_jiahong.long/a191a06ed2c8ea6a71c3b563e1372302/execroot/cruise_ws/bazel-out/k8-dbg/bin/ros/src/sim_analysis/benchmarking/cpp_benchmark)"
    "\t<PHONE_NUMBER>9b duckdb::Catalog::CreateFunction+0xdb (/home/jiahong.long/.cache/bazel/_bazel_jiahong.long/a191a06ed2c8ea6a71c3b563e1372302/execroot/cruise_ws/bazel-out/k8-dbg/bin/ros/src/sim_analysis/benchmarking/cpp_benchmark)"
    "\t    555556fb5ac9 duckdb::ExtensionUtil::RegisterFunction+0x109 (/home/jiahong.long/.cache/bazel/_bazel_jiahong.long/a191a06ed2c8ea6a71c3b563e1372302/execroot/cruise_ws/bazel-out/k8-dbg/bin/ros/src/sim_analysis/benchmarking/cpp_benchmark)"
    "\t    555557bd2d9b duckdb::ParquetExtension::Load+0x2cb (/home/jiahong.long/.cache/bazel/_bazel_jiahong.long/a191a06ed2c8ea6a71c3b563e1372302/execroot/cruise_ws/bazel-out/k8-dbg/bin/ros/src/sim_analysis/benchmarking/cpp_benchmark)"
    "\tffffffffffffffff [unknown] ([unknown])")))
 ("Raised at Base__Error.raise in file \"src/error.ml\" (inlined), line 9, characters 14-30"
  "Called from Base__Error.raise_s in file \"src/error.ml\", line 10, characters 19-40"
  "Called from Async_kernel__Pipe.map.(fun) in file \"src/pipe.ml\", line 1066, characters 65-70"
  "Called from Async_kernel__Job_queue.run_jobs in file \"src/job_queue.ml\", line 180, characters 6-47"
  "Caught by monitor Monitor.protect"))

with my process-under-test launched via bazel run -c dbg. The binary is statically linked against DuckDB v0.10.1 - I'm trying to obtain a call tree to debug a SIGABRT when creating a new table in DuckDB with a nested struct, and using the duckdb::Appender API to insert said nested struct.
Platform details (bog-standard GCP worker):
❯ uname -a
Linux cs-zpezm92n-medium-gpu-homedir-701320 5.15.0-1058-gcp #66~20.04.1-Ubuntu SMP Tue Apr 16 06:42:32 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
❯ perf --version
perf version 5.15.148
❯ lscpu
Architecture:                       x86_64
CPU op-mode(s):                     32-bit, 64-bit
Byte Order:                         Little Endian
Address sizes:                      46 bits physical, 48 bits virtual
CPU(s):                             32
On-line CPU(s) list:                0-31
Thread(s) per core:                 2
Core(s) per socket:                 16
Socket(s):                          1
NUMA node(s):                       1
Vendor ID:                          GenuineIntel
CPU family:                         6
Model:                              79
Model name:                         Intel(R) Xeon(R) CPU @ 2.20GHz
Stepping:                           0
CPU MHz:                            2199.998
BogoMIPS:                           4399.99
Virtualization:                     VT-x
Hypervisor vendor:                  KVM
Virtualization type:                full
L1d cache:                          512 KiB
L1i cache:                          512 KiB
L2 cache:                           4 MiB
L3 cache:                           55 MiB
NUMA node0 CPU(s):                  0-31
Vulnerability Gather data sampling: Not affected
Vulnerability Itlb multihit:        Not affected
Vulnerability L1tf:                 Mitigation; PTE Inversion; VMX flush not necessary
                                    , SMT vulnerable
Vulnerability Mds:                  Mitigation; Clear CPU buffers; SMT Host state unkn
                                    own
Vulnerability Meltdown:             Mitigation; PTI
Vulnerability Mmio stale data:      Vulnerable: Clear CPU buffers attempted, no microc
                                    ode; SMT Host state unknown
Vulnerability Retbleed:             Mitigation; IBRS
Vulnerability Spec rstack overflow: Not affected
Vulnerability Spec store bypass:    Mitigation; Speculative Store Bypass disabled via
                                    prctl and seccomp
Vulnerability Spectre v1:           Mitigation; usercopy/swapgs barriers and __user po
                                    inter sanitization
Vulnerability Spectre v2:           Mitigation; IBRS, IBPB conditional, STIBP conditio
                                    nal, RSB filling, PBRSB-eIBRS Not affected
Vulnerability Srbds:                Not affected
Vulnerability Tsx async abort:      Mitigation; Clear CPU buffers; SMT Host state unkn
                                    own
Flags:                              fpu vme de pse tsc msr pae mce cx8 apic sep mtrr p
                                    ge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss
                                     ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_
                                    good nopl xtopology nonstop_tsc cpuid tsc_known_fr
                                    eq pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 ss
                                    e4_2 x2apic movbe popcnt aes xsave avx f16c rdrand
                                     hypervisor lahf_lm abm 3dnowprefetch invpcid_sing
                                    le pti ssbd ibrs ibpb stibp tpr_shadow vnmi flexpr
                                    iority ept vpid ept_ad fsgsbase tsc_adjust bmi1 hl
                                    e avx2 smep bmi2 erms invpcid rtm rdseed adx smap
                                    xsaveopt arat md_clear arch_capabilities

Just realised that VMs are mostly not supported. 😢


Update authentication-managed-identity-policy.md

Added Cognitive Services/Azure OpenAI example.

@dlepow
IMPORTANT: When the changes are ready for publication, add a #sign-off comment to signal that the PR is ready for the review team to merge.
#label:"aq-pr-triaged"
@MicrosoftDocs/public-repo-pr-review-team

#sign-off


Dependency on mv

Out of curiosity, is there a convincing reason for this package's dependency on mv?  As far as I can tell, it only seems to use it once - for a rename of the exe file on Windows, which I'd think could just as easily use fs.rename.
Sorry this is such a nit-pick.  If you see fit to remove it I can submit a PR.

Does mv work between folders? fs.rename does not (see #60).

AFAICT, the one use of mv is simply renaming within the same folder: https://github.com/maxogden/electron-packager/blob/v4.1.3/win32.js#L25
I was under the impression #60 was more specifically related to trying to move a folder with symlinks across drives.  I'm not sure whether mv can accommodate that, but the PR for it doesn't rely on mv either way.

I was wondering whether I can replace the PR in #74 with just using mv.

mv is used to prevent EXDEV errors when moving a file across physical drives on some platforms, especially win32. fs.rename should not be used.

OK, I'll update my PR later today to use mv. I'm closing this issue since we're going to keep using mv.

I get the whole cross-device thing, which is what #74 is about, so using mv makes sense there, yeah.  The only place that is currently using mv is a rename of a single file within the same directory it's already in, and other occurrences of that (e.g. in linux.js) use rename, which is why I originally flagged this.
Not sure if we want to do something to make other rename uses more consistent ultimately, but I agree to mv staying if it can be used for #74.


feat: check valid runtimes for on cluster build

Signed-off-by: Zbynek Roubalik<EMAIL_ADDRESS>Until we resolve issue with additional Buildpacks, a few runtimes are not supported for on cluster build. So it is better to fail before executing the actual Pipeline.

Thx, unit test added, great suggestion!


Create executable script

An executable script should be made in order to be able to run the program from the jar file without needing to specify the location of the jar file.

#!/bin/bash
java -jar /home/chris/bin/OscP5MessageRecorder.jar $@


Build for osx-arm64

Comment:
Would it be possible to also build this package for osx-arm64?

Based on the write-up here:
https://conda-forge.org/blog/2020/10/29/macos-arm64
...and particularly this section:
https://conda-forge.org/blog/2020/10/29/macos-arm64/#how-to-add-a-osx-arm64-build-to-a-feedstock
...I think it would be necessary to make a PR to modify this list:
https://github.com/conda-forge/conda-forge-pinning-feedstock/blob/main/recipe/migrations/osx_arm64.txt
and then see what happens after that.


Support for nested stacks

Ideal to have a support for nested stack creations.

@mridhul I would like to take up this issue.

@mridhul Issue can be closed.