Support cordova/phonegap

Scroll event does fire in the cordova only on the scroll process stopped.
Here is the article about this stuff https://developer.telerik.com/featured/scroll-event-change-ios-8-big-deal/
Does it possible to add the support for cordova using some other stuff/options? (maybe not to use the scroll event for cordova, maybe even setInterval instead - just to make it working after all)

While testing I checked that getVisibleItemBounds function returns incorrect data before the scroll will be stopped. Seems the element.offsetTop does not update.

Hi @studentIvan !  Unfortunately I know nothing about Cordova/PhoneGap, but if you're able to submit a PR I will happily review it.


Ionic Integration

Nice stuff :smile:
Any ideas how to integrate this with ionic app?

@denzelwamburu Any luck with integration in Ionic?

@umairsarfraz  Not Really, i switched to using Loopback, and i integrated it with ionic App. You can check it out here [https://github.com/denzelwamburu/lb-ngIonic] (https://github.com/denzelwamburu/lb-ngIonic)


⚠ Bofrost.at has degraded performance

In ccb9631, Bofrost.at (https://www.bofrost.at) experienced degraded performance:

HTTP code: 200
Response time: 1569 ms

Resolved: Bofrost.at performance has improved in e796ab5 after 15 minutes.


feat: add boot volume encryption

Description
Add support in SLZ for KMS boot volume encryption.
Release required?

[ ] No release
[ ] Patch release (x.x.X)
[x] Minor release (x.X.x)
[ ] Major release (X.x.x)

Release notes content
Add support in SLZ for KMS boot volume encryption.

Run the pipeline
If the CI pipeline doesn't run when you create the PR, the PR requires a user with GitHub collaborators access to run the pipeline.
Run the CI pipeline when the PR is ready for review and you expect tests to pass. Add a comment to the PR with the following text:
/run pipeline

Checklist for reviewers

[ ] If relevant, a test for the change is included or updated with this PR.
[ ] If relevant, documentation for the change is included or updated with this PR.

Merge actions for mergers

When merging, use a relevant conventional commit message that is based on the PR contents and any release notes provided by the PR author. The commit message determines whether a new version of the module is needed, and if so, which semver increment to use (major, minor, or patch).
Merge by using "Squash and merge".

/run pipeline

/run pipeline

/run pipeline

@Aashiq-J What about the override json, are we just going to use the KMS details from clusters.kms_config ?
AKA:
 "clusters": [
    {
        "cos_name": "cos",
        "entitlement": "cloud_pak",
        "kube_type": "openshift",
        "kube_version": "latest",
        "machine_type": "bx2.16x64",
        "name": "management-cluster",
        "resource_group": "slz-management-rg",
        "kms_config": {
           "crk_name": "slz-roks-key",
            "private_endpoint": true
        },

/run pipeline

/run pipeline

/run pipeline

Test failed with a backend issue: Error: [ERROR] Error Deleting resource group: Resource groups with active or pending reclamation instances can't be deleted. Use the CLI commands "ibmcloud resource service-instances --type all" and "ibmcloud resource reclamations" to check for remaining instances, then delete the instances and try again.
Lets get https://github.com/terraform-ibm-modules/terraform-ibm-landing-zone/pull/516 merged first, and then rebase this with main and then run pipeline again

/run pipeline

@Aashiq-J Do we know what the impact is here on existing clusters that were provisioned in SLZ? Does it need to recreate the workers in order to encrypt them? Or can encryption be added as an in place update? Perhaps upgrade test will give us the answer

@ocofaigh , even though the upgrade test in the pipeline passed, will run the upgrade test manually adding more worker pools and check if anything is being destroyed and recreated.

yes thanks @Aashiq-J - I was kind of expecting it to fail tbh

@ocofaigh , I have tested it multiple times and it looks like once the cluster is created we can't change the boot volume encryption. Even if we apply above existing cluster it doesn't change anything.
And since, boot_volume_crk_name is a optional variable, we are not directly using the kms_config for boot_vol encryption.

/run pipeline

/run pipeline

/run pipeline

:tada: This PR is included in version 4.6.0 :tada:
The release is available on:

GitHub release
v4.6.0

Your semantic-release bot :package::rocket:


cap bootstrap server from vipAddress at 30

suro-pull-requests #216 SUCCESS
This pull request looks good

NetflixOSS » suro » suro-pull-requests #48 ABORTED


Symbol format API

Some context: https://github.com/scalameta/scalameta/pull/1376#discussion_r171241289.

Now that we're getting rid of the _root_. prefix, structured symbol handling becomes even more important, because it's no longer enough to concatenate owner symbol and descriptor to obtain a child symbol (for a top-level package p, owner is _root_., but the symbol is p.).

However, I found that implementing this is harder than I thought. A centerpiece of the symbol structure API is a symbol parser, and it presents unexpected difficulties.
At first, I thought that I'll simply take the existing symbol parser from langmeta and move it to semanticdb3. However, that parser is tied to Symbol and Signature data structures, which are, in my opinion, too high-level for semanticdb3.
Making Symbol and Signature internal and hiding them behind a more low-level API (e.g. String.owner, String.descriptor, etc) is out of the question, because these data structures are part of the public API of langmeta.
Refactoring the parser to introduce abstractions that would handle both high-level and low-level APIs seems a significant overkill. Moreover, it will further convolute the already non-trivial parser logic, which makes me doubt the usefulness of the exercise.
This seemingly leaves no other choice than to copy/paste the parser, which is outright awful given its size and the amount of intricacies involved in the parsing logic. All in all, this needs more thoughts.

Implementation details aside, how do you envision the long-term semanticdb3 API for symbols? Will it be extension methods on String or some low-level semanticdb3.Symbol class?
Just brainstorming. Maybe we can expose a circe-Json inspired semanticdb3.Symbol API that looks something like
sealed abstract class Symbol {
  def syntax: String
  def name: String
  def owner: Symbol
  def isLocal: Boolean
  def isGlobal: Boolean
  def isMethod: Boolean
  // ...

  // transformers
  def withMethod(f: MethodSymbol => Symbol): Symbol
  def withGlobal(f: GlobalSymbol => Symbol): Symbol
}

sealed abstract class MethodSymbol { .. } // does not extend symbol

Users should never see subtypes of Symbol. Source: https://github.com/circe/circe/blob/6f32e3068f31d19efd351e1cb27b47dd6854f5ea/modules/core/shared/src/main/scala/io/circe/Json.scala#L63-L88
I don't have enough experience with circe myself to judge how convenient/useful this API would be. I think it's an interesting approach that keeps the public API fairly closed but still high-level without exposing pattern matching.

I think I finally know how to do this. Will implement and submit a pull request today.

Fixed in https://github.com/scalameta/scalameta/pull/1430.


Potential device incompatibilities

Nexus 5 running Android 6
OnePlusOne running Android 5

If anyone happens to own one of these devices and can help debug them that would be great!

Nexus 5 seems to be fine

The latest release seems to really combat this issue with better support of exchanging audio focus and restoring audio routing for other running applications.


az ssh config fails when run from anywhere other than the C:\ drive

Related command
az ssh config --ip <IP_ADDRESS> --file ./sshconfig
Extension name (the extension in question)
ssh 1.1.1
Description of issue (in as much detail as possible)
When creating an ssh config file, the command always succeeds when run from anywhere within C:, but always fails when run from anywhere within D:, E:, etc. Confirmed on multiple computers and on both Windows 10/11.

@John-Vance Thanks for reaching out to us and sharing this feedback. Could you please share the below details ?

What is the error you get while running the CLI command from a different drive ?
Could you please run the command with --debug switch ?
What is the AzCLI version you are using ?

Awaiting your reply.

@navba-MSFT Thanks for the super fast response!
The successful output of the command when running from C:\ is:
PS C:> az ssh config --ip <IP_ADDRESS> --file ./sshconfig
Generated SSH certificate C:\az_ssh_config\<IP_ADDRESS>\id_rsa.pub-aadcert.pub is valid until 2022-05-26 02:51:28 PM in local time.
C:\az_ssh_config\<IP_ADDRESS> contains sensitive information (id_rsa, id_rsa.pub, id_rsa.pub-aadcert.pub). Please delete it once you no longer need this config file.
The error output of the command when running from D:\ on the same system is:
PS D:> az ssh config --ip <IP_ADDRESS> --file ./sshconfig
The command failed with an unexpected error. Here is the traceback:
'NoneType' object has no attribute 'GetAceCount'
Traceback (most recent call last):
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\knack/cli.py", line 231, in invoke
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/init.py", line 658, in execute
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/init.py", line 721, in _run_jobs_serially
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/init.py", line 692, in _run_job
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/init.py", line 328, in call
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/command_operation.py", line 121, in handler
File "C:\Users\vance.adm.azure\cliextensions\ssh\azext_ssh\custom.py", line 96, in ssh_config
_do_ssh_op(cmd, config_session, op_call)
File "C:\Users\vance.adm.azure\cliextensions\ssh\azext_ssh\custom.py", line 166, in _do_ssh_op
op_info.cert_file, op_info.local_user = _get_and_write_certificate(cmd, op_info.public_key_file,
File "C:\Users\vance.adm.azure\cliextensions\ssh\azext_ssh\custom.py", line 229, in _get_and_write_certificate
write_cert_file(certificate, cert_file)
File "C:\Users\vance.adm.azure\cliextensions\ssh\azext_ssh\custom.py", line 329, in write_cert_file
oschmod.set_mode(cert_file, 0o644)
File "C:\Users\vance.adm.azure\cliextensions\ssh\oschmod_init.py", line 186, in set_mode
return win_set_permissions(path, new_mode)
File "C:\Users\vance.adm.azure\cliextensions\ssh\oschmod_init.py", line 403, in win_set_permissions
win_set_permissions(path, mode, get_object_type(path))
File "C:\Users\vance.adm.azure\cliextensions\ssh\oschmod_init.py", line 420, in _win_set_permissions
for _ in range(0, dacl.GetAceCount()):
AttributeError: 'NoneType' object has no attribute 'GetAceCount'
To open an issue, please run: 'az feedback'
Here is the result with the --debug switch:
PS D:> az ssh config --ip <IP_ADDRESS> --file ./sshconfig --debug
cli.knack.cli: Command arguments: ['ssh', 'config', '--ip', '<IP_ADDRESS>', '--file', './sshconfig', '--debug']
cli.knack.cli: init debug log:
Enable color in terminal.
cli.knack.cli: Event: Cli.PreExecute []
cli.knack.cli: Event: CommandParser.OnGlobalArgumentsCreate [<function CLILogging.on_global_arguments at 0x01BC40B8>, <function OutputProducer.on_global_arguments at 0x01D30F10>, <function CLIQuery.on_global_arguments at 0x01D56AD8>]
cli.knack.cli: Event: CommandInvoker.OnPreCommandTableCreate []
cli.azure.cli.core: Modules found from index for 'ssh': ['azext_ssh']
cli.azure.cli.core: Loading command modules:
cli.azure.cli.core: Name                  Load Time    Groups  Commands
cli.azure.cli.core: Total (0)                 0.000         0         0
cli.azure.cli.core: These extensions are not installed and will be skipped: ['azext_ai_examples', 'azext_next']
cli.azure.cli.core: Loading extensions:
cli.azure.cli.core: Name                  Load Time    Groups  Commands  Directory
cli.azure.cli.core: ssh                       0.012         1         4  C:\Users\vance.adm.azure\cliextensions\ssh
cli.azure.cli.core: Total (1)                 0.012         1         4
cli.azure.cli.core: Loaded 1 groups, 4 commands.
cli.azure.cli.core: Found a match in the command table.
cli.azure.cli.core: Raw command  : ssh config
cli.azure.cli.core: Command table: ssh config
cli.knack.cli: Event: CommandInvoker.OnPreCommandTableTruncate [<function AzCliLogging.init_command_file_logging at 0x037A8808>]
cli.azure.cli.core.azlogging: metadata file logging enabled - writing logs to 'C:\Users\vance.adm.azure\commands\2022-05-26.13-54-56.ssh_config.25188.log'.
az_command_data_logger: command args: ssh config --ip {} --file {} --debug
cli.knack.cli: Event: CommandInvoker.OnPreArgumentLoad [<function register_global_subscription_argument..add_subscription_parameter at 0x037F8460>]
cli.knack.cli: Event: CommandInvoker.OnPostArgumentLoad []
cli.knack.cli: Event: CommandInvoker.OnPostCommandTableCreate [<function register_ids_argument..add_ids_arguments at 0x037F8538>, <function register_cache_arguments..add_cache_arguments at 0x03855658>]
cli.knack.cli: Event: CommandInvoker.OnCommandTableLoaded []
cli.knack.cli: Event: CommandInvoker.OnPreParseArgs []
cli.knack.cli: Event: CommandInvoker.OnPostParseArgs [<function OutputProducer.handle_output_argument at 0x01D30F58>, <function CLIQuery.handle_query_parameter at 0x01D56B20>, <function register_ids_argument..parse_ids_arguments at 0x03855610>]
az_command_data_logger: extension name: ssh
az_command_data_logger: extension version: 1.1.1
cli.azext_ssh.ssh_utils: Platform architecture: 32bit
cli.azext_ssh.ssh_utils: OS architecture: 64bit
cli.azext_ssh.ssh_utils: System Root: C:\WINDOWS
cli.azext_ssh.ssh_utils: Attempting to run ssh-keygen from path C:\WINDOWS\SysNative\openSSH\ssh-keygen.exe
cli.azext_ssh.ssh_utils: Running ssh-keygen command C:\WINDOWS\SysNative\openSSH\ssh-keygen.exe -f D:\az_ssh_config\<IP_ADDRESS>\id_rsa -t rsa -q -N
cli.azure.cli.core.auth.persistence: build_persistence: location='C:\Users\vance.adm\.azure\msal_token_cache.bin', encrypt=True
cli.azure.cli.core.auth.identity: _load_msal_http_cache: C:\Users\vance.adm.azure\msal_http_cache.bin
cli.azure.cli.core.auth.identity: __load_msal_http_cache: C:\Users\vance.adm.azure\msal_http_cache.bin
urllib3.util.retry: Converted retries value: 1 -> Retry(total=1, connect=None, read=None, redirect=None, status=None)
msal.authority: openid_config = {'token_endpoint': 'https://login.microsoftonline.com/0924380d-6b3b-4e1d-af33-ad6ae812a338/oauth2/v2.0/token', 'token_endpoint_auth_methods_supported': ['client_secret_post', 'private_key_jwt', 'client_secret_basic'], 'jwks_uri': 'https://login.microsoftonline.com/0924380d-6b3b-4e1d-af33-ad6ae812a338/discovery/v2.0/keys', 'response_modes_supported': ['query', 'fragment', 'form_post'], 'subject_types_supported': ['pairwise'], 'id_token_signing_alg_values_supported': ['RS256'], 'response_types_supported': ['code', 'id_token', 'code id_token', 'id_token token'], 'scopes_supported': ['openid', 'profile', 'email', 'offline_access'], 'issuer': 'https://login.microsoftonline.com/0924380d-6b3b-4e1d-af33-ad6ae812a338/v2.0', 'request_uri_parameter_supported': False, 'userinfo_endpoint': 'https://graph.microsoft.com/oidc/userinfo', 'authorization_endpoint': 'https://login.microsoftonline.com/0924380d-6b3b-4e1d-af33-ad6ae812a338/oauth2/v2.0/authorize', 'device_authorization_endpoint': 'https://login.microsoftonline.com/0924380d-6b3b-4e1d-af33-ad6ae812a338/oauth2/v2.0/devicecode', 'http_logout_supported': True, 'frontchannel_logout_supported': True, 'end_session_endpoint': 'https://login.microsoftonline.com/0924380d-6b3b-4e1d-af33-ad6ae812a338/oauth2/v2.0/logout', 'claims_supported': ['sub', 'iss', 'cloud_instance_name', 'cloud_instance_host_name', 'cloud_graph_host_name', 'msgraph_host', 'aud', 'exp', 'iat', 'auth_time', 'acr', 'nonce', 'preferred_username', 'name', 'tid', 'ver', 'at_hash', 'c_hash', 'email'], 'kerberos_endpoint': 'https://login.microsoftonline.com/0924380d-6b3b-4e1d-af33-ad6ae812a338/kerberos', 'tenant_region_scope': 'NA', 'cloud_instance_name': 'microsoftonline.com', 'cloud_graph_host_name': 'graph.windows.net', 'msgraph_host': 'graph.microsoft.com', 'rbac_url': 'https://pas.windows.net'}
cli.azure.cli.core.auth.credential_adaptor: CredentialAdaptor.get_token: scopes=('https://pas.windows.net/CheckMyAccess/Linux/.default',), kwargs={'data': {'token_type': 'ssh-cert', 'req_cnf': '{"kty": "RSA", "n": "AJSBGH0dS_Xt4DjSCDQl8Zf6KdgsqVt2O0ZaY8cQs1qrPAUurxy3yT3lG5KPSH1WOwOC6alg7xy2Kqrwf3QLriajZqcxTtN_MX-36J2a6InyFkAEFqr6BE-JVGGsBQTw7jfB_oImy7CbJFAOdBm5RvJl4BMTx39nebg6Wf9g1RwE3iybvXSDu8tN0BvHTKaAIyeRv67dRtNop_TQiYQ_J0RsFPtIylLQB-yCdDMhhWqhLIwB2TqZ-HaSDx2hgcfjmK1CI0s8qAnts-ujL68LRhDFLoPe4-DRhOoK211BYmNDUr8u5IWzbhED6ufYf9HOiSqp_2itS605iK2QGMSo1w9iUDw1tRUASJ7kTVhrFMRTZygPOiOQti_9_d3g7rntIiQigiLdoISjprDl4tqNdLm0O17c-NQyhcB4H2F7stH5jzNg0QP7303AeLoC36M-oQTMK3Ug9ZeX8tN2wOcA77Fn2myEsxeWekDCV7_U66sTSmhNMFx32B1jhgQ926AOnQ==", "e": "AQAB", "kid": "d0a2b30ae99687c70e34513c648b1ec5a83daa30ef67eb89136047aa75eb5c92"}', 'key_id': 'd0a2b30ae99687c70e34513c648b1ec5a83daa30ef67eb89136047aa75eb5c92'}}
cli.azure.cli.core.auth.msal_authentication: UserCredential.get_token: scopes=('https://pas.windows.net/CheckMyAccess/Linux/.default',), kwargs={'data': {'token_type': 'ssh-cert', 'req_cnf': '{"kty": "RSA", "n": "AJSBGH0dS_Xt4DjSCDQl8Zf6KdgsqVt2O0ZaY8cQs1qrPAUurxy3yT3lG5KPSH1WOwOC6alg7xy2Kqrwf3QLriajZqcxTtN_MX-36J2a6InyFkAEFqr6BE-JVGGsBQTw7jfB_oImy7CbJFAOdBm5RvJl4BMTx39nebg6Wf9g1RwE3iybvXSDu8tN0BvHTKaAIyeRv67dRtNop_TQiYQ_J0RsFPtIylLQB-yCdDMhhWqhLIwB2TqZ-HaSDx2hgcfjmK1CI0s8qAnts-ujL68LRhDFLoPe4-DRhOoK211BYmNDUr8u5IWzbhED6ufYf9HOiSqp_2itS605iK2QGMSo1w9iUDw1tRUASJ7kTVhrFMRTZygPOiOQti_9_d3g7rntIiQigiLdoISjprDl4tqNdLm0O17c-NQyhcB4H2F7stH5jzNg0QP7303AeLoC36M-oQTMK3Ug9ZeX8tN2wOcA77Fn2myEsxeWekDCV7_U66sTSmhNMFx32B1jhgQ926AOnQ==", "e": "AQAB", "kid": "d0a2b30ae99687c70e34513c648b1ec5a83daa30ef67eb89136047aa75eb5c92"}', 'key_id': 'd0a2b30ae99687c70e34513c648b1ec5a83daa30ef67eb89136047aa75eb5c92'}}
msal.application: Found 1 RTs matching {'environment': 'login.microsoftonline.com', 'home_account_id': '9233e9dc-5b5a-4883-8489-af18a64d507c.375ce1b8-8db1-479b-a12c-06fa9d2a2eaf', 'family_id': '1'}
msal.telemetry: Generate or reuse correlation_id: 315c48eb-34ac-444d-b559-d1976f306c71
msal.application: Cache attempts an RT
urllib3.connectionpool: Starting new HTTPS connection (1): login.microsoftonline.com:443
urllib3.connectionpool: https://login.microsoftonline.com:443 "POST /0924380d-6b3b-4e1d-af33-ad6ae812a338/oauth2/v2.0/token HTTP/1.1" 200 5171
msal.token_cache: event={
"client_id": "04b07795-8ddb-461a-bbee-02f9e1bf7b46",
"data": {
"claims": null,
"key_id": "d0a2b30ae99687c70e34513c648b1ec5a83daa30ef67eb89136047aa75eb5c92",
"refresh_token": "",
"req_cnf": "{"kty": "RSA", "n": "AJSBGH0dS_Xt4DjSCDQl8Zf6KdgsqVt2O0ZaY8cQs1qrPAUurxy3yT3lG5KPSH1WOwOC6alg7xy2Kqrwf3QLriajZqcxTtN_MX-36J2a6InyFkAEFqr6BE-JVGGsBQTw7jfB_oImy7CbJFAOdBm5RvJl4BMTx39nebg6Wf9g1RwE3iybvXSDu8tN0BvHTKaAIyeRv67dRtNop_TQiYQ_J0RsFPtIylLQB-yCdDMhhWqhLIwB2TqZ-HaSDx2hgcfjmK1CI0s8qAnts-ujL68LRhDFLoPe4-DRhOoK211BYmNDUr8u5IWzbhED6ufYf9HOiSqp_2itS605iK2QGMSo1w9iUDw1tRUASJ7kTVhrFMRTZygPOiOQti_9_d3g7rntIiQigiLdoISjprDl4tqNdLm0O17c-NQyhcB4H2F7stH5jzNg0QP7303AeLoC36M-oQTMK3Ug9ZeX8tN2wOcA77Fn2myEsxeWekDCV7_U66sTSmhNMFx32B1jhgQ926AOnQ==", "e": "AQAB", "kid": "d0a2b30ae99687c70e34513c648b1ec5a83daa30ef67eb89136047aa75eb5c92"}",
"scope": [
"openid",
"offline_access",
"profile",
"https://pas.windows.net/CheckMyAccess/Linux/.default"
],
"token_type": "ssh-cert"
},
"environment": "login.microsoftonline.com",
"grant_type": "refresh_token",
"params": null,
"response": {
"access_token": "",
"client_info": "eyJ1aWQiOiI5MjMzZTlkYy01YjVhLTQ4ODMtODQ4OS1hZjE4YTY0ZDUwN2MiLCJ1dGlkIjoiMzc1Y2UxYjgtOGRiMS00NzliLWExMmMtMDZmYTlkMmEyZWFmIn0",
"expires_in": 3598,
"ext_expires_in": 3598,
"foci": "1",
"id_token": "********",
"scope": "https://pas.windows.net/CheckMyAccess/Linux/user_impersonation https://pas.windows.net/CheckMyAccess/Linux/.default",
"token_type": "ssh-cert"
},
"scope": [
"https://pas.windows.net/CheckMyAccess/Linux/user_impersonation",
"https://pas.windows.net/CheckMyAccess/Linux/.default"
],
"skip_account_creation": true,
"token_endpoint": "https://login.microsoftonline.com/0924380d-6b3b-4e1d-af33-ad6ae812a338/oauth2/v2.0/token"
}
cli.azext_ssh.custom: Generating certificate D:\az_ssh_config\<IP_ADDRESS>\id_rsa.pub-aadcert.pub
cli.azure.cli.core.util: azure.cli.core.util.handle_exception is called with an exception:
cli.azure.cli.core.util: Traceback (most recent call last):
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\knack/cli.py", line 231, in invoke
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/init.py", line 658, in execute
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/init.py", line 721, in _run_jobs_serially
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/init.py", line 692, in _run_job
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/init.py", line 328, in call
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/command_operation.py", line 121, in handler
File "C:\Users\vance.adm.azure\cliextensions\ssh\azext_ssh\custom.py", line 96, in ssh_config
_do_ssh_op(cmd, config_session, op_call)
File "C:\Users\vance.adm.azure\cliextensions\ssh\azext_ssh\custom.py", line 166, in _do_ssh_op
op_info.cert_file, op_info.local_user = _get_and_write_certificate(cmd, op_info.public_key_file,
File "C:\Users\vance.adm.azure\cliextensions\ssh\azext_ssh\custom.py", line 229, in _get_and_write_certificate
write_cert_file(certificate, cert_file)
File "C:\Users\vance.adm.azure\cliextensions\ssh\azext_ssh\custom.py", line 329, in write_cert_file
oschmod.set_mode(cert_file, 0o644)
File "C:\Users\vance.adm.azure\cliextensions\ssh\oschmod_init.py", line 186, in set_mode
return win_set_permissions(path, new_mode)
File "C:\Users\vance.adm.azure\cliextensions\ssh\oschmod_init.py", line 403, in win_set_permissions
win_set_permissions(path, mode, get_object_type(path))
File "C:\Users\vance.adm.azure\cliextensions\ssh\oschmod_init.py", line 420, in _win_set_permissions
for _ in range(0, dacl.GetAceCount()):
AttributeError: 'NoneType' object has no attribute 'GetAceCount'
cli.azure.cli.core.azclierror: The command failed with an unexpected error. Here is the traceback:
az_command_data_logger: The command failed with an unexpected error. Here is the traceback:
cli.azure.cli.core.azclierror: 'NoneType' object has no attribute 'GetAceCount'
Traceback (most recent call last):
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\knack/cli.py", line 231, in invoke
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/init.py", line 658, in execute
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/init.py", line 721, in _run_jobs_serially
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/init.py", line 692, in _run_job
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/init.py", line 328, in call
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/command_operation.py", line 121, in handler
File "C:\Users\vance.adm.azure\cliextensions\ssh\azext_ssh\custom.py", line 96, in ssh_config
_do_ssh_op(cmd, config_session, op_call)
File "C:\Users\vance.adm.azure\cliextensions\ssh\azext_ssh\custom.py", line 166, in _do_ssh_op
op_info.cert_file, op_info.local_user = _get_and_write_certificate(cmd, op_info.public_key_file,
File "C:\Users\vance.adm.azure\cliextensions\ssh\azext_ssh\custom.py", line 229, in _get_and_write_certificate
write_cert_file(certificate, cert_file)
File "C:\Users\vance.adm.azure\cliextensions\ssh\azext_ssh\custom.py", line 329, in write_cert_file
oschmod.set_mode(cert_file, 0o644)
File "C:\Users\vance.adm.azure\cliextensions\ssh\oschmod_init.py", line 186, in set_mode
return win_set_permissions(path, new_mode)
File "C:\Users\vance.adm.azure\cliextensions\ssh\oschmod_init.py", line 403, in win_set_permissions
win_set_permissions(path, mode, get_object_type(path))
File "C:\Users\vance.adm.azure\cliextensions\ssh\oschmod_init.py", line 420, in _win_set_permissions
for _ in range(0, dacl.GetAceCount()):
AttributeError: 'NoneType' object has no attribute 'GetAceCount'
az_command_data_logger: 'NoneType' object has no attribute 'GetAceCount'
Traceback (most recent call last):
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\knack/cli.py", line 231, in invoke
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/init.py", line 658, in execute
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/init.py", line 721, in _run_jobs_serially
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/init.py", line 692, in _run_job
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/init.py", line 328, in call
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/command_operation.py", line 121, in handler
File "C:\Users\vance.adm.azure\cliextensions\ssh\azext_ssh\custom.py", line 96, in ssh_config
_do_ssh_op(cmd, config_session, op_call)
File "C:\Users\vance.adm.azure\cliextensions\ssh\azext_ssh\custom.py", line 166, in _do_ssh_op
op_info.cert_file, op_info.local_user = _get_and_write_certificate(cmd, op_info.public_key_file,
File "C:\Users\vance.adm.azure\cliextensions\ssh\azext_ssh\custom.py", line 229, in _get_and_write_certificate
write_cert_file(certificate, cert_file)
File "C:\Users\vance.adm.azure\cliextensions\ssh\azext_ssh\custom.py", line 329, in write_cert_file
oschmod.set_mode(cert_file, 0o644)
File "C:\Users\vance.adm.azure\cliextensions\ssh\oschmod_init.py", line 186, in set_mode
return win_set_permissions(path, new_mode)
File "C:\Users\vance.adm.azure\cliextensions\ssh\oschmod_init.py", line 403, in win_set_permissions
win_set_permissions(path, mode, get_object_type(path))
File "C:\Users\vance.adm.azure\cliextensions\ssh\oschmod_init.py", line 420, in _win_set_permissions
for _ in range(0, dacl.GetAceCount()):
AttributeError: 'NoneType' object has no attribute 'GetAceCount'
To open an issue, please run: 'az feedback'
cli.knack.cli: Event: Cli.PostExecute [<function AzCliLogging.deinit_cmd_metadata_logging at 0x037A8928>]
az_command_data_logger: exit code: 1
cli.main: Command ran in 7.520 seconds (init: 0.361, invoke: 7.160)
telemetry.save: Save telemetry record of length 6749 in cache
telemetry.check: Negative: The C:\Users\vance.adm.azure\telemetry.txt was modified at 2022-05-26 13:50:45.089097, which in less than 600.000000 s
cli.azure.cli.core.auth.identity: _dump_msal_http_cache: C:\Users\vance.adm.azure\msal_http_cache.bin
And here's the output of az version:
PS D:> az version
{
"azure-cli": "2.34.1",
"azure-cli-core": "2.34.1",
"azure-cli-telemetry": "1.0.6",
"extensions": {
"aks-preview": "0.5.60",
"resource-graph": "2.1.0",
"ssh": "1.1.1"
}
}
Best regards,
~ John

@John-Vance I was able to fetch the sshconfig file from C:\ drive as well as D:\ drive. See below:

I was using AzCLI 2.35.0 version. Could you please upgrade to the most recent version of CLI  (2.37.0) and then test again ? Awaiting your reply.

@John-Vance I wanted to do quick follow-up to check if you had a chance to look at my above comment. Please let us know if you need any further assistance on this. Awaiting your reply.

Thanks, @navba-MSFT. I did an az upgrade to 2.37.0 but am still observing the same behavior:

PS C:> az ssh config --ip <IP_ADDRESS> --file ./sshconfig
C:\az_ssh_config\<IP_ADDRESS>\id_rsa already exists.
Overwrite (y/n)? y
Generated SSH certificate C:\az_ssh_config\<IP_ADDRESS>\id_rsa.pub-aadcert.pub is valid until 2022-05-31 12:04:08 PM in local time.
C:\az_ssh_config\<IP_ADDRESS> contains sensitive information (id_rsa, id_rsa.pub, id_rsa.pub-aadcert.pub). Please delete it once you no longer need this config file.
PS C:> d:
PS D:> az ssh config --ip <IP_ADDRESS> --file ./sshconfig
D:\az_ssh_config\<IP_ADDRESS>\id_rsa already exists.
Overwrite (y/n)? y
The command failed with an unexpected error. Here is the traceback:
'NoneType' object has no attribute 'GetAceCount'
Traceback (most recent call last):
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\knack/cli.py", line 231, in invoke
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/init.py", line 663, in execute
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/init.py", line 726, in _run_jobs_serially
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/init.py", line 697, in _run_job
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/init.py", line 333, in call
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/command_operation.py", line 121, in handler
File "C:\Users\vance.adm.azure\cliextensions\ssh\azext_ssh\custom.py", line 96, in ssh_config
_do_ssh_op(cmd, config_session, op_call)
File "C:\Users\vance.adm.azure\cliextensions\ssh\azext_ssh\custom.py", line 166, in _do_ssh_op
op_info.cert_file, op_info.local_user = _get_and_write_certificate(cmd, op_info.public_key_file,
File "C:\Users\vance.adm.azure\cliextensions\ssh\azext_ssh\custom.py", line 229, in _get_and_write_certificate
write_cert_file(certificate, cert_file)
File "C:\Users\vance.adm.azure\cliextensions\ssh\azext_ssh\custom.py", line 329, in write_cert_file
oschmod.set_mode(cert_file, 0o644)
File "C:\Users\vance.adm.azure\cliextensions\ssh\oschmod_init.py", line 186, in set_mode
return win_set_permissions(path, new_mode)
File "C:\Users\vance.adm.azure\cliextensions\ssh\oschmod_init.py", line 403, in win_set_permissions
win_set_permissions(path, mode, get_object_type(path))
File "C:\Users\vance.adm.azure\cliextensions\ssh\oschmod_init.py", line 420, in _win_set_permissions
for _ in range(0, dacl.GetAceCount()):
AttributeError: 'NoneType' object has no attribute 'GetAceCount'
To open an issue, please run: 'az feedback'
Best regards,
~ John

@John-Vance Thanks for getting back. I tried with 2.37.0 version on my WIndows 10 OS and it worked fine again. I have 2 more action plans to isolatethis issue:
Plan 1:
Try to create a new SSH Public key and then run the same above command from C:\ and D:\ drive and check if that makes any difference:

az sshkey create --location "westus" --resource-group "myResourceGroup" --name "mySshPublicKeyName"
az ssh config --ip 10.XX.134.XX --file ./sshconfig

If the above plan doesn't help, Could you please try reinstalling the ssh extension using the below commands and test ?

az extension remove --name ssh
az extension add --name ssh

Awaiting your reply.

Thanks, @navba-MSFT. Using the az sshkey create command didn't have any effect:

PS D:> az sshkey create --location "eastus" --resource-group "RG-AMER-S-Acuity-Compute" --name "testKey2"
No public key is provided. A key pair is being generated for you.
Private key is saved to "C:\Users\vance.adm.ssh\1654105964_4479072".
Public key is saved to "C:\Users\vance.adm.ssh\1654105964_4479072.pub".
{
"id": "/subscriptions/28cb473f-a264-49d3-a2b8-62ad1e2e267e/resourceGroups/RG-AMER-S-ACUITY-COMPUTE/providers/Microsoft.Compute/sshPublicKeys/testKey2",
"location": "eastus",
"name": "testKey2",
"publicKey": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDQugBr1s0858g0XfknnxJ+E7DL\r\nhPUCU+Wta3+24B0mbHIGeiywKsK3nFrnl5/dqKzfwfFGpmbG+wY/aCUd+0+UDmWh\r\naWWr8jfrPWjFmE5DZz52PTSvu++oWUzkikOZXuQ1Bxj9E0YjdpWOc7fJly2BGjZ0\r\nJb65hv6tGKqan9M0IggsHEVp70XTrtYoWQBdnBji9UjOhmiDsGRSATpbH8ED/hEo\r\n5CEnlLjj3+RYfjDbFObs9QmkX2CPuZy03Zo6bbHdDGagEjtVALBfd0tc92DseI6a\r\nIOUGs2IdxT1/RmYkfw+cg6YbOj9uiZz4vjDMx84UImA5JU6ezcS8cXfsJmmm17ru\r\nDZlzXMXq9lP5jBZFIGZr1BTGtJMv7Ajtp+2WYUCDUzLckNRYEiS7HMf/8pxyjgIw\r\nvCr8XW5a28Vb8Nz0HFsNKymjbzQC3NaBmLWTSzXrZ5xzabKu44uRI/XpSz/6fNJO\r\ngknJNRPG/WY4WBH2CgneFU42FXzYJeq1Ihe8DBU= generated-by-azure\r\n",
"resourceGroup": "RG-AMER-S-ACUITY-COMPUTE",
"tags": {
"Business_owner"<EMAIL_ADDRESS>"Create_date": "2022-06-01",
"Division": "R&D",
"Group": "Acuity",
"Purchase_order": "4501143755",
"VM-Backup": "Enabled"
},
"type": null
}
PS D:> az ssh config --ip <IP_ADDRESS> --file ./sshconfig
D:\az_ssh_config\<IP_ADDRESS>\id_rsa already exists.
Overwrite (y/n)? y
The command failed with an unexpected error. Here is the traceback:
'NoneType' object has no attribute 'GetAceCount'
Traceback (most recent call last):
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\knack/cli.py", line 231, in invoke
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/init.py", line 663, in execute
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/init.py", line 726, in _run_jobs_serially
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/init.py", line 697, in _run_job
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/init.py", line 333, in call
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/command_operation.py", line 121, in handler
File "C:\Users\vance.adm.azure\cliextensions\ssh\azext_ssh\custom.py", line 96, in ssh_config
_do_ssh_op(cmd, config_session, op_call)
File "C:\Users\vance.adm.azure\cliextensions\ssh\azext_ssh\custom.py", line 166, in _do_ssh_op
op_info.cert_file, op_info.local_user = _get_and_write_certificate(cmd, op_info.public_key_file,
File "C:\Users\vance.adm.azure\cliextensions\ssh\azext_ssh\custom.py", line 229, in _get_and_write_certificate
write_cert_file(certificate, cert_file)
File "C:\Users\vance.adm.azure\cliextensions\ssh\azext_ssh\custom.py", line 329, in write_cert_file
oschmod.set_mode(cert_file, 0o644)
File "C:\Users\vance.adm.azure\cliextensions\ssh\oschmod_init.py", line 186, in set_mode
return win_set_permissions(path, new_mode)
File "C:\Users\vance.adm.azure\cliextensions\ssh\oschmod_init.py", line 403, in win_set_permissions
win_set_permissions(path, mode, get_object_type(path))
File "C:\Users\vance.adm.azure\cliextensions\ssh\oschmod_init.py", line 420, in _win_set_permissions
for _ in range(0, dacl.GetAceCount()):
AttributeError: 'NoneType' object has no attribute 'GetAceCount'
To open an issue, please run: 'az feedback'

I also observed the same issue when uninstalling/reinstalling the ssh extension:

PS D:> az extension remove --name ssh
PS D:> az extension add --name ssh
PS D:> lling ..
PS D:> az ssh config --ip <IP_ADDRESS> --file ./sshconfig
D:\az_ssh_config\<IP_ADDRESS>\id_rsa already exists.
Overwrite (y/n)? y
The command failed with an unexpected error. Here is the traceback:
'NoneType' object has no attribute 'GetAceCount'
Traceback (most recent call last):
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\knack/cli.py", line 231, in invoke
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/init.py", line 663, in execute
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/init.py", line 726, in _run_jobs_serially
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/init.py", line 697, in _run_job
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/init.py", line 333, in call
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/command_operation.py", line 121, in handler
File "C:\Users\vance.adm.azure\cliextensions\ssh\azext_ssh\custom.py", line 96, in ssh_config
_do_ssh_op(cmd, config_session, op_call)
File "C:\Users\vance.adm.azure\cliextensions\ssh\azext_ssh\custom.py", line 166, in _do_ssh_op
op_info.cert_file, op_info.local_user = _get_and_write_certificate(cmd, op_info.public_key_file,
File "C:\Users\vance.adm.azure\cliextensions\ssh\azext_ssh\custom.py", line 229, in _get_and_write_certificate
write_cert_file(certificate, cert_file)
File "C:\Users\vance.adm.azure\cliextensions\ssh\azext_ssh\custom.py", line 329, in write_cert_file
oschmod.set_mode(cert_file, 0o644)
File "C:\Users\vance.adm.azure\cliextensions\ssh\oschmod_init.py", line 186, in set_mode
return win_set_permissions(path, new_mode)
File "C:\Users\vance.adm.azure\cliextensions\ssh\oschmod_init.py", line 403, in win_set_permissions
win_set_permissions(path, mode, get_object_type(path))
File "C:\Users\vance.adm.azure\cliextensions\ssh\oschmod_init.py", line 420, in _win_set_permissions
for _ in range(0, dacl.GetAceCount()):
AttributeError: 'NoneType' object has no attribute 'GetAceCount'
To open an issue, please run: 'az feedback'

Thanks so much for your continued help. Let me know if you need any logs or need me to try something else.

Hi @John-Vance,
I'm looking into your issue, and I can't repro it yet. It seems that the issue is happening in the oschmod module that we use to set the correct permissions to the generated AAD issued certificate. I looked at the oschmod code, and it looks like it is failing to get the DACL in the security descriptor for the certificate file.
I don't know what can cause that issue yet. But let's try running some tests to see if we can find something.
For now, let's try getting the ACL for the certificate created in the D: drive, and see what happens. When you run the command D:> az ssh config --ip <ip> --file ./sshconfig that should create a certificate "D:\az_ssh_config<ip>\id_rsa-aadcert.pub" before the failure. Get the ACL of that file by running (Get-ACL D:\az_ssh_config\<ip>\id_rsa-aadcert.pub).Access on PowerShell and ensure that you get a list of Access Rules for that file. Like this:

Also ensure that you are the Owner of the file by running (Get-ACL D:\az_ssh_config\<ip>\id_rsa-aadcert.pub).Owner .
Let us know if you get anything unexpected.

Here's what I see for that command when running on C:

PS C:> (Get-ACL C:\az_ssh_config\<IP_ADDRESS>\id_rsa.pub-aadcert.pub).Access
FileSystemRights  : FullControl
AccessControlType : Allow
IdentityReference : NT AUTHORITY\SYSTEM
IsInherited       : False
InheritanceFlags  : None
PropagationFlags  : None
FileSystemRights  : DeleteSubdirectoriesAndFiles, Write, Delete, Read, ChangePermissions,
TakeOwnership, Synchronize
AccessControlType : Allow
IdentityReference : BUILTIN\Administrators
IsInherited       : False
InheritanceFlags  : None
PropagationFlags  : None
FileSystemRights  : Read, Synchronize
AccessControlType : Allow
IdentityReference : BUILTIN\Users
IsInherited       : False
InheritanceFlags  : None
PropagationFlags  : None
FileSystemRights  : Read, Synchronize
AccessControlType : Allow
IdentityReference : INTRA-BRKR-CORP\Domain Users
IsInherited       : False
InheritanceFlags  : None
PropagationFlags  : None

On D:, I just get this:

PS D:> (Get-ACL D:\az_ssh_config\<IP_ADDRESS>\id_rsa.pub-aadcert.pub).Access
FileSystemRights  : -1
AccessControlType : Allow
IdentityReference : Everyone
IsInherited       : False
InheritanceFlags  : None
PropagationFlags  : None

@John-Vance Thank you for sending this. Are you usually able to create text files on drive D: and edit the permissions? Can you five it a try? Just create a new dummy text file, save it in the D:, and then try to get the ACL using the same command you used begore (Get-ACL).

@John-Vance I'm suspecting maybe you don't have enough permission to change security configurations on drive D:, and the certificate files are inheriting that. Run (Get-Acl D:).Access and check what kind of permissions you have there.

Thanks, I believe I found the issue. I got a similar result after creating a dummy file in D:, but noted that D:\ is a FAT32 volume, which doesn't support ACLs. I carved out a separate NTFS partition at E:\ and tried it from there, and everything works as expected. Maybe this command only works when targeting filesystems that support ACLs?

@John-Vance Great! I'm glad you found the issue. We will keep this in mind and see if we can support file systems that don't support security descriptors in future releases.

@vthiebaut10 Thanks for your assistance on this.
@John-Vance Thanks for identifying the cause sharing an update. We are happy that the issue is now addressed. We will proceed with archival of this thread. Feel free to reopen this thread if you need any assistance in future.


setup pulp integration

Description
Framing out the feature flag and method for pulp integration.
Breaking change into multiple PRs
FIXES: HMS-4419
Type of change
What is it?

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Documentation update
[ ] Tests update
[x] Refactor

/retest

/recheck


PauliTrotterEvolution does not recognize SummedOp of PauliSumOp as Paulis

Information

Qiskit Terra version: 0.18.0.dev0+732e887
Python version: 3.9.4
Operating system: Darwin

What is the current behavior?
When converting an EvolvedOp operator from a Pauli Hamiltonian via PauliTrotterEvolution, the evolved Hamiltonian is not recognized as consisting only of Paulis in certain cases.
Steps to reproduce the problem
from qiskit.circuit import Parameter
from qiskit.opflow import I, X, Y, Z, PauliTrotterEvolution, Suzuki

mu = Parameter('$\\mu$')
nu = Parameter('$\\nu$')

my_ham1 = mu*((I^I) - (Z^I)) + nu*((I^I) - (I^Z))

tt = Parameter('$t$')
U_ham1 = (tt*my_ham1).exp_i()

U_ham1

prints
EvolvedOp(SummedOp([PauliSumOp(SparsePauliOp([[False, False, False, False],
               [False, False, False,  True]],
              coeffs=[ 1.+0.j, -1.+0.j]), coeff=1.0*$\mu$), PauliSumOp(SparsePauliOp([[False, False, False, False],
               [False, False,  True, False]],
              coeffs=[ 1.+0.j, -1.+0.j]), coeff=1.0*$\nu$)], coeff=1.0*$t$, abelian=False), coeff=1.0)

trot_op1 = PauliTrotterEvolution(trotter_mode=Suzuki(order=2, reps=1)).convert(U_ham1)

prints
Evolved Hamiltonian is not composed of only Paulis, converting to Pauli representation, which can be expensive.

What is the expected behavior?
PauliTrotterEvolution should simplify the expression as in the following equivalent operator:
my_ham2 = (mu+nu)*(I^I) - mu*(Z^I) - nu*(I^Z)
U_ham2 = (tt*my_ham2).exp_i()
trot_op2 = PauliTrotterEvolution(trotter_mode=Suzuki(order=2, reps=1)).convert(U_ham2)

does not print a warning message.
U_ham2

prints
EvolvedOp(SummedOp([PauliOp(Pauli('II'), coeff=1.0*$\mu$ + 1.0*$\nu$), PauliOp(Pauli('ZI'), coeff=-1.0*$\mu$), PauliOp(Pauli('IZ'), coeff=-1.0*$\nu$)], coeff=1.0*$t$, abelian=False), coeff=1.0)

Suggested solutions
Perhaps parsing the summed operators to ensure Paulis are recognized so that more efficient opflow methods can be used.

This bug does not apply to currently supported versions of Qiskit. Please submit a new issue if the bug still occurs in Qiskit 1.*.
See https://docs.quantum.ibm.com/migration-guides/qiskit-opflow-module.


Create API readiness checklist for KYC-match

What type of PR is this?
Add one of the following kinds:

documentation
subproject management

Which issue(s) this PR fixes:

Fixes #107

Already included in the RC branch


How to Setup Free Code Camp Locally is missing npm install instruction

This commit removed the line:
npm install

from a section named Install NPM dependencies which was also removed when the new Docker instructions were added.  For those not using Docker, I believe this needs to be added back in somewhere shortly after the Installing dependencies section.

Actually, does npm ci replace npm install when not using Docker?  If so, this issue can be closed.


Commands dont match on a PSRemote-Session to an Azure Stack Edge device

[Enter feedback here]
Following this article does not seem to work when using PSRemoting to an Azure Stack Edge device.
The AzureStackEdge remote session provides
Get-VM (not Get-AzVM as mentioned in the article) and there appears to be no command for Get-Disk.
These are the commands available on the AzureStackEdge Pro GPU 2202 (2.2.1868.4470)
https://1drv.ms/t/s!AtQTAHqEyvM1k8MFigDQxqkL0Nm_tg?e=iA0Qwc

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

ID: fc7b8f51-726a-e2f8-3ed6-eb924d9bdf46
Version Independent ID: 1d1cabaa-a007-7586-ba48-734b83178db8
Content: Back up VM disks on Azure Stack Edge Pro GPU device via PowerShell
Content Source: articles/databox-online/azure-stack-edge-gpu-back-up-virtual-machine-disks.md
Service: databox
Sub-service: edge
GitHub Login: @alkohli
Microsoft Alias: alkohli

@jamesMilne Thanks for the question! We are investigating and will update you shortly.

@JamesMilne The article/cmdlets look prefect and we are able to Verify connection, If you are getting any error message, please do share with us with the complete issue, I would like to work closer on this, I 'd recommend posting your question in https://azure.microsoft.com/en-us/support/community/ since it's not directly related to the documentation. We'll follow up there. We will now proceed to close this thread. If there are further questions regarding this matter, please tag me in your reply. We will gladly continue the discussion and we will reopen the issue.


Enable suggesting nodes for maps

Describe your issue
When people find this software or its website, I think the first thing interested ones will do is trying to find an example map and opening it and then checking out the features. However, in these maps most features are not enabled because presumably "Allow anyone to edit this topic" is not checked in the debate settings. Moreover, just enabling that could also be a problem due to spam and vandalism. Currently, one can only add comments which makes it seem like that is all the features implemented as of now.
Solution you'd like
Please enable all features for registered users but when they add anything to maps which do not have this "Allow anyone to edit this topic" setting checked add isSuggestion=true to the the nodes and connections they create. Then, moderators could accept them in. If they are not yet accepted only the person who submitted them can see them as well as admins/mods if a setting to show suggestions is checked (these tiles could have another color).
Alternatives you've considered
No response
Additional context
One could also make it so that e.g. only people who successfully submitted  e.g. >50 items can add items directly and have all public maps have the editable setting enabled (otherwise it can only be unlisted or private). Things like that could be thought about later. I think it's important to enable people learning about this software to be able to explore its features and not think that they can only add comments. Facilitating that new users rather add comments than new tiles may be a good thing to do but that can also be worked on later such as prompting them to add comments if they have any questions or issues with any of the items already on the map.
On Kialo, every debate has admins (at first only the debate creator) who must check and accept every claim. However, I think that design is not ideal. It has some advantages such as enabling setting a quality standard by requiring people submitting Pros & Cons to e.g. add sources or at least coherent explanations before things are accepted and weeding out entirely unrelated things but in practice many debates turned stale once the admins became inactive or don't accept valid claims in somewhat biased ways. There are further downsides. So this issue is not about making ameliorate implement a very similar design where all contributions have to be accepted.
Technical ideas and questions
If the suggestion has a wrong format, e.g. it's a "Problem" when it should be a "Detriment" and all the differences between the different types isn't yet that clear to me and probably most (especially new users), the mods could change the tile type. There could be a changelog for every tile where one can see who created and changed it and what the changes are (e.g. changed text with diff or changed format from "problem" to "detriment" etc). This is really important for several reasons but maybe it should go into a separate issue and I suggest Wiki tech is used so this could look like the History page of Wikipedia articles just much simpler.

I think #11 covers most of the ideas in this issue - going to add the new ideas to that one and close this ticket as duplicate. Let me know if you think there's reason to reopen/keep this separate.

Currently, one can only add comments which makes it seem like that is all the features implemented as of now.

Please enable all features for registered users but when they add anything to maps which do not have this "Allow anyone to edit this topic" setting checked add isSuggestion=true to the the nodes and connections they create.

I think that edit features, while their UX could probably be improved, would add more complexity to the UX for new users. But this and your concerns here might all be addressed by adding something like Google Docs's mode component, where it's explicit which mode you're in (editing/suggesting/viewing) and you can easily switch between the ones you have access to:

One could also make it so that e.g. only people who successfully submitted e.g. >50 items can add items directly and have all public maps have the editable setting enabled

That's a good idea, I hadn't considered that. Maybe couple that with the creator's ability to remove edit access from people (in case someone contributed a lot but then started abusing) and history/loading a snapshot of history (#371) (to save the day if there's abuse). Maybe forking would also be a separate way of addressing the issue.

I think it's important to enable people learning about this software to be able to explore its features and not think that they can only add comments.

Yeah that's a good point

So this issue is not about making ameliorate implement a very similar design where all contributions have to be accepted.

Is the main desired difference in design to have is the automatic edit access after X contributions? It seems like the other aspects of Kialo's design seem reasonable, like requiring contributions to be accepted seems always preferrable when trust is not built, unless users are explicitly given access.

If the suggestion has a wrong format [...] the mods could change the tile type.

This would always be possible after accepting the change, though maybe for history's cleanliness, changing before accepting might be slightly preferred? In any case, that's probably lower priority.

There could be a changelog for every tile

Yes definitely agree. Have #371 for that

I suggest Wiki tech is used so this could look like the History page of Wikipedia articles just much simpler.

By "Wiki tech" do you mean that there's some tooling from them that can be used to add history? Or just that it'd be a good design to take inspiration from
I think it's a good start, and that Ameliorate should be able to have a simpler version. I also appreciate GitHub's commit history design, though it's not as trivial to compare the diff between two commits.

I think https://github.com/amelioro/ameliorate/issues/11 covers most of the ideas in this issue - going to add the new ideas to that one and close this ticket as duplicate.

Thanks! Seems good.

I think that edit features, while their UX could probably be improved, would add more complexity to the UX for new users.

I think there is far too much complexity but it can and would need to be reduced in ways other than making the key core features of the software not available to new users and only allowing them to make notes. The complexity can also be lower than full-permissions editing in various ways such as only allowing them to make connections or new nodes without being able to specify which kind of node (like problem) or relation these are. They could then be introduced to these different types of nodes and that may be good anyway since I also don't yet understand the difference all between the different types of nodes for example.
So I don't think it would be a good idea to have a Viewing only mode enabled by default – that mode could however still be useful for the view shown to signed out readers and maybe the reduced-complexity view (such as for getting familiar with a problem-tree or just exploring it or exporting it).

Maybe couple that with the creator's ability to remove edit access from people (in case someone contributed a lot but then started abusing) and history/loading a snapshot of history (https://github.com/amelioro/ameliorate/issues/371) (to save the day if there's abuse). Maybe forking would also be a separate way of addressing the issue.

All good ideas. One could also get some ideas or inspiration how things are done on Wikipedia/Wikimedia sites. People can edit most pages except for a few that got vandalized often where they need some small minimum number of edits and days since account creation coupled with features like Watchlist where people can notice problematic changes and revert them or block/warn the user. I don't know if problems trees have a history yet but I'd suggest something like the MediaWiki page history where one can revert any changes. FYI one can also fork argument maps on Kialo "clone" them and link or copy a branch of one map somewhere in another debate (both features are rarely used but they're underused and require special permissions that usually only a few debate mods have).

Is the main desired difference in design to have is the automatic edit access after X contributions?

Yes more or less. There is another site that is not offline for argument maps Wikidebate and there people can make contributions right away. Problematic changes are reverted after the fact and it's the same on Wikipedia albeit there are now bots that quickly detect maybe 50-75% of vandalism/problematic changes. Partly because the site is smaller and less frequented by potential watchers or similar, I think having initial contributions be only 'suggestions' that have to be approved is preferable.
Once they have contributed enough items that have been accepted and reached a certain time since registration, they are probably also more familiar with the site and potential policies and norms and due to the many contributions can be better checked in regards to whether they contribute constructively (they have an contributions history) so after that point any potential issues could also be solved like on Wikimedia sites where things are fixed afterwards instead of having everything be slow and require approval.

[mods could change the tile type] This would always be possible after accepting the change

Sure, wasn't suggesting it's approved before or after accepting the change. I think it would probably be best if it was edited before accepting but both could be made possible anyway since items probably often need to be edited at a later point. If the item was edited (e.g. the type changed) by a mod before getting added in by a mod, the History log of them would show for example:

new-user [datetime] added new node as suggestion
mod-name [datetime] set node type to problem
mod-name [datetime] edited description [click here to see diff]
mod-name [datetime] approved suggestion

By "Wiki tech" do you mean that there's some tooling from them that can be used to add history?

I mean wiki technology and ideally something like that could be used and not just for inspiration. Every node would be a wiki page with its own History page that can be edited like wiki-pages. However, I don't know if there's small module one could use. Btw reddit also has Wiki pages in subreddits. For example, see Wiki.js https://github.com/Requarks/wiki Adding the entire thing as a dependency and enabling all its markdown in every node (and maybe some meta pages) would be too much – I would check if there's some lightweight package one could use. It may even be possible to have the Watchlist feature for example through that where you track all changes of problem trees you have on the Watchlist including diffs of edited items.

I think there is far too much complexity but it can and would need to be reduced in ways other than making the key core features of the software not available to new users

Yeah that's a good point.

The complexity can also be lower than full-permissions editing

Also a good point

make connections or new nodes without being able to specify which kind of node (like problem) or relation

I currently have the perspective that the node types are valuable enough for newbies to learn about. One of the main purposes of the tool is to help people get on the same page about problems/solutions, and I feel that being explicit about the kind of thing being discussed is a huge help towards that end. Additionally, as someone who knows all the node types, I've actually appreciated the "framework" as a means of thinking about the topic. E.g. oh there aren't any detriments in this map - are we actually in agreement already about why this topic's problem is a problem? Also, since certain node types generally are associated with certain other node types, they help give structure to the topic as a whole, and build expectation for what related nodes to expect.
Given this perspective, my initial reaction to your comment is - can anything be done to make it trivial to understand the node types? You should check out ontology if you haven't yet. I recognize though that expecting users to go to that topic is not something that's ideal as a prerequisite to interacting with a map (e.g. if someone shares a map with you and you've never used Ameliorate, it'd be nice if you could tell what you're looking at without spending several minutes or more just learning about the tool).
One thing I could envision actually, is expecting maps to be trivial enough for a first-timer to view and understand, but expecting a first-timer to go through a short effort (~1 minute) to be able to effectively make suggestions. If you haven't checked out the tutorials, they're here:

and my intent was that "2. Breaking down a problem" covers the node types pretty quickly.

I don't think it would be a good idea to have a Viewing only mode enabled by default

I do see your point about suggestion mode being a good way to encourage new users to start contributing and get more involved with the platform.

how things are done on Wikipedia/Wikimedia sites

Yeah these ideas seem good. I think generally an Ameliorate topic could have different levels of restriction - basing off of credibility/vandalizing seems good, but also I think based on the author's intention. I could see someone wanting to be more restrictive/opinionated about what they want in their topic, but perhaps that would just have less respect in a way, as a more-biased topic.
On a related note - I think Ameliorate is good for Wikipedia-like topics, where the topic is intended to be thorough, maybe be "official"/not duplicate with any other Ameliorate topics, and consistently be updated for the long-term. But a core purpose for Ameliorate is also for shorter-term topics - where you might have a problem you're trying to figure out what to do, you want to align with someone or a group, so you make a topic and use it over the course of like a few weeks, then a decision is made and the topic doesn't need to be revisited (unless something major changes and decision needs to be re-made). I think shorter-term/smaller-group topics might have different preferences for suggestion behavior than longer-term/Wiki-like topics.

require special permissions that usually only a few debate mods have

Oh I actually didn't know that. Good to know

Wikidebate

Had not heard of this, also good to know. Interesting strategy.

I mean wiki technology and ideally something like that could be used and not just for inspiration

Added to #371 to look into the possibility of Wiki tech. It would certainly be cool if that were possible to reuse.

Thanks for explaining! Yes, maybe it's good if new users need to learn and specify the node type. The problem is not with understanding node types but there's so many of them and some of them are quite similar (+ people may forget the nuanced distinctions; e.g. when to use Detriment and when Problem). The ontology example map I think helps best. I think the best solution would be to ask for the node type to be specified but also accept node-suggestions where the type is unspecified but allowing mods to simply change the node type before adding a newcomer's node in would essentially solve this anyway as well.
As for the number of node types: I doubt that having a node "Effect" is helpful, things should probably only be added if they specify/explain why something would be positive or negative. It only makes things harder to understand and fills the map with more items that make it harder to oversee. E.g. Air pollution can have Effect particles in atmosphere which has Benefit short-term cooling and Detriment health issues etc – just adding the latter two or so would usually be better. An optimal approach would be to allow advanced users to link things to effects but to not show the effect nodes on the map by default, maybe sometimes having things categorized like that can indeed be useful. I think elsewhere I already argued that having a separate Criterion node may not be good as it just blocks potential solution and makes the map some opinionated one-of-many narrow essay instead of something like a one-comprehensive-only Wikipedia article about a subject – problems of solutions could be specified via problems to these and via the ratings so I don't see much use in the criterion nodes but several large problems. Here again the solution may be to allow users to configure criterions somehow but to not show them on the map by default. Also I don't see why Detriment is used below a problem instead of a problem that is about why a problem is a problem. Maybe Detriments would be better just Problem nodes, in this case: Detriments of the top-level problem I think it would be better if the "Problem" type was used since if you can solve all individual subproblems of a problem you either solved the main problem or you don't need to solve the top-level problem. However, this may best go into a separate issue or discussion about node types.

I think based on the author's intention. I could see someone wanting to be more restrictive/opinionated about what they want in their topic

Yes, I think it would become biased, restrictive, misleading etc – e.g. if I go to a problem map about the demographic transition problem according to the title, I wouldn't expect that certain kinds of subproblems or reasonable solutions (like labor demand reduction methods) are excluded for ideological reasons or because the mod happens to not like some nodes. There may also be value in having quite restrictive maps or narrow maps...I would suggest something like different namespaces is implemented where one namespace is the public sphere where the problem is discussed in the sense of 'one problem - one comprehensive map' and one namespace where people can e.g. set criterions or make the map more narrow etc. E.g. "Problem:Demographic transition" and for the latter "Collab:Demographic transition". People could for example find these collab maps via the problem map or invite people from there, there could even be different collab maps for different factions who come up with different ways to address a problem and the collab maps would somewhat also shape the main map and vice versa by kind of 'merging' in their solutions and nodes into this broader more comprehensive map.

But a core purpose for Ameliorate is also for shorter-term topics - where you might have a problem you're trying to figure out what to do,[…]

Makes sense. I think this Collab namespace or a third namespace could also be used for these. One could then also browse them separately. (Most people would mainly just browse and contribute to the main mainspace.)

ask for the node type to be specified but also accept node-suggestions where the type is unspecified but allowing mods to simply change the node type

That might be good enough.

I doubt that having a node "Effect" is helpful, things should probably only be added if they specify/explain why something would be positive or negative

I think that even if an effect isn't directly positive/negative, it can still be good to call out. For one, understanding a full causal chain seems important, rather than just understanding the good/bad effects. If there's an Effect in between a Component and a Benefit/Detriment, people might not understand how the component creates the Benefit/Detriment without the intermediate Effect. This is similar to why you'd want to look at root causes. Root causes might not be inherently good or bad but can be a target of change in order to remove the negative (and positive) effects downstream. Secondly, it may not be clear if an effect is good or bad yet, but someone can still suspect that the effect is significant, in which case it seems good to model via node (and worth potentially being shown in a default view).

It only makes things harder to understand and fills the map with more items that make it harder to oversee

I feel that this concern is better addressed by either manual filtering via Quick Views (I hadn't thought of this before but I think Quick Views could be community-built too, for wiki-style maps), or by filtering out nodes by importance score.

having a separate Criterion node may not be good

For context, I responded to this within this comment (near the bottom) https://github.com/amelioro/ameliorate/discussions/541#discussioncomment-11082569

Maybe Detriments would be better just Problem nodes [...] since if you can solve all individual subproblems of a problem you either solved the main problem or you don't need to solve the top-level problem

Similar to what I said here https://ameliorate.app/examples/climate-change?comment=moDkjpJKysC4JqAPD6uZpb, Problem is used to highlight core problems for the Topic. A Detriment justifies why a Problem is concerning, but in itself is not a core Problem (within the context of the Topic). If we want to convey that the Detriment is a concern independent of the Problem i.e. even if the Problem is solved, and we want to highlight that within the context of the Topic, then we could use a Problem instead of a Detriment. But if the main purpose of modeling the Detriment is to convey why a Problem is concerning, then use the Detriment node type.
If you're interested in discussing this in more detail, yeah I think a separate GitHub Discussion would be good for that.

something like different namespaces

Something like this might work, I hadn't considered that. It also might be possible to break up the "Public" type of Topic into two, where both are intended to be open to the public but one is intended to be Wiki-like and the other would welcome contributions but is more opinionated/restrictive. I'd have to think about it more to understand tradeoffs between using namespaces and the Topic type for this.

find these collab maps via the problem map

I think being able to specify related maps would be good.

different factions who come up with different ways to address a problem and the collab maps would somewhat also shape the main map and vice versa by kind of 'merging' in their solutions and nodes into this broader more comprehensive map

This sounds similar to #13, which I'm a big fan of, though it seems pretty far in the future, so I haven't fleshed it out much.

I think that even if an effect isn't directly positive/negative, it can still be good to call out […]

Totally see that, it's just that I think the burden should be higher to put things on the map when it comes to effects so people need to make the effort to identify potential negative and/or positive aspects from that effect instead of only adding the effect. It requires more thought but it makes the map more useful and the same things can ultimately be on the map, people just need to work out the negative and positive aspects. When an effect is beneficial the info about the effect is put into the node about the Benefit. In the example, 'Air pollution has Benefit of short-term cooling' is a claim directly instead of being put after some intermediary node, having intermediary node that is linked to multiple nodes is not a good thing in itself. Actually I think it would be best to try to / aim for reducing the number of nodes so things are as condensed and overseeable as possible. One could say there should links between two nodes that are related via sharing some effect but I think they are already quite close if they're simply linked to Air pollution. However, it could well be that you're right on this but I think it's worth keeping in mind that the Effect node type may be somewhat redundant and problematic – I need more experience with the actual maps to say more about that. It could be that the best solution would be to allow people to add Effects and to link nodes to effects but to have these not be displayed by default, it's like a Detail view so to say.

manual filtering via Quick Views

The filter showing least items on the maps would be most useful for people new to the platform who are most likely least aware and capable to use any filtering options. I think the default view would best filter away a lot and there is a well-visible button directly on the map (not any sidebar) to hide all branches below a certain score (based on at least 2 ratings).

A Detriment justifies why a Problem is concerning, but in itself is not a core Problem (within the context of the Topic)

Still it seems like quite difficult if not often impossible to clearly distinguish between Detriment and Subproblems. It's a subproblem of air pollution that it causes health problems, if somebody invents some magical fluid of nanobots that fully cleanse your body that everybody can afford and take daily, then Air pollution wouldn't be a problem assuming it doesn't cause other problems. That it causes health problems is the problem caused by air pollution. The sum of problems caused by a node is why it's a problem at all. What would be the use of setting things to the Detriment node type? What is a core problem and what's just a problem? Even if it makes semantic sense somehow that doesn't mean it's useful to make this very nuanced distinction in the map. That topic could also be revisited at a later point but I suspect making things simpler is more useful than trying to capture every nuanced distinction even if these are reasonable.

where both are intended to be open to the public but one is intended to be Wiki-like and the other would welcome contributions but is more opinionated/restrictive

Something like that would be great.

As a note, I would put this into two nodes.

Then that would kind of support the case for doing something about the Effects node type: these two nodes could be linked to a third effects node type and it seems arbitrary / inconsistent when to link them to such an effect node and when not. Of course air pollution would be a node – I argued the effect node underneath an air pollution node wouldn't be helpful/good.

Intermediary nodes enable a more precise/clarified discussion

Consider that 1. precision could be improved much more if there were e.g. 100 nuanced types and connections but higher precision is not necessarily needed or beneficial overall 2. the same level of precision can still be there via the comments, justifications, critiques, etc of the nodes – just not directly on the map 3. it also reduces precision by changing what nodes are connect to – eg it could make more sense if they are connected to the air pollution node rather than intermediary nodes like "Novel [reflective] particles in atmosphere".

UX should be able to do this without forfeiting the ability to have more precise discussion

Yes but I think this ability is still there if the nodes are more directly connected. Making it possible to show the map with either with or without certain intermediary nodes could be best. Also I need to use the site more before I could say more about whether I think Effect nodes are generally either redundant or convertible to another node type. Just wanted to note that this ability would not be forfeited by not having this node type – one would simply discuss matters on the other items and possibly add nodes based on that.

showing cause/effect relations

Yes but they don't necessarily need the Effect node type, e.g. only effects that are relevant to the Problem subject are relevant so it would be kind of out of scope to include random other effects; same for Effects that are not related or kinds/parts of solutions or subproblems.

I agree that more could be filtered out, and that the UX needs to be able to make it more intuitive to do simple-but-common filtering.

Great.

it's satisfactory to solve all Problems, but it's not necessarily satisfactory to solve all Detriments

Don't yet really understand it but I think I simply need examples for that and more experienced editors could change the node type of others to get back to the issue's topic: they could suggest it in one way and then reviewers could change the type if inaccurate; if a node has a flawed type after approving it can also be edited by more experienced contributors. I do have doubts whether this would make it easier rather than more difficult/complex to understand maps though and for examples where I've seen the Detriments node type used think subproblem would be a better fit as it's the problem that causes the problem above to be a problem where if some were solved the problem above would be reduced in severity and if they all were then the problem itself be solved. If a certain level of climate change has no effects on human migrations, conflicts, economics, and health then it wouldn't be a problem so if you solve these subproblems in ways that have not large subproblems (or detriments?) like extremely high costs then it would itself be solved in terms of the problem it poses.

it seems arbitrary / inconsistent when to link them to such an effect node

It's a similar arbitrariness to when you should create a Component for a Solution, or a Cause between two existing Causes. I suppose it's more arbitrary than creating a Benefit between two Benefits, because Benefits have value merely by conveying an additional distinct good thing, whereas the extra Effect/Component/Cause nodes have value by their additional accuracy/precision of modeling reality, and therefore enabling more accurate/precise discussion of it.

Of course air pollution would be a node – I argued the effect node underneath an air pollution node wouldn't be helpful/good.

My bad, I had forgotten some of the context of our discussion.

precision could be improved much more if there were e.g. 100 nuanced types

I agree that there's a limit to the value of precision, but right now we have 9 breakdown node types (cause, problem, criterion, solutionComponent, effect, benefit, detriment, solution, obstacle - maybe remove criterion and consider subproblem an additional one) which doesn't seem like too much (by quantity of types at least).

the same level of precision can still be there via the comments, justifications, critiques, etc

I think the first comment/justification/etc can match precision with some cost of brevity (because the causal nature would have to be noted explicitly in words rather than via node type/relation), but responses to that lose precision because there's no longer the ability to score/justify/comment-on specifically the causal aspect (via the two additional edges) separately from the concepts/nodes involved.
I suppose in theory you can always be precise by adding more words, but it gets harder and harder, and I feel there's an argument to be made that some precision is inherently lost whenever you have to use more words to convey the same thing.

it could make more sense if they are connected to the air pollution node rather than intermediary nodes

In this case it seems like the Effect of "particles in atmosphere" is more of an additional description of pollution, rather than an effect, because pollution is particles more than creates them. I think a better example might be something like this:

where the Effect answers the question of "how?". Without "particles reflect sun", I could see there being confusion about how air pollution creates cooling. Even if we didn't know a specific Benefit/Detriment yet, this Effect seems like it could have other effects (that could be positive/negative) if we look into it more.
Actually, this example illustrates to me another advantage of the explicit causal relation. You could replace the Effect "particles reflect sun" with a Support on the "short-term cooling - created by - air pollution" edge, but then if you wanted to be accurate, you'd also have to put that Support on the "less sunlight - created by - air pollution" edge. And it wouldn't be as easy to separately discuss "do particles actually reflect the sun?" vs "does reflecting sun create cooling?" vs "does reflecting sun reduce plant growth?"

Making it possible to show the map with either with or without certain intermediary nodes could be best

Yeah there's always the ability to hide nodes

I need to use the site more before I could say more about whether I think Effect nodes are generally either redundant or convertible to another node type. Just wanted to note that this ability would not be forfeited by not having this node type

The discussion is always open if you think of more later. I think it's good to note that technically the point of Effects can still be communicated without them, but I currently think that discussion can be easier with them.

reviewers could change the type if inaccurate

True

(assuming no notable subproblems are missing)

If a certain level of climate change like 2.5°C had no notable effects on human migrations, conflicts, economics, and health then it wouldn't be a problem

I think the assumption is an important point here. If a Problem is missing Detriments, and there's disagreement about whether or not it's a concern, it's a much bigger deal. The author needs to think about it until they can justify it, otherwise maybe the Topic isn't even worth discussing at all. But if a Detriment is missing Detriments, and there's disagreement about whether or not it's a concern, perhaps the author can't think of anything and they just delete it or change it to an Effect. That Detriment was not the core concern for the Topic, so it's not a big deal. Maybe there are other Detriments to justify the Problem.

It's a similar arbitrariness to when you should create a Component for a Solution, or a Cause between two existing Causes. […] whereas the extra Effect/Component/Cause nodes have value by their additional accuracy/precision of modeling reality

Not sure about it yet but I think I disagree: the latter are added when they're relevant to the problem map. The relevance of an Effect-type node to the map/context is inherently unclear. I think the burden to find out how and specify how something relates to the map context should be on the person adding the node. That's why I think the Effect node type is redundant to the others as no other Effects than those known or argued to actually be relevant are good to include in the map (they can be added as soon as somebody figures out how it relates to the map and prior to this can of course still be discussed via comments etc). Even more, if people put nodes underneath the Effect node then that just creates large segments of offtopic branches.

which doesn't seem like too much (by quantity of types at least).

I think it would be best to have just the problem-type not an additional subproblem one (and if there's one then it could be set automatically in some way eg when a problem node is directly underneath another problem node). I think 9 types is many for most users. Kialo has 3 types: Pro, Con and Hypothesis (the latter only included once in most maps and a just a few times at the top-level at multi-thesis argument maps). Argüman also had 3 node types: because, but, however. The issues can be solved to a large degree if node types can be and regularly are changed or specified by experienced users.

no longer the ability to score/justify/comment-on specifically the causal aspect (via the two additional edges)

That's more a feature than a problem: it's unclear what ratings mean if it's a neutral/unclear effect node and it would be best to not enable ratings when it's not clear how the node relates to the subject (in terms of problem/solution/detriment of x severity/impact/importance).

because pollution is particles more than creates them

Makes sense but I meant reflective particulate particles, should have made it clearer. Chemical molecules like CO2 are also particles but that's not what I was referring to. Your example is helpful. I tend to still think connecting them directly would be better. That is having a Benefit node linked to a probably useful component node "particulate air pollution" like "Reflective particulate pollution reflects sunlight causing short-term cooling" and a Detriment node "Reflective particulate pollution reflects sunlight which may cause agricultural problems in some regions".

Without "particles reflect sun", I could see there being confusion about how air pollution creates cooling

Indeed but it would be in the node as described above.

this Effect seems like it could have other effects (that could be positive/negative) if we look into it more

I think the optimal thing to do for such cases is to put the burden on the people seeking to add it to research this and find out and/or specify relevance. This is to facilitate this work to be done and for the map to stay ontopic, condensed, and relevant etc. Otherwise maps will just be overcrowded but of low-quality and of little use.

but then if you wanted to be accurate, you'd also have to put that Support on the "less sunlight - created by - air pollution" edge.

Another problem with having the intermediary Effect node that I just noticed is that it has a combined rating on the edge above the "particles reflect sun" Effect above the Benefit and Detriment – this means people need to consider the two in combination instead of rate them separately how it relates to the problem node and I think this is a redundant rating that will be very difficult to rate or interpret and it makes little sense to combine the ratings that way.

And it wouldn't be as easy to separately discuss "do particles actually reflect the sun?" vs "does reflecting sun create cooling?" vs "does reflecting sun reduce plant growth?"

The only change is that "do particles actually reflect the sun?" would have two nodes where it can be discussed instead of one. I don't think that's a problem, especially as people don't watchlist/track individual nodes but changes to the entire map. If they do not reflect the sun then both nodes would be removed (or flagged or rated low). How much of an effect it has varies per the two nodes so subnodes would have to go beneath each/either anyway rather than beneath the Effect node.
Maybe it would be good to put this into a separate discussion about the Effect node type.

Yeah there's always the ability to hide nodes

Does it cause the nodes then to be connected directly? In your example the Detriment and Benefit directly to Problem. That's what I mean – not that it would hide the entire branch underneath the Effect node.

but I currently think that discussion can be easier with them.

Assuming the discussion becomes easier with them that doesn't mean the overall problem map becomes easier. Maybe the discussion of some things becomes a bit easier (let's say +3) but the overall subject map becomes harder to understand/navigate/explore/interact with (eg -5) which would still mean the map would be better without these nodes.

I think the assumption is an important point here

Yes of course, I meant this on a conceptual level: hypothetically if the problem has all the subproblems/detriments included and all of them are solved then it's not a problem. Usually either or both of these are not the case.

But if a Detriment is missing Detriments, and there's disagreement about whether or not it's a concern, perhaps the author can't think of anything and they just delete it or change it to an Effect. That Detriment was not the core concern for the Topic, so it's not a big deal. Maybe there are other Detriments to justify the Problem.

I think you meant "Problem is missing Detriments". (If so:) if a problem has no subproblems or no (largely) unsolved subproblems then that doesn't mean it's invalid and/or should be deleted but that there's a greater likelihood something is missing or that the problem is solved/nonexistent. I think having a separate "Detriment" node type doesn't improve that part and having it be subproblems would standardize and simplify things more, e.g. in terms of Problem-solving mindset/structuring/thinking/activity, not sometimes-Problem-solving-sometimes-Detriment-addressing.

Maybe it would be good to put this into a separate discussion about the Effect node type.

Yeah that's a good idea, created https://github.com/amelioro/ameliorate/discussions/597 and put my further relevant responses there.
I also created https://github.com/amelioro/ameliorate/discussions/598 for discussing using Detriment vs subproblem, and put my further responses for that in there.

I think it would be best to have just the problem-type not an additional subproblem one (and if there's one then it could be set automatically in some way eg when a problem node is directly underneath another problem node).

Yeah this sounds good (no additional node type, but if there seems value it could be automatic).


Disable GPG Signing in Test Config

Your checklist for this pull request

[x] Ensure all commits include DCO sign-off.
[x] Ensure that your contributions pass unit testing.
[x] Ensure that your contributions contain documentation if applicable.

Description
If a user has GPG signing set to true in their global .gitconfig file, the test suite will fail. This is because the test suit now includes a check of a commit message (the test_commit_with_no_verify test in tests/units/test_lib.rb that was added by #454) but did not update the test config file. This commit updates the config file to set the gpgsign option to false.

@perlun @tarcinil @jcouball I'm pretty sure this PR is ready for review. Please let me know if there's anything additional I can add.

I tested this change and found that the test suite still fails if commit.gpgsign is set in my global config.  Here are the steps I took to test:

Ensure that gpgsign is not set in my global config

$ git config --global --unset commit.gpgsign

Checkout the master branch and run bundle

$ git clone https://github.com/ruby-git/ruby-git.git ruby-git-gpgsign
...
$ cd ruby-git-gpgsign
$ bundle
...
$

Run tests to see them pass

$ bundle exec rake test
...
122 tests, 486 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed
...
$

Set gpgsign to true in the global config

$ git config --global commit.gpgsign true
...
$

Run the tests again to see 27 errors:

$ bundle exec rake test
...
122 tests, 356 assertions, 1 failures, 27 errors, 0 pendings, 0 omissions, 0 notifications
77.0492% passed
...
$

checkout the PR branch

$ git fetch origin +refs/pull/467/merge
...
$ git checkout FETCH_HEAD
...
HEAD is now at e338a88 Merge 0c9cbcd9a8b352e44c4bf84bb483c6a19ee21233 into 861eb71e1c266606eefacf7ebd4bee4f34bee5de
$

Verify I have the right PR

$ cat tests/files/working/dot_git/config
[user]
	name = Scott Chacon
	email =<EMAIL_ADDRESS>[commit]
	gpgsign = false
[core]
	repositoryformatversion = 0
	filemode = true
	bare = false
	logallrefupdates = true
[gui]
	geometry = 986x682+365+124 211 500
[remote "working"]
	url = ../working.git
	fetch = +refs/heads/*:refs/remotes/working/*
$

Run the tests again to see that they all pass (they do not... there are 26 failures)

$ bundle exec rake test
...
122 tests, 358 assertions, 0 failures, 26 errors, 0 pendings, 0 omissions, 0 notifications
78.6885% passed
...
$

@jcouball Thanks for the quick response.
I'm not seeing the errors that you are seeing. My guess is that you're getting that result because you've enabled the commit.gpgsign option but don't have a GPG key set up. With my setup I can't cause 26 errors to occur but I can reproduce a single error if I remove the user.signingkey option from my ~/.gitconfig file:
/home/.../ruby-git/tests/units/test_tags.rb:11:in `test_tags'
/home/.../ruby-git/tests/test_helper.rb:53:in `in_temp_dir'
/home/.../ruby-git/tests/test_helper.rb:53:in `chdir'
/home/.../ruby-git/tests/test_helper.rb:54:in `block in in_temp_dir'
     25:         new_file('new_file', 'new content')
     26:       end
     27:       r1.add
  => 28:       r1.commit('my commit')
     29:       r1.add_tag('second')
     30:
     31:       assert(r1.tags.any?{|t| t.name == 'first'})
/home/.../ruby-git/tests/units/test_tags.rb:28:in `block in test_tags'
/home/.../ruby-git/lib/git/base.rb:293:in `commit'
/home/.../ruby-git/lib/git/lib.rb:575:in `commit'
/home/.../ruby-git/lib/git/lib.rb:989:in `command'
Error: test_tags(TestTags):
  Git::GitExecuteError: git '--git-dir=/tmp/git_test1587233407092/repo1/.git' '--work-tree=/tmp/git_test1587233407092/repo1' '-c' 'color.ui=false' commit '--message=my commit'  2>&1:error: gpg failed to sign the data
  fatal: failed to write commit object

That error goes away once I put the user.signingkey option back. I don't know if you want to go to the trouble of setting up a GPG key but there are instructions here on how to do so.

Ah, yes!  Your guess was spot on.  Once I set the signingkey, the errors disappeared.  Thank you for the explanation.
# not a real signing key, of course :)
$ git config --global user.signingkey F2C7AB29
$ bundle exec rake test
...
122 tests, 486 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed
...
$

@jcouball That's great! Thanks for the merge! :)


Impose some order in serialization and hashing functions

WrapWriteMessage/WrapReadMessage are redundant.
There should be union template declarations for template containers like

template<class T>
FastSerializer& operator<<(FastSerializer& file, const std::vector<T>& content);

Also rename hash to KvHash or something.

FastSerializer/FastDeserializer should be moved to kv namespace.
Is shouls be possible to use ::operators<</::operator>> as well  kv::operators<</kv::operator>> without errors (it will probably just work out of the box if the first one will be done).
hash should be made as  Hash function which will return kv::HashValue (#438)

#433 blocked by this one

Seems like done


Add possibility to display image statically

Hi.
Here is a implementation to add the possibility to display image statically.
By statically I mean we don't need to enable any element and we keep nothing on memory. This also means once the image was produced we can't change it (zoom, windowing etc...).
This is useful for previews for example.
I've also created an internal scaleTofit() function because there was already a code duplication on fitToWindow() and getDefaultViewport() and I didn't want to add a third duplication.
link to the example

+1. This is pretty useful.

On my list to review.. stay tumed


[CSClosure] Fix crash in fallthrough statement checking

fallthrough requires both source and destination case
"preambles" be type-checked before it could be validated,
which means that solution application for case statements
in a switch has to be split in two - preamble first and
bodies afterwards.
Resolves: https://github.com/apple/swift/issues/59035
Resolves: rdar://93796211

@swift-ci please test

@swift-ci please test source compatibility


Update README

Codecov Report

Merging #7 into master will not change coverage.
The diff coverage is n/a.

@@            Coverage Diff            @@
##            master        #7   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files            3         3
  Lines           64        64
  Branches        16        16
=========================================
  Hits            64        64

Continue to review full report at Codecov.

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


Slow builds.

Waiting for a build to run and fail after 30 minutes just to fix a flake8 Error after is annoying.

Moving all open issues into rancherio/rancher.
https://github.com/rancherio/rancher/issues/334


Ben: Bigger Buttons

Name
Type
OS
Browser

Ben

Linux
Chrome

Description: Please consider making the buttons ins the to right bigger.

State URL
n/a

Sometime in the future, textual buttons will be replaced with a more robust button system that would probably user scalable.


KeyError: 'img_metas'

Hello!
This commit https://github.com/Turoad/lanedet/commit/d36ba736d0b30574563e4e7b39e86516cb75b1c5 can fix this issue.
the latest code has included the above submission. This prompt still appears when running culane
Traceback (most recent call last):
File "main.py", line 65, in
main()
File "main.py", line 35, in main
runner.train()
File "/data4/xuzheng/lanedet/lanedet/engine/runner.py", line 94, in train
self.train_epoch(epoch, train_loader)
File "/data4/xuzheng/lanedet/lanedet/engine/runner.py", line 67, in train_epoch
output = self.net(data)
File "/root/anaconda3/envs/test/lib/python3.8/site-packages/torch/nn/modules/module.py", line 889, in _call_impl
result = self.forward(*input, **kwargs)
File "/root/anaconda3/envs/test/lib/python3.8/site-packages/torch/nn/parallel/data_parallel.py", line 165, in forward
return self.module(*inputs[0], **kwargs[0])
File "/root/anaconda3/envs/test/lib/python3.8/site-packages/torch/nn/modules/module.py", line 889, in _call_impl
result = self.forward(*input, **kwargs)
File "/data4/xuzheng/lanedet/lanedet/models/nets/detector.py", line 32, in forward
out = self.heads(fea, batch=batch)
File "/root/anaconda3/envs/test/lib/python3.8/site-packages/torch/nn/modules/module.py", line 889, in _call_impl
result = self.forward(*input, **kwargs)
File "/data4/xuzheng/lanedet/lanedet/models/heads/condlane.py", line 1012, in forward
return self.forward_train(x_list, kwargs['batch'])
File "/data4/xuzheng/lanedet/lanedet/models/heads/condlane.py", line 868, in forward_train
img_metas = batch['img_metas']
KeyError: 'img_metas'

Using configs/condlane/resnet101_culane.py

Thanks. It's fixed by this commit: 95c06c2c5e73ef1a666fb5596e69e2d61af79b83.

Thank you. You have successfully started training.


rails-head superclass mismatch

Hello,
since this commit: https://github.com/rails/rails/commit/5766539342426e956980bf6f54ef99600cbfc33e
I get:
/Users/kain/.rvm/gems/ruby-1.9.3-preview1@audiobox/bundler/gems/database_cleaner-7f477031e9c2/lib/database_cleaner/active_record/truncation.rb:41:in `<module:ConnectionAdapters>': superclass mismatch for class Mysql2Adapter (TypeError)
from /Users/kain/.rvm/gems/ruby-1.9.3-preview1@audiobox/bundler/gems/database_cleaner-7f477031e9c2/lib/database_cleaner/active_record/truncation.rb:7:in `<module:ActiveRecord>'
from /Users/kain/.rvm/gems/ruby-1.9.3-preview1@audiobox/bundler/gems/database_cleaner-7f477031e9c2/lib/database_cleaner/active_record/truncation.rb:6:in `<top (required)>'
from /Users/kain/.rvm/gems/ruby-1.9.3-preview1@audiobox/bundler/gems/rails-92619e4f78e9/activesupport/lib/active_support/dependencies.rb:239:in `require'
from /Users/kain/.rvm/gems/ruby-1.9.3-preview1@audiobox/bundler/gems/rails-92619e4f78e9/activesupport/lib/active_support/dependencies.rb:239:in `block in require'
from /Users/kain/.rvm/gems/ruby-1.9.3-preview1@audiobox/bundler/gems/rails-92619e4f78e9/activesupport/lib/active_support/dependencies.rb:224:in `load_dependency'
from /Users/kain/.rvm/gems/ruby-1.9.3-preview1@audiobox/bundler/gems/rails-92619e4f78e9/activesupport/lib/active_support/dependencies.rb:239:in `require'
from /Users/kain/.rvm/gems/ruby-1.9.3-preview1@audiobox/bundler/gems/database_cleaner-7f477031e9c2/lib/database_cleaner/base.rb:98:in `orm_strategy'
from /Users/kain/.rvm/gems/ruby-1.9.3-preview1@audiobox/bundler/gems/database_cleaner-7f477031e9c2/lib/database_cleaner/base.rb:34:in `create_strategy'
from /Users/kain/.rvm/gems/ruby-1.9.3-preview1@audiobox/bundler/gems/database_cleaner-7f477031e9c2/lib/database_cleaner/base.rb:38:in `clean_with'
from /Users/kain/.rvm/gems/ruby-1.9.3-preview1@audiobox/bundler/gems/database_cleaner-7f477031e9c2/lib/database_cleaner/configuration.rb:62:in `block in clean_with'
from /Users/kain/.rvm/gems/ruby-1.9.3-preview1@audiobox/bundler/gems/database_cleaner-7f477031e9c2/lib/database_cleaner/configuration.rb:62:in `each'
from /Users/kain/.rvm/gems/ruby-1.9.3-preview1@audiobox/bundler/gems/database_cleaner-7f477031e9c2/lib/database_cleaner/configuration.rb:62:in `clean_with'

This also happens with the freshly released 3.2 Beta

Confirmed on rails 3.2.rc1

Same here on 3.2.0.rc2

This is fixed by https://github.com/bmabey/database_cleaner/commit/3ccc9a8767e84e9fcde979ed2a759c28e45829ed at least for us