sonolus.py 0.3.4__tar.gz → 0.4.1__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.1/.gitattributes +1 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/.github/workflows/publish.yaml +1 -1
- sonolus_py-0.4.1/.python-version +1 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/PKG-INFO +1 -1
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/doc_stubs/builtins.pyi +71 -59
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/docs/concepts/builtins.md +7 -4
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/docs/concepts/cli.md +7 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/docs/concepts/constructs.md +4 -2
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/docs/concepts/types.md +18 -12
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/docs/overview.md +105 -27
- sonolus_py-0.4.1/docs/reference/sonolus.script.maybe.md +3 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/mkdocs.yml +1 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/pyproject.toml +10 -2
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/backend/excepthook.py +30 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/backend/finalize.py +15 -1
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/backend/ops.py +4 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/backend/optimize/allocate.py +5 -5
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/backend/optimize/constant_evaluation.py +124 -19
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/backend/optimize/copy_coalesce.py +15 -12
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/backend/optimize/dead_code.py +7 -6
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/backend/optimize/dominance.py +2 -2
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/backend/optimize/flow.py +54 -8
- sonolus_py-0.4.1/sonolus/backend/optimize/inlining.py +244 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/backend/optimize/liveness.py +2 -2
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/backend/optimize/optimize.py +15 -1
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/backend/optimize/passes.py +11 -3
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/backend/optimize/simplify.py +137 -8
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/backend/optimize/ssa.py +47 -13
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/backend/place.py +5 -4
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/backend/utils.py +44 -16
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/backend/visitor.py +288 -17
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/build/cli.py +47 -19
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/build/compile.py +12 -5
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/build/engine.py +70 -1
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/build/level.py +3 -3
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/build/project.py +2 -2
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/script/archetype.py +12 -9
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/script/array.py +23 -18
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/script/array_like.py +26 -29
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/script/bucket.py +1 -1
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/script/containers.py +22 -26
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/script/debug.py +20 -43
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/script/effect.py +1 -1
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/script/globals.py +3 -3
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/script/instruction.py +2 -2
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/script/internal/builtin_impls.py +155 -28
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/script/internal/constant.py +13 -3
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/script/internal/context.py +46 -15
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/script/internal/impl.py +9 -3
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/script/internal/introspection.py +8 -1
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/script/internal/native.py +2 -2
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/script/internal/range.py +8 -11
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/script/internal/simulation_context.py +1 -1
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/script/internal/transient.py +2 -2
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/script/internal/value.py +41 -3
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/script/interval.py +13 -13
- sonolus_py-0.4.1/sonolus/script/iterator.py +131 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/script/level.py +2 -2
- sonolus_py-0.4.1/sonolus/script/maybe.py +241 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/script/num.py +29 -14
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/script/options.py +1 -1
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/script/particle.py +1 -1
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/script/project.py +24 -5
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/script/quad.py +15 -15
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/script/record.py +48 -44
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/script/runtime.py +22 -18
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/script/sprite.py +1 -1
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/script/stream.py +66 -82
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/script/transform.py +35 -34
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/script/values.py +10 -10
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/script/vec.py +21 -18
- sonolus_py-0.4.1/test_projects/pydori/level.py +158 -0
- sonolus_py-0.4.1/test_projects/pydori/lib/buckets.py +167 -0
- sonolus_py-0.4.1/test_projects/pydori/lib/connector.py +30 -0
- sonolus_py-0.4.1/test_projects/pydori/lib/effect.py +24 -0
- sonolus_py-0.4.1/test_projects/pydori/lib/layer.py +26 -0
- sonolus_py-0.4.1/test_projects/pydori/lib/layout.py +401 -0
- sonolus_py-0.4.1/test_projects/pydori/lib/note.py +374 -0
- sonolus_py-0.4.1/test_projects/pydori/lib/options.py +105 -0
- sonolus_py-0.4.1/test_projects/pydori/lib/particle.py +22 -0
- sonolus_py-0.4.1/test_projects/pydori/lib/skin.py +40 -0
- sonolus_py-0.4.1/test_projects/pydori/lib/stage.py +71 -0
- sonolus_py-0.4.1/test_projects/pydori/lib/streams.py +12 -0
- sonolus_py-0.4.1/test_projects/pydori/lib/ui.py +122 -0
- sonolus_py-0.4.1/test_projects/pydori/play/__init__.py +0 -0
- sonolus_py-0.4.1/test_projects/pydori/play/connector.py +87 -0
- sonolus_py-0.4.1/test_projects/pydori/play/event.py +15 -0
- sonolus_py-0.4.1/test_projects/pydori/play/input.py +35 -0
- sonolus_py-0.4.1/test_projects/pydori/play/mode.py +26 -0
- sonolus_py-0.4.1/test_projects/pydori/play/note.py +416 -0
- sonolus_py-0.4.1/test_projects/pydori/play/stage.py +63 -0
- sonolus_py-0.4.1/test_projects/pydori/preview/__init__.py +0 -0
- sonolus_py-0.4.1/test_projects/pydori/preview/connector.py +68 -0
- sonolus_py-0.4.1/test_projects/pydori/preview/event.py +75 -0
- sonolus_py-0.4.1/test_projects/pydori/preview/layout.py +278 -0
- sonolus_py-0.4.1/test_projects/pydori/preview/mode.py +19 -0
- sonolus_py-0.4.1/test_projects/pydori/preview/note.py +75 -0
- sonolus_py-0.4.1/test_projects/pydori/preview/stage.py +94 -0
- sonolus_py-0.4.1/test_projects/pydori/project.py +32 -0
- sonolus_py-0.4.1/test_projects/pydori/tutorial/__init__.py +0 -0
- sonolus_py-0.4.1/test_projects/pydori/tutorial/framework.py +137 -0
- sonolus_py-0.4.1/test_projects/pydori/tutorial/instructions.py +21 -0
- sonolus_py-0.4.1/test_projects/pydori/tutorial/intro.py +105 -0
- sonolus_py-0.4.1/test_projects/pydori/tutorial/mode.py +19 -0
- sonolus_py-0.4.1/test_projects/pydori/tutorial/navigate.py +9 -0
- sonolus_py-0.4.1/test_projects/pydori/tutorial/painting.py +125 -0
- sonolus_py-0.4.1/test_projects/pydori/tutorial/phases.py +367 -0
- sonolus_py-0.4.1/test_projects/pydori/tutorial/preprocess.py +9 -0
- sonolus_py-0.4.1/test_projects/pydori/tutorial/update.py +37 -0
- sonolus_py-0.4.1/test_projects/pydori/watch/__init__.py +0 -0
- sonolus_py-0.4.1/test_projects/pydori/watch/connector.py +76 -0
- sonolus_py-0.4.1/test_projects/pydori/watch/event.py +15 -0
- sonolus_py-0.4.1/test_projects/pydori/watch/mode.py +29 -0
- sonolus_py-0.4.1/test_projects/pydori/watch/note.py +233 -0
- sonolus_py-0.4.1/test_projects/pydori/watch/stage.py +68 -0
- sonolus_py-0.4.1/test_projects/pydori/watch/update_spawn.py +5 -0
- sonolus_py-0.4.1/tests/__init__.py +0 -0
- sonolus_py-0.4.1/tests/regressions/__init__.py +10 -0
- sonolus_py-0.4.1/tests/regressions/conftest.py +11 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_hold_connector_should_spawn_cfg +27 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_hold_connector_should_spawn_fast_nodes +60 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_hold_connector_should_spawn_fast_optimized_cfg +7 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_hold_connector_should_spawn_standard_nodes +36 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_hold_connector_should_spawn_standard_optimized_cfg +4 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_hold_connector_spawn_order_cfg +24 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_hold_connector_spawn_order_fast_nodes +46 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_hold_connector_spawn_order_fast_optimized_cfg +6 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_hold_connector_spawn_order_standard_nodes +30 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_hold_connector_spawn_order_standard_optimized_cfg +4 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_hold_connector_update_parallel_cfg +295 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_hold_connector_update_parallel_fast_nodes +1754 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_hold_connector_update_parallel_fast_optimized_cfg +149 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_hold_connector_update_parallel_standard_nodes +762 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_hold_connector_update_parallel_standard_optimized_cfg +25 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_hold_connector_update_sequential_cfg +180 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_hold_connector_update_sequential_fast_nodes +567 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_hold_connector_update_sequential_fast_optimized_cfg +60 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_hold_connector_update_sequential_standard_nodes +310 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_hold_connector_update_sequential_standard_optimized_cfg +24 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_hold_manager_touch_cfg +203 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_hold_manager_touch_fast_nodes +540 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_hold_manager_touch_fast_optimized_cfg +77 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_hold_manager_touch_standard_nodes +280 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_hold_manager_touch_standard_optimized_cfg +37 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_hold_manager_update_parallel_cfg +946 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_hold_manager_update_parallel_fast_nodes +4570 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_hold_manager_update_parallel_fast_optimized_cfg +470 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_hold_manager_update_parallel_standard_nodes +1923 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_hold_manager_update_parallel_standard_optimized_cfg +119 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_note_initialize_cfg +123 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_note_initialize_fast_nodes +310 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_note_initialize_fast_optimized_cfg +51 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_note_initialize_standard_nodes +105 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_note_initialize_standard_optimized_cfg +19 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_note_preprocess_cfg +308 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_note_preprocess_fast_nodes +1305 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_note_preprocess_fast_optimized_cfg +189 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_note_preprocess_standard_nodes +609 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_note_preprocess_standard_optimized_cfg +109 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_note_should_spawn_cfg +12 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_note_should_spawn_fast_nodes +27 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_note_should_spawn_fast_optimized_cfg +4 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_note_should_spawn_standard_nodes +19 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_note_should_spawn_standard_optimized_cfg +3 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_note_spawn_order_cfg +9 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_note_spawn_order_fast_nodes +13 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_note_spawn_order_fast_optimized_cfg +3 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_note_spawn_order_standard_nodes +13 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_note_spawn_order_standard_optimized_cfg +3 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_note_terminate_cfg +9 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_note_terminate_fast_nodes +13 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_note_terminate_fast_optimized_cfg +3 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_note_terminate_standard_nodes +13 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_note_terminate_standard_optimized_cfg +3 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_note_touch_cfg +8372 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_note_touch_fast_nodes +36519 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_note_touch_fast_optimized_cfg +4441 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_note_touch_standard_nodes +16029 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_note_touch_standard_optimized_cfg +1686 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_note_update_parallel_cfg +1813 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_note_update_parallel_fast_nodes +8309 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_note_update_parallel_fast_optimized_cfg +925 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_note_update_parallel_standard_nodes +3190 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_note_update_parallel_standard_optimized_cfg +289 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_note_update_sequential_cfg +1250 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_note_update_sequential_fast_nodes +5531 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_note_update_sequential_fast_optimized_cfg +666 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_note_update_sequential_standard_nodes +2225 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_note_update_sequential_standard_optimized_cfg +259 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_sim_line_should_spawn_cfg +27 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_sim_line_should_spawn_fast_nodes +60 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_sim_line_should_spawn_fast_optimized_cfg +7 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_sim_line_should_spawn_standard_nodes +36 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_sim_line_should_spawn_standard_optimized_cfg +4 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_sim_line_spawn_order_cfg +24 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_sim_line_spawn_order_fast_nodes +46 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_sim_line_spawn_order_fast_optimized_cfg +6 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_sim_line_spawn_order_standard_nodes +30 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_sim_line_spawn_order_standard_optimized_cfg +4 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_sim_line_update_parallel_cfg +443 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_sim_line_update_parallel_fast_nodes +2014 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_sim_line_update_parallel_fast_optimized_cfg +203 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_sim_line_update_parallel_standard_nodes +854 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_sim_line_update_parallel_standard_optimized_cfg +56 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_stage_preprocess_cfg +3238 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_stage_preprocess_fast_nodes +15388 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_stage_preprocess_fast_optimized_cfg +1658 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_stage_preprocess_standard_nodes +5748 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_stage_preprocess_standard_optimized_cfg +515 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_stage_should_spawn_cfg +9 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_stage_should_spawn_fast_nodes +10 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_stage_should_spawn_fast_optimized_cfg +3 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_stage_should_spawn_standard_nodes +10 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_stage_should_spawn_standard_optimized_cfg +3 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_stage_spawn_order_cfg +9 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_stage_spawn_order_fast_nodes +10 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_stage_spawn_order_fast_optimized_cfg +3 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_stage_spawn_order_standard_nodes +10 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_stage_spawn_order_standard_optimized_cfg +3 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_stage_touch_cfg +850 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_stage_touch_fast_nodes +3302 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_stage_touch_fast_optimized_cfg +428 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_stage_touch_standard_nodes +1636 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_stage_touch_standard_optimized_cfg +188 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_stage_update_parallel_cfg +130 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_stage_update_parallel_fast_nodes +391 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_stage_update_parallel_fast_optimized_cfg +36 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_stage_update_parallel_standard_nodes +261 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_stage_update_parallel_standard_optimized_cfg +15 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_stage_update_sequential_cfg +34 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_stage_update_sequential_fast_nodes +16 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_stage_update_sequential_fast_optimized_cfg +4 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_stage_update_sequential_standard_nodes +16 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_stage_update_sequential_standard_optimized_cfg +4 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_unscored_note_initialize_cfg +123 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_unscored_note_initialize_fast_nodes +310 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_unscored_note_initialize_fast_optimized_cfg +51 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_unscored_note_initialize_standard_nodes +105 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_unscored_note_initialize_standard_optimized_cfg +19 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_unscored_note_preprocess_cfg +308 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_unscored_note_preprocess_fast_nodes +1305 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_unscored_note_preprocess_fast_optimized_cfg +189 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_unscored_note_preprocess_standard_nodes +609 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_unscored_note_preprocess_standard_optimized_cfg +109 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_unscored_note_should_spawn_cfg +12 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_unscored_note_should_spawn_fast_nodes +27 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_unscored_note_should_spawn_fast_optimized_cfg +4 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_unscored_note_should_spawn_standard_nodes +19 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_unscored_note_should_spawn_standard_optimized_cfg +3 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_unscored_note_spawn_order_cfg +9 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_unscored_note_spawn_order_fast_nodes +13 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_unscored_note_spawn_order_fast_optimized_cfg +3 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_unscored_note_spawn_order_standard_nodes +13 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_unscored_note_spawn_order_standard_optimized_cfg +3 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_unscored_note_terminate_cfg +9 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_unscored_note_terminate_fast_nodes +13 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_unscored_note_terminate_fast_optimized_cfg +3 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_unscored_note_terminate_standard_nodes +13 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_unscored_note_terminate_standard_optimized_cfg +3 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_unscored_note_touch_cfg +8372 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_unscored_note_touch_fast_nodes +36519 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_unscored_note_touch_fast_optimized_cfg +4441 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_unscored_note_touch_standard_nodes +16029 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_unscored_note_touch_standard_optimized_cfg +1686 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_unscored_note_update_parallel_cfg +1813 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_unscored_note_update_parallel_fast_nodes +8309 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_unscored_note_update_parallel_fast_optimized_cfg +925 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_unscored_note_update_parallel_standard_nodes +3190 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_unscored_note_update_parallel_standard_optimized_cfg +289 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_unscored_note_update_sequential_cfg +1250 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_unscored_note_update_sequential_fast_nodes +5531 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_unscored_note_update_sequential_fast_optimized_cfg +666 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_unscored_note_update_sequential_standard_nodes +2225 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_play_unscored_note_update_sequential_standard_optimized_cfg +259 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_preview_preview_bpm_change_preprocess_cfg +11 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_preview_preview_bpm_change_preprocess_fast_nodes +30 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_preview_preview_bpm_change_preprocess_fast_optimized_cfg +5 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_preview_preview_bpm_change_preprocess_standard_nodes +22 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_preview_preview_bpm_change_preprocess_standard_optimized_cfg +4 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_preview_preview_bpm_change_render_cfg +437 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_preview_preview_bpm_change_render_fast_nodes +1484 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_preview_preview_bpm_change_render_fast_optimized_cfg +157 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_preview_preview_bpm_change_render_standard_nodes +447 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_preview_preview_bpm_change_render_standard_optimized_cfg +24 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_preview_preview_hold_connector_render_cfg +431 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_preview_preview_hold_connector_render_fast_nodes +1541 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_preview_preview_hold_connector_render_fast_optimized_cfg +163 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_preview_preview_hold_connector_render_standard_nodes +500 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_preview_preview_hold_connector_render_standard_optimized_cfg +25 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_preview_preview_note_preprocess_cfg +31 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_preview_preview_note_preprocess_fast_nodes +165 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_preview_preview_note_preprocess_fast_optimized_cfg +23 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_preview_preview_note_preprocess_standard_nodes +125 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_preview_preview_note_preprocess_standard_optimized_cfg +18 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_preview_preview_note_render_cfg +1101 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_preview_preview_note_render_fast_nodes +4337 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_preview_preview_note_render_fast_optimized_cfg +503 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_preview_preview_note_render_standard_nodes +1271 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_preview_preview_note_render_standard_optimized_cfg +125 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_preview_preview_sim_line_render_cfg +217 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_preview_preview_sim_line_render_fast_nodes +800 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_preview_preview_sim_line_render_fast_optimized_cfg +79 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_preview_preview_sim_line_render_standard_nodes +304 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_preview_preview_sim_line_render_standard_optimized_cfg +17 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_preview_preview_stage_preprocess_cfg +1109 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_preview_preview_stage_preprocess_fast_nodes +850 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_preview_preview_stage_preprocess_fast_optimized_cfg +106 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_preview_preview_stage_preprocess_standard_nodes +276 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_preview_preview_stage_preprocess_standard_optimized_cfg +35 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_preview_preview_stage_render_cfg +1156 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_preview_preview_stage_render_fast_nodes +4001 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_preview_preview_stage_render_fast_optimized_cfg +485 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_preview_preview_stage_render_standard_nodes +797 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_preview_preview_stage_render_standard_optimized_cfg +55 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_preview_preview_timescale_change_preprocess_cfg +11 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_preview_preview_timescale_change_preprocess_fast_nodes +30 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_preview_preview_timescale_change_preprocess_fast_optimized_cfg +5 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_preview_preview_timescale_change_preprocess_standard_nodes +22 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_preview_preview_timescale_change_preprocess_standard_optimized_cfg +4 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_preview_preview_timescale_change_render_cfg +254 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_preview_preview_timescale_change_render_fast_nodes +817 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_preview_preview_timescale_change_render_fast_optimized_cfg +82 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_preview_preview_timescale_change_render_standard_nodes +225 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_preview_preview_timescale_change_render_standard_optimized_cfg +8 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_preview_preview_unscored_note_preprocess_cfg +31 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_preview_preview_unscored_note_preprocess_fast_nodes +165 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_preview_preview_unscored_note_preprocess_fast_optimized_cfg +23 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_preview_preview_unscored_note_preprocess_standard_nodes +125 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_preview_preview_unscored_note_preprocess_standard_optimized_cfg +18 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_preview_preview_unscored_note_render_cfg +1101 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_preview_preview_unscored_note_render_fast_nodes +4337 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_preview_preview_unscored_note_render_fast_optimized_cfg +503 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_preview_preview_unscored_note_render_standard_nodes +1271 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_preview_preview_unscored_note_render_standard_optimized_cfg +125 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_tutorial_global_navigate_fast_cfg +55 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_tutorial_global_navigate_fast_nodes +155 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_tutorial_global_navigate_fast_optimized_cfg +23 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_tutorial_global_navigate_standard_cfg +55 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_tutorial_global_navigate_standard_nodes +112 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_tutorial_global_navigate_standard_optimized_cfg +16 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_tutorial_global_preprocess_fast_cfg +2552 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_tutorial_global_preprocess_fast_nodes +10188 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_tutorial_global_preprocess_fast_optimized_cfg +1089 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_tutorial_global_preprocess_standard_cfg +2552 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_tutorial_global_preprocess_standard_nodes +4214 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_tutorial_global_preprocess_standard_optimized_cfg +342 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_tutorial_global_update_fast_cfg +37959 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_tutorial_global_update_fast_nodes +196268 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_tutorial_global_update_fast_optimized_cfg +19193 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_tutorial_global_update_standard_cfg +37959 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_tutorial_global_update_standard_nodes +123333 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_tutorial_global_update_standard_optimized_cfg +2324 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_global_update_spawn_fast_cfg +9 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_global_update_spawn_fast_nodes +13 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_global_update_spawn_fast_optimized_cfg +3 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_global_update_spawn_standard_cfg +9 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_global_update_spawn_standard_nodes +13 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_global_update_spawn_standard_optimized_cfg +3 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_hold_connector_despawn_time_cfg +18 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_hold_connector_despawn_time_fast_nodes +46 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_hold_connector_despawn_time_fast_optimized_cfg +6 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_hold_connector_despawn_time_standard_nodes +30 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_hold_connector_despawn_time_standard_optimized_cfg +4 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_hold_connector_spawn_time_cfg +24 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_hold_connector_spawn_time_fast_nodes +46 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_hold_connector_spawn_time_fast_optimized_cfg +6 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_hold_connector_spawn_time_standard_nodes +30 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_hold_connector_spawn_time_standard_optimized_cfg +4 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_hold_connector_update_parallel_cfg +289 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_hold_connector_update_parallel_fast_nodes +1745 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_hold_connector_update_parallel_fast_optimized_cfg +145 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_hold_connector_update_parallel_standard_nodes +753 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_hold_connector_update_parallel_standard_optimized_cfg +21 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_hold_connector_update_sequential_cfg +317 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_hold_connector_update_sequential_fast_nodes +873 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_hold_connector_update_sequential_fast_optimized_cfg +111 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_hold_connector_update_sequential_standard_nodes +428 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_hold_connector_update_sequential_standard_optimized_cfg +42 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_hold_manager_despawn_time_cfg +19 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_hold_manager_despawn_time_fast_nodes +54 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_hold_manager_despawn_time_fast_optimized_cfg +7 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_hold_manager_despawn_time_standard_nodes +38 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_hold_manager_despawn_time_standard_optimized_cfg +5 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_hold_manager_spawn_time_cfg +19 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_hold_manager_spawn_time_fast_nodes +54 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_hold_manager_spawn_time_fast_optimized_cfg +7 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_hold_manager_spawn_time_standard_nodes +38 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_hold_manager_spawn_time_standard_optimized_cfg +5 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_hold_manager_terminate_cfg +33 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_hold_manager_terminate_fast_nodes +53 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_hold_manager_terminate_fast_optimized_cfg +11 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_hold_manager_terminate_standard_nodes +45 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_hold_manager_terminate_standard_optimized_cfg +10 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_hold_manager_update_parallel_cfg +820 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_hold_manager_update_parallel_fast_nodes +4224 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_hold_manager_update_parallel_fast_optimized_cfg +430 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_hold_manager_update_parallel_standard_nodes +1697 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_hold_manager_update_parallel_standard_optimized_cfg +92 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_note_despawn_time_cfg +15 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_note_despawn_time_fast_nodes +43 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_note_despawn_time_fast_optimized_cfg +11 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_note_despawn_time_standard_nodes +31 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_note_despawn_time_standard_optimized_cfg +8 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_note_preprocess_cfg +844 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_note_preprocess_fast_nodes +2823 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_note_preprocess_fast_optimized_cfg +445 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_note_preprocess_standard_nodes +1430 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_note_preprocess_standard_optimized_cfg +270 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_note_spawn_time_cfg +9 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_note_spawn_time_fast_nodes +13 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_note_spawn_time_fast_optimized_cfg +3 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_note_spawn_time_standard_nodes +13 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_note_spawn_time_standard_optimized_cfg +3 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_note_terminate_cfg +746 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_note_terminate_fast_nodes +3984 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_note_terminate_fast_optimized_cfg +437 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_note_terminate_standard_nodes +1365 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_note_terminate_standard_optimized_cfg +113 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_note_update_parallel_cfg +1807 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_note_update_parallel_fast_nodes +8301 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_note_update_parallel_fast_optimized_cfg +923 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_note_update_parallel_standard_nodes +3182 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_note_update_parallel_standard_optimized_cfg +287 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_scheduled_lane_effect_despawn_time_cfg +18 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_scheduled_lane_effect_despawn_time_fast_nodes +40 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_scheduled_lane_effect_despawn_time_fast_optimized_cfg +6 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_scheduled_lane_effect_despawn_time_standard_nodes +24 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_scheduled_lane_effect_despawn_time_standard_optimized_cfg +4 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_scheduled_lane_effect_spawn_time_cfg +11 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_scheduled_lane_effect_spawn_time_fast_nodes +29 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_scheduled_lane_effect_spawn_time_fast_optimized_cfg +5 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_scheduled_lane_effect_spawn_time_standard_nodes +21 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_scheduled_lane_effect_spawn_time_standard_optimized_cfg +4 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_scheduled_lane_effect_update_parallel_cfg +153 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_scheduled_lane_effect_update_parallel_fast_nodes +561 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_scheduled_lane_effect_update_parallel_fast_optimized_cfg +78 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_scheduled_lane_effect_update_parallel_standard_nodes +248 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_scheduled_lane_effect_update_parallel_standard_optimized_cfg +29 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_sim_line_despawn_time_cfg +58 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_sim_line_despawn_time_fast_nodes +219 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_sim_line_despawn_time_fast_optimized_cfg +32 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_sim_line_despawn_time_standard_nodes +153 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_sim_line_despawn_time_standard_optimized_cfg +21 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_sim_line_spawn_time_cfg +24 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_sim_line_spawn_time_fast_nodes +46 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_sim_line_spawn_time_fast_optimized_cfg +6 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_sim_line_spawn_time_standard_nodes +30 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_sim_line_spawn_time_standard_optimized_cfg +4 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_sim_line_update_parallel_cfg +394 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_sim_line_update_parallel_fast_nodes +1894 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_sim_line_update_parallel_fast_optimized_cfg +184 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_sim_line_update_parallel_standard_nodes +786 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_sim_line_update_parallel_standard_optimized_cfg +45 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_stage_despawn_time_cfg +9 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_stage_despawn_time_fast_nodes +10 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_stage_despawn_time_fast_optimized_cfg +3 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_stage_despawn_time_standard_nodes +10 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_stage_despawn_time_standard_optimized_cfg +3 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_stage_preprocess_cfg +3508 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_stage_preprocess_fast_nodes +16381 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_stage_preprocess_fast_optimized_cfg +1799 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_stage_preprocess_standard_nodes +6095 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_stage_preprocess_standard_optimized_cfg +568 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_stage_spawn_time_cfg +9 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_stage_spawn_time_fast_nodes +10 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_stage_spawn_time_fast_optimized_cfg +3 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_stage_spawn_time_standard_nodes +10 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_stage_spawn_time_standard_optimized_cfg +3 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_stage_update_parallel_cfg +130 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_stage_update_parallel_fast_nodes +391 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_stage_update_parallel_fast_optimized_cfg +36 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_stage_update_parallel_standard_nodes +261 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_stage_update_parallel_standard_optimized_cfg +15 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_unscored_note_despawn_time_cfg +15 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_unscored_note_despawn_time_fast_nodes +43 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_unscored_note_despawn_time_fast_optimized_cfg +11 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_unscored_note_despawn_time_standard_nodes +31 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_unscored_note_despawn_time_standard_optimized_cfg +8 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_unscored_note_preprocess_cfg +844 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_unscored_note_preprocess_fast_nodes +2823 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_unscored_note_preprocess_fast_optimized_cfg +445 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_unscored_note_preprocess_standard_nodes +1430 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_unscored_note_preprocess_standard_optimized_cfg +270 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_unscored_note_spawn_time_cfg +9 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_unscored_note_spawn_time_fast_nodes +13 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_unscored_note_spawn_time_fast_optimized_cfg +3 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_unscored_note_spawn_time_standard_nodes +13 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_unscored_note_spawn_time_standard_optimized_cfg +3 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_unscored_note_terminate_cfg +746 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_unscored_note_terminate_fast_nodes +3984 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_unscored_note_terminate_fast_optimized_cfg +437 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_unscored_note_terminate_standard_nodes +1365 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_unscored_note_terminate_standard_optimized_cfg +113 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_unscored_note_update_parallel_cfg +1807 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_unscored_note_update_parallel_fast_nodes +8301 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_unscored_note_update_parallel_fast_optimized_cfg +923 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_unscored_note_update_parallel_standard_nodes +3182 -0
- sonolus_py-0.4.1/tests/regressions/data/pydori_watch_watch_unscored_note_update_parallel_standard_optimized_cfg +287 -0
- sonolus_py-0.4.1/tests/regressions/test_project.py +155 -0
- sonolus_py-0.4.1/tests/script/__init__.py +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/tests/script/conftest.py +3 -3
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/tests/script/test_array.py +25 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/tests/script/test_flow.py +26 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/tests/script/test_functions.py +1 -1
- sonolus_py-0.4.1/tests/script/test_generator.py +636 -0
- sonolus_py-0.4.1/tests/script/test_genexpr.py +324 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/tests/script/test_interval.py +3 -1
- sonolus_py-0.4.1/tests/script/test_maybe.py +240 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/tests/script/test_var_array.py +1 -1
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/uv.lock +52 -22
- sonolus_py-0.3.4/.python-version +0 -1
- sonolus_py-0.3.4/sonolus/backend/optimize/inlining.py +0 -137
- sonolus_py-0.3.4/sonolus/script/iterator.py +0 -185
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/.gitignore +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/.run/Python tests in tests.run.xml +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/LICENSE +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/README.md +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/doc_stubs/__init__.py +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/doc_stubs/math.pyi +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/doc_stubs/num.pyi +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/doc_stubs/random.pyi +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/docs/CNAME +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/docs/concepts/index.md +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/docs/concepts/project.md +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/docs/concepts/resources.md +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/docs/index.md +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/docs/reference/builtins.md +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/docs/reference/index.md +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/docs/reference/math.md +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/docs/reference/random.md +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/docs/reference/sonolus.script.archetype.md +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/docs/reference/sonolus.script.array.md +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/docs/reference/sonolus.script.array_like.md +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/docs/reference/sonolus.script.bucket.md +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/docs/reference/sonolus.script.containers.md +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/docs/reference/sonolus.script.debug.md +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/docs/reference/sonolus.script.easing.md +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/docs/reference/sonolus.script.effect.md +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/docs/reference/sonolus.script.engine.md +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/docs/reference/sonolus.script.globals.md +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/docs/reference/sonolus.script.instruction.md +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/docs/reference/sonolus.script.interval.md +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/docs/reference/sonolus.script.iterator.md +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/docs/reference/sonolus.script.level.md +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/docs/reference/sonolus.script.metadata.md +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/docs/reference/sonolus.script.num.md +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/docs/reference/sonolus.script.options.md +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/docs/reference/sonolus.script.particle.md +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/docs/reference/sonolus.script.printing.md +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/docs/reference/sonolus.script.project.md +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/docs/reference/sonolus.script.quad.md +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/docs/reference/sonolus.script.record.md +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/docs/reference/sonolus.script.runtime.md +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/docs/reference/sonolus.script.sprite.md +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/docs/reference/sonolus.script.stream.md +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/docs/reference/sonolus.script.text.md +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/docs/reference/sonolus.script.timing.md +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/docs/reference/sonolus.script.transform.md +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/docs/reference/sonolus.script.ui.md +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/docs/reference/sonolus.script.values.md +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/docs/reference/sonolus.script.vec.md +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/scripts/generate.py +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/scripts/runtimes/Engine/Tutorial/Blocks.json +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/scripts/runtimes/Functions.json +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/scripts/runtimes/Level/Play/Blocks.json +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/scripts/runtimes/Level/Preview/Blocks.json +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/scripts/runtimes/Level/Watch/Blocks.json +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/__init__.py +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/backend/__init__.py +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/backend/blocks.py +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/backend/interpret.py +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/backend/ir.py +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/backend/mode.py +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/backend/node.py +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/backend/optimize/__init__.py +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/build/__init__.py +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/build/collection.py +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/build/node.py +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/py.typed +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/script/__init__.py +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/script/easing.py +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/script/engine.py +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/script/internal/__init__.py +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/script/internal/callbacks.py +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/script/internal/descriptor.py +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/script/internal/dict_impl.py +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/script/internal/error.py +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/script/internal/generic.py +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/script/internal/math_impls.py +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/script/internal/random.py +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/script/internal/tuple_impl.py +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/script/metadata.py +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/script/pointer.py +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/script/printing.py +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/script/text.py +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/script/timing.py +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/sonolus/script/ui.py +0 -0
- {sonolus_py-0.3.4/tests → sonolus_py-0.4.1/test_projects/pydori}/__init__.py +0 -0
- {sonolus_py-0.3.4/tests/script → sonolus_py-0.4.1/test_projects/pydori/lib}/__init__.py +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/tests/script/test_array_map.py +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/tests/script/test_array_set.py +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/tests/script/test_assert.py +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/tests/script/test_dict.py +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/tests/script/test_helpers.py +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/tests/script/test_match.py +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/tests/script/test_num.py +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/tests/script/test_operator.py +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/tests/script/test_quad.py +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/tests/script/test_random.py +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/tests/script/test_range.py +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/tests/script/test_record.py +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/tests/script/test_transform.py +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/tests/script/test_tuple.py +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/tests/script/test_values.py +0 -0
- {sonolus_py-0.3.4 → sonolus_py-0.4.1}/tests/script/test_vec.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.
|
|
@@ -161,84 +183,74 @@ def map[T, S](function: Callable[[T], S], iterable: Iterable[T]) -> Iterator[S]:
|
|
|
161
183
|
...
|
|
162
184
|
|
|
163
185
|
@overload
|
|
164
|
-
def max[T](iterable: Iterable[T], *, key: Callable[[T], Any] | None = ...) -> T:
|
|
165
|
-
"""Return the largest item in an iterable or the largest of two or more arguments.
|
|
166
|
-
|
|
167
|
-
Args:
|
|
168
|
-
iterable: The iterable to evaluate.
|
|
169
|
-
key: A function of one argument that is used to extract a comparison key from each element.
|
|
170
|
-
|
|
171
|
-
Returns:
|
|
172
|
-
The largest item.
|
|
173
|
-
"""
|
|
174
|
-
...
|
|
175
|
-
|
|
186
|
+
def max[T](iterable: Iterable[T], *, key: Callable[[T], Any] | None = ...) -> T: ...
|
|
176
187
|
@overload
|
|
177
|
-
def max
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
*args: Additional arguments.
|
|
184
|
-
key: A function of one argument that is used to extract a comparison key from each element.
|
|
185
|
-
|
|
186
|
-
Returns:
|
|
187
|
-
The largest item.
|
|
188
|
-
"""
|
|
189
|
-
...
|
|
190
|
-
|
|
188
|
+
def max(
|
|
189
|
+
iterable: Iterable[builtins.int | builtins.float],
|
|
190
|
+
*,
|
|
191
|
+
default: builtins.int | builtins.float = ...,
|
|
192
|
+
key: Callable[[builtins.int | builtins.float], Any] | None = ...,
|
|
193
|
+
) -> builtins.int | builtins.float: ...
|
|
191
194
|
@overload
|
|
192
|
-
def
|
|
193
|
-
|
|
195
|
+
def max[T](arg1: T, arg2: T, *args: T, key: Callable[[T], Any] | None = ...) -> T: ...
|
|
196
|
+
def max(*args, **kwargs):
|
|
197
|
+
"""Return the largest item in an iterable or the largest of multiple arguments.
|
|
194
198
|
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
key: A function of one argument that is used to extract a comparison key from each element.
|
|
199
|
+
When called with a single iterable, returns the largest item from that iterable.
|
|
200
|
+
When called with multiple arguments, returns the largest argument.
|
|
198
201
|
|
|
199
|
-
|
|
200
|
-
|
|
202
|
+
Use the `key` parameter to specify a function that transforms each element
|
|
203
|
+
before comparison. Use the `default` parameter to specify a value to return
|
|
204
|
+
if the iterable is empty (supported only for numeric values).
|
|
201
205
|
"""
|
|
202
206
|
...
|
|
203
207
|
|
|
204
208
|
@overload
|
|
205
|
-
def min[T](
|
|
206
|
-
|
|
209
|
+
def min[T](iterable: Iterable[T], *, key: Callable[[T], Any] | None = ...) -> T: ...
|
|
210
|
+
@overload
|
|
211
|
+
def min(
|
|
212
|
+
iterable: Iterable[builtins.int | builtins.float],
|
|
213
|
+
*,
|
|
214
|
+
default: builtins.int | builtins.float = ...,
|
|
215
|
+
key: Callable[[builtins.int | builtins.float], Any] | None = ...,
|
|
216
|
+
) -> builtins.int | builtins.float: ...
|
|
217
|
+
@overload
|
|
218
|
+
def min[T](arg1: T, arg2: T, *args: T, key: Callable[[T], Any] | None = ...) -> T: ...
|
|
219
|
+
def min(*args, **kwargs):
|
|
220
|
+
"""Return the smallest item in an iterable or the smallest of multiple arguments.
|
|
207
221
|
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
arg2: Second argument.
|
|
211
|
-
*args: Additional arguments.
|
|
212
|
-
key: A function of one argument that is used to extract a comparison key from each element.
|
|
222
|
+
When called with a single iterable, returns the smallest item from that iterable.
|
|
223
|
+
When called with multiple arguments, returns the smallest argument.
|
|
213
224
|
|
|
214
|
-
|
|
215
|
-
|
|
225
|
+
Use the `key` parameter to specify a function that transforms each element
|
|
226
|
+
before comparison. Use the `default` parameter to specify a value to return
|
|
227
|
+
if the iterable is empty (supported only for numeric values).
|
|
216
228
|
"""
|
|
217
229
|
...
|
|
218
230
|
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
231
|
+
def next[T](iterator: Iterator[T]) -> T:
|
|
232
|
+
"""Retrieve the next item from an iterator.
|
|
233
|
+
|
|
234
|
+
Errors if the iterator is exhausted.
|
|
222
235
|
|
|
223
236
|
Args:
|
|
224
|
-
|
|
237
|
+
iterator: The iterator to retrieve the next item from.
|
|
225
238
|
|
|
226
239
|
Returns:
|
|
227
|
-
The
|
|
240
|
+
The next item from the iterator.
|
|
228
241
|
"""
|
|
229
242
|
...
|
|
230
243
|
|
|
231
244
|
@overload
|
|
232
|
-
def range(
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
stop: Stop value.
|
|
238
|
-
step: Step value.
|
|
245
|
+
def range(stop: builtins.int) -> builtins.range: ...
|
|
246
|
+
@overload
|
|
247
|
+
def range(start: builtins.int, stop: builtins.int, step: builtins.int = ...) -> builtins.range: ...
|
|
248
|
+
def range(*args) -> builtins.range:
|
|
249
|
+
"""Return an immutable sequence of numbers.
|
|
239
250
|
|
|
240
|
-
|
|
241
|
-
|
|
251
|
+
When called with one argument, creates a sequence from 0 to that number (exclusive).
|
|
252
|
+
When called with two arguments, creates a sequence from the first to the second (exclusive).
|
|
253
|
+
When called with three arguments, the third argument specifies the step size.
|
|
242
254
|
"""
|
|
243
255
|
...
|
|
244
256
|
|
|
@@ -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])`
|
|
@@ -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
|
|
|
@@ -33,13 +33,14 @@ The following constructs are supported in Sonolus.py:
|
|
|
33
33
|
- Binary: `+`, `-`, `*`, `/`, `//`, `%`, `**`, `&`, `|`, `^`, `<<`, `>>`
|
|
34
34
|
- Comparison: `==`, `!=`, `>`, `<`, `>=`, `<=`, `is`, `is not`, `in`, `not in`
|
|
35
35
|
- Logical: `and`, `or` (for [`Num`](types.md#num) arguments only)
|
|
36
|
-
- Ternary: `a if <condition> else b`
|
|
36
|
+
- Ternary: `a if <condition> else b`
|
|
37
37
|
- Attribute: `a.b`
|
|
38
38
|
- Indexing: `a[b]`
|
|
39
39
|
- Call: `f(a, b, c)`
|
|
40
40
|
- Variables: `a`, `b`, `c`
|
|
41
|
-
- Lambda: `lambda a, b: a + b`
|
|
41
|
+
- Lambda: `lambda a, b: a + b` (if not on the same line as another lambda or function definition)
|
|
42
42
|
- Assignment Expression: `(a := b)`
|
|
43
|
+
- Generator Expression: `(x for x in iterable if condition)`
|
|
43
44
|
- Statements:
|
|
44
45
|
- Simple Statements:
|
|
45
46
|
- Assignments:
|
|
@@ -55,6 +56,7 @@ The following constructs are supported in Sonolus.py:
|
|
|
55
56
|
- Break: `break`
|
|
56
57
|
- Continue: `continue`
|
|
57
58
|
- Return: `return <value>`
|
|
59
|
+
- Yield: `yield <value>`, `yield from <iterable>`
|
|
58
60
|
- Import: `import <module>`, `from <module> import <name>` (only outside of functions)
|
|
59
61
|
- Compound Statements:
|
|
60
62
|
- If: `if <condition>:`, `elif <condition>:`, `else:`
|
|
@@ -118,6 +118,16 @@ a2 = Array[int, 0]()
|
|
|
118
118
|
a3 = +Array[int, 3] # Create a zero-initialized array
|
|
119
119
|
```
|
|
120
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
|
+
|
|
121
131
|
If at least one element is provided, the element type and size can be inferred:
|
|
122
132
|
|
|
123
133
|
```python
|
|
@@ -613,18 +623,14 @@ class _FilteringIterator[T, Fn](Record, SonolusIterator):
|
|
|
613
623
|
fn: Fn
|
|
614
624
|
iterator: T
|
|
615
625
|
|
|
616
|
-
def
|
|
617
|
-
while
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
return self.iterator.get()
|
|
625
|
-
|
|
626
|
-
def advance(self):
|
|
627
|
-
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)
|
|
628
634
|
|
|
629
635
|
|
|
630
636
|
def my_filter[T, Fn](iterable: T, fn: Fn) -> T:
|
|
@@ -4,15 +4,15 @@ Sonolus.py is a Python library for creating Sonolus engines. This page provides
|
|
|
4
4
|
available in the library. For more detailed information, see the [Concepts](concepts/index.md) and
|
|
5
5
|
[Reference](reference/index.md) sections.
|
|
6
6
|
|
|
7
|
-
##
|
|
7
|
+
## Language
|
|
8
|
+
|
|
8
9
|
Sonolus.py functions by compiling Python code into Sonolus nodes. As such, it supports a subset of Python including
|
|
9
10
|
most syntax and a portion of the standard library. Additionally, Sonolus.py provides its own library of types and
|
|
10
11
|
functions that are specifically designed for use in Sonolus engines.
|
|
11
12
|
|
|
12
|
-
###
|
|
13
|
+
### Syntax
|
|
13
14
|
|
|
14
|
-
|
|
15
|
-
Most Python syntax is supported, but there are a few limitations:
|
|
15
|
+
Most Python syntax is supported, but there are a few limitations. The primary restrictions are:
|
|
16
16
|
|
|
17
17
|
- Destructuring assignment with the `*` operator is unsupported.
|
|
18
18
|
- Sequence (list and array) `match` patterns with the `*` operator are unsupported.
|
|
@@ -21,7 +21,8 @@ Most Python syntax is supported, but there are a few limitations:
|
|
|
21
21
|
- The `global` and `nonlocal` keywords are unsupported.
|
|
22
22
|
- Exception related statements (`try`, `except`, `finally`, `raise`) are unsupported.
|
|
23
23
|
|
|
24
|
-
|
|
24
|
+
### Compile Time Evaluation
|
|
25
|
+
|
|
25
26
|
Sonolus.py will evaluate some expressions at compile time such as basic arithmetic operations on constants,
|
|
26
27
|
boolean logical operations (`and`, `or`, `not`) on constants, and type checks (`isinstance`, `issubclass`).
|
|
27
28
|
|
|
@@ -38,7 +39,8 @@ else:
|
|
|
38
39
|
debug_log(a)
|
|
39
40
|
```
|
|
40
41
|
|
|
41
|
-
|
|
42
|
+
### Variables
|
|
43
|
+
|
|
42
44
|
Numeric (`int`, `float`, `bool`) variables are fully supported and can be freely assigned and modified.
|
|
43
45
|
|
|
44
46
|
All other variables have the restriction that if the compiler finds multiple possible values for a variable, it may
|
|
@@ -53,7 +55,8 @@ else:
|
|
|
53
55
|
debug_log(a.x)
|
|
54
56
|
```
|
|
55
57
|
|
|
56
|
-
|
|
58
|
+
### Function Returns
|
|
59
|
+
|
|
57
60
|
Similar to variables, functions returning `int`, `float`, or `bool` can have any number of return statements. Functions
|
|
58
61
|
returning `None` may also have any number of `return` or `return None` statements.
|
|
59
62
|
|
|
@@ -71,26 +74,25 @@ def fn(a: int | Vec2):
|
|
|
71
74
|
fn(123)
|
|
72
75
|
```
|
|
73
76
|
|
|
74
|
-
|
|
77
|
+
## Types
|
|
78
|
+
|
|
79
|
+
### Numbers
|
|
75
80
|
|
|
76
|
-
#### Numbers
|
|
77
81
|
Sonolus.py supports `int`, `float`, and `bool` types and most of the standard operations such as mathematical operations
|
|
78
82
|
(`+`, `-`, `*`, `/`, `//`, `%`), comparisons (`<`, `<=`, `>`, `>=`, `==`, `!=`), and boolean operations
|
|
79
83
|
(`and`, `or`, `not`).
|
|
80
84
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
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:
|
|
84
89
|
|
|
85
90
|
```python
|
|
86
91
|
class MyRecord(Record):
|
|
87
92
|
a: int
|
|
88
93
|
b: float
|
|
89
94
|
|
|
90
|
-
|
|
91
|
-
my_zero_record = +MyRecord # Short for MyRecord(0, 0.0)
|
|
92
|
-
my_record_copy = +my_record # Create a copy of my_record with the same values
|
|
93
|
-
my_record.a = 123 # Modify a field of the record
|
|
95
|
+
record_1 = MyRecord(1, b=2.3)
|
|
94
96
|
```
|
|
95
97
|
|
|
96
98
|
Records may also be generic:
|
|
@@ -99,26 +101,101 @@ Records may also be generic:
|
|
|
99
101
|
class MyGenericRecord[T](Record):
|
|
100
102
|
value: T
|
|
101
103
|
|
|
102
|
-
|
|
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)
|
|
104
183
|
```
|
|
105
184
|
|
|
106
|
-
|
|
107
|
-
[`Array`](reference/sonolus.script.array.md) is a type that represents a fixed-size array of elements of a specific type.
|
|
185
|
+
Setting an array element that's a record or array using the `=` operator will also modify the element in-place:
|
|
108
186
|
|
|
109
187
|
```python
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
my_array[2] = 10 # Modify an element of the array
|
|
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)
|
|
115
192
|
```
|
|
116
193
|
|
|
117
|
-
|
|
194
|
+
### Other Types
|
|
118
195
|
Sonolus.py has limited support for other types of values such as strings, tuples, and functions. These have restrictions
|
|
119
196
|
such as not being valid as Record field types or Array element types.
|
|
120
197
|
|
|
121
|
-
|
|
198
|
+
## Modules
|
|
122
199
|
Sonolus.py provides a number of built-in modules that can be used in Sonolus engines. These include:
|
|
123
200
|
|
|
124
201
|
- Project
|
|
@@ -155,6 +232,7 @@ Sonolus.py provides a number of built-in modules that can be used in Sonolus eng
|
|
|
155
232
|
- [Easing](reference/sonolus.script.easing.md): Easing functions for animations.
|
|
156
233
|
- [Interval](reference/sonolus.script.interval.md): Mathematical intervals.
|
|
157
234
|
- [Iterator](reference/sonolus.script.iterator.md): Iterators over collections.
|
|
235
|
+
- [Maybe](reference/sonolus.script.maybe.md): Optional function return values.
|
|
158
236
|
- [Printing](reference/sonolus.script.printing.md): Preview mode number printing.
|
|
159
237
|
- [Quad](reference/sonolus.script.quad.md): Quadrilaterals.
|
|
160
238
|
- [Transform](reference/sonolus.script.transform.md): Transformations like translation, rotation, and scaling.
|
|
@@ -98,6 +98,7 @@ nav:
|
|
|
98
98
|
- reference/sonolus.script.interval.md
|
|
99
99
|
- reference/sonolus.script.iterator.md
|
|
100
100
|
- reference/sonolus.script.level.md
|
|
101
|
+
- reference/sonolus.script.maybe.md
|
|
101
102
|
- reference/sonolus.script.metadata.md
|
|
102
103
|
- reference/sonolus.script.num.md
|
|
103
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.1"
|
|
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"]
|
|
@@ -16,6 +16,10 @@ def is_compiler_internal(tb: TracebackType):
|
|
|
16
16
|
)
|
|
17
17
|
|
|
18
18
|
|
|
19
|
+
def is_traceback_root(tb: TracebackType | None) -> bool:
|
|
20
|
+
return tb.tb_frame.f_locals.get("_traceback_root_", False) or tb.tb_frame.f_globals.get("_traceback_root_", False)
|
|
21
|
+
|
|
22
|
+
|
|
19
23
|
def filter_traceback(tb: TracebackType | None) -> TracebackType | None:
|
|
20
24
|
if tb is None:
|
|
21
25
|
return None
|
|
@@ -25,6 +29,17 @@ def filter_traceback(tb: TracebackType | None) -> TracebackType | None:
|
|
|
25
29
|
return tb
|
|
26
30
|
|
|
27
31
|
|
|
32
|
+
def truncate_traceback(tb: TracebackType | None) -> TracebackType | None:
|
|
33
|
+
if tb is None:
|
|
34
|
+
return None
|
|
35
|
+
if is_compiler_internal(tb):
|
|
36
|
+
return truncate_traceback(tb.tb_next)
|
|
37
|
+
if is_traceback_root(tb):
|
|
38
|
+
return tb
|
|
39
|
+
else:
|
|
40
|
+
return truncate_traceback(tb.tb_next)
|
|
41
|
+
|
|
42
|
+
|
|
28
43
|
def excepthook(exc, value, tb):
|
|
29
44
|
import traceback
|
|
30
45
|
|
|
@@ -33,5 +48,20 @@ def excepthook(exc, value, tb):
|
|
|
33
48
|
traceback.print_exception(exc, value, tb)
|
|
34
49
|
|
|
35
50
|
|
|
51
|
+
def print_simple_traceback(exc, value, tb):
|
|
52
|
+
import traceback
|
|
53
|
+
|
|
54
|
+
if should_filter_traceback(tb):
|
|
55
|
+
tb = filter_traceback(tb)
|
|
56
|
+
truncated = truncate_traceback(tb)
|
|
57
|
+
tb = truncated if truncated is not None else tb
|
|
58
|
+
cause = value.__cause__
|
|
59
|
+
value.__cause__ = None
|
|
60
|
+
traceback.print_exception(exc, value, tb)
|
|
61
|
+
value.__cause__ = cause
|
|
62
|
+
else:
|
|
63
|
+
traceback.print_exception(exc, value, tb)
|
|
64
|
+
|
|
65
|
+
|
|
36
66
|
def install_excepthook():
|
|
37
67
|
sys.excepthook = excepthook
|
|
@@ -13,7 +13,9 @@ def cfg_to_engine_node(entry: BasicBlock):
|
|
|
13
13
|
for block in block_indexes:
|
|
14
14
|
statements = []
|
|
15
15
|
statements.extend(ir_to_engine_node(stmt) for stmt in block.statements)
|
|
16
|
-
outgoing = {
|
|
16
|
+
outgoing = {
|
|
17
|
+
edge.cond: edge.dst for edge in sorted(block.outgoing, key=lambda edge: (edge.cond is None, edge.cond))
|
|
18
|
+
}
|
|
17
19
|
match outgoing:
|
|
18
20
|
case {**other} if not other:
|
|
19
21
|
statements.append(ConstantNode(value=len(block_indexes)))
|
|
@@ -30,6 +32,18 @@ def cfg_to_engine_node(entry: BasicBlock):
|
|
|
30
32
|
],
|
|
31
33
|
)
|
|
32
34
|
)
|
|
35
|
+
case {None: default_branch, **other} if len(other) == 1:
|
|
36
|
+
cond, cond_branch = next(iter(other.items()))
|
|
37
|
+
statements.append(
|
|
38
|
+
FunctionNode(
|
|
39
|
+
func=Op.If,
|
|
40
|
+
args=[
|
|
41
|
+
ir_to_engine_node(IRPureInstr(Op.Equal, args=[block.test, IRConst(cond)])),
|
|
42
|
+
ConstantNode(value=block_indexes[cond_branch]),
|
|
43
|
+
ConstantNode(value=block_indexes[default_branch]),
|
|
44
|
+
],
|
|
45
|
+
)
|
|
46
|
+
)
|
|
33
47
|
case dict() as targets:
|
|
34
48
|
args = [ir_to_engine_node(block.test)]
|
|
35
49
|
default = len(block_indexes)
|