sonolus.py 0.7.0__py3-none-any.whl → 0.7.1__py3-none-any.whl
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.
Potentially problematic release.
This version of sonolus.py might be problematic. Click here for more details.
- sonolus/build/collection.py +1 -1
- sonolus/build/engine.py +2 -2
- sonolus/build/project.py +3 -1
- sonolus/script/archetype.py +5 -0
- sonolus/script/level.py +16 -1
- sonolus/script/project.py +1 -1
- {sonolus_py-0.7.0.dist-info → sonolus_py-0.7.1.dist-info}/METADATA +1 -1
- {sonolus_py-0.7.0.dist-info → sonolus_py-0.7.1.dist-info}/RECORD +11 -11
- {sonolus_py-0.7.0.dist-info → sonolus_py-0.7.1.dist-info}/WHEEL +0 -0
- {sonolus_py-0.7.0.dist-info → sonolus_py-0.7.1.dist-info}/entry_points.txt +0 -0
- {sonolus_py-0.7.0.dist-info → sonolus_py-0.7.1.dist-info}/licenses/LICENSE +0 -0
sonolus/build/collection.py
CHANGED
|
@@ -129,7 +129,7 @@ class Collection:
|
|
|
129
129
|
resource_data = resource_path.read_bytes()
|
|
130
130
|
|
|
131
131
|
if resource_path.suffix.lower() in {".json", ".bin"}:
|
|
132
|
-
resource_data = gzip.compress(resource_data)
|
|
132
|
+
resource_data = gzip.compress(resource_data, mtime=0)
|
|
133
133
|
|
|
134
134
|
srl = self.add_asset(resource_data)
|
|
135
135
|
item_data[resource_path.stem] = srl
|
sonolus/build/engine.py
CHANGED
|
@@ -407,12 +407,12 @@ def package_rom(rom: ReadOnlyMemory) -> bytes:
|
|
|
407
407
|
for value in values:
|
|
408
408
|
output.extend(struct.pack("<f", value))
|
|
409
409
|
|
|
410
|
-
return gzip.compress(bytes(output))
|
|
410
|
+
return gzip.compress(bytes(output), mtime=0)
|
|
411
411
|
|
|
412
412
|
|
|
413
413
|
def package_data(value: JsonValue) -> bytes:
|
|
414
414
|
json_data = json.dumps(value, separators=(",", ":")).encode("utf-8")
|
|
415
|
-
return gzip.compress(json_data)
|
|
415
|
+
return gzip.compress(json_data, mtime=0)
|
|
416
416
|
|
|
417
417
|
|
|
418
418
|
def unpackage_data(data: bytes) -> JsonValue:
|
sonolus/build/project.py
CHANGED
|
@@ -39,7 +39,7 @@ def build_project_to_collection(project: Project, config: BuildConfig | None):
|
|
|
39
39
|
|
|
40
40
|
|
|
41
41
|
def apply_converter_to_collection(
|
|
42
|
-
self, src_engine: str | None, converter: Callable[[ExternalLevelData], LevelData]
|
|
42
|
+
self, src_engine: str | None, converter: Callable[[ExternalLevelData], LevelData | None]
|
|
43
43
|
) -> None:
|
|
44
44
|
for level_details in self.categories.get("levels", {}).values():
|
|
45
45
|
level = level_details["item"]
|
|
@@ -56,6 +56,8 @@ def apply_converter_to_collection(
|
|
|
56
56
|
raise ValueError(f"Level data for level '{level['name']}' is not valid")
|
|
57
57
|
parsed_data = parse_external_level_data(cast(ExternalLevelDataDict, data))
|
|
58
58
|
new_data = converter(parsed_data)
|
|
59
|
+
if new_data is None:
|
|
60
|
+
continue
|
|
59
61
|
packaged_new_data = package_level_data(new_data)
|
|
60
62
|
new_data_srl = self.add_asset(packaged_new_data)
|
|
61
63
|
level["data"] = new_data_srl
|
sonolus/script/archetype.py
CHANGED
|
@@ -1233,6 +1233,11 @@ class EntityRef[A: _BaseArchetype](Record):
|
|
|
1233
1233
|
return self._ref_ is other._ref_
|
|
1234
1234
|
return super().__eq__(other)
|
|
1235
1235
|
|
|
1236
|
+
def __hash__(self) -> int:
|
|
1237
|
+
if not ctx() and hasattr(self, "_ref_"):
|
|
1238
|
+
return hash(id(self._ref_))
|
|
1239
|
+
return super().__hash__()
|
|
1240
|
+
|
|
1236
1241
|
@meta_fn
|
|
1237
1242
|
def get(self) -> A:
|
|
1238
1243
|
"""Get the entity."""
|
sonolus/script/level.py
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
+
import gzip
|
|
3
4
|
import json
|
|
4
5
|
from collections.abc import Iterator
|
|
5
6
|
from os import PathLike
|
|
@@ -229,7 +230,21 @@ class ExternalEntityData(NamedTuple):
|
|
|
229
230
|
data: dict[str, Any]
|
|
230
231
|
|
|
231
232
|
|
|
232
|
-
def parse_external_level_data(raw_data: ExternalLevelDataDict) -> ExternalLevelData:
|
|
233
|
+
def parse_external_level_data(raw_data: ExternalLevelDataDict | str | bytes, /) -> ExternalLevelData:
|
|
234
|
+
"""Parse level data from an external source.
|
|
235
|
+
|
|
236
|
+
If given a string, it is parsed as JSON. If given bytes, it is un-gzipped and then parsed as JSON.
|
|
237
|
+
|
|
238
|
+
Args:
|
|
239
|
+
raw_data: The raw level data to parse.
|
|
240
|
+
|
|
241
|
+
Returns:
|
|
242
|
+
The parsed level data.
|
|
243
|
+
"""
|
|
244
|
+
if isinstance(raw_data, bytes):
|
|
245
|
+
raw_data = gzip.decompress(raw_data).decode("utf-8")
|
|
246
|
+
if isinstance(raw_data, str):
|
|
247
|
+
raw_data = json.loads(raw_data)
|
|
233
248
|
bgm_offset = raw_data["bgmOffset"]
|
|
234
249
|
raw_entities = raw_data["entities"]
|
|
235
250
|
entity_name_to_index = {e["name"]: i for i, e in enumerate(raw_entities) if "name" in e}
|
sonolus/script/project.py
CHANGED
|
@@ -28,7 +28,7 @@ class Project:
|
|
|
28
28
|
engine: Engine,
|
|
29
29
|
levels: Iterable[Level] | Callable[[], Iterable[Level]] | None = None,
|
|
30
30
|
resources: PathLike | None = None,
|
|
31
|
-
converters: dict[str | None, Callable[[ExternalLevelData], LevelData]] | None = None,
|
|
31
|
+
converters: dict[str | None, Callable[[ExternalLevelData], LevelData | None]] | None = None,
|
|
32
32
|
):
|
|
33
33
|
self.engine = engine
|
|
34
34
|
match levels:
|
|
@@ -27,14 +27,14 @@ sonolus/backend/optimize/simplify.py,sha256=RDNVTKfC7ByRyxY5z30_ShimOAKth_pKlVFV
|
|
|
27
27
|
sonolus/backend/optimize/ssa.py,sha256=raQO0furQQRPYb8iIBKfNrJlj-_5wqtI4EWNfLZ8QFo,10834
|
|
28
28
|
sonolus/build/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
29
29
|
sonolus/build/cli.py,sha256=-_lTN8zT7nQB2lySM8itAEPVutcEQI-TJ13BcPIfGb4,10113
|
|
30
|
-
sonolus/build/collection.py,sha256=
|
|
30
|
+
sonolus/build/collection.py,sha256=5TvltBugFmIrvZC5HSP3LRZe6sjO9g6q-DHjBrovHsg,12298
|
|
31
31
|
sonolus/build/compile.py,sha256=Yex-ZbSZmv9ujyAOVaMcfq-0NnZzFIqtmNYYaplF4Uc,6761
|
|
32
|
-
sonolus/build/engine.py,sha256=
|
|
32
|
+
sonolus/build/engine.py,sha256=YQ2Sc2zC56N2Y5S5zE3QCoUzwKcVHSPl14iQE0tkm6Q,13463
|
|
33
33
|
sonolus/build/level.py,sha256=KLqUAtxIuIqrzeFURJA97rdqjA5pcvYSmwNZQhElaMQ,702
|
|
34
34
|
sonolus/build/node.py,sha256=gnX71RYDUOK_gYMpinQi-bLWO4csqcfiG5gFmhxzSec,1330
|
|
35
|
-
sonolus/build/project.py,sha256=
|
|
35
|
+
sonolus/build/project.py,sha256=__sOJas3RTwn4aizq16rYCvZgG8aX-JbQaxmfVhRnc4,8154
|
|
36
36
|
sonolus/script/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
37
|
-
sonolus/script/archetype.py,sha256=
|
|
37
|
+
sonolus/script/archetype.py,sha256=xhdm1jO_p32V1NtGjgV0SGPm7X9GnJ6Z7hXi2zT69Ww,49647
|
|
38
38
|
sonolus/script/array.py,sha256=9uOUHZIDMyMT9q3APcXJWXWt97yG-AZoRlxwrvSY6SU,12367
|
|
39
39
|
sonolus/script/array_like.py,sha256=hUDdDaP306kflVv9YomdHIMXogrVjxsBXCrLvB9QpuE,9681
|
|
40
40
|
sonolus/script/bucket.py,sha256=SNqnfLGpnO_u-3LFFazdgzNk332OdDUIlmZHsuoVZuE,7674
|
|
@@ -47,7 +47,7 @@ sonolus/script/globals.py,sha256=nlXSNS4NRXsgQU2AJImVIs752h1WqsMnShSKgU011c4,102
|
|
|
47
47
|
sonolus/script/instruction.py,sha256=Dd-14D5Amo8nhPBr6DNyg2lpYw_rqZkT8Kix3HkfE7k,6793
|
|
48
48
|
sonolus/script/interval.py,sha256=dj6F2wn5uP6I6_mcZn-wIREgRUQbsLzhvhzB0oEyAdU,11290
|
|
49
49
|
sonolus/script/iterator.py,sha256=_ICY_yX7FG0Zbgs3NhVnaIBdVDpAeXjxJ_CQtq30l7Y,3774
|
|
50
|
-
sonolus/script/level.py,sha256=
|
|
50
|
+
sonolus/script/level.py,sha256=X3-V99ihruYYCcPdch66dHi_ydCWXXn7epviLLjxW8w,8288
|
|
51
51
|
sonolus/script/maybe.py,sha256=VYvTWgEfPzoXqI3i3zXhc4dz0pWBVoHmW8FtWH0GQvM,8194
|
|
52
52
|
sonolus/script/metadata.py,sha256=ttRK27eojHf3So50KQJ-8yj3udZoN1bli5iD-knaeLw,753
|
|
53
53
|
sonolus/script/num.py,sha256=924kWWZusW7oaWuvtQzdAMzkb4ZItWSJwNj3W9XrqZU,16041
|
|
@@ -55,7 +55,7 @@ sonolus/script/options.py,sha256=XVN-mL7Rwhd2Tu9YysYq9YDGpH_LazdmhqzSYE6nR3Q,945
|
|
|
55
55
|
sonolus/script/particle.py,sha256=RTfamg_ZTq7-qJ6j9paduNVUHCkw3hzkBK1QUbwwN7I,8403
|
|
56
56
|
sonolus/script/pointer.py,sha256=FoOfyD93r0G5d_2BaKfeOT9SqkOP3hq6sqtOs_Rb0c8,1511
|
|
57
57
|
sonolus/script/printing.py,sha256=mNYu9QWiacBBGZrnePZQMVwbbguoelUps9GiOK_aVRU,2096
|
|
58
|
-
sonolus/script/project.py,sha256=
|
|
58
|
+
sonolus/script/project.py,sha256=gG6mYsGlIqznY_RODyFMiXVBh0tVbXLAWZ5LHCiBIuU,4439
|
|
59
59
|
sonolus/script/quad.py,sha256=XoAjaUqR60zIrC_CwheZs7HwS-DRS58yUmlj9GIjX7k,11179
|
|
60
60
|
sonolus/script/record.py,sha256=igmawc0hqb98YVcZnPTThHvnIP88Qelhoge4cNJx45Q,12770
|
|
61
61
|
sonolus/script/runtime.py,sha256=rJZM_KbKmnwpjhDEpR0DrM6EMSEu46apIErWA_pfLJA,33321
|
|
@@ -86,8 +86,8 @@ sonolus/script/internal/simulation_context.py,sha256=LGxLTvxbqBIhoe1R-SfwGajNIDw
|
|
|
86
86
|
sonolus/script/internal/transient.py,sha256=y2AWABqF1aoaP6H4_2u4MMpNioC4OsZQCtPyNI0txqo,1634
|
|
87
87
|
sonolus/script/internal/tuple_impl.py,sha256=DPNdmmRmupU8Ah4_XKq6-PdT336l4nt15_uCJKQGkkk,3587
|
|
88
88
|
sonolus/script/internal/value.py,sha256=OngrCdmY_h6mV2Zgwqhuo4eYFad0kTk6263UAxctZcY,6963
|
|
89
|
-
sonolus_py-0.7.
|
|
90
|
-
sonolus_py-0.7.
|
|
91
|
-
sonolus_py-0.7.
|
|
92
|
-
sonolus_py-0.7.
|
|
93
|
-
sonolus_py-0.7.
|
|
89
|
+
sonolus_py-0.7.1.dist-info/METADATA,sha256=p9fNorfrM-GbAWcBdMkyFjWt5mTc3xVnEXrZLql5AqQ,302
|
|
90
|
+
sonolus_py-0.7.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
91
|
+
sonolus_py-0.7.1.dist-info/entry_points.txt,sha256=oTYspY_b7SA8TptEMTDxh4-Aj-ZVPnYC9f1lqH6s9G4,54
|
|
92
|
+
sonolus_py-0.7.1.dist-info/licenses/LICENSE,sha256=JEKpqVhQYfEc7zg3Mj462sKbKYmO1K7WmvX1qvg9IJk,1067
|
|
93
|
+
sonolus_py-0.7.1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|