4d1fe98604
This implements (most of) the proposal in #122743: * Add a new `IDP_FLAG_STATIC_TYPE` IDProperty flag. * Update `BPy_IDProperty_Map_ValidateAndCreate` and related to never change an existing property type if statically typed. The biggest change happens in bpy assignement code, since instead of replacing the old exisitng property by a newly created one, and copying over a few settings, now the old property is kept if possible, and a new one is only created if needed. And in case the existing property is statically typed, if it cannot be re-used to store the given value, and error is reported and it remains unchanged. `IDP_ARRAY` is also supported for basic numeric types, so 'vector' properties and such work as expected. Lentgh is considered as part of the static type (i.e. one can only assign a 3 components py sequence to a 3-len array property, etc.). Such in-place update is not yet implemented for `IDP_IDPARRAY` and `IDP_GROUP` types. While important (especially the group one), they are not that critical for the current issues related to changing IDProperty types.