PyLibMS 2.0.0__tar.gz → 2.0.2__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-2.0.0 → pylibms-2.0.2}/LMS/Field/LMS_Field.py +1 -1
- {pylibms-2.0.0 → pylibms-2.0.2}/LMS/Field/Stream.py +1 -1
- {pylibms-2.0.0 → pylibms-2.0.2}/LMS/Message/Definitions/LMS_MessageText.py +1 -1
- {pylibms-2.0.0 → pylibms-2.0.2}/LMS/Message/MSBTStream.py +1 -1
- {pylibms-2.0.0 → pylibms-2.0.2}/LMS/Message/Section/ATR1.py +1 -1
- {pylibms-2.0.0 → pylibms-2.0.2}/LMS/Message/Section/TXT2.py +1 -1
- {pylibms-2.0.0 → pylibms-2.0.2}/LMS/Message/Tag/LMS_Tag.py +1 -1
- {pylibms-2.0.0 → pylibms-2.0.2}/LMS/Message/Tag/Stream.py +1 -1
- pylibms-2.0.0/LMS/Config/TitleConfig.py → pylibms-2.0.2/LMS/TitleConfig/Config.py +11 -10
- {pylibms-2.0.0/LMS/Config → pylibms-2.0.2/LMS/TitleConfig}/Definitions/Attributes.py +1 -1
- {pylibms-2.0.0/LMS/Config → pylibms-2.0.2/LMS/TitleConfig}/Definitions/Tags.py +1 -1
- pylibms-2.0.2/LMS/__init__.py +0 -0
- {pylibms-2.0.0 → pylibms-2.0.2}/MANIFEST.in +1 -1
- {pylibms-2.0.0 → pylibms-2.0.2}/PKG-INFO +3 -7
- {pylibms-2.0.0 → pylibms-2.0.2}/PyLibMS.egg-info/PKG-INFO +3 -7
- {pylibms-2.0.0 → pylibms-2.0.2}/PyLibMS.egg-info/SOURCES.txt +8 -12
- pylibms-2.0.2/README.md +15 -0
- {pylibms-2.0.0 → pylibms-2.0.2}/pyproject.toml +1 -1
- pylibms-2.0.0/README.md +0 -19
- {pylibms-2.0.0 → pylibms-2.0.2}/LICENSE +0 -0
- {pylibms-2.0.0 → pylibms-2.0.2}/LMS/Common/LMS_Exceptions.py +0 -0
- {pylibms-2.0.0 → pylibms-2.0.2}/LMS/Common/LMS_FileInfo.py +0 -0
- {pylibms-2.0.0 → pylibms-2.0.2}/LMS/Common/Stream/FileInfo.py +0 -0
- {pylibms-2.0.0 → pylibms-2.0.2}/LMS/Common/Stream/Hashtable.py +0 -0
- {pylibms-2.0.0 → pylibms-2.0.2}/LMS/Common/Stream/Section.py +0 -0
- {pylibms-2.0.0 → pylibms-2.0.2}/LMS/Common/__init__.py +0 -0
- {pylibms-2.0.0 → pylibms-2.0.2}/LMS/Field/LMS_DataType.py +0 -0
- {pylibms-2.0.0/LMS/Config/Definitions → pylibms-2.0.2/LMS/Field}/__init__.py +0 -0
- {pylibms-2.0.0 → pylibms-2.0.2}/LMS/FileIO/Encoding.py +0 -0
- {pylibms-2.0.0 → pylibms-2.0.2}/LMS/FileIO/Stream.py +0 -0
- {pylibms-2.0.0 → pylibms-2.0.2}/LMS/Message/Definitions/LMS_FieldMap.py +0 -0
- {pylibms-2.0.0/LMS/Config → pylibms-2.0.2/LMS/Message/Definitions}/__init__.py +0 -0
- {pylibms-2.0.0 → pylibms-2.0.2}/LMS/Message/MSBT.py +0 -0
- {pylibms-2.0.0 → pylibms-2.0.2}/LMS/Message/MSBTEntry.py +0 -0
- {pylibms-2.0.0 → pylibms-2.0.2}/LMS/Message/Section/TSY1.py +0 -0
- {pylibms-2.0.0/LMS/Field → pylibms-2.0.2/LMS/Message/Section}/__init__.py +0 -0
- {pylibms-2.0.0 → pylibms-2.0.2}/LMS/Message/Tag/LMS_TagExceptions.py +0 -0
- {pylibms-2.0.0 → pylibms-2.0.2}/LMS/Message/Tag/System.yaml +0 -0
- {pylibms-2.0.0 → pylibms-2.0.2}/LMS/Message/Tag/Tag_Formats.py +0 -0
- {pylibms-2.0.0/LMS/Message/Definitions → pylibms-2.0.2/LMS/Message/Tag}/__init__.py +0 -0
- {pylibms-2.0.0/LMS/Message/Section → pylibms-2.0.2/LMS/Message}/__init__.py +0 -0
- {pylibms-2.0.0 → pylibms-2.0.2}/LMS/Project/Definitions/Attribute.py +0 -0
- {pylibms-2.0.0 → pylibms-2.0.2}/LMS/Project/Definitions/Color.py +0 -0
- {pylibms-2.0.0 → pylibms-2.0.2}/LMS/Project/Definitions/Style.py +0 -0
- {pylibms-2.0.0 → pylibms-2.0.2}/LMS/Project/Definitions/Tag.py +0 -0
- {pylibms-2.0.0/LMS/Message/Tag → pylibms-2.0.2/LMS/Project/Definitions}/__init__.py +0 -0
- {pylibms-2.0.0 → pylibms-2.0.2}/LMS/Project/MSBP.py +0 -0
- {pylibms-2.0.0 → pylibms-2.0.2}/LMS/Project/MSBPRead.py +0 -0
- {pylibms-2.0.0 → pylibms-2.0.2}/LMS/Project/Section/ALI2.py +0 -0
- {pylibms-2.0.0 → pylibms-2.0.2}/LMS/Project/Section/ATI2.py +0 -0
- {pylibms-2.0.0 → pylibms-2.0.2}/LMS/Project/Section/CLR1.py +0 -0
- {pylibms-2.0.0 → pylibms-2.0.2}/LMS/Project/Section/SYL3.py +0 -0
- {pylibms-2.0.0 → pylibms-2.0.2}/LMS/Project/Section/String.py +0 -0
- {pylibms-2.0.0 → pylibms-2.0.2}/LMS/Project/Section/TAG2.py +0 -0
- {pylibms-2.0.0 → pylibms-2.0.2}/LMS/Project/Section/TGG2.py +0 -0
- {pylibms-2.0.0 → pylibms-2.0.2}/LMS/Project/Section/TGP2.py +0 -0
- {pylibms-2.0.0/LMS/Message → pylibms-2.0.2/LMS/Project}/__init__.py +0 -0
- {pylibms-2.0.0/LMS/Config → pylibms-2.0.2/LMS/TitleConfig}/Definitions/Value.py +0 -0
- {pylibms-2.0.0/LMS/Project → pylibms-2.0.2/LMS/TitleConfig}/Definitions/__init__.py +0 -0
- {pylibms-2.0.0/LMS/Project → pylibms-2.0.2/LMS/TitleConfig/Presets}/__init__.py +0 -0
- {pylibms-2.0.0/LMS → pylibms-2.0.2/LMS/TitleConfig}/__init__.py +0 -0
- {pylibms-2.0.0 → pylibms-2.0.2}/PyLibMS.egg-info/dependency_links.txt +0 -0
- {pylibms-2.0.0 → pylibms-2.0.2}/PyLibMS.egg-info/requires.txt +0 -0
- {pylibms-2.0.0 → pylibms-2.0.2}/PyLibMS.egg-info/top_level.txt +0 -0
- {pylibms-2.0.0 → pylibms-2.0.2}/setup.cfg +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import re
|
|
2
2
|
from typing import overload
|
|
3
3
|
|
|
4
|
-
from LMS.Config
|
|
4
|
+
from LMS.TitleConfig.Config import TagConfig
|
|
5
5
|
from LMS.Field.LMS_Field import LMS_Field
|
|
6
6
|
from LMS.Message.Tag.LMS_Tag import LMS_DecodedTag, LMS_EncodedTag, LMS_TagBase
|
|
7
7
|
from LMS.Message.Tag.Tag_Formats import (DECODED_FORMAT, ENCODED_FORMAT,
|
|
@@ -5,7 +5,7 @@ from LMS.Common.Stream.FileInfo import read_file_info, write_file_info
|
|
|
5
5
|
from LMS.Common.Stream.Hashtable import read_labels, write_labels
|
|
6
6
|
from LMS.Common.Stream.Section import (read_section_data, write_section,
|
|
7
7
|
write_unsupported_section)
|
|
8
|
-
from LMS.Config
|
|
8
|
+
from LMS.TitleConfig.Config import AttributeConfig, TagConfig
|
|
9
9
|
from LMS.FileIO.Stream import FileReader, FileWriter
|
|
10
10
|
from LMS.Message.MSBT import MSBT
|
|
11
11
|
from LMS.Message.MSBTEntry import MSBTEntry
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from LMS.
|
|
1
|
+
from LMS.TitleConfig.Definitions.Attributes import AttributeConfig
|
|
2
2
|
from LMS.Field.LMS_DataType import LMS_DataType
|
|
3
3
|
from LMS.Field.LMS_Field import LMS_DataType, LMS_Field
|
|
4
4
|
from LMS.Field.Stream import read_field, write_field
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from LMS.
|
|
1
|
+
from LMS.TitleConfig.Definitions.Tags import TagConfig
|
|
2
2
|
from LMS.FileIO.Encoding import FileEncoding
|
|
3
3
|
from LMS.FileIO.Stream import FileReader, FileWriter
|
|
4
4
|
from LMS.Message.Definitions.LMS_MessageText import LMS_MessageText
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import re
|
|
2
2
|
from abc import ABC, abstractmethod
|
|
3
3
|
|
|
4
|
-
from LMS.
|
|
4
|
+
from LMS.TitleConfig.Definitions.Tags import TagConfig
|
|
5
5
|
from LMS.Field.LMS_Field import LMS_Field, cast_value
|
|
6
6
|
from LMS.Message.Definitions.LMS_FieldMap import LMS_FieldMap
|
|
7
7
|
from LMS.Message.Tag.LMS_TagExceptions import LMS_InvalidTagFormatError
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from LMS.
|
|
1
|
+
from LMS.TitleConfig.Definitions.Tags import TagConfig, TagDefinition
|
|
2
2
|
from LMS.Field.LMS_DataType import LMS_DataType
|
|
3
3
|
from LMS.Field.LMS_Field import LMS_Field
|
|
4
4
|
from LMS.Field.Stream import read_field, write_field
|
|
@@ -1,12 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
import os
|
|
1
|
+
from importlib import resources
|
|
3
2
|
from typing import Self
|
|
4
3
|
|
|
5
4
|
import yaml
|
|
6
5
|
|
|
7
|
-
from LMS.
|
|
8
|
-
from LMS.
|
|
9
|
-
from LMS.
|
|
6
|
+
from LMS.TitleConfig.Definitions.Attributes import AttributeConfig
|
|
7
|
+
from LMS.TitleConfig.Definitions.Tags import TagConfig, TagDefinition
|
|
8
|
+
from LMS.TitleConfig.Definitions.Value import ValueDefinition
|
|
10
9
|
from LMS.Field.LMS_DataType import LMS_DataType
|
|
11
10
|
from LMS.Project.MSBP import MSBP
|
|
12
11
|
|
|
@@ -15,10 +14,12 @@ class TitleConfig:
|
|
|
15
14
|
"""Represents a configuration for a specific game/title."""
|
|
16
15
|
|
|
17
16
|
# Populate the preset list from the directory
|
|
18
|
-
PRESET_LIST = [
|
|
19
|
-
name.removesuffix(".yaml") for name in pkg_resources.contents("LMS.Config.Presets") if name.endswith(".yaml")
|
|
20
|
-
]
|
|
17
|
+
PRESET_LIST = []
|
|
21
18
|
|
|
19
|
+
for file in resources.files("LMS.TitleConfig.Presets").iterdir():
|
|
20
|
+
if (config := file.name).endswith(".yaml"):
|
|
21
|
+
PRESET_LIST.append(config.removesuffix(".yaml"))
|
|
22
|
+
|
|
22
23
|
def __init__(self, attribute_configs: dict[str, AttributeConfig], tag_config: TagConfig):
|
|
23
24
|
self._attribute_configs = attribute_configs
|
|
24
25
|
self._tag_config = tag_config
|
|
@@ -39,7 +40,7 @@ class TitleConfig:
|
|
|
39
40
|
if game not in cls.PRESET_LIST:
|
|
40
41
|
raise FileNotFoundError(f"Preset '{game}' not found.")
|
|
41
42
|
|
|
42
|
-
with
|
|
43
|
+
with resources.open_text("LMS.TitleConfig.Presets", f"{game}.yaml") as f:
|
|
43
44
|
return cls.load_config(f.read())
|
|
44
45
|
|
|
45
46
|
@classmethod
|
|
@@ -64,7 +65,7 @@ class TitleConfig:
|
|
|
64
65
|
tag_config = []
|
|
65
66
|
|
|
66
67
|
# Add the System tag definitions to the config
|
|
67
|
-
with
|
|
68
|
+
with resources.open_text("LMS.Message.Tag", "System.yaml") as f:
|
|
68
69
|
system_tags = yaml.safe_load(f)
|
|
69
70
|
tag_config = system_tags
|
|
70
71
|
|
|
File without changes
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: PyLibMS
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.0.2
|
|
4
4
|
Summary: Python library built for the libMessageStudio (LMS) proprietary file formats from Nintendo. Supports MSBT, MSBP, and MSBF.
|
|
5
5
|
Author: AbdyyEee
|
|
6
6
|
License: Copyright 2025 AbdyyEee
|
|
@@ -20,11 +20,7 @@ Requires-Dist: PyYAML==6.0.1
|
|
|
20
20
|
Dynamic: license-file
|
|
21
21
|
|
|
22
22
|
# PylibMS
|
|
23
|
-
|
|
24
|
-
> [!NOTE]
|
|
25
|
-
> PylibMS is being refactored in it's entirety, with MSBF support being added soon. Use at your own risk.
|
|
26
|
-
|
|
27
|
-
Games that work with the library, including but not limited to:
|
|
23
|
+
Python library built in Python 3.10+ or the libMessageStudio (LMS) proprietary file formats from Nintendo. Supports MSBT, MSBP, and MSBF. Games that work with the library, including but not limited to:
|
|
28
24
|
* Tomodachi Life
|
|
29
25
|
* Nintendo Badge Arcade
|
|
30
26
|
* The Legend of Zelda: A Link Between Worlds
|
|
@@ -37,4 +33,4 @@ See [the wiki](https://github.com/AbdyyEee/PylibMS/wiki) for explanations and ex
|
|
|
37
33
|
```
|
|
38
34
|
pip install PylibMS
|
|
39
35
|
```
|
|
40
|
-
Python version must be
|
|
36
|
+
Python version must be `>=3.10.`
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: PyLibMS
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.0.2
|
|
4
4
|
Summary: Python library built for the libMessageStudio (LMS) proprietary file formats from Nintendo. Supports MSBT, MSBP, and MSBF.
|
|
5
5
|
Author: AbdyyEee
|
|
6
6
|
License: Copyright 2025 AbdyyEee
|
|
@@ -20,11 +20,7 @@ Requires-Dist: PyYAML==6.0.1
|
|
|
20
20
|
Dynamic: license-file
|
|
21
21
|
|
|
22
22
|
# PylibMS
|
|
23
|
-
|
|
24
|
-
> [!NOTE]
|
|
25
|
-
> PylibMS is being refactored in it's entirety, with MSBF support being added soon. Use at your own risk.
|
|
26
|
-
|
|
27
|
-
Games that work with the library, including but not limited to:
|
|
23
|
+
Python library built in Python 3.10+ or the libMessageStudio (LMS) proprietary file formats from Nintendo. Supports MSBT, MSBP, and MSBF. Games that work with the library, including but not limited to:
|
|
28
24
|
* Tomodachi Life
|
|
29
25
|
* Nintendo Badge Arcade
|
|
30
26
|
* The Legend of Zelda: A Link Between Worlds
|
|
@@ -37,4 +33,4 @@ See [the wiki](https://github.com/AbdyyEee/PylibMS/wiki) for explanations and ex
|
|
|
37
33
|
```
|
|
38
34
|
pip install PylibMS
|
|
39
35
|
```
|
|
40
|
-
Python version must be
|
|
36
|
+
Python version must be `>=3.10.`
|
|
@@ -9,12 +9,6 @@ LMS/Common/__init__.py
|
|
|
9
9
|
LMS/Common/Stream/FileInfo.py
|
|
10
10
|
LMS/Common/Stream/Hashtable.py
|
|
11
11
|
LMS/Common/Stream/Section.py
|
|
12
|
-
LMS/Config/TitleConfig.py
|
|
13
|
-
LMS/Config/__init__.py
|
|
14
|
-
LMS/Config/Definitions/Attributes.py
|
|
15
|
-
LMS/Config/Definitions/Tags.py
|
|
16
|
-
LMS/Config/Definitions/Value.py
|
|
17
|
-
LMS/Config/Definitions/__init__.py
|
|
18
12
|
LMS/Field/LMS_DataType.py
|
|
19
13
|
LMS/Field/LMS_Field.py
|
|
20
14
|
LMS/Field/Stream.py
|
|
@@ -54,13 +48,15 @@ LMS/Project/Section/String.py
|
|
|
54
48
|
LMS/Project/Section/TAG2.py
|
|
55
49
|
LMS/Project/Section/TGG2.py
|
|
56
50
|
LMS/Project/Section/TGP2.py
|
|
51
|
+
LMS/TitleConfig/Config.py
|
|
52
|
+
LMS/TitleConfig/__init__.py
|
|
53
|
+
LMS/TitleConfig/Definitions/Attributes.py
|
|
54
|
+
LMS/TitleConfig/Definitions/Tags.py
|
|
55
|
+
LMS/TitleConfig/Definitions/Value.py
|
|
56
|
+
LMS/TitleConfig/Definitions/__init__.py
|
|
57
|
+
LMS/TitleConfig/Presets/__init__.py
|
|
57
58
|
PyLibMS.egg-info/PKG-INFO
|
|
58
59
|
PyLibMS.egg-info/SOURCES.txt
|
|
59
60
|
PyLibMS.egg-info/dependency_links.txt
|
|
60
61
|
PyLibMS.egg-info/requires.txt
|
|
61
|
-
PyLibMS.egg-info/top_level.txt
|
|
62
|
-
PylibMS.egg-info/PKG-INFO
|
|
63
|
-
PylibMS.egg-info/SOURCES.txt
|
|
64
|
-
PylibMS.egg-info/dependency_links.txt
|
|
65
|
-
PylibMS.egg-info/requires.txt
|
|
66
|
-
PylibMS.egg-info/top_level.txt
|
|
62
|
+
PyLibMS.egg-info/top_level.txt
|
pylibms-2.0.2/README.md
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# PylibMS
|
|
2
|
+
Python library built in Python 3.10+ or the libMessageStudio (LMS) proprietary file formats from Nintendo. Supports MSBT, MSBP, and MSBF. Games that work with the library, including but not limited to:
|
|
3
|
+
* Tomodachi Life
|
|
4
|
+
* Nintendo Badge Arcade
|
|
5
|
+
* The Legend of Zelda: A Link Between Worlds
|
|
6
|
+
* Animal Crossing: Amiibo Festival
|
|
7
|
+
* Super Mario 3D World
|
|
8
|
+
* Super Mario 3D Land.
|
|
9
|
+
# Features and Usage
|
|
10
|
+
See [the wiki](https://github.com/AbdyyEee/PylibMS/wiki) for explanations and examples on how to use the library.
|
|
11
|
+
# Installation
|
|
12
|
+
```
|
|
13
|
+
pip install PylibMS
|
|
14
|
+
```
|
|
15
|
+
Python version must be `>=3.10.`
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "PyLibMS"
|
|
7
|
-
version = "2.0.
|
|
7
|
+
version = "2.0.2"
|
|
8
8
|
requires-python = ">=3.10"
|
|
9
9
|
description = "Python library built for the libMessageStudio (LMS) proprietary file formats from Nintendo. Supports MSBT, MSBP, and MSBF."
|
|
10
10
|
readme = "README.md"
|
pylibms-2.0.0/README.md
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
# PylibMS
|
|
2
|
-
PyLMS is a library built in Python3.10+ for Nintendo's LMS (libMessageStudio) file formats. Intended for games on the Nintendo 3DS and Wii U revisions of the file format.
|
|
3
|
-
> [!NOTE]
|
|
4
|
-
> PylibMS is being refactored in it's entirety, with MSBF support being added soon. Use at your own risk.
|
|
5
|
-
|
|
6
|
-
Games that work with the library, including but not limited to:
|
|
7
|
-
* Tomodachi Life
|
|
8
|
-
* Nintendo Badge Arcade
|
|
9
|
-
* The Legend of Zelda: A Link Between Worlds
|
|
10
|
-
* Animal Crossing: Amiibo Festival
|
|
11
|
-
* Super Mario 3D World
|
|
12
|
-
* Super Mario 3D Land.
|
|
13
|
-
# Features and Usage
|
|
14
|
-
See [the wiki](https://github.com/AbdyyEee/PylibMS/wiki) for explanations and examples on how to use the library.
|
|
15
|
-
# Installation
|
|
16
|
-
```
|
|
17
|
-
pip install PylibMS
|
|
18
|
-
```
|
|
19
|
-
Python version must be >= 10.
|
|
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
|