sonolus.py 0.5.0__tar.gz → 0.5.2__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.
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/PKG-INFO +1 -1
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/pyproject.toml +1 -1
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/backend/visitor.py +0 -2
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/build/compile.py +9 -4
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/script/archetype.py +187 -17
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/script/internal/context.py +10 -2
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/script/internal/introspection.py +3 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/uv.lock +1 -1
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/.gitattributes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/.github/workflows/publish.yaml +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/.gitignore +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/.python-version +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/.run/Python tests in tests.run.xml +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/LICENSE +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/README.md +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/doc_stubs/__init__.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/doc_stubs/builtins.pyi +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/doc_stubs/math.pyi +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/doc_stubs/num.pyi +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/doc_stubs/random.pyi +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/docs/CNAME +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/docs/concepts/builtins.md +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/docs/concepts/cli.md +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/docs/concepts/constructs.md +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/docs/concepts/index.md +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/docs/concepts/project.md +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/docs/concepts/resources.md +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/docs/concepts/types.md +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/docs/guides/bucket.md +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/docs/guides/coming-soon.md +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/docs/guides/effect.md +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/docs/guides/index.md +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/docs/guides/particle.md +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/docs/guides/play.md +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/docs/guides/project-structure.md +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/docs/guides/screen.md +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/docs/guides/setup.md +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/docs/guides/skin.md +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/docs/guides/ui.md +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/docs/guides/usage.md +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/docs/index.md +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/docs/overview.md +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/docs/reference/builtins.md +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/docs/reference/index.md +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/docs/reference/math.md +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/docs/reference/random.md +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/docs/reference/sonolus.script.archetype.md +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/docs/reference/sonolus.script.array.md +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/docs/reference/sonolus.script.array_like.md +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/docs/reference/sonolus.script.bucket.md +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/docs/reference/sonolus.script.containers.md +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/docs/reference/sonolus.script.debug.md +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/docs/reference/sonolus.script.easing.md +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/docs/reference/sonolus.script.effect.md +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/docs/reference/sonolus.script.engine.md +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/docs/reference/sonolus.script.globals.md +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/docs/reference/sonolus.script.instruction.md +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/docs/reference/sonolus.script.interval.md +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/docs/reference/sonolus.script.iterator.md +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/docs/reference/sonolus.script.level.md +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/docs/reference/sonolus.script.maybe.md +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/docs/reference/sonolus.script.metadata.md +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/docs/reference/sonolus.script.num.md +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/docs/reference/sonolus.script.options.md +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/docs/reference/sonolus.script.particle.md +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/docs/reference/sonolus.script.printing.md +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/docs/reference/sonolus.script.project.md +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/docs/reference/sonolus.script.quad.md +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/docs/reference/sonolus.script.record.md +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/docs/reference/sonolus.script.runtime.md +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/docs/reference/sonolus.script.sprite.md +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/docs/reference/sonolus.script.stream.md +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/docs/reference/sonolus.script.text.md +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/docs/reference/sonolus.script.timing.md +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/docs/reference/sonolus.script.transform.md +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/docs/reference/sonolus.script.ui.md +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/docs/reference/sonolus.script.values.md +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/docs/reference/sonolus.script.vec.md +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/mkdocs.yml +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/scripts/generate.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/scripts/runtimes/Engine/Tutorial/Blocks.json +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/scripts/runtimes/Functions.json +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/scripts/runtimes/Level/Play/Blocks.json +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/scripts/runtimes/Level/Preview/Blocks.json +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/scripts/runtimes/Level/Watch/Blocks.json +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/__init__.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/backend/__init__.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/backend/blocks.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/backend/excepthook.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/backend/finalize.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/backend/interpret.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/backend/ir.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/backend/mode.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/backend/node.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/backend/ops.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/backend/optimize/__init__.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/backend/optimize/allocate.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/backend/optimize/constant_evaluation.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/backend/optimize/copy_coalesce.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/backend/optimize/dead_code.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/backend/optimize/dominance.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/backend/optimize/flow.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/backend/optimize/inlining.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/backend/optimize/liveness.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/backend/optimize/optimize.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/backend/optimize/passes.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/backend/optimize/simplify.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/backend/optimize/ssa.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/backend/place.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/backend/utils.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/build/__init__.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/build/cli.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/build/collection.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/build/engine.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/build/level.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/build/node.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/build/project.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/py.typed +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/script/__init__.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/script/array.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/script/array_like.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/script/bucket.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/script/containers.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/script/debug.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/script/easing.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/script/effect.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/script/engine.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/script/globals.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/script/instruction.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/script/internal/__init__.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/script/internal/builtin_impls.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/script/internal/callbacks.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/script/internal/constant.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/script/internal/descriptor.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/script/internal/dict_impl.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/script/internal/error.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/script/internal/generic.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/script/internal/impl.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/script/internal/math_impls.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/script/internal/native.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/script/internal/random.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/script/internal/range.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/script/internal/simulation_context.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/script/internal/transient.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/script/internal/tuple_impl.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/script/internal/value.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/script/interval.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/script/iterator.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/script/level.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/script/maybe.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/script/metadata.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/script/num.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/script/options.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/script/particle.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/script/pointer.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/script/printing.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/script/project.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/script/quad.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/script/record.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/script/runtime.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/script/sprite.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/script/stream.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/script/text.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/script/timing.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/script/transform.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/script/ui.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/script/values.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/sonolus/script/vec.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/test_projects/pydori/__init__.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/test_projects/pydori/level.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/test_projects/pydori/lib/__init__.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/test_projects/pydori/lib/buckets.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/test_projects/pydori/lib/connector.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/test_projects/pydori/lib/effect.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/test_projects/pydori/lib/layer.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/test_projects/pydori/lib/layout.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/test_projects/pydori/lib/note.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/test_projects/pydori/lib/options.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/test_projects/pydori/lib/particle.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/test_projects/pydori/lib/skin.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/test_projects/pydori/lib/stage.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/test_projects/pydori/lib/streams.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/test_projects/pydori/lib/ui.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/test_projects/pydori/play/__init__.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/test_projects/pydori/play/connector.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/test_projects/pydori/play/event.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/test_projects/pydori/play/input.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/test_projects/pydori/play/mode.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/test_projects/pydori/play/note.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/test_projects/pydori/play/stage.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/test_projects/pydori/preview/__init__.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/test_projects/pydori/preview/connector.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/test_projects/pydori/preview/event.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/test_projects/pydori/preview/layout.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/test_projects/pydori/preview/mode.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/test_projects/pydori/preview/note.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/test_projects/pydori/preview/stage.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/test_projects/pydori/project.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/test_projects/pydori/tutorial/__init__.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/test_projects/pydori/tutorial/framework.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/test_projects/pydori/tutorial/instructions.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/test_projects/pydori/tutorial/intro.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/test_projects/pydori/tutorial/mode.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/test_projects/pydori/tutorial/navigate.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/test_projects/pydori/tutorial/painting.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/test_projects/pydori/tutorial/phases.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/test_projects/pydori/tutorial/preprocess.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/test_projects/pydori/tutorial/update.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/test_projects/pydori/watch/__init__.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/test_projects/pydori/watch/connector.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/test_projects/pydori/watch/event.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/test_projects/pydori/watch/mode.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/test_projects/pydori/watch/note.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/test_projects/pydori/watch/stage.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/test_projects/pydori/watch/update_spawn.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/__init__.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/__init__.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/conftest.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_hold_connector_should_spawn_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_hold_connector_should_spawn_fast_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_hold_connector_should_spawn_fast_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_hold_connector_should_spawn_standard_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_hold_connector_should_spawn_standard_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_hold_connector_spawn_order_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_hold_connector_spawn_order_fast_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_hold_connector_spawn_order_fast_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_hold_connector_spawn_order_standard_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_hold_connector_spawn_order_standard_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_hold_connector_update_parallel_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_hold_connector_update_parallel_fast_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_hold_connector_update_parallel_fast_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_hold_connector_update_parallel_standard_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_hold_connector_update_parallel_standard_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_hold_connector_update_sequential_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_hold_connector_update_sequential_fast_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_hold_connector_update_sequential_fast_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_hold_connector_update_sequential_standard_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_hold_connector_update_sequential_standard_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_hold_manager_touch_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_hold_manager_touch_fast_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_hold_manager_touch_fast_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_hold_manager_touch_standard_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_hold_manager_touch_standard_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_hold_manager_update_parallel_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_hold_manager_update_parallel_fast_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_hold_manager_update_parallel_fast_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_hold_manager_update_parallel_standard_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_hold_manager_update_parallel_standard_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_note_initialize_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_note_initialize_fast_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_note_initialize_fast_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_note_initialize_standard_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_note_initialize_standard_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_note_preprocess_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_note_preprocess_fast_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_note_preprocess_fast_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_note_preprocess_standard_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_note_preprocess_standard_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_note_should_spawn_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_note_should_spawn_fast_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_note_should_spawn_fast_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_note_should_spawn_standard_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_note_should_spawn_standard_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_note_spawn_order_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_note_spawn_order_fast_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_note_spawn_order_fast_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_note_spawn_order_standard_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_note_spawn_order_standard_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_note_terminate_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_note_terminate_fast_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_note_terminate_fast_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_note_terminate_standard_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_note_terminate_standard_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_note_touch_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_note_touch_fast_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_note_touch_fast_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_note_touch_standard_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_note_touch_standard_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_note_update_parallel_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_note_update_parallel_fast_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_note_update_parallel_fast_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_note_update_parallel_standard_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_note_update_parallel_standard_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_note_update_sequential_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_note_update_sequential_fast_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_note_update_sequential_fast_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_note_update_sequential_standard_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_note_update_sequential_standard_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_sim_line_should_spawn_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_sim_line_should_spawn_fast_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_sim_line_should_spawn_fast_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_sim_line_should_spawn_standard_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_sim_line_should_spawn_standard_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_sim_line_spawn_order_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_sim_line_spawn_order_fast_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_sim_line_spawn_order_fast_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_sim_line_spawn_order_standard_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_sim_line_spawn_order_standard_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_sim_line_update_parallel_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_sim_line_update_parallel_fast_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_sim_line_update_parallel_fast_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_sim_line_update_parallel_standard_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_sim_line_update_parallel_standard_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_stage_preprocess_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_stage_preprocess_fast_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_stage_preprocess_fast_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_stage_preprocess_standard_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_stage_preprocess_standard_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_stage_should_spawn_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_stage_should_spawn_fast_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_stage_should_spawn_fast_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_stage_should_spawn_standard_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_stage_should_spawn_standard_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_stage_spawn_order_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_stage_spawn_order_fast_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_stage_spawn_order_fast_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_stage_spawn_order_standard_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_stage_spawn_order_standard_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_stage_touch_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_stage_touch_fast_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_stage_touch_fast_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_stage_touch_standard_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_stage_touch_standard_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_stage_update_parallel_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_stage_update_parallel_fast_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_stage_update_parallel_fast_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_stage_update_parallel_standard_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_stage_update_parallel_standard_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_stage_update_sequential_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_stage_update_sequential_fast_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_stage_update_sequential_fast_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_stage_update_sequential_standard_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_stage_update_sequential_standard_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_unscored_note_initialize_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_unscored_note_initialize_fast_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_unscored_note_initialize_fast_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_unscored_note_initialize_standard_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_unscored_note_initialize_standard_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_unscored_note_preprocess_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_unscored_note_preprocess_fast_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_unscored_note_preprocess_fast_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_unscored_note_preprocess_standard_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_unscored_note_preprocess_standard_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_unscored_note_should_spawn_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_unscored_note_should_spawn_fast_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_unscored_note_should_spawn_fast_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_unscored_note_should_spawn_standard_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_unscored_note_should_spawn_standard_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_unscored_note_spawn_order_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_unscored_note_spawn_order_fast_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_unscored_note_spawn_order_fast_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_unscored_note_spawn_order_standard_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_unscored_note_spawn_order_standard_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_unscored_note_terminate_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_unscored_note_terminate_fast_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_unscored_note_terminate_fast_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_unscored_note_terminate_standard_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_unscored_note_terminate_standard_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_unscored_note_touch_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_unscored_note_touch_fast_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_unscored_note_touch_fast_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_unscored_note_touch_standard_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_unscored_note_touch_standard_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_unscored_note_update_parallel_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_unscored_note_update_parallel_fast_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_unscored_note_update_parallel_fast_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_unscored_note_update_parallel_standard_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_unscored_note_update_parallel_standard_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_unscored_note_update_sequential_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_unscored_note_update_sequential_fast_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_unscored_note_update_sequential_fast_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_unscored_note_update_sequential_standard_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_play_unscored_note_update_sequential_standard_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_preview_preview_bpm_change_preprocess_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_preview_preview_bpm_change_preprocess_fast_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_preview_preview_bpm_change_preprocess_fast_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_preview_preview_bpm_change_preprocess_standard_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_preview_preview_bpm_change_preprocess_standard_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_preview_preview_bpm_change_render_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_preview_preview_bpm_change_render_fast_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_preview_preview_bpm_change_render_fast_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_preview_preview_bpm_change_render_standard_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_preview_preview_bpm_change_render_standard_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_preview_preview_hold_connector_render_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_preview_preview_hold_connector_render_fast_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_preview_preview_hold_connector_render_fast_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_preview_preview_hold_connector_render_standard_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_preview_preview_hold_connector_render_standard_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_preview_preview_note_preprocess_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_preview_preview_note_preprocess_fast_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_preview_preview_note_preprocess_fast_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_preview_preview_note_preprocess_standard_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_preview_preview_note_preprocess_standard_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_preview_preview_note_render_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_preview_preview_note_render_fast_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_preview_preview_note_render_fast_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_preview_preview_note_render_standard_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_preview_preview_note_render_standard_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_preview_preview_sim_line_render_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_preview_preview_sim_line_render_fast_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_preview_preview_sim_line_render_fast_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_preview_preview_sim_line_render_standard_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_preview_preview_sim_line_render_standard_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_preview_preview_stage_preprocess_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_preview_preview_stage_preprocess_fast_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_preview_preview_stage_preprocess_fast_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_preview_preview_stage_preprocess_standard_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_preview_preview_stage_preprocess_standard_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_preview_preview_stage_render_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_preview_preview_stage_render_fast_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_preview_preview_stage_render_fast_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_preview_preview_stage_render_standard_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_preview_preview_stage_render_standard_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_preview_preview_timescale_change_preprocess_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_preview_preview_timescale_change_preprocess_fast_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_preview_preview_timescale_change_preprocess_fast_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_preview_preview_timescale_change_preprocess_standard_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_preview_preview_timescale_change_preprocess_standard_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_preview_preview_timescale_change_render_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_preview_preview_timescale_change_render_fast_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_preview_preview_timescale_change_render_fast_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_preview_preview_timescale_change_render_standard_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_preview_preview_timescale_change_render_standard_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_preview_preview_unscored_note_preprocess_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_preview_preview_unscored_note_preprocess_fast_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_preview_preview_unscored_note_preprocess_fast_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_preview_preview_unscored_note_preprocess_standard_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_preview_preview_unscored_note_preprocess_standard_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_preview_preview_unscored_note_render_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_preview_preview_unscored_note_render_fast_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_preview_preview_unscored_note_render_fast_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_preview_preview_unscored_note_render_standard_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_preview_preview_unscored_note_render_standard_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_tutorial_global_navigate_fast_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_tutorial_global_navigate_fast_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_tutorial_global_navigate_fast_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_tutorial_global_navigate_standard_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_tutorial_global_navigate_standard_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_tutorial_global_navigate_standard_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_tutorial_global_preprocess_fast_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_tutorial_global_preprocess_fast_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_tutorial_global_preprocess_fast_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_tutorial_global_preprocess_standard_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_tutorial_global_preprocess_standard_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_tutorial_global_preprocess_standard_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_tutorial_global_update_fast_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_tutorial_global_update_fast_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_tutorial_global_update_fast_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_tutorial_global_update_standard_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_tutorial_global_update_standard_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_tutorial_global_update_standard_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_global_update_spawn_fast_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_global_update_spawn_fast_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_global_update_spawn_fast_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_global_update_spawn_standard_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_global_update_spawn_standard_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_global_update_spawn_standard_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_hold_connector_despawn_time_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_hold_connector_despawn_time_fast_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_hold_connector_despawn_time_fast_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_hold_connector_despawn_time_standard_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_hold_connector_despawn_time_standard_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_hold_connector_spawn_time_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_hold_connector_spawn_time_fast_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_hold_connector_spawn_time_fast_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_hold_connector_spawn_time_standard_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_hold_connector_spawn_time_standard_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_hold_connector_update_parallel_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_hold_connector_update_parallel_fast_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_hold_connector_update_parallel_fast_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_hold_connector_update_parallel_standard_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_hold_connector_update_parallel_standard_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_hold_connector_update_sequential_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_hold_connector_update_sequential_fast_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_hold_connector_update_sequential_fast_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_hold_connector_update_sequential_standard_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_hold_connector_update_sequential_standard_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_hold_manager_despawn_time_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_hold_manager_despawn_time_fast_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_hold_manager_despawn_time_fast_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_hold_manager_despawn_time_standard_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_hold_manager_despawn_time_standard_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_hold_manager_spawn_time_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_hold_manager_spawn_time_fast_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_hold_manager_spawn_time_fast_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_hold_manager_spawn_time_standard_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_hold_manager_spawn_time_standard_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_hold_manager_terminate_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_hold_manager_terminate_fast_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_hold_manager_terminate_fast_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_hold_manager_terminate_standard_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_hold_manager_terminate_standard_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_hold_manager_update_parallel_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_hold_manager_update_parallel_fast_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_hold_manager_update_parallel_fast_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_hold_manager_update_parallel_standard_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_hold_manager_update_parallel_standard_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_note_despawn_time_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_note_despawn_time_fast_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_note_despawn_time_fast_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_note_despawn_time_standard_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_note_despawn_time_standard_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_note_preprocess_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_note_preprocess_fast_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_note_preprocess_fast_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_note_preprocess_standard_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_note_preprocess_standard_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_note_spawn_time_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_note_spawn_time_fast_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_note_spawn_time_fast_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_note_spawn_time_standard_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_note_spawn_time_standard_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_note_terminate_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_note_terminate_fast_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_note_terminate_fast_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_note_terminate_standard_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_note_terminate_standard_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_note_update_parallel_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_note_update_parallel_fast_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_note_update_parallel_fast_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_note_update_parallel_standard_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_note_update_parallel_standard_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_scheduled_lane_effect_despawn_time_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_scheduled_lane_effect_despawn_time_fast_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_scheduled_lane_effect_despawn_time_fast_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_scheduled_lane_effect_despawn_time_standard_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_scheduled_lane_effect_despawn_time_standard_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_scheduled_lane_effect_spawn_time_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_scheduled_lane_effect_spawn_time_fast_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_scheduled_lane_effect_spawn_time_fast_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_scheduled_lane_effect_spawn_time_standard_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_scheduled_lane_effect_spawn_time_standard_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_scheduled_lane_effect_update_parallel_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_scheduled_lane_effect_update_parallel_fast_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_scheduled_lane_effect_update_parallel_fast_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_scheduled_lane_effect_update_parallel_standard_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_scheduled_lane_effect_update_parallel_standard_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_sim_line_despawn_time_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_sim_line_despawn_time_fast_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_sim_line_despawn_time_fast_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_sim_line_despawn_time_standard_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_sim_line_despawn_time_standard_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_sim_line_spawn_time_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_sim_line_spawn_time_fast_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_sim_line_spawn_time_fast_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_sim_line_spawn_time_standard_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_sim_line_spawn_time_standard_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_sim_line_update_parallel_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_sim_line_update_parallel_fast_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_sim_line_update_parallel_fast_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_sim_line_update_parallel_standard_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_sim_line_update_parallel_standard_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_stage_despawn_time_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_stage_despawn_time_fast_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_stage_despawn_time_fast_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_stage_despawn_time_standard_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_stage_despawn_time_standard_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_stage_preprocess_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_stage_preprocess_fast_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_stage_preprocess_fast_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_stage_preprocess_standard_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_stage_preprocess_standard_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_stage_spawn_time_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_stage_spawn_time_fast_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_stage_spawn_time_fast_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_stage_spawn_time_standard_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_stage_spawn_time_standard_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_stage_update_parallel_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_stage_update_parallel_fast_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_stage_update_parallel_fast_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_stage_update_parallel_standard_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_stage_update_parallel_standard_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_unscored_note_despawn_time_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_unscored_note_despawn_time_fast_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_unscored_note_despawn_time_fast_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_unscored_note_despawn_time_standard_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_unscored_note_despawn_time_standard_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_unscored_note_preprocess_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_unscored_note_preprocess_fast_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_unscored_note_preprocess_fast_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_unscored_note_preprocess_standard_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_unscored_note_preprocess_standard_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_unscored_note_spawn_time_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_unscored_note_spawn_time_fast_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_unscored_note_spawn_time_fast_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_unscored_note_spawn_time_standard_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_unscored_note_spawn_time_standard_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_unscored_note_terminate_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_unscored_note_terminate_fast_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_unscored_note_terminate_fast_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_unscored_note_terminate_standard_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_unscored_note_terminate_standard_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_unscored_note_update_parallel_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_unscored_note_update_parallel_fast_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_unscored_note_update_parallel_fast_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_unscored_note_update_parallel_standard_nodes +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/data/pydori_watch_watch_unscored_note_update_parallel_standard_optimized_cfg +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/regressions/test_project.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/script/__init__.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/script/conftest.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/script/test_array.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/script/test_array_map.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/script/test_array_set.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/script/test_assert.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/script/test_dict.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/script/test_flow.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/script/test_functions.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/script/test_generator.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/script/test_genexpr.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/script/test_helpers.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/script/test_interval.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/script/test_match.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/script/test_maybe.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/script/test_num.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/script/test_operator.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/script/test_quad.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/script/test_random.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/script/test_range.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/script/test_record.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/script/test_super.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/script/test_transform.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/script/test_tuple.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/script/test_values.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/script/test_var_array.py +0 -0
- {sonolus_py-0.5.0 → sonolus_py-0.5.2}/tests/script/test_vec.py +0 -0
|
@@ -1126,8 +1126,6 @@ class Visitor(ast.NodeVisitor):
|
|
|
1126
1126
|
if first_param_name is not None:
|
|
1127
1127
|
first_param_value = self.get_name(first_param_name)
|
|
1128
1128
|
args = (validate_value(class_value), validate_value(first_param_value))
|
|
1129
|
-
else:
|
|
1130
|
-
args = (validate_value(class_value),)
|
|
1131
1129
|
return self.handle_call(node, fn, *args, **kwargs)
|
|
1132
1130
|
|
|
1133
1131
|
def visit_FormattedValue(self, node):
|
|
@@ -74,10 +74,12 @@ def compile_mode(
|
|
|
74
74
|
return cb_info.name, node_index
|
|
75
75
|
|
|
76
76
|
all_futures = {}
|
|
77
|
-
|
|
77
|
+
base_archetype_entries = {}
|
|
78
78
|
|
|
79
79
|
if archetypes is not None:
|
|
80
|
-
for
|
|
80
|
+
base_archetypes = {getattr(a, "_derived_base_", a) for a in archetypes}
|
|
81
|
+
|
|
82
|
+
for archetype in base_archetypes:
|
|
81
83
|
archetype._init_fields()
|
|
82
84
|
|
|
83
85
|
archetype_data = {
|
|
@@ -109,7 +111,7 @@ def compile_mode(
|
|
|
109
111
|
cb_name, result_data = process_callback(cb_info, cb, archetype)
|
|
110
112
|
archetype_data[cb_name] = result_data
|
|
111
113
|
|
|
112
|
-
|
|
114
|
+
base_archetype_entries[archetype] = archetype_data
|
|
113
115
|
|
|
114
116
|
if global_callbacks is not None and thread_pool is not None:
|
|
115
117
|
for cb_info, cb in global_callbacks:
|
|
@@ -129,7 +131,10 @@ def compile_mode(
|
|
|
129
131
|
results[cb_name] = node_index
|
|
130
132
|
|
|
131
133
|
if archetypes is not None:
|
|
132
|
-
results["archetypes"] =
|
|
134
|
+
results["archetypes"] = [
|
|
135
|
+
{**base_archetype_entries[getattr(a, "_derived_base_", a)], "name": a.name, "hasInput": a.is_scored}
|
|
136
|
+
for a in archetypes
|
|
137
|
+
]
|
|
133
138
|
|
|
134
139
|
results["nodes"] = nodes.get()
|
|
135
140
|
return results
|
|
@@ -183,6 +183,68 @@ class _ArchetypeField(SonolusDescriptor):
|
|
|
183
183
|
target._copy_from_(value)
|
|
184
184
|
|
|
185
185
|
|
|
186
|
+
class _NameDescriptor(SonolusDescriptor):
|
|
187
|
+
def __init__(self, name: str):
|
|
188
|
+
self.name = name
|
|
189
|
+
|
|
190
|
+
def __get__(self, instance, owner):
|
|
191
|
+
if instance is None:
|
|
192
|
+
return self.name
|
|
193
|
+
elif ctx():
|
|
194
|
+
raise RuntimeError("Cannot access archetype name in from self in a callback, use ArchetypeClass.name")
|
|
195
|
+
else:
|
|
196
|
+
return self.name
|
|
197
|
+
|
|
198
|
+
def __set__(self, instance, value):
|
|
199
|
+
raise AttributeError("Archetype name is read-only and cannot be set")
|
|
200
|
+
|
|
201
|
+
|
|
202
|
+
class _IsScoredDescriptor(SonolusDescriptor):
|
|
203
|
+
def __init__(self, value: bool):
|
|
204
|
+
self.value = value
|
|
205
|
+
|
|
206
|
+
def __get__(self, instance, owner):
|
|
207
|
+
if instance is None:
|
|
208
|
+
return self.value
|
|
209
|
+
elif ctx():
|
|
210
|
+
raise RuntimeError("Cannot access is_scored from self in a callback, use ArchetypeClass.is_scored")
|
|
211
|
+
else:
|
|
212
|
+
return self.value
|
|
213
|
+
|
|
214
|
+
def __set__(self, instance, value):
|
|
215
|
+
raise AttributeError("is_scored is read-only and cannot be set")
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
class _IdDescriptor(SonolusDescriptor):
|
|
219
|
+
def __get__(self, instance, owner):
|
|
220
|
+
if not ctx():
|
|
221
|
+
raise RuntimeError("Archetype id is only available during compilation")
|
|
222
|
+
if instance is None:
|
|
223
|
+
result = ctx().global_state.archetypes.get(owner)
|
|
224
|
+
if result is None:
|
|
225
|
+
raise RuntimeError("Archetype is not registered")
|
|
226
|
+
return result
|
|
227
|
+
else:
|
|
228
|
+
return instance._info.archetype_id
|
|
229
|
+
|
|
230
|
+
def __set__(self, instance, value):
|
|
231
|
+
raise AttributeError("Archetype id is read-only and cannot be set")
|
|
232
|
+
|
|
233
|
+
|
|
234
|
+
class _KeyDescriptor(SonolusDescriptor):
|
|
235
|
+
def __init__(self, value: int | float):
|
|
236
|
+
self.value = value
|
|
237
|
+
|
|
238
|
+
def __get__(self, instance, owner):
|
|
239
|
+
if instance is not None and ctx():
|
|
240
|
+
return ctx().global_state.keys[instance.id]
|
|
241
|
+
else:
|
|
242
|
+
return self.value
|
|
243
|
+
|
|
244
|
+
def __set__(self, instance, value):
|
|
245
|
+
raise AttributeError("Archetype key is read-only and cannot be set")
|
|
246
|
+
|
|
247
|
+
|
|
186
248
|
def imported(*, name: str | None = None) -> Any:
|
|
187
249
|
"""Declare a field as imported.
|
|
188
250
|
|
|
@@ -387,6 +449,28 @@ class _BaseArchetype:
|
|
|
387
449
|
|
|
388
450
|
_data_: _ArchetypeData
|
|
389
451
|
|
|
452
|
+
id: int = 0
|
|
453
|
+
"""The id of the archetype or entity.
|
|
454
|
+
|
|
455
|
+
If accessed on an entity, always returns the runtime archetype id of the entity, even if it doesn't match the type
|
|
456
|
+
that was used to access it.
|
|
457
|
+
|
|
458
|
+
E.g. if an entity of archetype `A` is accessed via [`EntityRef[B]`][sonolus.script.archetype.EntityRef], the id will
|
|
459
|
+
still be the id of `A`.
|
|
460
|
+
"""
|
|
461
|
+
|
|
462
|
+
key: int | float = -1
|
|
463
|
+
"""An optional key for the archetype.
|
|
464
|
+
|
|
465
|
+
May be useful to identify an archetype in an inheritance hierarchy without needing to check id.
|
|
466
|
+
|
|
467
|
+
If accessed on an entity, always returns the runtime key of the entity, even if it doesn't match the type
|
|
468
|
+
that was used to access it.
|
|
469
|
+
|
|
470
|
+
E.g. if an entity of archetype `A` is accessed via [`EntityRef[B]`][sonolus.script.archetype.EntityRef], the key
|
|
471
|
+
will still be the key of `A`.
|
|
472
|
+
"""
|
|
473
|
+
|
|
390
474
|
name: ClassVar[str | None] = None
|
|
391
475
|
"""The name of the archetype.
|
|
392
476
|
|
|
@@ -433,17 +517,7 @@ class _BaseArchetype:
|
|
|
433
517
|
def is_at(cls, index: int) -> bool:
|
|
434
518
|
if not ctx():
|
|
435
519
|
raise RuntimeError("is_at is only available during compilation")
|
|
436
|
-
return entity_info_at(index).archetype_id == cls.id
|
|
437
|
-
|
|
438
|
-
@classmethod
|
|
439
|
-
@meta_fn
|
|
440
|
-
def id(cls) -> int:
|
|
441
|
-
if not ctx():
|
|
442
|
-
raise RuntimeError("Archetype id is only available during compilation")
|
|
443
|
-
result = ctx().global_state.archetypes.get(cls)
|
|
444
|
-
if result is None:
|
|
445
|
-
raise RuntimeError("Archetype is not registered")
|
|
446
|
-
return result
|
|
520
|
+
return entity_info_at(index).archetype_id == cls.id
|
|
447
521
|
|
|
448
522
|
@classmethod
|
|
449
523
|
@meta_fn
|
|
@@ -465,7 +539,7 @@ class _BaseArchetype:
|
|
|
465
539
|
cls._init_fields()
|
|
466
540
|
if not ctx():
|
|
467
541
|
raise RuntimeError("Spawn is only allowed within a callback")
|
|
468
|
-
archetype_id = cls.id
|
|
542
|
+
archetype_id = cls.id
|
|
469
543
|
bound = cls._spawn_signature_.bind_partial(**kwargs)
|
|
470
544
|
bound.apply_defaults()
|
|
471
545
|
data = []
|
|
@@ -497,7 +571,7 @@ class _BaseArchetype:
|
|
|
497
571
|
return entries
|
|
498
572
|
|
|
499
573
|
def __init_subclass__(cls, **kwargs):
|
|
500
|
-
if cls.__module__ == _BaseArchetype.__module__:
|
|
574
|
+
if cls.__module__ == _BaseArchetype.__module__ and not getattr(cls, "_is_derived_", False):
|
|
501
575
|
if cls._supported_callbacks_ is None:
|
|
502
576
|
raise TypeError("Cannot directly subclass Archetype, use the Archetype subclass for your mode")
|
|
503
577
|
cls._default_callbacks_ = {getattr(cls, cb_info.py_name) for cb_info in cls._supported_callbacks_.values()}
|
|
@@ -511,6 +585,11 @@ class _BaseArchetype:
|
|
|
511
585
|
continue
|
|
512
586
|
cls._callbacks_.append(cb)
|
|
513
587
|
cls._field_init_done = False
|
|
588
|
+
cls.id = _IdDescriptor()
|
|
589
|
+
cls._key_ = cls.key
|
|
590
|
+
cls.key = _KeyDescriptor(cls.key)
|
|
591
|
+
cls.name = _NameDescriptor(cls.name)
|
|
592
|
+
cls.is_scored = _IsScoredDescriptor(cls.is_scored)
|
|
514
593
|
|
|
515
594
|
@classmethod
|
|
516
595
|
def _init_fields(cls):
|
|
@@ -521,7 +600,19 @@ class _BaseArchetype:
|
|
|
521
600
|
if hasattr(mro_entry, "_field_init_done"):
|
|
522
601
|
mro_entry._init_fields()
|
|
523
602
|
field_specifiers = get_field_specifiers(
|
|
524
|
-
cls,
|
|
603
|
+
cls,
|
|
604
|
+
skip={
|
|
605
|
+
"id",
|
|
606
|
+
"key",
|
|
607
|
+
"name",
|
|
608
|
+
"is_scored",
|
|
609
|
+
"_key_",
|
|
610
|
+
"_derived_base_",
|
|
611
|
+
"_is_derived_",
|
|
612
|
+
"_default_callbacks_",
|
|
613
|
+
"_callbacks_",
|
|
614
|
+
"_field_init_done",
|
|
615
|
+
},
|
|
525
616
|
).items()
|
|
526
617
|
if not hasattr(cls, "_imported_fields_"):
|
|
527
618
|
cls._imported_fields_ = {}
|
|
@@ -656,6 +747,41 @@ class _BaseArchetype:
|
|
|
656
747
|
def _post_init_fields(cls):
|
|
657
748
|
pass
|
|
658
749
|
|
|
750
|
+
@classmethod
|
|
751
|
+
def derive[T](cls: type[T], name: str, is_scored: bool, key: int | float | None = None) -> type[T]:
|
|
752
|
+
"""Derive a new archetype class from this archetype.
|
|
753
|
+
|
|
754
|
+
Roughly equivalent to returning:
|
|
755
|
+
```python
|
|
756
|
+
class Derived(cls):
|
|
757
|
+
name = <name>
|
|
758
|
+
is_scored = <is_scored>
|
|
759
|
+
key = <key> # Only set if key is not None
|
|
760
|
+
```
|
|
761
|
+
|
|
762
|
+
This is used to create a new archetype with the same fields and callbacks, but with a different name and
|
|
763
|
+
whether it is scored. Compared to manually subclassing, this method also enables faster compilation when
|
|
764
|
+
the same base archetype has multiple derived archetypes by compiling callbacks only once for the base archetype.
|
|
765
|
+
|
|
766
|
+
Args:
|
|
767
|
+
name: The name of the new archetype.
|
|
768
|
+
is_scored: Whether the new archetype is scored.
|
|
769
|
+
key: A key that can be accessed via the `key` property of the new archetype.
|
|
770
|
+
|
|
771
|
+
Returns:
|
|
772
|
+
A new archetype class with the same fields and callbacks as this archetype, but with the given name and
|
|
773
|
+
whether it is scored.
|
|
774
|
+
"""
|
|
775
|
+
if getattr(cls, "_is_derived_", False):
|
|
776
|
+
raise RuntimeError("Cannot derive from a derived archetype")
|
|
777
|
+
cls_dict = {"name": name, "is_scored": is_scored, "_is_derived_": True, "_derived_base_": cls}
|
|
778
|
+
if key is not None:
|
|
779
|
+
if not isinstance(key, (int, float)):
|
|
780
|
+
raise TypeError(f"Key must be an int or float, got {type(key)}")
|
|
781
|
+
cls_dict["key"] = key
|
|
782
|
+
new_cls = type(name, (cls,), cls_dict)
|
|
783
|
+
return new_cls
|
|
784
|
+
|
|
659
785
|
|
|
660
786
|
class PlayArchetype(_BaseArchetype):
|
|
661
787
|
"""Base class for play mode archetypes.
|
|
@@ -807,7 +933,7 @@ class PlayArchetype(_BaseArchetype):
|
|
|
807
933
|
raise RuntimeError("Calling life is only allowed within a callback")
|
|
808
934
|
match self._data_:
|
|
809
935
|
case _ArchetypeSelfData() | _ArchetypeReferenceData():
|
|
810
|
-
return _deref(ctx().blocks.ArchetypeLife, self.id
|
|
936
|
+
return _deref(ctx().blocks.ArchetypeLife, self.id * ArchetypeLife._size_(), ArchetypeLife)
|
|
811
937
|
case _:
|
|
812
938
|
raise RuntimeError("Life is not available in level data")
|
|
813
939
|
|
|
@@ -826,6 +952,26 @@ class PlayArchetype(_BaseArchetype):
|
|
|
826
952
|
case _:
|
|
827
953
|
raise RuntimeError("Result is only accessible from the entity itself")
|
|
828
954
|
|
|
955
|
+
@classmethod
|
|
956
|
+
def update_life(
|
|
957
|
+
cls,
|
|
958
|
+
perfect_increment: int | None = None,
|
|
959
|
+
great_increment: int | None = None,
|
|
960
|
+
good_increment: int | None = None,
|
|
961
|
+
miss_increment: int | None = None,
|
|
962
|
+
):
|
|
963
|
+
"""Update the life of this archetype.
|
|
964
|
+
|
|
965
|
+
Values default to 0.
|
|
966
|
+
|
|
967
|
+
Args:
|
|
968
|
+
perfect_increment: The increment for perfect life.
|
|
969
|
+
great_increment: The increment for great life.
|
|
970
|
+
good_increment: The increment for good life.
|
|
971
|
+
miss_increment: The increment for miss life.
|
|
972
|
+
"""
|
|
973
|
+
archetype_life_of(cls).update(perfect_increment, great_increment, good_increment, miss_increment)
|
|
974
|
+
|
|
829
975
|
|
|
830
976
|
class WatchArchetype(_BaseArchetype):
|
|
831
977
|
"""Base class for watch mode archetypes.
|
|
@@ -920,7 +1066,7 @@ class WatchArchetype(_BaseArchetype):
|
|
|
920
1066
|
raise RuntimeError("Calling life is only allowed within a callback")
|
|
921
1067
|
match self._data_:
|
|
922
1068
|
case _ArchetypeSelfData() | _ArchetypeReferenceData():
|
|
923
|
-
return _deref(ctx().blocks.ArchetypeLife, self.id
|
|
1069
|
+
return _deref(ctx().blocks.ArchetypeLife, self.id * ArchetypeLife._size_(), ArchetypeLife)
|
|
924
1070
|
case _:
|
|
925
1071
|
raise RuntimeError("Life is not available in level data")
|
|
926
1072
|
|
|
@@ -944,6 +1090,26 @@ class WatchArchetype(_BaseArchetype):
|
|
|
944
1090
|
if cls._exported_fields_:
|
|
945
1091
|
raise RuntimeError("Watch archetypes cannot have exported fields")
|
|
946
1092
|
|
|
1093
|
+
@classmethod
|
|
1094
|
+
def update_life(
|
|
1095
|
+
cls,
|
|
1096
|
+
perfect_increment: int | None = None,
|
|
1097
|
+
great_increment: int | None = None,
|
|
1098
|
+
good_increment: int | None = None,
|
|
1099
|
+
miss_increment: int | None = None,
|
|
1100
|
+
):
|
|
1101
|
+
"""Update the life of this archetype.
|
|
1102
|
+
|
|
1103
|
+
Values default to 0.
|
|
1104
|
+
|
|
1105
|
+
Args:
|
|
1106
|
+
perfect_increment: The increment for perfect life.
|
|
1107
|
+
great_increment: The increment for great life.
|
|
1108
|
+
good_increment: The increment for good life.
|
|
1109
|
+
miss_increment: The increment for miss life.
|
|
1110
|
+
"""
|
|
1111
|
+
archetype_life_of(cls).update(perfect_increment, great_increment, good_increment, miss_increment)
|
|
1112
|
+
|
|
947
1113
|
|
|
948
1114
|
class PreviewArchetype(_BaseArchetype):
|
|
949
1115
|
"""Base class for preview mode archetypes.
|
|
@@ -1032,7 +1198,7 @@ def archetype_life_of(archetype: type[_BaseArchetype] | _BaseArchetype) -> Arche
|
|
|
1032
1198
|
raise RuntimeError("Calling archetype_life_of is only allowed within a callback")
|
|
1033
1199
|
match ctx().global_state.mode:
|
|
1034
1200
|
case Mode.PLAY | Mode.WATCH:
|
|
1035
|
-
return _deref(ctx().blocks.ArchetypeLife, archetype.id
|
|
1201
|
+
return _deref(ctx().blocks.ArchetypeLife, archetype.id * ArchetypeLife._size_(), ArchetypeLife)
|
|
1036
1202
|
case _:
|
|
1037
1203
|
raise RuntimeError(f"Archetype life is not available in mode '{ctx().global_state.mode}'")
|
|
1038
1204
|
|
|
@@ -1184,3 +1350,7 @@ class StandardArchetypeName(StrEnum):
|
|
|
1184
1350
|
|
|
1185
1351
|
TIMESCALE_CHANGE = "#TIMESCALE_CHANGE"
|
|
1186
1352
|
"""Timescale change marker"""
|
|
1353
|
+
|
|
1354
|
+
|
|
1355
|
+
type AnyArchetype = PlayArchetype | WatchArchetype | PreviewArchetype
|
|
1356
|
+
"""Union of all archetype types."""
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
from collections.abc import Iterable
|
|
3
|
+
from collections.abc import Iterable, Sequence
|
|
4
4
|
from contextlib import contextmanager
|
|
5
5
|
from contextvars import ContextVar
|
|
6
6
|
from dataclasses import dataclass
|
|
7
7
|
from threading import Lock
|
|
8
|
-
from typing import Any, Self
|
|
8
|
+
from typing import Any, Literal, Self
|
|
9
9
|
|
|
10
10
|
from sonolus.backend.blocks import BlockData, PlayBlock
|
|
11
11
|
from sonolus.backend.ir import IRConst, IRExpr, IRStmt
|
|
@@ -41,6 +41,7 @@ debug_var = ContextVar("debug_var", default=_disabled_debug_config)
|
|
|
41
41
|
|
|
42
42
|
class GlobalContextState:
|
|
43
43
|
archetypes: dict[type, int]
|
|
44
|
+
keys: Sequence[int] | None
|
|
44
45
|
rom: ReadOnlyMemory
|
|
45
46
|
const_mappings: dict[Any, int]
|
|
46
47
|
environment_mappings: dict[_GlobalInfo, int]
|
|
@@ -49,7 +50,14 @@ class GlobalContextState:
|
|
|
49
50
|
lock: Lock
|
|
50
51
|
|
|
51
52
|
def __init__(self, mode: Mode, archetypes: dict[type, int] | None = None, rom: ReadOnlyMemory | None = None):
|
|
53
|
+
from sonolus.script.array import Array
|
|
54
|
+
|
|
52
55
|
self.archetypes = archetypes or {}
|
|
56
|
+
self.keys = (
|
|
57
|
+
Array(*((getattr(a, "_key_", -1)) for a in sorted(self.archetypes, key=lambda a: archetypes[a])))
|
|
58
|
+
if archetypes
|
|
59
|
+
else Array[int, Literal[0]]()
|
|
60
|
+
)
|
|
53
61
|
self.rom = ReadOnlyMemory() if rom is None else rom
|
|
54
62
|
self.const_mappings = {}
|
|
55
63
|
self.environment_mappings = {}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|