tree 20b85bf9082f9ccbc570c821918d3c14304828bc
parent 5a8807fee63528650da981943eadd82fc33b0272
author Stefan Agner <stefan@agner.ch> 1685023054 +0200
committer GitHub <noreply@github.com> 1685023054 -0400
gpgsig -----BEGIN PGP SIGNATURE-----
 
 wsBcBAABCAAQBQJkb2lOCRBK7hj4Ov3rIwAAie0IAF37qcoQy4sZI4625OeMqASP
 BkvgU0BuEqWyQwLnAppwp9OK/Dehx68yokOkdPOk35KqVeAB9zp2R4bH5erh2HSF
 pr6Yrsa62dxU0V1AYCSTGkvpqShhtYZSogZZwnB5U8hImaxgYp4Jd8I9B967my+f
 a8vOmOhyJoXX+okljBDo4QvQC7R6ZmPOEPAOoGhXYNzzfLsDOfhPO6+FNPFeqFz5
 144Nodl92Ff6P74aXWubBooa0oex3Mesxa1oH5H+MHXf4905WDsdNnxxqSgR631s
 JyetZOpUOgp1djkxyEFVMbsMkupiIFDIxFzXXu3BAKVCGW+dAqMHt99mCWZWIcM=
 =h/EC
 -----END PGP SIGNATURE-----
 

[python] Fix Cluster objects datatypes on Python 3.11 (#26729)

* [python] Fix Cluster objects datatypes on Python 3.11

It seems that Python 3.11 requires the custom data type Nullable to
implement the __hash__() function, otherwise initializing dataclass
annotated objects fail with the following stack trace:

```
  File "/home/sag/projects/project-chip/connectedhomeip-v1.1/.environment/pigweed-venv/lib/python3.11/site-packages/chip/clusters/Objects.py", line 385, in Commands
    @dataclass
     ^^^^^^^^^
  File "/usr/lib/python3.11/dataclasses.py", line 1223, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "/usr/lib/python3.11/dataclasses.py", line 1213, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/dataclasses.py", line 958, in _process_class
    cls_fields.append(_get_field(cls, name, type, kw_only))
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/dataclasses.py", line 815, in _get_field
    raise ValueError(f'mutable default {type(f.default)} for field '
ValueError: mutable default <class 'chip.clusters.Types.Nullable'> for field capacity is not allowed: use default_factory
```

Since all instances of Nullable are the same "value", we can return a
static 0 as hash value.

* [python] Mark Nullable type frozen

* address linter error

* Revert dataclass frozen

* Add comment