PyLibMS 2.0.4__tar.gz → 2.0.6__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 (67) hide show
  1. {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Field/LMS_Field.py +1 -1
  2. {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Field/Stream.py +1 -1
  3. {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Message/Definitions/LMS_MessageText.py +2 -3
  4. {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Message/MSBTStream.py +12 -5
  5. {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Message/Section/ATR1.py +1 -1
  6. {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Message/Section/TXT2.py +1 -1
  7. {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Message/Tag/LMS_Tag.py +2 -3
  8. {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Message/Tag/Stream.py +20 -10
  9. pylibms-2.0.6/LMS/Message/Tag/System_Definition.py +83 -0
  10. {pylibms-2.0.4 → pylibms-2.0.6}/LMS/TitleConfig/Config.py +25 -22
  11. {pylibms-2.0.4 → pylibms-2.0.6}/LMS/TitleConfig/Definitions/Tags.py +2 -2
  12. {pylibms-2.0.4 → pylibms-2.0.6}/LMS/TitleConfig/Definitions/Value.py +2 -2
  13. pylibms-2.0.6/MANIFEST.in +2 -0
  14. {pylibms-2.0.4 → pylibms-2.0.6}/PKG-INFO +1 -1
  15. {pylibms-2.0.4 → pylibms-2.0.6}/PyLibMS.egg-info/PKG-INFO +1 -1
  16. {pylibms-2.0.4 → pylibms-2.0.6}/PyLibMS.egg-info/SOURCES.txt +1 -1
  17. {pylibms-2.0.4 → pylibms-2.0.6}/pyproject.toml +1 -1
  18. pylibms-2.0.4/LMS/Message/Tag/System.yaml +0 -47
  19. pylibms-2.0.4/MANIFEST.in +0 -3
  20. {pylibms-2.0.4 → pylibms-2.0.6}/LICENSE +0 -0
  21. {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Common/LMS_Exceptions.py +0 -0
  22. {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Common/LMS_FileInfo.py +0 -0
  23. {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Common/Stream/FileInfo.py +0 -0
  24. {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Common/Stream/Hashtable.py +0 -0
  25. {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Common/Stream/Section.py +0 -0
  26. {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Common/__init__.py +0 -0
  27. {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Field/LMS_DataType.py +0 -0
  28. {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Field/__init__.py +0 -0
  29. {pylibms-2.0.4 → pylibms-2.0.6}/LMS/FileIO/Encoding.py +0 -0
  30. {pylibms-2.0.4 → pylibms-2.0.6}/LMS/FileIO/Stream.py +0 -0
  31. {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Message/Definitions/LMS_FieldMap.py +0 -0
  32. {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Message/Definitions/__init__.py +0 -0
  33. {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Message/MSBT.py +0 -0
  34. {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Message/MSBTEntry.py +0 -0
  35. {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Message/Section/TSY1.py +0 -0
  36. {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Message/Section/__init__.py +0 -0
  37. {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Message/Tag/LMS_TagExceptions.py +0 -0
  38. {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Message/Tag/Tag_Formats.py +0 -0
  39. {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Message/Tag/__init__.py +0 -0
  40. {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Message/__init__.py +0 -0
  41. {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Project/Definitions/Attribute.py +0 -0
  42. {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Project/Definitions/Color.py +0 -0
  43. {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Project/Definitions/Style.py +0 -0
  44. {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Project/Definitions/Tag.py +0 -0
  45. {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Project/Definitions/__init__.py +0 -0
  46. {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Project/MSBP.py +0 -0
  47. {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Project/MSBPRead.py +0 -0
  48. {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Project/Section/ALI2.py +0 -0
  49. {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Project/Section/ATI2.py +0 -0
  50. {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Project/Section/CLR1.py +0 -0
  51. {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Project/Section/SYL3.py +0 -0
  52. {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Project/Section/String.py +0 -0
  53. {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Project/Section/TAG2.py +0 -0
  54. {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Project/Section/TGG2.py +0 -0
  55. {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Project/Section/TGP2.py +0 -0
  56. {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Project/__init__.py +0 -0
  57. {pylibms-2.0.4 → pylibms-2.0.6}/LMS/TitleConfig/Definitions/Attributes.py +0 -0
  58. {pylibms-2.0.4 → pylibms-2.0.6}/LMS/TitleConfig/Definitions/__init__.py +0 -0
  59. {pylibms-2.0.4 → pylibms-2.0.6}/LMS/TitleConfig/Presets/Tomodachi Life.yaml +0 -0
  60. {pylibms-2.0.4 → pylibms-2.0.6}/LMS/TitleConfig/Presets/__init__.py +0 -0
  61. {pylibms-2.0.4 → pylibms-2.0.6}/LMS/TitleConfig/__init__.py +0 -0
  62. {pylibms-2.0.4 → pylibms-2.0.6}/LMS/__init__.py +0 -0
  63. {pylibms-2.0.4 → pylibms-2.0.6}/PyLibMS.egg-info/dependency_links.txt +0 -0
  64. {pylibms-2.0.4 → pylibms-2.0.6}/PyLibMS.egg-info/requires.txt +0 -0
  65. {pylibms-2.0.4 → pylibms-2.0.6}/PyLibMS.egg-info/top_level.txt +0 -0
  66. {pylibms-2.0.4 → pylibms-2.0.6}/README.md +0 -0
  67. {pylibms-2.0.4 → pylibms-2.0.6}/setup.cfg +0 -0
@@ -1,7 +1,7 @@
1
1
  from dataclasses import dataclass, field
2
2
 
3
- from LMS.TitleConfig.Definitions.Value import ValueDefinition
4
3
  from LMS.Field.LMS_DataType import LMS_DataType
4
+ from LMS.TitleConfig.Definitions.Value import ValueDefinition
5
5
 
6
6
 
7
7
  class LMS_Field:
@@ -1,7 +1,7 @@
1
- from LMS.TitleConfig.Definitions.Value import ValueDefinition
2
1
  from LMS.Field.LMS_DataType import LMS_DataType
3
2
  from LMS.Field.LMS_Field import LMS_Field
4
3
  from LMS.FileIO.Stream import FileReader, FileWriter
4
+ from LMS.TitleConfig.Definitions.Value import ValueDefinition
5
5
 
6
6
 
7
7
  def read_field(reader: FileReader, definition: ValueDefinition) -> LMS_Field:
@@ -1,11 +1,10 @@
1
1
  import re
2
2
  from typing import overload
3
3
 
4
- from LMS.TitleConfig.Config import TagConfig
5
4
  from LMS.Field.LMS_Field import LMS_Field
6
5
  from LMS.Message.Tag.LMS_Tag import LMS_DecodedTag, LMS_EncodedTag, LMS_TagBase
7
- from LMS.Message.Tag.Tag_Formats import (DECODED_FORMAT, ENCODED_FORMAT,
8
- TAG_FORMAT)
6
+ from LMS.Message.Tag.Tag_Formats import DECODED_FORMAT, ENCODED_FORMAT, TAG_FORMAT
7
+ from LMS.TitleConfig.Config import TagConfig
9
8
 
10
9
 
11
10
  class LMS_MessageText:
@@ -3,16 +3,23 @@ from typing import BinaryIO
3
3
  from LMS.Common import LMS_Exceptions
4
4
  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
- from LMS.Common.Stream.Section import (read_section_data, write_section,
7
- write_unsupported_section)
8
- from LMS.TitleConfig.Config import AttributeConfig, TagConfig
6
+ from LMS.Common.Stream.Section import (
7
+ read_section_data,
8
+ write_section,
9
+ write_unsupported_section,
10
+ )
9
11
  from LMS.FileIO.Stream import FileReader, FileWriter
10
12
  from LMS.Message.MSBT import MSBT
11
13
  from LMS.Message.MSBTEntry import MSBTEntry
12
- from LMS.Message.Section.ATR1 import (read_decoded_atr1, read_encoded_atr1,
13
- write_decoded_atr1, write_encoded_atr1)
14
+ from LMS.Message.Section.ATR1 import (
15
+ read_decoded_atr1,
16
+ read_encoded_atr1,
17
+ write_decoded_atr1,
18
+ write_encoded_atr1,
19
+ )
14
20
  from LMS.Message.Section.TSY1 import read_tsy1, write_tsy1
15
21
  from LMS.Message.Section.TXT2 import read_txt2, write_txt2
22
+ from LMS.TitleConfig.Config import AttributeConfig, TagConfig
16
23
 
17
24
 
18
25
  def read_msbt(
@@ -1,9 +1,9 @@
1
- from LMS.TitleConfig.Definitions.Attributes import AttributeConfig
2
1
  from LMS.Field.LMS_DataType import LMS_DataType
3
2
  from LMS.Field.LMS_Field import LMS_DataType, LMS_Field
4
3
  from LMS.Field.Stream import read_field, write_field
5
4
  from LMS.FileIO.Stream import FileReader, FileWriter
6
5
  from LMS.Message.Definitions.LMS_FieldMap import LMS_FieldMap
6
+ from LMS.TitleConfig.Definitions.Attributes import AttributeConfig
7
7
 
8
8
 
9
9
  def read_encoded_atr1(
@@ -1,9 +1,9 @@
1
- from LMS.TitleConfig.Definitions.Tags import TagConfig
2
1
  from LMS.FileIO.Encoding import FileEncoding
3
2
  from LMS.FileIO.Stream import FileReader, FileWriter
4
3
  from LMS.Message.Definitions.LMS_MessageText import LMS_MessageText
5
4
  from LMS.Message.Tag.LMS_Tag import LMS_TagBase
6
5
  from LMS.Message.Tag.Stream import read_tag, write_tag
6
+ from LMS.TitleConfig.Definitions.Tags import TagConfig
7
7
 
8
8
 
9
9
  def read_txt2(
@@ -1,12 +1,11 @@
1
1
  import re
2
2
  from abc import ABC, abstractmethod
3
3
 
4
- from LMS.TitleConfig.Definitions.Tags import TagConfig
5
4
  from LMS.Field.LMS_Field import LMS_Field, cast_value
6
5
  from LMS.Message.Definitions.LMS_FieldMap import LMS_FieldMap
7
6
  from LMS.Message.Tag.LMS_TagExceptions import LMS_InvalidTagFormatError
8
- from LMS.Message.Tag.Tag_Formats import (DECODED_FORMAT, ENCODED_FORMAT,
9
- PARAMETER_FORMAT)
7
+ from LMS.Message.Tag.Tag_Formats import DECODED_FORMAT, ENCODED_FORMAT, PARAMETER_FORMAT
8
+ from LMS.TitleConfig.Definitions.Tags import TagConfig
10
9
 
11
10
 
12
11
  class LMS_TagBase(ABC):
@@ -1,12 +1,15 @@
1
- from LMS.TitleConfig.Definitions.Tags import TagConfig, TagDefinition
2
1
  from LMS.Field.LMS_DataType import LMS_DataType
3
2
  from LMS.Field.LMS_Field import LMS_Field
4
3
  from LMS.Field.Stream import read_field, write_field
5
4
  from LMS.FileIO.Stream import FileReader, FileWriter
6
5
  from LMS.Message.Definitions.LMS_FieldMap import LMS_FieldMap
7
6
  from LMS.Message.Tag.LMS_Tag import LMS_DecodedTag, LMS_EncodedTag, LMS_TagBase
8
- from LMS.Message.Tag.LMS_TagExceptions import (LMS_TagReadingError,
9
- LMS_TagWritingException)
7
+ from LMS.Message.Tag.LMS_TagExceptions import (
8
+ LMS_TagReadingError,
9
+ LMS_TagWritingException,
10
+ )
11
+ from LMS.Message.Tag.System_Definition import SYSTEM_GROUP
12
+ from LMS.TitleConfig.Definitions.Tags import TagConfig, TagDefinition
10
13
 
11
14
 
12
15
  def read_tag(
@@ -18,7 +21,8 @@ def read_tag(
18
21
  ) -> LMS_EncodedTag | LMS_DecodedTag:
19
22
  end = reader.tell() + param_size
20
23
 
21
- if config is None:
24
+ # System tags of group 0 are always defined, ensure they are read like any other decoded tag by default
25
+ if config is None and group_index > 0:
22
26
  parameters = _read_encoded_parameters(reader, param_size)
23
27
 
24
28
  if parameters is None:
@@ -26,7 +30,10 @@ def read_tag(
26
30
 
27
31
  return LMS_EncodedTag(group_index, tag_index, parameters)
28
32
 
29
- definition = config.get_definition_by_indexes(group_index, tag_index)
33
+ if group_index == 0:
34
+ definition = SYSTEM_GROUP[tag_index]
35
+ else:
36
+ definition = config.get_definition_by_indexes(group_index, tag_index)
30
37
 
31
38
  # If the parameters were omitted from the definition but the tag still has defined parameters, read them.
32
39
  # This is to account for encoded tags that group have tag names attatched.
@@ -59,20 +66,20 @@ def write_tag(writer: FileWriter, tag: LMS_TagBase) -> None:
59
66
 
60
67
  if tag.parameters is None:
61
68
  writer.write_uint16(0)
62
- return None
69
+ return
63
70
 
64
71
  if isinstance(tag, LMS_EncodedTag):
65
72
  _write_encoded_parameters(writer, tag.parameters)
66
73
  else:
67
74
  _write_decoded_parameters(writer, tag)
68
75
 
69
- return None
76
+ return
70
77
 
71
78
 
72
79
  # --
73
80
  def _read_encoded_parameters(reader: FileReader, param_size: int) -> list[str] | None:
74
81
  if param_size == 0:
75
- return None
82
+ return
76
83
 
77
84
  hex_parameters = reader.read_bytes(param_size).hex().upper()
78
85
  encoded_parameters = [
@@ -88,8 +95,11 @@ def _write_encoded_parameters(writer: FileWriter, parameters: list[str] | None)
88
95
 
89
96
 
90
97
  def _read_decoded_parameters(
91
- reader: FileReader, definition: TagDefinition
92
- ) -> LMS_FieldMap:
98
+ reader: FileReader, definition: TagDefinition | None
99
+ ) -> LMS_FieldMap | None:
100
+ if definition.parameters is None:
101
+ return
102
+
93
103
  parameters = {}
94
104
  for param in definition.parameters:
95
105
  param_offset = reader.tell()
@@ -0,0 +1,83 @@
1
+ from LMS.Field.LMS_DataType import LMS_DataType
2
+ from LMS.TitleConfig.Definitions.Tags import TagDefinition
3
+ from LMS.TitleConfig.Definitions.Value import ValueDefinition
4
+
5
+ RUBY_TAG = TagDefinition(
6
+ group_name="System",
7
+ group_index=0,
8
+ tag_name="Ruby",
9
+ tag_index=0,
10
+ description="Displays a RUBY character.",
11
+ parameters=[
12
+ ValueDefinition(
13
+ name="rt", description="The ruby character.", datatype=LMS_DataType.STRING
14
+ )
15
+ ],
16
+ )
17
+
18
+ FONT_TAG = TagDefinition(
19
+ group_name="System",
20
+ group_index=0,
21
+ tag_name="Font",
22
+ tag_index=1,
23
+ description="Sets the font file of text.",
24
+ parameters=[
25
+ ValueDefinition(
26
+ name="face", description="The font face name.", datatype=LMS_DataType.STRING
27
+ )
28
+ ],
29
+ )
30
+
31
+ SIZE_TAG = TagDefinition(
32
+ group_name="System",
33
+ group_index=0,
34
+ tag_name="Size",
35
+ tag_index=2,
36
+ description="Alters the size of text.",
37
+ parameters=[
38
+ ValueDefinition(
39
+ name="percent",
40
+ description="The new size as a percent.",
41
+ datatype=LMS_DataType.UINT16,
42
+ )
43
+ ],
44
+ )
45
+ COLOR_TAG = TagDefinition(
46
+ group_name="System",
47
+ group_index=0,
48
+ tag_name="Color",
49
+ tag_index=3,
50
+ description="Sets the color of text in a message in RGBA form.",
51
+ parameters=[
52
+ ValueDefinition(
53
+ name="r", description="The red color value.", datatype=LMS_DataType.UINT8
54
+ ),
55
+ ValueDefinition(
56
+ name="g", description="The green color value.", datatype=LMS_DataType.UINT8
57
+ ),
58
+ ValueDefinition(
59
+ name="b", description="The blue color value.", datatype=LMS_DataType.UINT8
60
+ ),
61
+ ValueDefinition(
62
+ name="a",
63
+ description="The alpha transprency value.",
64
+ datatype=LMS_DataType.UINT8,
65
+ ),
66
+ ],
67
+ )
68
+
69
+ PAGEBREAK_TAG = TagDefinition(
70
+ group_name="System",
71
+ group_index=0,
72
+ tag_name="PageBreak",
73
+ tag_index=4,
74
+ description="Displays text in the same label on different pages.",
75
+ )
76
+
77
+ SYSTEM_GROUP = {
78
+ 0: RUBY_TAG,
79
+ 1: FONT_TAG,
80
+ 2: SIZE_TAG,
81
+ 3: COLOR_TAG,
82
+ 4: PAGEBREAK_TAG,
83
+ }
@@ -3,11 +3,11 @@ from typing import Self
3
3
 
4
4
  import yaml
5
5
 
6
+ from LMS.Field.LMS_DataType import LMS_DataType
7
+ from LMS.Project.MSBP import MSBP
6
8
  from LMS.TitleConfig.Definitions.Attributes import AttributeConfig
7
9
  from LMS.TitleConfig.Definitions.Tags import TagConfig, TagDefinition
8
10
  from LMS.TitleConfig.Definitions.Value import ValueDefinition
9
- from LMS.Field.LMS_DataType import LMS_DataType
10
- from LMS.Project.MSBP import MSBP
11
11
 
12
12
 
13
13
  class TitleConfig:
@@ -15,12 +15,14 @@ class TitleConfig:
15
15
 
16
16
  # Populate the preset list from the directory
17
17
  PRESET_LIST = [
18
- file.name.removesuffix(".yaml")
19
- for file in resources.files("LMS.TitleConfig.Presets").iterdir()
20
- if file.name.endswith(".yaml")
21
- ]
22
-
23
- def __init__(self, attribute_configs: dict[str, AttributeConfig], tag_config: TagConfig):
18
+ file.name.removesuffix(".yaml")
19
+ for file in resources.files("LMS.TitleConfig.Presets").iterdir()
20
+ if file.name.endswith(".yaml")
21
+ ]
22
+
23
+ def __init__(
24
+ self, attribute_configs: dict[str, AttributeConfig], tag_config: TagConfig
25
+ ):
24
26
  self._attribute_configs = attribute_configs
25
27
  self._tag_config = tag_config
26
28
 
@@ -61,22 +63,15 @@ class TitleConfig:
61
63
  else:
62
64
  parsed_content = content
63
65
 
64
- group_map = {0: "System"}
65
- tag_config = []
66
-
67
- # Add the System tag definitions to the config
68
- with resources.open_text("LMS.Message.Tag", "System.yaml") as f:
69
- system_tags = yaml.safe_load(f)
70
- tag_config = system_tags
71
-
66
+ raw_tag_config = []
72
67
  # Combine with the rest of the cofnig
73
- group_map |= parsed_content["tag_definitions"]["groups"]
68
+ group_map = parsed_content["tag_definitions"]["groups"]
74
69
  for tag_def in parsed_content["tag_definitions"]["tags"]:
75
- tag_config.append(tag_def)
70
+ raw_tag_config.append(tag_def)
76
71
 
77
72
  # Load tag definitions
78
73
  tag_definitions = []
79
- for tag_def in tag_config:
74
+ for tag_def in raw_tag_config:
80
75
  tag_name = tag_def["name"]
81
76
  group_index, tag_index = tag_def["group_index"], tag_def["tag_index"]
82
77
  group_name = group_map[group_index]
@@ -92,7 +87,11 @@ class TitleConfig:
92
87
  param_description = param_def["description"]
93
88
  datatype = LMS_DataType.from_string(param_def["datatype"])
94
89
  list_items = param_def.get("list_items")
95
- parameters.append(ValueDefinition(param_name, param_description, datatype, list_items))
90
+ parameters.append(
91
+ ValueDefinition(
92
+ param_name, param_description, datatype, list_items
93
+ )
94
+ )
96
95
 
97
96
  tag_definitions.append(
98
97
  TagDefinition(
@@ -121,7 +120,9 @@ class TitleConfig:
121
120
  definition = ValueDefinition(name, description, datatype, list_items)
122
121
  definitions.append(definition)
123
122
 
124
- structure = AttributeConfig(structure_name, structure["description"], definitions)
123
+ structure = AttributeConfig(
124
+ structure_name, structure["description"], definitions
125
+ )
125
126
  attribute_config[structure_name] = structure
126
127
 
127
128
  return cls(attribute_config, tag_config)
@@ -151,7 +152,9 @@ class TitleConfig:
151
152
  # These files were generated from the source machine from the actual libMS tool
152
153
  # Shorten the filename with basname and replace the extension with .msbt for lookup later when reading a MSBT
153
154
  config[tag_key] = {
154
- "groups": {i + 1: group.name for i, group in enumerate(project.tag_groups[1:])},
155
+ "groups": {
156
+ i + 1: group.name for i, group in enumerate(project.tag_groups[1:])
157
+ },
155
158
  "tags": [],
156
159
  }
157
160
 
@@ -1,6 +1,6 @@
1
1
  from __future__ import annotations
2
2
 
3
- from dataclasses import dataclass
3
+ from dataclasses import dataclass, field
4
4
 
5
5
  from LMS.TitleConfig.Definitions.Value import ValueDefinition
6
6
 
@@ -14,7 +14,7 @@ class TagDefinition:
14
14
  tag_name: str
15
15
  tag_index: int
16
16
  description: str
17
- parameters: list[ValueDefinition] | None
17
+ parameters: list[ValueDefinition] = field(default=None)
18
18
 
19
19
 
20
20
  @dataclass(frozen=True)
@@ -1,4 +1,4 @@
1
- from dataclasses import dataclass
1
+ from dataclasses import dataclass, field
2
2
 
3
3
  from LMS.Field.LMS_DataType import LMS_DataType
4
4
 
@@ -8,4 +8,4 @@ class ValueDefinition:
8
8
  name: str
9
9
  description: str
10
10
  datatype: LMS_DataType
11
- list_items: dict[int, str]
11
+ list_items: dict[int, str] = field(default=None)
@@ -0,0 +1,2 @@
1
+ include README.md LICENSE
2
+ recursive-include LMS/TitleConfig/Presets *.yaml
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PyLibMS
3
- Version: 2.0.4
3
+ Version: 2.0.6
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
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PyLibMS
3
- Version: 2.0.4
3
+ Version: 2.0.6
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
@@ -29,7 +29,7 @@ LMS/Message/Section/__init__.py
29
29
  LMS/Message/Tag/LMS_Tag.py
30
30
  LMS/Message/Tag/LMS_TagExceptions.py
31
31
  LMS/Message/Tag/Stream.py
32
- LMS/Message/Tag/System.yaml
32
+ LMS/Message/Tag/System_Definition.py
33
33
  LMS/Message/Tag/Tag_Formats.py
34
34
  LMS/Message/Tag/__init__.py
35
35
  LMS/Project/MSBP.py
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "PyLibMS"
7
- version = "2.0.4"
7
+ version = "2.0.6"
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"
@@ -1,47 +0,0 @@
1
- - name: Ruby
2
- group_index: 0
3
- tag_index: 0
4
- description: 'Displays a RUBY character.'
5
- parameters:
6
- - name: rt
7
- description: 'The ruby character.'
8
- datatype: string
9
- - name: Font
10
- group_index: 0
11
- tag_index: 1
12
- description: 'Sets the font file of text.'
13
- parameters:
14
- - name: face
15
- description: 'The font face name.'
16
- datatype: string
17
- - name: Size
18
- group_index: 0
19
- tag_index: 2
20
- description: 'Alters the size of text.'
21
- parameters:
22
- - name: percent
23
- description: 'The new size as a percent.'
24
- datatype: uint16
25
- - name: Color
26
- group_index: 0
27
- tag_index: 3
28
- description: 'Sets the color of text in a message in RGBA form.'
29
- parameters:
30
- - name: r
31
- description: 'The red color value.'
32
- datatype: uint8
33
- - name: g
34
- description: 'The green color value.'
35
- datatype: uint8
36
- - name: b
37
- description: 'The blue color value.'
38
- datatype: uint8
39
- - name: a
40
- description: 'The alpha transprency value.'
41
- datatype: uint8
42
- - name: PageBreak
43
- group_index: 0
44
- tag_index: 4
45
- description: 'Displays text in the same label on different pages.'
46
- parameters: []
47
-
pylibms-2.0.4/MANIFEST.in DELETED
@@ -1,3 +0,0 @@
1
- include README.md LICENSE
2
- include LMS/Message/Tag/System.yaml
3
- recursive-include LMS/TitleConfig/Presets *.yaml
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