sonolus.py 0.4.1__tar.gz → 0.5.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of sonolus.py might be problematic. Click here for more details.

Files changed (627) hide show
  1. sonolus_py-0.5.0/.python-version +1 -0
  2. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/PKG-INFO +1 -1
  3. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/doc_stubs/builtins.pyi +10 -0
  4. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/docs/concepts/builtins.md +1 -0
  5. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/docs/concepts/constructs.md +3 -1
  6. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/docs/concepts/types.md +3 -6
  7. sonolus_py-0.5.0/docs/guides/bucket.md +80 -0
  8. sonolus_py-0.5.0/docs/guides/coming-soon.md +3 -0
  9. sonolus_py-0.5.0/docs/guides/effect.md +99 -0
  10. sonolus_py-0.5.0/docs/guides/index.md +5 -0
  11. sonolus_py-0.5.0/docs/guides/particle.md +93 -0
  12. sonolus_py-0.5.0/docs/guides/play.md +102 -0
  13. sonolus_py-0.5.0/docs/guides/project-structure.md +70 -0
  14. sonolus_py-0.5.0/docs/guides/screen.md +30 -0
  15. sonolus_py-0.5.0/docs/guides/setup.md +15 -0
  16. sonolus_py-0.5.0/docs/guides/skin.md +128 -0
  17. sonolus_py-0.5.0/docs/guides/ui.md +143 -0
  18. sonolus_py-0.5.0/docs/guides/usage.md +37 -0
  19. sonolus_py-0.5.0/docs/index.md +33 -0
  20. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/docs/overview.md +19 -23
  21. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/mkdocs.yml +13 -0
  22. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/pyproject.toml +2 -2
  23. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/backend/optimize/constant_evaluation.py +2 -0
  24. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/backend/utils.py +15 -24
  25. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/backend/visitor.py +35 -11
  26. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/build/cli.py +3 -3
  27. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/build/compile.py +16 -1
  28. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/script/archetype.py +21 -12
  29. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/script/array.py +1 -1
  30. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/script/bucket.py +7 -0
  31. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/script/containers.py +1 -1
  32. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/script/easing.py +0 -1
  33. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/script/effect.py +4 -2
  34. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/script/globals.py +5 -2
  35. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/script/internal/builtin_impls.py +7 -0
  36. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/script/internal/context.py +7 -1
  37. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/script/internal/impl.py +1 -0
  38. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/script/internal/native.py +1 -1
  39. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/script/iterator.py +4 -2
  40. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/script/maybe.py +15 -12
  41. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/script/sprite.py +1 -1
  42. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/script/stream.py +6 -5
  43. sonolus_py-0.5.0/tests/script/test_super.py +90 -0
  44. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/uv.lock +1 -1
  45. sonolus_py-0.4.1/.python-version +0 -1
  46. sonolus_py-0.4.1/docs/index.md +0 -27
  47. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/.gitattributes +0 -0
  48. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/.github/workflows/publish.yaml +0 -0
  49. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/.gitignore +0 -0
  50. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/.run/Python tests in tests.run.xml +0 -0
  51. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/LICENSE +0 -0
  52. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/README.md +0 -0
  53. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/doc_stubs/__init__.py +0 -0
  54. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/doc_stubs/math.pyi +0 -0
  55. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/doc_stubs/num.pyi +0 -0
  56. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/doc_stubs/random.pyi +0 -0
  57. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/docs/CNAME +0 -0
  58. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/docs/concepts/cli.md +0 -0
  59. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/docs/concepts/index.md +0 -0
  60. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/docs/concepts/project.md +0 -0
  61. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/docs/concepts/resources.md +0 -0
  62. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/docs/reference/builtins.md +0 -0
  63. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/docs/reference/index.md +0 -0
  64. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/docs/reference/math.md +0 -0
  65. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/docs/reference/random.md +0 -0
  66. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/docs/reference/sonolus.script.archetype.md +0 -0
  67. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/docs/reference/sonolus.script.array.md +0 -0
  68. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/docs/reference/sonolus.script.array_like.md +0 -0
  69. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/docs/reference/sonolus.script.bucket.md +0 -0
  70. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/docs/reference/sonolus.script.containers.md +0 -0
  71. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/docs/reference/sonolus.script.debug.md +0 -0
  72. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/docs/reference/sonolus.script.easing.md +0 -0
  73. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/docs/reference/sonolus.script.effect.md +0 -0
  74. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/docs/reference/sonolus.script.engine.md +0 -0
  75. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/docs/reference/sonolus.script.globals.md +0 -0
  76. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/docs/reference/sonolus.script.instruction.md +0 -0
  77. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/docs/reference/sonolus.script.interval.md +0 -0
  78. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/docs/reference/sonolus.script.iterator.md +0 -0
  79. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/docs/reference/sonolus.script.level.md +0 -0
  80. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/docs/reference/sonolus.script.maybe.md +0 -0
  81. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/docs/reference/sonolus.script.metadata.md +0 -0
  82. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/docs/reference/sonolus.script.num.md +0 -0
  83. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/docs/reference/sonolus.script.options.md +0 -0
  84. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/docs/reference/sonolus.script.particle.md +0 -0
  85. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/docs/reference/sonolus.script.printing.md +0 -0
  86. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/docs/reference/sonolus.script.project.md +0 -0
  87. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/docs/reference/sonolus.script.quad.md +0 -0
  88. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/docs/reference/sonolus.script.record.md +0 -0
  89. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/docs/reference/sonolus.script.runtime.md +0 -0
  90. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/docs/reference/sonolus.script.sprite.md +0 -0
  91. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/docs/reference/sonolus.script.stream.md +0 -0
  92. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/docs/reference/sonolus.script.text.md +0 -0
  93. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/docs/reference/sonolus.script.timing.md +0 -0
  94. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/docs/reference/sonolus.script.transform.md +0 -0
  95. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/docs/reference/sonolus.script.ui.md +0 -0
  96. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/docs/reference/sonolus.script.values.md +0 -0
  97. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/docs/reference/sonolus.script.vec.md +0 -0
  98. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/scripts/generate.py +0 -0
  99. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/scripts/runtimes/Engine/Tutorial/Blocks.json +0 -0
  100. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/scripts/runtimes/Functions.json +0 -0
  101. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/scripts/runtimes/Level/Play/Blocks.json +0 -0
  102. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/scripts/runtimes/Level/Preview/Blocks.json +0 -0
  103. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/scripts/runtimes/Level/Watch/Blocks.json +0 -0
  104. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/__init__.py +0 -0
  105. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/backend/__init__.py +0 -0
  106. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/backend/blocks.py +0 -0
  107. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/backend/excepthook.py +0 -0
  108. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/backend/finalize.py +0 -0
  109. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/backend/interpret.py +0 -0
  110. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/backend/ir.py +0 -0
  111. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/backend/mode.py +0 -0
  112. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/backend/node.py +0 -0
  113. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/backend/ops.py +0 -0
  114. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/backend/optimize/__init__.py +0 -0
  115. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/backend/optimize/allocate.py +0 -0
  116. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/backend/optimize/copy_coalesce.py +0 -0
  117. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/backend/optimize/dead_code.py +0 -0
  118. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/backend/optimize/dominance.py +0 -0
  119. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/backend/optimize/flow.py +0 -0
  120. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/backend/optimize/inlining.py +0 -0
  121. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/backend/optimize/liveness.py +0 -0
  122. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/backend/optimize/optimize.py +0 -0
  123. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/backend/optimize/passes.py +0 -0
  124. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/backend/optimize/simplify.py +0 -0
  125. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/backend/optimize/ssa.py +0 -0
  126. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/backend/place.py +0 -0
  127. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/build/__init__.py +0 -0
  128. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/build/collection.py +0 -0
  129. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/build/engine.py +0 -0
  130. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/build/level.py +0 -0
  131. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/build/node.py +0 -0
  132. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/build/project.py +0 -0
  133. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/py.typed +0 -0
  134. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/script/__init__.py +0 -0
  135. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/script/array_like.py +0 -0
  136. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/script/debug.py +0 -0
  137. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/script/engine.py +0 -0
  138. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/script/instruction.py +0 -0
  139. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/script/internal/__init__.py +0 -0
  140. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/script/internal/callbacks.py +0 -0
  141. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/script/internal/constant.py +0 -0
  142. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/script/internal/descriptor.py +0 -0
  143. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/script/internal/dict_impl.py +0 -0
  144. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/script/internal/error.py +0 -0
  145. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/script/internal/generic.py +0 -0
  146. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/script/internal/introspection.py +0 -0
  147. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/script/internal/math_impls.py +0 -0
  148. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/script/internal/random.py +0 -0
  149. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/script/internal/range.py +0 -0
  150. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/script/internal/simulation_context.py +0 -0
  151. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/script/internal/transient.py +0 -0
  152. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/script/internal/tuple_impl.py +0 -0
  153. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/script/internal/value.py +0 -0
  154. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/script/interval.py +0 -0
  155. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/script/level.py +0 -0
  156. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/script/metadata.py +0 -0
  157. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/script/num.py +0 -0
  158. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/script/options.py +0 -0
  159. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/script/particle.py +0 -0
  160. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/script/pointer.py +0 -0
  161. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/script/printing.py +0 -0
  162. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/script/project.py +0 -0
  163. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/script/quad.py +0 -0
  164. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/script/record.py +0 -0
  165. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/script/runtime.py +0 -0
  166. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/script/text.py +0 -0
  167. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/script/timing.py +0 -0
  168. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/script/transform.py +0 -0
  169. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/script/ui.py +0 -0
  170. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/script/values.py +0 -0
  171. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/sonolus/script/vec.py +0 -0
  172. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/test_projects/pydori/__init__.py +0 -0
  173. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/test_projects/pydori/level.py +0 -0
  174. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/test_projects/pydori/lib/__init__.py +0 -0
  175. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/test_projects/pydori/lib/buckets.py +0 -0
  176. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/test_projects/pydori/lib/connector.py +0 -0
  177. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/test_projects/pydori/lib/effect.py +0 -0
  178. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/test_projects/pydori/lib/layer.py +0 -0
  179. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/test_projects/pydori/lib/layout.py +0 -0
  180. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/test_projects/pydori/lib/note.py +0 -0
  181. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/test_projects/pydori/lib/options.py +0 -0
  182. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/test_projects/pydori/lib/particle.py +0 -0
  183. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/test_projects/pydori/lib/skin.py +0 -0
  184. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/test_projects/pydori/lib/stage.py +0 -0
  185. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/test_projects/pydori/lib/streams.py +0 -0
  186. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/test_projects/pydori/lib/ui.py +0 -0
  187. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/test_projects/pydori/play/__init__.py +0 -0
  188. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/test_projects/pydori/play/connector.py +0 -0
  189. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/test_projects/pydori/play/event.py +0 -0
  190. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/test_projects/pydori/play/input.py +0 -0
  191. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/test_projects/pydori/play/mode.py +0 -0
  192. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/test_projects/pydori/play/note.py +0 -0
  193. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/test_projects/pydori/play/stage.py +0 -0
  194. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/test_projects/pydori/preview/__init__.py +0 -0
  195. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/test_projects/pydori/preview/connector.py +0 -0
  196. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/test_projects/pydori/preview/event.py +0 -0
  197. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/test_projects/pydori/preview/layout.py +0 -0
  198. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/test_projects/pydori/preview/mode.py +0 -0
  199. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/test_projects/pydori/preview/note.py +0 -0
  200. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/test_projects/pydori/preview/stage.py +0 -0
  201. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/test_projects/pydori/project.py +0 -0
  202. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/test_projects/pydori/tutorial/__init__.py +0 -0
  203. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/test_projects/pydori/tutorial/framework.py +0 -0
  204. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/test_projects/pydori/tutorial/instructions.py +0 -0
  205. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/test_projects/pydori/tutorial/intro.py +0 -0
  206. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/test_projects/pydori/tutorial/mode.py +0 -0
  207. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/test_projects/pydori/tutorial/navigate.py +0 -0
  208. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/test_projects/pydori/tutorial/painting.py +0 -0
  209. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/test_projects/pydori/tutorial/phases.py +0 -0
  210. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/test_projects/pydori/tutorial/preprocess.py +0 -0
  211. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/test_projects/pydori/tutorial/update.py +0 -0
  212. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/test_projects/pydori/watch/__init__.py +0 -0
  213. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/test_projects/pydori/watch/connector.py +0 -0
  214. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/test_projects/pydori/watch/event.py +0 -0
  215. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/test_projects/pydori/watch/mode.py +0 -0
  216. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/test_projects/pydori/watch/note.py +0 -0
  217. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/test_projects/pydori/watch/stage.py +0 -0
  218. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/test_projects/pydori/watch/update_spawn.py +0 -0
  219. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/__init__.py +0 -0
  220. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/__init__.py +0 -0
  221. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/conftest.py +0 -0
  222. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_hold_connector_should_spawn_cfg +0 -0
  223. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_hold_connector_should_spawn_fast_nodes +0 -0
  224. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_hold_connector_should_spawn_fast_optimized_cfg +0 -0
  225. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_hold_connector_should_spawn_standard_nodes +0 -0
  226. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_hold_connector_should_spawn_standard_optimized_cfg +0 -0
  227. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_hold_connector_spawn_order_cfg +0 -0
  228. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_hold_connector_spawn_order_fast_nodes +0 -0
  229. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_hold_connector_spawn_order_fast_optimized_cfg +0 -0
  230. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_hold_connector_spawn_order_standard_nodes +0 -0
  231. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_hold_connector_spawn_order_standard_optimized_cfg +0 -0
  232. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_hold_connector_update_parallel_cfg +0 -0
  233. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_hold_connector_update_parallel_fast_nodes +0 -0
  234. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_hold_connector_update_parallel_fast_optimized_cfg +0 -0
  235. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_hold_connector_update_parallel_standard_nodes +0 -0
  236. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_hold_connector_update_parallel_standard_optimized_cfg +0 -0
  237. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_hold_connector_update_sequential_cfg +0 -0
  238. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_hold_connector_update_sequential_fast_nodes +0 -0
  239. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_hold_connector_update_sequential_fast_optimized_cfg +0 -0
  240. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_hold_connector_update_sequential_standard_nodes +0 -0
  241. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_hold_connector_update_sequential_standard_optimized_cfg +0 -0
  242. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_hold_manager_touch_cfg +0 -0
  243. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_hold_manager_touch_fast_nodes +0 -0
  244. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_hold_manager_touch_fast_optimized_cfg +0 -0
  245. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_hold_manager_touch_standard_nodes +0 -0
  246. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_hold_manager_touch_standard_optimized_cfg +0 -0
  247. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_hold_manager_update_parallel_cfg +0 -0
  248. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_hold_manager_update_parallel_fast_nodes +0 -0
  249. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_hold_manager_update_parallel_fast_optimized_cfg +0 -0
  250. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_hold_manager_update_parallel_standard_nodes +0 -0
  251. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_hold_manager_update_parallel_standard_optimized_cfg +0 -0
  252. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_note_initialize_cfg +0 -0
  253. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_note_initialize_fast_nodes +0 -0
  254. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_note_initialize_fast_optimized_cfg +0 -0
  255. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_note_initialize_standard_nodes +0 -0
  256. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_note_initialize_standard_optimized_cfg +0 -0
  257. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_note_preprocess_cfg +0 -0
  258. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_note_preprocess_fast_nodes +0 -0
  259. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_note_preprocess_fast_optimized_cfg +0 -0
  260. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_note_preprocess_standard_nodes +0 -0
  261. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_note_preprocess_standard_optimized_cfg +0 -0
  262. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_note_should_spawn_cfg +0 -0
  263. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_note_should_spawn_fast_nodes +0 -0
  264. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_note_should_spawn_fast_optimized_cfg +0 -0
  265. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_note_should_spawn_standard_nodes +0 -0
  266. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_note_should_spawn_standard_optimized_cfg +0 -0
  267. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_note_spawn_order_cfg +0 -0
  268. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_note_spawn_order_fast_nodes +0 -0
  269. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_note_spawn_order_fast_optimized_cfg +0 -0
  270. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_note_spawn_order_standard_nodes +0 -0
  271. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_note_spawn_order_standard_optimized_cfg +0 -0
  272. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_note_terminate_cfg +0 -0
  273. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_note_terminate_fast_nodes +0 -0
  274. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_note_terminate_fast_optimized_cfg +0 -0
  275. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_note_terminate_standard_nodes +0 -0
  276. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_note_terminate_standard_optimized_cfg +0 -0
  277. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_note_touch_cfg +0 -0
  278. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_note_touch_fast_nodes +0 -0
  279. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_note_touch_fast_optimized_cfg +0 -0
  280. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_note_touch_standard_nodes +0 -0
  281. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_note_touch_standard_optimized_cfg +0 -0
  282. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_note_update_parallel_cfg +0 -0
  283. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_note_update_parallel_fast_nodes +0 -0
  284. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_note_update_parallel_fast_optimized_cfg +0 -0
  285. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_note_update_parallel_standard_nodes +0 -0
  286. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_note_update_parallel_standard_optimized_cfg +0 -0
  287. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_note_update_sequential_cfg +0 -0
  288. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_note_update_sequential_fast_nodes +0 -0
  289. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_note_update_sequential_fast_optimized_cfg +0 -0
  290. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_note_update_sequential_standard_nodes +0 -0
  291. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_note_update_sequential_standard_optimized_cfg +0 -0
  292. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_sim_line_should_spawn_cfg +0 -0
  293. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_sim_line_should_spawn_fast_nodes +0 -0
  294. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_sim_line_should_spawn_fast_optimized_cfg +0 -0
  295. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_sim_line_should_spawn_standard_nodes +0 -0
  296. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_sim_line_should_spawn_standard_optimized_cfg +0 -0
  297. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_sim_line_spawn_order_cfg +0 -0
  298. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_sim_line_spawn_order_fast_nodes +0 -0
  299. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_sim_line_spawn_order_fast_optimized_cfg +0 -0
  300. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_sim_line_spawn_order_standard_nodes +0 -0
  301. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_sim_line_spawn_order_standard_optimized_cfg +0 -0
  302. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_sim_line_update_parallel_cfg +0 -0
  303. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_sim_line_update_parallel_fast_nodes +0 -0
  304. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_sim_line_update_parallel_fast_optimized_cfg +0 -0
  305. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_sim_line_update_parallel_standard_nodes +0 -0
  306. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_sim_line_update_parallel_standard_optimized_cfg +0 -0
  307. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_stage_preprocess_cfg +0 -0
  308. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_stage_preprocess_fast_nodes +0 -0
  309. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_stage_preprocess_fast_optimized_cfg +0 -0
  310. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_stage_preprocess_standard_nodes +0 -0
  311. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_stage_preprocess_standard_optimized_cfg +0 -0
  312. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_stage_should_spawn_cfg +0 -0
  313. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_stage_should_spawn_fast_nodes +0 -0
  314. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_stage_should_spawn_fast_optimized_cfg +0 -0
  315. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_stage_should_spawn_standard_nodes +0 -0
  316. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_stage_should_spawn_standard_optimized_cfg +0 -0
  317. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_stage_spawn_order_cfg +0 -0
  318. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_stage_spawn_order_fast_nodes +0 -0
  319. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_stage_spawn_order_fast_optimized_cfg +0 -0
  320. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_stage_spawn_order_standard_nodes +0 -0
  321. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_stage_spawn_order_standard_optimized_cfg +0 -0
  322. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_stage_touch_cfg +0 -0
  323. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_stage_touch_fast_nodes +0 -0
  324. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_stage_touch_fast_optimized_cfg +0 -0
  325. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_stage_touch_standard_nodes +0 -0
  326. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_stage_touch_standard_optimized_cfg +0 -0
  327. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_stage_update_parallel_cfg +0 -0
  328. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_stage_update_parallel_fast_nodes +0 -0
  329. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_stage_update_parallel_fast_optimized_cfg +0 -0
  330. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_stage_update_parallel_standard_nodes +0 -0
  331. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_stage_update_parallel_standard_optimized_cfg +0 -0
  332. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_stage_update_sequential_cfg +0 -0
  333. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_stage_update_sequential_fast_nodes +0 -0
  334. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_stage_update_sequential_fast_optimized_cfg +0 -0
  335. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_stage_update_sequential_standard_nodes +0 -0
  336. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_stage_update_sequential_standard_optimized_cfg +0 -0
  337. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_unscored_note_initialize_cfg +0 -0
  338. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_unscored_note_initialize_fast_nodes +0 -0
  339. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_unscored_note_initialize_fast_optimized_cfg +0 -0
  340. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_unscored_note_initialize_standard_nodes +0 -0
  341. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_unscored_note_initialize_standard_optimized_cfg +0 -0
  342. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_unscored_note_preprocess_cfg +0 -0
  343. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_unscored_note_preprocess_fast_nodes +0 -0
  344. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_unscored_note_preprocess_fast_optimized_cfg +0 -0
  345. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_unscored_note_preprocess_standard_nodes +0 -0
  346. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_unscored_note_preprocess_standard_optimized_cfg +0 -0
  347. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_unscored_note_should_spawn_cfg +0 -0
  348. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_unscored_note_should_spawn_fast_nodes +0 -0
  349. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_unscored_note_should_spawn_fast_optimized_cfg +0 -0
  350. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_unscored_note_should_spawn_standard_nodes +0 -0
  351. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_unscored_note_should_spawn_standard_optimized_cfg +0 -0
  352. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_unscored_note_spawn_order_cfg +0 -0
  353. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_unscored_note_spawn_order_fast_nodes +0 -0
  354. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_unscored_note_spawn_order_fast_optimized_cfg +0 -0
  355. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_unscored_note_spawn_order_standard_nodes +0 -0
  356. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_unscored_note_spawn_order_standard_optimized_cfg +0 -0
  357. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_unscored_note_terminate_cfg +0 -0
  358. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_unscored_note_terminate_fast_nodes +0 -0
  359. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_unscored_note_terminate_fast_optimized_cfg +0 -0
  360. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_unscored_note_terminate_standard_nodes +0 -0
  361. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_unscored_note_terminate_standard_optimized_cfg +0 -0
  362. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_unscored_note_touch_cfg +0 -0
  363. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_unscored_note_touch_fast_nodes +0 -0
  364. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_unscored_note_touch_fast_optimized_cfg +0 -0
  365. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_unscored_note_touch_standard_nodes +0 -0
  366. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_unscored_note_touch_standard_optimized_cfg +0 -0
  367. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_unscored_note_update_parallel_cfg +0 -0
  368. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_unscored_note_update_parallel_fast_nodes +0 -0
  369. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_unscored_note_update_parallel_fast_optimized_cfg +0 -0
  370. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_unscored_note_update_parallel_standard_nodes +0 -0
  371. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_unscored_note_update_parallel_standard_optimized_cfg +0 -0
  372. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_unscored_note_update_sequential_cfg +0 -0
  373. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_unscored_note_update_sequential_fast_nodes +0 -0
  374. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_unscored_note_update_sequential_fast_optimized_cfg +0 -0
  375. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_unscored_note_update_sequential_standard_nodes +0 -0
  376. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_play_unscored_note_update_sequential_standard_optimized_cfg +0 -0
  377. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_preview_preview_bpm_change_preprocess_cfg +0 -0
  378. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_preview_preview_bpm_change_preprocess_fast_nodes +0 -0
  379. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_preview_preview_bpm_change_preprocess_fast_optimized_cfg +0 -0
  380. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_preview_preview_bpm_change_preprocess_standard_nodes +0 -0
  381. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_preview_preview_bpm_change_preprocess_standard_optimized_cfg +0 -0
  382. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_preview_preview_bpm_change_render_cfg +0 -0
  383. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_preview_preview_bpm_change_render_fast_nodes +0 -0
  384. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_preview_preview_bpm_change_render_fast_optimized_cfg +0 -0
  385. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_preview_preview_bpm_change_render_standard_nodes +0 -0
  386. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_preview_preview_bpm_change_render_standard_optimized_cfg +0 -0
  387. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_preview_preview_hold_connector_render_cfg +0 -0
  388. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_preview_preview_hold_connector_render_fast_nodes +0 -0
  389. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_preview_preview_hold_connector_render_fast_optimized_cfg +0 -0
  390. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_preview_preview_hold_connector_render_standard_nodes +0 -0
  391. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_preview_preview_hold_connector_render_standard_optimized_cfg +0 -0
  392. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_preview_preview_note_preprocess_cfg +0 -0
  393. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_preview_preview_note_preprocess_fast_nodes +0 -0
  394. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_preview_preview_note_preprocess_fast_optimized_cfg +0 -0
  395. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_preview_preview_note_preprocess_standard_nodes +0 -0
  396. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_preview_preview_note_preprocess_standard_optimized_cfg +0 -0
  397. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_preview_preview_note_render_cfg +0 -0
  398. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_preview_preview_note_render_fast_nodes +0 -0
  399. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_preview_preview_note_render_fast_optimized_cfg +0 -0
  400. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_preview_preview_note_render_standard_nodes +0 -0
  401. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_preview_preview_note_render_standard_optimized_cfg +0 -0
  402. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_preview_preview_sim_line_render_cfg +0 -0
  403. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_preview_preview_sim_line_render_fast_nodes +0 -0
  404. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_preview_preview_sim_line_render_fast_optimized_cfg +0 -0
  405. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_preview_preview_sim_line_render_standard_nodes +0 -0
  406. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_preview_preview_sim_line_render_standard_optimized_cfg +0 -0
  407. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_preview_preview_stage_preprocess_cfg +0 -0
  408. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_preview_preview_stage_preprocess_fast_nodes +0 -0
  409. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_preview_preview_stage_preprocess_fast_optimized_cfg +0 -0
  410. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_preview_preview_stage_preprocess_standard_nodes +0 -0
  411. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_preview_preview_stage_preprocess_standard_optimized_cfg +0 -0
  412. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_preview_preview_stage_render_cfg +0 -0
  413. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_preview_preview_stage_render_fast_nodes +0 -0
  414. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_preview_preview_stage_render_fast_optimized_cfg +0 -0
  415. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_preview_preview_stage_render_standard_nodes +0 -0
  416. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_preview_preview_stage_render_standard_optimized_cfg +0 -0
  417. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_preview_preview_timescale_change_preprocess_cfg +0 -0
  418. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_preview_preview_timescale_change_preprocess_fast_nodes +0 -0
  419. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_preview_preview_timescale_change_preprocess_fast_optimized_cfg +0 -0
  420. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_preview_preview_timescale_change_preprocess_standard_nodes +0 -0
  421. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_preview_preview_timescale_change_preprocess_standard_optimized_cfg +0 -0
  422. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_preview_preview_timescale_change_render_cfg +0 -0
  423. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_preview_preview_timescale_change_render_fast_nodes +0 -0
  424. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_preview_preview_timescale_change_render_fast_optimized_cfg +0 -0
  425. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_preview_preview_timescale_change_render_standard_nodes +0 -0
  426. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_preview_preview_timescale_change_render_standard_optimized_cfg +0 -0
  427. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_preview_preview_unscored_note_preprocess_cfg +0 -0
  428. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_preview_preview_unscored_note_preprocess_fast_nodes +0 -0
  429. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_preview_preview_unscored_note_preprocess_fast_optimized_cfg +0 -0
  430. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_preview_preview_unscored_note_preprocess_standard_nodes +0 -0
  431. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_preview_preview_unscored_note_preprocess_standard_optimized_cfg +0 -0
  432. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_preview_preview_unscored_note_render_cfg +0 -0
  433. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_preview_preview_unscored_note_render_fast_nodes +0 -0
  434. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_preview_preview_unscored_note_render_fast_optimized_cfg +0 -0
  435. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_preview_preview_unscored_note_render_standard_nodes +0 -0
  436. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_preview_preview_unscored_note_render_standard_optimized_cfg +0 -0
  437. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_tutorial_global_navigate_fast_cfg +0 -0
  438. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_tutorial_global_navigate_fast_nodes +0 -0
  439. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_tutorial_global_navigate_fast_optimized_cfg +0 -0
  440. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_tutorial_global_navigate_standard_cfg +0 -0
  441. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_tutorial_global_navigate_standard_nodes +0 -0
  442. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_tutorial_global_navigate_standard_optimized_cfg +0 -0
  443. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_tutorial_global_preprocess_fast_cfg +0 -0
  444. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_tutorial_global_preprocess_fast_nodes +0 -0
  445. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_tutorial_global_preprocess_fast_optimized_cfg +0 -0
  446. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_tutorial_global_preprocess_standard_cfg +0 -0
  447. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_tutorial_global_preprocess_standard_nodes +0 -0
  448. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_tutorial_global_preprocess_standard_optimized_cfg +0 -0
  449. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_tutorial_global_update_fast_cfg +0 -0
  450. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_tutorial_global_update_fast_nodes +0 -0
  451. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_tutorial_global_update_fast_optimized_cfg +0 -0
  452. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_tutorial_global_update_standard_cfg +0 -0
  453. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_tutorial_global_update_standard_nodes +0 -0
  454. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_tutorial_global_update_standard_optimized_cfg +0 -0
  455. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_global_update_spawn_fast_cfg +0 -0
  456. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_global_update_spawn_fast_nodes +0 -0
  457. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_global_update_spawn_fast_optimized_cfg +0 -0
  458. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_global_update_spawn_standard_cfg +0 -0
  459. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_global_update_spawn_standard_nodes +0 -0
  460. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_global_update_spawn_standard_optimized_cfg +0 -0
  461. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_hold_connector_despawn_time_cfg +0 -0
  462. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_hold_connector_despawn_time_fast_nodes +0 -0
  463. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_hold_connector_despawn_time_fast_optimized_cfg +0 -0
  464. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_hold_connector_despawn_time_standard_nodes +0 -0
  465. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_hold_connector_despawn_time_standard_optimized_cfg +0 -0
  466. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_hold_connector_spawn_time_cfg +0 -0
  467. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_hold_connector_spawn_time_fast_nodes +0 -0
  468. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_hold_connector_spawn_time_fast_optimized_cfg +0 -0
  469. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_hold_connector_spawn_time_standard_nodes +0 -0
  470. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_hold_connector_spawn_time_standard_optimized_cfg +0 -0
  471. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_hold_connector_update_parallel_cfg +0 -0
  472. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_hold_connector_update_parallel_fast_nodes +0 -0
  473. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_hold_connector_update_parallel_fast_optimized_cfg +0 -0
  474. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_hold_connector_update_parallel_standard_nodes +0 -0
  475. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_hold_connector_update_parallel_standard_optimized_cfg +0 -0
  476. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_hold_connector_update_sequential_cfg +0 -0
  477. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_hold_connector_update_sequential_fast_nodes +0 -0
  478. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_hold_connector_update_sequential_fast_optimized_cfg +0 -0
  479. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_hold_connector_update_sequential_standard_nodes +0 -0
  480. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_hold_connector_update_sequential_standard_optimized_cfg +0 -0
  481. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_hold_manager_despawn_time_cfg +0 -0
  482. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_hold_manager_despawn_time_fast_nodes +0 -0
  483. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_hold_manager_despawn_time_fast_optimized_cfg +0 -0
  484. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_hold_manager_despawn_time_standard_nodes +0 -0
  485. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_hold_manager_despawn_time_standard_optimized_cfg +0 -0
  486. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_hold_manager_spawn_time_cfg +0 -0
  487. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_hold_manager_spawn_time_fast_nodes +0 -0
  488. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_hold_manager_spawn_time_fast_optimized_cfg +0 -0
  489. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_hold_manager_spawn_time_standard_nodes +0 -0
  490. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_hold_manager_spawn_time_standard_optimized_cfg +0 -0
  491. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_hold_manager_terminate_cfg +0 -0
  492. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_hold_manager_terminate_fast_nodes +0 -0
  493. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_hold_manager_terminate_fast_optimized_cfg +0 -0
  494. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_hold_manager_terminate_standard_nodes +0 -0
  495. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_hold_manager_terminate_standard_optimized_cfg +0 -0
  496. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_hold_manager_update_parallel_cfg +0 -0
  497. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_hold_manager_update_parallel_fast_nodes +0 -0
  498. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_hold_manager_update_parallel_fast_optimized_cfg +0 -0
  499. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_hold_manager_update_parallel_standard_nodes +0 -0
  500. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_hold_manager_update_parallel_standard_optimized_cfg +0 -0
  501. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_note_despawn_time_cfg +0 -0
  502. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_note_despawn_time_fast_nodes +0 -0
  503. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_note_despawn_time_fast_optimized_cfg +0 -0
  504. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_note_despawn_time_standard_nodes +0 -0
  505. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_note_despawn_time_standard_optimized_cfg +0 -0
  506. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_note_preprocess_cfg +0 -0
  507. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_note_preprocess_fast_nodes +0 -0
  508. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_note_preprocess_fast_optimized_cfg +0 -0
  509. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_note_preprocess_standard_nodes +0 -0
  510. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_note_preprocess_standard_optimized_cfg +0 -0
  511. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_note_spawn_time_cfg +0 -0
  512. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_note_spawn_time_fast_nodes +0 -0
  513. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_note_spawn_time_fast_optimized_cfg +0 -0
  514. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_note_spawn_time_standard_nodes +0 -0
  515. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_note_spawn_time_standard_optimized_cfg +0 -0
  516. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_note_terminate_cfg +0 -0
  517. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_note_terminate_fast_nodes +0 -0
  518. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_note_terminate_fast_optimized_cfg +0 -0
  519. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_note_terminate_standard_nodes +0 -0
  520. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_note_terminate_standard_optimized_cfg +0 -0
  521. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_note_update_parallel_cfg +0 -0
  522. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_note_update_parallel_fast_nodes +0 -0
  523. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_note_update_parallel_fast_optimized_cfg +0 -0
  524. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_note_update_parallel_standard_nodes +0 -0
  525. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_note_update_parallel_standard_optimized_cfg +0 -0
  526. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_scheduled_lane_effect_despawn_time_cfg +0 -0
  527. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_scheduled_lane_effect_despawn_time_fast_nodes +0 -0
  528. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_scheduled_lane_effect_despawn_time_fast_optimized_cfg +0 -0
  529. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_scheduled_lane_effect_despawn_time_standard_nodes +0 -0
  530. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_scheduled_lane_effect_despawn_time_standard_optimized_cfg +0 -0
  531. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_scheduled_lane_effect_spawn_time_cfg +0 -0
  532. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_scheduled_lane_effect_spawn_time_fast_nodes +0 -0
  533. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_scheduled_lane_effect_spawn_time_fast_optimized_cfg +0 -0
  534. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_scheduled_lane_effect_spawn_time_standard_nodes +0 -0
  535. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_scheduled_lane_effect_spawn_time_standard_optimized_cfg +0 -0
  536. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_scheduled_lane_effect_update_parallel_cfg +0 -0
  537. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_scheduled_lane_effect_update_parallel_fast_nodes +0 -0
  538. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_scheduled_lane_effect_update_parallel_fast_optimized_cfg +0 -0
  539. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_scheduled_lane_effect_update_parallel_standard_nodes +0 -0
  540. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_scheduled_lane_effect_update_parallel_standard_optimized_cfg +0 -0
  541. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_sim_line_despawn_time_cfg +0 -0
  542. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_sim_line_despawn_time_fast_nodes +0 -0
  543. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_sim_line_despawn_time_fast_optimized_cfg +0 -0
  544. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_sim_line_despawn_time_standard_nodes +0 -0
  545. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_sim_line_despawn_time_standard_optimized_cfg +0 -0
  546. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_sim_line_spawn_time_cfg +0 -0
  547. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_sim_line_spawn_time_fast_nodes +0 -0
  548. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_sim_line_spawn_time_fast_optimized_cfg +0 -0
  549. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_sim_line_spawn_time_standard_nodes +0 -0
  550. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_sim_line_spawn_time_standard_optimized_cfg +0 -0
  551. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_sim_line_update_parallel_cfg +0 -0
  552. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_sim_line_update_parallel_fast_nodes +0 -0
  553. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_sim_line_update_parallel_fast_optimized_cfg +0 -0
  554. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_sim_line_update_parallel_standard_nodes +0 -0
  555. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_sim_line_update_parallel_standard_optimized_cfg +0 -0
  556. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_stage_despawn_time_cfg +0 -0
  557. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_stage_despawn_time_fast_nodes +0 -0
  558. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_stage_despawn_time_fast_optimized_cfg +0 -0
  559. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_stage_despawn_time_standard_nodes +0 -0
  560. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_stage_despawn_time_standard_optimized_cfg +0 -0
  561. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_stage_preprocess_cfg +0 -0
  562. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_stage_preprocess_fast_nodes +0 -0
  563. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_stage_preprocess_fast_optimized_cfg +0 -0
  564. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_stage_preprocess_standard_nodes +0 -0
  565. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_stage_preprocess_standard_optimized_cfg +0 -0
  566. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_stage_spawn_time_cfg +0 -0
  567. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_stage_spawn_time_fast_nodes +0 -0
  568. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_stage_spawn_time_fast_optimized_cfg +0 -0
  569. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_stage_spawn_time_standard_nodes +0 -0
  570. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_stage_spawn_time_standard_optimized_cfg +0 -0
  571. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_stage_update_parallel_cfg +0 -0
  572. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_stage_update_parallel_fast_nodes +0 -0
  573. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_stage_update_parallel_fast_optimized_cfg +0 -0
  574. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_stage_update_parallel_standard_nodes +0 -0
  575. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_stage_update_parallel_standard_optimized_cfg +0 -0
  576. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_unscored_note_despawn_time_cfg +0 -0
  577. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_unscored_note_despawn_time_fast_nodes +0 -0
  578. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_unscored_note_despawn_time_fast_optimized_cfg +0 -0
  579. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_unscored_note_despawn_time_standard_nodes +0 -0
  580. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_unscored_note_despawn_time_standard_optimized_cfg +0 -0
  581. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_unscored_note_preprocess_cfg +0 -0
  582. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_unscored_note_preprocess_fast_nodes +0 -0
  583. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_unscored_note_preprocess_fast_optimized_cfg +0 -0
  584. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_unscored_note_preprocess_standard_nodes +0 -0
  585. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_unscored_note_preprocess_standard_optimized_cfg +0 -0
  586. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_unscored_note_spawn_time_cfg +0 -0
  587. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_unscored_note_spawn_time_fast_nodes +0 -0
  588. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_unscored_note_spawn_time_fast_optimized_cfg +0 -0
  589. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_unscored_note_spawn_time_standard_nodes +0 -0
  590. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_unscored_note_spawn_time_standard_optimized_cfg +0 -0
  591. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_unscored_note_terminate_cfg +0 -0
  592. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_unscored_note_terminate_fast_nodes +0 -0
  593. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_unscored_note_terminate_fast_optimized_cfg +0 -0
  594. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_unscored_note_terminate_standard_nodes +0 -0
  595. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_unscored_note_terminate_standard_optimized_cfg +0 -0
  596. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_unscored_note_update_parallel_cfg +0 -0
  597. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_unscored_note_update_parallel_fast_nodes +0 -0
  598. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_unscored_note_update_parallel_fast_optimized_cfg +0 -0
  599. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_unscored_note_update_parallel_standard_nodes +0 -0
  600. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/data/pydori_watch_watch_unscored_note_update_parallel_standard_optimized_cfg +0 -0
  601. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/regressions/test_project.py +0 -0
  602. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/script/__init__.py +0 -0
  603. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/script/conftest.py +0 -0
  604. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/script/test_array.py +0 -0
  605. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/script/test_array_map.py +0 -0
  606. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/script/test_array_set.py +0 -0
  607. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/script/test_assert.py +0 -0
  608. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/script/test_dict.py +0 -0
  609. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/script/test_flow.py +0 -0
  610. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/script/test_functions.py +0 -0
  611. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/script/test_generator.py +0 -0
  612. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/script/test_genexpr.py +0 -0
  613. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/script/test_helpers.py +0 -0
  614. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/script/test_interval.py +0 -0
  615. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/script/test_match.py +0 -0
  616. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/script/test_maybe.py +0 -0
  617. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/script/test_num.py +0 -0
  618. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/script/test_operator.py +0 -0
  619. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/script/test_quad.py +0 -0
  620. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/script/test_random.py +0 -0
  621. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/script/test_range.py +0 -0
  622. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/script/test_record.py +0 -0
  623. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/script/test_transform.py +0 -0
  624. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/script/test_tuple.py +0 -0
  625. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/script/test_values.py +0 -0
  626. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/script/test_var_array.py +0 -0
  627. {sonolus_py-0.4.1 → sonolus_py-0.5.0}/tests/script/test_vec.py +0 -0
