Infracost usage file error

Hello,
I don't really know if it's a bug or not but when I sync the ressource usage file I am facing some issues.
Here is the log file i had when launching the command:
Syncing usage file for mkp-hpr mkp-rec2
Evaluating Terraform directory at /wspace/az-tf/infra/zones/azure/mkp-rec2
Project: /infra-cloud/april-gitops-infra-mkp/zones/azure/mkp-rec2

Errors:
  Error generating usage file:
    Error loading usage file:
      Error loading usage file:
        Error parsing usage YAML:
          yaml:
            line 4:
              did not find expected key

 OVERALL TOTAL       $0.00
──────────────────────────────────
No cloud resources were detected

My usage file is the following
# You can use this file to define resource usage estimates for Infracost to use when calculating
# the cost of usage-based resource, such as AWS S3 or Lambda.
# `infracost breakdown --usage-file infracost-usage.yml [other flags]`
# See https://infracost.io/usage-file/ for docs
version: 0.1
# resource_type_default_usage:
  ##
  ## The following usage values apply to each resource of the given type, which is useful when you want to define defaults.
  ## All values are commented-out, you can uncomment resource types and customize as needed.
  ##
  # azurerm_application_gateway:
    # monthly_data_processed_gb: 0 #  Monthly data processed by the Application Gateway in GB.
    # monthly_v2_capacity_units: 0 # Number capacity(for v2) units gateway.
  # azurerm_application_insights:
    # monthly_data_ingested_gb: 0.0 # Monthly amount of data ingested in GB.
  # azurerm_automation_account:
    # non_azure_config_node_count: 0 # Number of non-Azure configuration nodes.
    # monthly_watcher_hrs: 0 # Monthly number of watcher hours.
    # monthly_job_run_mins: 0 # Monthly number of job run minutes.
  # azurerm_automation_job_schedule:
    # monthly_job_run_mins: 0 # Monthly number of job run minutes.
  # azurerm_key_vault_certificate:
    # monthly_certificate_renewal_requests: 0 # Monthly number of certificate renewal requests.
    # monthly_certificate_other_operations: 0 # Monthly number of non-renewal certificate operations.
  # azurerm_log_analytics_workspace:
    # monthly_log_data_ingestion_gb: 0.0 # Monthly log data ingested by the workspace in GB (only used for Pay-as-you-go workspaces).
    # monthly_additional_log_data_retention_gb: 0.0 # Monthly additional GB of data retained past the free allowance.
    # monthly_log_data_export_gb: 0.0 # Monthly data in GB exported from the workspace.
    # monthly_sentinel_data_ingestion_gb: 0.0 # Monthly data in GB exported from Microsoft Sentinel, this only applies when it is enabled.
    # monthly_basic_log_data_ingestion_gb: 0.0 # Monthly data ingested by the workspace to basic tables in GB
    # monthly_basic_log_search_gb: 0.0 # Monthly basic log data queried in GB
    # monthly_archive_data_gb: 0 # Monthly archived data in GB
    # monthly_archive_data_restored_gb: 0 # Monthly data restored from archive in GB
    # monthly_archive_data_searched_gb: 0 # Monthly data searched in archive with a Search Job, in GB
    # monthly_archived_data_gb: 0.0
    # monthly_archived_data_restored_gb: 0.0
    # monthly_archived_data_searched_gb: 0.0
  # azurerm_monitor_action_group:
    # monthly_notifications: 0
  # azurerm_monitor_diagnostic_setting:
    # monthly_platform_log_gb: 0
  # azurerm_mssql_database:
    # monthly_vcore_hours: 0 # Monthly number of used vCore-hours for serverless compute.
    # long_term_retention_storage_gb: 0 # Number of GBs used by long-term retention backup storage.
    # backup_storage_gb: 0 # Number of GBs used by Point-In-Time Restore (PITR) backup storage.
    # extra_data_storage_gb: 0.0 # Override number of GBs used by extra data storage.
  # azurerm_private_dns_a_record:
    # monthly_queries: 0 # Monthly number of DNS queries
  # azurerm_private_endpoint:
    # monthly_inbound_data_processed_gb: 0 # Monthly inbound data processed in GB.
    # monthly_outbound_data_processed_gb: 0 # Monthly outbound data processed in GB.
  # azurerm_recovery_services_vault:
    # azurerm_backup_protected_vm.my_vm:
      # disk_utilization_gb: 0 # Total size in GB of the data that will be backed up into the recovery service vault. Defaults to the entire storage capacity of the VM.
      # additional_backup_retention_gb: 0 # Total size in GB of the additional data stored by this VM because of retention rules.
  # azurerm_storage_account:
    # data_at_rest_storage_gb: 0.0 # Total size of Data at Rest in GB (File storage).
    # early_deletion_gb: 0.0 # Total size of Early deletion data in GB.
    # snapshots_storage_gb: 0.0 # Total size of Snapshots in GB (File storage).
    # metadata_at_rest_storage_gb: 0.0 # Total size of Metadata in GB (File storage).
    # storage_gb: 0.0 # Total size of storage in GB.
    # monthly_iterative_write_operations: 0 # Monthly number of Iterative write operations (GPv2).
    # monthly_write_operations: 0 # Monthly number of Write operations.
    # monthly_list_and_create_container_operations: 0 # Monthly number of List and Create Container operations.
    # monthly_iterative_read_operations: 0 # Monthly number of Iterative read operations (GPv2).
    # monthly_read_operations: 0 # Monthly number of Read operations.
    # monthly_other_operations: 0 # Monthly number of All other operations.
    # monthly_data_retrieval_gb: 0.0 # Monthly number of data retrieval in GB.
    # monthly_data_write_gb: 0.0 # Monthly number of data write in GB.
    # blob_index_tags: 0 # Total number of Blob indexes.
  # azurerm_storage_share:
    # storage_gb: 0.0 # Total size of storage in GB. Overrides any provided `quota`.
    # monthly_write_operations: 0 # Monthly number of Write operations.
    # monthly_list_operations: 0 # Monthly number of List and Create Container operations.
    # monthly_read_operations: 0 # Monthly number of Read operations.
    # monthly_other_operations: 0 # Monthly number of All other operations.
    # monthly_data_retrieval_gb: 0.0 # Monthly number of data retrieval in GB.
    # snapshots_storage_gb: 0.0 # Total size of Snapshots in GB
    # metadata_at_rest_storage_gb: 0.0 # Total size of Metadata in GB
