sonolus.py 0.1.9__py3-none-any.whl → 0.2.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/backend/optimize/constant_evaluation.py +2 -2
- sonolus/backend/optimize/optimize.py +12 -4
- sonolus/backend/optimize/passes.py +2 -1
- sonolus/backend/place.py +95 -14
- sonolus/backend/visitor.py +51 -3
- sonolus/build/cli.py +60 -9
- sonolus/build/collection.py +68 -26
- sonolus/build/compile.py +85 -27
- sonolus/build/engine.py +166 -40
- sonolus/build/node.py +8 -1
- sonolus/build/project.py +30 -11
- sonolus/script/archetype.py +154 -32
- sonolus/script/array.py +14 -3
- sonolus/script/array_like.py +6 -2
- sonolus/script/containers.py +166 -0
- sonolus/script/debug.py +22 -4
- sonolus/script/effect.py +2 -2
- sonolus/script/engine.py +125 -17
- sonolus/script/internal/builtin_impls.py +21 -2
- sonolus/script/internal/constant.py +8 -4
- sonolus/script/internal/context.py +30 -25
- sonolus/script/internal/math_impls.py +2 -1
- sonolus/script/internal/transient.py +7 -3
- sonolus/script/internal/value.py +33 -11
- sonolus/script/interval.py +8 -3
- sonolus/script/iterator.py +17 -0
- sonolus/script/level.py +113 -10
- sonolus/script/metadata.py +32 -0
- sonolus/script/num.py +35 -15
- sonolus/script/options.py +23 -6
- sonolus/script/pointer.py +11 -1
- sonolus/script/project.py +41 -5
- sonolus/script/quad.py +55 -1
- sonolus/script/record.py +10 -5
- sonolus/script/runtime.py +78 -16
- sonolus/script/sprite.py +18 -1
- sonolus/script/text.py +9 -0
- sonolus/script/ui.py +20 -7
- sonolus/script/values.py +8 -5
- sonolus/script/vec.py +28 -0
- sonolus_py-0.2.1.dist-info/METADATA +10 -0
- {sonolus_py-0.1.9.dist-info → sonolus_py-0.2.1.dist-info}/RECORD +46 -45
- {sonolus_py-0.1.9.dist-info → sonolus_py-0.2.1.dist-info}/WHEEL +1 -1
- sonolus_py-0.1.9.dist-info/METADATA +0 -9
- /sonolus/script/{print.py → printing.py} +0 -0
- {sonolus_py-0.1.9.dist-info → sonolus_py-0.2.1.dist-info}/entry_points.txt +0 -0
- {sonolus_py-0.1.9.dist-info → sonolus_py-0.2.1.dist-info}/licenses/LICENSE +0 -0
sonolus/script/runtime.py
CHANGED
|
@@ -2,7 +2,8 @@ from enum import IntEnum
|
|
|
2
2
|
|
|
3
3
|
from sonolus.backend.mode import Mode
|
|
4
4
|
from sonolus.script.array import Array
|
|
5
|
-
from sonolus.script.
|
|
5
|
+
from sonolus.script.array_like import ArrayLike
|
|
6
|
+
from sonolus.script.containers import ArrayPointer
|
|
6
7
|
from sonolus.script.globals import (
|
|
7
8
|
_level_life,
|
|
8
9
|
_level_score,
|
|
@@ -103,6 +104,12 @@ class _PreviewRuntimeCanvas:
|
|
|
103
104
|
scroll_direction: ScrollDirection
|
|
104
105
|
size: float
|
|
105
106
|
|
|
107
|
+
def update(self, scroll_direction: ScrollDirection | None = None, size: float | None = None):
|
|
108
|
+
if scroll_direction is not None:
|
|
109
|
+
self.scroll_direction = scroll_direction
|
|
110
|
+
if size is not None:
|
|
111
|
+
self.size = size
|
|
112
|
+
|
|
106
113
|
|
|
107
114
|
class RuntimeUiConfig(Record):
|
|
108
115
|
scale: float
|
|
@@ -253,42 +260,64 @@ class _TutorialRuntimeUi:
|
|
|
253
260
|
|
|
254
261
|
|
|
255
262
|
class Touch(Record):
|
|
263
|
+
"""Data of a touch event."""
|
|
264
|
+
|
|
256
265
|
id: int
|
|
266
|
+
"""The unique identifier of the touch."""
|
|
267
|
+
|
|
257
268
|
started: bool
|
|
269
|
+
"""Whether the touch has started this frame."""
|
|
270
|
+
|
|
258
271
|
ended: bool
|
|
272
|
+
"""Whether the touch has ended this frame."""
|
|
273
|
+
|
|
259
274
|
time: float
|
|
275
|
+
"""The time of the touch event.
|
|
276
|
+
|
|
277
|
+
May remain constant while there is no movement.
|
|
278
|
+
"""
|
|
279
|
+
|
|
260
280
|
start_time: float
|
|
281
|
+
"""The time the touch started."""
|
|
282
|
+
|
|
261
283
|
position: Vec2
|
|
284
|
+
"""The current position of the touch."""
|
|
285
|
+
|
|
262
286
|
start_position: Vec2
|
|
287
|
+
"""The position the touch started."""
|
|
288
|
+
|
|
263
289
|
delta: Vec2
|
|
290
|
+
"""The change in position of the touch."""
|
|
291
|
+
|
|
264
292
|
velocity: Vec2
|
|
293
|
+
"""The velocity of the touch."""
|
|
294
|
+
|
|
265
295
|
speed: float
|
|
296
|
+
"""The speed of the touch's movement."""
|
|
297
|
+
|
|
266
298
|
angle: float
|
|
299
|
+
"""The angle of the touch's movement."""
|
|
267
300
|
|
|
268
301
|
@property
|
|
269
|
-
def
|
|
270
|
-
|
|
302
|
+
def prev_position(self) -> Vec2:
|
|
303
|
+
"""The previous position of the touch."""
|
|
304
|
+
return self.position - self.delta
|
|
271
305
|
|
|
272
306
|
@property
|
|
273
307
|
def total_delta(self) -> Vec2:
|
|
308
|
+
"""The total change in position of the touch."""
|
|
274
309
|
return self.position - self.start_position
|
|
275
310
|
|
|
276
|
-
@property
|
|
277
|
-
def total_velocity(self) -> Vec2:
|
|
278
|
-
return self.total_delta / self.total_time if self.total_time > 0 else Vec2(0, 0)
|
|
279
|
-
|
|
280
|
-
@property
|
|
281
|
-
def total_speed(self) -> float:
|
|
282
|
-
return self.total_velocity.magnitude
|
|
283
|
-
|
|
284
311
|
@property
|
|
285
312
|
def total_angle(self) -> float:
|
|
313
|
+
"""The total angle of the touch's movement."""
|
|
286
314
|
return self.total_delta.angle
|
|
287
315
|
|
|
288
316
|
|
|
289
317
|
@_runtime_touch_array
|
|
290
318
|
class _TouchArray:
|
|
291
|
-
|
|
319
|
+
# Handled specially, see touches()
|
|
320
|
+
pass
|
|
292
321
|
|
|
293
322
|
|
|
294
323
|
@_runtime_skin_transform
|
|
@@ -449,6 +478,39 @@ def is_debug() -> bool:
|
|
|
449
478
|
return False
|
|
450
479
|
|
|
451
480
|
|
|
481
|
+
@meta_fn
|
|
482
|
+
def is_play() -> bool:
|
|
483
|
+
"""Check if the game is running in play mode."""
|
|
484
|
+
return ctx() and ctx().global_state.mode == Mode.PLAY
|
|
485
|
+
|
|
486
|
+
|
|
487
|
+
@meta_fn
|
|
488
|
+
def is_preview() -> bool:
|
|
489
|
+
"""Check if the game is running in preview mode."""
|
|
490
|
+
return ctx() and ctx().global_state.mode == Mode.PREVIEW
|
|
491
|
+
|
|
492
|
+
|
|
493
|
+
@meta_fn
|
|
494
|
+
def is_watch() -> bool:
|
|
495
|
+
"""Check if the game is running in watch mode."""
|
|
496
|
+
return ctx() and ctx().global_state.mode == Mode.WATCH
|
|
497
|
+
|
|
498
|
+
|
|
499
|
+
@meta_fn
|
|
500
|
+
def is_tutorial() -> bool:
|
|
501
|
+
"""Check if the game is running in tutorial mode."""
|
|
502
|
+
return ctx() and ctx().global_state.mode == Mode.TUTORIAL
|
|
503
|
+
|
|
504
|
+
|
|
505
|
+
@meta_fn
|
|
506
|
+
def is_preprocessing() -> bool:
|
|
507
|
+
"""Check if the game is in the preprocessing stage.
|
|
508
|
+
|
|
509
|
+
Returns True if the current callback is one of preprocess, spawn_order, spawn_time, or despawn_time.
|
|
510
|
+
"""
|
|
511
|
+
return ctx() and ctx().callback in {"preprocess", "spawnOrder", "spawnTime", "despawnTime"}
|
|
512
|
+
|
|
513
|
+
|
|
452
514
|
@meta_fn
|
|
453
515
|
def aspect_ratio() -> float:
|
|
454
516
|
"""Get the aspect ratio of the game."""
|
|
@@ -589,15 +651,15 @@ def scaled_time() -> float:
|
|
|
589
651
|
|
|
590
652
|
|
|
591
653
|
@meta_fn
|
|
592
|
-
def touches() ->
|
|
654
|
+
def touches() -> ArrayLike[Touch]:
|
|
593
655
|
"""Get the current touches of the game."""
|
|
594
656
|
if not ctx():
|
|
595
|
-
return
|
|
657
|
+
return Array[Touch, 0]()
|
|
596
658
|
match ctx().global_state.mode:
|
|
597
659
|
case Mode.PLAY:
|
|
598
|
-
return
|
|
660
|
+
return ArrayPointer[Touch](_PlayRuntimeUpdate.touch_count, ctx().blocks.RuntimeTouchArray, 0)
|
|
599
661
|
case _:
|
|
600
|
-
return
|
|
662
|
+
return Array[Touch, 0]()
|
|
601
663
|
|
|
602
664
|
|
|
603
665
|
@meta_fn
|
sonolus/script/sprite.py
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
from dataclasses import dataclass
|
|
2
|
+
from enum import StrEnum
|
|
2
3
|
from typing import Annotated, Any, NewType, dataclass_transform, get_origin
|
|
3
4
|
|
|
4
5
|
from sonolus.backend.ops import Op
|
|
@@ -269,6 +270,19 @@ def sprite(name: str) -> Any:
|
|
|
269
270
|
type Skin = NewType("Skin", Any)
|
|
270
271
|
|
|
271
272
|
|
|
273
|
+
class RenderMode(StrEnum):
|
|
274
|
+
"""Render mode for sprites."""
|
|
275
|
+
|
|
276
|
+
DEFAULT = "default"
|
|
277
|
+
"""Use the user's preferred render mode."""
|
|
278
|
+
|
|
279
|
+
STANDARD = "standard"
|
|
280
|
+
"""Use the standard render mode with bilinear interpolation of textures."""
|
|
281
|
+
|
|
282
|
+
LIGHTWEIGHT = "lightweight"
|
|
283
|
+
"""Use the lightweight render mode with projective interpolation of textures."""
|
|
284
|
+
|
|
285
|
+
|
|
272
286
|
@dataclass_transform()
|
|
273
287
|
def skin[T](cls: type[T]) -> T | Skin:
|
|
274
288
|
"""Decorator to define a skin.
|
|
@@ -277,6 +291,8 @@ def skin[T](cls: type[T]) -> T | Skin:
|
|
|
277
291
|
```python
|
|
278
292
|
@skin
|
|
279
293
|
class Skin:
|
|
294
|
+
render_mode: RenderMode
|
|
295
|
+
|
|
280
296
|
note: StandardSprite.NOTE_HEAD_RED
|
|
281
297
|
other: Sprite = skin_sprite("other")
|
|
282
298
|
```
|
|
@@ -285,7 +301,7 @@ def skin[T](cls: type[T]) -> T | Skin:
|
|
|
285
301
|
raise ValueError("Skin class must not inherit from any class (except object)")
|
|
286
302
|
instance = cls()
|
|
287
303
|
names = []
|
|
288
|
-
for i, (name, annotation) in enumerate(get_field_specifiers(cls).items()):
|
|
304
|
+
for i, (name, annotation) in enumerate(get_field_specifiers(cls, skip={"render_mode"}).items()):
|
|
289
305
|
if get_origin(annotation) is not Annotated:
|
|
290
306
|
raise TypeError(f"Invalid annotation for skin: {annotation}")
|
|
291
307
|
annotation_type = annotation.__args__[0]
|
|
@@ -298,6 +314,7 @@ def skin[T](cls: type[T]) -> T | Skin:
|
|
|
298
314
|
names.append(sprite_name)
|
|
299
315
|
setattr(instance, name, Sprite(i))
|
|
300
316
|
instance._sprites_ = names
|
|
317
|
+
instance.render_mode = RenderMode(getattr(instance, "render_mode", RenderMode.DEFAULT))
|
|
301
318
|
instance._is_comptime_value_ = True
|
|
302
319
|
return instance
|
|
303
320
|
|
sonolus/script/text.py
CHANGED
|
@@ -157,6 +157,15 @@ class StandardText(StrEnum):
|
|
|
157
157
|
SIMLINE_COLOR = "#SIMLINE_COLOR"
|
|
158
158
|
SIMLINE_ALPHA = "#SIMLINE_ALPHA"
|
|
159
159
|
SIMLINE_ANIMATION = "#SIMLINE_ANIMATION"
|
|
160
|
+
PREVIEW_SCALE_VERTICAL = "#PREVIEW_SCALE_VERTICAL"
|
|
161
|
+
PREVIEW_SCALE_HORIZONTAL = "#PREVIEW_SCALE_HORIZONTAL"
|
|
162
|
+
PREVIEW_TIME = "#PREVIEW_TIME"
|
|
163
|
+
PREVIEW_SCORE = "#PREVIEW_SCORE"
|
|
164
|
+
PREVIEW_BPM = "#PREVIEW_BPM"
|
|
165
|
+
PREVIEW_TIMESCALE = "#PREVIEW_TIMESCALE"
|
|
166
|
+
PREVIEW_BEAT = "#PREVIEW_BEAT"
|
|
167
|
+
PREVIEW_MEASURE = "#PREVIEW_MEASURE"
|
|
168
|
+
PREVIEW_COMBO = "#PREVIEW_COMBO"
|
|
160
169
|
NONE = "#NONE"
|
|
161
170
|
ANY = "#ANY"
|
|
162
171
|
ALL = "#ALL"
|
sonolus/script/ui.py
CHANGED
|
@@ -20,9 +20,14 @@ class UiMetric(StrEnum):
|
|
|
20
20
|
|
|
21
21
|
|
|
22
22
|
class UiJudgmentErrorStyle(StrEnum):
|
|
23
|
-
"""The style of the judgment error.
|
|
23
|
+
"""The style of the judgment error.
|
|
24
|
+
|
|
25
|
+
The name of each member refers to what's used for positive (late) judgment errors.
|
|
26
|
+
"""
|
|
24
27
|
|
|
25
28
|
NONE = "none"
|
|
29
|
+
LATE = "late"
|
|
30
|
+
EARLY = "early" # Not really useful
|
|
26
31
|
PLUS = "plus"
|
|
27
32
|
MINUS = "minus"
|
|
28
33
|
ARROW_UP = "arrowUp"
|
|
@@ -38,9 +43,13 @@ class UiJudgmentErrorStyle(StrEnum):
|
|
|
38
43
|
class UiJudgmentErrorPlacement(StrEnum):
|
|
39
44
|
"""The placement of the judgment error."""
|
|
40
45
|
|
|
41
|
-
BOTH = "both"
|
|
42
46
|
LEFT = "left"
|
|
43
47
|
RIGHT = "right"
|
|
48
|
+
LEFT_RIGHT = "leftRight"
|
|
49
|
+
TOP = "top"
|
|
50
|
+
BOTTOM = "bottom"
|
|
51
|
+
TOP_BOTTOM = "topBottom"
|
|
52
|
+
CENTER = "center"
|
|
44
53
|
|
|
45
54
|
|
|
46
55
|
class EaseType(StrEnum):
|
|
@@ -120,8 +129,8 @@ class UiAnimation:
|
|
|
120
129
|
alpha: The animation applied to alpha.
|
|
121
130
|
"""
|
|
122
131
|
|
|
123
|
-
scale: UiAnimationTween
|
|
124
|
-
alpha: UiAnimationTween
|
|
132
|
+
scale: UiAnimationTween
|
|
133
|
+
alpha: UiAnimationTween
|
|
125
134
|
|
|
126
135
|
def to_dict(self):
|
|
127
136
|
return {
|
|
@@ -183,14 +192,18 @@ class UiConfig:
|
|
|
183
192
|
progress_visibility: UiVisibility = field(default_factory=UiVisibility)
|
|
184
193
|
tutorial_navigation_visibility: UiVisibility = field(default_factory=UiVisibility)
|
|
185
194
|
tutorial_instruction_visibility: UiVisibility = field(default_factory=UiVisibility)
|
|
186
|
-
judgment_animation: UiAnimation = field(
|
|
195
|
+
judgment_animation: UiAnimation = field(
|
|
196
|
+
default_factory=lambda: UiAnimation(
|
|
197
|
+
scale=UiAnimationTween(0, 1, 0.1, EaseType.OUT_CUBIC), alpha=UiAnimationTween(1, 0, 0.3, EaseType.NONE)
|
|
198
|
+
)
|
|
199
|
+
)
|
|
187
200
|
combo_animation: UiAnimation = field(
|
|
188
201
|
default_factory=lambda: UiAnimation(
|
|
189
202
|
scale=UiAnimationTween(1.2, 1, 0.2, EaseType.IN_CUBIC), alpha=UiAnimationTween(1, 1, 0, EaseType.NONE)
|
|
190
203
|
)
|
|
191
204
|
)
|
|
192
|
-
judgment_error_style: UiJudgmentErrorStyle = UiJudgmentErrorStyle.
|
|
193
|
-
judgment_error_placement: UiJudgmentErrorPlacement = UiJudgmentErrorPlacement.
|
|
205
|
+
judgment_error_style: UiJudgmentErrorStyle = UiJudgmentErrorStyle.LATE
|
|
206
|
+
judgment_error_placement: UiJudgmentErrorPlacement = UiJudgmentErrorPlacement.TOP
|
|
194
207
|
judgment_error_min: float = 0.0
|
|
195
208
|
|
|
196
209
|
def to_dict(self):
|
sonolus/script/values.py
CHANGED
|
@@ -19,11 +19,7 @@ def alloc[T](type_: type[T]) -> T:
|
|
|
19
19
|
@meta_fn
|
|
20
20
|
def zeros[T](type_: type[T]) -> T:
|
|
21
21
|
"""Make a new instance of the given type initialized with zeros."""
|
|
22
|
-
|
|
23
|
-
if ctx():
|
|
24
|
-
return copy(type_._from_list_([0] * type_._size_()))
|
|
25
|
-
else:
|
|
26
|
-
return type_._from_list_([0] * type_._size_())._as_py_()
|
|
22
|
+
return validate_concrete_type(type_)._zero_()
|
|
27
23
|
|
|
28
24
|
|
|
29
25
|
@meta_fn
|
|
@@ -34,3 +30,10 @@ def copy[T](value: T) -> T:
|
|
|
34
30
|
return value._copy_()
|
|
35
31
|
else:
|
|
36
32
|
return value._copy_()._as_py_()
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def swap[T](a: T, b: T):
|
|
36
|
+
"""Swap the values of the two given arguments."""
|
|
37
|
+
temp = copy(a)
|
|
38
|
+
a @= b
|
|
39
|
+
b @= temp
|
sonolus/script/vec.py
CHANGED
|
@@ -128,6 +128,25 @@ class Vec2(Record):
|
|
|
128
128
|
"""
|
|
129
129
|
return (self - pivot).rotate(angle) + pivot
|
|
130
130
|
|
|
131
|
+
def normalize(self) -> Self:
|
|
132
|
+
"""Normalize the vector (set the magnitude to 1) and return a new vector.
|
|
133
|
+
|
|
134
|
+
Returns:
|
|
135
|
+
A new vector with magnitude 1.
|
|
136
|
+
"""
|
|
137
|
+
magnitude = self.magnitude
|
|
138
|
+
return Vec2(x=self.x / magnitude, y=self.y / magnitude)
|
|
139
|
+
|
|
140
|
+
def orthogonal(self) -> Self:
|
|
141
|
+
"""Return a vector orthogonal to this vector.
|
|
142
|
+
|
|
143
|
+
The orthogonal vector is rotated 90 degrees counter-clockwise from this vector.
|
|
144
|
+
|
|
145
|
+
Returns:
|
|
146
|
+
A new vector orthogonal to this vector.
|
|
147
|
+
"""
|
|
148
|
+
return Vec2(x=-self.y, y=self.x)
|
|
149
|
+
|
|
131
150
|
@property
|
|
132
151
|
def tuple(self) -> tuple[float, float]:
|
|
133
152
|
"""Return the vector as a tuple (x, y).
|
|
@@ -173,6 +192,15 @@ class Vec2(Record):
|
|
|
173
192
|
return Vec2(x=self.x * x, y=self.y * y)
|
|
174
193
|
case Num(factor):
|
|
175
194
|
return Vec2(x=self.x * factor, y=self.y * factor)
|
|
195
|
+
case _:
|
|
196
|
+
return NotImplemented
|
|
197
|
+
|
|
198
|
+
def __rmul__(self, other):
|
|
199
|
+
match other:
|
|
200
|
+
case Num(factor):
|
|
201
|
+
return Vec2(x=self.x * factor, y=self.y * factor)
|
|
202
|
+
case _:
|
|
203
|
+
return NotImplemented
|
|
176
204
|
|
|
177
205
|
def __truediv__(self, other: Self | float) -> Self:
|
|
178
206
|
"""Divide this vector by another vector or a scalar and return a new vector.
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: sonolus.py
|
|
3
|
+
Version: 0.2.1
|
|
4
|
+
Summary: Sonolus engine development in Python
|
|
5
|
+
License-File: LICENSE
|
|
6
|
+
Requires-Python: >=3.12
|
|
7
|
+
Description-Content-Type: text/markdown
|
|
8
|
+
|
|
9
|
+
# Sonolus.py
|
|
10
|
+
Sonolus engine development in Python. See [docs](https://sonolus.py.qwewqa.xyz) for more information.
|
|
@@ -9,81 +9,82 @@ sonolus/backend/ir.py,sha256=TCDLMvlX2S8emFDQwFVeD2OUC4fnhbrMObgYtoa_7PQ,2845
|
|
|
9
9
|
sonolus/backend/mode.py,sha256=NkcPZJm8dn83LX35uP24MtQOCnfRDFZ280dHeEEfauE,613
|
|
10
10
|
sonolus/backend/node.py,sha256=H8qgnNyIseR-DhfgtcbDX03SUmhAJSSrYAlUEJTkkUo,999
|
|
11
11
|
sonolus/backend/ops.py,sha256=ekkHSdgRubIYLSYFk0wTUuBvyf3TKdApM4AyR_koTQ8,10122
|
|
12
|
-
sonolus/backend/place.py,sha256=
|
|
12
|
+
sonolus/backend/place.py,sha256=jABvLNNE-2pklTcb9WnyfHK8c-tYxn0ObsoLp5LYd5I,4703
|
|
13
13
|
sonolus/backend/utils.py,sha256=9-mmCUwGlNdjp51jKrNBN2dGxCAXVV2PdJn031kaXHM,1717
|
|
14
|
-
sonolus/backend/visitor.py,sha256=
|
|
14
|
+
sonolus/backend/visitor.py,sha256=GvAEx8D3_YijTMUYBmir0IvDPAEpK1ObAuQOAcAMKm0,48157
|
|
15
15
|
sonolus/backend/optimize/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
16
16
|
sonolus/backend/optimize/allocate.py,sha256=LCqxvT8YsVGTaVAu58fb6lrrytVLWx1LNbcOfx8CqL8,5671
|
|
17
|
-
sonolus/backend/optimize/constant_evaluation.py,sha256=
|
|
17
|
+
sonolus/backend/optimize/constant_evaluation.py,sha256=ozYB__haE2A_L2NBh2H3IT__Z65FBBtbjh6BJfQRC_A,15988
|
|
18
18
|
sonolus/backend/optimize/copy_coalesce.py,sha256=4vUe-y2w8sGyrguSlp8O_p0uy9rEUu5M-smI0F5UMQw,4404
|
|
19
19
|
sonolus/backend/optimize/dead_code.py,sha256=qYmUqBmAp-O5mUpNusOoMEJVkbc9YIHx6Ynrg6dyNGY,8077
|
|
20
20
|
sonolus/backend/optimize/dominance.py,sha256=oTFUqN8twrw6lTzqr1nlYs-Gk1NzIa-4qGdEQvDGzlM,3217
|
|
21
21
|
sonolus/backend/optimize/flow.py,sha256=mMf5Um2uxwF65nw13UiIv7dFMHZZHnyWv2WaOVnGw2c,4266
|
|
22
22
|
sonolus/backend/optimize/inlining.py,sha256=jwTiuHivSq9bB7FfVbD9Wd_Ztaz8ml_5CRnikr2d6yU,5719
|
|
23
23
|
sonolus/backend/optimize/liveness.py,sha256=c0ejVf1LNcYBlByf3rxkNs18IoXmiOdCFwEk3Afv8DE,7121
|
|
24
|
-
sonolus/backend/optimize/optimize.py,sha256=
|
|
25
|
-
sonolus/backend/optimize/passes.py,sha256=
|
|
24
|
+
sonolus/backend/optimize/optimize.py,sha256=It_z8fAaTsG8bRNrvR5mQzVjmwZT5I1whBvy4F-Xoos,1473
|
|
25
|
+
sonolus/backend/optimize/passes.py,sha256=BQy-BovGu234Y12c-vpBmTaNNl9oeW4qZ8A3q5y5nLs,1684
|
|
26
26
|
sonolus/backend/optimize/simplify.py,sha256=Tz4RftjH5TpIxoIOwiZuLchsrwzI9GaS_exdjAW6HKk,7927
|
|
27
27
|
sonolus/backend/optimize/ssa.py,sha256=D3CQm3s3gcuU0_k_0pXVrwirm4xjAZsX6corrTDS1Co,9013
|
|
28
28
|
sonolus/build/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
29
|
-
sonolus/build/cli.py,sha256=
|
|
30
|
-
sonolus/build/collection.py,sha256=
|
|
31
|
-
sonolus/build/compile.py,sha256=
|
|
32
|
-
sonolus/build/engine.py,sha256=
|
|
29
|
+
sonolus/build/cli.py,sha256=zWkiY2frHHIk3nqP8XrzV1ez1zU67deNZ7WeFR5SfVo,8801
|
|
30
|
+
sonolus/build/collection.py,sha256=kOVnpQC_KHAsyTM4nAplSh6QE16CgO-H6PP1GItWm78,12187
|
|
31
|
+
sonolus/build/compile.py,sha256=nWtQRao_k-ChJhjmYFpPMRlPgxFI0t9wtMWSRHQcnbQ,5586
|
|
32
|
+
sonolus/build/engine.py,sha256=AYzJHRcYaR-PidR9eG6Tbr4Xz5-spHTOp4S9F4nm-UY,11178
|
|
33
33
|
sonolus/build/level.py,sha256=AjvK4725nqDcg7oGn5kWocBdG-AcirXpku74T7c2epA,673
|
|
34
|
-
sonolus/build/node.py,sha256=
|
|
35
|
-
sonolus/build/project.py,sha256=
|
|
34
|
+
sonolus/build/node.py,sha256=gnX71RYDUOK_gYMpinQi-bLWO4csqcfiG5gFmhxzSec,1330
|
|
35
|
+
sonolus/build/project.py,sha256=DhNqgHnm73qKUOhrg1JPlWEL0Vg7VxcGUbNokpMWzVE,6315
|
|
36
36
|
sonolus/script/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
37
|
-
sonolus/script/archetype.py,sha256=
|
|
38
|
-
sonolus/script/array.py,sha256=
|
|
39
|
-
sonolus/script/array_like.py,sha256=
|
|
37
|
+
sonolus/script/archetype.py,sha256=I-K9uT4l6S5w4toDplzG8v01w0KTM4TsZZPgiZgwOrA,40098
|
|
38
|
+
sonolus/script/array.py,sha256=l-KdtHvxF4NpCSZAw4t7MG4N5aZ_gOTGkemDobC6mQY,9791
|
|
39
|
+
sonolus/script/array_like.py,sha256=nCIt_TxV7Ck6ovbSXyViqUkxsO9BksFOjUhpwF0uuxA,8444
|
|
40
40
|
sonolus/script/bucket.py,sha256=oaaB7OXtBWzr8sLzPOpm8-GMhs7FzEhYrI1uVcM0DHM,7453
|
|
41
|
-
sonolus/script/containers.py,sha256=
|
|
42
|
-
sonolus/script/debug.py,sha256=
|
|
41
|
+
sonolus/script/containers.py,sha256=QUFUk1lDwM2AzIPH6uHkZtZXT2D4_xT3P6pJIp6i7Ew,17640
|
|
42
|
+
sonolus/script/debug.py,sha256=aYyFm8DuoifK0L0pY4G7ZZEEeSqbig90Yogy6Z_M8Yg,3135
|
|
43
43
|
sonolus/script/easing.py,sha256=7zaDKIfM_whUpb4FBz1DAF4NNG2vk_nDjl8kL2Y90aU,11396
|
|
44
|
-
sonolus/script/effect.py,sha256=
|
|
45
|
-
sonolus/script/engine.py,sha256=
|
|
44
|
+
sonolus/script/effect.py,sha256=V9bJvMzs1O4C1PjTOKgsAXov-l4AnDb2h38-DzmeWpI,5838
|
|
45
|
+
sonolus/script/engine.py,sha256=BhhQTrHuGAAAD6JPQ3R0jvHdimwW83PPghEIdAdtGMA,10683
|
|
46
46
|
sonolus/script/globals.py,sha256=Z8RfLkgDuXPIKiq-aOqblP0s__ALGmvcKdlyWZH21EM,9166
|
|
47
47
|
sonolus/script/instruction.py,sha256=PNfxC1dhT_hB0BxhDV3KXMn_kKxfI0t1iZmg8m6ddMU,6725
|
|
48
|
-
sonolus/script/interval.py,sha256=
|
|
49
|
-
sonolus/script/iterator.py,sha256=
|
|
50
|
-
sonolus/script/level.py,sha256=
|
|
51
|
-
sonolus/script/
|
|
52
|
-
sonolus/script/
|
|
48
|
+
sonolus/script/interval.py,sha256=IYNgJx0ngREnEVu_yMAu0MrA_Q7mZuToT8U3fbdb3Sc,9122
|
|
49
|
+
sonolus/script/iterator.py,sha256=OHnIOKRchzVCMaN33Tubo6EzqV61ZYUxDWIJ2S5G6iQ,4590
|
|
50
|
+
sonolus/script/level.py,sha256=wR23xk-NOcW_JMRb3R12sqIXCLSZL-7cM3y7IpMF1J0,6333
|
|
51
|
+
sonolus/script/metadata.py,sha256=ttRK27eojHf3So50KQJ-8yj3udZoN1bli5iD-knaeLw,753
|
|
52
|
+
sonolus/script/num.py,sha256=FpMi-w_rdkozZSFxraNQ4IkOzQpTr4YAH3hbqMIFYy8,14612
|
|
53
|
+
sonolus/script/options.py,sha256=ZD9I898wMrpPQ8IyuDoYef804rZzhSvPoC_0bxovIec,8245
|
|
53
54
|
sonolus/script/particle.py,sha256=K06ArT9tstRNdbuGIviDmDDWcK3-ieA53LHg0Xvizow,8304
|
|
54
|
-
sonolus/script/pointer.py,sha256=
|
|
55
|
-
sonolus/script/
|
|
56
|
-
sonolus/script/project.py,sha256=
|
|
57
|
-
sonolus/script/quad.py,sha256=
|
|
58
|
-
sonolus/script/record.py,sha256=
|
|
59
|
-
sonolus/script/runtime.py,sha256=
|
|
60
|
-
sonolus/script/sprite.py,sha256=
|
|
61
|
-
sonolus/script/text.py,sha256=
|
|
55
|
+
sonolus/script/pointer.py,sha256=IH2_a0XE76uG_UyYM9jAYIf7qZ5LhUNc9ksXDIvAPZA,1511
|
|
56
|
+
sonolus/script/printing.py,sha256=mNYu9QWiacBBGZrnePZQMVwbbguoelUps9GiOK_aVRU,2096
|
|
57
|
+
sonolus/script/project.py,sha256=jLndgGJHdkqFYe-lDl_IzTjQ4gOSuy80en8WoSWXnB8,3340
|
|
58
|
+
sonolus/script/quad.py,sha256=7uhBwRSvA4tZ_JFjc3Y9n8C9AwQirX5E8MAA0QaHCak,10067
|
|
59
|
+
sonolus/script/record.py,sha256=EV4wywagBl3RU40Bqo9DRdx7Ta8xBgwKtgKlDF02X0o,11332
|
|
60
|
+
sonolus/script/runtime.py,sha256=MIGqDqNitlI6vFtZ2SP32D6LCLJ3RAuGKSxKKl-1tJw,20303
|
|
61
|
+
sonolus/script/sprite.py,sha256=CMcRAZ2hejXnaBmY2_n1_rj6hGOgPP5zEW-BpyaEVOY,16256
|
|
62
|
+
sonolus/script/text.py,sha256=wxujIgKYcCfl2AD2_Im8g3vh0lDEHYwTSRZg9wsBPEU,13402
|
|
62
63
|
sonolus/script/timing.py,sha256=ZR0ypV2PIoDCMHHGOMfCeezStCsBQdzomdqaz5VKex0,2981
|
|
63
64
|
sonolus/script/transform.py,sha256=hH6KSRQC8vV-Z10CRCrGewMYqQwUMH3mQIEmniuC2Zw,10760
|
|
64
|
-
sonolus/script/ui.py,sha256=
|
|
65
|
-
sonolus/script/values.py,sha256=
|
|
66
|
-
sonolus/script/vec.py,sha256=
|
|
65
|
+
sonolus/script/ui.py,sha256=DYPGWIjHj1IFPxW1zaEuIUQx0b32FJPXtiwCvrtJ6oo,7528
|
|
66
|
+
sonolus/script/values.py,sha256=bwh_9ikxuKyrO_m3_lTKIvZDze4j88Fz-_HT_jB657g,1032
|
|
67
|
+
sonolus/script/vec.py,sha256=4ntfJ96zxKR-nVZluUgHd-Ud4vNfButfiv7EsroZxfE,7002
|
|
67
68
|
sonolus/script/internal/__init__.py,sha256=T6rzLoiOUaiSQtaHMZ88SNO-ijSjSSv33TKtUwu-Ms8,136
|
|
68
|
-
sonolus/script/internal/builtin_impls.py,sha256=
|
|
69
|
+
sonolus/script/internal/builtin_impls.py,sha256=w9QqxJQ2YR5pVy820qWmAy0utbsW4hcSzMvA_yNgsvg,8186
|
|
69
70
|
sonolus/script/internal/callbacks.py,sha256=vWzJG8uiJoEtsNnbeZPqOHogCwoLpz2D1MnHY2wVV8s,2801
|
|
70
|
-
sonolus/script/internal/constant.py,sha256=
|
|
71
|
-
sonolus/script/internal/context.py,sha256=
|
|
71
|
+
sonolus/script/internal/constant.py,sha256=XljC1bXpjmQsekFFDNbaCLoHLPXzDeE17QDHf-rY70Q,3835
|
|
72
|
+
sonolus/script/internal/context.py,sha256=xW7yFWr13yf77Uk4C_F7v9Kp4ZP1o30uZuBkvK1KyLA,14157
|
|
72
73
|
sonolus/script/internal/descriptor.py,sha256=XRFey-EjiAm_--KsNl-8N0Mi_iyQwlPh68gDp0pKf3E,392
|
|
73
74
|
sonolus/script/internal/dict_impl.py,sha256=alu_wKGSk1kZajNf64qbe7t71shEzD4N5xNIATH8Swo,1885
|
|
74
75
|
sonolus/script/internal/error.py,sha256=ZNnsvQVQAnFKzcvsm6-sste2lo-tP5pPI8sD7XlAZWc,490
|
|
75
76
|
sonolus/script/internal/generic.py,sha256=YU1hUJoBcGc0OSrFStK5JI6CikOwSmd_IR20pCuT82k,7310
|
|
76
77
|
sonolus/script/internal/impl.py,sha256=HKQVoHknw5t43Wmj_G1vFjGSmnFpOj1FUYnhbUM3rHc,2969
|
|
77
78
|
sonolus/script/internal/introspection.py,sha256=SL2zaYjid0kkcj6ZbFLIwhgh7WKZBaAHhlbSJGr6PWs,974
|
|
78
|
-
sonolus/script/internal/math_impls.py,sha256=
|
|
79
|
+
sonolus/script/internal/math_impls.py,sha256=Xk7tLMnV2npzPJWtHlspONQHt09Gh2YLdHhAjx4jkdE,2320
|
|
79
80
|
sonolus/script/internal/native.py,sha256=XKlNnWSJ-lxbwVGWhGj_CSSoWsVN18imqT5sAsDJT1w,1551
|
|
80
81
|
sonolus/script/internal/random.py,sha256=6Ku5edRcDUh7rtqEEYCJz0BQavw69RALsVHS25z50pI,1695
|
|
81
82
|
sonolus/script/internal/range.py,sha256=lrTanQFHU7RuQxSSPwDdoC30Y8FnHGxcP1Ahditu3zU,2297
|
|
82
|
-
sonolus/script/internal/transient.py,sha256=
|
|
83
|
+
sonolus/script/internal/transient.py,sha256=d6iYhM9f6DPUX5nkYQGm-x0b9XEfZUmB4AtUNnyhixo,1636
|
|
83
84
|
sonolus/script/internal/tuple_impl.py,sha256=vjXmScLVdeTkDn3t9fgIRqtW31iwngnaP2rmA6nlsLw,3431
|
|
84
|
-
sonolus/script/internal/value.py,sha256=
|
|
85
|
-
sonolus_py-0.1.
|
|
86
|
-
sonolus_py-0.1.
|
|
87
|
-
sonolus_py-0.1.
|
|
88
|
-
sonolus_py-0.1.
|
|
89
|
-
sonolus_py-0.1.
|
|
85
|
+
sonolus/script/internal/value.py,sha256=St7OqBX-Tad_qBfu6aWMFU4lDXRyFnvzzkb-yFmOzg0,5042
|
|
86
|
+
sonolus_py-0.2.1.dist-info/METADATA,sha256=OZkz271-5AHDS0iRKllUD5f3Wb5FL9s7BQghhIhI6Nw,302
|
|
87
|
+
sonolus_py-0.2.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
88
|
+
sonolus_py-0.2.1.dist-info/entry_points.txt,sha256=oTYspY_b7SA8TptEMTDxh4-Aj-ZVPnYC9f1lqH6s9G4,54
|
|
89
|
+
sonolus_py-0.2.1.dist-info/licenses/LICENSE,sha256=JEKpqVhQYfEc7zg3Mj462sKbKYmO1K7WmvX1qvg9IJk,1067
|
|
90
|
+
sonolus_py-0.2.1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|