@@ -0,0 +1 @@
1
+ 3.13
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sonolus.py
3
- Version: 0.4.1
3
+ Version: 0.5.0
4
4
  Summary: Sonolus engine development in Python
5
5
  License-File: LICENSE
6
6
  Requires-Python: >=3.12
@@ -287,3 +287,13 @@ def zip[T](*iterables: Iterable[T]) -> Iterator[tuple[T, ...]]:
287
287
  An iterator of aggregated tuples.
288
288
  """
289
289
  ...
290
+
291
+ def super(cls: type = ..., instance: Any = ...) -> Any:
292
+ """Return a proxy object that delegates method calls to a parent or sibling class.
293
+
294
+ Args:
295
+ cls: The class to delegate
296
+ instance: The instance to delegate to.
297
+ Returns:
298
+ A proxy object that can be used to call methods from the parent or sibling class.
299
+ """
@@ -21,6 +21,7 @@ The supported functions and parameters are listed below.
21
21
  - `range(stop)`, `range(start, stop[, step])`
22
22
  - `reversed(seq)`
23
23
  - `round(number[, ndigits])`
24
+ - `super(type[, object-or-type])`
24
25
  - `zip(*iterables)`
25
26
 
26
27
  ## Standard library modules
@@ -394,7 +394,9 @@ def g(a):
394
394
 
395
395
  Function returns follow the same rules as variable access. If a function returns a non-num value, it most only
396
396
  return that value. If the function always returns a num, it may have any number of returns. Similarly, if a function
397
- always returns None (`return None` or just `return`), it may have any number of returns.
397
+ always returns None (`return None` or just `return`), it may have any number of returns.
398
+ The [`Maybe`][sonolus.script.maybe.Maybe] is also an exception, see the
399
+ [Maybe documentation](../reference/sonolus.script.maybe.md) for details
398
400
 
399
401
  The following are allowed:
400
402
 
@@ -118,13 +118,10 @@ 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
-
121
+ For type checker compatibility, the Python builtin `typing.Literal` or [`Dim`][sonolus.script.array.Dim] may be used
122
+ for an array's size:
124
123
  ```python
125
- from sonolus.script.array import Dim
126
-
127
- a1 = Array[int, Dim(3)](1, 2, 3)
124
+ a1 = Array[int, Dim[3]](1, 2, 3)
128
125
  a2 = Array[int, Literal[3]](1, 2, 3)
129
126
  ```
130
127
 
@@ -0,0 +1,80 @@
1
+ # Buckets & Judgement
2
+
3
+ ## Declaring Buckets
4
+
5
+ [Buckets][sonolus.script.bucket.Bucket] define how notes are displayed on the results screen. Typically, each kind of
6
+ note has its own bucket and therefore its own entry on the results screen. Buckets are defined using the
7
+ [`@buckets`][sonolus.script.bucket.buckets] decorator and the [`bucket`][sonolus.script.bucket.bucket] function:
8
+
9
+ ```python
10
+ from sonolus.script.bucket import buckets, bucket, Bucket, bucket_sprite
11
+ from sonolus.script.text import StandardText
12
+
13
+ Skin = ...
14
+
15
+ @buckets
16
+ class Buckets:
17
+ tap_note: Bucket = bucket(
18
+ sprites=[
19
+ bucket_sprite(
20
+ sprite=Skin.tap_note,
21
+ x=0,
22
+ y=0,
23
+ w=2,
24
+ h=2,
25
+ rotation=-90,
26
+ ),
27
+ ],
28
+ unit=StandardText.MILLISECOND_UNIT,
29
+ )
30
+ ```
31
+
32
+ Buckets have sprites used for diplay on the results screen, which are defined using the
33
+ [`bucket_sprite`][sonolus.script.bucket.bucket_sprite] function. They may also have a unit, which can either be
34
+ a built-in from [`StandardText`][sonolus.script.text.StandardText] or a custom string. Conventionally, the unit for
35
+ most engines should be set to
36
+ [`StandardText.MILLISECOND_UNIT`][sonolus.script.text.StandardText] to indicate that the bucket is
37
+ measured in milliseconds.
38
+
39
+ ## Judgement Windows
40
+
41
+ Sonolus notes are judged on a scale from best to worst of:
42
+
43
+ - [`Judgement.PERFECT`][sonolus.script.bucket.Judgment.PERFECT]
44
+ - [`Judgement.GREAT`][sonolus.script.bucket.Judgment.GREAT]
45
+ - [`Judgement.GOOD`][sonolus.script.bucket.Judgment.GOOD]
46
+ - [`Judgement.MISS`][sonolus.script.bucket.Judgment.MISS]
47
+
48
+ The [`JudgmentWindow`][sonolus.script.bucket.JudgmentWindow] class is useful for defining the judgement windows of a
49
+ note in seconds, and judging a note based on the actual and expected (target) hit times:
50
+
51
+ ```python
52
+ from sonolus.script.bucket import JudgmentWindow, Judgment
53
+ from sonolus.script.interval import Interval
54
+
55
+ note_judgment_window = JudgmentWindow(
56
+ perfect=Interval(-0.05, 0.05),
57
+ great=Interval(-0.1, 0.1),
58
+ good=Interval(-0.15, 0.15),
59
+ )
60
+
61
+ actual_time: float = ...
62
+ expected_time: float = ...
63
+ judgment = note_judgment_window.judge(actual=actual_time, expected=expected_time)
64
+ ```
65
+
66
+ ## Bucket Window
67
+
68
+ For each bucket, the [`window`][sonolus.script.bucket.Bucket.window] attribute should be set during preprocessing to
69
+ define the judgment windows for the bucket:
70
+
71
+ ```python
72
+ from sonolus.script.bucket import JudgmentWindow
73
+
74
+ note_judgment_window: JudgmentWindow = ...
75
+ Buckets = ...
76
+
77
+ def init_buckets():
78
+ # Multiply by 1000 so buckets are in milliseconds.
79
+ Buckets.tap_note.window @= note_judgment_window * 1000
80
+ ```
@@ -0,0 +1,3 @@
1
+ # Coming Soon
2
+
3
+ More guides are coming soon!
@@ -0,0 +1,99 @@
1
+ # Sound Effects
2
+
3
+ [Sound effects][sonolus.script.effect.Effect] are used to play audio, typically short clips, during the course of
4
+ a level.
5
+
6
+ ## Declaration
7
+
8
+ Effects are declared with the [`@effects`][sonolus.script.effect.effects] decorator. Standard Sonolus effects are
9
+ declared by using a value from [`StandardEffect`][sonolus.script.effect.StandardEffect] as the type hint.
10
+ Custom effects may also be defined using the [`Effect`][sonolus.script.effect.Effect] type hint and the
11
+ [`effect`][sonolus.script.effect.effect] function.
12
+
13
+ ```python
14
+ from sonolus.script.effect import effects, effect, StandardEffect, Effect
15
+
16
+
17
+ @effects
18
+ class Effects:
19
+ perfect: StandardEffect.PERFECT
20
+ great: StandardEffect.GREAT
21
+
22
+ custom_effect: Effect = effect("name_of_custom_effect")
23
+ ```
24
+
25
+ ## Playing an Effect
26
+
27
+ To play an effect, you can use the [`play`][sonolus.script.effect.Effect.play] method of the effect. This method
28
+ accepts an optional distance parameter to prevent the effect from playing if it was already played within the specified
29
+ time in seconds:
30
+
31
+ ```python
32
+ from sonolus.script.effect import Effect
33
+
34
+ my_effect: Effect = ...
35
+ my_effect.play()
36
+ my_effect.play(distance=0.1)
37
+ ```
38
+
39
+ Using a small non-zero distance is recommended as two instances of the same effect played in quick
40
+ succession can be unpleasant to hear.
41
+
42
+ ## Scheduling an Effect
43
+
44
+ An effect can be scheduled to play at a specific time using the [`schedule`][sonolus.script.effect.Effect.schedule]
45
+ method:
46
+
47
+ ```python
48
+ from sonolus.script.effect import Effect
49
+
50
+ my_effect: Effect = ...
51
+ my_effect.schedule(time=5.0)
52
+ my_effect.schedule(time=5.0, distance=0.1)
53
+ ```
54
+
55
+ Scheduling is not suitable for real-time effects such as responses to user input and may not work if the scheduled
56
+ time is too close to the current time. Use [`play`][sonolus.script.effect.Effect.play] instead for real-time effects.
57
+
58
+ ## Looping an Effect
59
+
60
+ An effect can be played in a loop using the [`loop`][sonolus.script.effect.Effect.loop] method, which returns a
61
+ [`LoopedEffectHandle`][sonolus.script.effect.LoopedEffectHandle] that can be used to stop the loop:
62
+
63
+ ```python
64
+ from sonolus.script.effect import Effect, LoopedEffectHandle
65
+
66
+ my_effect: Effect = ...
67
+ loop_handle: LoopedEffectHandle = my_effect.loop()
68
+
69
+ # Later, stop the loop
70
+ loop_handle.stop()
71
+ ```
72
+
73
+ Similarly, an effect can be scheduled to loop using the [`schedule_loop`][sonolus.script.effect.Effect.schedule_loop]
74
+ method:
75
+
76
+ ```python
77
+ from sonolus.script.effect import Effect
78
+
79
+ my_effect: Effect = ...
80
+ my_effect.schedule_loop(start_time=3.0).stop(end_time=10.0)
81
+ ```
82
+
83
+ ## Checking Effect Availability
84
+
85
+ Some effects may not be available depending on which effect packs a user has selected. To check if an effect is
86
+ available, you can use the [`is_available`][sonolus.script.effect.Effect.is_available] method:
87
+
88
+ ```python
89
+ from sonolus.script.effect import Effect
90
+
91
+ my_effect: Effect = ...
92
+
93
+ if my_effect.is_available():
94
+ # The effect is available, you can use it.
95
+ ...
96
+ else:
97
+ # Do something else, such as using a fallback.
98
+ ...
99
+ ```
@@ -0,0 +1,5 @@
1
+ # Guides
2
+
3
+ This sections contains guides on Sonolus.py features. By going through this section, you'll learn the essential
4
+ concepts needed to understand how existing engines like [pydori](https://github.com/qwewqa/pydori) work and
5
+ to create new engines.
@@ -0,0 +1,93 @@
1
+ # Particles
2
+
3
+ [Particle effects][sonolus.script.particle.Particle] are typically used for visuals such as the
4
+ effect when a note is hit. They are somewhat similar to sprites, but may contain their own animations
5
+ and support functionality such as looping. However, they come with the restriction that they do not have
6
+ their own z-indexes, and thus are always drawn on top of sprites while having no set order between themselves.
7
+
8
+ ## Declaration
9
+
10
+ Particles are declared with the [`@particles`][sonolus.script.particle.particles] decorator. Standard Sonolus particles
11
+ are declared by using a value from [`StandardParticle`][sonolus.script.particle.StandardParticle] as the type hint.
12
+ Custom particles may also be defined using the [`Particle`][sonolus.script.particle.Particle] type hint and the
13
+ [`particle`][sonolus.script.particle.particle] function.
14
+
15
+ ```python
16
+ from sonolus.script.particle import particles, particle, StandardParticle, Particle
17
+
18
+ @particles
19
+ class Particle:
20
+ tap_note_hit_linear: StandardParticle.NOTE_LINEAR_TAP_CYAN
21
+ tap_note_hit_circular: StandardParticle.NOTE_CIRCULAR_TAP_CYAN
22
+
23
+ custom_particle: Particle = particle("name_of_custom_particle")
24
+ ```
25
+
26
+ ## Spawning a Particle
27
+
28
+ To spawn a particle, you can use the [`spawn`][sonolus.script.particle.Particle.spawn] method of the particle. This
29
+ method accepts a [`Quad`][sonolus.script.quad.Quad] object that defines the position of the particle on the screen,
30
+ a duration in seconds determining how quick the particle animation should play, and optionally whether the particle
31
+ should loop:
32
+
33
+ ```python
34
+ from sonolus.script.particle import Particle
35
+ from sonolus.script.quad import Quad
36
+
37
+ my_particle: Particle = ...
38
+ my_quad = Quad(
39
+ tl=Vec2(-0.5, 0.5),
40
+ tr=Vec2(0.5, 0.5),
41
+ bl=Vec2(-0.5, -0.5),
42
+ br=Vec2(0.5, -0.5),
43
+ )
44
+ handle = my_particle.spawn(my_quad, duration=0.5, loop=False)
45
+ ```
46
+
47
+ The call to [`spawn`][sonolus.script.particle.Particle.spawn] will return a
48
+ [`ParticleHandle`][sonolus.script.particle.ParticleHandle] that can be used to control the particle after it has been
49
+ spawned.
50
+
51
+ ## Moving a Particle
52
+
53
+ A particle can be moved using the [`move`][sonolus.script.particle.ParticleHandle.move] method of the
54
+ [`ParticleHandle`][sonolus.script.particle.ParticleHandle]:
55
+
56
+ ```python
57
+ from sonolus.script.particle import ParticleHandle
58
+ from sonolus.script.quad import Quad
59
+
60
+ my_particle_handle: ParticleHandle = ...
61
+ new_position: Quad = ...
62
+ my_particle_handle.move(new_position)
63
+ ```
64
+
65
+ ## Destroying a Particle
66
+
67
+ A particle can be destroyed using the [`destroy`][sonolus.script.particle.ParticleHandle.destroy] method of the
68
+ [`ParticleHandle`][sonolus.script.particle.ParticleHandle]:
69
+
70
+ ```python
71
+ from sonolus.script.particle import ParticleHandle
72
+
73
+ my_particle_handle: ParticleHandle = ...
74
+ my_particle_handle.destroy()
75
+ ```
76
+
77
+ ## Checking Particle Availability
78
+
79
+ A particle effect may not be available depending on which effects a user has selected. To check if a particle is
80
+ available, you can use the [`is_available`][sonolus.script.particle.Particle.is_available] method of a
81
+ [`Particle`][sonolus.script.particle.Particle]:
82
+
83
+ ```python
84
+ from sonolus.script.particle import Particle
85
+
86
+ my_particle: Particle = ...
87
+ if my_particle.is_available():
88
+ # The particle is available, you can spawn it.
89
+ ...
90
+ else:
91
+ # Do something else, such as using a fallback particle.
92
+ ...
93
+ ```
@@ -0,0 +1,102 @@
1
+ # Play
2
+
3
+ Play mode is generally the most important mode of a Sonolus engine, as it defines the interactive gameplay experience.
4
+
5
+ ## Configuration
6
+
7
+ Play mode is configured using the [`PlayMode`][sonolus.script.engine.PlayMode] class:
8
+
9
+ ```python
10
+ from sonolus.script.engine import PlayMode
11
+
12
+ # ... import your archetypes, skin, effects, particles, and buckets
13
+
14
+ play_mode = PlayMode(
15
+ archetypes=[
16
+ Stage,
17
+ Note,
18
+ # etc.
19
+ ],
20
+ skin=Skin,
21
+ effects=Effects,
22
+ particles=Particles,
23
+ buckets=Buckets,
24
+ )
25
+ ```
26
+
27
+ ## Play Archetypes
28
+
29
+ Gameplay logic in play mode is defined via archetypes. Archetypes may correspond to individual notes, or other gameplay
30
+ elements such as the stage. They may also be dedicated to special purposes such as initializing, input handing, and
31
+ so forth depending on the needs of an engine.
32
+
33
+ In play mode, archetypes inherit from the [`PlayArchetype`][sonolus.script.archetype.PlayArchetype] class:
34
+
35
+ ```python
36
+ from sonolus.script.archetype import PlayArchetype
37
+
38
+
39
+ class Note(PlayArchetype):
40
+ is_score = True
41
+
42
+ # All of these methods are optional
43
+
44
+ def preprocess(self):
45
+ ...
46
+
47
+ def spawn_order(self) -> float:
48
+ ...
49
+
50
+ def should_spawn(self) -> bool:
51
+ ...
52
+
53
+ def initialize(self):
54
+ ...
55
+
56
+ def update_sequential(self):
57
+ ...
58
+
59
+ def touch(self):
60
+ ...
61
+
62
+ def update_parallel(self):
63
+ ...
64
+
65
+ def terminate(self):
66
+ ...
67
+
68
+ ```
69
+
70
+ Archetypes that correspond to notes and contribute to scoring should set the `is_score` attribute to `True`.
71
+
72
+ ### Entities
73
+
74
+ Entities are instances of archetypes. For example an engine may have a `Note` archetype, and each individual note is
75
+ considered an entity.
76
+
77
+ ### Callbacks
78
+
79
+ Callbacks determine the behavior of entities in play mode:
80
+
81
+ - [`preprocess`][sonolus.script.archetype.PlayArchetype.preprocess]:
82
+ Called as the level is loaded
83
+ - [`spawn_order`][sonolus.script.archetype.PlayArchetype.spawn_order]:
84
+ Called after preprocessing is done to determine which order entities. should be spawned in.
85
+ Smaller values are spawned first; a common approach is to use the spawn time of the entity.
86
+ - [`should_spawn`][sonolus.script.archetype.PlayArchetype.should_spawn]:
87
+ Called to determine whether the entity should be spawned. Called each frame if the previous entity is spawned.
88
+ - [`initialize`][sonolus.script.archetype.PlayArchetype.initialize]:
89
+ Called when the entity is spawned at the start of the frame. Runs in parallel with other `initialize` calls.
90
+ - [`update_sequential`][sonolus.script.archetype.PlayArchetype.update_sequential]:
91
+ Called each frame an entity is active after `initialize` callbacks are done.
92
+ Since it's called sequentially, it can update shared state.
93
+ - [`touch`][sonolus.script.archetype.PlayArchetype.touch]:
94
+ Called sequentially each frame after `update_sequential` if there's touch input. Has access to touch input data.
95
+ - [`update_parallel`][sonolus.script.archetype.PlayArchetype.update_parallel]:
96
+ Called after `touch` and `update_sequential` callbacks are done. Runs in parallel with other `update_parallel` calls.
97
+ Has better performance due to parallel execution, so most logic such as drawing sprites should be done here.
98
+ - [`terminate`][sonolus.script.archetype.PlayArchetype.terminate]:
99
+ Called after `update_parallel` callbacks are done when an entity is being despawned.
100
+ Runs in parallel with other `terminate` calls.
101
+
102
+ If not defined in an archetype, the default behavior of each callback is to do nothing.
@@ -0,0 +1,70 @@
1
+ # Project Structure
2
+
3
+ Typically, a Sonolus.py project will have something resembling the following structure:
4
+
5
+ ```
6
+ <project_name>/
7
+ ├── lib/ # Common code shared between modes
8
+ ├── play/ # Code for play mode
9
+ ├── watch/ # Code for watch mode
10
+ ├── preview/ # Code for preview mode
11
+ ├── tutorial/ # Code for tutorial mode
12
+ ├── .../ # Additional code e.g. for converting charts from other formats
13
+ ├── project.py # Project configuration
14
+ └── level.py # Level configuration (for development server levels)
15
+ resources/ # Resources for the engine
16
+ ```
17
+
18
+ When starting a new project, you'll probably want to use the
19
+ [template project](https://github.com/qwewqa/sonolus.py-template-project) to initialize your project structure.
20
+
21
+ ## Resources
22
+
23
+ The `resources/` directory contains the resources used by the engine, and its contents are used by the development
24
+ server. It supports resource source code (like the contents of
25
+ [sonolus-free-pack](https://github.com/Sonolus/sonolus-free-pack)) sonolus collection (`.scp`) files, and raw
26
+ image and audio files.
27
+
28
+ ## Project Configuration
29
+
30
+ By default, Sonolus.py searches for a module named `project` in the root package of the project (i.e. the
31
+ `<project_name>/project.py` file). This module should contain the project configuration and typically should
32
+ contain the engine configuration as well. For example, pydori's project.py contains the following:
33
+
34
+ ??? note "[pydori/project.py](https://github.com/qwewqa/pydori/blob/master/pydori/project.py)"
35
+ ```python
36
+ from sonolus.script.engine import Engine, EngineData
37
+ from sonolus.script.project import Project
38
+
39
+ from pydori.level import load_levels
40
+ from pydori.lib.options import Options
41
+ from pydori.lib.ui import ui_config
42
+ from pydori.play.mode import play_mode
43
+ from pydori.preview.mode import preview_mode
44
+ from pydori.tutorial.mode import tutorial_mode
45
+ from pydori.watch.mode import watch_mode
46
+
47
+ engine = Engine(
48
+ name="pydori",
49
+ title="pydori",
50
+ skin="pixel",
51
+ particle="pixel",
52
+ background="darkblue",
53
+ data=EngineData(
54
+ ui=ui_config,
55
+ options=Options,
56
+ play=play_mode,
57
+ watch=watch_mode,
58
+ preview=preview_mode,
59
+ tutorial=tutorial_mode,
60
+ ),
61
+ )
62
+
63
+ project = Project(
64
+ engine=engine,
65
+ levels=load_levels,
66
+ )
67
+ ```
68
+
69
+ This file defines the name and title of the engine, some defaults for players, and links to the various modes as
70
+ well as the ui and option configurations. It also links to the levels to load for the development server.
@@ -0,0 +1,30 @@
1
+ # Screen
2
+
3
+ Sonolus has a screen coordinate-system with y-coordinates ranging from `+1` at the top of the screen to `-1` at the
4
+ bottom of the screen. The x-coordinate in the screen depend on the aspect ratio of a device, with `-aspect_ratio`
5
+ at the left and `+aspect_ratio` at the right. When designing engines, it's important to keep in mind that aspect ratios
6
+ typically range from narrow (e.g. 4:3) to wide (e.g. 21:9) to ensure that nothing is cut off on devices with some
7
+ aspect ratios.
8
+
9
+ The screen coordinate system is used for drawing sprites, positioning particles, and positioning UI elements.
10
+
11
+ ## Checking Screen Size
12
+
13
+ You can check aspect ratio using the [`aspect_ratio`][sonolus.script.runtime.aspect_ratio] function:
14
+
15
+ ```python
16
+ from sonolus.script.runtime import aspect_ratio
17
+
18
+
19
+ the_aspect_ratio = aspect_ratio()
20
+ ```
21
+
22
+ For convenience, the [`screen`][sonolus.script.runtime.screen] function returns a [`Rect`][sonolus.script.quad.Rect]
23
+ that can be used to check the coordinates of each corner of the screen:
24
+
25
+ ```python
26
+ from sonolus.script.runtime import screen
27
+
28
+ the_screen = screen()
29
+ top_left = the_screen.tl
30
+ ```
@@ -0,0 +1,15 @@
1
+ # Setup
2
+
3
+ Sonolus.py is published on [PyPI](https://pypi.org/project/sonolus.py/), and can be installed with any package manager.
4
+
5
+ For example, you can use pip to install it:
6
+
7
+ ```bash
8
+ pip install sonolus.py
9
+ ```
10
+
11
+ Or add it to a project using [uv](https://docs.astral.sh/uv/getting-started/installation/):
12
+
13
+ ```bash
14
+ uv add sonolus.py
15
+ ```