# resource_usage:
  ##
  ## The following usage values apply to individual resources and override any value defined in the resource_type_default_usage section.
  ## All values are commented-out, you can uncomment resources and customize as needed.
  ##
  # module.application_gateway.azurerm_key_vault_certificate.app_gateway_certificates["wildcardaprilonfr2023GO2CLOUD"]:
    # monthly_certificate_renewal_requests: 0 # Monthly number of certificate renewal requests.
    # monthly_certificate_other_operations: 0 # Monthly number of non-renewal certificate operations.
  # module.application_gateway.azurerm_key_vault_certificate.app_gateway_certificates["wildcarddigitalinternecloudapril"]:
    # monthly_certificate_renewal_requests: 0 # Monthly number of certificate renewal requests.
    # monthly_certificate_other_operations: 0 # Monthly number of non-renewal certificate operations.
  # module.application_gateway.azurerm_key_vault_certificate.app_gateway_certificates["wildcardmonprojetaprilfr2023GO2CLOUD"]:
    # monthly_certificate_renewal_requests: 0 # Monthly number of certificate renewal requests.
    # monthly_certificate_other_operations: 0 # Monthly number of non-renewal certificate operations.
  # module.application_gateway.azurerm_private_dns_a_record.private_dns_zone_record_application_digital["asp-conn"]:
    # monthly_queries: 0 # Monthly number of DNS queries
  # module.application_gateway.azurerm_private_dns_a_record.private_dns_zone_record_application_digital["authentication-srv"]:
    # monthly_queries: 0 # Monthly number of DNS queries
  # module.application_gateway.azurerm_private_dns_a_record.private_dns_zone_record_application_digital["backend-aon"]:
    # monthly_queries: 0 # Monthly number of DNS queries
  ? # module.application_gateway.azurerm_private_dns_a_record.private_dns_zone_record_application_digital["backoffice-gateway-srv"]
  : # monthly_queries: 0 # Monthly number of DNS queries
  # module.application_gateway.azurerm_private_dns_a_record.private_dns_zone_record_application_digital["bolegacy"]:
    # monthly_queries: 0 # Monthly number of DNS queries
  # module.application_gateway.azurerm_private_dns_a_record.private_dns_zone_record_application_digital["bomiddle"]:
    # monthly_queries: 0 # Monthly number of DNS queries
  # module.application_gateway.azurerm_private_dns_a_record.private_dns_zone_record_application_digital["broker-srv"]:
    # monthly_queries: 0 # Monthly number of DNS queries
  # module.application_gateway.azurerm_private_dns_a_record.private_dns_zone_record_application_digital["business-gateway-srv"]:
    # monthly_queries: 0 # Monthly number of DNS queries
  # module.application_gateway.azurerm_private_dns_a_record.private_dns_zone_record_application_digital["callback-srv"]:
    # monthly_queries: 0 # Monthly number of DNS queries
  # module.application_gateway.azurerm_private_dns_a_record.private_dns_zone_record_application_digital["catalog-srv"]:
    # monthly_queries: 0 # Monthly number of DNS queries
  # module.application_gateway.azurerm_private_dns_a_record.private_dns_zone_record_application_digital["cloud-admin-srv"]:
    # monthly_queries: 0 # Monthly number of DNS queries
  # module.application_gateway.azurerm_private_dns_a_record.private_dns_zone_record_application_digital["cloud-gateway-srv"]:
    # monthly_queries: 0 # Monthly number of DNS queries
  # module.application_gateway.azurerm_private_dns_a_record.private_dns_zone_record_application_digital["cloud-registry-srv"]:
    # monthly_queries: 0 # Monthly number of DNS queries
  ? # module.application_gateway.azurerm_private_dns_a_record.private_dns_zone_record_application_digital["commercial-opportunity-srv"]
  : # monthly_queries: 0 # Monthly number of DNS queries
  # module.application_gateway.azurerm_private_dns_a_record.private_dns_zone_record_application_digital["comparator-srv"]:
    # monthly_queries: 0 # Monthly number of DNS queries
  ? # module.application_gateway.azurerm_private_dns_a_record.private_dns_zone_record_application_digital["data-asset-management-srv"]
  : # monthly_queries: 0 # Monthly number of DNS queries
  # module.application_gateway.azurerm_private_dns_a_record.private_dns_zone_record_application_digital["data-events-srv"]:
    # monthly_queries: 0 # Monthly number of DNS queries
  # module.application_gateway.azurerm_private_dns_a_record.private_dns_zone_record_application_digital["editing-srv"]:
    # monthly_queries: 0 # Monthly number of DNS queries
  ? # module.application_gateway.azurerm_private_dns_a_record.private_dns_zone_record_application_digital["eselection-content-srv"]
  : # monthly_queries: 0 # Monthly number of DNS queries
  # module.application_gateway.azurerm_private_dns_a_record.private_dns_zone_record_application_digital["message-srv"]:
    # monthly_queries: 0 # Monthly number of DNS queries
  # module.application_gateway.azurerm_private_dns_a_record.private_dns_zone_record_application_digital["needs-srv"]:
    # monthly_queries: 0 # Monthly number of DNS queries
  # module.application_gateway.azurerm_private_dns_a_record.private_dns_zone_record_application_digital["orchestrator-srv"]:
    # monthly_queries: 0 # Monthly number of DNS queries
  # module.application_gateway.azurerm_private_dns_a_record.private_dns_zone_record_application_digital["order-repository-srv"]:
    # monthly_queries: 0 # Monthly number of DNS queries
  # module.application_gateway.azurerm_private_dns_a_record.private_dns_zone_record_application_digital["pega-conn"]:
    # monthly_queries: 0 # Monthly number of DNS queries
  # module.application_gateway.azurerm_private_dns_a_record.private_dns_zone_record_application_digital["post-subscription-srv"]:
    # monthly_queries: 0 # Monthly number of DNS queries
  # module.application_gateway.azurerm_private_dns_a_record.private_dns_zone_record_application_digital["rabbitmq"]:
    # monthly_queries: 0 # Monthly number of DNS queries
  # module.application_gateway.azurerm_private_dns_a_record.private_dns_zone_record_application_digital["signature-srv"]:
    # monthly_queries: 0 # Monthly number of DNS queries
  # module.application_gateway.azurerm_private_dns_a_record.private_dns_zone_record_application_digital["subscription-srv"]:
    # monthly_queries: 0 # Monthly number of DNS queries
  # module.rabbitmq.azurerm_storage_share.storage_share["rabbitmq-data"]:
    # storage_gb: 0.0 # Total size of storage in GB. Overrides any provided `quota`.
    # monthly_write_operations: 0 # Monthly number of Write operations.
    # monthly_list_operations: 0 # Monthly number of List and Create Container operations.
    # monthly_read_operations: 0 # Monthly number of Read operations.
    # monthly_other_operations: 0 # Monthly number of All other operations.
    # monthly_data_retrieval_gb: 0.0 # Monthly number of data retrieval in GB.
    # snapshots_storage_gb: 0.0 # Total size of Snapshots in GB
    # metadata_at_rest_storage_gb: 0.0 # Total size of Metadata in GB
  # module.rabbitmq.azurerm_storage_share.storage_share["rabbitmq-logs"]:
    # storage_gb: 0.0 # Total size of storage in GB. Overrides any provided `quota`.
    # monthly_write_operations: 0 # Monthly number of Write operations.
    # monthly_list_operations: 0 # Monthly number of List and Create Container operations.
    # monthly_read_operations: 0 # Monthly number of Read operations.
    # monthly_other_operations: 0 # Monthly number of All other operations.
    # monthly_data_retrieval_gb: 0.0 # Monthly number of data retrieval in GB.
    # snapshots_storage_gb: 0.0 # Total size of Snapshots in GB
    # metadata_at_rest_storage_gb: 0.0 # Total size of Metadata in GB
  # module.sqldatabases.azurerm_mssql_database.databases["orchestrator"]:
    # monthly_vcore_hours: 0 # Monthly number of used vCore-hours for serverless compute.
    # long_term_retention_storage_gb: 0 # Number of GBs used by long-term retention backup storage.
    # backup_storage_gb: 0 # Number of GBs used by Point-In-Time Restore (PITR) backup storage.
    # extra_data_storage_gb: 0.0 # Override number of GBs used by extra data storage.
  # module.sqldatabases.azurerm_mssql_database.databases["signature"]:
    # monthly_vcore_hours: 0 # Monthly number of used vCore-hours for serverless compute.
    # long_term_retention_storage_gb: 0 # Number of GBs used by long-term retention backup storage.
    # backup_storage_gb: 0 # Number of GBs used by Point-In-Time Restore (PITR) backup storage.
    # extra_data_storage_gb: 0.0 # Override number of GBs used by extra data storage.
  # module.storage_account_application.azurerm_monitor_diagnostic_setting.diagnostics_settings["applis"]:
    # monthly_platform_log_gb: 0
  # module.storage_account_application.azurerm_private_dns_a_record.private_dns_zone_record_fileshare_atehub_a["applis"]:
    # monthly_queries: 0 # Monthly number of DNS queries
  # module.storage_account_application.azurerm_private_endpoint.fileshare_private_endpoint["applis"]:
    # monthly_inbound_data_processed_gb: 0 # Monthly inbound data processed in GB.
    # monthly_outbound_data_processed_gb: 0 # Monthly outbound data processed in GB.
  # module.storage_account_application.azurerm_storage_account.storage_accounts["applis"]:
    # data_at_rest_storage_gb: 0.0 # Total size of Data at Rest in GB (File storage).
    # early_deletion_gb: 0.0 # Total size of Early deletion data in GB.
    # snapshots_storage_gb: 0.0 # Total size of Snapshots in GB (File storage).
    # metadata_at_rest_storage_gb: 0.0 # Total size of Metadata in GB (File storage).
    # storage_gb: 0.0 # Total size of storage in GB.
    # monthly_iterative_write_operations: 0 # Monthly number of Iterative write operations (GPv2).
    # monthly_write_operations: 0 # Monthly number of Write operations.
    # monthly_list_and_create_container_operations: 0 # Monthly number of List and Create Container operations.
    # monthly_iterative_read_operations: 0 # Monthly number of Iterative read operations (GPv2).
    # monthly_read_operations: 0 # Monthly number of Read operations.
    # monthly_other_operations: 0 # Monthly number of All other operations.
    # monthly_data_retrieval_gb: 0.0 # Monthly number of data retrieval in GB.
    # monthly_data_write_gb: 0.0 # Monthly number of data write in GB.
    # blob_index_tags: 0 # Total number of Blob indexes.
  # module.storage_account_application.azurerm_storage_share.fileshare["applis-aon-datas"]:
    # storage_gb: 0.0 # Total size of storage in GB. Overrides any provided `quota`.
    # monthly_write_operations: 0 # Monthly number of Write operations.
    # monthly_list_operations: 0 # Monthly number of List and Create Container operations.
    # monthly_read_operations: 0 # Monthly number of Read operations.
    # monthly_other_operations: 0 # Monthly number of All other operations.
    # monthly_data_retrieval_gb: 0.0 # Monthly number of data retrieval in GB.
    # snapshots_storage_gb: 0.0 # Total size of Snapshots in GB
    # metadata_at_rest_storage_gb: 0.0 # Total size of Metadata in GB
  # module.storage_account_application.azurerm_storage_share.fileshare["applis-dam-medias-priv"]:
    # storage_gb: 0.0 # Total size of storage in GB. Overrides any provided `quota`.
    # monthly_write_operations: 0 # Monthly number of Write operations.
    # monthly_list_operations: 0 # Monthly number of List and Create Container operations.
    # monthly_read_operations: 0 # Monthly number of Read operations.
    # monthly_other_operations: 0 # Monthly number of All other operations.
    # monthly_data_retrieval_gb: 0.0 # Monthly number of data retrieval in GB.
    # snapshots_storage_gb: 0.0 # Total size of Snapshots in GB
    # metadata_at_rest_storage_gb: 0.0 # Total size of Metadata in GB
  # module.storage_account_application.azurerm_storage_share.fileshare["applis-dam-medias-pub"]:
    # storage_gb: 0.0 # Total size of storage in GB. Overrides any provided `quota`.
    # monthly_write_operations: 0 # Monthly number of Write operations.
    # monthly_list_operations: 0 # Monthly number of List and Create Container operations.
    # monthly_read_operations: 0 # Monthly number of Read operations.
    # monthly_other_operations: 0 # Monthly number of All other operations.
    # monthly_data_retrieval_gb: 0.0 # Monthly number of data retrieval in GB.
    # snapshots_storage_gb: 0.0 # Total size of Snapshots in GB
    # metadata_at_rest_storage_gb: 0.0 # Total size of Metadata in GB
  # module.storage_account_application.azurerm_storage_share.fileshare["applis-fonts"]:
    # storage_gb: 0.0 # Total size of storage in GB. Overrides any provided `quota`.
    # monthly_write_operations: 0 # Monthly number of Write operations.
    # monthly_list_operations: 0 # Monthly number of List and Create Container operations.
    # monthly_read_operations: 0 # Monthly number of Read operations.
    # monthly_other_operations: 0 # Monthly number of All other operations.
    # monthly_data_retrieval_gb: 0.0 # Monthly number of data retrieval in GB.
    # snapshots_storage_gb: 0.0 # Total size of Snapshots in GB
    # metadata_at_rest_storage_gb: 0.0 # Total size of Metadata in GB
  # module.storage_account_application.azurerm_storage_share.fileshare["applis-heap-dumps"]:
    # storage_gb: 0.0 # Total size of storage in GB. Overrides any provided `quota`.
    # monthly_write_operations: 0 # Monthly number of Write operations.
    # monthly_list_operations: 0 # Monthly number of List and Create Container operations.
    # monthly_read_operations: 0 # Monthly number of Read operations.
    # monthly_other_operations: 0 # Monthly number of All other operations.
    # monthly_data_retrieval_gb: 0.0 # Monthly number of data retrieval in GB.
    # snapshots_storage_gb: 0.0 # Total size of Snapshots in GB
    # metadata_at_rest_storage_gb: 0.0 # Total size of Metadata in GB
  # module.storage_account_application.azurerm_storage_share.fileshare["applis-logs"]:
    # storage_gb: 0.0 # Total size of storage in GB. Overrides any provided `quota`.
    # monthly_write_operations: 0 # Monthly number of Write operations.
    # monthly_list_operations: 0 # Monthly number of List and Create Container operations.
    # monthly_read_operations: 0 # Monthly number of Read operations.
    # monthly_other_operations: 0 # Monthly number of All other operations.
    # monthly_data_retrieval_gb: 0.0 # Monthly number of data retrieval in GB.
    # snapshots_storage_gb: 0.0 # Total size of Snapshots in GB
    # metadata_at_rest_storage_gb: 0.0 # Total size of Metadata in GB
  # module.storage_account_application.azurerm_storage_share.fileshare["applis-settings"]:
    # storage_gb: 0.0 # Total size of storage in GB. Overrides any provided `quota`.
    # monthly_write_operations: 0 # Monthly number of Write operations.
    # monthly_list_operations: 0 # Monthly number of List and Create Container operations.
    # monthly_read_operations: 0 # Monthly number of Read operations.
    # monthly_other_operations: 0 # Monthly number of All other operations.
    # monthly_data_retrieval_gb: 0.0 # Monthly number of data retrieval in GB.
    # snapshots_storage_gb: 0.0 # Total size of Snapshots in GB
    # metadata_at_rest_storage_gb: 0.0 # Total size of Metadata in GB
  # module.storage_account_websites.azurerm_monitor_diagnostic_setting.diagnostics_settings["aon"]:
    # monthly_platform_log_gb: 0
  # module.storage_account_websites.azurerm_monitor_diagnostic_setting.diagnostics_settings["bolegacy"]:
    # monthly_platform_log_gb: 0
  # module.storage_account_websites.azurerm_monitor_diagnostic_setting.diagnostics_settings["bomiddle"]:
    # monthly_platform_log_gb: 0
  # module.storage_account_websites.azurerm_monitor_diagnostic_setting.diagnostics_settings["eespace"]:
    # monthly_platform_log_gb: 0
  # module.storage_account_websites.azurerm_monitor_diagnostic_setting.diagnostics_settings["pex"]:
    # monthly_platform_log_gb: 0
  # module.storage_account_websites.azurerm_private_dns_a_record.private_dns_zone_record_blob_atehub_a["aon"]:
    # monthly_queries: 0 # Monthly number of DNS queries
  # module.storage_account_websites.azurerm_private_dns_a_record.private_dns_zone_record_blob_atehub_a["bolegacy"]:
    # monthly_queries: 0 # Monthly number of DNS queries
  # module.storage_account_websites.azurerm_private_dns_a_record.private_dns_zone_record_blob_atehub_a["bomiddle"]:
    # monthly_queries: 0 # Monthly number of DNS queries
  # module.storage_account_websites.azurerm_private_dns_a_record.private_dns_zone_record_blob_atehub_a["eespace"]:
    # monthly_queries: 0 # Monthly number of DNS queries
  # module.storage_account_websites.azurerm_private_dns_a_record.private_dns_zone_record_blob_atehub_a["pex"]:
    # monthly_queries: 0 # Monthly number of DNS queries
  # module.storage_account_websites.azurerm_private_endpoint.blob_private_endpoint["aon"]:
    # monthly_inbound_data_processed_gb: 0 # Monthly inbound data processed in GB.
    # monthly_outbound_data_processed_gb: 0 # Monthly outbound data processed in GB.
  # module.storage_account_websites.azurerm_private_endpoint.blob_private_endpoint["bolegacy"]:
    # monthly_inbound_data_processed_gb: 0 # Monthly inbound data processed in GB.
    # monthly_outbound_data_processed_gb: 0 # Monthly outbound data processed in GB.
  # module.storage_account_websites.azurerm_private_endpoint.blob_private_endpoint["bomiddle"]:
    # monthly_inbound_data_processed_gb: 0 # Monthly inbound data processed in GB.
    # monthly_outbound_data_processed_gb: 0 # Monthly outbound data processed in GB.
  # module.storage_account_websites.azurerm_private_endpoint.blob_private_endpoint["eespace"]:
    # monthly_inbound_data_processed_gb: 0 # Monthly inbound data processed in GB.
    # monthly_outbound_data_processed_gb: 0 # Monthly outbound data processed in GB.
  # module.storage_account_websites.azurerm_private_endpoint.blob_private_endpoint["pex"]:
    # monthly_inbound_data_processed_gb: 0 # Monthly inbound data processed in GB.
    # monthly_outbound_data_processed_gb: 0 # Monthly outbound data processed in GB.
  # module.storage_account_websites.azurerm_storage_account.storage_accounts["aon"]:
    # data_at_rest_storage_gb: 0.0 # Total size of Data at Rest in GB (File storage).
    # early_deletion_gb: 0.0 # Total size of Early deletion data in GB.
    # snapshots_storage_gb: 0.0 # Total size of Snapshots in GB (File storage).
    # metadata_at_rest_storage_gb: 0.0 # Total size of Metadata in GB (File storage).
    # storage_gb: 0.0 # Total size of storage in GB.
    # monthly_iterative_write_operations: 0 # Monthly number of Iterative write operations (GPv2).
    # monthly_write_operations: 0 # Monthly number of Write operations.
    # monthly_list_and_create_container_operations: 0 # Monthly number of List and Create Container operations.
    # monthly_iterative_read_operations: 0 # Monthly number of Iterative read operations (GPv2).
    # monthly_read_operations: 0 # Monthly number of Read operations.
    # monthly_other_operations: 0 # Monthly number of All other operations.
    # monthly_data_retrieval_gb: 0.0 # Monthly number of data retrieval in GB.
    # monthly_data_write_gb: 0.0 # Monthly number of data write in GB.
    # blob_index_tags: 0 # Total number of Blob indexes.
  # module.storage_account_websites.azurerm_storage_account.storage_accounts["bolegacy"]:
    # data_at_rest_storage_gb: 0.0 # Total size of Data at Rest in GB (File storage).
    # early_deletion_gb: 0.0 # Total size of Early deletion data in GB.
    # snapshots_storage_gb: 0.0 # Total size of Snapshots in GB (File storage).
    # metadata_at_rest_storage_gb: 0.0 # Total size of Metadata in GB (File storage).
    # storage_gb: 0.0 # Total size of storage in GB.
    # monthly_iterative_write_operations: 0 # Monthly number of Iterative write operations (GPv2).
    # monthly_write_operations: 0 # Monthly number of Write operations.
    # monthly_list_and_create_container_operations: 0 # Monthly number of List and Create Container operations.
    # monthly_iterative_read_operations: 0 # Monthly number of Iterative read operations (GPv2).
    # monthly_read_operations: 0 # Monthly number of Read operations.
    # monthly_other_operations: 0 # Monthly number of All other operations.
    # monthly_data_retrieval_gb: 0.0 # Monthly number of data retrieval in GB.
    # monthly_data_write_gb: 0.0 # Monthly number of data write in GB.
    # blob_index_tags: 0 # Total number of Blob indexes.
  # module.storage_account_websites.azurerm_storage_account.storage_accounts["bomiddle"]:
    # data_at_rest_storage_gb: 0.0 # Total size of Data at Rest in GB (File storage).
    # early_deletion_gb: 0.0 # Total size of Early deletion data in GB.
    # snapshots_storage_gb: 0.0 # Total size of Snapshots in GB (File storage).
    # metadata_at_rest_storage_gb: 0.0 # Total size of Metadata in GB (File storage).
    # storage_gb: 0.0 # Total size of storage in GB.
    # monthly_iterative_write_operations: 0 # Monthly number of Iterative write operations (GPv2).
    # monthly_write_operations: 0 # Monthly number of Write operations.
    # monthly_list_and_create_container_operations: 0 # Monthly number of List and Create Container operations.
    # monthly_iterative_read_operations: 0 # Monthly number of Iterative read operations (GPv2).
    # monthly_read_operations: 0 # Monthly number of Read operations.
    # monthly_other_operations: 0 # Monthly number of All other operations.
    # monthly_data_retrieval_gb: 0.0 # Monthly number of data retrieval in GB.
    # monthly_data_write_gb: 0.0 # Monthly number of data write in GB.
    # blob_index_tags: 0 # Total number of Blob indexes.
  # module.storage_account_websites.azurerm_storage_account.storage_accounts["eespace"]:
    # data_at_rest_storage_gb: 0.0 # Total size of Data at Rest in GB (File storage).
    # early_deletion_gb: 0.0 # Total size of Early deletion data in GB.
    # snapshots_storage_gb: 0.0 # Total size of Snapshots in GB (File storage).
    # metadata_at_rest_storage_gb: 0.0 # Total size of Metadata in GB (File storage).
    # storage_gb: 0.0 # Total size of storage in GB.
    # monthly_iterative_write_operations: 0 # Monthly number of Iterative write operations (GPv2).
    # monthly_write_operations: 0 # Monthly number of Write operations.
    # monthly_list_and_create_container_operations: 0 # Monthly number of List and Create Container operations.
    # monthly_iterative_read_operations: 0 # Monthly number of Iterative read operations (GPv2).
    # monthly_read_operations: 0 # Monthly number of Read operations.
    # monthly_other_operations: 0 # Monthly number of All other operations.
    # monthly_data_retrieval_gb: 0.0 # Monthly number of data retrieval in GB.
    # monthly_data_write_gb: 0.0 # Monthly number of data write in GB.
    # blob_index_tags: 0 # Total number of Blob indexes.
  # module.storage_account_websites.azurerm_storage_account.storage_accounts["pex"]:
    # data_at_rest_storage_gb: 0.0 # Total size of Data at Rest in GB (File storage).
    # early_deletion_gb: 0.0 # Total size of Early deletion data in GB.
    # snapshots_storage_gb: 0.0 # Total size of Snapshots in GB (File storage).
    # metadata_at_rest_storage_gb: 0.0 # Total size of Metadata in GB (File storage).
    # storage_gb: 0.0 # Total size of storage in GB.
    # monthly_iterative_write_operations: 0 # Monthly number of Iterative write operations (GPv2).
    # monthly_write_operations: 0 # Monthly number of Write operations.
    # monthly_list_and_create_container_operations: 0 # Monthly number of List and Create Container operations.
    # monthly_iterative_read_operations: 0 # Monthly number of Iterative read operations (GPv2).
    # monthly_read_operations: 0 # Monthly number of Read operations.
    # monthly_other_operations: 0 # Monthly number of All other operations.
    # monthly_data_retrieval_gb: 0.0 # Monthly number of data retrieval in GB.
    # monthly_data_write_gb: 0.0 # Monthly number of data write in GB.
    # blob_index_tags: 0 # Total number of Blob indexes.
  # azurerm_automation_account.management_automation_account:
    # non_azure_config_node_count: 0 # Number of non-Azure configuration nodes.
    # monthly_watcher_hrs: 0 # Monthly number of watcher hours.
    # monthly_job_run_mins: 0 # Monthly number of job run minutes.
  # azurerm_automation_job_schedule.start_application_gateway_job_schedule:
    # monthly_job_run_mins: 0 # Monthly number of job run minutes.
  # azurerm_automation_job_schedule.stop_application_gateway_job_schedule:
    # monthly_job_run_mins: 0 # Monthly number of job run minutes.
  # azurerm_log_analytics_workspace.management_mkp_law:
    # monthly_log_data_ingestion_gb: 0.0 # Monthly log data ingested by the workspace in GB (only used for Pay-as-you-go workspaces).
    # monthly_additional_log_data_retention_gb: 0.0 # Monthly additional GB of data retained past the free allowance.
    # monthly_log_data_export_gb: 0.0 # Monthly data in GB exported from the workspace.
    # monthly_sentinel_data_ingestion_gb: 0.0 # Monthly data in GB exported from Microsoft Sentinel, this only applies when it is enabled.
    # monthly_basic_log_data_ingestion_gb: 0.0 # Monthly data ingested by the workspace to basic tables in GB
    # monthly_basic_log_search_gb: 0.0 # Monthly basic log data queried in GB
    # monthly_archive_data_gb: 0 # Monthly archived data in GB
    # monthly_archive_data_restored_gb: 0 # Monthly data restored from archive in GB
    # monthly_archive_data_searched_gb: 0 # Monthly data searched in archive with a Search Job, in GB
    # monthly_archived_data_gb: 0.0
    # monthly_archived_data_restored_gb: 0.0
    # monthly_archived_data_searched_gb: 0.0
  # azurerm_monitor_action_group.monitoring_action_group:
    # monthly_notifications: 0
  # module.application_gateway.azurerm_application_gateway.app_gateway:
    # monthly_data_processed_gb: 0 #  Monthly data processed by the Application Gateway in GB.
    # monthly_v2_capacity_units: 0 # Number capacity(for v2) units gateway.
  # module.application_gateway.azurerm_monitor_diagnostic_setting.app_gateway_diagnostics_settings:
    # monthly_platform_log_gb: 0
  # module.container_apps.azurerm_application_insights.container_apps_insights:
    # monthly_data_ingested_gb: 0.0 # Monthly amount of data ingested in GB.
  # module.container_apps.azurerm_private_dns_a_record.private_dns_a_record:
    # monthly_queries: 0 # Monthly number of DNS queries
  # module.keyvault.azurerm_monitor_diagnostic_setting.kv_diagnostics_settings:
    # monthly_platform_log_gb: 0
  # module.keyvault.azurerm_private_dns_a_record.private_dns_zone_record_kv_atehub_a:
    # monthly_queries: 0 # Monthly number of DNS queries
  # module.keyvault.azurerm_private_endpoint.private_endpoint_kv:
    # monthly_inbound_data_processed_gb: 0 # Monthly inbound data processed in GB.
    # monthly_outbound_data_processed_gb: 0 # Monthly outbound data processed in GB.
  # module.mongodb.azurerm_private_dns_a_record.private_dns_zone_record_mongodb_net_a:
    # monthly_queries: 0 # Monthly number of DNS queries
  # module.mongodb.azurerm_private_endpoint.mongodbatlas_private_endpoint:
    # monthly_inbound_data_processed_gb: 0 # Monthly inbound data processed in GB.
    # monthly_outbound_data_processed_gb: 0 # Monthly outbound data processed in GB.
  # module.rabbitmq.azurerm_private_dns_a_record.private_dns_zone_record_blob_atehub:
    # monthly_queries: 0 # Monthly number of DNS queries
  # module.rabbitmq.azurerm_private_dns_a_record.private_dns_zone_record_file_atehub:
    # monthly_queries: 0 # Monthly number of DNS queries
  # module.rabbitmq.azurerm_private_endpoint.storage_account_blob_private_endpoint:
    # monthly_inbound_data_processed_gb: 0 # Monthly inbound data processed in GB.
    # monthly_outbound_data_processed_gb: 0 # Monthly outbound data processed in GB.
  # module.rabbitmq.azurerm_private_endpoint.storage_account_file_private_endpoint:
    # monthly_inbound_data_processed_gb: 0 # Monthly inbound data processed in GB.
    # monthly_outbound_data_processed_gb: 0 # Monthly outbound data processed in GB.
  # module.rabbitmq.azurerm_storage_account.storage_account:
    # data_at_rest_storage_gb: 0.0 # Total size of Data at Rest in GB (File storage).
    # early_deletion_gb: 0.0 # Total size of Early deletion data in GB.
    # snapshots_storage_gb: 0.0 # Total size of Snapshots in GB (File storage).
    # metadata_at_rest_storage_gb: 0.0 # Total size of Metadata in GB (File storage).
    # storage_gb: 0.0 # Total size of storage in GB.
    # monthly_iterative_write_operations: 0 # Monthly number of Iterative write operations (GPv2).
    # monthly_write_operations: 0 # Monthly number of Write operations.
    # monthly_list_and_create_container_operations: 0 # Monthly number of List and Create Container operations.
    # monthly_iterative_read_operations: 0 # Monthly number of Iterative read operations (GPv2).
    # monthly_read_operations: 0 # Monthly number of Read operations.
    # monthly_other_operations: 0 # Monthly number of All other operations.
    # monthly_data_retrieval_gb: 0.0 # Monthly number of data retrieval in GB.
    # monthly_data_write_gb: 0.0 # Monthly number of data write in GB.
    # blob_index_tags: 0 # Total number of Blob indexes.
  # module.recovery_service.azurerm_monitor_diagnostic_setting.diagnostics_settings:
    # monthly_platform_log_gb: 0
  # module.recovery_service.azurerm_recovery_services_vault.recovery_service:
    # azurerm_backup_protected_vm.my_vm:
      # disk_utilization_gb: 0 # Total size in GB of the data that will be backed up into the recovery service vault. Defaults to the entire storage capacity of the VM.
      # additional_backup_retention_gb: 0 # Total size in GB of the additional data stored by this VM because of retention rules.
  # module.sqldatabases.azurerm_monitor_diagnostic_setting.diagnostics_settings:
    # monthly_platform_log_gb: 0
  # module.sqldatabases.azurerm_private_dns_a_record.private_dns_zone_record_audit_atehub_a:
    # monthly_queries: 0 # Monthly number of DNS queries
  # module.sqldatabases.azurerm_private_dns_a_record.private_dns_zone_record_sql_atehub_a:
    # monthly_queries: 0 # Monthly number of DNS queries
  # module.sqldatabases.azurerm_private_endpoint.audit_private_endpoint:
    # monthly_inbound_data_processed_gb: 0 # Monthly inbound data processed in GB.
    # monthly_outbound_data_processed_gb: 0 # Monthly outbound data processed in GB.
  # module.sqldatabases.azurerm_private_endpoint.private_endpoint:
    # monthly_inbound_data_processed_gb: 0 # Monthly inbound data processed in GB.
    # monthly_outbound_data_processed_gb: 0 # Monthly outbound data processed in GB.
  # module.sqldatabases.azurerm_storage_account.mssqlaudit:
    # data_at_rest_storage_gb: 0.0 # Total size of Data at Rest in GB (File storage).
    # early_deletion_gb: 0.0 # Total size of Early deletion data in GB.
    # snapshots_storage_gb: 0.0 # Total size of Snapshots in GB (File storage).
    # metadata_at_rest_storage_gb: 0.0 # Total size of Metadata in GB (File storage).
    # storage_gb: 0.0 # Total size of storage in GB.
    # monthly_iterative_write_operations: 0 # Monthly number of Iterative write operations (GPv2).
    # monthly_write_operations: 0 # Monthly number of Write operations.
    # monthly_list_and_create_container_operations: 0 # Monthly number of List and Create Container operations.
    # monthly_iterative_read_operations: 0 # Monthly number of Iterative read operations (GPv2).
    # monthly_read_operations: 0 # Monthly number of Read operations.
    # monthly_other_operations: 0 # Monthly number of All other operations.
    # monthly_data_retrieval_gb: 0.0 # Monthly number of data retrieval in GB.
    # monthly_data_write_gb: 0.0 # Monthly number of data write in GB.
    # blob_index_tags: 0 # Total number of Blob indexes.

