Exports with nulleable values has a different naming in types than in clients.

When a value is nulleable in types is exported as Nullable_Addr however in client is exported as NullableAddr

can you possibly provide a JSON schema for this?

yeah thank you, this is the JSON Schema:
{
  "contract_name": "vectis-remote-tunnel",
  "contract_version": "0.1.0",
  "idl_version": "1.0.0",
  "instantiate": {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "title": "InstantiateMsg",
    "type": "object",
    "required": [
      "chain_config",
      "dao_config"
    ],
    "properties": {
      "chain_config": {
        "$ref": "#/definitions/ChainConfig"
      },
      "dao_config": {
        "$ref": "#/definitions/DaoConfig"
      },
      "init_ibc_transfer_mod": {
        "anyOf": [
          {
            "$ref": "#/definitions/IbcTransferChannels"
          },
          {
            "type": "null"
          }
        ]
      }
    },
    "additionalProperties": false,
    "definitions": {
      "Binary": {
        "description": "Binary is a wrapper around Vec<u8> to add base64 de/serialization with serde. It also adds some helper methods to help encode inline.\n\nThis is only needed as serde-json-{core,wasm} has a horrible encoding for Vec<u8>. See also <https://github.com/CosmWasm/cosmwasm/blob/main/docs/MESSAGE_TYPES.md>.",
        "type": "string"
      },
      "CanonicalAddr": {
        "$ref": "#/definitions/Binary"
      },
      "ChainConfig": {
        "type": "object",
        "required": [
          "denom"
        ],
        "properties": {
          "denom": {
            "description": "Denom of the current chain",
            "type": "string"
          },
          "remote_factory": {
            "description": "The Factory that has the remote features on the local chain",
            "anyOf": [
              {
                "$ref": "#/definitions/CanonicalAddr"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false
      },
      "DaoConfig": {
        "type": "object",
        "required": [
          "addr",
          "connection_id",
          "dao_tunnel_port_id"
        ],
        "properties": {
          "addr": {
            "description": "DAO addr on dao chain",
            "type": "string"
          },
          "connection_id": {
            "description": "The local connection_id that is bounded to the remote chain light client This can be queried by the using the `IbcPacket` when receiving the ibc message IbcPacket.dest.channel_id and IbcPacket.dest.port_id",
            "type": "string"
          },
          "dao_tunnel_channel": {
            "description": "The channel_id to be used to call to the dao-tunnel contract on dao-chain This can be updated by the dao-tunnel forwarding message from the DAO",
            "type": [
              "string",
              "null"
            ]
          },
          "dao_tunnel_port_id": {
            "description": "The src.port_id from the connection This is bounded to the contract address on the remote chain `wasm.<contract_address>`, i.e. the dao-tunnel contract address",
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "IbcTransferChannels": {
        "description": "Returned when IBC_TRANSFER_MODULES are queried",
        "type": "object",
        "required": [
          "endpoints"
        ],
        "properties": {
          "endpoints": {
            "description": "(connection_id, channel_id) The channel_id are for channel already established",
            "type": "array",
            "items": {
              "type": "array",
              "items": [
                {
                  "type": "string"
                },
                {
                  "type": "string"
                }
              ],
              "maxItems": 2,
              "minItems": 2
            }
          }
        },
        "additionalProperties": false
      }
    }
  },
  "execute": {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "title": "ExecuteMsg",
    "oneOf": [
      {
        "description": "Executed by proxy wallets for Dao actions",
        "type": "object",
        "required": [
          "dao_actions"
        ],
        "properties": {
          "dao_actions": {
            "type": "object",
            "required": [
              "msg"
            ],
            "properties": {
              "msg": {
                "$ref": "#/definitions/RemoteTunnelPacketMsg"
              }
            },
            "additionalProperties": false
          }
        },
        "additionalProperties": false
      },
      {
        "description": "Transfer native tokens to another chain Fund amount is forward from the MessageInfo.funds",
        "type": "object",
        "required": [
          "ibc_transfer"
        ],
        "properties": {
          "ibc_transfer": {
            "type": "object",
            "required": [
              "receiver"
            ],
            "properties": {
              "receiver": {
                "$ref": "#/definitions/Receiver"
              }
            },
            "additionalProperties": false
          }
        },
        "additionalProperties": false
      }
    ],
    "definitions": {
      "Binary": {
        "description": "Binary is a wrapper around Vec<u8> to add base64 de/serialization with serde. It also adds some helper methods to help encode inline.\n\nThis is only needed as serde-json-{core,wasm} has a horrible encoding for Vec<u8>. See also <https://github.com/CosmWasm/cosmwasm/blob/main/docs/MESSAGE_TYPES.md>.",
        "type": "string"
      },
      "Cw20ReceiveMsg": {
        "description": "Cw20ReceiveMsg should be de/serialized under `Receive()` variant in a ExecuteMsg",
        "type": "object",
        "required": [
          "amount",
          "msg",
          "sender"
        ],
        "properties": {
          "amount": {
            "$ref": "#/definitions/Uint128"
          },
          "msg": {
            "$ref": "#/definitions/Binary"
          },
          "sender": {
            "type": "string"
          }
        }
      },
      "Duration": {
        "description": "Duration is a delta of time. You can add it to a BlockInfo or Expiration to move that further in the future. Note that an height-based Duration and a time-based Expiration cannot be combined",
        "oneOf": [
          {
            "type": "object",
            "required": [
              "height"
            ],
            "properties": {
              "height": {
                "type": "integer",
                "format": "uint64",
                "minimum": 0.0
              }
            },
            "additionalProperties": false
          },
          {
            "description": "Time in seconds",
            "type": "object",
            "required": [
              "time"
            ],
            "properties": {
              "time": {
                "type": "integer",
                "format": "uint64",
                "minimum": 0.0
              }
            },
            "additionalProperties": false
          }
        ]
      },
      "EmbeddedLogo": {
        "description": "This is used to store the logo on the blockchain in an accepted format. Enforce maximum size of 5KB on all variants.",
        "oneOf": [
          {
            "description": "Store the Logo as an SVG file. The content must conform to the spec at https://en.wikipedia.org/wiki/Scalable_Vector_Graphics (The contract should do some light-weight sanity-check validation)",
            "type": "object",
            "required": [
              "svg"
            ],
            "properties": {
              "svg": {
                "$ref": "#/definitions/Binary"
              }
            },
            "additionalProperties": false
          },
          {
            "description": "Store the Logo as a PNG file. This will likely only support up to 64x64 or so within the 5KB limit.",
            "type": "object",
            "required": [
              "png"
            ],
            "properties": {
              "png": {
                "$ref": "#/definitions/Binary"
              }
            },
            "additionalProperties": false
          }
        ]
      },
      "ExecuteMsg": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "receive"
            ],
            "properties": {
              "receive": {
                "$ref": "#/definitions/Cw20ReceiveMsg"
              }
            },
            "additionalProperties": false
          },
          {
            "type": "object",
            "required": [
              "unstake"
            ],
            "properties": {
              "unstake": {
                "type": "object",
                "required": [
                  "amount"
                ],
                "properties": {
                  "amount": {
                    "$ref": "#/definitions/Uint128"
                  },
                  "relayed_from": {
                    "type": [
                      "string",
                      "null"
                    ]
                  }
                }
              }
            },
            "additionalProperties": false
          },
          {
            "type": "object",
            "required": [
              "claim"
            ],
            "properties": {
              "claim": {
                "type": "object",
                "properties": {
                  "relayed_from": {
                    "type": [
                      "string",
                      "null"
                    ]
                  }
                }
              }
            },
            "additionalProperties": false
          },
          {
            "type": "object",
            "required": [
              "update_config"
            ],
            "properties": {
              "update_config": {
                "type": "object",
                "properties": {
                  "duration": {
                    "anyOf": [
                      {
                        "$ref": "#/definitions/Duration"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "manager": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "owner": {
                    "type": [
                      "string",
                      "null"
                    ]
                  }
                }
              }
            },
            "additionalProperties": false
          },
          {
            "type": "object",
            "required": [
              "add_hook"
            ],
            "properties": {
              "add_hook": {
                "type": "object",
                "required": [
                  "addr"
                ],
                "properties": {
                  "addr": {
                    "type": "string"
                  }
                }
              }
            },
            "additionalProperties": false
          },
          {
            "type": "object",
            "required": [
              "remove_hook"
            ],
            "properties": {
              "remove_hook": {
                "type": "object",
                "required": [
                  "addr"
                ],
                "properties": {
                  "addr": {
                    "type": "string"
                  }
                }
              }
            },
            "additionalProperties": false
          }
        ]
      },
      "GovecExecuteMsg": {
        "oneOf": [
          {
            "description": "Transfer is a base message to move tokens to another account without triggering actions",
            "type": "object",
            "required": [
              "transfer"
            ],
            "properties": {
              "transfer": {
                "type": "object",
                "required": [
                  "amount",
                  "recipient"
                ],
                "properties": {
                  "amount": {
                    "$ref": "#/definitions/Uint128"
                  },
                  "recipient": {
                    "type": "string"
                  },
                  "relayed_from": {
                    "type": [
                      "string",
                      "null"
                    ]
                  }
                },
                "additionalProperties": false
              }
            },
            "additionalProperties": false
          },
          {
            "description": "This is implemented such that the sender MUST be a DAO proposal module The recipient will always be the sender, aka the proposal contract called by `get_deposit_msg` required interface in proposal_single",
            "type": "object",
            "required": [
              "proposal_transfer"
            ],
            "properties": {
              "proposal_transfer": {
                "type": "object",
                "required": [
                  "deposit",
                  "proposer"
                ],
                "properties": {
                  "deposit": {
                    "$ref": "#/definitions/Uint128"
                  },
                  "proposer": {
                    "type": "string"
                  }
                },
                "additionalProperties": false
              }
            },
            "additionalProperties": false
          },
          {
            "description": "Burn is a base message to destroy tokens forever Logic checks that caller only has exactly 1 vote token in their balance",
            "type": "object",
            "required": [
              "burn"
            ],
            "properties": {
              "burn": {
                "type": "object",
                "properties": {
                  "relayed_from": {
                    "type": [
                      "string",
                      "null"
                    ]
                  }
                },
                "additionalProperties": false
              }
            },
            "additionalProperties": false
          },
          {
            "description": "Send is a base message to transfer tokens to a contract and trigger an action on the receiving contract.",
            "type": "object",
            "required": [
              "send"
            ],
            "properties": {
              "send": {
                "type": "object",
                "required": [
                  "amount",
                  "contract",
                  "msg"
                ],
                "properties": {
                  "amount": {
                    "$ref": "#/definitions/Uint128"
                  },
                  "contract": {
                    "type": "string"
                  },
                  "msg": {
                    "$ref": "#/definitions/Binary"
                  },
                  "relayed_from": {
                    "type": [
                      "string",
                      "null"
                    ]
                  }
                },
                "additionalProperties": false
              }
            },
            "additionalProperties": false
          },
          {
            "description": "If authorized, creates 1 new vote token and adds to the new wallets .",
            "type": "object",
            "required": [
              "mint"
            ],
            "properties": {
              "mint": {
                "type": "object",
                "required": [
                  "new_wallet"
                ],
                "properties": {
                  "new_wallet": {
                    "type": "string"
                  }
                },
                "additionalProperties": false
              }
            },
            "additionalProperties": false
          },
          {
            "description": "Updates the mint cap of the contract.Authorized by the DAO permission: executed by dao only",
            "type": "object",
            "required": [
              "update_mint_cap"
            ],
            "properties": {
              "update_mint_cap": {
                "type": "object",
                "properties": {
                  "new_mint_cap": {
                    "anyOf": [
                      {
                        "$ref": "#/definitions/Uint128"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "additionalProperties": false
              }
            },
            "additionalProperties": false
          },
          {
            "description": "Updates the staking contract address.Authorized by the DAO permission: executed by dao only",
            "type": "object",
            "required": [
              "update_config_addr"
            ],
            "properties": {
              "update_config_addr": {
                "type": "object",
                "required": [
                  "new_addr"
                ],
                "properties": {
                  "new_addr": {
                    "$ref": "#/definitions/UpdateAddrReq"
                  }
                },
                "additionalProperties": false
              }
            },
            "additionalProperties": false
          },
          {
            "description": "If authorized, updates marketing metadata. Setting None/null for any of these will leave it unchanged. Setting Some(\"\") will clear this field on the contract storage permission: executed by dao only",
            "type": "object",
            "required": [
              "update_marketing"
            ],
            "properties": {
              "update_marketing": {
                "type": "object",
                "properties": {
                  "description": {
                    "description": "A longer description of the token and it's utility. Designed for tooltips or such",
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "marketing": {
                    "description": "The address (if any) who can update this data structure",
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "project": {
                    "description": "A URL pointing to the project behind this token.",
                    "type": [
                      "string",
                      "null"
                    ]
                  }
                },
                "additionalProperties": false
              }
            },
            "additionalProperties": false
          },
          {
            "description": "If set as the \"marketing\" role on the contract, upload a new URL, SVG, or PNG for the token",
            "type": "object",
            "required": [
              "upload_logo"
            ],
            "properties": {
              "upload_logo": {
                "$ref": "#/definitions/Logo"
              }
            },
            "additionalProperties": false
          }
        ]
      },
      "Logo": {
        "description": "This is used for uploading logo data, or setting it in InstantiateData",
        "oneOf": [
          {
            "description": "A reference to an externally hosted logo. Must be a valid HTTP or HTTPS URL.",
            "type": "object",
            "required": [
              "url"
            ],
            "properties": {
              "url": {
                "type": "string"
              }
            },
            "additionalProperties": false
          },
          {
            "description": "Logo content stored on the blockchain. Enforce maximum size of 5KB on all variants",
            "type": "object",
            "required": [
              "embedded"
            ],
            "properties": {
              "embedded": {
                "$ref": "#/definitions/EmbeddedLogo"
              }
            },
            "additionalProperties": false
          }
        ]
      },
      "Receiver": {
        "type": "object",
        "required": [
          "addr",
          "connection_id"
        ],
        "properties": {
          "addr": {
            "type": "string"
          },
          "connection_id": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "RemoteTunnelPacketMsg": {
        "description": "The IBC Packet Msg allowed dispatched by remote-tunnel",
        "oneOf": [
          {
            "description": "A special case where the Factory is the only one who can call this",
            "type": "object",
            "required": [
              "mint_govec"
            ],
            "properties": {
              "mint_govec": {
                "type": "object",
                "required": [
                  "wallet_addr"
                ],
                "properties": {
                  "wallet_addr": {
                    "type": "string"
                  }
                },
                "additionalProperties": false
              }
            },
            "additionalProperties": false
          },
          {
            "type": "object",
            "required": [
              "govec_actions"
            ],
            "properties": {
              "govec_actions": {
                "$ref": "#/definitions/GovecExecuteMsg"
              }
            },
            "additionalProperties": false
          },
          {
            "type": "object",
            "required": [
              "stake_actions"
            ],
            "properties": {
              "stake_actions": {
                "$ref": "#/definitions/ExecuteMsg"
              }
            },
            "additionalProperties": false
          },
          {
            "type": "object",
            "required": [
              "proposal_actions"
            ],
            "properties": {
              "proposal_actions": {
                "type": "object",
                "required": [
                  "msg",
                  "prop_module_addr"
                ],
                "properties": {
                  "msg": {
                    "$ref": "#/definitions/ExecuteMsg"
                  },
                  "prop_module_addr": {
                    "type": "string"
                  }
                },
                "additionalProperties": false
              }
            },
            "additionalProperties": false
          }
        ]
      },
      "Uint128": {
        "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```",
        "type": "string"
      },
      "UpdateAddrReq": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "dao"
            ],
            "properties": {
              "dao": {
                "type": "string"
              }
            },
            "additionalProperties": false
          },
          {
            "type": "object",
            "required": [
              "dao_tunnel"
            ],
            "properties": {
              "dao_tunnel": {
                "type": "string"
              }
            },
            "additionalProperties": false
          },
          {
            "type": "object",
            "required": [
              "factory"
            ],
            "properties": {
              "factory": {
                "type": "string"
              }
            },
            "additionalProperties": false
          },
          {
            "type": "object",
            "required": [
              "staking"
            ],
            "properties": {
              "staking": {
                "type": "string"
              }
            },
            "additionalProperties": false
          },
          {
            "type": "object",
            "required": [
              "proposal"
            ],
            "properties": {
              "proposal": {
                "type": "string"
              }
            },
            "additionalProperties": false
          }
        ]
      }
    }
  },
  "query": {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "title": "QueryMsg",
    "oneOf": [
      {
        "type": "object",
        "required": [
          "dao_config"
        ],
        "properties": {
          "dao_config": {
            "type": "object",
            "additionalProperties": false
          }
        },
        "additionalProperties": false
      },
      {
        "type": "object",
        "required": [
          "chain_config"
        ],
        "properties": {
          "chain_config": {
            "type": "object",
            "additionalProperties": false
          }
        },
        "additionalProperties": false
      },
      {
        "type": "object",
        "required": [
          "ibc_transfer_channels"
        ],
        "properties": {
          "ibc_transfer_channels": {
            "type": "object",
            "properties": {
              "limit": {
                "type": [
                  "integer",
                  "null"
                ],
                "format": "uint32",
                "minimum": 0.0
              },
              "start_after": {
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "additionalProperties": false
          }
        },
        "additionalProperties": false
      },
      {
        "type": "object",
        "required": [
          "next_job_id"
        ],
        "properties": {
          "next_job_id": {
            "type": "object",
            "additionalProperties": false
          }
        },
        "additionalProperties": false
      }
    ]
  },
  "migrate": null,
  "sudo": null,
  "responses": {
    "chain_config": {
      "$schema": "http://json-schema.org/draft-07/schema#",
      "title": "ChainConfigResponse",
      "type": "object",
      "required": [
        "denom"
      ],
      "properties": {
        "denom": {
          "type": "string"
        },
        "remote_factory": {
          "anyOf": [
            {
              "$ref": "#/definitions/Addr"
            },
            {
              "type": "null"
            }
          ]
        }
      },
      "additionalProperties": false,
      "definitions": {
        "Addr": {
          "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.",
          "type": "string"
        }
      }
    },
    "dao_config": {
      "$schema": "http://json-schema.org/draft-07/schema#",
      "title": "DaoConfig",
      "type": "object",
      "required": [
        "addr",
        "connection_id",
        "dao_tunnel_port_id"
      ],
      "properties": {
        "addr": {
          "description": "DAO addr on dao chain",
          "type": "string"
        },
        "connection_id": {
          "description": "The local connection_id that is bounded to the remote chain light client This can be queried by the using the `IbcPacket` when receiving the ibc message IbcPacket.dest.channel_id and IbcPacket.dest.port_id",
          "type": "string"
        },
        "dao_tunnel_channel": {
          "description": "The channel_id to be used to call to the dao-tunnel contract on dao-chain This can be updated by the dao-tunnel forwarding message from the DAO",
          "type": [
            "string",
            "null"
          ]
        },
        "dao_tunnel_port_id": {
          "description": "The src.port_id from the connection This is bounded to the contract address on the remote chain `wasm.<contract_address>`, i.e. the dao-tunnel contract address",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "ibc_transfer_channels": {
      "$schema": "http://json-schema.org/draft-07/schema#",
      "title": "IbcTransferChannels",
      "description": "Returned when IBC_TRANSFER_MODULES are queried",
      "type": "object",
      "required": [
        "endpoints"
      ],
      "properties": {
        "endpoints": {
          "description": "(connection_id, channel_id) The channel_id are for channel already established",
          "type": "array",
          "items": {
            "type": "array",
            "items": [
              {
                "type": "string"
              },
              {
                "type": "string"
              }
            ],
            "maxItems": 2,
            "minItems": 2
          }
        }
      },
      "additionalProperties": false
    },
    "next_job_id": {
      "$schema": "http://json-schema.org/draft-07/schema#",
      "title": "uint64",
      "type": "integer",
      "format": "uint64",
      "minimum": 0.0
    }
  }
}

https://github.com/CosmWasm/ts-codegen/pull/83

Successfully published:

<EMAIL_ADDRESS>


Angular-CLI-Based-Template: SSR Seems broken in Angular CLI 1.7.0-beta.0

@SteveSandersonMS After upgrade to Angular CLI version 1.7.0-beta.0 the SSR seems to be broken and throw below error:
ERROR in ./src/main.server.ts
Module parse failed: Unexpected token (34:21)
You may need an appropriate loader to handle this file type.
| core_1.enableProdMode();
| exports.default = aspnet_prerendering_1.createServerRenderer(function (params) {
|     var _a = (module as any).exports, AppServerModule = _a.AppServerModule, AppServerModuleNgFactory = _a.AppServerModuleNgFactory, LAZY_MODULE_MAP = _a.LAZY_MODULE_MAP;
|     var options = {
|         document: params.data.originalHtml,
 @ multi ./src/main.server.ts

Can this be due to the changes introduced in https://github.com/angular/angular-cli/commit/aa90e42 ?

Yes, it looks like different docs will be needed for 1.7.0. But we'll have to wait until 1.7.0 ships to know what the final instructions would be. Thanks for reporting it.

@SteveSandersonMS  1.7 is now released, any update on this issue?

I've updated the template to Angular CLI 1.7.0 and the same SSR code is still working correctly. Verified this in dev builds and prod (AOT) builds, both with and without lazy-loading. I guess they already fixed whatever they broke.

Yes you are right, I can confirm its working perfectly with V1.7. Thank you so much :)

The final 2.0.0 templates are now released.
dotnet new --install Microsoft.DotNet.Web.Spa.ProjectTemplates::2.0.0


Update changeset's config.json

Why did we make this change? I'm not sure we really need changelogs for examples 🤔

@thomasheyenbrock because I removed examples from workspace and forget update changeset's config.json that ignore examples


Tracking issue for Fortran frontend test failures on multi_sdfg branch.

This is a tracking bug for the many Fortran frontend tests that are currently failing on multi_sdfg branch. I'll add more to the list as I find them.
Things to consider

Many tests programs are invalid Fortran code. We need to verify first that what we parse are compilable Fortran in the first place (e.g. with gfortran -Wall -c).
For the same reason as above, even if the test is passing, there is a small possibility that the test would fail if a valid Fortran code is given.

At commit d0025e3

[ ] tests/fortran/intrinsic_all_test.py: 8 out of 9 tests fail. There are three failure points, which might also be related themselves:

>       return ast_internal_classes.Array_Subscript_Node(name=node.name, type=node.type, indices=newer_indices, line_number=node.line_number)
E       AttributeError: 'Array_Subscript_Node' object has no attribute 'type'
../../dace/frontend/fortran/ast_transforms.py:1269: AttributeError

>           offsets = scope_vars.get_var(node.parent, node.name.name).offsets
E           AttributeError: 'NoneType' object has no attribute 'parent'
../../dace/frontend/fortran/ast_transforms.py:1804: AttributeError

>           offsets = scope_vars.get_var(node.parent, node.name.name).offsets
E           AttributeError: 'NoneType' object has no attribute 'parent'
../../dace/frontend/fortran/ast_transforms.py:1804: AttributeError

[ ] tests/fortran/intrinsic_any_test.py: 8 out of 9 tests fail. Same as above.
[ ] tests/fortran/intrinsic_count_test.py: 8 out of 9 tests fail. Same as above.
[ ] tests/fortran/intrinsic_merge_test.py: 5 out of 6 tests fail. Same as above.
[ ] tests/fortran/intrinsic_minmaxval_test.py: 4 out of 4 tests fail. Same as above.
[ ] tests/fortran/intrinsic_product_test.py: 2 out of 3 tests fail. Same as above.
[ ] tests/fortran/intrinsic_sum_test.py: 4 out of 4 tests fail. Same as above.
[ ] tests/fortran/intrinsic_blas_test.py: 2 out of 2 tests fail. Both at the same failure point:

>                       data_path = edge.data.data.split(".")
E                       AttributeError: 'NoneType' object has no attribute 'split'
../../dace/sdfg/replace.py:203: AttributeError

[ ] tests/fortran/intrinsic_math_test.py: 1 out of 18 tests fail. Reasons:

>               self.nodes[child.name_pointer.name] = child.name_target
E               AttributeError: 'Data_Ref_Node' object has no attribute 'name'
../../dace/frontend/fortran/ast_transforms.py:2409: AttributeError

[ ] tests/fortran/prune_test.py: 2 out of 3 tests fail. These will pass if normalizing_offset parameter is set to True.

>       assert (a[2] == 40)
E       assert 42.0 == 40
prune_test.py:97: AssertionError

[ ] tests/fortran/parent_test.py: 1 out of 2 tests fail. Reason:

>       specification = module.specification_part.specifications[0]
E       IndexError: list index out of range
parent_test.py:84: IndexError

[ ] tests/fortran/array_attributes_test.py: 1 out of 10 tests fail. Reason: it generates an invalid SDFG that does not compile.
[ ] tests/fortran/pointer_removal_test.py: 3 out of 4 tests fail. Reasons:

>                       for symbol in var_decl.sizes:
E                       TypeError: 'NoneType' object is not iterable
../../dace/frontend/fortran/ast_transforms.py:2452: TypeError

>       result = super(NestedDict, self).__getitem__(token)
E       KeyError: 's->val1'
../../dace/sdfg/sdfg.py:60: KeyError

>       assert (a[2, 0] == 1410)
E       assert 1.0 == 1410
pointer_removal_test.py:147: AssertionError

Another set of failures, this time mostly related to structs.
At commit d0025e3

[ ] tests/fortran/type_test.py: 8 of 13 tests pass. Each of them fails in a different way! Reasons:

Segmentation fault.

>                   raise ValueError("Unknown type " + type)
E                   ValueError: Unknown type simple_type (__f2dace_SA_w_d_0_s_3: Scalar (dtype=int), __f2dace_SOA_w_d_0_s_3: Scalar (dtype=int), __f2dace_SA_w_d_1_s_4: Scalar (dtype=int), __f2dace_SOA_w_d_1_s_4: Scalar (dtype=int), w: Array (dtype=float, shape=(__f2dace_SA_w_d_0_s_3, __f2dace_SA_w_d_1_s_4)))
../../dace/frontend/fortran/fortran_parser.py:318: ValueError

>           raise RuntimeError(
                f'Structure attribute {node.attr} is not a member of the structure {struct.name} type definition'
            )
E           RuntimeError: Structure attribute wx is not a member of the structure simple_type type definition
../../dace/transformation/passes/lift_struct_views.py:43: RuntimeError

>                   actually_used_pointer_node_finder=ast_transforms.StructPointerChecker(i,cycle[(cycle.index(i)+1)%len(cycle)],point_name)
E                   TypeError: StructPointerChecker.__init__() missing 3 required positional arguments: 'structs_lister', 'struct_dep_graph', and 'analysis'
../../dace/frontend/fortran/fortran_parser.py:2720: TypeError

>           raise FortranSyntaxError(string, "")
E           fparser.two.utils.FortranSyntaxError: at line 27
E           >>>                    st.a.shape=[st.a_size]
../../../../dace/venv/lib/python3.12/site-packages/fparser/two/Fortran2003.py:270: FortranSyntaxError

E               dace.sdfg.validation.InvalidSDFGNodeError: Node validation failed: Missing symbols on nested SDFG: ['n'] (at state stateinternal_function1, node internal_function1)
E               Originating from source code at File "/Users/pmz/gitspace/tmpdace/dace/dace/frontend/fortran/fortran_parser.py", line 1722
../../dace/sdfg/validation.py:393: InvalidSDFGNodeError

>       raise KeyError("Variable {} has not been defined".format(name))
E       KeyError: 'Variable st->a has not been defined'
../../dace/codegen/dispatcher.py:84: KeyError

>       return self.typename or self.type.__name__
E       AttributeError: 'pointer' object has no attribute 'typename'
../../dace/dtypes.py:416: AttributeError

[ ] tests/fortran/type_array_test.py: 3 out of 3 tests fail.

Fails to compile:

E               /Users/pmz/gitspace/tmpdace/dace/tests/fortran/.dacecache/type2_array_test_function0/src/cpu/type2_array_test_function0.cpp:34:46: error: '__f2dace_SA_w_d_0_s_2_pprog_p_1' was not declared in this scope
E                  34 |             d_out_1 = my_arr_0_in_pprog_w[(((__f2dace_SA_w_d_0_s_2_pprog_p_1 * (1 - __f2dace_SOA_w_d_1_s_3_pprog_p_1)) - __f2dace_SOA_w_d_0_s_2_pprog_p_1) + 1)];
E                     |                                              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

>                   raise ValueError("Unknown type " + type)
E                   ValueError: Unknown type simple_type (w: Array (dtype=float, shape=(5, 5)))
../../dace/frontend/fortran/fortran_parser.py:318: ValueError

>                   raise ValueError("Unknown type " + type)
E                   ValueError: Unknown type simple_type (__f2dace_SA_w_d_0_s_2: Scalar (dtype=int), __f2dace_SOA_w_d_0_s_2: Scalar (dtype=int), __f2dace_SA_w_d_1_s_3: Scalar (dtype=int), __f2dace_SOA_w_d_1_s_3: Scalar (dtype=int), w: Array (dtype=float, shape=(__f2dace_SA_w_d_0_s_2_pprog_p_3, __f2dace_SA_w_d_1_s_3_pprog_p_3)))
../../dace/frontend/fortran/fortran_parser.py:318: ValueError

[ ] tests/fortran/struct_test.py: 2 out of 2 tests fail. Reasons:

>       return self.typename or self.type.__name__
E       AttributeError: 'pointer' object has no attribute 'typename'
../../dace/dtypes.py:416: AttributeError

>       size_lhs = lhs_(0).itemsize
E       TypeError: abstract class
../../dace/dtypes.py:574: TypeError

[ ] tests/fortran/nested_array_test.py: 1 out of 2 tests fail. Reason:

>           raise FortranSyntaxError(string, "")
E           fparser.two.utils.FortranSyntaxError: at line 5
E           >>>                     simple_type
../../../../dace/venv/lib/python3.12/site-packages/fparser/two/Fortran2003.py:270: FortranSyntaxError

[ ] tests/fortran/missing_func_test.py: 1 out of 2 tests fail. Reason:

>       assert (a[1, 0] == 6.5)
E       assert 5.5 == 6.5
missing_func_test.py:102: AssertionError

[ ] tests/fortran/cond_type_test.py: 1 out of 2 tests fail. Reason:

>       raise KeyError("Variable {} has not been defined".format(name))
E       KeyError: 'Variable ptr_patch->id has not been defined'
../../dace/codegen/dispatcher.py:84: KeyError

[ ] tests/fortran/global_test.py: 1 out of 1 test fails. Reason:

>               raise InvalidSDFGInterstateEdgeError(
                    f'Undefined symbols in edge: {undef_syms}. Add those with '
                    '`sdfg.add_symbol()` or define outside with `dace.symbol()`', sdfg, eid)
E               dace.sdfg.validation.InvalidSDFGInterstateEdgeError: Undefined symbols in edge: {'__f2dace_SOA_w_d_2_s_17'}. Add those with `sdfg.add_symbol()` or define outside with `dace.symbol()` (at edge "tmp_parfor_2=__f2dace_SOA_w_d_2_s_17" (BeginFOR_l_19_c_19 -> GuardFOR_l_19_c_19)
../../dace/sdfg/validation.py:82: InvalidSDFGInterstateEdgeError

[ ] tests/fortran/advanced_optional_args_test.py: 1 out of 1 test fails. This goes away with normalize_offset = True.

>       assert res[0] == 5
E       assert 42 == 5
advanced_optional_args_test.py:87: AssertionError

@pratyai Thanks for the hard work of collecting those!
@acalotoiu Should just we make normalize_offset = True the default case everywhere?

The first problem with intrinsic should be fixable by adding VOID; I tested it on one example and it works.
I also found the reason why the second one fails. The problem is that we need a very specific order of transformations: we need to apply intrinsic before running call argument extraction. Otherwise, the argument is replaced with a temporary one, and I have no chance of understanding what the input is. So, ArgumentExtractor needs to run after intrinsic.
@pratyai @acalotoiu I'm 100% sure I fixed this problem at some point, and I see now that we sometimes call this transformation twice - likely, the fixed version was broken again. I will try to fix it, but it would be good to finally merge all versions of create_sdfg_from_* into a single one. There are multiple dependencies on the order of transformations, and it's not good to keep multiple definitions of it.
So far, I pushed three commits that make intrinsic's all test work. I will retest it on other as well, but again - we should just have one parsing function.


Nothing is displayed

Hi Dude... tried to use your library, but it doesn't work. I even went as far as declaring the permission for the service you have in the project but that didn't help. So essentially basic logs work but nothing gets displayed to the screen as you have stated it should.
Thanks

sonny sent you an invitation
Twitter helps you stay connected with what's happening right now and with the people and organizations you care about.
Accept invitation
https://twitter.com/i/0614e3ab-bd75-466a-94ed-16cfc0ff2c8b
--
You can unsubscribe from receiving email notifications from Twitter at anytime. For general inquiries, please visit us at Twitter Support.
Unsubscribe: https://twitter.com/i/o?t=1&cn=aW52aXRlX3NlbGZfc2VydmU%3D&iid=f64b36eca5f246528e80fdec87c67b15&uid=0&c=ioJ8jZCMXMtCFY2zK%2BymgbjHojVc03bzDP9BQTxCpROOJx6UohhXAMA2j3UOZoBdVeY1IAOSovYEW8zD1fAd3KlVS1rrbN630lLBEhZXgX%2FslvnCXAJPxtZq3KAq3lc9dyOOBg0xIIW9xCiDMz3pEg%3D%3D&nid=244+26
Need help?
https://support.twitter.com


Rebuild base images

We need to rebuild the base images because it looks like apt-daily may (still!!!) not be disabled even though I masked both the timer and the service.  I modified the prep code to just delete these files from /etc/systemd/system and hopefully these will be gone forever now.

[x] Rebuild hyper-v base image
[x] Rebuild xenserver base image

DONE: I've rebuilt and published both base images.


chore(main): release 0.11.0

:robot: I have created a release beep boop
0.11.0 (2024-10-17)
Features

add "sahko" command (f0a91fb)
UX tweaks to "sahko" command (1794658)

Bug Fixes

deps: update rust crate anyhow to v1.0.81 (f395f35)
deps: update rust crate anyhow to v1.0.82 (ca6efdc)
deps: update rust crate anyhow to v1.0.83 (82f9cea)
deps: update rust crate anyhow to v1.0.85 (f764495)
deps: update rust crate anyhow to v1.0.86 (a19d70f)
deps: update rust crate anyhow to v1.0.87 (feb8f5d)
deps: update rust crate anyhow to v1.0.88 (d918fff)
deps: update rust crate anyhow to v1.0.89 (f9d6add)
deps: update rust crate cached to v0.49.3 (a6d3240)
deps: update rust crate cached to v0.50.0 (c1fa6ee)
deps: update rust crate cached to v0.51.0 (620e28d)
deps: update rust crate cached to v0.51.1 (903870c)
deps: update rust crate cached to v0.51.2 (6906af7)
deps: update rust crate cached to v0.51.3 (041311e)
deps: update rust crate cached to v0.51.4 (561b869)
deps: update rust crate cached to v0.52.0 (79263c9)
deps: update rust crate cached to v0.53.0 (16770d3)
deps: update rust crate cached to v0.53.1 (25ad6e5)
deps: update rust crate chrono to v0.4.37 (6e0d5ac)
deps: update rust crate chrono to v0.4.38 (d67a823)
deps: update rust crate chrono-tz to v0.10.0 (412007b)
deps: update rust crate chrono-tz to v0.9.0 (50a5fff)
deps: update rust crate clap to v4.5.10 (ca489ff)
deps: update rust crate clap to v4.5.11 (64dcc1c)
deps: update rust crate clap to v4.5.13 (75b5db2)
deps: update rust crate clap to v4.5.14 (57593bb)
deps: update rust crate clap to v4.5.15 (90b67ce)
deps: update rust crate clap to v4.5.16 (612074f)
deps: update rust crate clap to v4.5.17 (f88cd82)
deps: update rust crate clap to v4.5.18 (6f7b575)
deps: update rust crate clap to v4.5.19 (1efe3de)
deps: update rust crate clap to v4.5.2 (5deb74b)
deps: update rust crate clap to v4.5.20 (0107d83)
deps: update rust crate clap to v4.5.3 (fdb4c8e)
deps: update rust crate clap to v4.5.4 (f12ae02)
deps: update rust crate clap to v4.5.6 (c0df943)
deps: update rust crate clap to v4.5.7 (834898d)
deps: update rust crate clap to v4.5.8 (e590ab4)
deps: update rust crate clap to v4.5.9 (f10b648)
deps: update rust crate futures to v0.3.31 (48fcfc4)
deps: update rust crate indexmap to v2.6.0 (c4caaa3)
deps: update rust crate lazy_static to v1.5.0 (621d767)
deps: update rust crate log to v0.4.21 (129313d)
deps: update rust crate log to v0.4.22 (e4c53c7)
deps: update rust crate regex to v1.10.4 (4f7a313)
deps: update rust crate regex to v1.10.5 (d27efee)
deps: update rust crate regex to v1.10.6 (b5cfa8b)
deps: update rust crate regex to v1.11.0 (52e4843)
deps: update rust crate reqwest to v0.11.25 (96de4b1)
deps: update rust crate reqwest to v0.11.26 (69b0e45)
deps: update rust crate reqwest to v0.11.27 (fc7af19)
deps: update rust crate reqwest to v0.12.8 (dfbf0f1)
deps: update rust crate serde to v1.0.198 (2f7f3d7)
deps: update rust crate serde to v1.0.199 (33f43a2)
deps: update rust crate serde to v1.0.200 (6e0bf65)
deps: update rust crate serde to v1.0.201 (2c97352)
deps: update rust crate serde to v1.0.202 (e964ff7)
deps: update rust crate serde to v1.0.203 (2c11e2b)
deps: update rust crate serde to v1.0.204 (15c23d6)
deps: update rust crate serde to v1.0.205 (2b56020)
deps: update rust crate serde to v1.0.206 (e3470b2)
deps: update rust crate serde to v1.0.207 (ccce250)
deps: update rust crate serde to v1.0.208 (dac2804)
deps: update rust crate serde to v1.0.209 (4abfaf7)
deps: update rust crate serde to v1.0.210 (52d3ed2)
deps: update rust crate serde_json to v1.0.115 (3c8f0dd)
deps: update rust crate serde_json to v1.0.116 (dc060e2)
deps: update rust crate serde_json to v1.0.117 (0369656)
deps: update rust crate serde_json to v1.0.118 (b0c11c0)
deps: update rust crate serde_json to v1.0.119 (3678afc)
deps: update rust crate serde_json to v1.0.120 (9d2f7e3)
deps: update rust crate serde_json to v1.0.121 (3de6bd7)
deps: update rust crate serde_json to v1.0.122 (b3f659f)
deps: update rust crate serde_json to v1.0.124 (edb65b9)
deps: update rust crate serde_json to v1.0.125 (d0bea4e)
deps: update rust crate serde_json to v1.0.127 (0de1054)
deps: update rust crate serde_json to v1.0.128 (983f365)
deps: update rust crate teloxide to v0.13.0 (5065a95)
deps: update rust crate tokio to v1.37.0 (7fd5280)
deps: update rust crate tokio to v1.38.0 (b29a834)
deps: update rust crate tokio to v1.38.1 (1e3a61a)
deps: update rust crate tokio to v1.39.1 (f8b7e4d)
deps: update rust crate tokio to v1.39.2 (a5c4510)
deps: update rust crate tokio to v1.39.3 (cbe8f38)
deps: update rust crate tokio to v1.40.0 (7a61e28)

This PR was generated with Release Please. See documentation.

:robot: Release is at https://github.com/FruitieX/add-bot-rs/releases/tag/v0.11.0 :sunflower:


Return error id OpenStackNet misses OpenStackNetConfig owner ref

In case of backup restore the owner ref needs to get updated by the OpenStackNetConfig controller. If some other reconcile using the OpenStackNet happens first, this reference is missing and e.g. the OpenStackIPSet gets stuck waiting for IPs to be processed.

/cherry-pick v1.3.x


Webpack configurations as NPM modules

The one common problem I find with most Angular starters is the difficulty in updating the configurations and the core functionality that they provide, once you've cloned the starter project, made customisations, and developed your app.
I'd like to suggest splitting the webpack configuration into modules that can be installed via NPM,  and merged using webpack-merge to produce the final configuration. I know that there have already been suggestions for splitting the configuration per environment, but here I'm talking about doing that per feature of the build.
For example, one might want to use Stylus and not Sass, and this kind of split would allow them to simply install the Stylus module instead of the Sass module.
I've already spent some time working on a project called ngpack to implement something like that. It mostly has the same configurations as angular2-webpack (copied actually), and the example app's webpack.config.js doesn't have much in it, other than loading the ngpack, adding extensions and applying some customisations. I'd also like to point out the simplification of enabling HMR in app.module.ts, which is done with a simple require and a method call.
Basically, I'm trying to reduce the amount of build/dev-related code that is inside the main project repository, and move them out into installable NPM modules, in order to simplify the configuration file and allow for easier upgrades, while still making room for customisations to be made per project.
I personally think this is a better approach (obviously), so I'm going to ask if you would adopt this method? And if you wouldn't, I'm genuinely interested to know why, and I'm open to finding out better ways of improving the maintainability of build-related code in our projects.

I see your point and it is a really really valid point, but the idea of a starter is just that, being a starter. You clone it for your app and you modify it to your needs. You are not really supposed to keep up to date with the starter anymore.
You can come to the changelog and say, ah, he added webpack 2, let's see how he did it so I can update mine.
I don't really expect that any application out there with my starter is going to use my configuration as is, because as you said, you probably want to make different decisions, so it is not really easy to come back and make updates.
I like your project, it is a good idea, but my goal with this starter is just different. A nice starting point for your app, not meant to be always up to date with your app.
Honestly, if what you need is a starter that is up to date with what you do, you should use the CLI.


fix(landing): responsiveness

Fixed Responsiveness for:-

[x] Footer Links
[x] Feature's Cards
[x] Pricing Table

@ixartz sorry, but can you run ci

F

So the ci doesn't tell me problem in one time, it's new problem to use lower case f.
To fix it I need new pr, isn't it would be spam?
Squashing this pr with right title would pass the ci on main repo (last opt)

Merging/Squashing with a failing test is not an option.
Lint-staged/commitlint should prevent you to push your code. Please don't bypass lint-staged/commitlint.


Fix read timeout and add default timeout values.

By setting the read deadline in streamReader.Read(), the deadline was
extended by the read timeout on each subsequent call. To avoid this, the
deadline is set in FCGIClient.Request(), before the first read occurs.
Additionally, the read_timeout and connect_timeout properties now have a
default value of 60 seconds.
See #1094.

As I look over this and start on the write_timeout property I'm thinking we might extract the rwc field on FCGIClient into a (unexported?) type that implements the net.Conn interface.
That would simplify things a bit. Thoughts?

Thanks for taking initiative on this, @ericdreeves ! I don't have a chance to look at it yet but maybe somebody else does?

Great, thank you for making progress on this!! :tada:


Re-enable llvm optimizations for AArch64

In order to Reland https://github.com/iree-org/iree/pull/18256 we will have to disable llvm optimizations for AArch64 which is creating numeric error in an exisiting test. The upstream llvm issue on this is here
https://github.com/llvm/llvm-project/issues/105869
This is a tracking issue to change the optimization setting in IREE when this is fixed.

We decided to not do this, and disable the test for now.


Issue with page rendering in horizontal paginated mode.

This issue was solved in a more recent version of ttu reader but it still exists in the one used for this app.
I am referring to this: https://github.com/ttu-ttu/ebook-reader/issues/170.

Updated to app store.


img sometimes not present, style.display is None

Hi, first thank you for your great work!
When I play with the img widget, sometimes the image and it's content not presented, using inspector egui, I fount that the style.display is Display::None, but image already complete load.
https://github.com/jkb0o/belly/blob/bf05d3b36136ac370ed099b3100d724b563a6c9a/crates/belly_widgets/src/img.rs#L24-L25
        app.add_system(load_img);
        app.add_system(update_img_size.after(load_img));

I try to order these systems, and it fixed the issue, but I'm not sure it should ordered or not.

That makes scenes! Thank you! There was also possible problem when image doesn't changes, but ordering systems looks good anyway.


Refactor README

Describe the problem
Our README file is getting longer and quite hard to understand, as it contains all configuration switches that exist. It is not obvious to the user what parts of the file are needed and what parts are optional.
Describe the solution you would like
Refactor the README file. Use a more use-case oriented approach. Starting with the quickstart guide ( #109 ) which explains a minimal setup, use sections to expand this setup with additional features like

Use SQL databases
Use different machines for Docker Host and Registry Hosts
Run the registry inside of Docker
Use and re-configure Traefik

Referring #132

Closed with #132


Implement async. WIP

Currently, only IT blocks have async. More to follow. I need to figure out how to make blocks work properly with disconnected block ends.

@o-lim @ajacksified , please review.

I'm not sure what you mean by disconnected block ends.  Wouldn't you just add async to it/setup/teardown/before_each/after_each blocks?  Wouldn't you just call the event loop inside the block after it returns from busted.safe(descriptor, element.run, element)?  async just means that the test or block depends on asynchronous inputs, right?  So, it's not like you should start executing the next block/test until the current block/test completes.
Maybe something like:
    local async, evloop
    element.env.async = function(loop)
      async = true
      evloop = loop
      element.env.done = done.new(loop.stop)
    end
    if pass then
      local status = busted.status('success')
      if busted.safe_publish('it', { 'test', 'start' }, element, parent) then
        status:update(busted.safe('it', element.run, element))
        if status:success() then
          status:update(busted.safe('it', evloop.run, element))
        end
        if finally then
          block.reject('pending', element)
          status:update(busted.safe('finally', finally, element))
        end
      else
        status = busted.status('error')
      end
      busted.safe_publish('it', { 'test', 'end' }, element, parent, tostring(status))
    end

Did you want to return done instead of injecting it into the environment?  Since done is not available until you call async, it might make more sense to return done in order to avoid possible confusion.

Yeah, I did want to return done. I'm glad someone else is on board with that, I got some negative feedback when I suggested it earlier. I'm going to take another pass at this this week and see if I can nail this down finally.

ping @DorianGray :trollface:

Any news about this? :)

None. I have no time. Someone else please feel free to open a PR.

Aww that's too bad - indeed with the current patch here the tests just seem to go on without waiting on the async one's completion.
Thanks for the quick reply though.


the bot doesnt read the question

in /ask command the bot cant read your message content its always null.
but its works fine with /setup channel

Hello, Mark
I was wondering if you could check if you're using the latest version of the code. It seems to be working fine for other users and myself. If it's not the most recent version, maybe you could update the code and give it a try.

im using the latest yes. i just downloaded it i dont have old versions from your code

could you show me the code of src/commands/ask.js please

const {
Client,
Interaction,
ApplicationCommandOptionType,
PermissionFlagsBits,
EmbedBuilder,
ActionRowBuilder,
ButtonBuilder,
AttachmentBuilder,
ButtonStyle,
ComponentType,
SlashCommandBuilder,
} = require("discord.js");
const { getBardResponse } = require("../handlers/functions");
const GuildSettings = require("../models/GuildSettings");
module.exports = {
data: new SlashCommandBuilder()
.setName("ask")
.setDescription("Ask Bard.")
.addStringOption((option) =>
option
.setName("quesiton")
.setDescription("Ask Question to Bard.")
.setRequired(true)
),
async execute(client, interaction) {
try {
interaction.deferReply()
const question = interaction.options.getString("question");
let guildSettings = await GuildSettings.findOne({
guildId: interaction.guild.id,
});
if (!guildSettings) {
guildSettings = new GuildSettings({ guildId: interaction.guild.id });
guildSettings.save();
}
const answer = await getBardResponse(${question});
await interaction.editReply(answer);
} catch (e) {
console.log(e);
}
},
};


Release/v0.3.0

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Comparison is base (d27b911) 96.93% compared to head (b29ea2d) 96.93%.

Additional details and impacted files
@@           Coverage Diff           @@
##             main       #3   +/-   ##
=======================================
  Coverage   96.93%   96.93%
=======================================
  Files           6        6
  Lines         163      163
=======================================
  Hits          158      158
  Misses          5        5

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


how to make the element go up and not to the left

how to make the element go up and not to the left
mode: 'vertical-stack'
if this cannot be done by standard methods in the library, you can find out the file address and the line number of the code where it can be corrected, I will fork and make a PR

I'll probably have time to focus on this over the weekend, but the code is pretty simple and you can look at it for yourself, at here. useCarouselController

https://user-images.githubusercontent.com/32405058/153103717-eda984ad-288f-4c2d-baa3-73d2034e3d49.mov
It looks fine. U can use ref next/prev method

If hava any questions i will to reopen it.


Fixing Errors in Webdriver for Private/Public Key Name Changes and CSP

This change is

Awesome!  Thanks for taking care of this.

:100:


Update code to compile w/ alpha

The barest minimal of changes to get this code building on the recent
alpha.
Exact version used:
rustc 1.0.0-nightly (44a287e6e 2015-01-08 17:03:40 -0800)

Thanks!
FYI You should probably look into maximg/thrift (branch dev-rust-thrift) this is where we will work on thrift support for Rust. I'll update the README of this repo to point there.


Branch 179578952

Push

Can one of the admins verify this patch?

@tensorflow-jenkins test this please

@tensorflow-jenkins test this please

Thanks @ekelsen!


Upgrade react-onclickoutside to 4.8.0

Ref #444

Current coverage is 95.49%

Merging #445 into master will not affect coverage as of 5ee0b3d

@@            master    #445   diff @@
======================================
  Files            9       9
  Stmts          222     222
  Branches        45      45
  Methods         91      91
======================================
  Hit            212     212
  Partial          2       2
  Missed           8       8

Review entire Coverage Diff as of 5ee0b3d

Powered by Codecov. Updated on successful CI builds.

:+1:


Bluetooth: conn: Do not crash if there is nothing to send

The bt_conn_process_tx() reads the tx_queue for any packet but
as that is using K_NO_WAIT when reading, it might return NULL.
If this happens, just return without trying to send this NULL
buffer.
Jira: ZEP-2395
Signed-off-by: Jukka Rissanen<EMAIL_ADDRESS>

bt_conn_process_tx() is only called (by process_events in hci_core.c) when k_poll() has indicated that the conn TX FIFO has data in it. So there's something missing from the analysis of the patch, and it may be fixing the wrong thing (the symptom rather than the cause)

Could be, but this PR fixes the crash issue that was reported in Jira. Please take the bug and send different fix if this is not a correct one.


Music genre Predictor

Music Genre Predictor Predicts the genre that a user might like based on its history and gender

Hey @AdityaBhate👋. Assigning you the issue.


compese web NumberInput support decimal numbers

Compose for Web 1.1.0 and 1.0.1
NumberInput doesn't accept typing in decimal numbers, as the trailing decimal point is always removed.
However it allows pasting in decimal numbers as well as putting a decimal point in between digits.
As I understand this is caused by the conversion after the keystroke, from e.g. the string "1." to the number one and then on recomposition, the number one is rendered without the trainling dot as "1", hence not letting to put in a decimal number normally.

Please check the following ticket on YouTrack for follow-ups to this issue. GitHub issues will be closed in the coming weeks.


The extension is not thread safe

Since mbuf is a true global variable
https://github.com/eklausme/php-md4c/blob/5f94bd545b4303bb642c5f5df1994ce6bb0af07b/md4c.c#L75
the extension is not suitable for running with Zend Thread-Safety (ZTS) builds of PHP. See https://www.phpinternalsbook.com/php7/extensions_design/globals_management.html#managing-request-globals for some details.

Thanks for comment.
Followed the advice given in above link.

Thank you! I found a minor issue (see #6), but otherwise it works. :)

Thanks a lot Christoph for helping out!


State not syncing across components

Describe the bug
When you modify localStorage from another tab, the state updates correctly. However when you modify state from another component, an update is not triggered. This library lacks a pub/sub to make it possible.
To Reproduce
Click one button here. The other should update as well (but it doesn't):
https://codesandbox.io/s/xenodochial-herschel-xptrbl?file=/src/App.js
Expected behavior
The state syncs for the same component (works), across components (bug) and across tabs (works). Only across components is broken now, which is very odd.
Screenshots

Desktop (please complete the following information):
All
Smartphone (please complete the following information):
All
Additional context
I'd recommend a simple pub/sub system across keys and using the provided callbacks.

@franciscop thank you for opening this issue!
This to me is expected behavior right now: syncing state is neither a function of a normal useState hook nor local storage.
So I guess the question is whether we should add some kind of functionality to sync state across components. For me, the intuitive way to do this would just be to use the useLocalStorage hook in a React context provider or some other existing state-sharing mechanism.
That being said, it's worth considering offering a mechanism to sync state using this hook, but I'd like to take a bit of time to discuss here the pros and cons of doing so.

Agreed if they were independent, but the problem is that there is a single underlying data store, so if two components go out of sync then which is the underlying saved value? It's very fragile in that instance. Now the components are a bit too much IMHO "useState()"-like with a localStorage backup, while IMHO how most people would think about them is a bit more like "localStorage"-first with useful hooks like useState, if that makes sense.
Since there's a single underlying data store, I believe it's better to consider this more akin to Redux and have a global store that keeps everything in sync than as a purely-local useState().
Note that this has some implications, like having a "set undefined to delete" but "use default value if nothing is there" is a bit confusing as well if we have a single data store, or having a default per-component that overwrites the global one (since there could be a race condition there as well if two different components have different defaults).

@jrabek thanks! Ok, sounds like this needs to go in. I believe it should be pretty doable With storage events. Please let me know if either of you wants to attempt adding it to the package. If not, I will carve out time to do it.
Thanks again!

Unfortunately storage events only work from different tabs, not within the same one:

The storage event of the Window interface fires when a storage area (localStorage) has been modified in the context of another document.
Note: This won't work on the same page that is making the changes — it is really a way for other pages on the domain using the storage to sync any changes that are made. Pages on other domains can't access the same storage objects. - MDN Docs

BTW I have since created my own full use-storage that fixed the 2 issues I opened and is more clear about overwriting vs not overwriting the storage when undefined (since using default args, it's clear that it won't be overwriting anything). But the API is different enough that I haven't made it into a PR here:
https://github.com/franciscop/use-storage

Oh nice! Will check it out.  I ended up using https://github.com/rehooks/local-storage since it fit the needs I had for what I am working on.  I haven't compared its implementation with your use-storage yet.

thx @franciscop !
I came here because the useLocalStorage hook from react-use has the same problem https://github.com/streamich/react-use/issues/1831
I noticed that many implementations of this hook have the same problem, because it was popularized on https://usehooks.com/useLocalStorage/
As @franciscop noticed, this is wrong as it leads to an inconsistency. the localStorage is the one source-of-truth and the hook always has to return that exact value.

Wait why is typescript a reason not to use a repo? Because TS helps avoiding bugs? Wouldn't that be very ironic in this context? 😎

Wait why is typescript a reason not to use a repo? Because TS helps avoiding bugs? Wouldn't that be very ironic in this context? 😎

avoiding bugs like
const [value, setVale] = useState<string[]>([])

setValue(["hello", "world"])
setValue("Bug!") // shows error with proper typings

should be reason enough

Sure, you can just add types to your project if you prefer to use TS without making libraries to also move to TS:
https://medium.com/@steveruiz/using-a-javascript-library-without-type-declarations-in-a-typescript-project-3643490015f3#3673

Sure, you can just add types to your project if you prefer to use TS without making libraries to also move to TS:
https://medium.com/@steveruiz/using-a-javascript-library-without-type-declarations-in-a-typescript-project-3643490015f3#3673

I know this ;-) Its just not a good practise, because you won't spot breaking changes. Its a pitfall that I would highly recommend to avoid.
I am thankful to everyone who contributes to open source and releases packages! But I also recommend to be cautious in what you select to use. Packages that are not in typescript (or at least have no official maintained type-definition) is one thing I would avoid. I just got burned by that.
I also think most code bases profit from typescript, it removes cognitive overhead if done right  and helps to avoid bugs.

@franciscop thank you for opening this issue!
This to me is expected behavior right now: syncing state is neither a function of a normal useState hook nor local storage.
So I guess the question is whether we should add some kind of functionality to sync state across components. For me, the intuitive way to do this would just be to use the useLocalStorage hook in a React context provider or some other existing state-sharing mechanism.
That being said, it's worth considering offering a mechanism to sync state using this hook, but I'd like to take a bit of time to discuss here the pros and cons of doing so.

Hi @nas5w , I was thinking about creating a hook myself for localStorage but then I came across your project. Actually to overcome this problem you don't need anything like context provider. You can just dispatch a storage event manually like

before or after you call localStorage.setItem in your code so the event listeners in the same document will get notified about this event as well and the state will be synced across the components on the same page. So, this way all the hook calls for the same storage key will be in sync whether it is across different tabs or different components.
I think this is the last important piece this hook is missing.


[Feature Request] Switch vs Radio trigger keys consistency

Existing Component
Yes
Component Name
Switch, Radio
Description
Switch input trigger with enter key -> https://github.com/ElemeFE/element/blob/31d31d904ddaf267951af63f9a537f07cd1dbfdb/packages/switch/src/component.vue#L20
Radio input triggers with space key -> https://github.com/ElemeFE/element/blob/31d31d904ddaf267951af63f9a537f07cd1dbfdb/packages/radio/src/radio.vue#L15
I think both should be space key. Reason is enter triggers form submit.

I think this could be made as an attribute to allow user to decide if space key or enter key should be used. This will not only not break support for existing trigger keys, and will allow customisation for different use cases. (Such as using switch input as standalone component will make sense to have enter trigger key, while using it in a long form will not, as pointed out)

ElRadio is similar to native radio. You can switch by the arrow key. For native radio, space and enter key are not supported. https://jsfiddle.net/h5m4n6zL/1/

Thank you for the example, @ziyoung ! Some observations I made from it are:

The native radio is focused collectively (can't focus to next option, thus only arrow keys switching).

I can't use arrow keys when I tab focus on ElRadio unless I click on one of the options.


disambiguate parameters (#204)

Disambiguate request parameters (#204).

Adjust the Env type to have three [Param] fields instead of one
add captureParam, formParam, queryParam and the associated captureParams, formParams, queryParams.
Add deprecation notices to param and params
adjust examples and tests

Nice to see these changes coming to scotty  !
If I may add a comment, I'm not sure it makes sense to call next when parseParam fails for query and form parameters. I believe it would provide better errors to just return a "bad request" in these cases.

Nice to see these changes coming to scotty ! If I may add a comment, I'm not sure it makes sense to call next when parseParam fails for query and form parameters. I believe it would provide better errors to just return a "bad request" in these cases.

@jfraudeau Could you share a permalink to where is this behaviour implemented? Thank you

Sure : https://github.com/ocramz/scotty/blob/289ce9f9dc812edbeefaca0c773319d4d23a7675/Web/Scotty/Action.hs#L276

@jfraudeau Good catch! But applying your suggestion would be a user-visible change, even though I don't know whether anybody actually relied on the current (buggy) behaviour or they simply worked around it.

@ocramz I think it should be ok if the change only applies to the new formParams and queryParams

I took a stab at it and added a few tests, @jfraudeau please take another look when you have time. Thanks!


fix: wrong configuration for the eth connection pool.

Context
The example listener application doesn't start due to a must provide a positive size error.
Why it doesn't work?
The must provide a positive size error is raised by the github.com/hashicorp/golang-lru/v2 package which is used by client/eth/connection_pool.go while creating the LRU caches.
The LRU cache requires a number of client URLs greater than 0, but no one was passed because of a misconfiguration in the TOML file: Config.ConnectionPool is not under the App sub-struct.
Solution

The App prefix has been removed from examples/listener/config.toml
Added checks on the length of the client's URLs set within the Config struct in the NewConnectionPoolImpl function.

@Hartick  can run make format && make lint from the project root to fix the linter

@Hartick  Would be good to add the nil check when .Add is called on the caches. Fix tests and then LGTM


Filter <!-- react-text: [number] --> comments

In the snapshots many of my strings are surrounded by <!-- react-text: [number] --> comments. These comments tend to change often for unrelated reasons, causing the snapshots to break. Is it possible to omit these comments from the output?

Never mind, these turned out to show up due to a bug of my own.


Changes for fixing grpcurl issues for ppc64le

Summary
Fix : Build was failing on ppc64le due to grpcurl package. Fixed the grpcurl issue for ppc64le.
Full changelog

Made changes to fetch working grpcurl and installed the same.
Able to complete the build successfully.

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.NishikantThorat seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.

Our makefile has since been changed to build grpcurl instead of downloading a binary. Closing this issue. Thanks for your contribution, @NishikantThorat!


Support new projects in neuro-flow templates

closes https://github.com/neuro-inc/cookiecutter-neuro-project/issues/665

Tests for windows will be fixed with removal of those work-aroudns.
Ptal, @andriihomiak , @dalazx


Keep selections at the top

If an <option> is selected and is also a Recent selection, we should make sure the version at the top of the list (in the Recents) is the selected version in the browser.

Addressed in #12.


Bead sort Readme

I would like to add Readme for bead sort

@ankitapuri could you please assign it to me


CASMPET-5823: Nexus export fix to check for space

Description
Add in check to the nexus export script to check there is enough space before taking the export.
Checklist Before Merging

[x] If I added any command snippets, the steps they belong to follow the prompt conventions (see example).
[x] If I added a new directory, I also updated .github/CODEOWNERS with the corresponding team in Cray-HPE.
[x] My commits or Pull-Request Title contain my JIRA information, or I don't have a JIRA.

This will need a backport to 1.2. Waiting for reviews before creating it.

/backport release/1.0 release/1.2


How to use Zod schema with existing TypeScript interface?

I see Zod described as a "TypeScript-first" library but am struggling to figure out how to actually integrate it with my TypeScript definitions. Is there a way to pass a TypeScript interface to my Zod schema as a generic and have my linter tell me if they're not compatible?
This is how it looks in Yup:
import { object, number, string, ObjectSchema } from 'yup';

interface Person {
  name: string;
  age?: number;
  sex: 'male' | 'female' | 'other' | null;
}

// will raise a compile-time type error if the schema does not produce a valid Person
const schema: ObjectSchema<Person> = object({
  name: string().defined(),
  age: number().optional(),
  sex: string<'male' | 'female' | 'other'>().nullable().defined(),
});

// ❌ errors:
// "Type 'number | undefined' is not assignable to type 'string'."
const badSchema: ObjectSchema<Person> = object({
  name: number(),
});

I found discussion here and here but didn't see any solution I could understand, or relied on codegen and external libraries.
I think something like this might work? But it's very boilerplatey and I don't see anything like this in the docs:
interface Person {
  name: string;
  age?: number;
  sex: "male" | "female" | "other" | null;
}

const zodSchema = z.object({
  name: z.string(),
  age: z.number().optional(),
  sex: z.enum(["male", "female", "other"]).nullable(),
});

type InferredPerson = z.infer<typeof zodSchema>;
function assertType<T>(_value: T) {}
assertType<Person>({} as InferredPerson);

Perhaps this thread might be of some help: https://github.com/colinhacks/zod/discussions/1928


Button padding missing in Outlook

In version 2.3.0, it looks like padding isn't being added to <mj-button>.
On Gmail / Inbox, it renders fine:

On Outlook, it used to render fine but now renders like this:

It looks ok in 2016 but all other outlooks are broken, I will take a look.
Here is MJML to reliably reproduce this bug.
<mjml>
  <mj-body>
    <mj-container>
      <mj-section>
        <mj-column>

          <mj-button background-color="#F63A4D" inner-padding="50px" href="#">
            Promotion
          </mj-button>
        </mj-column>
      </mj-section>
    </mj-container>
  </mj-body>
</mjml>

The padding is being applied to the anchor tag and not the parent td holding it, I swapped them and the button retains the padding on all clients (litmus).
PR #331 has a fix for this, thanks 😸

Hi, thanks for the fix @g0ddish
@iRyusa any ETA for a 2.3.1 mentioned in #331

Should be around next week~

ok thanks!

2.3.1 has been released for a while now, but try it live on mjml.io is not up to date.


Development

Fix unit test and cypress tests
Add auto deployment for development and main branches upon commit

Codecov Report

Merging #148 (5a1453d) into main (98c8ff1) will not change coverage.
The diff coverage is 100.00%.

@@           Coverage Diff           @@
##             main     #148   +/-   ##
=======================================
  Coverage   88.90%   88.90%
=======================================
  Files          52       52
  Lines        3973     3973
=======================================
  Hits         3532     3532
  Misses        441      441

Flag
Coverage Δ

unittests
88.90% <100.00%> (ø)

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

Impacted Files
Coverage Δ

api/website/testing_routes.py
42.66% <100.00%> (ø)

Continue to review full report at Codecov.

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


Fix estimate d

Still fixing the issue...

Can you remove the broken folder since you have fixed the notebook?  Can you also amend that removal to the last commit so that we don't pay the size penalty for creating the Si and Lab6 standards a second time?

Merged locally and pushed so that I could amend your last commit to move the tiff images from broken/powder_calibration to demos/powder_calibration instead of creating a new copy of them. This saves ~24 MB on the repo size.  Thanks for your work on this!  The commits have been merged into master.


Revert "[NO-QA] Temporarily remove turnstyle action to test workflow"

Reverts Expensify/App#12390

Merging this because we've got a fireroom going. No point in waiting for JS tests to finish when the code doesn't touch any JS.

See #fireroom-2022-11-02

🚀 Deployed to staging by @roryabraham in version: 1.2.23-1 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

🚀 Deployed to production by @Julesssss in version: 1.2.23-9 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅


Feat/firebase gen two single config

@posva - In response to PR suggestions here:
https://github.com/unjs/nitro/pull/1500

Thanks a lot!


What are the team’s goals for this product?

I’ll preface this by saying I’m definitely excited about and looking forward to a fully-featured official package manager for Windows. Major kudos to the team, and about damn time!
But herein lies the rub: is the goal of this project to simply provide a bare-bones app for accessing the official repository, or do you plan to make this a full-featured repo manager? Also, fully-featured will mean different things depending on your context and experience with other tools, so what is the team planning to do (and not planning to do) for this first phase, and into the next phase? I understand that everyone on this team is likely working on several projects at once, but it might be useful to know if a feature I have in mind is completely off the table due to project goals, or even if those goals haven’t yet been solidified beyond some base state.

I like where this product is going. But I would also like to know, is: How will Winget work alongside Windows Store? Are they going to be parallel ways to get software installed in Windows? Is the Store going to rely in Winget in the background? How is this relationship gonna work (if there is any at all)

The relationship between Winget and WIndows store apps is interesting. And so is how this tool is ever going to be integratable with PowerShell and thus be useful in an enterprise environment?

We've put a roadmap in the repository at https://github.com/microsoft/winget-cli/blob/master/doc/windows-package-manager-v1-roadmap.md
We decided to go open-source and release 0.1 as a preview so we could get more feedback from the community, and hopefully build a tool more people want to use.
Our next milestone will include support for installing store apps. The spec is in draft at https://github.com/microsoft/winget-cli/pull/367
There is also a request for native PowerShell support with community support (we're paying attention to 👍) at #221


Why does the demo have sharp steps in the color?

If you look at the demo (https://josephg.com/perlin/3/) you will see distinct step changes in the color.
Why does this occur? How can it be prevented so the colors transition smoothly?

It's because the color function uses Math.floor().
The actual noise function does not have the same steps.

Notice the user uses HSLA instead of RGBA

hsla is a different color scheme than rgba, (hue,light,saturation,alpha and red, green, blue, alpha)
hsla changes really quickly and i guess the colors last quite long

In case you're wondering, saturation and light are given in percentages (%)
FIX ?:
I'm not really sure, you could (maybe) use rgba instead of hsla, and initially change red, then after a certian interval change blue, after a certian interval change green, or something similar.


[release-v1.13] wathola receiver, annotate span by step number

backports https://github.com/knative/eventing/pull/7667

/cherry-pick release-v1.12

/cherry-pick release-v1.11

/retest-required

@maschmid we fixed a couple of issues in 1.13 (which lead to some CI failures). Can you rebase this PR?

/retest

/retest

/unhold

/retest
not sure why now all fail, after all was green ....

/retest-required

"origin-operator-registry:4.15" is invalid: from: Error resolving ImageStreamTag origin-operator-registry:4.15 in namespace openshift-marketplace: unable to find latest tagged image
/retest


Update README

Description
Fixes # (no issue)
Type of change
This change is a documentation update.
Change Status

[x] Complete, tested, ready to review and merge

How Has This Been Tested?

[x] Visual preview

Checklist

[x] My code follows the style guidelines of this project
[x] I have performed a self-review of my own code
[ ] My code has been reviewed by at least one peer
[x] There are no merge conflicts

 Update README.md


Clarify the behaviour of the counter metric

I tried to explain the behaviour of the counter metric, i.e. why it is always incremented by 1.
@haljin does it make a bit more sense now? Would you add anything more?

Looks good to me :+1:


Fix rank and strides computation in Fortran wrapper

This is my first change towards enabling Serialbox2 to be used with https://github.com/fortesg/fortrantestgenerator.
It tackles a general problem in the rank and strides computation in the C/Fortran wrapper when it comes to a) scalars and b) array dimensions with an actual size of 1.
You will find a test that fails with the current version under
https://github.com/chovyy/serialbox-pfunit/tree/rank
(I have already discussed with @havogt that this unit test for the Fortran interface shall be added to the test suite).
In the current version, when trying to write a scalar field, one will get an error like:
"field 'testfield_i0' has rank 1 but field with rank 0 was passed" and when writing an array with a one-sized dimension this dimension is counted in FortranWrapper::checkRank but not in Serializer::serialboxSerializerAddField2 which also leads to errors.
The strides reordering in serialboxFortranComputeStrides was also broken, afais. The inline comment said "Shift strides to the left..." but it was actually shifted to the right. It also had problems with one-sized dimensions.
I have also removed the call to checkRank in serialboxFortranComputeStrides, since I can't see a) how the rank check based on the strides can be successful with scalars and one-sized dimensions and b) why a rank check is necessary at this point. I guess, it's enough to do that in serialboxFortranSerializerCheckField.
Cheers, Christian

Hi there, this is jenkins continuous integration...
Do you want me to verify this patch?

launch jenkins

ok to test

launch jenkins

launch jenkins

@chovyy Thanks for the work! It was needed for long time ... 👍


add Pangolin to humble and rolling

Please add the following dependency to the rosdep database.
Package name:
pangolin
Package Upstream Source:
https://github.com/stevenlovegrove/Pangolin.git
Purpose of using this:
Pangolin is a UI toolkit that is widely used in the robotics and specifically the SLAM community to render user interfaces.
Please Add This Package to be indexed in the rosdistro.
humble, rolling
The source is here:
https://github.com/stevenlovegrove/Pangolin.git
Checks

[x] All packages have a declared license in the package.xml
[x] This repository has a LICENSE file
[x] This package is expected to build on the submitted rosdistro

@christianrauch, would you like to add a docs entry?

@christianrauch, would you like to add a docs entry?

I am just following the "Create a new release repository" which says

you should first open a pull request on ros/rosdistro adding a source entry for your repository

It does not mention the doc section and I also would not know what I should add there. Glimpsing over some of the other entries in the yaml, they just seem to use the same source repository url. That's redundant but I guess I could do the same if it is required.

It does not mention the doc section and I also would not know what I should add there. Glimpsing over some of the other entries in the yaml, they just seem to use the same source repository url. That's redundant but I guess I could do the same if it is required.

The doc section is generally meant to support documentation builds for the package, which often do rely on the source repository (e.g. for doxygen based API docs) it's encouraged for libraries that have API docs but not strictly required.
One thing that stands out is that the project's author is not the one submitting it but I do see @christian-rauch as a contributor of the package.xml file upstream. There's no restriction to submitting a library written by someone else as long as it does not conflict with a project already present in the rosdistro database but it is worth an FYI to @stevenlovegrove that their package is being proposed for inclusion in the rosdistro index.


UX Feedback

Hey Aaron!
Testing out Simple Slides for my presentation this weekend. Very polished overall and easy to use!
Not sure how much access you have, but my pytest talk has some silly behavior atm:

Index 3 has a giant bullet point for my first and last name
Index 10 doesn't render footnotes as expected

tbf this may be user error

Index 17 doesn't expand to viewport width (may be a limitation of absolute image size)
Index 23 shows the very first line of the python code block, but it'd be nice if it resized to show the entire codeblock
Index 24-28 formatting issues with bespoke code block
Index 32-39 ditto ^^
Index 49-50 thank you page is split across two pages

Entirely possible that it's me holding markdown wrong. Know other apps like Deckset splits pages by --- kinda like front matter in YAML.
Using macOS 12.7.4 (21H1123), Firefox 124.0.2.
Lmk if you need any more details.

FWIW this is the raw markdown if you can't bust into my account
How to write tests with pytest

whoami

Lance Stephens

DevOps Engineer
Pretty okay Pythonista 🐍

Agenda

Zoom basic tells me I have 40 minutes

I'll try to keep it to 30 minutes for the remote folks

10 minutes for Q&A

Agenda

What is pytest?
Why pytest?
Unit tests
Integration tests
Mocking
Fixtures
Demo
Q&A
Sources

What is pytest? ^1

The pytest framework makes it easy to write small,
readable tests, and can scale to support complex
functional testing for applications and libraries.

Features

Detailed info on failing assert statements (no need to remember self.assert* names)
Auto-discovery of test modules and functions
Modular fixtures for managing small or parametrized long-lived test resources
Can run unittest (including trial) test suites out of the box
Python 3.8+ or PyPy 3
Rich plugin architecture, with over 1300+ external plugins and thriving community

Why pytest?

It's very easy to get started

Barrier to entry is low compared to vanilla unittest
Supports unit tests, integration tests, and end-to-end (E2E) tests

There's a lot of community support (11K+ stars on GitHub)
Official Playwright plugin for integration and E2E testing

Wildly detailed overview by somebody else ^2

Unit tests
unittest is Python's built-in
testing framework.

The unittest unit testing framework was originally inspired by JUnit
and has a similar flavor as major unit testing frameworks in other
languages. It supports test automation, sharing of setup and shutdown
code for tests, aggregation of tests into collections, and independence
of the tests from the reporting framework.

A unit is the smallest testable part of an application.
In procedural programming, a unit could be an entire module, but it is more commonly an individual function or method.
Unit tests
Exhibit A ^4
import unittest

class TestStringMethods(unittest.TestCase):

    def test_upper(self):
        self.assertEqual('foo'.upper(), 'FOO')

    def test_isupper(self):
        self.assertTrue('FOO'.isupper())
        self.assertFalse('Foo'.isupper())

    def test_split(self):
        s = 'hello world'
        self.assertEqual(s.split(), ['hello', 'world'])
        # check that s.split fails when the separator is not a string
        with self.assertRaises(TypeError):
            s.split(2)

if __name__ == '__main__':
    unittest.main()

Integration tests

Integration testing is the phase in software testing in which the whole
software module is tested... It occurs after unit testing and before system
testing. Integration testing takes as its input modules that have been unt
tested, groups them in larger aggregates, applies tests defined in an
integration test plan to those aggregates, and delivers as its output the
integrated system ready for system testing. ^5

Integration tests
Exhibit B
import unittest

class TestBasic(unittest.TestCase):
    def setUp(self):
        # Load test data
        self.app = App(database='fixtures/test_basic.json')

    def test_customer_count(self):
        self.assertEqual(len(self.app.customers), 100)

    def test_existence_of_customer(self):
        customer = self.app.get_customer(id=10)
        self.assertEqual(customer.name, "Org XYZ")
        self.assertEqual(customer.address, "10 Red Road, Reading")

class TestComplexData(unittest.TestCase):
    def setUp(self):
        # load test data
        self.app = App(database='fixtures/test_complex.json')

    def test_customer_count(self):
        self.assertEqual(len(self.app.customers), 10000)

    def test_existence_of_customer(self):
        customer = self.app.get_customer(id=9999)
        self.assertEqual(customer.name, u"バナナ")
        self.assertEqual(customer.address, "10 Red Road, Akihabara, Tokyo")

if __name__ == '__main__':
    unittest.main()

Mocking
TODO
Fixtures
TODO
Demo
TODO
Q&A
Questions?
Thank you!
Techlahoma
The Verge OKC
Sources

This is great feedback, and I was actually looking at your slide a little bit ago. Some general thoughts to this are:

The bullet is big b/c it gets expanded along with the font-size of the text.
Footnotes currently aren't supported, though that's a neat idea; I had no idea that there were some extended markdown implementations that did that
The image also isn't expanded b/c of what you said; it won't get stretched beyond its current resolution. This is something I could be convinced to change and make it always stretch to the full viewport width (at the risk of getting blurry), as you're not the first person who brought it up.
I think the Thank You page is behaving as expected; you might have edited it to look good.

That brings me to the biggest issue you brought up which I hadn't ever thought about; code blocks that have line breaks. Currently slides are separated by double new lines (\n\n or \r\n), regardless of how it is formatted; that's why your code blocks are looking weird and are separated across multiple slides.
This is something that I probably will want to address, and I'm surprised I haven't really run into it myself yet. I'll check it out in the near future!
Thanks so much for the feedback, it is much appreciated.

The image also isn't expanded b/c of what you said; it won't get stretched beyond its current resolution. This is something I could be convinced to change

Think the only deal breaker is the code blocks tbh. But the other stuff is nice to have. I'll toy around with formatting tomorrow when I finish the presentation.
Great work, sir! Very pleasant experience in my first go-around


Should have a [CHAR]$ProgressPreference to allow users to specify the character to use in the progress bar!

Steps to reproduce
Expected behavior
Actual behavior
Environment data

> $PSVersionTable

Should have customizable progress bars ;)

How about a parameter to Write-Progress instead?
You could always use $PSDefaultParameterValues as an alternative to a preference variable.

Is this something that should be added to PSStyle or is it something that doesn't need to happen with the new Minimal progress view?