sonolus.py 0.3.3__tar.gz → 0.4.0__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.
Potentially problematic release.
This version of sonolus.py might be problematic. Click here for more details.
- sonolus_py-0.4.0/.gitattributes +1 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/.github/workflows/publish.yaml +1 -1
- sonolus_py-0.4.0/.python-version +1 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/PKG-INFO +1 -1
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/doc_stubs/builtins.pyi +75 -3
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/doc_stubs/math.pyi +33 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/docs/concepts/builtins.md +10 -4
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/docs/concepts/cli.md +8 -1
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/docs/concepts/constructs.md +5 -1
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/docs/concepts/types.md +23 -13
- sonolus_py-0.4.0/docs/index.md +27 -0
- sonolus_py-0.4.0/docs/overview.md +252 -0
- sonolus_py-0.4.0/docs/reference/sonolus.script.maybe.md +3 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/mkdocs.yml +2 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/pyproject.toml +10 -2
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/backend/excepthook.py +30 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/backend/finalize.py +15 -1
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/backend/ops.py +4 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/backend/optimize/allocate.py +5 -5
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/backend/optimize/constant_evaluation.py +124 -19
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/backend/optimize/copy_coalesce.py +15 -12
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/backend/optimize/dead_code.py +7 -6
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/backend/optimize/dominance.py +2 -2
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/backend/optimize/flow.py +54 -8
- sonolus_py-0.4.0/sonolus/backend/optimize/inlining.py +244 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/backend/optimize/liveness.py +2 -2
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/backend/optimize/optimize.py +15 -1
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/backend/optimize/passes.py +11 -3
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/backend/optimize/simplify.py +137 -8
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/backend/optimize/ssa.py +47 -13
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/backend/place.py +5 -4
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/backend/utils.py +24 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/backend/visitor.py +260 -17
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/build/cli.py +47 -19
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/build/compile.py +12 -5
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/build/engine.py +70 -1
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/build/level.py +3 -3
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/build/project.py +2 -2
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/script/archetype.py +27 -24
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/script/array.py +25 -19
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/script/array_like.py +46 -49
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/script/bucket.py +1 -1
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/script/containers.py +22 -26
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/script/debug.py +24 -47
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/script/effect.py +1 -1
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/script/engine.py +2 -2
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/script/globals.py +3 -3
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/script/instruction.py +3 -3
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/script/internal/builtin_impls.py +155 -28
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/script/internal/constant.py +13 -3
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/script/internal/context.py +46 -15
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/script/internal/impl.py +9 -3
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/script/internal/introspection.py +8 -1
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/script/internal/math_impls.py +17 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/script/internal/native.py +5 -5
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/script/internal/range.py +14 -17
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/script/internal/simulation_context.py +1 -1
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/script/internal/transient.py +2 -2
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/script/internal/value.py +42 -4
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/script/interval.py +15 -15
- sonolus_py-0.4.0/sonolus/script/iterator.py +116 -0
- sonolus_py-0.4.0/sonolus/script/maybe.py +139 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/script/num.py +30 -15
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/script/options.py +1 -1
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/script/particle.py +1 -1
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/script/pointer.py +1 -1
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/script/project.py +24 -5
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/script/quad.py +15 -15
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/script/record.py +21 -12
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/script/runtime.py +22 -18
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/script/sprite.py +1 -1
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/script/stream.py +69 -85
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/script/transform.py +35 -34
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/script/values.py +10 -10
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/script/vec.py +23 -20
- sonolus_py-0.4.0/test_projects/pydori/level.py +158 -0
- sonolus_py-0.4.0/test_projects/pydori/lib/buckets.py +167 -0
- sonolus_py-0.4.0/test_projects/pydori/lib/connector.py +30 -0
- sonolus_py-0.4.0/test_projects/pydori/lib/effect.py +24 -0
- sonolus_py-0.4.0/test_projects/pydori/lib/layer.py +26 -0
- sonolus_py-0.4.0/test_projects/pydori/lib/layout.py +401 -0
- sonolus_py-0.4.0/test_projects/pydori/lib/note.py +374 -0
- sonolus_py-0.4.0/test_projects/pydori/lib/options.py +105 -0
- sonolus_py-0.4.0/test_projects/pydori/lib/particle.py +22 -0
- sonolus_py-0.4.0/test_projects/pydori/lib/skin.py +40 -0
- sonolus_py-0.4.0/test_projects/pydori/lib/stage.py +71 -0
- sonolus_py-0.4.0/test_projects/pydori/lib/streams.py +12 -0
- sonolus_py-0.4.0/test_projects/pydori/lib/ui.py +122 -0
- sonolus_py-0.4.0/test_projects/pydori/play/__init__.py +0 -0
- sonolus_py-0.4.0/test_projects/pydori/play/connector.py +87 -0
- sonolus_py-0.4.0/test_projects/pydori/play/event.py +15 -0
- sonolus_py-0.4.0/test_projects/pydori/play/input.py +35 -0
- sonolus_py-0.4.0/test_projects/pydori/play/mode.py +26 -0
- sonolus_py-0.4.0/test_projects/pydori/play/note.py +416 -0
- sonolus_py-0.4.0/test_projects/pydori/play/stage.py +63 -0
- sonolus_py-0.4.0/test_projects/pydori/preview/__init__.py +0 -0
- sonolus_py-0.4.0/test_projects/pydori/preview/connector.py +68 -0
- sonolus_py-0.4.0/test_projects/pydori/preview/event.py +75 -0
- sonolus_py-0.4.0/test_projects/pydori/preview/layout.py +278 -0
- sonolus_py-0.4.0/test_projects/pydori/preview/mode.py +19 -0
- sonolus_py-0.4.0/test_projects/pydori/preview/note.py +75 -0
- sonolus_py-0.4.0/test_projects/pydori/preview/stage.py +94 -0
- sonolus_py-0.4.0/test_projects/pydori/project.py +32 -0
- sonolus_py-0.4.0/test_projects/pydori/tutorial/__init__.py +0 -0
- sonolus_py-0.4.0/test_projects/pydori/tutorial/framework.py +137 -0
- sonolus_py-0.4.0/test_projects/pydori/tutorial/instructions.py +21 -0
- sonolus_py-0.4.0/test_projects/pydori/tutorial/intro.py +105 -0
- sonolus_py-0.4.0/test_projects/pydori/tutorial/mode.py +19 -0
- sonolus_py-0.4.0/test_projects/pydori/tutorial/navigate.py +9 -0
- sonolus_py-0.4.0/test_projects/pydori/tutorial/painting.py +125 -0
- sonolus_py-0.4.0/test_projects/pydori/tutorial/phases.py +367 -0
- sonolus_py-0.4.0/test_projects/pydori/tutorial/preprocess.py +9 -0
- sonolus_py-0.4.0/test_projects/pydori/tutorial/update.py +37 -0
- sonolus_py-0.4.0/test_projects/pydori/watch/__init__.py +0 -0
- sonolus_py-0.4.0/test_projects/pydori/watch/connector.py +76 -0
- sonolus_py-0.4.0/test_projects/pydori/watch/event.py +15 -0
- sonolus_py-0.4.0/test_projects/pydori/watch/mode.py +29 -0
- sonolus_py-0.4.0/test_projects/pydori/watch/note.py +233 -0
- sonolus_py-0.4.0/test_projects/pydori/watch/stage.py +68 -0
- sonolus_py-0.4.0/test_projects/pydori/watch/update_spawn.py +5 -0
- sonolus_py-0.4.0/tests/__init__.py +0 -0
- sonolus_py-0.4.0/tests/regressions/__init__.py +10 -0
- sonolus_py-0.4.0/tests/regressions/conftest.py +11 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_hold_connector_should_spawn_cfg +27 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_hold_connector_should_spawn_fast_nodes +60 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_hold_connector_should_spawn_fast_optimized_cfg +7 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_hold_connector_should_spawn_standard_nodes +36 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_hold_connector_should_spawn_standard_optimized_cfg +4 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_hold_connector_spawn_order_cfg +24 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_hold_connector_spawn_order_fast_nodes +46 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_hold_connector_spawn_order_fast_optimized_cfg +6 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_hold_connector_spawn_order_standard_nodes +30 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_hold_connector_spawn_order_standard_optimized_cfg +4 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_hold_connector_update_parallel_cfg +295 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_hold_connector_update_parallel_fast_nodes +1754 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_hold_connector_update_parallel_fast_optimized_cfg +149 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_hold_connector_update_parallel_standard_nodes +762 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_hold_connector_update_parallel_standard_optimized_cfg +25 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_hold_connector_update_sequential_cfg +180 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_hold_connector_update_sequential_fast_nodes +567 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_hold_connector_update_sequential_fast_optimized_cfg +60 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_hold_connector_update_sequential_standard_nodes +310 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_hold_connector_update_sequential_standard_optimized_cfg +24 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_hold_manager_touch_cfg +203 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_hold_manager_touch_fast_nodes +540 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_hold_manager_touch_fast_optimized_cfg +77 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_hold_manager_touch_standard_nodes +280 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_hold_manager_touch_standard_optimized_cfg +37 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_hold_manager_update_parallel_cfg +946 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_hold_manager_update_parallel_fast_nodes +4570 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_hold_manager_update_parallel_fast_optimized_cfg +470 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_hold_manager_update_parallel_standard_nodes +1923 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_hold_manager_update_parallel_standard_optimized_cfg +119 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_note_initialize_cfg +123 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_note_initialize_fast_nodes +310 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_note_initialize_fast_optimized_cfg +51 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_note_initialize_standard_nodes +105 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_note_initialize_standard_optimized_cfg +19 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_note_preprocess_cfg +308 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_note_preprocess_fast_nodes +1305 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_note_preprocess_fast_optimized_cfg +189 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_note_preprocess_standard_nodes +609 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_note_preprocess_standard_optimized_cfg +109 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_note_should_spawn_cfg +12 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_note_should_spawn_fast_nodes +27 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_note_should_spawn_fast_optimized_cfg +4 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_note_should_spawn_standard_nodes +19 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_note_should_spawn_standard_optimized_cfg +3 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_note_spawn_order_cfg +9 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_note_spawn_order_fast_nodes +13 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_note_spawn_order_fast_optimized_cfg +3 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_note_spawn_order_standard_nodes +13 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_note_spawn_order_standard_optimized_cfg +3 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_note_terminate_cfg +9 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_note_terminate_fast_nodes +13 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_note_terminate_fast_optimized_cfg +3 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_note_terminate_standard_nodes +13 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_note_terminate_standard_optimized_cfg +3 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_note_touch_cfg +8372 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_note_touch_fast_nodes +36519 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_note_touch_fast_optimized_cfg +4441 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_note_touch_standard_nodes +16029 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_note_touch_standard_optimized_cfg +1686 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_note_update_parallel_cfg +1813 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_note_update_parallel_fast_nodes +8309 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_note_update_parallel_fast_optimized_cfg +925 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_note_update_parallel_standard_nodes +3190 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_note_update_parallel_standard_optimized_cfg +289 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_note_update_sequential_cfg +1250 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_note_update_sequential_fast_nodes +5531 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_note_update_sequential_fast_optimized_cfg +666 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_note_update_sequential_standard_nodes +2225 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_note_update_sequential_standard_optimized_cfg +259 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_sim_line_should_spawn_cfg +27 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_sim_line_should_spawn_fast_nodes +60 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_sim_line_should_spawn_fast_optimized_cfg +7 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_sim_line_should_spawn_standard_nodes +36 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_sim_line_should_spawn_standard_optimized_cfg +4 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_sim_line_spawn_order_cfg +24 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_sim_line_spawn_order_fast_nodes +46 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_sim_line_spawn_order_fast_optimized_cfg +6 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_sim_line_spawn_order_standard_nodes +30 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_sim_line_spawn_order_standard_optimized_cfg +4 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_sim_line_update_parallel_cfg +443 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_sim_line_update_parallel_fast_nodes +2014 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_sim_line_update_parallel_fast_optimized_cfg +203 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_sim_line_update_parallel_standard_nodes +854 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_sim_line_update_parallel_standard_optimized_cfg +56 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_stage_preprocess_cfg +3238 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_stage_preprocess_fast_nodes +15388 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_stage_preprocess_fast_optimized_cfg +1658 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_stage_preprocess_standard_nodes +5748 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_stage_preprocess_standard_optimized_cfg +515 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_stage_should_spawn_cfg +9 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_stage_should_spawn_fast_nodes +10 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_stage_should_spawn_fast_optimized_cfg +3 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_stage_should_spawn_standard_nodes +10 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_stage_should_spawn_standard_optimized_cfg +3 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_stage_spawn_order_cfg +9 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_stage_spawn_order_fast_nodes +10 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_stage_spawn_order_fast_optimized_cfg +3 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_stage_spawn_order_standard_nodes +10 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_stage_spawn_order_standard_optimized_cfg +3 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_stage_touch_cfg +850 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_stage_touch_fast_nodes +3302 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_stage_touch_fast_optimized_cfg +428 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_stage_touch_standard_nodes +1636 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_stage_touch_standard_optimized_cfg +188 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_stage_update_parallel_cfg +130 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_stage_update_parallel_fast_nodes +391 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_stage_update_parallel_fast_optimized_cfg +36 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_stage_update_parallel_standard_nodes +261 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_stage_update_parallel_standard_optimized_cfg +15 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_stage_update_sequential_cfg +34 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_stage_update_sequential_fast_nodes +16 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_stage_update_sequential_fast_optimized_cfg +4 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_stage_update_sequential_standard_nodes +16 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_stage_update_sequential_standard_optimized_cfg +4 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_unscored_note_initialize_cfg +123 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_unscored_note_initialize_fast_nodes +310 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_unscored_note_initialize_fast_optimized_cfg +51 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_unscored_note_initialize_standard_nodes +105 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_unscored_note_initialize_standard_optimized_cfg +19 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_unscored_note_preprocess_cfg +308 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_unscored_note_preprocess_fast_nodes +1305 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_unscored_note_preprocess_fast_optimized_cfg +189 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_unscored_note_preprocess_standard_nodes +609 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_unscored_note_preprocess_standard_optimized_cfg +109 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_unscored_note_should_spawn_cfg +12 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_unscored_note_should_spawn_fast_nodes +27 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_unscored_note_should_spawn_fast_optimized_cfg +4 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_unscored_note_should_spawn_standard_nodes +19 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_unscored_note_should_spawn_standard_optimized_cfg +3 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_unscored_note_spawn_order_cfg +9 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_unscored_note_spawn_order_fast_nodes +13 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_unscored_note_spawn_order_fast_optimized_cfg +3 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_unscored_note_spawn_order_standard_nodes +13 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_unscored_note_spawn_order_standard_optimized_cfg +3 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_unscored_note_terminate_cfg +9 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_unscored_note_terminate_fast_nodes +13 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_unscored_note_terminate_fast_optimized_cfg +3 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_unscored_note_terminate_standard_nodes +13 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_unscored_note_terminate_standard_optimized_cfg +3 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_unscored_note_touch_cfg +8372 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_unscored_note_touch_fast_nodes +36519 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_unscored_note_touch_fast_optimized_cfg +4441 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_unscored_note_touch_standard_nodes +16029 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_unscored_note_touch_standard_optimized_cfg +1686 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_unscored_note_update_parallel_cfg +1813 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_unscored_note_update_parallel_fast_nodes +8309 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_unscored_note_update_parallel_fast_optimized_cfg +925 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_unscored_note_update_parallel_standard_nodes +3190 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_unscored_note_update_parallel_standard_optimized_cfg +289 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_unscored_note_update_sequential_cfg +1250 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_unscored_note_update_sequential_fast_nodes +5531 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_unscored_note_update_sequential_fast_optimized_cfg +666 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_unscored_note_update_sequential_standard_nodes +2225 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_play_unscored_note_update_sequential_standard_optimized_cfg +259 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_preview_preview_bpm_change_preprocess_cfg +11 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_preview_preview_bpm_change_preprocess_fast_nodes +30 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_preview_preview_bpm_change_preprocess_fast_optimized_cfg +5 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_preview_preview_bpm_change_preprocess_standard_nodes +22 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_preview_preview_bpm_change_preprocess_standard_optimized_cfg +4 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_preview_preview_bpm_change_render_cfg +437 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_preview_preview_bpm_change_render_fast_nodes +1484 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_preview_preview_bpm_change_render_fast_optimized_cfg +157 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_preview_preview_bpm_change_render_standard_nodes +447 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_preview_preview_bpm_change_render_standard_optimized_cfg +24 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_preview_preview_hold_connector_render_cfg +431 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_preview_preview_hold_connector_render_fast_nodes +1541 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_preview_preview_hold_connector_render_fast_optimized_cfg +163 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_preview_preview_hold_connector_render_standard_nodes +500 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_preview_preview_hold_connector_render_standard_optimized_cfg +25 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_preview_preview_note_preprocess_cfg +31 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_preview_preview_note_preprocess_fast_nodes +165 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_preview_preview_note_preprocess_fast_optimized_cfg +23 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_preview_preview_note_preprocess_standard_nodes +125 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_preview_preview_note_preprocess_standard_optimized_cfg +18 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_preview_preview_note_render_cfg +1101 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_preview_preview_note_render_fast_nodes +4337 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_preview_preview_note_render_fast_optimized_cfg +503 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_preview_preview_note_render_standard_nodes +1271 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_preview_preview_note_render_standard_optimized_cfg +125 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_preview_preview_sim_line_render_cfg +217 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_preview_preview_sim_line_render_fast_nodes +800 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_preview_preview_sim_line_render_fast_optimized_cfg +79 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_preview_preview_sim_line_render_standard_nodes +304 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_preview_preview_sim_line_render_standard_optimized_cfg +17 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_preview_preview_stage_preprocess_cfg +1109 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_preview_preview_stage_preprocess_fast_nodes +850 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_preview_preview_stage_preprocess_fast_optimized_cfg +106 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_preview_preview_stage_preprocess_standard_nodes +276 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_preview_preview_stage_preprocess_standard_optimized_cfg +35 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_preview_preview_stage_render_cfg +1156 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_preview_preview_stage_render_fast_nodes +4001 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_preview_preview_stage_render_fast_optimized_cfg +485 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_preview_preview_stage_render_standard_nodes +797 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_preview_preview_stage_render_standard_optimized_cfg +55 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_preview_preview_timescale_change_preprocess_cfg +11 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_preview_preview_timescale_change_preprocess_fast_nodes +30 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_preview_preview_timescale_change_preprocess_fast_optimized_cfg +5 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_preview_preview_timescale_change_preprocess_standard_nodes +22 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_preview_preview_timescale_change_preprocess_standard_optimized_cfg +4 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_preview_preview_timescale_change_render_cfg +254 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_preview_preview_timescale_change_render_fast_nodes +817 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_preview_preview_timescale_change_render_fast_optimized_cfg +82 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_preview_preview_timescale_change_render_standard_nodes +225 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_preview_preview_timescale_change_render_standard_optimized_cfg +8 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_preview_preview_unscored_note_preprocess_cfg +31 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_preview_preview_unscored_note_preprocess_fast_nodes +165 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_preview_preview_unscored_note_preprocess_fast_optimized_cfg +23 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_preview_preview_unscored_note_preprocess_standard_nodes +125 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_preview_preview_unscored_note_preprocess_standard_optimized_cfg +18 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_preview_preview_unscored_note_render_cfg +1101 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_preview_preview_unscored_note_render_fast_nodes +4337 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_preview_preview_unscored_note_render_fast_optimized_cfg +503 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_preview_preview_unscored_note_render_standard_nodes +1271 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_preview_preview_unscored_note_render_standard_optimized_cfg +125 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_tutorial_global_navigate_fast_cfg +55 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_tutorial_global_navigate_fast_nodes +155 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_tutorial_global_navigate_fast_optimized_cfg +23 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_tutorial_global_navigate_standard_cfg +55 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_tutorial_global_navigate_standard_nodes +112 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_tutorial_global_navigate_standard_optimized_cfg +16 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_tutorial_global_preprocess_fast_cfg +2552 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_tutorial_global_preprocess_fast_nodes +10188 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_tutorial_global_preprocess_fast_optimized_cfg +1089 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_tutorial_global_preprocess_standard_cfg +2552 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_tutorial_global_preprocess_standard_nodes +4214 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_tutorial_global_preprocess_standard_optimized_cfg +342 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_tutorial_global_update_fast_cfg +37959 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_tutorial_global_update_fast_nodes +196268 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_tutorial_global_update_fast_optimized_cfg +19193 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_tutorial_global_update_standard_cfg +37959 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_tutorial_global_update_standard_nodes +123333 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_tutorial_global_update_standard_optimized_cfg +2324 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_global_update_spawn_fast_cfg +9 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_global_update_spawn_fast_nodes +13 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_global_update_spawn_fast_optimized_cfg +3 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_global_update_spawn_standard_cfg +9 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_global_update_spawn_standard_nodes +13 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_global_update_spawn_standard_optimized_cfg +3 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_hold_connector_despawn_time_cfg +18 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_hold_connector_despawn_time_fast_nodes +46 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_hold_connector_despawn_time_fast_optimized_cfg +6 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_hold_connector_despawn_time_standard_nodes +30 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_hold_connector_despawn_time_standard_optimized_cfg +4 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_hold_connector_spawn_time_cfg +24 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_hold_connector_spawn_time_fast_nodes +46 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_hold_connector_spawn_time_fast_optimized_cfg +6 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_hold_connector_spawn_time_standard_nodes +30 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_hold_connector_spawn_time_standard_optimized_cfg +4 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_hold_connector_update_parallel_cfg +289 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_hold_connector_update_parallel_fast_nodes +1745 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_hold_connector_update_parallel_fast_optimized_cfg +145 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_hold_connector_update_parallel_standard_nodes +753 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_hold_connector_update_parallel_standard_optimized_cfg +21 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_hold_connector_update_sequential_cfg +317 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_hold_connector_update_sequential_fast_nodes +873 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_hold_connector_update_sequential_fast_optimized_cfg +111 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_hold_connector_update_sequential_standard_nodes +428 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_hold_connector_update_sequential_standard_optimized_cfg +42 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_hold_manager_despawn_time_cfg +19 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_hold_manager_despawn_time_fast_nodes +54 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_hold_manager_despawn_time_fast_optimized_cfg +7 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_hold_manager_despawn_time_standard_nodes +38 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_hold_manager_despawn_time_standard_optimized_cfg +5 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_hold_manager_spawn_time_cfg +19 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_hold_manager_spawn_time_fast_nodes +54 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_hold_manager_spawn_time_fast_optimized_cfg +7 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_hold_manager_spawn_time_standard_nodes +38 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_hold_manager_spawn_time_standard_optimized_cfg +5 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_hold_manager_terminate_cfg +33 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_hold_manager_terminate_fast_nodes +53 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_hold_manager_terminate_fast_optimized_cfg +11 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_hold_manager_terminate_standard_nodes +45 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_hold_manager_terminate_standard_optimized_cfg +10 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_hold_manager_update_parallel_cfg +820 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_hold_manager_update_parallel_fast_nodes +4224 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_hold_manager_update_parallel_fast_optimized_cfg +430 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_hold_manager_update_parallel_standard_nodes +1697 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_hold_manager_update_parallel_standard_optimized_cfg +92 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_note_despawn_time_cfg +15 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_note_despawn_time_fast_nodes +43 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_note_despawn_time_fast_optimized_cfg +11 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_note_despawn_time_standard_nodes +31 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_note_despawn_time_standard_optimized_cfg +8 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_note_preprocess_cfg +844 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_note_preprocess_fast_nodes +2823 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_note_preprocess_fast_optimized_cfg +445 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_note_preprocess_standard_nodes +1430 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_note_preprocess_standard_optimized_cfg +270 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_note_spawn_time_cfg +9 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_note_spawn_time_fast_nodes +13 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_note_spawn_time_fast_optimized_cfg +3 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_note_spawn_time_standard_nodes +13 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_note_spawn_time_standard_optimized_cfg +3 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_note_terminate_cfg +746 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_note_terminate_fast_nodes +3984 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_note_terminate_fast_optimized_cfg +437 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_note_terminate_standard_nodes +1365 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_note_terminate_standard_optimized_cfg +113 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_note_update_parallel_cfg +1807 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_note_update_parallel_fast_nodes +8301 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_note_update_parallel_fast_optimized_cfg +923 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_note_update_parallel_standard_nodes +3182 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_note_update_parallel_standard_optimized_cfg +287 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_scheduled_lane_effect_despawn_time_cfg +18 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_scheduled_lane_effect_despawn_time_fast_nodes +40 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_scheduled_lane_effect_despawn_time_fast_optimized_cfg +6 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_scheduled_lane_effect_despawn_time_standard_nodes +24 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_scheduled_lane_effect_despawn_time_standard_optimized_cfg +4 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_scheduled_lane_effect_spawn_time_cfg +11 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_scheduled_lane_effect_spawn_time_fast_nodes +29 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_scheduled_lane_effect_spawn_time_fast_optimized_cfg +5 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_scheduled_lane_effect_spawn_time_standard_nodes +21 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_scheduled_lane_effect_spawn_time_standard_optimized_cfg +4 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_scheduled_lane_effect_update_parallel_cfg +153 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_scheduled_lane_effect_update_parallel_fast_nodes +561 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_scheduled_lane_effect_update_parallel_fast_optimized_cfg +78 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_scheduled_lane_effect_update_parallel_standard_nodes +248 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_scheduled_lane_effect_update_parallel_standard_optimized_cfg +29 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_sim_line_despawn_time_cfg +58 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_sim_line_despawn_time_fast_nodes +219 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_sim_line_despawn_time_fast_optimized_cfg +32 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_sim_line_despawn_time_standard_nodes +153 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_sim_line_despawn_time_standard_optimized_cfg +21 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_sim_line_spawn_time_cfg +24 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_sim_line_spawn_time_fast_nodes +46 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_sim_line_spawn_time_fast_optimized_cfg +6 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_sim_line_spawn_time_standard_nodes +30 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_sim_line_spawn_time_standard_optimized_cfg +4 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_sim_line_update_parallel_cfg +394 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_sim_line_update_parallel_fast_nodes +1894 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_sim_line_update_parallel_fast_optimized_cfg +184 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_sim_line_update_parallel_standard_nodes +786 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_sim_line_update_parallel_standard_optimized_cfg +45 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_stage_despawn_time_cfg +9 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_stage_despawn_time_fast_nodes +10 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_stage_despawn_time_fast_optimized_cfg +3 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_stage_despawn_time_standard_nodes +10 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_stage_despawn_time_standard_optimized_cfg +3 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_stage_preprocess_cfg +3508 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_stage_preprocess_fast_nodes +16381 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_stage_preprocess_fast_optimized_cfg +1799 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_stage_preprocess_standard_nodes +6095 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_stage_preprocess_standard_optimized_cfg +568 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_stage_spawn_time_cfg +9 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_stage_spawn_time_fast_nodes +10 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_stage_spawn_time_fast_optimized_cfg +3 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_stage_spawn_time_standard_nodes +10 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_stage_spawn_time_standard_optimized_cfg +3 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_stage_update_parallel_cfg +130 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_stage_update_parallel_fast_nodes +391 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_stage_update_parallel_fast_optimized_cfg +36 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_stage_update_parallel_standard_nodes +261 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_stage_update_parallel_standard_optimized_cfg +15 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_unscored_note_despawn_time_cfg +15 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_unscored_note_despawn_time_fast_nodes +43 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_unscored_note_despawn_time_fast_optimized_cfg +11 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_unscored_note_despawn_time_standard_nodes +31 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_unscored_note_despawn_time_standard_optimized_cfg +8 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_unscored_note_preprocess_cfg +844 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_unscored_note_preprocess_fast_nodes +2823 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_unscored_note_preprocess_fast_optimized_cfg +445 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_unscored_note_preprocess_standard_nodes +1430 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_unscored_note_preprocess_standard_optimized_cfg +270 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_unscored_note_spawn_time_cfg +9 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_unscored_note_spawn_time_fast_nodes +13 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_unscored_note_spawn_time_fast_optimized_cfg +3 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_unscored_note_spawn_time_standard_nodes +13 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_unscored_note_spawn_time_standard_optimized_cfg +3 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_unscored_note_terminate_cfg +746 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_unscored_note_terminate_fast_nodes +3984 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_unscored_note_terminate_fast_optimized_cfg +437 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_unscored_note_terminate_standard_nodes +1365 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_unscored_note_terminate_standard_optimized_cfg +113 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_unscored_note_update_parallel_cfg +1807 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_unscored_note_update_parallel_fast_nodes +8301 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_unscored_note_update_parallel_fast_optimized_cfg +923 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_unscored_note_update_parallel_standard_nodes +3182 -0
- sonolus_py-0.4.0/tests/regressions/data/pydori_watch_watch_unscored_note_update_parallel_standard_optimized_cfg +287 -0
- sonolus_py-0.4.0/tests/regressions/test_project.py +155 -0
- sonolus_py-0.4.0/tests/script/__init__.py +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/tests/script/conftest.py +3 -3
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/tests/script/test_array.py +25 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/tests/script/test_flow.py +26 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/tests/script/test_functions.py +1 -1
- sonolus_py-0.4.0/tests/script/test_generator.py +636 -0
- sonolus_py-0.4.0/tests/script/test_genexpr.py +284 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/tests/script/test_interval.py +6 -2
- sonolus_py-0.4.0/tests/script/test_maybe.py +71 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/tests/script/test_var_array.py +1 -1
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/tests/script/test_vec.py +20 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/uv.lock +52 -22
- sonolus_py-0.3.3/.python-version +0 -1
- sonolus_py-0.3.3/docs/index.md +0 -22
- sonolus_py-0.3.3/sonolus/backend/optimize/inlining.py +0 -137
- sonolus_py-0.3.3/sonolus/script/iterator.py +0 -185
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/.gitignore +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/.run/Python tests in tests.run.xml +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/LICENSE +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/README.md +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/doc_stubs/__init__.py +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/doc_stubs/num.pyi +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/doc_stubs/random.pyi +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/docs/CNAME +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/docs/concepts/index.md +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/docs/concepts/project.md +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/docs/concepts/resources.md +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/docs/reference/builtins.md +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/docs/reference/index.md +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/docs/reference/math.md +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/docs/reference/random.md +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/docs/reference/sonolus.script.archetype.md +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/docs/reference/sonolus.script.array.md +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/docs/reference/sonolus.script.array_like.md +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/docs/reference/sonolus.script.bucket.md +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/docs/reference/sonolus.script.containers.md +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/docs/reference/sonolus.script.debug.md +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/docs/reference/sonolus.script.easing.md +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/docs/reference/sonolus.script.effect.md +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/docs/reference/sonolus.script.engine.md +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/docs/reference/sonolus.script.globals.md +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/docs/reference/sonolus.script.instruction.md +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/docs/reference/sonolus.script.interval.md +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/docs/reference/sonolus.script.iterator.md +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/docs/reference/sonolus.script.level.md +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/docs/reference/sonolus.script.metadata.md +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/docs/reference/sonolus.script.num.md +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/docs/reference/sonolus.script.options.md +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/docs/reference/sonolus.script.particle.md +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/docs/reference/sonolus.script.printing.md +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/docs/reference/sonolus.script.project.md +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/docs/reference/sonolus.script.quad.md +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/docs/reference/sonolus.script.record.md +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/docs/reference/sonolus.script.runtime.md +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/docs/reference/sonolus.script.sprite.md +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/docs/reference/sonolus.script.stream.md +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/docs/reference/sonolus.script.text.md +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/docs/reference/sonolus.script.timing.md +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/docs/reference/sonolus.script.transform.md +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/docs/reference/sonolus.script.ui.md +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/docs/reference/sonolus.script.values.md +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/docs/reference/sonolus.script.vec.md +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/scripts/generate.py +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/scripts/runtimes/Engine/Tutorial/Blocks.json +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/scripts/runtimes/Functions.json +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/scripts/runtimes/Level/Play/Blocks.json +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/scripts/runtimes/Level/Preview/Blocks.json +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/scripts/runtimes/Level/Watch/Blocks.json +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/__init__.py +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/backend/__init__.py +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/backend/blocks.py +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/backend/interpret.py +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/backend/ir.py +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/backend/mode.py +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/backend/node.py +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/backend/optimize/__init__.py +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/build/__init__.py +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/build/collection.py +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/build/node.py +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/py.typed +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/script/__init__.py +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/script/easing.py +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/script/internal/__init__.py +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/script/internal/callbacks.py +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/script/internal/descriptor.py +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/script/internal/dict_impl.py +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/script/internal/error.py +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/script/internal/generic.py +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/script/internal/random.py +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/script/internal/tuple_impl.py +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/script/level.py +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/script/metadata.py +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/script/printing.py +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/script/text.py +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/script/timing.py +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/sonolus/script/ui.py +0 -0
- {sonolus_py-0.3.3/tests → sonolus_py-0.4.0/test_projects/pydori}/__init__.py +0 -0
- {sonolus_py-0.3.3/tests/script → sonolus_py-0.4.0/test_projects/pydori/lib}/__init__.py +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/tests/script/test_array_map.py +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/tests/script/test_array_set.py +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/tests/script/test_assert.py +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/tests/script/test_dict.py +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/tests/script/test_helpers.py +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/tests/script/test_match.py +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/tests/script/test_num.py +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/tests/script/test_operator.py +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/tests/script/test_quad.py +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/tests/script/test_random.py +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/tests/script/test_range.py +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/tests/script/test_record.py +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/tests/script/test_transform.py +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/tests/script/test_tuple.py +0 -0
- {sonolus_py-0.3.3 → sonolus_py-0.4.0}/tests/script/test_values.py +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
tests/regressions/data/* linguist-generated=true
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3.14.0rc1
|
|
@@ -31,6 +31,20 @@ def any(iterable: Iterable[builtins.bool]) -> builtins.bool:
|
|
|
31
31
|
"""
|
|
32
32
|
...
|
|
33
33
|
|
|
34
|
+
def sum(
|
|
35
|
+
iterable: Iterable[builtins.int | builtins.float], /, start: builtins.int | builtins.float = 0
|
|
36
|
+
) -> builtins.int | builtins.float:
|
|
37
|
+
"""Return the sum of a 'start' value (default: 0) and an iterable of numbers.
|
|
38
|
+
|
|
39
|
+
Args:
|
|
40
|
+
iterable: The iterable of numbers to sum.
|
|
41
|
+
start: The starting value to add to the sum.
|
|
42
|
+
|
|
43
|
+
Returns:
|
|
44
|
+
The total sum.
|
|
45
|
+
"""
|
|
46
|
+
...
|
|
47
|
+
|
|
34
48
|
def abs(x: builtins.int | builtins.float) -> builtins.int | builtins.float:
|
|
35
49
|
"""Return the absolute value of a number.
|
|
36
50
|
|
|
@@ -134,6 +148,17 @@ def issubclass(cls: type, classinfo: type | tuple[type, ...]) -> builtins.bool:
|
|
|
134
148
|
"""
|
|
135
149
|
...
|
|
136
150
|
|
|
151
|
+
def iter[T](iterable: Iterable[T]) -> Iterator[T]:
|
|
152
|
+
"""Return an iterator for the given iterable.
|
|
153
|
+
|
|
154
|
+
Args:
|
|
155
|
+
iterable: The iterable to convert to an iterator.
|
|
156
|
+
|
|
157
|
+
Returns:
|
|
158
|
+
An iterator over the elements of the iterable.
|
|
159
|
+
"""
|
|
160
|
+
...
|
|
161
|
+
|
|
137
162
|
def len(s: object) -> builtins.int:
|
|
138
163
|
"""Return the number of items in a container.
|
|
139
164
|
|
|
@@ -148,9 +173,6 @@ def len(s: object) -> builtins.int:
|
|
|
148
173
|
def map[T, S](function: Callable[[T], S], iterable: Iterable[T]) -> Iterator[S]:
|
|
149
174
|
"""Apply a function to every item of an iterable and return an iterator.
|
|
150
175
|
|
|
151
|
-
Unlike the standard Python map function, it is possible that the function may be called more than once on the
|
|
152
|
-
same item.
|
|
153
|
-
|
|
154
176
|
Args:
|
|
155
177
|
function: The function to apply.
|
|
156
178
|
iterable: The iterable to process.
|
|
@@ -173,6 +195,24 @@ def max[T](iterable: Iterable[T], *, key: Callable[[T], Any] | None = ...) -> T:
|
|
|
173
195
|
"""
|
|
174
196
|
...
|
|
175
197
|
|
|
198
|
+
@overload
|
|
199
|
+
def max(
|
|
200
|
+
iterable: Iterable[builtins.int | builtins.float],
|
|
201
|
+
*,
|
|
202
|
+
default: builtins.int | builtins.float = ...,
|
|
203
|
+
key: Callable[[builtins.int | builtins.float], Any] | None = ...,
|
|
204
|
+
) -> builtins.int | builtins.float:
|
|
205
|
+
"""Return the largest item in an iterable or the largest of two or more arguments.
|
|
206
|
+
|
|
207
|
+
Args:
|
|
208
|
+
iterable: The iterable to evaluate.
|
|
209
|
+
default: The default value to return if the iterable is empty.
|
|
210
|
+
key: A function of one argument that is used to extract a comparison key from each element.
|
|
211
|
+
|
|
212
|
+
Returns:
|
|
213
|
+
The largest item, or the default value if the iterable is empty.
|
|
214
|
+
"""
|
|
215
|
+
|
|
176
216
|
@overload
|
|
177
217
|
def max[T](arg1: T, arg2: T, *args: T, key: Callable[[T], Any] | None = ...) -> T:
|
|
178
218
|
"""Return the largest item in an iterable or the largest of two or more arguments.
|
|
@@ -201,6 +241,25 @@ def min[T](iterable: Iterable[T], *, key: Callable[[T], Any] | None = ...) -> T:
|
|
|
201
241
|
"""
|
|
202
242
|
...
|
|
203
243
|
|
|
244
|
+
@overload
|
|
245
|
+
def min(
|
|
246
|
+
iterable: Iterable[builtins.int | builtins.float],
|
|
247
|
+
*,
|
|
248
|
+
default: builtins.int | builtins.float = ...,
|
|
249
|
+
key: Callable[[builtins.int | builtins.float], Any] | None = ...,
|
|
250
|
+
) -> builtins.int | builtins.float:
|
|
251
|
+
"""Return the smallest item in an iterable or the smallest of two or more arguments.
|
|
252
|
+
|
|
253
|
+
Args:
|
|
254
|
+
iterable: The iterable to evaluate.
|
|
255
|
+
default: The default value to return if the iterable is empty.
|
|
256
|
+
key: A function of one argument that is used to extract a comparison key from each element.
|
|
257
|
+
|
|
258
|
+
Returns:
|
|
259
|
+
The smallest item, or the default value if the iterable is empty.
|
|
260
|
+
"""
|
|
261
|
+
...
|
|
262
|
+
|
|
204
263
|
@overload
|
|
205
264
|
def min[T](arg1: T, arg2: T, *args: T, key: Callable[[T], Any] | None = ...) -> T:
|
|
206
265
|
"""Return the smallest item in an iterable or the smallest of two or more arguments.
|
|
@@ -216,6 +275,19 @@ def min[T](arg1: T, arg2: T, *args: T, key: Callable[[T], Any] | None = ...) ->
|
|
|
216
275
|
"""
|
|
217
276
|
...
|
|
218
277
|
|
|
278
|
+
def next[T](iterator: Iterator[T]) -> T:
|
|
279
|
+
"""Retrieve the next item from an iterator.
|
|
280
|
+
|
|
281
|
+
Errors if the iterator is exhausted.
|
|
282
|
+
|
|
283
|
+
Args:
|
|
284
|
+
iterator: The iterator to retrieve the next item from.
|
|
285
|
+
|
|
286
|
+
Returns:
|
|
287
|
+
The next item from the iterator.
|
|
288
|
+
"""
|
|
289
|
+
...
|
|
290
|
+
|
|
219
291
|
@overload
|
|
220
292
|
def range(stop: builtins.int) -> builtins.range:
|
|
221
293
|
"""Return an immutable sequence of numbers from 0 to stop.
|
|
@@ -154,3 +154,36 @@ def log(x: float, base: float = ...) -> float:
|
|
|
154
154
|
The logarithm of x to the specified base.
|
|
155
155
|
"""
|
|
156
156
|
...
|
|
157
|
+
|
|
158
|
+
def sqrt(x: float) -> float:
|
|
159
|
+
"""Compute the square root of x.
|
|
160
|
+
|
|
161
|
+
Args:
|
|
162
|
+
x: A non-negative numeric value.
|
|
163
|
+
|
|
164
|
+
Returns:
|
|
165
|
+
The square root of x.
|
|
166
|
+
"""
|
|
167
|
+
...
|
|
168
|
+
|
|
169
|
+
def degrees(x: float) -> float:
|
|
170
|
+
"""Convert radians to degrees.
|
|
171
|
+
|
|
172
|
+
Args:
|
|
173
|
+
x: An angle in radians.
|
|
174
|
+
|
|
175
|
+
Returns:
|
|
176
|
+
The angle in degrees.
|
|
177
|
+
"""
|
|
178
|
+
...
|
|
179
|
+
|
|
180
|
+
def radians(x: float) -> float:
|
|
181
|
+
"""Convert degrees to radians.
|
|
182
|
+
|
|
183
|
+
Args:
|
|
184
|
+
x: An angle in degrees.
|
|
185
|
+
|
|
186
|
+
Returns:
|
|
187
|
+
The angle in radians.
|
|
188
|
+
"""
|
|
189
|
+
...
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
# Builtins
|
|
2
2
|
Sonolus.py comes with support for a number of built-in functions.
|
|
3
|
+
The supported functions and parameters are listed below.
|
|
3
4
|
|
|
4
5
|
- `abs(x)`
|
|
5
6
|
- `bool(object)`
|
|
@@ -10,11 +11,13 @@ Sonolus.py comes with support for a number of built-in functions.
|
|
|
10
11
|
- `int(x)` (for a num argument)
|
|
11
12
|
- `isinstance(object, classinfo)`
|
|
12
13
|
- `issubclass(class, classinfo)`
|
|
14
|
+
- `iter(iterable)`
|
|
13
15
|
- `len(s)`
|
|
14
|
-
- `map(function, iterable)`
|
|
15
|
-
|
|
16
|
-
- `
|
|
17
|
-
- `
|
|
16
|
+
- `map(function, iterable)`
|
|
17
|
+
- `max(iterable, *, default=..., key=None)`, `max(arg1, arg2, *args, key=None)`
|
|
18
|
+
- `min(iterable, *, default=..., key=None)`, `min(arg1, arg2, *args, key=None)`
|
|
19
|
+
- `next(iterator)`
|
|
20
|
+
- `sum(iterable, start=0)`
|
|
18
21
|
- `range(stop)`, `range(start, stop[, step])`
|
|
19
22
|
- `reversed(seq)`
|
|
20
23
|
- `round(number[, ndigits])`
|
|
@@ -38,6 +41,9 @@ Sonolus.py also comes with support for some standard library modules.
|
|
|
38
41
|
- `ceil(x)`
|
|
39
42
|
- `trunc(x)`
|
|
40
43
|
- `log(x[, base])`
|
|
44
|
+
- `sqrt(x)`
|
|
45
|
+
- `degrees(x)`
|
|
46
|
+
- `radians(x)`
|
|
41
47
|
- `pi`
|
|
42
48
|
- `e`
|
|
43
49
|
- `tau`
|
|
@@ -15,6 +15,13 @@ To build the project, run the following command in the root directory of your pr
|
|
|
15
15
|
sonolus-py build
|
|
16
16
|
```
|
|
17
17
|
|
|
18
|
+
## Checking for errors without building
|
|
19
|
+
To check for errors, run the following command in the root directory of your project:
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
sonolus-py check
|
|
23
|
+
```
|
|
24
|
+
|
|
18
25
|
## Outputting the level schema
|
|
19
26
|
To output the level schema of the project, run the following command in the root directory of your project:
|
|
20
27
|
|
|
@@ -25,4 +32,4 @@ sonolus-py schema
|
|
|
25
32
|
## Programmatic usage
|
|
26
33
|
The same functionality can be accessed programmatically as methods of a project.
|
|
27
34
|
|
|
28
|
-
See [Project]
|
|
35
|
+
See [Project](../reference/sonolus.script.project.md) for more information.
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
# Constructs
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Sonolus.py functions as a compiler from Python to Sonolus nodes. While most standard Python constructs are supported,
|
|
4
|
+
there are some limitations compared to standard Python. The following sections outline what Sonolus.py supports and
|
|
5
|
+
how it differs from standard Python.
|
|
4
6
|
|
|
5
7
|
## Key Differences
|
|
6
8
|
|
|
@@ -38,6 +40,7 @@ The following constructs are supported in Sonolus.py:
|
|
|
38
40
|
- Variables: `a`, `b`, `c`
|
|
39
41
|
- Lambda: `lambda a, b: a + b`
|
|
40
42
|
- Assignment Expression: `(a := b)`
|
|
43
|
+
- Generator Expression: `(x for x in iterable if condition)`
|
|
41
44
|
- Statements:
|
|
42
45
|
- Simple Statements:
|
|
43
46
|
- Assignments:
|
|
@@ -53,6 +56,7 @@ The following constructs are supported in Sonolus.py:
|
|
|
53
56
|
- Break: `break`
|
|
54
57
|
- Continue: `continue`
|
|
55
58
|
- Return: `return <value>`
|
|
59
|
+
- Yield: `yield <value>`, `yield from <iterable>`
|
|
56
60
|
- Import: `import <module>`, `from <module> import <name>` (only outside of functions)
|
|
57
61
|
- Compound Statements:
|
|
58
62
|
- If: `if <condition>:`, `elif <condition>:`, `else:`
|
|
@@ -11,8 +11,12 @@ the constants `None`, `Ellipsis`, and `NotImplemented`.
|
|
|
11
11
|
`Num` is the numeric and boolean type in Sonolus.py. It is interchangeable with `int`, `float`, and `bool`.
|
|
12
12
|
Sonolus.py will treat any of these types as `Num`, but it's recommended to use what's appropriate for clarity.
|
|
13
13
|
|
|
14
|
+
Typically, `Num` isn't directly used in code since `int`, `float`, and `bool` are more specific and easier to read.
|
|
15
|
+
The main exception is for instance checking (`isinstance` or `match` patterns), where `Num` is the only supported
|
|
16
|
+
way to check for numeric or boolean values.
|
|
17
|
+
|
|
14
18
|
The Sonolus app uses 32-bit floating-point numbers for all numeric values, so precision may be lower compared to Python
|
|
15
|
-
when running
|
|
19
|
+
when running within Sonolus.
|
|
16
20
|
|
|
17
21
|
NaN and values outside the range of 32-bit floating-point numbers are not supported.
|
|
18
22
|
|
|
@@ -114,6 +118,16 @@ a2 = Array[int, 0]()
|
|
|
114
118
|
a3 = +Array[int, 3] # Create a zero-initialized array
|
|
115
119
|
```
|
|
116
120
|
|
|
121
|
+
For type checker compatibility, `Literal` or [`Dim`][sonolus.script.array.Dim] can also be used to specify the size of
|
|
122
|
+
the array:
|
|
123
|
+
|
|
124
|
+
```python
|
|
125
|
+
from sonolus.script.array import Dim
|
|
126
|
+
|
|
127
|
+
a1 = Array[int, Dim(3)](1, 2, 3)
|
|
128
|
+
a2 = Array[int, Literal[3]](1, 2, 3)
|
|
129
|
+
```
|
|
130
|
+
|
|
117
131
|
If at least one element is provided, the element type and size can be inferred:
|
|
118
132
|
|
|
119
133
|
```python
|
|
@@ -609,18 +623,14 @@ class _FilteringIterator[T, Fn](Record, SonolusIterator):
|
|
|
609
623
|
fn: Fn
|
|
610
624
|
iterator: T
|
|
611
625
|
|
|
612
|
-
def
|
|
613
|
-
while
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
return self.iterator.get()
|
|
621
|
-
|
|
622
|
-
def advance(self):
|
|
623
|
-
self.iterator.advance()
|
|
626
|
+
def next(self) -> Maybe[T]:
|
|
627
|
+
while True:
|
|
628
|
+
value = self.iterator.next()
|
|
629
|
+
if value.is_nothing:
|
|
630
|
+
return Nothing
|
|
631
|
+
inside = value.get()
|
|
632
|
+
if self.fn(inside):
|
|
633
|
+
return Some(inside)
|
|
624
634
|
|
|
625
635
|
|
|
626
636
|
def my_filter[T, Fn](iterable: T, fn: Fn) -> T:
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Sonolus.py
|
|
2
|
+
Sonolus.py is a Python library for creating Sonolus engines.
|
|
3
|
+
|
|
4
|
+
## Installation
|
|
5
|
+
Sonolus.py is available on PyPI and can be installed using a package manager like pip.
|
|
6
|
+
|
|
7
|
+
=== "pip"
|
|
8
|
+
```bash
|
|
9
|
+
pip install sonolus.py
|
|
10
|
+
```
|
|
11
|
+
=== "uv"
|
|
12
|
+
```bash
|
|
13
|
+
uv add sonolus.py
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## Getting Started
|
|
17
|
+
Example Projects:
|
|
18
|
+
|
|
19
|
+
- [pydori](https://github.com/qwewqa/pydori): A Bandori-like engine designed to be an example project for Sonolus.py.
|
|
20
|
+
|
|
21
|
+
New Project Template: [sonolus.py-template-project](https://github.com/qwewqa/sonolus.py-template-project)
|
|
22
|
+
|
|
23
|
+
## Documentation
|
|
24
|
+
|
|
25
|
+
- [Overview](overview.md): High-level overview of Sonolus.py.
|
|
26
|
+
- [Concepts](concepts/index.md): Detailed information on concepts and usage.
|
|
27
|
+
- [Reference](reference/index.md): Detailed information on included classes and functions.
|
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
# Overview
|
|
2
|
+
|
|
3
|
+
Sonolus.py is a Python library for creating Sonolus engines. This page provides an overview of the key functionality
|
|
4
|
+
available in the library. For more detailed information, see the [Concepts](concepts/index.md) and
|
|
5
|
+
[Reference](reference/index.md) sections.
|
|
6
|
+
|
|
7
|
+
## Language
|
|
8
|
+
|
|
9
|
+
Sonolus.py functions by compiling Python code into Sonolus nodes. As such, it supports a subset of Python including
|
|
10
|
+
most syntax and a portion of the standard library. Additionally, Sonolus.py provides its own library of types and
|
|
11
|
+
functions that are specifically designed for use in Sonolus engines.
|
|
12
|
+
|
|
13
|
+
### Syntax
|
|
14
|
+
|
|
15
|
+
Most Python syntax is supported, but there are a few limitations. The primary restrictions are:
|
|
16
|
+
|
|
17
|
+
- Destructuring assignment with the `*` operator is unsupported.
|
|
18
|
+
- Sequence (list and array) `match` patterns with the `*` operator are unsupported.
|
|
19
|
+
- Mapping (dict) `match` patterns are unsupported.
|
|
20
|
+
- Within functions, `import` statements are unsupported.
|
|
21
|
+
- The `global` and `nonlocal` keywords are unsupported.
|
|
22
|
+
- Exception related statements (`try`, `except`, `finally`, `raise`) are unsupported.
|
|
23
|
+
|
|
24
|
+
### Compile Time Evaluation
|
|
25
|
+
|
|
26
|
+
Sonolus.py will evaluate some expressions at compile time such as basic arithmetic operations on constants,
|
|
27
|
+
boolean logical operations (`and`, `or`, `not`) on constants, and type checks (`isinstance`, `issubclass`).
|
|
28
|
+
|
|
29
|
+
In control flow constructs like `if` and `match`, Sonolus.py may determine some branches to be unreachable at compile
|
|
30
|
+
and eliminate them without evaluating them. This allows code like the following to compile successfully:
|
|
31
|
+
|
|
32
|
+
```python
|
|
33
|
+
a = 1
|
|
34
|
+
if isinstance(a, Vec2):
|
|
35
|
+
# This branch is eliminated at compile time.
|
|
36
|
+
# If it were not, compilation would fail because `a` has no attribute `x`.
|
|
37
|
+
debug_log(a.x)
|
|
38
|
+
else:
|
|
39
|
+
debug_log(a)
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### Variables
|
|
43
|
+
|
|
44
|
+
Numeric (`int`, `float`, `bool`) variables are fully supported and can be freely assigned and modified.
|
|
45
|
+
|
|
46
|
+
All other variables have the restriction that if the compiler finds multiple possible values for a variable, it may
|
|
47
|
+
not be accessed. For example, the following code will not compile:
|
|
48
|
+
|
|
49
|
+
```python
|
|
50
|
+
if random() < 0.5:
|
|
51
|
+
a = Vec2(1, 2)
|
|
52
|
+
else:
|
|
53
|
+
a = Vec2(3, 4)
|
|
54
|
+
# This will not compile because `a` could have been defined in either branch.
|
|
55
|
+
debug_log(a.x)
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### Function Returns
|
|
59
|
+
|
|
60
|
+
Similar to variables, functions returning `int`, `float`, or `bool` can have any number of return statements. Functions
|
|
61
|
+
returning `None` may also have any number of `return` or `return None` statements.
|
|
62
|
+
|
|
63
|
+
Functions returning any other type must have exactly one `return` statement, and it must be the only exit point of the
|
|
64
|
+
function. It is ok, however, for a function to have other `return` statements that are eliminated at compile time.
|
|
65
|
+
For example, the following code will compile successfully:
|
|
66
|
+
|
|
67
|
+
```python
|
|
68
|
+
def fn(a: int | Vec2):
|
|
69
|
+
if isinstance(a, Vec2):
|
|
70
|
+
return a.x + a.y
|
|
71
|
+
else:
|
|
72
|
+
return a * 2
|
|
73
|
+
|
|
74
|
+
fn(123)
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## Types
|
|
78
|
+
|
|
79
|
+
### Numbers
|
|
80
|
+
|
|
81
|
+
Sonolus.py supports `int`, `float`, and `bool` types and most of the standard operations such as mathematical operations
|
|
82
|
+
(`+`, `-`, `*`, `/`, `//`, `%`), comparisons (`<`, `<=`, `>`, `>=`, `==`, `!=`), and boolean operations
|
|
83
|
+
(`and`, `or`, `not`).
|
|
84
|
+
|
|
85
|
+
### Record
|
|
86
|
+
|
|
87
|
+
[`Record`](reference/sonolus.script.record.md) is the main way to define custom types in Sonolus.py.
|
|
88
|
+
It functions similarly to a data class and provides a way to define a type with named fields:
|
|
89
|
+
|
|
90
|
+
```python
|
|
91
|
+
class MyRecord(Record):
|
|
92
|
+
a: int
|
|
93
|
+
b: float
|
|
94
|
+
|
|
95
|
+
record_1 = MyRecord(1, b=2.3)
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
Records may also be generic:
|
|
99
|
+
|
|
100
|
+
```python
|
|
101
|
+
class MyGenericRecord[T](Record):
|
|
102
|
+
value: T
|
|
103
|
+
|
|
104
|
+
record_1 = MyGenericRecord[int](123)
|
|
105
|
+
record_2 = MyGenericRecord(MyRecord(4, 5.6)) # Type arguments are inferred
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
Record arguments are retained by reference, so modifying the original record will also modify the record in the array:
|
|
109
|
+
|
|
110
|
+
```python
|
|
111
|
+
record_1 = MyRecord(1, 2.3)
|
|
112
|
+
record_2 = MyGenericRecord(record_1)
|
|
113
|
+
record_2.value.a = 789 # This also affects `record_1` since they're the same object.
|
|
114
|
+
assert record_1.a == record_2.value.a == 789
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### Array
|
|
118
|
+
|
|
119
|
+
[`Array`](reference/sonolus.script.array.md) is a type that represents a fixed-size array of elements of a
|
|
120
|
+
specific type:
|
|
121
|
+
|
|
122
|
+
```python
|
|
123
|
+
array_1 = Array[int, 3](1, 2, 3)
|
|
124
|
+
array_2 = Array(4, 5, 6) # Type arguments are inferred
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
When given record or array values as arguments, the array constructor will copy them:
|
|
128
|
+
|
|
129
|
+
```python
|
|
130
|
+
record_1 = MyRecord(1, 2.5)
|
|
131
|
+
array_1 = Array(record_1)
|
|
132
|
+
array_1[0].a = 789 # This has no effect on `record_1` since it was copied.
|
|
133
|
+
assert record_1.a == 1
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
### Operations
|
|
137
|
+
|
|
138
|
+
This section is an overview of the operations available for records and arrays. For full details see the
|
|
139
|
+
[Record documentation](reference/sonolus.script.record.md) and [Array documentation](reference/sonolus.script.array.md).
|
|
140
|
+
|
|
141
|
+
Records and arrays come with the `==` and `!=` operators predefined to compare their values for equality:
|
|
142
|
+
|
|
143
|
+
```python
|
|
144
|
+
assert MyRecord(1, 2.3) == MyRecord(1, 2.3)
|
|
145
|
+
assert Array(1, 2, 3) != Array(4, 5, 6)
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
The unary `+` operator makes a copy of a record or array, creating a new instance with the same values:
|
|
149
|
+
|
|
150
|
+
```python
|
|
151
|
+
record_2 = +record_1
|
|
152
|
+
array_2 = +array_1
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
Similarly, a new zero initialized value can be created using the unary `+` operator on a record or array type:
|
|
156
|
+
|
|
157
|
+
```python
|
|
158
|
+
record_1 = +MyRecord
|
|
159
|
+
record_2 = +Array[int, 3]
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
Records and arrays can be mutated in-place using the `@=` operator:
|
|
163
|
+
|
|
164
|
+
```python
|
|
165
|
+
record_1 @= MyRecord(1, 2.3)
|
|
166
|
+
array_1 @= Array(4, 5, 6)
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
Record fields and array elements of numeric types can be set using the `=` operator:
|
|
170
|
+
|
|
171
|
+
```python
|
|
172
|
+
record_1.a = 123
|
|
173
|
+
array_1[1] = 456
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
Setting a record field that's a record or array using the `=` operator will modify the field in-place:
|
|
177
|
+
|
|
178
|
+
```python
|
|
179
|
+
record_1 = MyRecord(1, 2.3)
|
|
180
|
+
record_2 = MyGenericRecord(record_1)
|
|
181
|
+
record_2.value = MyRecord(4, 5.6) # This modifies `record_1` in-place.
|
|
182
|
+
assert record_1 == record_2.value == MyRecord(4, 5.6)
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
Setting an array element that's a record or array using the `=` operator will also modify the element in-place:
|
|
186
|
+
|
|
187
|
+
```python
|
|
188
|
+
array_1 = Array(MyRecord(1, 2.3))
|
|
189
|
+
record_1 = array_1[0]
|
|
190
|
+
array_1[0] = MyRecord(4, 5.6) # This modifies `record_1` in-place.
|
|
191
|
+
assert record_1 == array_1[0] == MyRecord(4, 5.6)
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
### Other Types
|
|
195
|
+
Sonolus.py has limited support for other types of values such as strings, tuples, and functions. These have restrictions
|
|
196
|
+
such as not being valid as Record field types or Array element types.
|
|
197
|
+
|
|
198
|
+
## Modules
|
|
199
|
+
Sonolus.py provides a number of built-in modules that can be used in Sonolus engines. These include:
|
|
200
|
+
|
|
201
|
+
- Project
|
|
202
|
+
- [Project](reference/sonolus.script.project.md): Configuration for a Sonolus.py project.
|
|
203
|
+
- [Engine](reference/sonolus.script.engine.md): Configuration for a Sonolus.py engine.
|
|
204
|
+
- [Level](reference/sonolus.script.level.md): Configuration for a Sonolus.py level.
|
|
205
|
+
- [Archetype](reference/sonolus.script.archetype.md): Engine archetypes and their configuration.
|
|
206
|
+
- Core Types
|
|
207
|
+
- [Array](reference/sonolus.script.array.md): Fixed-size arrays.
|
|
208
|
+
- [Num](reference/sonolus.script.num.md): Numeric values (int, float, bool).
|
|
209
|
+
- [Record](reference/sonolus.script.record.md): User-defined types with named fields.
|
|
210
|
+
- Engine Resources
|
|
211
|
+
- [Bucket](reference/sonolus.script.bucket.md): Judgment buckets.
|
|
212
|
+
- [Effect](reference/sonolus.script.effect.md): Sound effects.
|
|
213
|
+
- [Instruction](reference/sonolus.script.instruction.md): Tutorial instructions.
|
|
214
|
+
- [Options](reference/sonolus.script.options.md): Engine options.
|
|
215
|
+
- [Particle](reference/sonolus.script.particle.md): Particle effects.
|
|
216
|
+
- [Sprite](reference/sonolus.script.sprite.md): Sprites and skins.
|
|
217
|
+
- [UI](reference/sonolus.script.ui.md): Engine ui configuration.
|
|
218
|
+
- Sonolus Runtime
|
|
219
|
+
- [Globals](reference/sonolus.script.globals.md): Level data and level memory definition.
|
|
220
|
+
- [Runtime](reference/sonolus.script.runtime.md): Runtime functions like time and ui configuration.
|
|
221
|
+
- [Stream](reference/sonolus.script.stream.md): Data streams recorded in play mode and used in watch mode.
|
|
222
|
+
- [Text](reference/sonolus.script.text.md): Standard Sonolus text constants.
|
|
223
|
+
- [Timing](reference/sonolus.script.timing.md): Beat and timescale related functions.
|
|
224
|
+
- Python Builtins
|
|
225
|
+
- [builtins](reference/builtins.md): Supported Python builtins.
|
|
226
|
+
- [math](reference/math.md): Supported math functions.
|
|
227
|
+
- [random](reference/random.md): Supported random functions.
|
|
228
|
+
- Utilities
|
|
229
|
+
- [ArrayLike](reference/sonolus.script.array_like.md): Mixin for array functionality.
|
|
230
|
+
- [Containers](reference/sonolus.script.containers.md): Additional container types like `VarArray` and `ArrayMap`.
|
|
231
|
+
- [Debug](reference/sonolus.script.debug.md): Debugging utilities.
|
|
232
|
+
- [Easing](reference/sonolus.script.easing.md): Easing functions for animations.
|
|
233
|
+
- [Interval](reference/sonolus.script.interval.md): Mathematical intervals.
|
|
234
|
+
- [Iterator](reference/sonolus.script.iterator.md): Iterators over collections.
|
|
235
|
+
- [Maybe](reference/sonolus.script.maybe.md): Optional function return values.
|
|
236
|
+
- [Printing](reference/sonolus.script.printing.md): Preview mode number printing.
|
|
237
|
+
- [Quad](reference/sonolus.script.quad.md): Quadrilaterals.
|
|
238
|
+
- [Transform](reference/sonolus.script.transform.md): Transformations like translation, rotation, and scaling.
|
|
239
|
+
- [Values](reference/sonolus.script.values.md): Generic utilities for working with values.
|
|
240
|
+
- [Vec](reference/sonolus.script.vec.md): The Vec2 type and related functions.
|
|
241
|
+
|
|
242
|
+
For more details, see the [Reference](reference/index.md) section.
|
|
243
|
+
|
|
244
|
+
## Getting Started
|
|
245
|
+
|
|
246
|
+
Before making a new Sonolus.py engine, it may be helpful to look at some existing projects to see how they use
|
|
247
|
+
the library:
|
|
248
|
+
|
|
249
|
+
- [pydori](https://github.com/qwewqa/pydori): A Bandori-like engine designed to be an example project for Sonolus.py.
|
|
250
|
+
|
|
251
|
+
If you're starting a new project, you'll probably want to use the
|
|
252
|
+
[new project template](https://github.com/qwewqa/sonolus.py-template-project).
|
|
@@ -70,6 +70,7 @@ markdown_extensions:
|
|
|
70
70
|
alternate_style: true
|
|
71
71
|
nav:
|
|
72
72
|
- index.md
|
|
73
|
+
- Overview: overview.md
|
|
73
74
|
- Concepts:
|
|
74
75
|
- concepts/index.md
|
|
75
76
|
- concepts/types.md
|
|
@@ -97,6 +98,7 @@ nav:
|
|
|
97
98
|
- reference/sonolus.script.interval.md
|
|
98
99
|
- reference/sonolus.script.iterator.md
|
|
99
100
|
- reference/sonolus.script.level.md
|
|
101
|
+
- reference/sonolus.script.maybe.md
|
|
100
102
|
- reference/sonolus.script.metadata.md
|
|
101
103
|
- reference/sonolus.script.num.md
|
|
102
104
|
- reference/sonolus.script.options.md
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "sonolus.py"
|
|
3
|
-
version = "0.
|
|
3
|
+
version = "0.4.0"
|
|
4
4
|
description = "Sonolus engine development in Python"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
requires-python = ">=3.12"
|
|
@@ -18,7 +18,7 @@ target-version = "py312"
|
|
|
18
18
|
[tool.ruff.lint]
|
|
19
19
|
preview = true
|
|
20
20
|
select = ["F", "E", "W", "I", "N", "D", "UP", "YTT", "B", "A", "COM", "C4", "DTZ", "PIE", "PT", "Q", "SLOT", "SIM", "PTH", "PL", "PERF", "FURB", "LOG", "RUF"]
|
|
21
|
-
ignore = ["E402", "D1", "COM812", "PLW2901", "PLW3201", "PLR6301", "PLC0415", "PLR2004", "PLR09", "SIM108", "FURB113", "A005", "B903"]
|
|
21
|
+
ignore = ["E402", "D1", "COM812", "PLW2901", "PLW3201", "PLR6301", "PLC0415", "PLR2004", "PLR09", "SIM108", "FURB113", "A005", "B903", "FURB118"]
|
|
22
22
|
|
|
23
23
|
[tool.ruff.lint.pydocstyle]
|
|
24
24
|
convention = "google"
|
|
@@ -29,6 +29,7 @@ build-backend = "hatchling.build"
|
|
|
29
29
|
|
|
30
30
|
[dependency-groups]
|
|
31
31
|
dev = [
|
|
32
|
+
"uv>=0.8.3",
|
|
32
33
|
"hypothesis>=6.115.3",
|
|
33
34
|
"pre-commit>=4.0.1",
|
|
34
35
|
"pytest-xdist>=3.6.1",
|
|
@@ -37,6 +38,7 @@ dev = [
|
|
|
37
38
|
"pytest-cov>=6.0.0",
|
|
38
39
|
"tox>=4.23.2",
|
|
39
40
|
"tox-uv>=1.16.0",
|
|
41
|
+
"ty"
|
|
40
42
|
]
|
|
41
43
|
docs = [
|
|
42
44
|
"mkdocs-material>=9.5.45",
|
|
@@ -61,3 +63,9 @@ deps = [
|
|
|
61
63
|
]
|
|
62
64
|
uv_python_preference = "managed"
|
|
63
65
|
commands = [["pytest", "tests", "-n", "auto"]]
|
|
66
|
+
|
|
67
|
+
[tool.ty.environment]
|
|
68
|
+
root = ["./sonolus"]
|
|
69
|
+
|
|
70
|
+
[tool.ty.src]
|
|
71
|
+
include = ["sonolus/script"]
|