As you can see there is some characters that made the file non valid regarding the yaml constrains

Regards

It's strange but the defect occurs when the line is long...

Hello sorry for my late response the issue can indeed be close


 I doubt it's entirely due to the library being slower. This is a tracking issue to figure out if the problem is indeed on the kilic side or if it's based on our usage of it.

A naive benchmark shows no significant difference, kilic even being faster with 256:
kilic:
goos: linux
goarch: amd64
pkg: github.com/gballet/go-verkle
BenchmarkCommitLeaves/insert/leaves/1000/width/10-8         	       1<PHONE_NUMBER> ns/op	292095272 B/op	 3192268 allocs/op
BenchmarkCommitLeaves/insertOrdered/leaves/1000/width/10-8  	       7	 155914651 ns/op	22354277 B/op	   65587 allocs/op
BenchmarkCommitLeaves/insert/leaves/10000/width/10-8        	       1<PHONE_NUMBER> ns/op	146847120 B/op	  636855 allocs/op
BenchmarkCommitLeaves/insertOrdered/leaves/10000/width/10-8 	       1<PHONE_NUMBER> ns/op	156908680 B/op	  709441 allocs/op
BenchmarkCommitLeaves/insert/leaves/1000/width/8-8          	       7	 152014956 ns/op	12296058 B/op	   65042 allocs/op
BenchmarkCommitLeaves/insertOrdered/leaves/1000/width/8-8   	       6	 179306638 ns/op	14418436 B/op	   79603 allocs/op
BenchmarkCommitLeaves/insert/leaves/10000/width/8-8         	       1<PHONE_NUMBER> ns/op	111304536 B/op	  667735 allocs/op
BenchmarkCommitLeaves/insertOrdered/leaves/10000/width/8-8  	       1<PHONE_NUMBER> ns/op	120034984 B/op	  731625 allocs/op
BenchmarkCommitFullNode/width/10-8                          	      34	  33119308 ns/op	  799179 B/op	   10952 allocs/op
BenchmarkCommitFullNode/width/8-8                           	     100	  11298582 ns/op	  225296 B/op	    2840 allocs/op
PASS
ok  	github.com/gballet/go-verkle	15.269s

