The Override discord object returns a string for the allow key instead of an integer so get_enum_from_payload fails to convert values there to the PermissionFlags enum on line 100 of models/channel.py:
Lines 100 to 101 in 5b0661d
allow = get_enum_from_payload(payload, PermissionFlags, "allow", required=True)
deny = get_enum_from_payload(payload, PermissionFlags, "deny", required=True)
Raising such an error:
truncated...
File "/home/goldy/Documents/projects/goldy/python/.testing/boncord-testing/main.py", line 28, in main
channel = await TextChannel.fetch(bot, 863416694092333080)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/goldy/Documents/projects/goldy/python/goldy-boncord/src/boncord/models/channel.py", line 391, in fetch
return cls.from_payload(bot, payload)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/goldy/Documents/projects/goldy/python/goldy-boncord/src/boncord/models/channel.py", line 354, in from_payload
overwrites = [Overwrite.from_payload(o) for o in payload["permission_overwrites"]]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/goldy/Documents/projects/goldy/python/goldy-boncord/src/boncord/models/channel.py", line 354, in <listcomp>
overwrites = [Overwrite.from_payload(o) for o in payload["permission_overwrites"]]
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/goldy/Documents/projects/goldy/python/goldy-boncord/src/boncord/models/channel.py", line 100, in from_payload
allow = get_enum_from_payload(payload, PermissionFlags, "allow", required=True)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/goldy/Documents/projects/goldy/python/goldy-boncord/src/boncord/internal/payload.py", line 47, in get_enum_from_payload
return enum_(obj)
^^^^^^^^^^
File "/usr/lib/python3.11/enum.py", line 714, in __call__
return cls.__new__(cls, value)
^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/enum.py", line 1145, in __new__
raise exc
File "/usr/lib/python3.11/enum.py", line 1122, in __new__
result = cls._missing_(value)
^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/enum.py", line 1385, in _missing_
raise ValueError(
ValueError: '2147552256' is not a valid PermissionFlags
This pr fixes this by casting the value to an int if the enum inherits from enum.IntFlag. We could possibly add onto this in the future for other types.
The [Override](https://discord.com/developers/docs/resources/channel#overwrite-object) discord object returns a string for the `allow` key instead of an integer so `get_enum_from_payload` fails to convert values there to the `PermissionFlags` enum on line 100 of [models/channel.py](https://codeberg.org/EmmaTech/boncord/src/commit/5b0661d1bb13d7945d23dcfdedd08b362e6ed35c/src/boncord/models/channel.py#L100-L101):
https://codeberg.org/EmmaTech/boncord/src/commit/5b0661d1bb13d7945d23dcfdedd08b362e6ed35c/src/boncord/models/channel.py#L100-L101
Raising such an error:
```
truncated...
File "/home/goldy/Documents/projects/goldy/python/.testing/boncord-testing/main.py", line 28, in main
channel = await TextChannel.fetch(bot, 863416694092333080)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/goldy/Documents/projects/goldy/python/goldy-boncord/src/boncord/models/channel.py", line 391, in fetch
return cls.from_payload(bot, payload)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/goldy/Documents/projects/goldy/python/goldy-boncord/src/boncord/models/channel.py", line 354, in from_payload
overwrites = [Overwrite.from_payload(o) for o in payload["permission_overwrites"]]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/goldy/Documents/projects/goldy/python/goldy-boncord/src/boncord/models/channel.py", line 354, in <listcomp>
overwrites = [Overwrite.from_payload(o) for o in payload["permission_overwrites"]]
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/goldy/Documents/projects/goldy/python/goldy-boncord/src/boncord/models/channel.py", line 100, in from_payload
allow = get_enum_from_payload(payload, PermissionFlags, "allow", required=True)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/goldy/Documents/projects/goldy/python/goldy-boncord/src/boncord/internal/payload.py", line 47, in get_enum_from_payload
return enum_(obj)
^^^^^^^^^^
File "/usr/lib/python3.11/enum.py", line 714, in __call__
return cls.__new__(cls, value)
^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/enum.py", line 1145, in __new__
raise exc
File "/usr/lib/python3.11/enum.py", line 1122, in __new__
result = cls._missing_(value)
^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/enum.py", line 1385, in _missing_
raise ValueError(
ValueError: '2147552256' is not a valid PermissionFlags
```
This pr fixes this by casting the value to an int if the enum inherits from `enum.IntFlag`. We could possibly add onto this in the future for other types.