PyLibMS 5.0.5__tar.gz → 5.0.7__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.
Files changed (80) hide show
  1. pylibms-5.0.7/PKG-INFO +136 -0
  2. pylibms-5.0.7/PyLibMS.egg-info/PKG-INFO +136 -0
  3. {pylibms-5.0.5 → pylibms-5.0.7}/PyLibMS.egg-info/SOURCES.txt +0 -1
  4. pylibms-5.0.7/PyLibMS.egg-info/requires.txt +6 -0
  5. pylibms-5.0.7/README.md +110 -0
  6. {pylibms-5.0.5 → pylibms-5.0.7}/lms/message/umsbt.py +2 -2
  7. {pylibms-5.0.5 → pylibms-5.0.7}/lms/titleconfig/config.py +1 -1
  8. {pylibms-5.0.5 → pylibms-5.0.7}/pyproject.toml +14 -5
  9. pylibms-5.0.5/MANIFEST.in +0 -1
  10. pylibms-5.0.5/PKG-INFO +0 -118
  11. pylibms-5.0.5/PyLibMS.egg-info/PKG-INFO +0 -118
  12. pylibms-5.0.5/PyLibMS.egg-info/requires.txt +0 -2
  13. pylibms-5.0.5/README.md +0 -97
  14. {pylibms-5.0.5 → pylibms-5.0.7}/LICENSE +0 -0
  15. {pylibms-5.0.5 → pylibms-5.0.7}/PyLibMS.egg-info/dependency_links.txt +0 -0
  16. {pylibms-5.0.5 → pylibms-5.0.7}/PyLibMS.egg-info/top_level.txt +0 -0
  17. {pylibms-5.0.5 → pylibms-5.0.7}/lms/__init__.py +0 -0
  18. {pylibms-5.0.5 → pylibms-5.0.7}/lms/common/__init__.py +0 -0
  19. {pylibms-5.0.5 → pylibms-5.0.7}/lms/common/field/__init__.py +0 -0
  20. {pylibms-5.0.5 → pylibms-5.0.7}/lms/common/field/io.py +0 -0
  21. {pylibms-5.0.5 → pylibms-5.0.7}/lms/common/field/lms_datatype.py +0 -0
  22. {pylibms-5.0.5 → pylibms-5.0.7}/lms/common/field/lms_field.py +0 -0
  23. {pylibms-5.0.5 → pylibms-5.0.7}/lms/common/lms_constants.py +0 -0
  24. {pylibms-5.0.5 → pylibms-5.0.7}/lms/common/lms_exceptions.py +0 -0
  25. {pylibms-5.0.5 → pylibms-5.0.7}/lms/common/lms_fileinfo.py +0 -0
  26. {pylibms-5.0.5 → pylibms-5.0.7}/lms/common/stream/fileinfo.py +0 -0
  27. {pylibms-5.0.5 → pylibms-5.0.7}/lms/common/stream/hashtable.py +0 -0
  28. {pylibms-5.0.5 → pylibms-5.0.7}/lms/common/stream/section.py +0 -0
  29. {pylibms-5.0.5 → pylibms-5.0.7}/lms/fileio/encoding.py +0 -0
  30. {pylibms-5.0.5 → pylibms-5.0.7}/lms/fileio/endian.py +0 -0
  31. {pylibms-5.0.5 → pylibms-5.0.7}/lms/fileio/io.py +0 -0
  32. {pylibms-5.0.5 → pylibms-5.0.7}/lms/flowchart/__init__.py +0 -0
  33. {pylibms-5.0.5 → pylibms-5.0.7}/lms/flowchart/definitions/__init__.py +0 -0
  34. {pylibms-5.0.5 → pylibms-5.0.7}/lms/flowchart/definitions/lms_nodeexceptions.py +0 -0
  35. {pylibms-5.0.5 → pylibms-5.0.7}/lms/flowchart/definitions/node.py +0 -0
  36. {pylibms-5.0.5 → pylibms-5.0.7}/lms/flowchart/definitions/node_type.py +0 -0
  37. {pylibms-5.0.5 → pylibms-5.0.7}/lms/flowchart/flw3.py +0 -0
  38. {pylibms-5.0.5 → pylibms-5.0.7}/lms/flowchart/msbf.py +0 -0
  39. {pylibms-5.0.5 → pylibms-5.0.7}/lms/flowchart/msbfio.py +0 -0
  40. {pylibms-5.0.5 → pylibms-5.0.7}/lms/message/__init__.py +0 -0
  41. {pylibms-5.0.5 → pylibms-5.0.7}/lms/message/definitions/__init__.py +0 -0
  42. {pylibms-5.0.5 → pylibms-5.0.7}/lms/message/lms_messagetext.py +0 -0
  43. {pylibms-5.0.5 → pylibms-5.0.7}/lms/message/msbt.py +0 -0
  44. {pylibms-5.0.5 → pylibms-5.0.7}/lms/message/msbtentry.py +0 -0
  45. {pylibms-5.0.5 → pylibms-5.0.7}/lms/message/msbtio.py +0 -0
  46. {pylibms-5.0.5 → pylibms-5.0.7}/lms/message/section/__init__.py +0 -0
  47. {pylibms-5.0.5 → pylibms-5.0.7}/lms/message/section/atr1.py +0 -0
  48. {pylibms-5.0.5 → pylibms-5.0.7}/lms/message/section/nli1.py +0 -0
  49. {pylibms-5.0.5 → pylibms-5.0.7}/lms/message/section/tsy1.py +0 -0
  50. {pylibms-5.0.5 → pylibms-5.0.7}/lms/message/section/txt2.py +0 -0
  51. {pylibms-5.0.5 → pylibms-5.0.7}/lms/message/tag/__init__.py +0 -0
  52. {pylibms-5.0.5 → pylibms-5.0.7}/lms/message/tag/io/param_io.py +0 -0
  53. {pylibms-5.0.5 → pylibms-5.0.7}/lms/message/tag/io/tag_io.py +0 -0
  54. {pylibms-5.0.5 → pylibms-5.0.7}/lms/message/tag/lms_tag.py +0 -0
  55. {pylibms-5.0.5 → pylibms-5.0.7}/lms/message/tag/lms_tagexceptions.py +0 -0
  56. {pylibms-5.0.5 → pylibms-5.0.7}/lms/message/umsbtio.py +0 -0
  57. {pylibms-5.0.5 → pylibms-5.0.7}/lms/project/__init__.py +0 -0
  58. {pylibms-5.0.5 → pylibms-5.0.7}/lms/project/definitions/__init__.py +0 -0
  59. {pylibms-5.0.5 → pylibms-5.0.7}/lms/project/definitions/attribute.py +0 -0
  60. {pylibms-5.0.5 → pylibms-5.0.7}/lms/project/definitions/color.py +0 -0
  61. {pylibms-5.0.5 → pylibms-5.0.7}/lms/project/definitions/style.py +0 -0
  62. {pylibms-5.0.5 → pylibms-5.0.7}/lms/project/definitions/tag.py +0 -0
  63. {pylibms-5.0.5 → pylibms-5.0.7}/lms/project/msbp.py +0 -0
  64. {pylibms-5.0.5 → pylibms-5.0.7}/lms/project/msbpread.py +0 -0
  65. {pylibms-5.0.5 → pylibms-5.0.7}/lms/project/section/ali2.py +0 -0
  66. {pylibms-5.0.5 → pylibms-5.0.7}/lms/project/section/ati2.py +0 -0
  67. {pylibms-5.0.5 → pylibms-5.0.7}/lms/project/section/clr1.py +0 -0
  68. {pylibms-5.0.5 → pylibms-5.0.7}/lms/project/section/string.py +0 -0
  69. {pylibms-5.0.5 → pylibms-5.0.7}/lms/project/section/syl3.py +0 -0
  70. {pylibms-5.0.5 → pylibms-5.0.7}/lms/project/section/tag2.py +0 -0
  71. {pylibms-5.0.5 → pylibms-5.0.7}/lms/project/section/tgg2.py +0 -0
  72. {pylibms-5.0.5 → pylibms-5.0.7}/lms/project/section/tgp2.py +0 -0
  73. {pylibms-5.0.5 → pylibms-5.0.7}/lms/py.typed +0 -0
  74. {pylibms-5.0.5 → pylibms-5.0.7}/lms/titleconfig/__init__.py +0 -0
  75. {pylibms-5.0.5 → pylibms-5.0.7}/lms/titleconfig/definitions/__init__.py +0 -0
  76. {pylibms-5.0.5 → pylibms-5.0.7}/lms/titleconfig/definitions/attribute.py +0 -0
  77. {pylibms-5.0.5 → pylibms-5.0.7}/lms/titleconfig/definitions/field.py +0 -0
  78. {pylibms-5.0.5 → pylibms-5.0.7}/lms/titleconfig/definitions/nodes.py +0 -0
  79. {pylibms-5.0.5 → pylibms-5.0.7}/lms/titleconfig/definitions/tags.py +0 -0
  80. {pylibms-5.0.5 → pylibms-5.0.7}/setup.cfg +0 -0