herumi:
goos: linux
goarch: amd64
pkg: github.com/gballet/go-verkle
BenchmarkCommitLeaves/insert/leaves/1000/width/10-8         	       1<PHONE_NUMBER> ns/op	15187432 B/op	   16579 allocs/op
BenchmarkCommitLeaves/insertOrdered/leaves/1000/width/10-8  	       6	 171992046 ns/op	14097186 B/op	   15976 allocs/op
BenchmarkCommitLeaves/insert/leaves/10000/width/10-8        	       1<PHONE_NUMBER> ns/op	60271552 B/op	  118016 allocs/op
BenchmarkCommitLeaves/insertOrdered/leaves/10000/width/10-8 	       1<PHONE_NUMBER> ns/op	61187144 B/op	  136318 allocs/op
BenchmarkCommitLeaves/insert/leaves/1000/width/8-8          	       8	 139774493 ns/op	 3760832 B/op	   13300 allocs/op
BenchmarkCommitLeaves/insertOrdered/leaves/1000/width/8-8   	       6	 167537888 ns/op	 3897029 B/op	   16084 allocs/op
BenchmarkCommitLeaves/insert/leaves/10000/width/8-8         	       1<PHONE_NUMBER> ns/op	18962752 B/op	  117465 allocs/op
BenchmarkCommitLeaves/insertOrdered/leaves/10000/width/8-8  	       1<PHONE_NUMBER> ns/op	19791336 B/op	  134347 allocs/op
BenchmarkCommitFullNode/width/10-8                          	      19	  59106862 ns/op	  463930 B/op	    8781 allocs/op
BenchmarkCommitFullNode/width/8-8                           	      73	  14779280 ns/op	  116086 B/op	    2188 allocs/op
PASS
ok  	github.com/gballet/go-verkle	13.406s

It looks like kilic is much faster than herumi when the nodes are really full, and seems to be even more pronounced when nodes are wider. So far comparisons only occured on a width of 256, I'll run benchmarks with width 1024.

One explanation could be that we set the "lincomb" threshold based on herumi's numbers, and kilic could work with an ever lower/higher threshold. @s1na do you remember which bignum library you used to find a threshold of 110?

As expected, when comparing the time taken to translate a mainnet trie into a verkle tree, it is noticeably faster but still 40% slower. ~10h(herumi) vs ~14h (kilic).

Running the benchmarks on an AWS instance x5.large
herumi:
goos: linux
goarch: amd64
pkg: github.com/gballet/go-verkle
cpu: Intel(R) Xeon(R) Platinum 8175M CPU @ 2.50GHz
BenchmarkProofCalculation-4            6         177339859 ns/op         1005608 B/op      21452 allocs/op
BenchmarkProofVerification-4<PHONE_NUMBER> ns/op           20368 B/op         73 allocs/op
BenchmarkCommitLeaves/insert/leaves/1000/width/10-4                   10         108025027 ns/op        13653744 B/op      11873 allocs/op
BenchmarkCommitLeaves/insertOrdered/leaves/1000/width/10-4             8         127878044 ns/op        13799688 B/op      14880 allocs/op
BenchmarkCommitLeaves/insert/leaves/10000/width/10-4                   2         981093258 ns/op        58890640 B/op     108000 allocs/op
BenchmarkCommitLeaves/insertOrdered/leaves/10000/width/10-4            1<PHONE_NUMBER> ns/op        59779912 B/op     126228 allocs/op
BenchmarkCommitLeaves/insert/leaves/1000/width/8-4                    12          99175598 ns/op         3594284 B/op      12271 allocs/op
BenchmarkCommitLeaves/insertOrdered/leaves/1000/width/8-4              9         117806597 ns/op         3727641 B/op      15046 allocs/op
BenchmarkCommitLeaves/insert/leaves/10000/width/8-4                    2         923288118 ns/op        17821912 B/op     107731 allocs/op
BenchmarkCommitLeaves/insertOrdered/leaves/10000/width/8-4             1<PHONE_NUMBER> ns/op        18645288 B/op     124762 allocs/op
BenchmarkCommitFullNode/width/10-4                                    28          40760101 ns/op          324521 B/op       7757 allocs/op
BenchmarkCommitFullNode/width/8-4<PHONE_NUMBER>3 ns/op           81221 B/op       1932 allocs/op
BenchmarkModifyLeaves-4                                                1<PHONE_NUMBER>7 ns/op       130852168 B/op   1251054 allocs/op

