PyLibMS 3.3.2__tar.gz → 3.3.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pylibms-3.3.2 → pylibms-3.3.4}/PKG-INFO +1 -1
- {pylibms-3.3.2 → pylibms-3.3.4}/PyLibMS.egg-info/PKG-INFO +1 -1
- {pylibms-3.3.2 → pylibms-3.3.4}/lms/message/definitions/field/lms_field.py +15 -1
- {pylibms-3.3.2 → pylibms-3.3.4}/lms/message/msbt.py +6 -0
- {pylibms-3.3.2 → pylibms-3.3.4}/lms/message/tag/lms_tag.py +1 -1
- {pylibms-3.3.2 → pylibms-3.3.4}/lms/titleconfig/definitions/attribute.py +1 -0
- {pylibms-3.3.2 → pylibms-3.3.4}/pyproject.toml +1 -1
- {pylibms-3.3.2 → pylibms-3.3.4}/LICENSE +0 -0
- {pylibms-3.3.2 → pylibms-3.3.4}/MANIFEST.in +0 -0
- {pylibms-3.3.2 → pylibms-3.3.4}/PyLibMS.egg-info/SOURCES.txt +0 -0
- {pylibms-3.3.2 → pylibms-3.3.4}/PyLibMS.egg-info/dependency_links.txt +0 -0
- {pylibms-3.3.2 → pylibms-3.3.4}/PyLibMS.egg-info/requires.txt +0 -0
- {pylibms-3.3.2 → pylibms-3.3.4}/PyLibMS.egg-info/top_level.txt +0 -0
- {pylibms-3.3.2 → pylibms-3.3.4}/README.md +0 -0
- {pylibms-3.3.2 → pylibms-3.3.4}/lms/__init__.py +0 -0
- {pylibms-3.3.2 → pylibms-3.3.4}/lms/common/__init__.py +0 -0
- {pylibms-3.3.2 → pylibms-3.3.4}/lms/common/lms_datatype.py +0 -0
- {pylibms-3.3.2 → pylibms-3.3.4}/lms/common/lms_exceptions.py +0 -0
- {pylibms-3.3.2 → pylibms-3.3.4}/lms/common/lms_fileinfo.py +0 -0
- {pylibms-3.3.2 → pylibms-3.3.4}/lms/common/stream/fileinfo.py +0 -0
- {pylibms-3.3.2 → pylibms-3.3.4}/lms/common/stream/hashtable.py +0 -0
- {pylibms-3.3.2 → pylibms-3.3.4}/lms/common/stream/section.py +0 -0
- {pylibms-3.3.2 → pylibms-3.3.4}/lms/fileio/encoding.py +0 -0
- {pylibms-3.3.2 → pylibms-3.3.4}/lms/fileio/io.py +0 -0
- {pylibms-3.3.2 → pylibms-3.3.4}/lms/message/__init__.py +0 -0
- {pylibms-3.3.2 → pylibms-3.3.4}/lms/message/definitions/__init__.py +0 -0
- {pylibms-3.3.2 → pylibms-3.3.4}/lms/message/definitions/field/__init__.py +0 -0
- {pylibms-3.3.2 → pylibms-3.3.4}/lms/message/definitions/field/io.py +0 -0
- {pylibms-3.3.2 → pylibms-3.3.4}/lms/message/definitions/lms_messagetext.py +0 -0
- {pylibms-3.3.2 → pylibms-3.3.4}/lms/message/msbtentry.py +0 -0
- {pylibms-3.3.2 → pylibms-3.3.4}/lms/message/msbtio.py +0 -0
- {pylibms-3.3.2 → pylibms-3.3.4}/lms/message/section/__init__.py +0 -0
- {pylibms-3.3.2 → pylibms-3.3.4}/lms/message/section/atr1.py +0 -0
- {pylibms-3.3.2 → pylibms-3.3.4}/lms/message/section/nli1.py +0 -0
- {pylibms-3.3.2 → pylibms-3.3.4}/lms/message/section/tsy1.py +0 -0
- {pylibms-3.3.2 → pylibms-3.3.4}/lms/message/section/txt2.py +0 -0
- {pylibms-3.3.2 → pylibms-3.3.4}/lms/message/tag/__init__.py +0 -0
- {pylibms-3.3.2 → pylibms-3.3.4}/lms/message/tag/io/param_io.py +0 -0
- {pylibms-3.3.2 → pylibms-3.3.4}/lms/message/tag/io/tag_io.py +0 -0
- {pylibms-3.3.2 → pylibms-3.3.4}/lms/message/tag/lms_tagexceptions.py +0 -0
- {pylibms-3.3.2 → pylibms-3.3.4}/lms/project/__init__.py +0 -0
- {pylibms-3.3.2 → pylibms-3.3.4}/lms/project/definitions/__init__.py +0 -0
- {pylibms-3.3.2 → pylibms-3.3.4}/lms/project/definitions/attribute.py +0 -0
- {pylibms-3.3.2 → pylibms-3.3.4}/lms/project/definitions/color.py +0 -0
- {pylibms-3.3.2 → pylibms-3.3.4}/lms/project/definitions/style.py +0 -0
- {pylibms-3.3.2 → pylibms-3.3.4}/lms/project/definitions/tag.py +0 -0
- {pylibms-3.3.2 → pylibms-3.3.4}/lms/project/msbp.py +0 -0
- {pylibms-3.3.2 → pylibms-3.3.4}/lms/project/msbpread.py +0 -0
- {pylibms-3.3.2 → pylibms-3.3.4}/lms/project/section/ali2.py +0 -0
- {pylibms-3.3.2 → pylibms-3.3.4}/lms/project/section/ati2.py +0 -0
- {pylibms-3.3.2 → pylibms-3.3.4}/lms/project/section/clr1.py +0 -0
- {pylibms-3.3.2 → pylibms-3.3.4}/lms/project/section/string.py +0 -0
- {pylibms-3.3.2 → pylibms-3.3.4}/lms/project/section/syl3.py +0 -0
- {pylibms-3.3.2 → pylibms-3.3.4}/lms/project/section/tag2.py +0 -0
- {pylibms-3.3.2 → pylibms-3.3.4}/lms/project/section/tgg2.py +0 -0
- {pylibms-3.3.2 → pylibms-3.3.4}/lms/project/section/tgp2.py +0 -0
- {pylibms-3.3.2 → pylibms-3.3.4}/lms/titleconfig/__init__.py +0 -0
- {pylibms-3.3.2 → pylibms-3.3.4}/lms/titleconfig/config.py +0 -0
- {pylibms-3.3.2 → pylibms-3.3.4}/lms/titleconfig/definitions/__init__.py +0 -0
- {pylibms-3.3.2 → pylibms-3.3.4}/lms/titleconfig/definitions/tags.py +0 -0
- {pylibms-3.3.2 → pylibms-3.3.4}/lms/titleconfig/definitions/value.py +0 -0
- {pylibms-3.3.2 → pylibms-3.3.4}/lms/titleconfig/presets/Badge Arcade.yaml +0 -0
- {pylibms-3.3.2 → pylibms-3.3.4}/lms/titleconfig/presets/Brain Age Concentration Training.yaml +0 -0
- {pylibms-3.3.2 → pylibms-3.3.4}/lms/titleconfig/presets/Kirby Planet Robobot.yaml +0 -0
- {pylibms-3.3.2 → pylibms-3.3.4}/lms/titleconfig/presets/Super Mario 3D Land.yaml +0 -0
- {pylibms-3.3.2 → pylibms-3.3.4}/lms/titleconfig/presets/Super Mario 3D World + Bowsers Fury.yaml +0 -0
- {pylibms-3.3.2 → pylibms-3.3.4}/lms/titleconfig/presets/Super Mario Odyssey.yaml +0 -0
- {pylibms-3.3.2 → pylibms-3.3.4}/lms/titleconfig/presets/The Legend of Zelda Echos of Wisdom.yaml +0 -0
- {pylibms-3.3.2 → pylibms-3.3.4}/lms/titleconfig/presets/The Legend of Zelda a Link Between Worlds.yaml +0 -0
- {pylibms-3.3.2 → pylibms-3.3.4}/lms/titleconfig/presets/Tomodachi Life.yaml +0 -0
- {pylibms-3.3.2 → pylibms-3.3.4}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: PyLibMS
|
|
3
|
-
Version: 3.3.
|
|
3
|
+
Version: 3.3.4
|
|
4
4
|
Summary: Python library built for the libMessageStudio (LMS) proprietary file formats from Nintendo. Supports MSBT, MSBP, and soon to be MSBF.
|
|
5
5
|
Author: AbdyyEee
|
|
6
6
|
License: Copyright 2025 AbdyyEee
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: PyLibMS
|
|
3
|
-
Version: 3.3.
|
|
3
|
+
Version: 3.3.4
|
|
4
4
|
Summary: Python library built for the libMessageStudio (LMS) proprietary file formats from Nintendo. Supports MSBT, MSBP, and soon to be MSBF.
|
|
5
5
|
Author: AbdyyEee
|
|
6
6
|
License: Copyright 2025 AbdyyEee
|
|
@@ -11,7 +11,6 @@ FLOAT_MAX = 3.4028235e38
|
|
|
11
11
|
|
|
12
12
|
type FieldValue = int | str | float | bool | bytes
|
|
13
13
|
|
|
14
|
-
|
|
15
14
|
@dataclass(frozen=True)
|
|
16
15
|
class LMS_FieldMap:
|
|
17
16
|
"""
|
|
@@ -39,6 +38,21 @@ class LMS_FieldMap:
|
|
|
39
38
|
"""Converts the field map to a regular dictionary."""
|
|
40
39
|
return {field.name: field.value for field in self.fields.values()}
|
|
41
40
|
|
|
41
|
+
@classmethod
|
|
42
|
+
def create_default_map(cls, definitions: list[ValueDefinition]):
|
|
43
|
+
field_map = {}
|
|
44
|
+
for definition in definitions:
|
|
45
|
+
match definition.datatype:
|
|
46
|
+
case LMS_DataType.LIST:
|
|
47
|
+
field_map[definition.name] = definition.list_items[0]
|
|
48
|
+
case LMS_DataType.BOOL:
|
|
49
|
+
field_map[definition.name] = False
|
|
50
|
+
case LMS_DataType.FLOAT32:
|
|
51
|
+
field_map[definition.name] = 0.0
|
|
52
|
+
case _:
|
|
53
|
+
field_map[definition.name] = 0
|
|
54
|
+
return cls.from_dict(field_map, definitions)
|
|
55
|
+
|
|
42
56
|
@classmethod
|
|
43
57
|
def from_dict(cls, data: dict[str, FieldValue], definitions: list[ValueDefinition]):
|
|
44
58
|
return cls(
|
|
@@ -124,6 +124,12 @@ class MSBT:
|
|
|
124
124
|
"""If the MSBT contains style indexes."""
|
|
125
125
|
return self.section_exists("TSY1")
|
|
126
126
|
|
|
127
|
+
def label_exists(self, label: str) -> bool:
|
|
128
|
+
"""Returns if a label already exists in the MSBT instance.
|
|
129
|
+
|
|
130
|
+
:param label: the label to check."""
|
|
131
|
+
return label in self._label_map
|
|
132
|
+
|
|
127
133
|
def get_entry_by_index(self, index: int) -> MSBTEntry:
|
|
128
134
|
"""
|
|
129
135
|
Retrieves an entry given its index. Supports negative indexing.
|
|
@@ -105,7 +105,7 @@ class LMS_EncodedTag:
|
|
|
105
105
|
)
|
|
106
106
|
|
|
107
107
|
try:
|
|
108
|
-
parameters = [int(param.strip().upper()) for param in param_str.split("-")]
|
|
108
|
+
parameters = [int(param.strip().upper(), 16) for param in param_str.split("-")]
|
|
109
109
|
except ValueError:
|
|
110
110
|
raise LMS_TagInvalidFormatError(
|
|
111
111
|
f"Malformed parameters in tag '{tag}'. Ensure all the parameters are integers.")
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "PyLibMS"
|
|
7
|
-
version = "3.3.
|
|
7
|
+
version = "3.3.4"
|
|
8
8
|
requires-python = ">=3.12"
|
|
9
9
|
description = "Python library built for the libMessageStudio (LMS) proprietary file formats from Nintendo. Supports MSBT, MSBP, and soon to be MSBF."
|
|
10
10
|
readme = "README.md"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pylibms-3.3.2 → pylibms-3.3.4}/lms/titleconfig/presets/Brain Age Concentration Training.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pylibms-3.3.2 → pylibms-3.3.4}/lms/titleconfig/presets/Super Mario 3D World + Bowsers Fury.yaml
RENAMED
|
File without changes
|
|
File without changes
|
{pylibms-3.3.2 → pylibms-3.3.4}/lms/titleconfig/presets/The Legend of Zelda Echos of Wisdom.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|