BYML (Python)¶
Note
Because of the similarities between the C++ APIs and the Python APIs, only the former will be documented in detail. Please refer to the C++ documentation for more information.
v2, v3 and v4 binary documents are supported. Those versions are used by The Legend of Zelda: Breath of the Wild, Super Mario Odyssey and other recent games.
All parameter types are supported. This includes 64-bit node types that are used in Super Mario Odyssey.
Both little endian and big endian are supported. Switch assets are little-endian.
The YAML output is fully compatible with the pure Python byml-v2 library.
Quick usage¶
To read a BYML:
oead.byml.from_binary()To write a BYML:
oead.byml.to_binary()To read a YAML:
oead.byml.from_text()To write a YAML:
oead.byml.to_text()
import oead
with open("ActorInfo.product.byml", "rb") as f:
info = oead.Byml.from_binary(f.read())
# info is a dict-like
info["Actors"]
# Array(...)
info["Actors"][0]
# Hash({'bugMask': Byml(S32(1)), ..., 'name': Byml('EnemyFortressMgrTag'), ...})
info["Actors"][0]["name"]
# 'EnemyFortressMgrTag'
Reference¶
-
class
oead.byml.Array¶ Lightweight list-like object. Can be cast to a list.
-
class
oead.byml.Hash¶ Lightweight dict-like object. Can be cast to a dict.
-
oead.byml.from_binary(buffer: BytesLike) → Union[None, str, oead.Bytes, Array, Hash, bool, oead.S32, oead.F32, oead.U32, oead.S64, oead.U64, oead.F64]¶ - Returns
An Array or a Hash.
See also
oead::Byml::FromBinary
-
oead.byml.to_binary(data: handle, big_endian: bool, version: int = 2) → oead.Bytes¶ See also
oead::Byml::ToBinary
-
oead.byml.from_text(yml_text: str) → Union[None, str, oead.Bytes, Array, Hash, bool, oead.S32, oead.F32, oead.U32, oead.S64, oead.U64, oead.F64]¶ - Returns
An Array or a Hash.
See also
oead::Byml::FromText
-
oead.byml.to_text(data: handle) → str¶ See also
oead::Byml::ToText
Note
The following getters mirror the behaviour of Nintendo’s BYML library. Some of them will perform type conversions automatically. If value types are incorrect, a TypeError exception is thrown.
-
oead.byml.get_bool(data: handle) → bool¶
-
oead.byml.get_double(data: handle) → float¶
-
oead.byml.get_float(data: handle) → float¶
-
oead.byml.get_int(data: handle) → int¶
-
oead.byml.get_int64(data: handle) → int¶
-
oead.byml.get_string(data: handle) → str¶
-
oead.byml.get_uint(data: handle) → int¶
-
oead.byml.get_uint64(data: handle) → int¶