kilic:
goos: linux
goarch: amd64
pkg: github.com/gballet/go-verkle
cpu: Intel(R) Xeon(R) Platinum 8175M CPU @ 2.50GHz
BenchmarkProofCalculation-4            9         122313086 ns/op         2421853 B/op      34401 allocs/op
BenchmarkProofVerification-4<PHONE_NUMBER> ns/op           65265 B/op        421 allocs/op
BenchmarkCommitLeaves/insert/leaves/1000/width/10-4                   10         100830027 ns/op        19457588 B/op      47432 allocs/op
BenchmarkCommitLeaves/insertOrdered/leaves/1000/width/10-4             8         129216877 ns/op        21877086 B/op      63958 allocs/op
BenchmarkCommitLeaves/insert/leaves/10000/width/10-4                   1<PHONE_NUMBER> ns/op        145180104 B/op    626447 allocs/op
BenchmarkCommitLeaves/insertOrdered/leaves/10000/width/10-4            1<PHONE_NUMBER> ns/op        155180896 B/op    698801 allocs/op
BenchmarkCommitLeaves/insert/leaves/1000/width/8-4                     8         126863070 ns/op        12174806 B/op      64138 allocs/op
BenchmarkCommitLeaves/insertOrdered/leaves/1000/width/8-4              7         153912399 ns/op        14287331 B/op      78662 allocs/op
BenchmarkCommitLeaves/insert/leaves/10000/width/8-4                    1<PHONE_NUMBER> ns/op        110126448 B/op    658312 allocs/op
BenchmarkCommitLeaves/insertOrdered/leaves/10000/width/8-4             1<PHONE_NUMBER> ns/op        118980800 B/op    723114 allocs/op
BenchmarkCommitFullNode/width/10-4                                    45          26299748 ns/op          667911 B/op       9927 allocs/op
BenchmarkCommitFullNode/width/8-4<PHONE_NUMBER> ns/op          192461 B/op       2584 allocs/op
BenchmarkModifyLeaves-4                                                1<PHONE_NUMBER> ns/op        455726400 B/op   3727681 allocs/op

Building the trie with kilic is noticeably slower, however calculating proofs / root commitments is noticeably faster :thinking:

After changing multiExpThreshold to 26, the conversion comes down to ~11 hours, which indicates that knowing when to call LinComb has a significant impact on performance.
CPU profiling output of a conversion:

We are no longer using KZG or BLS, closing this tracker issue.


Broken visual then Collapse/Visible Plot

I found a strange bug. There is a control that displays a graph. If I run the program and change the graphics with the mouse wheel, then everything is fine. But if I do a Collapse for the graph to hide and then Visible, then the graph freezes and completely ignores the axes change. What could it be?
In the code, I just change the display and fill in two lines so that one of the two graphs can be shown.
LeftRightPlot.Visibility = Visibility.Hidden;
UpDownPlot.Visibility = Visibility.Visible;

UpDownPlot.SetValue(Grid.RowSpanProperty, 2);
UpDownPlot.SetValue(Grid.RowProperty, 0);

Hi @Worldmasters, thank you for reporting this!
Unfortunately I cannot reproduce the issue you describe. This code works for me
public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();

        WpfPlot1.Plot.AddSignal(ScottPlot.DataGen.Sin(51));
        WpfPlot1.Plot.AddSignal(ScottPlot.DataGen.Cos(51));

        WpfPlot1.Visibility = Visibility.Hidden;
        WpfPlot1.Visibility = Visibility.Visible;

        WpfPlot1.SetValue(Grid.RowSpanProperty, 2);
        WpfPlot1.SetValue(Grid.RowProperty, 0);

        WpfPlot1.Refresh();
    }
}

If you can provide the C# and XAML necessary to allow me to recreate this issue, I would be happy to take a closer look 👍


[1.x] Fix arm architecture translation issue (#809)

Backporting the change in #809 to the 1.x branch on behalf of @peternied
Found when attempting to build on an arm64 machine when I recieved an error message below. Root cause is that string equality in java cannot be done with the == sign.
unknown architecture [arm64] for jdk [provisioned_runtime], must be one of [aarch64, x64]
Signed-off-by: Peter Nied<EMAIL_ADDRESS>Check List

[X] Commits are signed per the DCO using --signoff

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.
Signed-off-by: Peter Nied<EMAIL_ADDRESS>

start gradle check


fix docstring of lomc!

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 94.909%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
5779

Relevant Lines:
6089

💛  - Coveralls


ci: Ensure CircleCI only builds artifacts for releases that actually need artifacts

The script on scripts/build_release_artifacts/main.go currently builds and uploads artifacts for all tagged commits that match a certain pattern. However, some projects like the Go SDK don't really have artifacts (the code itself is the release).
We should adapt the CI config so that CircleCI doesn't try to build artifacts for artifact-less projects in the monorepo.

Example: PR; Circle log

@ire-and-curses I've been thinking of a way to solve this, but wanted to check with you before moving forward:
When a new tag in the format <package>-v<X.X.X> is created, the script should:

Try to find the corresponding package directory
If it finds it, it looks for a main.go at the top level. If it doesn't find one, return 0.
Inspect the main.go and look for a main() function. If it doesn't find one, return 0.
If there is a main() function, there are likely some binary artifacts to be built, so it runs the artifact building script. If the script succeeds, return 0, otherwise return the error.

What do you think?

I think it's too complicated. W should probably just use regexp to extract package name from a tag (<package>-v<X.X.X>) and create an array of packages that build_release_artifacts ignores.

I think it's cool, but maybe a bit complex? Another approach might be to use the presence of a .file to indicate that building binaries should occur.


Arrays passed to JS using ProxyArray do not mimic JS arrays

I have a Java host application that is executing JS scripts as guest using the Polyglot API. I would like to pass Java arrays (ArrayList) to the JS side and treat the array on the JS side as if it was a "native" JS array. As suggested in this SOF post:
https://stackoverflow.com/questions/51707039/injected-members-from-the-host-language-to-arrive-to-guest-language-as-guest-lan
I am using ProxyArray to achieve that. Specifically, I am using ProxyArray.fromArray() to pass the Java ArrayList to the JS side using bindings:
Value guestLanguageBindings = context.getBindings("js");		 guestLanguageBindings.putMember("arrParamName", ProxyArray.fromArray(arrayArg));
However in the JS side (guest language) the array is not seen as a JS array, instead it is of type: org.graalvm.polyglot.proxy.ProxyArray (also a Java type). This prevents me from being able to use the array as if it were a regular JS array. Statements like arr[0] work, however specific calls such as arr.sort() fail.
The screenshot below illustrate a debugging session where variable is passed as described above with the resulting error.

Hi Edoardo,
thanks for your request.
The ProxyArray on the JS side currently behaves close to a JavaScript object (but not like a JavaScript Array, true). Accessing it from JS will work in most cases if you do whatever you would do with a plain JavaScript object in such a situation, e.g. calling Array.prototype.foEach.call(variable, function .... ).
The problem is that we treat the ProxyArray just like any other (interop) object; specifically, it is missing the prototype link to Array.prototype, so it does not have the sort or forEach functions. We are aware of that and are looking into improving that behaviour in the future.
Note that Array.prototype.sort is currently not supporting ProxyArray at all. I've opened a ticket, we should resolve that shortly.
Best,
Christian

Hi Christian,
Thank you for your explanation. It makes sense, I understand now the behaviour I was seeing and I was able to do a couple of tests based on your suggestions to be able to use the ProxyArray in the JS side (calling foreach, push, etc).
With my application I am using the polyglot API to try to execute scripts provided by users, which are unaware of the polyglot requirements/limitations. As a consequence, the JS provided will not be coded as we are discussing now, but in the more "straightforward"/traditional approach (eg: myArray.foreach() instead of Array.prototype.foreach.call(myArray, function()) ).
For this purpose the improvements you are working on would be extremely useful. In the meantime I will revert to using JSON representations of arguments passed to the guest language side so that "guest language developers" can work as they are used to with the only expectation that the arguments they will receive will be in standard JSON form.
I have a feeling that would be the only way to being able to execute guest code that is "graal unaware" at this stage, especially if trying to do it with different languages too (JS, R, Python, and Ruby). Would you agree?
Once agin thank you for your explanation and impressive work with the framework.
Edoardo.

Hi,
Indeed I am in control of the Java side and of course I could create the JS array already from the Java side! I just did not think about it. Sure, it may not be the most efficient solution, but I am sure it beats converting the array to JSON.
Thanks for the suggestion, I just gave it a go and it works great!
I have a slightly off topic question: when it comes to passing the array to the guest side, I am trying to use the top level bindings (instead of the polyglot bindings - simply because polyglot bindings require the guest developer to know how to retrieve them through the polyglot library). I can set members on the top level bindings in JS no problem, but I get errors when doing the same in R and Python. I am reading from the docs that some languages may not offer access to the bindings. With which languages can I use the top level bindings?
thanks again!
Edoardo.

Hi Edoardo,
Can you post the code you tried with R and Python that failed?
You can either do it with context.getPolyglotBinding() or with context.getBindings("language"). For the first one, see the examples at https://www.graalvm.org/docs/graalvm-as-a-platform/embed/#computed-arrays-using-polyglot-proxies - That's one shared bindings for all the languages. They have the disadvantage that you need to explicitly import the value. The later one is the one you were using in your example above. They should work for R and Python as well, so if you can post your code, we can investigate why it's not.
thanks,
Christian

Hi,
Sure, here are a couple of straightforward tests that show the problems I am seeing:
R
public void execRWithBindingsError() {

	Context testContext = Context.newBuilder()
									.allowNativeAccess(true)
									.build();

	testContext.getBindings("R").putMember("someText", "Hello there!");

	testContext.eval("R", "print(someText)");
}

Error:
java.lang.IllegalArgumentException: Invalid member value 'Hello there!'(language: R, type: character) for object 'com.oracle.truffle.api.vm.PolyglotLanguageBindings@2f2e4bde'(language: R, type: Object) and member key 'someText'. 	at com.oracle.truffle.api.vm.PolyglotValue.invalidMemberValue(PolyglotValue.java:283) 	at com.oracle.truffle.api.vm.PolyglotValue$Interop$PutMemberNode.executeImpl(PolyglotValue.java:1931) 	at com.oracle.truffle.api.vm.PolyglotValue$PolyglotNode.execute(PolyglotValue.java:551) 	at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callProxy(OptimizedCallTarget.java:262) 	at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callRoot(OptimizedCallTarget.java:251) 	at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callBoundary(OptimizedCallTarget.java:241) 	at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.doInvoke(OptimizedCallTarget.java:226) 	at org.graalvm.compiler.truffle.runtime.GraalTVMCI.callProfiled(GraalTVMCI.java:86) 	at com.oracle.truffle.api.impl.Accessor.callProfiled(Accessor.java:733) 	at com.oracle.truffle.api.vm.VMAccessor.callProfiled(VMAccessor.java:93) 	at com.oracle.truffle.api.vm.PolyglotValue$Interop.putMember(PolyglotValue.java:1327) 	at org.graalvm.polyglot.Value.putMember(Value.java:263) 	at Test.execRWithBindingsError(Test.java:108) 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 	at java.lang.reflect.Method.invoke(Method.java:498) 	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) 	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) 	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) 	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) 	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) 	at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27) 	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325) 	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78) 	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57) 	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) 	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) 	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) 	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) 	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) 	at org.junit.runners.ParentRunner.run(ParentRunner.java:363) 	at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86) 	at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) 	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:538) 	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:760) 	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:460) 	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:206)
Python
    public void execPythonWithBindingsError() {

	Context testContext = Context.newBuilder().allowIO(true).build();

	testContext.getBindings("python").putMember("someText", "Hello there!");

	testContext.eval("python", "print(someText)");
}