pylibms-5.0.7/PKG-INFO ADDED
@@ -0,0 +1,136 @@
1
+ Metadata-Version: 2.4
2
+ Name: PyLibMS
3
+ Version: 5.0.7
4
+ Summary: Python library built for the libMessageStudio (LMS) proprietary file formats from Nintendo. Supports MSBT, UMSBT, MSBP, and MSBF.
5
+ Author: AbdyyEee
6
+ License-Expression: MIT
7
+ Project-URL: Repository, https://github.com/AbdyyEee/PylibMS
8
+ Project-URL: Documentation, https://pylibms.readthedocs.io/en/latest/
9
+ Keywords: nintendo,msbt,umsbt,message text,msbp,message project,msbf,message flowchart,flw3,modding,libmessagestudio
10
+ Classifier: Topic :: Software Development :: Libraries
11
+ Classifier: Operating System :: OS Independent
12
+ Classifier: Programming Language :: Python :: 3.11
13
+ Classifier: Programming Language :: Python :: 3.12
14
+ Classifier: Programming Language :: Python :: 3.13
15
+ Classifier: Programming Language :: Python :: 3.14
16
+ Classifier: Programming Language :: Python :: 3.15
17
+ Requires-Python: >=3.11
18
+ Description-Content-Type: text/markdown
19
+ License-File: LICENSE
20
+ Requires-Dist: PyYAML>=6.0.3
21
+ Requires-Dist: requests>=2.34.2
22
+ Provides-Extra: docs
23
+ Requires-Dist: sphinx>=8.0.0; extra == "docs"
24
+ Requires-Dist: sphinx-rtd-theme>=2.0; extra == "docs"
25
+ Dynamic: license-file
26
+
27
+ # PyLibMS
28
+
29
+ [![Python Versions](https://img.shields.io/pypi/pyversions/PyLibMS)](https://pypi.org/project/PyLibMS/)
30
+ ![LICENSE](https://img.shields.io/badge/license-MIT-blue)
31
+ [![PyPI version](https://badge.fury.io/py/PyLibMS.svg)](https://badge.fury.io/py/PyLibMS)
32
+ ![Tests](https://github.com/abdyyeee/PyLibMS/actions/workflows/tests.yml/badge.svg?branch=main)
33
+
34
+ PyLibMS is a library built in Python 3.11 and above for reading and writing of revision >=3 of the libMessageStudio
35
+ (LMS) proprietary file formats from Nintendo. These include files generated for late **Wii** titles, **Nintendo 3DS**,
36
+ **Wii U**, **Mobile**, **Nintendo Switch** and **Nintendo Switch 2** games.
37
+
38
+ The following is supported:
39
+
40
+ | Format | Read | Write | Support |
41
+ |---------|------|-------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
42
+ | `MSBT` | ✅ | ✅ | 1:1 Reading and writing. Support for majority of sections. Full attribute (`ATR1`) decoding with configurations. Tag decoding 1:1 with the official Nintendo `.mstxt` file format. |
43
+ | `UMSBT` | ✅ | ✅ | 1:1 Reading and writing. Accessing, adding, inserting and deleting `MSBT` files within `UMSBT` archives. |
44
+ | `MSBF` | ✅ | ✅ | 1:1 Reading and writing flowcharts (`FLW3`). Support for custom node definitions, attaching names and descriptions to nodes. Altering parameter datatypes for flexibility between games. |
45
+ | `MSBP` | ✅ | ❌ | Viewing all MSBP relevant metadata and generating configuration files for use with `MSBT` files. | |
46
+
47
+ # Documentation
48
+
49
+ PyLibMS documentation is on [readthedocs](https://pylibms.readthedocs.io/en/latest/). A simple preview is below:
50
+
51
+ ## Reading
52
+
53
+ ```py
54
+ # MSBT
55
+ from lms.message.msbtio import read_msbt_path
56
+
57
+ msbt = read_msbt_path("Text.msbt")
58
+
59
+ # UMSBT
60
+ from lms.message.umsbtio import read_umsbt_path
61
+
62
+ umsbt = read_umsbt_path("TextU.umsbt")
63
+
64
+ # MSBP
65
+ from lms.project.msbpread import read_msbp_path
66
+
67
+ msbp = read_msbp_path("Project.msbp")
68
+
69
+ # MSBF
70
+ from lms.flowchart.msbfio import read_msbf_path
71
+
72
+ msbf = read_msbf_path("Flowchart.msbf")
73
+ ```
74
+
75
+ ## Writing
76
+
77
+ ```py
78
+ # MSBT
79
+ from lms.message.msbtio import write_msbt_path
80
+
81
+ write_msbt_path("Out_text.msbt")
82
+
83
+ # UMSBT
84
+ from lms.message.umsbtio import write_umsbt_path
85
+
86
+ write_umsbt_path("Out_textu.umsbt")
87
+
88
+ # MSBF
89
+ from lms.flowchart.msbfio import write_msbf_path
90
+
91
+ write_msbf_path("Out_Flowchart.msbf")
92
+ ```
93
+
94
+ # Adding/Editing Presets
95
+
96
+ To add or edit Preset, you may create an issue with the relevant `yaml` file and the game it is for.
97
+
98
+ # Installation
99
+
100
+ Python version must be `>=3.11.
101
+
102
+ ```
103
+ pip install PyLibMS
104
+ ```
105
+
106
+ [Pip Page](https://pypi.org/project/PyLibMS/)
107
+
108
+ # Build Instructions
109
+
110
+ Clone the repository, then run `pip install`.
111
+
112
+ ```bash
113
+ git clone https://github.com/AbdyyEee/PylibMS.git
114
+ cd PyLibMS
115
+ pip install -e .
116
+ ```
117
+
118
+ # AI Disclaimer
119
+
120
+ PyLibMS and its code is handwritten, developed and maintained by abdyyeee.
121
+
122
+ AI was occasionally consulted for minor implementation references during the development of MSBT, USMBT and MSBF. No AI
123
+ was utilized for MSBP. Any references were reviewed and tested beforehand, and no code was ever directly pasted from any
124
+ generative source.
125
+
126
+ The development of unit-tests were AI assisted.
127
+
128
+ # Credits & Sources
129
+
130
+ * [SS-Decomp](https://github.com/zeldaret/ss): Referenced some parts of their MSBF decomp when adding the format
131
+ to [Nintendo-File-Formats](https://nintendo-formats.com) and this library.
132
+ * [Nintendo-File-Formats](https://nintendo-formats.com) by Kinnay: For existing information on the MSBT and MSBP file
133
+ formats.
134
+ * [Trippixyz](https://github.com/Trippixyz): For helping me get started general decompilation of the formats and general
135
+ help.
136
+ * [AeonSake](https://github.com/AeonSake): Inspiration for UMSBT implementation and other bits of the library.
@@ -0,0 +1,136 @@
1
+ Metadata-Version: 2.4
2
+ Name: PyLibMS
3
+ Version: 5.0.7
4
+ Summary: Python library built for the libMessageStudio (LMS) proprietary file formats from Nintendo. Supports MSBT, UMSBT, MSBP, and MSBF.
5
+ Author: AbdyyEee
6
+ License-Expression: MIT
7
+ Project-URL: Repository, https://github.com/AbdyyEee/PylibMS
8
+ Project-URL: Documentation, https://pylibms.readthedocs.io/en/latest/
9
+ Keywords: nintendo,msbt,umsbt,message text,msbp,message project,msbf,message flowchart,flw3,modding,libmessagestudio
10
+ Classifier: Topic :: Software Development :: Libraries
11
+ Classifier: Operating System :: OS Independent
12
+ Classifier: Programming Language :: Python :: 3.11
13
+ Classifier: Programming Language :: Python :: 3.12
14
+ Classifier: Programming Language :: Python :: 3.13
15
+ Classifier: Programming Language :: Python :: 3.14
16
+ Classifier: Programming Language :: Python :: 3.15
17
+ Requires-Python: >=3.11
18
+ Description-Content-Type: text/markdown
19
+ License-File: LICENSE
20
+ Requires-Dist: PyYAML>=6.0.3
21
+ Requires-Dist: requests>=2.34.2
22
+ Provides-Extra: docs
23
+ Requires-Dist: sphinx>=8.0.0; extra == "docs"
24
+ Requires-Dist: sphinx-rtd-theme>=2.0; extra == "docs"
25
+ Dynamic: license-file
26
+
27
+ # PyLibMS
28
+
29
+ [![Python Versions](https://img.shields.io/pypi/pyversions/PyLibMS)](https://pypi.org/project/PyLibMS/)
30
+ ![LICENSE](https://img.shields.io/badge/license-MIT-blue)
31
+ [![PyPI version](https://badge.fury.io/py/PyLibMS.svg)](https://badge.fury.io/py/PyLibMS)
32
+ ![Tests](https://github.com/abdyyeee/PyLibMS/actions/workflows/tests.yml/badge.svg?branch=main)
33
+
34
+ PyLibMS is a library built in Python 3.11 and above for reading and writing of revision >=3 of the libMessageStudio
35
+ (LMS) proprietary file formats from Nintendo. These include files generated for late **Wii** titles, **Nintendo 3DS**,
36
+ **Wii U**, **Mobile**, **Nintendo Switch** and **Nintendo Switch 2** games.
37
+
38
+ The following is supported:
39
+
40
+ | Format | Read | Write | Support |
41
+ |---------|------|-------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
42
+ | `MSBT` | ✅ | ✅ | 1:1 Reading and writing. Support for majority of sections. Full attribute (`ATR1`) decoding with configurations. Tag decoding 1:1 with the official Nintendo `.mstxt` file format. |
43
+ | `UMSBT` | ✅ | ✅ | 1:1 Reading and writing. Accessing, adding, inserting and deleting `MSBT` files within `UMSBT` archives. |
44
+ | `MSBF` | ✅ | ✅ | 1:1 Reading and writing flowcharts (`FLW3`). Support for custom node definitions, attaching names and descriptions to nodes. Altering parameter datatypes for flexibility between games. |
45
+ | `MSBP` | ✅ | ❌ | Viewing all MSBP relevant metadata and generating configuration files for use with `MSBT` files. | |
46
+
47
+ # Documentation
48
+
49
+ PyLibMS documentation is on [readthedocs](https://pylibms.readthedocs.io/en/latest/). A simple preview is below:
50
+
51
+ ## Reading
52
+
53
+ ```py
54
+ # MSBT
55
+ from lms.message.msbtio import read_msbt_path
56
+
57
+ msbt = read_msbt_path("Text.msbt")
58
+
59
+ # UMSBT
60
+ from lms.message.umsbtio import read_umsbt_path
61
+
62
+ umsbt = read_umsbt_path("TextU.umsbt")
63
+
64
+ # MSBP
65
+ from lms.project.msbpread import read_msbp_path
66
+
67
+ msbp = read_msbp_path("Project.msbp")
68
+
69
+ # MSBF
70
+ from lms.flowchart.msbfio import read_msbf_path
71
+
72
+ msbf = read_msbf_path("Flowchart.msbf")
73
+ ```
74
+
75
+ ## Writing
76
+
77
+ ```py
78
+ # MSBT
79
+ from lms.message.msbtio import write_msbt_path
80
+
81
+ write_msbt_path("Out_text.msbt")
82
+
83
+ # UMSBT
84
+ from lms.message.umsbtio import write_umsbt_path
85
+
86
+ write_umsbt_path("Out_textu.umsbt")
87
+
88
+ # MSBF
89
+ from lms.flowchart.msbfio import write_msbf_path
90
+
91
+ write_msbf_path("Out_Flowchart.msbf")
92
+ ```
93
+
94
+ # Adding/Editing Presets
95
+
96
+ To add or edit Preset, you may create an issue with the relevant `yaml` file and the game it is for.
97
+
98
+ # Installation
99
+
100
+ Python version must be `>=3.11.
101
+
102
+ ```
103
+ pip install PyLibMS
104
+ ```
105
+
106
+ [Pip Page](https://pypi.org/project/PyLibMS/)
107
+
108
+ # Build Instructions
109
+
110
+ Clone the repository, then run `pip install`.
111
+
112
+ ```bash
113
+ git clone https://github.com/AbdyyEee/PylibMS.git
114
+ cd PyLibMS
115
+ pip install -e .
116
+ ```
117
+
118
+ # AI Disclaimer
119
+
120
+ PyLibMS and its code is handwritten, developed and maintained by abdyyeee.
121
+
122
+ AI was occasionally consulted for minor implementation references during the development of MSBT, USMBT and MSBF. No AI
123
+ was utilized for MSBP. Any references were reviewed and tested beforehand, and no code was ever directly pasted from any
124
+ generative source.
125
+
126
+ The development of unit-tests were AI assisted.
127
+
128
+ # Credits & Sources
129
+
130
+ * [SS-Decomp](https://github.com/zeldaret/ss): Referenced some parts of their MSBF decomp when adding the format
131
+ to [Nintendo-File-Formats](https://nintendo-formats.com) and this library.
132
+ * [Nintendo-File-Formats](https://nintendo-formats.com) by Kinnay: For existing information on the MSBT and MSBP file
133
+ formats.
134
+ * [Trippixyz](https://github.com/Trippixyz): For helping me get started general decompilation of the formats and general
135
+ help.
136
+ * [AeonSake](https://github.com/AeonSake): Inspiration for UMSBT implementation and other bits of the library.
@@ -1,5 +1,4 @@
1
1
  LICENSE
2
- MANIFEST.in
3
2
  README.md
4
3
  pyproject.toml
5
4
  PyLibMS.egg-info/PKG-INFO
@@ -0,0 +1,6 @@
1
+ PyYAML>=6.0.3
2
+ requests>=2.34.2
3
+
4
+ [docs]
5
+ sphinx>=8.0.0
6
+ sphinx-rtd-theme>=2.0
@@ -0,0 +1,110 @@
1
+ # PyLibMS
2
+
3
+ [![Python Versions](https://img.shields.io/pypi/pyversions/PyLibMS)](https://pypi.org/project/PyLibMS/)
4
+ ![LICENSE](https://img.shields.io/badge/license-MIT-blue)
5
+ [![PyPI version](https://badge.fury.io/py/PyLibMS.svg)](https://badge.fury.io/py/PyLibMS)
6
+ ![Tests](https://github.com/abdyyeee/PyLibMS/actions/workflows/tests.yml/badge.svg?branch=main)
7
+
8
+ PyLibMS is a library built in Python 3.11 and above for reading and writing of revision >=3 of the libMessageStudio
9
+ (LMS) proprietary file formats from Nintendo. These include files generated for late **Wii** titles, **Nintendo 3DS**,
10
+ **Wii U**, **Mobile**, **Nintendo Switch** and **Nintendo Switch 2** games.
11
+
12
+ The following is supported:
13
+
14
+ | Format | Read | Write | Support |
15
+ |---------|------|-------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
16
+ | `MSBT` | ✅ | ✅ | 1:1 Reading and writing. Support for majority of sections. Full attribute (`ATR1`) decoding with configurations. Tag decoding 1:1 with the official Nintendo `.mstxt` file format. |
17
+ | `UMSBT` | ✅ | ✅ | 1:1 Reading and writing. Accessing, adding, inserting and deleting `MSBT` files within `UMSBT` archives. |
18
+ | `MSBF` | ✅ | ✅ | 1:1 Reading and writing flowcharts (`FLW3`). Support for custom node definitions, attaching names and descriptions to nodes. Altering parameter datatypes for flexibility between games. |
19
+ | `MSBP` | ✅ | ❌ | Viewing all MSBP relevant metadata and generating configuration files for use with `MSBT` files. | |
20
+
21
+ # Documentation
22
+
23
+ PyLibMS documentation is on [readthedocs](https://pylibms.readthedocs.io/en/latest/). A simple preview is below:
24
+
25
+ ## Reading
26
+
27
+ ```py
28
+ # MSBT
29
+ from lms.message.msbtio import read_msbt_path
30
+
31
+ msbt = read_msbt_path("Text.msbt")
32
+
33
+ # UMSBT
34
+ from lms.message.umsbtio import read_umsbt_path
35
+
36
+ umsbt = read_umsbt_path("TextU.umsbt")
37
+
38
+ # MSBP
39
+ from lms.project.msbpread import read_msbp_path
40
+
41
+ msbp = read_msbp_path("Project.msbp")
42
+
43
+ # MSBF
44
+ from lms.flowchart.msbfio import read_msbf_path
45
+
46
+ msbf = read_msbf_path("Flowchart.msbf")
47
+ ```
48
+
49
+ ## Writing
50
+
51
+ ```py
52
+ # MSBT
53
+ from lms.message.msbtio import write_msbt_path
54
+
55
+ write_msbt_path("Out_text.msbt")
56
+
57
+ # UMSBT
58
+ from lms.message.umsbtio import write_umsbt_path
59
+
60
+ write_umsbt_path("Out_textu.umsbt")
61
+
62
+ # MSBF
63
+ from lms.flowchart.msbfio import write_msbf_path
64
+
65
+ write_msbf_path("Out_Flowchart.msbf")
66
+ ```
67
+
68
+ # Adding/Editing Presets
69
+
70
+ To add or edit Preset, you may create an issue with the relevant `yaml` file and the game it is for.
71
+
72
+ # Installation
73
+
74
+ Python version must be `>=3.11.
75
+
76
+ ```
77
+ pip install PyLibMS
78
+ ```
79
+
80
+ [Pip Page](https://pypi.org/project/PyLibMS/)
81
+
82
+ # Build Instructions
83
+
84
+ Clone the repository, then run `pip install`.
85
+
86
+ ```bash
87
+ git clone https://github.com/AbdyyEee/PylibMS.git
88
+ cd PyLibMS
89
+ pip install -e .
90
+ ```
91
+
92
+ # AI Disclaimer
93
+
94
+ PyLibMS and its code is handwritten, developed and maintained by abdyyeee.
95
+
96
+ AI was occasionally consulted for minor implementation references during the development of MSBT, USMBT and MSBF. No AI
97
+ was utilized for MSBP. Any references were reviewed and tested beforehand, and no code was ever directly pasted from any
98
+ generative source.
99
+
100
+ The development of unit-tests were AI assisted.
101
+
102
+ # Credits & Sources
103
+
104
+ * [SS-Decomp](https://github.com/zeldaret/ss): Referenced some parts of their MSBF decomp when adding the format
105
+ to [Nintendo-File-Formats](https://nintendo-formats.com) and this library.
106
+ * [Nintendo-File-Formats](https://nintendo-formats.com) by Kinnay: For existing information on the MSBT and MSBP file
107
+ formats.
108
+ * [Trippixyz](https://github.com/Trippixyz): For helping me get started general decompilation of the formats and general
109
+ help.
110
+ * [AeonSake](https://github.com/AeonSake): Inspiration for UMSBT implementation and other bits of the library.
@@ -38,12 +38,12 @@ class UMSBT:
38
38
 
39
39
  @property
40
40
  def files(self) -> tuple[MSBT, ...]:
41
- """Maps of files tied to this instance."""
41
+ """List of files tied to this instance."""
42
42
  return tuple(self._files)
43
43
 
44
44
  @property
45
45
  def file_map(self) -> Mapping[str, MSBT]:
46
- """Maps of files tied to this instance."""
46
+ """Maps of file to their name tied to this instance."""
47
47
  return MappingProxyType({msbt.filename: msbt for msbt in self._files})
48
48
 
49
49
  def add_msbt(self, msbt: MSBT) -> None:
@@ -196,7 +196,7 @@ class TitleConfig:
196
196
  attribute_configs[config_obj.name] = config_obj
197
197
 
198
198
  tag_content = parsed_content.get(cls.TAG_KEY, {})
199
- group_map = tag_content["groups"]
199
+ group_map = tag_content.get("groups", {})
200
200
  tag_config = TagConfig(group_map)
201
201
 
202
202
  for tag_def in tag_content.get("tags", ()):
@@ -7,14 +7,15 @@ include = ["lms*"]
7
7
 
8
8
  [project]
9
9
  name = "PyLibMS"
10
- version = "5.0.5"
10
+ version = "5.0.7"
11
11
  requires-python = ">=3.11"
12
- description = "Python library built for the libMessageStudio (LMS) proprietary file formats from Nintendo. Supports MSBT, MSBP, and MSBF."
12
+ description = "Python library built for the libMessageStudio (LMS) proprietary file formats from Nintendo. Supports MSBT, UMSBT, MSBP, and MSBF."
13
13
  readme = "README.md"
14
14
  authors = [{ name = "AbdyyEee" }]
15
15
  keywords = [
16
16
  "nintendo",
17
17
  "msbt",
18
+ "umsbt",
18
19
  "message text",
19
20
  "msbp",
20
21
  "message project",
@@ -26,6 +27,8 @@ keywords = [
26
27
  license = "MIT"
27
28
  license-files = ["LICENSE*"]
28
29
  classifiers = [
30
+ "Topic :: Software Development :: Libraries",
31
+ "Operating System :: OS Independent",
29
32
  "Programming Language :: Python :: 3.11",
30
33
  "Programming Language :: Python :: 3.12",
31
34
  "Programming Language :: Python :: 3.13",
@@ -33,10 +36,16 @@ classifiers = [
33
36
  "Programming Language :: Python :: 3.15",
34
37
  ]
35
38
  dependencies = [
36
- "PyYAML>=6.0.1",
37
- "requests>=2.34.0"
39
+ "PyYAML>=6.0.3",
40
+ "requests>=2.34.2"
41
+ ]
42
+
43
+ [project.optional-dependencies]
44
+ docs = [
45
+ "sphinx>=8.0.0",
46
+ "sphinx-rtd-theme>=2.0"
38
47
  ]
39
48
 
40
49
  [project.urls]
41
50
  Repository = "https://github.com/AbdyyEee/PylibMS"
42
- Documentation = "https://github.com/AbdyyEee/PylibMS/wiki"
51
+ Documentation = "https://pylibms.readthedocs.io/en/latest/"
pylibms-5.0.5/MANIFEST.in DELETED
@@ -1 +0,0 @@
1
- include README.md LICENSE
pylibms-5.0.5/PKG-INFO DELETED
@@ -1,118 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: PyLibMS
3
- Version: 5.0.5
4
- Summary: Python library built for the libMessageStudio (LMS) proprietary file formats from Nintendo. Supports MSBT, MSBP, and MSBF.
5
- Author: AbdyyEee
6
- License-Expression: MIT
7
- Project-URL: Repository, https://github.com/AbdyyEee/PylibMS
8
- Project-URL: Documentation, https://github.com/AbdyyEee/PylibMS/wiki
9
- Keywords: nintendo,msbt,message text,msbp,message project,msbf,message flowchart,flw3,modding,libmessagestudio
10
- Classifier: Programming Language :: Python :: 3.11
11
- Classifier: Programming Language :: Python :: 3.12
12
- Classifier: Programming Language :: Python :: 3.13
13
- Classifier: Programming Language :: Python :: 3.14
14
- Classifier: Programming Language :: Python :: 3.15
15
- Requires-Python: >=3.11
16
- Description-Content-Type: text/markdown
17
- License-File: LICENSE
18
- Requires-Dist: PyYAML>=6.0.1
19
- Requires-Dist: requests>=2.34.0
20
- Dynamic: license-file
21
-
22
- # PyLibMS
23
-
24
- [![Python Versions](https://img.shields.io/pypi/pyversions/PyLibMS)](https://pypi.org/project/PyLibMS/)
25
- ![LICENSE](https://img.shields.io/badge/license-MIT-blue)
26
- [![PyPI version](https://badge.fury.io/py/PyLibMS.svg)](https://badge.fury.io/py/PyLibMS)
27
- ![Tests](https://github.com/abdyyeee/PyLibMS/actions/workflows/tests.yml/badge.svg?branch=main)
28
-
29
- PyLibMS is a library built in Python 3.11 and above for reading and writing of libMessageStudio (LMS) proprietary file
30
- formats from Nintendo.
31
-
32
- The following is supported:
33
-
34
- | Format | Read | Write | Support |
35
- |--------|------|-------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
36
- | `MSBT` | ✅ | ✅ | 1:1 Reading and writing Support for majority of sections. Full attribute (`ATR1`) decoding with configurations. Tag decoding 1:1 with the official Nintendo `.mstxt` file format. |
37
- | `MSBF` | ✅ | ✅ | 1:1 Reading and writing flowcharts (`FLW3`). Support for custom node definitions, attaching names and descriptions to nodes. Altering parameter datatypes for flexibility between games. |
38
- | `MSBP` | ✅ | ❌ | Viewing all MSBP relevant metadata and generating configuration files for use with `MSBT` files. |
39
-
40
- This library is designed to support LMS revision >=3.0. These include files generated for late **Wii** titles,
41
- **Nintendo 3DS**, **Wii U**, **Mobile**, **Nintendo Switch** and **Nintendo Switch 2** games.
42
-
43
- # Features and Usage
44
-
45
- Simple preview of the library is below. See [the wiki](https://github.com/AbdyyEee/PylibMS/wiki) for more explanations
46
- and examples.
47
-
48
- ## Reading
49
-
50
- ```py
51
- # MSBT
52
- from lms.message.msbtio import read_msbt_path
53
-
54
- msbt = read_msbt_path("Text.msbt")
55
-
56
- # MSBP
57
- from lms.project.msbpread import read_msbp_path
58
-
59
- msbp = read_msbp_path("Project.msbp")
60
-
61
- # MSBF
62
- from lms.flowchart.msbfio import read_msbf_path
63
-
64
- msbf = read_msbf_path("Flowchart.msbf")
65
- ```
66
-
67
- ## Writing
68
-
69
- ```py
70
- # MSBT
71
- from lms.message.msbtio import write_msbt_path
72
-
73
- write_msbt_path("Out_text.msbt")
74
-
75
- # MSBF
76
- from lms.flowchart.msbfio import write_msbf_path
77
-
78
- write_msbf_path("Out_Flowchart.msbf")
79
- ```
80
-
81
- # Adding/Editing Presets
82
-
83
- To add or edit Preset, you may create an issue with the relevant `yaml` file and the game it is for.
84
-
85
- # Installation
86
-
87
- ```
88
- pip install PyLibMS
89
- ```
90
-
91
- [Pip Page](https://pypi.org/project/PyLibMS/)
92
-
93
- # Build Instructions
94
-
95
- Python version must be `3.11` or higher.
96
-
97
- Clone the repository, then run `pip install` (venv recommended)
98
-
99
- ```bash
100
- git clone https://github.com/AbdyyEee/PylibMS.git
101
- cd PyLibMS
102
- pip install -e .
103
- ```
104
-
105
- # AI Disclaimer
106
-
107
- Code in this library was written by me. AI was utilized occasionally when developing MSBT (specifically tag string importing) , MSBF and assisting in creating unit tests.
108
-
109
- # Credits & Sources
110
-
111
- * [SS-Decomp](https://github.com/zeldaret/ss): Referenced some parts of their MSBF decomp when adding the format
112
- to [Nintendo-File-Formats](https://nintendo-formats.com) and this library.
113
- * [Nintendo-File-Formats](https://nintendo-formats.com) by Kinnay: For existing information on the MSBT and MSBP file
114
- formats.
115
- * [Trippixyz](https://github.com/Trippixyz): For helping me get started general decompilation of the formats and general
116
- help.
117
- * [AeonSake](https://github.com/AeonSake): Inspiration for some the implementation of the library and a bit of general
118
- help.
@@ -1,118 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: PyLibMS
3
- Version: 5.0.5
4
- Summary: Python library built for the libMessageStudio (LMS) proprietary file formats from Nintendo. Supports MSBT, MSBP, and MSBF.
5
- Author: AbdyyEee
6
- License-Expression: MIT
7
- Project-URL: Repository, https://github.com/AbdyyEee/PylibMS
8
- Project-URL: Documentation, https://github.com/AbdyyEee/PylibMS/wiki
9
- Keywords: nintendo,msbt,message text,msbp,message project,msbf,message flowchart,flw3,modding,libmessagestudio
10
- Classifier: Programming Language :: Python :: 3.11
11
- Classifier: Programming Language :: Python :: 3.12
12
- Classifier: Programming Language :: Python :: 3.13
13
- Classifier: Programming Language :: Python :: 3.14
14
- Classifier: Programming Language :: Python :: 3.15
15
- Requires-Python: >=3.11
16
- Description-Content-Type: text/markdown
17
- License-File: LICENSE
18
- Requires-Dist: PyYAML>=6.0.1
19
- Requires-Dist: requests>=2.34.0
20
- Dynamic: license-file
21
-
22
- # PyLibMS
23
-
24
- [![Python Versions](https://img.shields.io/pypi/pyversions/PyLibMS)](https://pypi.org/project/PyLibMS/)
25
- ![LICENSE](https://img.shields.io/badge/license-MIT-blue)
26
- [![PyPI version](https://badge.fury.io/py/PyLibMS.svg)](https://badge.fury.io/py/PyLibMS)
27
- ![Tests](https://github.com/abdyyeee/PyLibMS/actions/workflows/tests.yml/badge.svg?branch=main)
28
-
29
- PyLibMS is a library built in Python 3.11 and above for reading and writing of libMessageStudio (LMS) proprietary file
30
- formats from Nintendo.
31
-
32
- The following is supported:
33
-
34
- | Format | Read | Write | Support |
35
- |--------|------|-------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
36
- | `MSBT` | ✅ | ✅ | 1:1 Reading and writing Support for majority of sections. Full attribute (`ATR1`) decoding with configurations. Tag decoding 1:1 with the official Nintendo `.mstxt` file format. |
37
- | `MSBF` | ✅ | ✅ | 1:1 Reading and writing flowcharts (`FLW3`). Support for custom node definitions, attaching names and descriptions to nodes. Altering parameter datatypes for flexibility between games. |
38
- | `MSBP` | ✅ | ❌ | Viewing all MSBP relevant metadata and generating configuration files for use with `MSBT` files. |
39
-
40
- This library is designed to support LMS revision >=3.0. These include files generated for late **Wii** titles,
41
- **Nintendo 3DS**, **Wii U**, **Mobile**, **Nintendo Switch** and **Nintendo Switch 2** games.
42
-
43
- # Features and Usage
44
-
45
- Simple preview of the library is below. See [the wiki](https://github.com/AbdyyEee/PylibMS/wiki) for more explanations
46
- and examples.
47
-
48
- ## Reading
49
-
50
- ```py
51
- # MSBT
52
- from lms.message.msbtio import read_msbt_path
53
-
54
- msbt = read_msbt_path("Text.msbt")
55
-
56
- # MSBP
57
- from lms.project.msbpread import read_msbp_path
58
-
59
- msbp = read_msbp_path("Project.msbp")
60
-
61
- # MSBF
62
- from lms.flowchart.msbfio import read_msbf_path
63
-
64
- msbf = read_msbf_path("Flowchart.msbf")
65
- ```
66
-
67
- ## Writing
68
-
69
- ```py
70
- # MSBT
71
- from lms.message.msbtio import write_msbt_path
72
-
73
- write_msbt_path("Out_text.msbt")
74
-
75
- # MSBF
76
- from lms.flowchart.msbfio import write_msbf_path
77
-
78
- write_msbf_path("Out_Flowchart.msbf")
79
- ```
80
-
81
- # Adding/Editing Presets
82
-
83
- To add or edit Preset, you may create an issue with the relevant `yaml` file and the game it is for.
84
-
85
- # Installation
86
-
87
- ```
88
- pip install PyLibMS
89
- ```
90
-
91
- [Pip Page](https://pypi.org/project/PyLibMS/)
92
-
93
- # Build Instructions
94
-
95
- Python version must be `3.11` or higher.
96
-
97
- Clone the repository, then run `pip install` (venv recommended)
98
-
99
- ```bash
100
- git clone https://github.com/AbdyyEee/PylibMS.git
101
- cd PyLibMS
102
- pip install -e .
103
- ```
104
-
105
- # AI Disclaimer
106
-
107
- Code in this library was written by me. AI was utilized occasionally when developing MSBT (specifically tag string importing) , MSBF and assisting in creating unit tests.
108
-
109
- # Credits & Sources
110
-
111
- * [SS-Decomp](https://github.com/zeldaret/ss): Referenced some parts of their MSBF decomp when adding the format
112
- to [Nintendo-File-Formats](https://nintendo-formats.com) and this library.
113
- * [Nintendo-File-Formats](https://nintendo-formats.com) by Kinnay: For existing information on the MSBT and MSBP file
114
- formats.
115
- * [Trippixyz](https://github.com/Trippixyz): For helping me get started general decompilation of the formats and general
116
- help.
117
- * [AeonSake](https://github.com/AeonSake): Inspiration for some the implementation of the library and a bit of general
118
- help.
@@ -1,2 +0,0 @@
1
- PyYAML>=6.0.1
2
- requests>=2.34.0
pylibms-5.0.5/README.md DELETED
@@ -1,97 +0,0 @@
1
- # PyLibMS
2
-
3
- [![Python Versions](https://img.shields.io/pypi/pyversions/PyLibMS)](https://pypi.org/project/PyLibMS/)
4
- ![LICENSE](https://img.shields.io/badge/license-MIT-blue)
5
- [![PyPI version](https://badge.fury.io/py/PyLibMS.svg)](https://badge.fury.io/py/PyLibMS)
6
- ![Tests](https://github.com/abdyyeee/PyLibMS/actions/workflows/tests.yml/badge.svg?branch=main)
7
-
8
- PyLibMS is a library built in Python 3.11 and above for reading and writing of libMessageStudio (LMS) proprietary file
9
- formats from Nintendo.
10
-
11
- The following is supported:
12
-
13
- | Format | Read | Write | Support |
14
- |--------|------|-------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
15
- | `MSBT` | ✅ | ✅ | 1:1 Reading and writing Support for majority of sections. Full attribute (`ATR1`) decoding with configurations. Tag decoding 1:1 with the official Nintendo `.mstxt` file format. |
16
- | `MSBF` | ✅ | ✅ | 1:1 Reading and writing flowcharts (`FLW3`). Support for custom node definitions, attaching names and descriptions to nodes. Altering parameter datatypes for flexibility between games. |
17
- | `MSBP` | ✅ | ❌ | Viewing all MSBP relevant metadata and generating configuration files for use with `MSBT` files. |
18
-
19
- This library is designed to support LMS revision >=3.0. These include files generated for late **Wii** titles,
20
- **Nintendo 3DS**, **Wii U**, **Mobile**, **Nintendo Switch** and **Nintendo Switch 2** games.
21
-
22
- # Features and Usage
23
-
24
- Simple preview of the library is below. See [the wiki](https://github.com/AbdyyEee/PylibMS/wiki) for more explanations
25
- and examples.
26
-
27
- ## Reading
28
-
29
- ```py
30
- # MSBT
31
- from lms.message.msbtio import read_msbt_path
32
-
33
- msbt = read_msbt_path("Text.msbt")
34
-
35
- # MSBP
36
- from lms.project.msbpread import read_msbp_path
37
-
38
- msbp = read_msbp_path("Project.msbp")
39
-
40
- # MSBF
41
- from lms.flowchart.msbfio import read_msbf_path
42
-
43
- msbf = read_msbf_path("Flowchart.msbf")
44
- ```
45
-
46
- ## Writing
47
-
48
- ```py
49
- # MSBT
50
- from lms.message.msbtio import write_msbt_path
51
-
52
- write_msbt_path("Out_text.msbt")
53
-
54
- # MSBF
55
- from lms.flowchart.msbfio import write_msbf_path
56
-
57
- write_msbf_path("Out_Flowchart.msbf")
58
- ```
59
-
60
- # Adding/Editing Presets
61
-
62
- To add or edit Preset, you may create an issue with the relevant `yaml` file and the game it is for.
63
-
64
- # Installation
65
-
66
- ```
67
- pip install PyLibMS
68
- ```
69
-
70
- [Pip Page](https://pypi.org/project/PyLibMS/)
71
-
72
- # Build Instructions
73
-
74
- Python version must be `3.11` or higher.
75
-
76
- Clone the repository, then run `pip install` (venv recommended)
77
-
78
- ```bash
79
- git clone https://github.com/AbdyyEee/PylibMS.git
80
- cd PyLibMS
81
- pip install -e .
82
- ```
83
-
84
- # AI Disclaimer
85
-
86
- Code in this library was written by me. AI was utilized occasionally when developing MSBT (specifically tag string importing) , MSBF and assisting in creating unit tests.
87
-
88
- # Credits & Sources
89
-
90
- * [SS-Decomp](https://github.com/zeldaret/ss): Referenced some parts of their MSBF decomp when adding the format
91
- to [Nintendo-File-Formats](https://nintendo-formats.com) and this library.
92
- * [Nintendo-File-Formats](https://nintendo-formats.com) by Kinnay: For existing information on the MSBT and MSBP file
93
- formats.
94
- * [Trippixyz](https://github.com/Trippixyz): For helping me get started general decompilation of the formats and general
95
- help.
96
- * [AeonSake](https://github.com/AeonSake): Inspiration for some the implementation of the library and a bit of general
97
- help.
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