Error:
org.graalvm.polyglot.PolyglotException: java.lang.AssertionError: Returned scope variables object must be a TruffleObject. 	at com.oracle.truffle.api.vm.PolyglotLanguageBindings.<init>(PolyglotLanguageBindings.java:61) 	at com.oracle.truffle.api.vm.PolyglotLanguageContext.initializeLanguageBindings(PolyglotLanguageContext.java:145) 	at com.oracle.truffle.api.vm.PolyglotLanguageContext.getHostBindings(PolyglotLanguageContext.java:119) 	at com.oracle.truffle.api.vm.PolyglotContextImpl.getBindings(PolyglotContextImpl.java:630) 	at org.graalvm.polyglot.Context.getBindings(Context.java:375) 	at Test.execPythonWithBindingsError(Test.java:96) 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 	at java.lang.reflect.Method.invoke(Method.java:498) 	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) 	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) 	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) 	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) 	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) 	at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27) 	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325) 	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78) 	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57) 	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) 	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) 	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) 	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) 	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) 	at org.junit.runners.ParentRunner.run(ParentRunner.java:363) 	at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86) 	at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) 	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:538) 	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:760) 	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:460) 	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:206) Original Internal Error:  java.lang.AssertionError: Returned scope variables object must be a TruffleObject. 	at com.oracle.truffle.api.vm.PolyglotLanguageBindings.<init>(PolyglotLanguageBindings.java:61) 	at com.oracle.truffle.api.vm.PolyglotLanguageContext.initializeLanguageBindings(PolyglotLanguageContext.java:145) 	at com.oracle.truffle.api.vm.PolyglotLanguageContext.getHostBindings(PolyglotLanguageContext.java:119) 	at com.oracle.truffle.api.vm.PolyglotContextImpl.getBindings(PolyglotContextImpl.java:630) 	at org.graalvm.polyglot.Context.getBindings(Context.java:375) 	at Test.execPythonWithBindingsError(Test.java:96) 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 	at java.lang.reflect.Method.invoke(Method.java:498) 	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) 	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) 	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) 	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) 	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) 	at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27) 	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325) 	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78) 	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57) 	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) 	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) 	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) 	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) 	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) 	at org.junit.runners.ParentRunner.run(ParentRunner.java:363) 	at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86) 	at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) 	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:538) 	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:760) 	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:460) 	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:206) Caused by: Attached Guest Language Frames (0)
Indeed, I am trying not to use the polyglot bindings to avoid requiring to the "guest language developers" to have to explicitly import them.
Thanks!
Edoardo

I looked at the R issue - there's a bug which makes it only accept R-specific data types for bindings, which will be fixed soon.
@timfel - would be great if you could take a look at the Python issue.

Speaking of using R and Python via the Polyglot API, I noticed that Python needs allowIO() to be set to true in order to execute, while R needs allowNativeAccess() set to true.
Is it not possible to run these languages with the default settings, ie "no access" allowed, similar to how I am running JS?
The Docs do not go into great depths in explaining what happens when setting these access variables to true. How would they affect the ability to sandbox the guest code that is being executed?

@lukasstadler , @timfel I believe the Python issue has been fixed in RC5. I was running RC4 when doing the test above. I have updated to RC5 now and re-ran the test and it is working as expected.

JS is somewhat special in that it doesn't have a base library, i.e., a directory of modules or packages provided with the language runtime. Python and R do, and parts of their base library are used during startup - which is why they require IO access. R even runs C code during startup, so it also needs the native access permission.
It may be desirable to allow access to the base library and installed modules even without IO permissions, but since the code that loads modules/packages uses vanilla file IO, it's not that easy to determine which accesses should be allowed (and which ones denied). This is something that we're looking into, but it's not a trivial issue, considering all the different deployment scenarios.
However, as long as the native access permission is not needed, accesses to the file system can be sandboxed by implementing a custom file system which provides a view of the base library.
Sandboxed execution in the presence of native code is also something that we're working on - our plan is to provide a preview of this functionality in GraalVM EE end of September.

Hi @lukasstadler thanks for the explanation. From what I understand, once you roll out the feature for sandboxing execution in the presence of native code in combination with a custom file system implementation we should be able to fully sandbox execution of any language?

Hi @edopalmieri
it will work in languages that supports it and implements e.g. the Virtual File System. Not necessarily in "any" Truffle language. Graal.js e.g. supports it in the core language, but not in the Node.js extension at the moment.
The issue around Array.prototype.sort for Polyglot objects was solved in https://github.com/graalvm/graaljs/commit/304e908a3ae1758fe62174ca3d6ac98bd57ef783
Unless there is anything open regarding JavaScript, I'd close this issue. If there is anything open for R or Python, please consider submitting a ticket in the respective repositories.
Best,
Christian

@wirthi thanks for the explanation.
Indeed, I have closed the issue. Thanks for your help.
Edoardo.

FYI: js.experimental-array-prototype option that adds Array.prototype on the prototype chain of array-like non-JavaScript objects will be removed in GraalVM 1.0.0-rc14. It will replaced by js.experimental-foreign-object-prototype option. We changed the name of this option because besides adding Array.prototype it also adds Function.prototype on the prototype chain of executable non-JavaScript objects and Object.prototype on the prototype chain of all non-JavaScript objects now.

@iamstolis
A year ago you had a Gitter chat with a user that provided the test below.
The issue on rc13 then was that it failed for ProxyArray. You reported it worked for both on rc14 with the updated property name (js.experimental-foreign-object-prototype).
On 20.1.0 it works for ProxyArray but fails on splice on the ArrayList with TypeError: undefined is not a function. Is this a regression?
class PrototypeTest {

    private void test(final Object listObj) {
        final Engine engine = Engine.newBuilder().option("js.experimental-array-prototype", "true").build();
        final Context context = Context.newBuilder("js").engine(engine).build();
        final Value value = context.eval("js", ""
                + "(function() {"
                + "     return {"
                + "         foo: function() {"
                + "             var list = this.createList();"
                + "             console.log(list);"
                + "             list.splice(3, 1);"
                + "             console.log(list);"
                + "         }"
                + "     }; "
                + "}())");
        value.putMember("createList", (ProxyExecutable) args -> {
            return Value.asValue(listObj);
        });
        value.invokeMember("foo");
    }

    @Test
    void testProxyArray() {
        Assertions.assertDoesNotThrow(() -> {
            test(ProxyArray.fromList(new ArrayList<>(Arrays.asList("foo", "bar", "yak", "grzl"))));
        });
    }

    @Test
    void testArrayList() {
        Assertions.assertDoesNotThrow(() -> test(new ArrayList<>(Arrays.asList("foo", "bar", "yak", "grzl"))));
    }
}

@greenbird-chr

Is this a regression?

No, it is not. The configuration of the Engine and Context in your test-case is to blame. The test-case is using the obsolete name of the option ("js.experimental-array-prototype"). The correct name is "js.experimental-foreign-object-prototype". Moreover, it is an experimental option. So, you have to use
allowExperimentalOptions(true).option("js.experimental-foreign-object-prototype", "true")

instead of
option("js.experimental-array-prototype", "true")

This change ensures that testProxyArray() passes. Unfortunately, for testArrayList() you need one more change: you should allow list access in your Context i.e. you have to add something like
.allowHostAccess(HostAccess.newBuilder().allowListAccess(true).build())

into a code that builds Context.
Note that various sensitive operations (like access to fields and methods of Java objects) are disabled by default. So, when it comes to Java-interoperability it is always a good idea to try to run your code with allowAllAccess(true) to figure out whether the failure is caused by some missing permission. Of course, do not use allowAllAccess(true) in production. It should be replaced by appropriate fine-grained set of permissions.

@iamstolis
Thanks. allowListAccess did the trick.

The solution presented in #291 maybe also a solution to this issue without using experimental features.

You could have a look at the sj4js library. It extends GraalJs with exactly these kinds of features...


Trying to use this on LegatoLegacy

Hi, thanks for the work on the plugin.
Just wanted to check with you on whether this should be compatible with the legacy version of StreamDeck that has been modified to work on Win7/8 etc?
I know this is a very small use case but there are still some who use win7 and doesn't seem like it would take a lot of work to make it work?
https://github.com/atom0s/ElgatoLegacy
I've tried it but settings for the plugin just has Title, nothing else.

Hi,
this may have to do with the way settings (currently) work in my plugin. They are opened in a new window - it sounds like this step does not work with ElgatoLegacy.
Maybe this will change in one of the next releases, but only if configuration fits into the (unnecessarily) tiny box that the streamdeck UI provides.

Do not know if that possible but you can do a paging of the configuration options and show only the first page (server and token configuration) first by default if no value is defined.
Additional configuration (long press) could keep in the next configuration "page" or tab or whatever but I do not know if that is possible in streamdeck... The code that is showed is regular html?

I will change the settings from popup window to the "internal" mini-window. This may fix this problem.
https://github.com/cgiesche/streamdeck-homeassistant/issues/52

@cgiesche I tried the latest s-h on latest ElgatoLegacy with the new config interface and it still doesn't show up.
Thanks for looking and considering a potential fix.


Icon: Add ability to have a (right) side caret

Icon: Add ability to have a (right) side caret

This update adds a new withCaret prop, which renders a small caret
on the right hand side of an Icon component. The caret is automatically
aligned in the center (vertically), regardless of icon size. The caret
does not hinder other prop styles like center, and inherits the same
SVG fill color as the regular icon.
To make triple sure of this, I've written some Karma acceptance tests 🎉.
P.S. Acceptance tests are awesome. Boy, I love being able to test
ACTUAL DOM properties.
Partially resolves: https://github.com/helpscout/blue/issues/129

Changes Unknown when pulling 50bbff6645a43729fe5b0352c19a6ee7b52bcd04 on Icon/withCaret into ** on master**.


Changelog file RC3 section devDependencies missing typescript

"devDependencies": {
"@ionic/app-scripts": "0.0.48",
}
should be
"devDependencies": {
"@ionic/app-scripts": "0.0.48",
"typescript": "2.0.6"
}
Short description of what this resolves:
Missing dependency
Changes proposed in this pull request:

Ionic Version: 1.x / 2.x
Fixes: #

Thanks for the PR @r7sy ! @brandyscarney is this cool to merge?

Looks good, thanks! 👍


Remove 'six' module use; reduce footprint of 'fiona.compat'

While six was handy transitioning thru the Python 2 to 3 conversion, now that Fiona is fully Python 3, it is no longer needed.
Also, there are fewer instances where fiona.compat is needed.

Coverage increased (+0.2%) to 87.914% when pulling d019cfaaf2a022f45080e580648c29f6e52c3e66 on mwtoews:un-six-compat into 885dbd11c5dcb2c61862faefc28bfbbff99954de on Toblerity:master.

Coverage increased (+0.2%) to 87.914% when pulling d019cfaaf2a022f45080e580648c29f6e52c3e66 on mwtoews:un-six-compat into 885dbd11c5dcb2c61862faefc28bfbbff99954de on Toblerity:master.

It's certainly a good idea to get rid of the Python 2.x past. However, what I'm a bit concerned about is that at one point maint-1.9 needs to be merged into master, and the more this branch deviates from maint-1.9, the more merge conflicts could arise.

@rbuffat ah, I see the concern. I normally contribute features to master, but I see features are also in maint-1.9 too (I normally expect "maint-*" branches to be maintenance branches with bug fixes.) Let me know if there is something that I can help out with.

@mwtoews I'm so sorry to let this get old and for the unfortunate maint-1.8/1.9/master split. Would you be willing to retarget this at maint-1.9 (the next release)?

This is ready to go for maint-1.9. The rstcheck failure is unrelated.

Thanks @mwtoews !


Bug 1779438: fix race for controller commands

Scenario:
a) AddDefaultRotationToConfig():

no serving cert and key found in expected directory
creates self-signed serving cert/key pair
serving-cert key-pair appears in the expected directory

b) WithRestartOnChange() -> AddReactor()

does not see starting content for the observed files
hashes for the expected cert/key pair are counted from the
actual files but the controller will keep serving with the
self-signed cert/key pair now

This was most probably caused by the line
    certDir = temporaryCertDir

which caused that starting content was added for wrong two files.

Another BZ with the same diagnose - https://bugzilla.redhat.com/show_bug.cgi?id=1820385

/retest

Looks like the container itself is failing rather than the tests themselves but the CI does not appear to be very chatty about the failure reason.

/retest

/lgtm

/cherrypick release-4.4

/refresh

/cherrypick release-4.3


Missing operationId

I'm trying to import Outline's OpenAPI spec into OpenAI's "actions" and am getting an error for each API method:
In path /attachments.create, method post is missing operationId; skipping
In path /attachments.redirect, method post is missing operationId; skipping
In path /attachments.delete, method post is missing operationId; skipping
In path /auth.info, method post is missing operationId; skipping
In path /auth.config, method post is missing operationId; skipping
In path /collections.info, method post is missing operationId; skipping
[etc]

The OpenAPI specifications have operationId as part of the operation object detailed here.

If you wish to add it to make the spec OpenAI compatible we'd accept the PR.


Add container_runtime variables & additional scripts for deleting CNI

Add container_runtime into group_vars/all.yml for compatibility of  containerd and cri-o
Add additional scripts for deleting calico network interfaces.

Refer to @kairen's kube-ansible repo

Thanks.


Graph algorithms

Hello, do you have any graph algorithms implemented. I'd like to contribute with some if u haven't. I'll try to add one algo per week.

Thanks for your interest @HekpoMaH! I'll soon be adding the graph data structures (directed and undirected) which you and others can use to implement graph algorithms.

Tbh IDK in what format you want the representation. Depending on needs I just use array of vectors (vector[] for list representation) or 2d array (for matrix representation) or both when needed. What data structures are you adding?

I'm adding two classes, one each for directed and undirected graphs, each having two versions which use either an adjacency list or an adjacency matrix as the underlying data structure. A usage example for one of those is as follows:
// for directed graph using adjacency list:
#include "DataStructures/Graph/Directed/List.hpp"
/* or, for directed graph using adjacency matrix:
#include "DataStructures/Graph/Directed/Matrix.hpp"
*/

...

DirectedGraph digraph;

for (unsigned int v = 1; v <= 8; v++)
    digraph.add_vertex(v);

digraph.add_edge(1, 5, 7);
digraph.add_edge(1, 6, 4);
digraph.add_edge(2, 8, 3);
digraph.add_edge(3, 1, 3);
digraph.add_edge(3, 2, 6);
digraph.add_edge(4, 8, 8);
digraph.add_edge(5, 1, 5);
digraph.add_edge(5, 3, 9);
digraph.add_edge(6, 3, 8);
digraph.add_edge(6, 7, 9);
digraph.add_edge(7, 2, 4);
digraph.add_edge(7, 4, 7);
digraph.add_edge(8, 4, 5);
digraph.add_edge(8, 5, 6);

for (unsigned int v = 1; v <= 8; v++) {
    cout << "Neighbours of " << v << ":\n";
    auto neighbours = digraph.neighbours(v);
    for (auto n : neighbours)
       cout << n << " (" << digraph.get_edge(v, n) << ")\n";
}

The reason for adding these classes is so that everyone will have a common data structure to implement graph algorithms on, which will make the code for all of these algorithms more compatible with each other. For example, while implementing topological sort for a directed graph, you can pass the graph object to the DFS method without having to rewrite it to match your graph's specifications.

Makes sense, but what about other graph representations? Consider Dinitz algorithm, where you might want to represent it as doubly linked list of the edges. Are we free to use other representations, whenever these are not applicable.
Another question is how much you aim your code to be OOP i.e. files with classes for data structures that the algo uses, as I usually write my algorithms in one "big" file (most of them do not exceed 200 lines with none exceeding 500).

Yes, you can use other representations where its necessary.
And as for programming paradigm, I use classes to define data structures, and in programs that don't require any user-defined data types, I use modular (procedural) programming. File size doesn't matter. The program should be easily readable and well-documented.

Waiting to add the data structures then :).

hello faheel, I would like to contribute graph algos.

Hello @alxmjo and @faheel!
I am new to the open-source community, and I find this repo a great place to start contributing.
May I ask about the progress of the graph implementation (Adjacency Matrix and/or List)?  I could start by implementing them. If that's being taken care of already, I would like to implement any graph algorithm, such as Dijkstra's algorithm or graph traversal algorithms (DFS/BFS). Please let me know. Thanks.

There are several parts to this:

Implement data structures for graph algorithms.
Implement individual algorithms based on these data structures.

With that in mind, I'm going to close this issue and open new issues specific to the issues above. See ______.


On non-EN systems, csv exported from Excel may be separated by semicolon

Show in the material how to read that instead:
df = pd.read_csv('your_file.csv', sep=';')

And decimal dots may become decimal commas.


Two "an" in presale form

When you sign up it says "Are you an an accredited investor?" There are two "an" in the sentence.

We'll need to fix all the 'msgid' strings in the translation '.po' files as well.

This got fixed.


Update prop-types dependency

prop-types 15.6.0 contains an unnecessary dependency on fbjs.

Coverage remained the same at 100.0% when pulling 76ffe0f8b65473bb77135ab1f119b13127ff2a33 on cipater:master into ff834d0667f437c9d0affcd0208c2b5ce09e92ac on ethanselzer:master.


Generate API keys doc outdated

I've just begun my adventure into automating publishing an extension to the Chrome store. I found this package and was super excited about how simple it should make this process.
However, when attempting to follow the "How to generate Google API keys" doc, I ran into the following error:

ALT - API solution not found with service name: chromewebstore
Have you seen this? Is the doc outdated, or have I done something wrong on my end?
Thanks!

This official guide from Google helped me to workaround the outdated doc on requesting access / refresh tokens:
https://developer.chrome.com/webstore/using_webstore_api#beforeyoubegin

Even the official Google guide seems to be out-of-date now.  It says:

In the sidebar on the left, select APIs & auth.
In the displayed list of available APIs, set the status of the Chrome Web Store API to ON.

There's no "APIs & auth" on the left.  You have to click Library and then search for store, which will bring up the Chrome Web Store API.  Then click that API and click Enable, rather than ON, on the next page.
Even with that fixed, I'm still getting 'Response code 400 (Bad Request)' when trying to publish.


bundle outdated incorrectly says "Bundle up to date!"

Running 'bundle outdated' with bundler 1.13.6 always generates
Fetching gem metadata from https://rubygems.org/.............
Fetching version metadata from https://rubygems.org/..
Fetching dependency metadata from https://rubygems.org/.
Resolving dependencies...

Bundle up to date!

I also deleted my Gemfile.lock and ran bundle.  This caused a bunch of new gems to be installed which suggested bundler wasn't telling the truth.  I downgraded bundler to 1.12.5 and ran bundle outdated again.  It generated a totally different response this time:
Fetching gem metadata from https://rubygems.org/
Fetching version metadata from https://rubygems.org/
Fetching dependency metadata from https://rubygems.org/
Resolving dependencies........

Outdated gems included in the bundle:
  * actionview-encoded_mail_to (newest 1.0.8, installed 1.0.7, requested = 1.0.7) in group "default"
  * ancestry (newest 2.2.2, installed 2.1.0, requested = 2.1.0) in group "default"
  * bullet (newest 5.4.2, installed 5.3.0, requested ~> 5.3.0) in group "development"
  * capistrano (newest 3.6.1, installed 3.5.0, requested = 3.5.0) in group "development"
  * capistrano-rails (newest 1.2.0, installed 1.1.8, requested ~> 1.1.6) in group "development"
  * capybara (newest 2.10.1, installed 2.8.1, requested ~> 2.8.0) in group "test"
  * mysql2 (newest 0.4.5, installed 0.4.4, requested = 0.4.4) in group "default"
  * rails_config (newest 0.99.0, installed 0.4.2, requested = 0.4.2) in group "default"
  * selenium-webdriver (newest 3.0.0, installed 2.53.4, requested ~> 2.53.0) in group "test"
  * sitemap_generator (newest 5.2.0, installed 5.1.0, requested ~> 5.1.0) in group "default"
  * web-console (newest 3.4.0, installed 3.3.1, requested ~> 3.3.1) in group "development"
  * json (newest 2.0.2, installed 1.8.3)
  * libv8 (newest 5.3.332.38.1, installed <IP_ADDRESS>)
  * rdoc (newest 5.0.0, installed 4.3.0)
  * slop (newest 4.4.1, installed 3.6.0)
  * yajl-ruby (newest 1.3.0, installed 1.2.1)

I uninstalled bundler 1.12.5 and tried going back to 1.13.0.  I got the same Bundle up to date! message.
I'm using Ubuntu 16.04.1 in a Virtualbox VM, Ruby 2.3.1, gem 2.6.8, rvm 1.27.0.
Oddly enough, I'm not seeing this problem on my work machine which is using the exact same versions as above.

I am seeing the same behavior on macOS 10.12.1. With this bundle environment:
$ bundle env
Environment

    Bundler   1.13.6
    Rubygems  2.6.8
    Ruby      2.3.1p112 (2016-04-26 revision 54768) [x86_64-darwin16]
    Git       2.10.2

Bundler settings

and the following Gemfile:
$ cat Gemfile
source 'https://rubygems.org'

gem "aws-sdk"
gem "bugsnag"
gem "mixpanel-ruby"
gem "poseidon_cluster"

group :development do
  gem "bundler"
  gem "byebug"
  gem "foreman"
  gem "minitest"
  gem "mocha"
  gem "pry"
  gem "rake"
end

bundle outdated gives this incorrect output:
$ bundle outdated
Fetching gem metadata from https://rubygems.org/............
Fetching version metadata from https://rubygems.org/.
Resolving dependencies...

Bundle up to date!

However, running bundle update behaves very differently and (correctly) updates a bunch of outdated gems:
$ bundle update
Fetching gem metadata from https://rubygems.org/............
Fetching version metadata from https://rubygems.org/.
Resolving dependencies...
Installing jmespath 1.3.1 (was 1.1.3)
Using bundler 1.13.6
Installing bugsnag 5.0.1 (was 2.8.12)
Installing rake 11.3.0 (was 10.4.2)
Using thor 0.19.1
Using metaclass 0.0.4
Using method_source 0.8.2
Installing byebug 9.0.6 (was 6.0.2) with native extensions
Installing coderay 1.1.1 (was 1.1.0)
Installing minitest 5.9.1 (was 5.8.1)
Using mixpanel-ruby 2.2.0
Using poseidon 0.0.5
Using zookeeper 1.4.11
Using slop 3.6.0
Installing foreman 0.82.0 (was 0.78.0)
Installing mocha 1.2.1 (was 1.1.0)
Using zk 1.9.6
Installing aws-sdk-core 2.6.18 (was 2.1.29)
Using poseidon_cluster 0.3.3
Installing pry 0.10.4 (was 0.10.2)
Installing aws-sdk-resources 2.6.18 (was 2.1.29)
Installing aws-sdk 2.6.18 (was 2.1.29)
Bundle updated!

This appears to be a duplicate of #4979 (PR #5105). If y'all agree I can close this one.

@chrisimo That issue suggests that 1.13.0 does not show all outdated gems. However, in my case 1.13.6 does not show any gems as outdated, but 1.13.5 correctly lists as outdated all gems that are updated when bundle update runs, so I don’t think it is the same issue?!

@chrismo I just uninstalled bundler from my system, cloned the fork/branch used in PR #5105, built the gem and installed it locally.  The output for bundle outdated now matches the output when I'm using bundler 1.12.5.  I agree with @vandrijevik that the two issues are different, but it looks like PR #5105 fixes both.  I vote for closing the issue; we can reopen if needed.


Fixes listing errors

Fixes JS listing errors
Changes

Fixes several minor linting errors (max-len mostly). Adds BASE_JS_PATH constant where applicable.

Testing

No change other than less linting warnings.

Review

@jimmynotjim
@KimberlyMunoz
@sebworks

:+1:

Sorry, should have waited to finish what I was doing and run it locally. I'm getting line length warnings on L:14 and L:22 of browse-basic/index.js

Sorry, should have waited to finish what I was doing and run it locally. I'm getting line length warnings on L:14 and L:22 of browse-basic/index.js

Yeah saw that too, but since that prototype page will be disappearing I left it as is.

Instead of using BASE_JS_PATH how about creating a resolver module?

since that prototype page will be disappearing I left it as is.

But you updated that index file here -> https://github.com/cfpb/cfgov-refresh/pull/1189/files#diff-ab5532b35635d4f7336eda8c7e4b7b34R19
Might as well do it so that if this gets copied to it's final home, we're not adding more warnings.

Instead of using BASE_JS_PATH how about creating a resolver module?

Like as a npm module or as a js module in the test directory (otherwise the resolver module itself would have the same path resolution issue)? Any idea if path do what I'm trying to do here?

Might as well do it so that if this gets copied to it's final home, we're not adding more warnings.
Alright, fine! :-)

Fixed in https://github.com/cfpb/cfgov-refresh/commit/4d33e5597f8a3966a7fc36c9cba9b8bd0fd70fd9

Are you referring to https://nodejs.org/api/path.html#path_path_relative_from_to?

@sebworks I'm not seeing a unified test entry point for a global path resolver function. JS is used in both the acceptance tests (protractor) and the unit tests (not-protractor) so the only layer that knows about those is gulp and that seems like too far up to be defining functions those use. I think a npm module is the way to go, but that would have to happen outside of this PR.

sounds good :+1:

:+1:


Remove the argument 'temperauture' from the EigenData2 class.

Hello @ionizationcalc! Thanks for submitting the PR.

In the file nei/classes/eigenvaluetable.py, following are the PEP8 issues :

Line 14:1: E302 expected 2 blank lines, found 1
Line 106:80: E501 line too long (80 > 79 characters)
Line 141:28: E202 whitespace before ']'
Line 176:5: E265 block comment should start with '# '
Line 176:5: E303 too many blank lines (2)
Line 176:80: E501 line too long (80 > 79 characters)
Line 179:5: E265 block comment should start with '# '
Line 179:80: E501 line too long (80 > 79 characters)
Line 190:80: E501 line too long (161 > 79 characters)
Line 193:80: E501 line too long (149 > 79 characters)
Line 304:23: E211 whitespace before '('
Line 304:26: E231 missing whitespace after ','
Line 314:25: E231 missing whitespace after ','

In the file nei/classes/tests/test_eigenvaluetable.py, following are the PEP8 issues :

Line 10:1: E265 block comment should start with '# '
Line 10:80: E501 line too long (80 > 79 characters)
Line 12:1: E265 block comment should start with '# '
Line 12:80: E501 line too long (80 > 79 characters)
Line 16:1: E265 block comment should start with '# '
Line 18:1: E265 block comment should start with '# '
Line 19:1: E302 expected 2 blank lines, found 1
Line 24:22: E225 missing whitespace around operator
Line 25:30: E261 at least two spaces before inline comment
Line 32:25: E231 missing whitespace after ','
Line 48:1: E265 block comment should start with '# '
Line 49:1: E302 expected 2 blank lines, found 1
Line 71:30: E225 missing whitespace around operator
Line 77:1: E302 expected 2 blank lines, found 1
Line 116:1: E302 expected 2 blank lines, found 1
Line 129:17: E261 at least two spaces before inline comment
Line 130:17: E261 at least two spaces before inline comment
Line 135:22: E225 missing whitespace around operator
Line 144:18: E261 at least two spaces before inline comment
Line 156:22: E225 missing whitespace around operator
Line 160:1: E302 expected 2 blank lines, found 1


Sublist tests pass with no implementation

http://exercism.io/submissions/bc21579f3bf54f6d99a39093d8396157
A member of my Kata group reports that all tests pass with that implementation. It's, uh, very concise. But I don't think it's accurate.

The simple fix for this is an extra test for checking for unique return values, so I threw together the pull request for that.
That implementation above still passes all the other tests, so there may be a better way to do it.


Mark/compute qu

Codecov Report

Merging #879 into develop will decrease coverage by 0.17%.
The diff coverage is 61.53%.

@@             Coverage Diff             @@
##           develop     #879      +/-   ##
===========================================
- Coverage    97.39%   97.22%   -0.18%
===========================================
  Files           59       59
  Lines         5455     5469      +14
===========================================
+ Hits          5313     5317       +4
- Misses         142      152      +10

Impacted Files
Coverage Δ

gpflow/models/sgpr.py
94.36% <46.66%> (-5.64%)
:arrow_down:

gpflow/params/parameterized.py
97.8% <81.81%> (-0.86%)
:arrow_down:

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 abd8587...0fa070f. Read the comment docs.


[feature request] Grab bot outfits

More data to look at:
What is available to RuneLite that would be useful for analyzing bot farms? Here's some quick-starter ideas:

Player name layout (alphnumeric, phonetic, etc...)
Player clothes/weapons
Player stats trained
Player stats not trained
etc.

hey thanks for creating an issue, we are currently using player stats (from hiscores) & player name + location data from the plugin.
we have thought about collecting clothers/ weapons, but we are pretty sure that this will mostly pollute the data set.

to many unique combinations of clothes & weapons,
not all bots have the same clothes & weapons,
a bot creator could easily change or randomize his clothes & weapons

Thanks for the feedback, we are open for any suggestions, hypothesis on how we can improve our detection, plugin & user experience

Thank you for your comment. We'll consider this for later after verifying that our model works well - but at this time it may be problematic to include for the reasons listed above by @extreme4all.

keeping open, to avoid duplicates

what if you gather the data and just store it? You don't have to feed it to your learning algo.
It could be a per-account type of "flag". in the future you could use it to help with predictions.
At the very minimum, detecting wooden shield and bronze sword would be IDEAL. I see hundred of combat lvl 70+ accounts still using tutorial island gear! They're obviously bots.

Ah I get what you are saying because I do see a lot of bots wearing the same gear - but at this stage we can't make use of that data for the following reasons:

Adding 11 columns to ~700K players + a gradual increase per week, at this stage, would put a strain on our system's database in terms of query speed and size.

We may have to categorize every gearset out there to simplify it for the model, while possible through the wiki, may not be as beneficial at this stage as getting more hiscore data and location data from Jagex - and improving the parameters of our models for the ensemble.

The plugin is not equipped to handle gear info at this time.

The models are not equipped to handle gear info as well, at this moment. We would like to try and make use of what data we can in our system.

I like the idea, but we don't have the capacities to make it work at this moment - I also had this idea earlier on. These things come in steps. You have to build a foundation before you can start adding walls and windows.

I'll keep this equipment idea up as we will consider it for the future, once we have built a good foundation for the project :)

We can look into it :)

Implemented in #88

Badass!


Allow "EV Energy Charged" to be added to the energy dashboard of Home Assistant (mqtt integration)

Home Assistant's energy dashboard requires "state_class": "total_increasing"
This change add it to "EV Energy Charged"

I think EV Energy Charged is not of state class total_increasing.
Definition:
"total_increasing, a monotonically increasing total, e.g. an amount of consumed gas, water or energy. When supported, the accumulated growth of the sensor's value since it was first added is updated hourly."
EV Energy Charged is reset to zero every new session, so IMHO it is not total_increasing....

When looking at the stats again, I see it's resetting every session. I just installed the SmartEVSE and during the first session it was total_increasing ;-)
Sorry for wasting you're time, and thanks for spotting my interpretation mistake


glslify appears to be a production dep

I've been trying to use deck.gl in a webpack project, and have encountered a few snags. At first I thought glslify simply needed to be listed in dependencies rather than devDependencies, but I think there may be more subtlety here, so I figured I'd create an issue.
Either way, glslify does appear to be a production dependency, even in the dist.

@mike-marcacci
deck.gl is pre transpiled with the babel-glslify plugin - all references to glslify in the dist folder (which is what the app should consume) should have been removed. Sounds like your webpack setup was still accessing src folder for some reason.
deck.gl is extensively tested with browserify but not with webpack. A webpack example PR would be welcome.

Hi @ibgreen - thanks for the response; taking your comment into consideration, I have reattempted to integrate deck.gl, but I definitely see references to glslify inside the dist, including deckgl.js and several of the layers:

I definitely see references to glslify inside the dist

@mike-marcacci - Yes it looks like your are correct. For now, we will move glslify to dependencies on dev branch and republish.


Avoid possible deadlock in otPlatRadioTransmit for CC2538

In situations where lots of traffic is present on the 6LoWPAN network, it is possible for the CC2538 to receive many frames whilst preparing to transmit.  This can be exacerbated by blocking I/O calls being executed within the OpenThread user application, causing incoming frames to be missed.
The result is the transceiver finite state machine winds up in the RX overflow state, and will refuse to enter normal receive mode until the RX buffers are flushed.  Similarly, it is possible that delays within the CC2538 cause a delay in writing transmit data, causing a TX underflow.  Both of these cause a deadlock as the CPU waits for a flag that never gets set.
We should instead detect these conditions, and try to handle them to prevent deadlocks.

Err whoops… few failed builds in that lot… let me fix that. :-)

A heads up, that last push was a re-base against master to resolve a conflict.

I've just re-based the branch again to bring in some of the other fixes and get everything in sync with OpenThread master.
Last commit seems to inadvertently dragged some autotools changes in, I'm not sure why this stuff gets modified when I do a build.  I've hopefully rolled those changes back in this last force-push. :-)

Code has once again been re-based off master.  I believe I've addressed the review comments in earlier commits, but given how long it's been and the fact that I've had to re-base this code several times now, it might need reviewing again.
That, or is it just easier to close the pull request as a "won't fix"?  It is getting time consuming to re-base this branch every few months.

@sjlongland, thanks again for contributing this.  Apologies for the (long) delay in processing this PR.

Many thanks. :-)


Fixing zappa certify on Python3.6, again.

Description
Fixes certify on Python 3.6.

Coverage remained the same at 72.615% when pulling ff738506df8e15052de35e60846fc89ebddd2917 on kimvais:master into 42b1565a8a62bfd6ab315528a82802f5e7a2a12c on Miserlou:master.


Updates failing to load: "Update.pkg is damaged and can't be opened"

Issue reported by a user.
macOS 10.14.6

A new update is available
Update
"Update.pkg" is damaged and can't be opened. You should move it to the Trash.

Fixed in 0.4.2


Rename to geojson-simplify?

I think simplify is more descriptive of what we are doing. tidy sounds like cleaning up, but it's not clear what that really means.

"Simplify" is pretty overloaded in the space. I think many would think this must be Douglas-Peucker algorithm variant like simplify-js. This particular algorithm is probably closer to something like a lowpass filter.

I agree with @morganherlocker - this isn't simplification in the common sense of the term.